password in plain text in Containers log

Hello, When running the container:

Docker run -d
     --name "ejabberd"
     -p 5222: 5222
     -p 5269: 5269
     -p 5280: 5280
     -h 'xmpp.example.de'
     -e "XMPP_DOMAIN = example.de"
     -e "ERLANG_NODE = ejabberd"
     -e<EMAIL_ADDRESS><EMAIL_ADDRESS>     -e<EMAIL_ADDRESS>password1234<EMAIL_ADDRESS>     -e "TZ = Europe / Berlin"
     Rroemhild / ejabberd

In the log the passwords are shown in plain text, how can I avoid this ?:

ejabberd_1  | User<EMAIL_ADDRESS>successfully registered
ejabberd_1  | Password for user<EMAIL_ADDRESS>is password1234 :point_left:

Can someone help me please? thanks

Hi @jjmonsalveg, this could be solved with another envvar. Something like EJABBERD_EXPOSE_CREDENTIALS true or false and hide user passwords if set to false.

That is a good idea or you can also take advantage of the variable EJABBERD_LOGLEVEL when it has value 5 (debug) ejabberd also shows the credentials

Why should we hide the password at all? If it's an security issue then the user should be created with the API or located on a different database, i.e. LDAP, MySQL. If you set the password in the environment variable, others with access can see the environment variable from the running container too.
The idea to print the password to STDOUT is for fast and simple setup or for tests.
I think passwords set via environment or generated by the random password generator are just for the first start and should be changed immediately in an production environment.
Do you agree? What are your thoughts why we should hide the password from stdout?

Hello again, @rroemhild thanks for responding. As I mentioned above when running the container:

 docker run  \
--name "ejabberd" \
-p 5222:5222 \
-p 5269:5269 \
-p 5280:5280 \
-h 'xmpp.example.de' \
-e "XMPP_DOMAIN=example.de" \
-e "ERLANG_NODE=ejabberd" \
-e<EMAIL_ADDRESS><EMAIL_ADDRESS>\
-e "EJABBERD_USERS=admin@example.de:password1234<EMAIL_ADDRESS>\
-e "TZ=Europe/Berlin" \
rroemhild/ejabberd:17.01

It produces this result in stdout log:

User<EMAIL_ADDRESS>successfully registered
Password for user<EMAIL_ADDRESS>is password1234
User<EMAIL_ADDRESS>successfully registered
Password for user<EMAIL_ADDRESS>is poW1DSrZf9f68ExE

If we run it by adding "EJABBERD_LOGLEVEL = 5":

docker run      --name "ejabberd"     -p 5222:5222     -p 5269:5269     -p 5280:5280     -h
'xmpp.example.de'     -e "XMPP_DOMAIN=example.de"     -e "ERLANG_NODE=ejabberd"     -e
<EMAIL_ADDRESS><EMAIL_ADDRESS>   -e
"EJABBERD_USERS=admin@example.de:password1234<EMAIL_ADDRESS>   -e
"TZ=Europe/Berlin"   -e "EJABBERD_LOGLEVEL=5"  rroemhild/ejabberd:17.01

Then in stdout log we can see a more verbose output from the ejabberd technology added to the echo of your docker-20_ejabberd_register_users.sh:

17:08:44.657 [debug] Command 'register' execution allowed by rule 'console commands' (CallerInfo=#{caller_module => ejabberd_ctl})
17:08:44.657 [debug] Executing command ejabberd_admin:register with Args=[<<"admin">>,<<"example.de">>,<<"password1234">>]
User<EMAIL_ADDRESS>successfully registered
Password for user<EMAIL_ADDRESS>is password1234
17:08:44.846 [debug] Command 'register' execution allowed by rule 'console commands' (CallerInfo=#{caller_module => ejabberd_ctl})
17:08:44.846 [debug] Executing command ejabberd_admin:register with Args=[<<"admin2">>,<<"example.de">>,<<"hR8CZxl15JHfzMUl">>]
User<EMAIL_ADDRESS>successfully registered
Password for user<EMAIL_ADDRESS>is hR8CZxl15JHfzMUl

I see three options for obtaining the "desired" operation:

EJABBERD_EXPOSE_CREDENTIALS as you suggest above
delete the "echo" from sh docker-20_ejabberd_register_users.sh and for development and test environments set "EJABBERD_LOGLEVEL = 5"
The last one is to print your output with echo if and only if EJABBERD_LOGLEVEL is equal to 5

I explain why I expose the case, what happens is that I use docker cloud and any user authorized to enter from a web browser (any member of the team of developers) can see the credentials of the users in plain text from the log, the log is Shown from the docker cloud web interface, so for a development / test environment is phenomenal but for production maybe not. Solve this taken option 2 for my production environment I deleted the echo and use EJABBERD_LOGLEVEL less than 5


Grafana configuration

Provision data sources and dashboards declarativly
http://docs.grafana.org/administration/provisioning/
Example usage:
    provision = {
      enable = true;
      datasources = [
        {
          type = "prometheus";
          name = "prometheus";
          url = "http://localhost:9090";
        }
      ];
      dashboards = [
        {
          options.path = "/etc/nixos/grafana-dashboards";
        }
      ];
    };

This adds prometheus as datasource to grafana and a dashboard provider path "/etc/nixos/grafana-dashboards" which is scanned by grafana and dashboards are automatically added.
Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@Ma27 Updated per comments

rebased onto master and added a changelog entry.

@atopuzov thanks!

Thanks for the work here; declarative grafana provisioning looks really slick and I'm looking forward to trying it out in NixOS 19.03!

I have found some bugs with this.  For some reason, non of the introduced options here actually get typechecked by the nixos module system.
E.g. you can omit any of the fields and it will just compile. Also if you mistype any of the fields it works, and it also works when you use the wrong type anywhere.
I have a feeling the typechekcing is somehow disabled due to the custom apply function used; but not sure.
e.g. the following config just works, whilst it's clearly wrong:
      grafana.provision.datasources = [
        {
          # name = "hello"; # name is mandatory but I can leave it out
          editable = "hello i should be a boolean but i made it a string";
          type = "prometheus";
          url = "http://<IP_ADDRESS>:9090"; # TODO make configurable
        }
      ];

Nevermind I forgot to enable provision.enable ;)


Update CommunityAgenciesRevivalProject.netkan

update version & remove recommendation (that mod got merged into this one)

And what's this about again?

Even if it wasn't deleted, these changes don't make sense.


SDPA-5615 Test PR for OpenForms | Ripple Theme issue

Motivation and Context

JIRA issue: https://digital-engagement.atlassian.net/browse/SDPA-5615
Note
Delete this PR after the ticket is complete

How Has This Been Tested?

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Improvement/refactoring (non-breaking change that doesn't add any features but makes things better)

Checklist

[ ] I've added relevant changes to the documentation.
[ ] I have added tests to cover my changes (if not applicable, please state why)
[ ] My change requires a template update for create-ripple-app.
[ ] I have added template update script for next release.

https://digital-engagement.atlassian.net/browse/SDPA-5615 complete. Testing env not required.


[v1.28.0] [FlyingFox] <::1> error: SocketError. Read(54): Connection reset by peer

Describe the bug
I'm experiment to use maestro to test TikTok app, the video will hang there without any response and the testing flow failed with error. I change the appid to tiktok in the log
maestro log
[INFO ] MAESTRO - ---- System Info ----
[INFO ] MAESTRO - Maestro Version: 1.28.0
[INFO ] MAESTRO - OS Name: Mac OS X
[INFO ] MAESTRO - OS Version: 13.3.1
[INFO ] MAESTRO - Architecture: x86_64
[INFO ] MAESTRO - ---------------------
[INFO ] maestro.LocalIdbRunner - startIDBCompanion on 032BD811-4ACB-49D3-A5EB-101D6605CB46
[WARN ] maestro.LocalIdbRunner - Waiting for idb service to start..
[WARN ] maestro.LocalIdbRunner - Waiting for Simulator to boot..
[WARN ] maestro.LocalIdbRunner - Waiting for successful taps
[WARN ] maestro.LocalIdbRunner - Simulator ready
[INFO ] xcuitest.XCTestDriverClient - [Start] Uninstalling xctest ui runner app
[INFO ] x.installer.LocalXCTestInstaller - [Start] Uninstall XCUITest runner
[INFO ] util.CommandLineUtils - Running command line operation: [xcrun, simctl, uninstall, 032BD811-4ACB-49D3-A5EB-101D6605CB46, dev.mobile.maestro-driver-iosUITests.xctrunner]
[INFO ] x.installer.LocalXCTestInstaller - [Done] Uninstall XCUITest runner
[INFO ] xcuitest.XCTestDriverClient - [Done] Uninstalling xctest ui runner app
[INFO ] x.installer.LocalXCTestInstaller - [Start] Install XCUITest runner on 032BD811-4ACB-49D3-A5EB-101D6605CB46
[INFO ] x.installer.LocalXCTestInstaller - Not able to find ui test runner app, going to install now
[INFO ] x.installer.LocalXCTestInstaller - [Start] Writing xctest run file
[INFO ] x.installer.LocalXCTestInstaller - [Done] Writing xctest run file
[INFO ] x.installer.LocalXCTestInstaller - [Start] Writing maestro-driver-iosUITests-Runner app
[INFO ] x.installer.LocalXCTestInstaller - [Done] Writing maestro-driver-iosUITests-Runner app
[INFO ] x.installer.LocalXCTestInstaller - [Start] Writing maestro-driver-ios app
[INFO ] x.installer.LocalXCTestInstaller - [Done] Writing maestro-driver-ios app
[INFO ] x.installer.LocalXCTestInstaller - [Start] Running XcUITest with xcode build command
[INFO ] util.CommandLineUtils - Running command line operation: [xcodebuild, test-without-building, -xctestrun, /var/folders/rf/d2cc2hj112n9vkm3g0l7t3s00000gn/T/maestro-driver-ios-config.xctestrun, -destination, id=032BD811-4ACB-49D3-A5EB-101D6605CB46]
[INFO ] x.installer.LocalXCTestInstaller - [Done] Running XcUITest with xcode build command
[INFO ] x.installer.LocalXCTestInstaller - [Done] Install XCUITest runner on 032BD811-4ACB-49D3-A5EB-101D6605CB46
[INFO ] x.installer.LocalXCTestInstaller - [Start] Ensure XCUITest runner is running on 032BD811-4ACB-49D3-A5EB-101D6605CB46
[INFO ] x.installer.LocalXCTestInstaller - [Done] Ensure XCUITest runner is running on 032BD811-4ACB-49D3-A5EB-101D6605CB46
[INFO ] m.cli.runner.MaestroCommandRunner - Apply configuration RUNNING
[INFO ] m.cli.runner.MaestroCommandRunner - Apply configuration metadata CommandMetadata(numberOfRuns=null, evaluatedCommand=MaestroCommand(tapOnElement=null, tapOnPoint=null, tapOnPointV2Command=null, scrollCommand=null, swipeCommand=null, backPressCommand=null, assertCommand=null, assertConditionCommand=null, inputTextCommand=null, inputRandomTextCommand=null, launchAppCommand=null, applyConfigurationCommand=ApplyConfigurationCommand(config=MaestroConfig(appId=tiktok, name=null, tags=[], initFlow=null, ext={})), openLinkCommand=null, pressKeyCommand=null, eraseTextCommand=null, hideKeyboardCommand=null, takeScreenshotCommand=null, stopAppCommand=null, clearStateCommand=null, clearKeychainCommand=null, runFlowCommand=null, setLocationCommand=null, repeatCommand=null, copyTextCommand=null, pasteTextCommand=null, defineVariablesCommand=null, runScriptCommand=null, waitForAnimationToEndCommand=null, evalScriptCommand=null, mockNetworkCommand=null, scrollUntilVisible=null, travelCommand=null, assertOutgoingRequestsCommand=null), logMessages=[])
[INFO ] m.cli.runner.MaestroCommandRunner - Apply configuration COMPLETED
[INFO ] m.cli.runner.MaestroCommandRunner - Launch app "tiktok" RUNNING
[INFO ] m.cli.runner.MaestroCommandRunner - Launch app "tiktok" metadata CommandMetadata(numberOfRuns=null, evaluatedCommand=MaestroCommand(tapOnElement=null, tapOnPoint=null, tapOnPointV2Command=null, scrollCommand=null, swipeCommand=null, backPressCommand=null, assertCommand=null, assertConditionCommand=null, inputTextCommand=null, inputRandomTextCommand=null, launchAppCommand=LaunchAppCommand(appId=tiktok, clearState=null, clearKeychain=null, stopApp=null, permissions=null, launchArguments=null), applyConfigurationCommand=null, openLinkCommand=null, pressKeyCommand=null, eraseTextCommand=null, hideKeyboardCommand=null, takeScreenshotCommand=null, stopAppCommand=null, clearStateCommand=null, clearKeychainCommand=null, runFlowCommand=null, setLocationCommand=null, repeatCommand=null, copyTextCommand=null, pasteTextCommand=null, defineVariablesCommand=null, runScriptCommand=null, waitForAnimationToEndCommand=null, evalScriptCommand=null, mockNetworkCommand=null, scrollUntilVisible=null, travelCommand=null, assertOutgoingRequestsCommand=null), logMessages=[])
[INFO ] util.CommandLineUtils - Running command line operation: [/Users/bytedance/.maestro/deps/applesimutils, --byId, 032BD811-4ACB-49D3-A5EB-101D6605CB46, --bundle, tiktok, --setPermissions, calendar=YES,camera=YES,contacts=YES,faceid=YES,homekit=YES,location=always,medialibrary=YES,microphone=YES,motion=YES,photos=YES,reminders=YES,siri=YES,speech=YES,userTracking=YES]
[INFO ] maestro.Maestro - Launching app tiktok
[INFO ] util.CommandLineUtils - Running command line operation: [xcrun, simctl, spawn, 032BD811-4ACB-49D3-A5EB-101D6605CB46, launchctl, setenv, MAESTRO_SESSION_ID, 5254665a-3157-407d-bd62-05229fba993a]
[INFO ] util.CommandLineUtils - Running command line operation: [xcrun, simctl, launch, 032BD811-4ACB-49D3-A5EB-101D6605CB46, tiktok]
[INFO ] m.cli.runner.MaestroCommandRunner - Launch app "tiktok" COMPLETED
[INFO ] m.cli.runner.MaestroCommandRunner - Swipe from (50%, 70%) to (50%, 10%) in 500 ms RUNNING
[INFO ] m.cli.runner.MaestroCommandRunner - Swipe from (50%, 70%) to (50%, 10%) in 500 ms metadata CommandMetadata(numberOfRuns=null, evaluatedCommand=MaestroCommand(tapOnElement=null, tapOnPoint=null, tapOnPointV2Command=null, scrollCommand=null, swipeCommand=SwipeCommand(direction=null, startPoint=null, endPoint=null, elementSelector=null, startRelative=50%, 70%, endRelative=50%, 10%, duration=500), backPressCommand=null, assertCommand=null, assertConditionCommand=null, inputTextCommand=null, inputRandomTextCommand=null, launchAppCommand=null, applyConfigurationCommand=null, openLinkCommand=null, pressKeyCommand=null, eraseTextCommand=null, hideKeyboardCommand=null, takeScreenshotCommand=null, stopAppCommand=null, clearStateCommand=null, clearKeychainCommand=null, runFlowCommand=null, setLocationCommand=null, repeatCommand=null, copyTextCommand=null, pasteTextCommand=null, defineVariablesCommand=null, runScriptCommand=null, waitForAnimationToEndCommand=null, evalScriptCommand=null, mockNetworkCommand=null, scrollUntilVisible=null, travelCommand=null, assertOutgoingRequestsCommand=null), logMessages=[])
[INFO ] maestro.Maestro - Getting device info
[INFO ] ios.xctest.XCTestIOSDevice - Device info DeviceInfo(widthPixels=1290, heightPixels=2796, widthPoints=430, heightPoints=932)
[INFO ] ios.IOSDevice - Waiting for animation to end with timeout 3000
[INFO ] ios.xctest.XCTestIOSDevice - Screen diff request finished with isScreenStatic = false
[INFO ] ios.IOSDevice - screen static = false
[INFO ] ios.xctest.XCTestIOSDevice - Screen diff request finished with isScreenStatic = false
[INFO ] ios.IOSDevice - screen static = false
[INFO ] ios.xctest.XCTestIOSDevice - Screen diff request finished with isScreenStatic = true
[INFO ] ios.IOSDevice - screen static = true
[INFO ] ios.xctest.XCTestIOSDevice - installed apps: [com.apple.Passbook, com.apple.dt.XcodePreviews, com.apple.MobileAddressBook, com.apple.DocumentsApp, com.apple.MobileSMS, dev.mobile.maestro-driver-iosUITests.xctrunner, com.apple.Maps, tiktok, com.apple.mobilecal, com.apple.Bridge, com.apple.Preferences, com.apple.reminders, com.apple.freeform, com.apple.Health, com.apple.news, com.apple.webapp, com.apple.mobilesafari, com.apple.mobileslideshow, com.apple.shortcuts, org.wikimedia.wikipedia]
[INFO ] ios.xctest.XCTestIOSDevice - Running app id response received tiktok
[INFO ] ios.xctest.XCTestIOSDevice - found running app id tiktok
[INFO ] ios.IOSDevice - Waiting for animation to end with timeout 3000
[INFO ] ios.xctest.XCTestIOSDevice - Screen diff request finished with isScreenStatic = false
[INFO ] ios.IOSDevice - screen static = false
[INFO ] ios.xctest.XCTestIOSDevice - Screen diff request finished with isScreenStatic = true
[INFO ] ios.IOSDevice - screen static = true
[INFO ] m.cli.runner.MaestroCommandRunner - Swipe from (50%, 70%) to (50%, 10%) in 500 ms COMPLETED
[INFO ] m.cli.runner.MaestroCommandRunner - Swipe from (50%, 70%) to (50%, 10%) in 500 ms RUNNING
[INFO ] m.cli.runner.MaestroCommandRunner - Swipe from (50%, 70%) to (50%, 10%) in 500 ms metadata CommandMetadata(numberOfRuns=null, evaluatedCommand=MaestroCommand(tapOnElement=null, tapOnPoint=null, tapOnPointV2Command=null, scrollCommand=null, swipeCommand=SwipeCommand(direction=null, startPoint=null, endPoint=null, elementSelector=null, startRelative=50%, 70%, endRelative=50%, 10%, duration=500), backPressCommand=null, assertCommand=null, assertConditionCommand=null, inputTextCommand=null, inputRandomTextCommand=null, launchAppCommand=null, applyConfigurationCommand=null, openLinkCommand=null, pressKeyCommand=null, eraseTextCommand=null, hideKeyboardCommand=null, takeScreenshotCommand=null, stopAppCommand=null, clearStateCommand=null, clearKeychainCommand=null, runFlowCommand=null, setLocationCommand=null, repeatCommand=null, copyTextCommand=null, pasteTextCommand=null, defineVariablesCommand=null, runScriptCommand=null, waitForAnimationToEndCommand=null, evalScriptCommand=null, mockNetworkCommand=null, scrollUntilVisible=null, travelCommand=null, assertOutgoingRequestsCommand=null), logMessages=[])
[INFO ] ios.IOSDevice - Waiting for animation to end with timeout 3000
[INFO ] ios.xctest.XCTestIOSDevice - Screen diff request finished with isScreenStatic = true
[INFO ] ios.IOSDevice - screen static = true
[INFO ] ios.xctest.XCTestIOSDevice - installed apps: [com.apple.Passbook, com.apple.dt.XcodePreviews, com.apple.MobileAddressBook, com.apple.DocumentsApp, com.apple.MobileSMS, dev.mobile.maestro-driver-iosUITests.xctrunner, com.apple.Maps, tiktok, com.apple.mobilecal, com.apple.Bridge, com.apple.Preferences, com.apple.reminders, com.apple.freeform, com.apple.Health, com.apple.news, com.apple.webapp, com.apple.mobilesafari, com.apple.mobileslideshow, com.apple.shortcuts, org.wikimedia.wikipedia]
[INFO ] ios.xctest.XCTestIOSDevice - Running app id response received tiktok
[INFO ] ios.xctest.XCTestIOSDevice - found running app id tiktok
[INFO ] ios.IOSDevice - Waiting for animation to end with timeout 3000
[INFO ] ios.xctest.XCTestIOSDevice - Screen diff request failed with error = { "message" : "Failed request for XCTest server" }
[INFO ] ios.xctest.XCTestIOSDevice - installed apps: [com.apple.Passbook, com.apple.dt.XcodePreviews, com.apple.MobileAddressBook, com.apple.DocumentsApp, com.apple.MobileSMS, dev.mobile.maestro-driver-iosUITests.xctrunner, com.apple.Maps, tiktok, com.apple.mobilecal, com.apple.Bridge, com.apple.Preferences, com.apple.reminders, com.apple.freeform, com.apple.Health, com.apple.news, com.apple.webapp, com.apple.mobilesafari, com.apple.mobileslideshow, com.apple.shortcuts, org.wikimedia.wikipedia]
[INFO ] ios.xctest.XCTestIOSDevice - request to resolve running app id failed with exception - Code: 400 Body: { "message" : "Failed request for XCTest server" }
[INFO ] maestro.Maestro - Taking screenshot: /var/folders/rf/d2cc2hj112n9vkm3g0l7t3s00000gn/T/screenshot-168542375148315257587238204176079.png
[INFO ] maestro.utils.ScreenshotUtils - Taking screenshot to output sink
[ERROR] maestro.cli.runner.TestRunner - Failed to run flow
java.lang.IllegalStateException: Unable to obtain active app id
	at ios.xctest.XCTestIOSDevice.contentDescriptor(XCTestIOSDevice.kt:57)
	at ios.LocalIOSDevice.contentDescriptor(LocalIOSDevice.kt:35)
	at maestro.drivers.IOSDriver.contentDescriptor(IOSDriver.kt:184)
	at maestro.ViewHierarchy$Companion.from-c1iYVAs(ViewHierarchy.kt:29)
	at maestro.utils.ScreenshotUtils$Companion.viewHierarchy-c1iYVAs(ScreenshotUtils.kt:79)
	at maestro.utils.ScreenshotUtils$Companion.waitForAppToSettle-d60svg8(ScreenshotUtils.kt:39)
	at maestro.drivers.IOSDriver.waitForAppToSettle-FTAEaK0(IOSDriver.kt:500)
	at maestro.Maestro.waitForAppToSettle-FTAEaK0(Maestro.kt:422)
	at maestro.Maestro.waitForAppToSettle-FTAEaK0$default(Maestro.kt:421)
	at maestro.Maestro.swipe(Maestro.kt:148)
	at maestro.Maestro.swipe$default(Maestro.kt:120)
	at maestro.orchestra.Orchestra.swipeCommand(Orchestra.kt:905)
	at maestro.orchestra.Orchestra.executeCommand(Orchestra.kt:189)
	at maestro.orchestra.Orchestra.executeCommands(Orchestra.kt:150)
	at maestro.orchestra.Orchestra.runFlow(Orchestra.kt:93)
	at maestro.cli.runner.MaestroCommandRunner.runCommands(MaestroCommandRunner.kt:179)
	at maestro.cli.runner.TestRunner$runContinuous$watchFiles$1$2$1.invoke(TestRunner.kt:102)
	at maestro.cli.runner.TestRunner$runContinuous$watchFiles$1$2$1.invoke(TestRunner.kt:101)
	at maestro.cli.runner.TestRunner.runCatching(TestRunner.kt:138)
	at maestro.cli.runner.TestRunner.access$runCatching(TestRunner.kt:28)
	at maestro.cli.runner.TestRunner$runContinuous$watchFiles$1$2.invoke(TestRunner.kt:101)
	at maestro.cli.runner.TestRunner$runContinuous$watchFiles$1$2.invoke(TestRunner.kt:89)
	at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)
[INFO ] x.installer.LocalXCTestInstaller - [Start] Cleaning up the ui test runner files
[INFO ] x.installer.LocalXCTestInstaller - [Start] Stop XCUITest runner
[INFO ] x.installer.LocalXCTestInstaller - [Done] Stop XCUITest runner
[INFO ] x.installer.LocalXCTestInstaller - [Start] Uninstall XCUITest runner
[INFO ] util.CommandLineUtils - Running command line operation: [xcrun, simctl, uninstall, 032BD811-4ACB-49D3-A5EB-101D6605CB46, dev.mobile.maestro-driver-iosUITests.xctrunner]
[INFO ] x.installer.LocalXCTestInstaller - [Done] Uninstall XCUITest runner
[INFO ] x.installer.LocalXCTestInstaller - [Done] Cleaning up the ui test runner files

xctest_runner.log
Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild test-without-building -xctestrun /var/folders/rf/d2cc2hj112n9vkm3g0l7t3s00000gn/T/maestro-driver-ios-config.xctestrun -destination id=032BD811-4ACB-49D3-A5EB-101D6605CB46

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES

2023-05-30 13:14:09.725808+0800 maestro-driver-iosUITests-Runner[27953:12056223] Running tests...
Test Suite 'All tests' started at 2023-05-30 13:14:10.200
Test Suite 'maestro-driver-iosUITests.xctest' started at 2023-05-30 13:14:10.201
Test Suite 'maestro_driver_iosUITests' started at 2023-05-30 13:14:10.201
Test Case '-[maestro_driver_iosUITests.maestro_driver_iosUITests testHttpServer]' started.
    t =     0.00s Start Test at 2023-05-30 13:14:10.203
    t =     0.05s Set Up
2023-05-30 13:14:10.272727+0800 maestro-driver-iosUITests-Runner[27953:12056430] [FlyingFox] starting server ::1:22087
2023-05-30 13:14:10.380365+0800 maestro-driver-iosUITests-Runner[27953:12056439] [FlyingFox] <::1> open connection
2023-05-30 13:14:10.383920+0800 maestro-driver-iosUITests-Runner[27953:12056434] [FlyingFox] <::1> request: GET /subTree
2023-05-30 13:14:10.385328+0800 maestro-driver-iosUITests-Runner[27953:12056223] [SubTreeRouteHandler] Trying to capture hierarchy snapshot for com.apple.springboard
2023-05-30 13:14:10.391678+0800 maestro-driver-iosUITests-Runner[27953:12056223] [SubTreeRouteHandler] [Start] Now trying hierarchy for: com.apple.springboard
    t =     0.19s Find the Application 'com.apple.springboard'
    t =     0.24s Ignoring failure to get hierarchy for remote element in process 94729 (Error getting main window kAXErrorServerNotFound)
2023-05-30 13:14:10.511192+0800 maestro-driver-iosUITests-Runner[27953:12056223] [SubTreeRouteHandler] [Done] Now trying hierarchy for: com.apple.springboard
2023-05-30 13:14:10.511301+0800 maestro-driver-iosUITests-Runner[27953:12056223] [SubTreeRouteHandler] [Start] Now trying hierarchy for: com.apple.springboard
    t =     0.31s Find the Application 'com.apple.springboard'
    t =     0.34s Ignoring failure to get hierarchy for remote element in process 94729 (Error getting main window kAXErrorServerNotFound)
2023-05-30 13:14:10.615644+0800 maestro-driver-iosUITests-Runner[27953:12056223] [SubTreeRouteHandler] [Done] Now trying hierarchy for: com.apple.springboard
2023-05-30 13:14:10.616318+0800 maestro-driver-iosUITests-Runner[27953:12056223] [SubTreeRouteHandler] Successfully got view hierarchy for com.apple.springboard in 230.845215
2023-05-30 13:14:12.048956+0800 maestro-driver-iosUITests-Runner[27953:12056439] [FlyingFox] <::1> open connection
2023-05-30 13:14:12.051086+0800 maestro-driver-iosUITests-Runner[27953:12056439] [FlyingFox] <::1> request: POST /setPermissions
2023-05-30 13:14:13.179077+0800 maestro-driver-iosUITests-Runner[27953:12056470] [FlyingFox] <::1> request: POST /deviceInfo
    t =     2.98s Find the Application 'com.apple.springboard'
    t =     3.08s Ignoring failure to get hierarchy for remote element in process 94729 (Error getting main window kAXErrorServerNotFound)
2023-05-30 13:14:13.381716+0800 maestro-driver-iosUITests-Runner[27953:12056470] [FlyingFox] <::1> request: GET /isScreenStatic
2023-05-30 13:14:13.697883+0800 maestro-driver-iosUITests-Runner[27953:12056430] [FlyingFox] <::1> request: GET /isScreenStatic
2023-05-30 13:14:14.008322+0800 maestro-driver-iosUITests-Runner[27953:12056434] [FlyingFox] <::1> request: GET /isScreenStatic
2023-05-30 13:14:14.627212+0800 maestro-driver-iosUITests-Runner[27953:12056430] [FlyingFox] <::1> request: POST /runningApp
2023-05-30 13:14:14.729771+0800 maestro-driver-iosUITests-Runner[27953:12056434] [FlyingFox] <::1> request: POST /swipeV2
2023-05-30 13:14:14.730721+0800 maestro-driver-iosUITests-Runner[27953:12056223] [SwipeRouteHandler] Swipe from (215.0, 652.0) to (215.0, 93.0) with 0.5 duration
    t =     4.53s Swipe from (215.0, 652.0) to (215.0, 93.0) with 0.5 duration
    t =     4.53s     Find the Application 'tiktok'
    t =     7.73s     Check for interrupting elements affecting "tiktok" Application
    t =     7.90s     Synthesize event
2023-05-30 13:14:19.186779+0800 maestro-driver-iosUITests-Runner[27953:12056438] [FlyingFox] <::1> request: GET /isScreenStatic
2023-05-30 13:14:19.703747+0800 maestro-driver-iosUITests-Runner[27953:12056432] [FlyingFox] <::1> request: GET /isScreenStatic
2023-05-30 13:14:20.222267+0800 maestro-driver-iosUITests-Runner[27953:12056434] [FlyingFox] <::1> request: GET /isScreenStatic
2023-05-30 13:14:21.060449+0800 maestro-driver-iosUITests-Runner[27953:12056430] [FlyingFox] <::1> request: POST /runningApp
2023-05-30 13:14:21.166433+0800 maestro-driver-iosUITests-Runner[27953:12056432] [FlyingFox] <::1> request: POST /swipeV2
2023-05-30 13:14:21.166872+0800 maestro-driver-iosUITests-Runner[27953:12056223] [SwipeRouteHandler] Swipe from (215.0, 652.0) to (215.0, 93.0) with 0.5 duration
    t =    10.97s Swipe from (215.0, 652.0) to (215.0, 93.0) with 0.5 duration
    t =    10.97s     Find the Application 'tiktok'
2023-05-30 13:14:51.127005+0800 maestro-driver-iosUITests-Runner[27953:12056438] [FlyingFox] <::1> open connection
2023-05-30 13:14:51.128470+0800 maestro-driver-iosUITests-Runner[27953:12056438] [FlyingFox] <::1> request: GET /isScreenStatic
    t =    41.97s         Find the Application 'tiktok' (retry 1)
2023-05-30 13:15:21.585427+0800 maestro-driver-iosUITests-Runner[27953:12056434] [FlyingFox] <::1> open connection
2023-05-30 13:15:21.587933+0800 maestro-driver-iosUITests-Runner[27953:12056434] [FlyingFox] <::1> request: POST /runningApp
    t =    72.98s         Find the Application 'tiktok' (retry 2)
2023-05-30 13:15:51.549575+0800 maestro-driver-iosUITests-Runner[27953:12056427] [FlyingFox] <::1> open connection
2023-05-30 13:15:51.550877+0800 maestro-driver-iosUITests-Runner[27953:12056427] [FlyingFox] <::1> request: GET /screenshot
2023-05-30 13:15:53.186663+0800 maestro-driver-iosUITests-Runner[27953:12056435] [FlyingFox] handler error: Timed out before completion
2023-05-30 13:15:53.188052+0800 maestro-driver-iosUITests-Runner[27953:12056435] [FlyingFox] <::1> error: SocketError. Read(54): Connection reset by peer
2023-05-30 13:15:53.188216+0800 maestro-driver-iosUITests-Runner[27953:12056435] [FlyingFox] <::1> close connection
2023-05-30 13:15:53.741211+0800 maestro-driver-iosUITests-Runner[27953:12056427] [FlyingFox] handler error: Timed out before completion
2023-05-30 13:15:53.741502+0800 maestro-driver-iosUITests-Runner[27953:12056427] [FlyingFox] <::1> error: SocketError. Read(54): Connection reset by peer
2023-05-30 13:15:53.741611+0800 maestro-driver-iosUITests-Runner[27953:12056427] [FlyingFox] <::1> close connection
2023-05-30 13:15:53.744961+0800 maestro-driver-iosUITests-Runner[27953:12056439] [FlyingFox] handler error: Timed out before completion

To Reproduce
- launchApp
- swipe:
    start: 50%, 70%
    end: 50%, 10%
- swipe:
    start: 50%, 70%
    end: 50%, 10%

Happy to contribute if you can help to give me some clue

hey, sorry but this is not reproducible, + there hasn't been any recent activity. feel free to create a new bug report with more info if the issue still persists.


Outdoor temperature not read correctly

Describe the bug （描述一下问题）
Outdoor temperature reading is static, always 102.5 Celsius.
I can reproduce the problem on two different Carrier Extreme devices. The outdoor temperature is accurate if reading from the Carrier Android application.
I believe this is a parsing error of the outdoor_temperature value.
Relevant line of code: https://github.com/mac-zhou/midea-msmart/blob/34f20c42f01293d6a854bf9f7611f384fc6d245c/msmart/command.py#L382
I can help with the fix if you can give me clues on how the values should be parsed.
Maybe it should look like the same as indoor_temperature parsing logic?
Screenshots / Logs / Pcap File（屏幕截图/日志/抓包文件）
Logs from midea-discover -d (some info redacted)
DEBUG:msmart.scanner:{'_name': None, '_lan_service': <msmart.lan.lan object at 0x102158d00>, '_ip': '--REDACTED for privacy--', '_id': --REDACTED for privacy--, '_port': 6444, '_keep_last_known_online_state': False, '_type': 172, '_updating': False, '_defer_update': False, '_half_temp_step': False, '_support': True, '_online': True, '_active': True, '_protocol_version': 3, '_token': bytearray(--REDACTED for privacy--), '_key': bytearray(--REDACTED for privacy--), '_last_responses': [], '_prompt_tone': False, '_power_state': False, '_target_temperature': 25.0, '_operational_mode': <operational_mode_enum.heat: 4>, '_fan_speed': <fan_speed_enum.Auto: 102>, '_swing_mode': <swing_mode_enum.Off: 0>, '_eco_mode': False, '_turbo_mode': False, 'fahrenheit_unit': False, '_on_timer': {'status': False, 'hour': 31, 'minutes': 3}, '_off_timer': {'status': False, 'hour': 31, 'minutes': 3}, '_indoor_temperature': 22.0, '_outdoor_temperature': 102.5}

Indoor temperature is correct, outdoor_temperature is not.
Versions (版本信息)

Home Assistant version: 2022.3.8
Midea-ac-py version: 0.2.2
Midea msmart version: 0.2.3 (CLI with midea-discover)

P.S: Appreciate the work you've done on this project, keep it up! :)

Okay this is probably not a bug in the parsing...
I got this data from the device during initial discovery (added index for easier reading):
index:  00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28
data:   c0 00 89 66 7f 7f 00 00 00 00 00 5e ff 0d 00 00 00 00 00 00 00 00 00 01 00 00 00 00 09 e4 22

This shows that the index: 0x0c contains 0xff, so the device itself reported invalid data it seems.... Not sure why.

Okay, I may have figured it out.
It seems when the AC is off the outdoor_temperature sensor returns a static 0xff value.
But when it is on, then the outdoor_temperature has a proper value, and the integration can properly read it.
Device A, switched ON:
DEBUG:msmart.scanner:{'_name': None, '_lan_service': <msmart.lan.lan object at 0x108574d00>, '_ip': '-- REDACTED for privacy (device A)-- ', '_id': -- REDACTED for privacy --, '_port': 6444, '_keep_last_known_online_state': False, '_type': 172, '_updating': False, '_defer_update': False, '_half_temp_step': False, '_support': True, '_online': True, '_active': True, '_protocol_version': 3, '_token': "-- REDACTED for privacy --, '_key': -- REDACTED for privacy --, '_last_responses': [], '_prompt_tone': False, '_power_state': True, '_target_temperature': 23.0, '_operational_mode': <operational_mode_enum.fan_only: 5>, '_fan_speed': <fan_speed_enum.Auto: 102>, '_swing_mode': <swing_mode_enum.Both: 15>, '_eco_mode': False, '_turbo_mode': False, 'fahrenheit_unit': False, '_on_timer': {'status': False, 'hour': 31, 'minutes': 3}, '_off_timer': {'status': False, 'hour': 31, 'minutes': 3}, '_indoor_temperature': 22.4, '_outdoor_temperature': 21.5}

'_outdoor_temperature': 21.5
Device B switched OFF:
DEBUG:msmart.scanner:{'_name': None, '_lan_service': <msmart.lan.lan object at 0x1086022e0>, '_ip': '-- REDACTED for privacy (device B)--', '_id': -- REDACTED for privacy --, '_port': 6444, '_keep_last_known_online_state': False, '_type': 172, '_updating': False, '_defer_update': False, '_half_temp_step': False, '_support': True, '_online': True, '_active': True, '_protocol_version': 3, '_token': -- REDACTED for privacy --, '_key': -- REDACTED for privacy --, '_last_responses': [], '_prompt_tone': False, '_power_state': False, '_target_temperature': 24.0, '_operational_mode': <operational_mode_enum.fan_only: 5>, '_fan_speed': <fan_speed_enum.Auto: 102>, '_swing_mode': <swing_mode_enum.Off: 0>, '_eco_mode': False, '_turbo_mode': False, 'fahrenheit_unit': False, '_on_timer': {'status': False, 'hour': 31, 'minutes': 3}, '_off_timer': {'status': False, 'hour': 31, 'minutes': 3}, '_indoor_temperature': 22.4, '_outdoor_temperature': 102.5}

'_outdoor_temperature': 102.5
So I believe this is a hardware limitation.
Does anybody know whether it is the same for every device? Or if this is something that can be changed to show outdoor temperature always?
Can we change the label 'bug' to 'enhancement'?

this is related to the model, some models are supported to return to the outdoor temperature under the power off.

I understand, thanks for your response.
This is definitely not a bug then!
As an enhancement, should the plugin try and handle this? Example: when value is 0xFF always return 0xFF and only try and parse when it is different than 0xFF. Is it safe to use the value 0xFF in this case as an "unknown" value?
This would be very similar to what the def indoor_temperature(self): property read does.
https://github.com/mac-zhou/midea-msmart/blob/34f20c42f01293d6a854bf9f7611f384fc6d245c/msmart/command.py#L345


New IEnumMeasurementTypes

Hi
Could you please make sure all of the following types are included in the IEnumMeasurementType
	"POSITION" | "TEMPERATURE" | "HUMIDITY" | "PRESSURE" | "SPEEDLOG" | "ONOFF" | "FORCE" | "FUEL_CONSUMPTION" | "DEPTH" |
	"ACCELERATION" | "MAGNETISM" | "ANGULAR_VELOCITY" | "VOLTAGE" | "CURRENT" | "POWER" | "ENERGY_CONSUMPTION" | "TRAWL_TENSION" |
	"SCALE" | "ILLUMINATION" | "COUNT" | "GENERIC_NUMBER" | "PERCENT" | "DURATION" | "SUBSURFACE" | "SHAFT"

Thanks in advance!

 The enum values missing from the provided list are:
"COUNT"
"DURATION"
"GENERIC_NUMBER"
"ILLUMINATION"
"PERCENT"
"SHAFT"

Out of those I'm not inclined to add GENERIC_NUMBER since it feel like a copout to better explaining what you are measuring. A COUNT or PERCENT are good examples for better generic numbers.
Also I'd name PERCENT PERCENTAGE to better match the other values.
I'm struggling to understand what the meaning of SHAFT is in this context.


Suggest default path /health

While the example suggests to the observant reader that it is a good idea to use /health as the default path to reach the health check endpoint, this is not mentioned anywhere in the text. May I suggest that the following paragraphs are added:

For interoperability, discovery, and ease of setup of tools that consume such an endpoint, health check endpoints SHOULD be reachable via a URL path that ends on /health. Preferably that path is reachable from the toplevel.

I'm sure the wording can be improved, but I guess you get what I mean.

MicroProfile Health is adding liveness and readiness checks on top of health checks.
Given status code expectations and coalescence of health check outcomes, additional /health/live and /health/ready endpoints are being proposed.
See Kubernetes for liveness and readiness definitions, but, basically, readiness failures pull the app out of loadbalancer rotation, and liveness failures kill the app instance in favor of a new instance.

The detachment of the wire format described in this RFC from the URI endpoint it can be used at is intentional. For instance, in case of Kubernetes liveness/readiness checks both of those endpoints can use the format defined in the RFC. Which is what the reference implementation of the spec in Node does: https://github.com/inadarei/maikai#kubernetes-liveness-and-readiness-probes
The URIs health check endpoints are mounted to, in practice, are already so different, suggesting some specific URI in this RFC would probably be counter-productive. Case in point: Kubernetes itself doesn't even suggest a standard URI for mounting readiness and liveness probes, instead letting users indicate their own path.

P.S. for making discovery of health check links easier, please see the existing conversation here: https://github.com/inadarei/rfc-healthcheck/issues/5 and the suggested, arguably preferred way of doing it.

Status code expectations is another topic. Does /health always return 200, no matter what the value of health inside the JSON would be? I know this is not the right thread, but I somehow couldn't find the correct thread for that. Should I open a new thread for status codes?
Nonetheless, I think there's a lot of simple services which themselves would just have a single endpoint, and I think the RFC suggesting (not demanding) that endpoint to be "/health as long as there are no considerations to do otherwise" could be a good idea.

Based on already-established behaviors, health endpoint is the conduit to the main API so it doesn't always return HTTP 200, it returns 400-500 if the main API is having trouble.

@inadarei Thanks for the clarification. Okay, so here's a use case. A middleware which talks to a backend. The middleware could have two health endpoints, /health for itself and /backend/health for the upstream backend's health.
Suppose the middleware is just fine, /health would return 200 with health: "pass".
Suppose the middleware knows it's in trouible, it would return 500 with health: "fail".
Suppose the backend is just fine, /backend/health on the middleware would return 200 with health: "pass".
Suppose the middleware can't reach the backend, /backend/health on the middleware would return 504 with health: "fail".
Suppose the backend responds 503 Service Unavailable to the middleware, /backend/health on the middleware would return 503 with health: "fail".
Is that interpretation around how you intend health endpoints to deal with status codes correct?

When it comes to suggestions of the response code, I would welcome something along the lines of suggesting to use 2xx responses when the system is in a "pass" state, and an error state (5xx) when the system is in a "fail" state.  For "warn" states, it would be up to the system what health to indicate to the world.  Typically load balancers have a "health check" that they check every few minutes, and "warn" might not be a good enough indicator to move traffic away from the service.

Currently the spec defines "warn" as 2xx, meaning - load-balancers would NOT move traffic away, unless they dig deeper and investigate what the warning is about. If they do not understand as much (old, less "intelligent" networking tooling), by definition they should interpret warn as "ok", since it is not a problem yet. Which is why 2xx is suggested as the return status of "warn".

Ah, I completely missed that part of the spec! :+1:

Sorry to resurrect this, but I work on REST APIs for a healthcare company, and it is not unlikely that a /health endpoint may be needed for some other purpose at a point in the future.
I would suggest standardizing on a token which indicates the purpose of a health-check, but is somewhat less likely to be used as part of a public-facing API. I have begun using /healthz for this purpose. It declares its intent, and the intentional misspelling means that it is not likely to be needed for a public API.

Same as @kalexmills and we were wondering if an addition to .well-known i.e., /.well-known/health/?* would be the path to go. Unsure of possible ramifications or if its the intended use of the linked RFC.


[BEAM-9019] Improve Encoders: replace as much as possible of catalyst generated code with java compiled code.

New perf:

Please add a meaningful description for your change here

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

Run Spark StructuredStreaming ValidatesRunner

@iemejia thanks !


Street Address fields are not appearing in Dropin-UI

General information

SDK version: .NET library 4.16.0
Environment: Sandbox, localhost
Browser and OS: Chrome Version 77.0.3865.120 (Official Build) (64-bit), Windows 10

Issue description
After doing the Getting Started guide for the Dropin-UI I wanted to add CVV and AVS fields, so I followed the documentation and went to Processing -> CVV/AVS options -> etc.
Everything I enabled rules for appeared as expected except for Street Address:

Am I missing something?
Also, my scripts loaded are below if it's any help. I'm a little confused if client.min.js and dropin.min.js are both required:
    <!-- Load PayPal's checkout.js Library. -->
    <script src="https://www.paypalobjects.com/api/checkout.js" data-version-4 log-level="warn"></script>

    <!-- Load the client component. -->
    <script src="https://js.braintreegateway.com/web/3.55.0/js/client.min.js"></script>

    <!-- Load the PayPal Checkout component. -->
    <script src="https://js.braintreegateway.com/web/3.55.0/js/paypal-checkout.min.js"></script>
    <script src="https://js.braintreegateway.com/web/dropin/1.20.4/js/dropin.min.js"></script>

For the future, please open issues for Drop-in in the dedicated repo for it: https://github.com/braintree/braintree-web-drop-in/issues
Drop-in does not yet support collecting billing address within Drop-in itself. You can collect that info yourself in your own form and pass it into the transaction.sale call on your server.
You don't need to load the PayPal script or the client/paypal-checkout Braintree scripts. Drop-in does all of that internally in the Drop-in script.


Onboarding Request

Your Twitch username
Freethan

hey i just saw this! sorry for the late response. the email for my spotify is<EMAIL_ADDRESS>

Added you. Thanks


Zenquotes only has 28 key words and approx 100 authors. So an unlimited "search any word" will not work. We have to modify our search criteria.

We want to do a pre-defined drop-down list of the 28 keywords.  We will still do a local storage of the word that was selected. It will become a "favorite" word.


Does not work

Plugin flat out does not work.  No lines are highlighted.  Win7.  Tried restarting, and multiple projects.  Have TortoiseGit installed if that makes a difference.  I see modified files highlighted, but not lines.  Works on Win10 laptop.

Have you followed the suggestions in the Debugging document? Also, could you give the following information?

Which version of Atom are you using?
Can you reproduce the issue after completely exiting Atom and restarting using atom --safe?
When you open Atom are you opening the root of the Git repository?
Is the directory you're opening a Git repository?

Version 1.4.3
I can reproduce in safe mode
The project folder added is the root of a git repository.
Went through the debugging document.

I have actually just recently just started getting this issue also. I ran in safe mode and was able to reproduce. Or at least I think it is the same issue.
The file status for change does not update until Atom window loses focus, even on save. I am also running Windows 7, Atom version 1.5.0. .git folder is at root.
Even when the file is marked as have diffs, I run the toggle diffs command and it says their are no differences even though I know there is (checking git diff) and it does not mark the line in the gutter.
Made a quick video to show what I am talking about
https://youtu.be/8FDo9dnC9M0

Atom version 1.5.3. Just started experiencing this today.
Works under atom --safe.

When you open Atom are you opening the root of the Git repository?

Yes. atom .

Is the directory you're opening a Git repository?

Absolutely.
ping @lee-dohm
I use the Seti theme by default but changing it does not appear to help. This only shows up in safe mode.
Considering I work in a very large project this plugin is extremely important to me. :heart:

@Fishrock123 Are you also on Windows 7?

@lee-dohm Nope, OS X 10.10.5 (14F1605)

For anyone experiencing this issue: if you open up the dev tools (Cmd+Shift+I or Ctrl+Alt+I), are there any errors relating to git-diff in the console?

@50Wliu No errors.

@Fishrock123 What does this mean?

Works under atom --safe.

Does it mean that things work as expected? Or that the bug reproduces?

@lee-dohm The icons appear in the gutter under --safe mode. They do not appear when I regularly launch atom (atom .).

@Fishrock123 That sounds like one of the community packages you have installed is causing the problem. People have reported having success using the package-cop package to track down offending packages.

Update: removing the git-diff v1.0.0 (Community Package one) resolves the issue.

Glad it is fixed for you @Fishrock123 :grinning:

Just an update, haven't responded in a few days.
Updated my Atom to version 1.5.3 (and still on Win 7)
Still have the issue.
I run the "toggle diff list" command and it says no diffs, even if the file in the tree view is showing as changed and the git status/diff through terminal shows the diffs correctly.
Behavior matches exactly as stated in my previous post.
This still happens even with all community packages disabled, run in --safe
No errors in my console (at least relating to git-diff). @50Wliu
Package works as expected on both of my other machines
Win 7 and Win 10
Packages are mostly the same across all three, I honestly have no idea what could be causing this issue, sorry for being so unhelpful in finding the root of this issue. I'm avoiding fresh installing in hopes to locate the cause if you have any suggestions on where I should check.

Interestingly enough, it appears the bug only occurs if the repo is in my Desktop folder, but not if it somewhere else. I think xeridea's reply is on to something with the symlinks.

@Fishrock123 I have the same problem with the same two packages on the exact same versions. How did you manage to uninstall the community package? And why did you uninstall the 1.0.0 one and not 0.57.0?

@nils-werner It works!

just remove git-diff from ~./atom/package  i had tested...it works

Atom: 1.7.4
OS: Windows 10 x64 Enterprise
I have recently started facing this bug where the line markers are gone but only for files which either have Folders or Files in path which begin with a capital letter. e.g the bug occurs on "Foo" but not
on "foo".

Do symlinks affect it?

#91?

I'd to confirm. I had the same issue of not seeing git indicators in the gutter. Removing the community git-diff package (apm uninstall git-diff) did the trick.

Dosn't work for me too,
ArchLinux
Atom 1.12.9

still doesn't work and there is no local package.

Guys I have discovered the problem! it was cause of my Synatx them... I have changed it to "One Light" and it is ok now.

Broken in 1.15.0 for me too. I don't have any non-stock packages installed. Doesn't work for any language in any UI or Syntax theme.

The screen is crushed horizontally, how can i solve it!
For other hand I have problems with bitbucket/git, not rules commands alt-b, how can i fix it?

@Encr1pt3d https://discuss.atom.io/t/where-did-this-empty-space-come-from-how-do-i-get-rid-of-it/30226
For most questions about Atom there are a lot of options, check out:

The Atom Flight Manual
The Atom FAQ on Discuss
Discuss, the official Atom and Electron message board
Join the Atom Slack team

On Discuss and in the Atom Slack team, there are a bunch of helpful community members that should be willing to point you in the right direction.

I am optimistically closing this issue since all the reports for this issue seems to have been resolved by various things :crossed_fingers:

Uninstalling git-diff when it was installed as a community package. apm uninstall git-diff
Changing to a different UI/Syntax theme
Running Atom in safe mode atom --safe
Ensuring that you have the .git folder in the top level https://github.com/atom/atom/issues/2203

If you still encounter this issue even when trying all the above suggestions then please open a new issue and completely fill out the provided issue template.

Deleting the repo and cloning it again is the only thing that worked for me.

2018-5-14
remove git-diff from ~/.atom/packages using rm -rf git-diff work for me
after that I switch back to Atom editor

it work again, new line have green color indicate that


Update sbt, scripted-plugin to 1.4.6

Updates

org.scala-sbt:sbt
org.scala-sbt:scripted-plugin

from 1.3.13 to 1.4.6.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scala-sbt" } ]

labels: library-update, semver-minor

Superseded by #85.

Superseded by #85.


size mismatch for my own pretrained model with existing model

Dear authors,
I hope this message finds you well. Following the dataset processing method provided by you previously, I conducted data processing and proceeded with training using 'image_train.py.' However, when I attempted to test the trained model using 'image_sample.py,' I encountered the following error. It is worth noting that I followed the training settings outlined in your paper and GitHub repository, and testing with the pre-trained model provided by you in 'image_sample.py' was successful.The error persists despite my adherence to the guidelines mentioned. I would greatly appreciate it if you could shed some light on the possible reasons for this discrepancy. Your insights and guidance on this matter would be immensely valuable to me.
Thank you in advance for your attention and support. I look forward to hearing from you soon.
error:
Traceback (most recent call last):
File "/newdata/xws/GESCO-main/image_sample.py", line 414, in
main()
File "/newdata/xws/GESCO-main/image_sample.py", line 53, in main
model.load_state_dict(th.load(args.model_path, map_location='cuda:0'))
File "/root/anaconda3/envs/pytorch_3.9/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1671, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for UNetModel:
size mismatch for middle_block.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for middle_block.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for middle_block.2.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for middle_block.2.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.0.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.0.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.1.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.1.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.2.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.2.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.2.2.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.2.2.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.3.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.3.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.4.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.4.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.5.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.5.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.5.2.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.5.2.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.6.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.6.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.7.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.7.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.8.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.8.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.8.2.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.8.2.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.9.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.9.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.10.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.10.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.11.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.11.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.11.1.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.11.1.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.12.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.12.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.13.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.13.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.14.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.14.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.14.1.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.14.1.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.15.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.15.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.16.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.16.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.17.0.in_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).
size mismatch for output_blocks.17.0.out_norm.mlp_shared.0.weight: copying a param with shape torch.Size([128, 2, 3, 3]) from checkpoint, the shape in current model is torch.Size([128, 36, 3, 3]).

You should change args.num_classes to 35


TW Lollipop Contacts app compiles but app disappears upon flashing

Original issue 777 created by ilanshulman on 2015-03-10T11:14:29.000Z:
What steps will reproduce the problem?
1.Decompile apk
2.Recompile apk
3.Flash apk
What is the expected output? What do you see instead?
expected working apk, instead app disappears from app drawer
What version of the product are you using? On what operating system?
RC4, windows 8.1
Please provide any additional information below.
framework apks are the same as for issue 762

Closing this one as well, since the OP will never be notified and asked me on a witch hunt to find logcats on XDA. My hunch is that its related to #636


Replace batch namings with step

Since the next version will already be breaking, I'm adding this breaking change that renames mentions of batch to step since batching is an implementation detail.

Included in #83


Broken LSN chain when running Test-DbaLastBackup

Bug Report
Reported in Slack by @gbargsley
Differential backup is missing in the backup chain when running Test-DbaLastBackup.
WARNING: Test-DbaLsnChain - Break in LSN Chain between \\crpitsisln17.exclaim-crp.com\sql\exclaim-prd\PRDPRSDBS04$ElasticProduct_Rise_AG\RiseDB\FULL\PRDPRSDBS04$ElasticProduct_Rise_AG_RiseDB_FULL_20170917_040106.bak and \\crpitsisln17.exclaim-crp.com\sql\exclaim-prd\PRDPRSDBS04$ElasticProduct_Rise_AG\RiseDB\LOG\PRDPRSDBS04$ElasticProduct_Rise_AG_RiseDB_LOG_20170922_040005.trn

General Troubleshooting steps

[ ] Verified running latest release of dbatools?
[ ] Verified errors are not related to permissions?
[ ] Can duplicate in new/fresh PowerShell.exe session?

Version Information

Operating System (Name|Version):
PowerShell Version:
SQL Server (Edition|Version):

Steps to Reproduce

[ ] Attach any screenshots (if possible/allowed)
[ ] Attach logs generated by dbatools (Get-DbatoolsLog)
[ ] Attach output from PowerShell console (if possible/allowed)

Script assumes that $diffbackup.DatabaseBackupLsn -eq $fullbackup.FirstLsn, while it should be $diffbackup.DatabaseBackupLsn -eq $fullbackup.CheckpointLsn as per Get-DbaBackupHistory#L289. So, whenever $fullbackup.FirstLsn -ne $fullbackup.CheckpointLsn, LSN check would fail, because it wouldn't find corresponding diff backup.
Feature Request

Problem to solve

Additional information
Will submit a PR soon.

Resolved


[SPARK-40921][SQL] Add WHEN NOT MATCHED BY SOURCE clause to MERGE INTO

What changes were proposed in this pull request?
This change adds a third type of WHEN clause to the MERGE INTO command that allows updating or deleting rows from the target table that have no match in the source table based on the merge condition.
The following example updates all rows from the target table that have a match in the source table using the source value. For target rows that have no match in the source table, the 'state' column of rows that were created before '2022-10-26' is set to 'active', while rows created before that date are deleted from the target table.
MERGE INTO target
USING source
ON target.key = source.key
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED BY SOURCE AND target.create_at > '2022-10-26' THEN UPDATE SET target.status = 'active'
WHEN NOT MATCHED BY SOURCE THEN DELETE

In addition, the existing WHEN NOT MATCHED clause can now also include an optional BY TARGET qualifier that has no effect on its semantic other than allowing a more consistent use of the clauses together:
WHEN NOT MATCHED BY TARGET THEN INSERT *

is equivalent to:
WHEN NOT MATCHED THEN INSERT *

The updated SQL syntax for the MERGE INTO command is described more precisely in the user-facing change section below.
The changes proposed in this pull request are two-fold:

Update SQL parsing to handle the new clause introduced. This results in a new field notMatchedBySourceActions being populated in the logical plan node of the MERGE INTO command MergeIntoTable.
Handle the newly added merge clause during analysis. In particular, resolve all attribute references used in WHEN NOT MATCHED BY SOURCE conditions and actions. The attributes used in a NOT MATCHED BY SOURCE clause may only refer to the target table.

Why are the changes needed?
The new clause opens up uses cases leveraging the merge command to sync a target from a source table by conditionally deleting or updating records that are not present in the source. As an example, the following command incrementally syncs the target table from the source table for the past 5 days:
MERGE INTO target
USING (SELECT `columns`  FROM source  WHERE created_at >= (current_date - INTERVAL ‘5’ DAY)  AS tmp_name
ON FALSE
WHEN NOT MATCHED BY SOURCE AND (current_date - INTERVAL ‘5’ DAY) THEN DELETE
WHEN NOT MATCHED BY TARGET THEN INSERT `columns`

After running this command, all rows older than 5 days in the target table are left unmodified while rows newer than 5 days that are either not already in the target table or not in the source table anymore are inserted and deleted, respectively.
Does this PR introduce any user-facing change?
Two user-facing changes are introduced in the MERGE INTO syntax:

WHEN NOT MATCHED BY SOURCE clause.
Optional BY TARGET qualifier for WHEN NOT MATCHED clauses.

The updated Spark SQL syntax is:
MERGE INTO target_table_name [target_alias]
   USING source_table_reference [source_alias]
   ON merge_condition
   { WHEN MATCHED [ AND matched_condition ] THEN matched_action |
     WHEN NOT MATCHED [BY TARGET] [ AND not_matched_condition ] THEN not_matched_action
     WHEN NOT MATCHED BY SOURCE [ AND not_matched_by_source_condition ] THEN not_matched_by_source_action } [...]

matched_action
 { DELETE |
   UPDATE SET * |
   UPDATE SET { column = [ expr | DEFAULT ] } [, ...] }

not_matched_action
 { INSERT * |
   INSERT (column1 [, ...] ) VALUES ( expr | DEFAULT ] [, ...] )

not_matched_by_source_action
 { DELETE |
   UPDATE SET { column = [ expr | DEFAULT ] } [, ...] }

This syntax replicates the semantics used by other vendors, see:

Microsoft T-SQL Merge
Google BigQuery Merge

How was this patch tested?
Tests are extended or added to cover the following aspect of the change:

Parsing (in DDLParserSuite.scala):

Existing tests are extended to cover parsing of WHEN NOT MATCHED BY SOURCE clauses in a range of cases. This covers parsing the clause with optional conditions and a variety of UPDATE and DELETE actions.
New tests are added to cover NOT MATCHED BY TARGET and invalid action UPDATE SET * for WHEN NOT MATCHED BY SOURCE.

Analysis (in PlanResolutionSuite.scala):

Existing tests are extended to also cover attribute reference resolution for WHEN NOT MATCHED BY SOURCE conditions and actions together with other type of clauses.
New tests are added to cover reference resolution specific to WHEN NOT MATCHED BY SOURCE clauses:

Unqualified reference to a column present both in the target and source table is not ambiguous in WHEN NOT MATCHED BY SOURCE conditions or actions since it can only refer to the target table.
Reference to columns in the source table are invalid in WHEN NOT MATCHED BY SOURCE.

Can one of the admins verify this patch?

thanks, merging to master!


WF.Fix: Does not deduplicate goals reliably

It seems that #3024 does not work as well as I hoped.
This definition from mathlib
/-- Auxiliary definition to show `exists_seq_of_forall_finset_exists`. -/
noncomputable def seqOfForallFinsetExistsAux {α : Type*} [DecidableEq α] (P : α → Prop)
    (r : α → α → Prop) (h : ∀ s : Finset α, ∃ y, (∀ x ∈ s, P x) → P y ∧ ∀ x ∈ s, r x y) : ℕ → α
  | n =>
    Classical.choose
      (h
        (Finset.image (fun i : Fin n => seqOfForallFinsetExistsAux P r h i)
          (Finset.univ : Finset (Fin n))))
  decreasing_by all_goals exact i.2

has only one recursive call, but shows three proof obligations:
3 goals
a✝: ℕ
n: ℕ := a✝
i: Fin n
⊢ (invImage (fun a ↦ sizeOf a) instWellFoundedRelation).1 (↑i) a✝

α: Type u_4
inst✝: DecidableEq α
P: α → Prop
r: α → α → Prop
h: ∀ (s : Finset α), ∃ y, (∀ x ∈ s, P x) → P y ∧ ∀ x ∈ s, r x y
a✝²: ℕ
a✝¹: (y : ℕ) → (invImage (fun a ↦ sizeOf a) instWellFoundedRelation).1 y a✝² → α
n: ℕ := a✝²
a✝: ∀ x ∈ image (fun i ↦ a✝¹ ↑i _) univ, P x
i: Fin n
⊢ (invImage (fun a ↦ sizeOf a) instWellFoundedRelation).1 (↑i) a✝²

a✝: ℕ
n: ℕ := a✝
i: Fin n
⊢ (invImage (fun a ↦ sizeOf a) instWellFoundedRelation).1 (↑i) a✝

At least the first and the last should deduplicate nicely.
The second is also subsumed, but strangely the context is extended “on top” rather than below, which I find strange. Probably it's present in both, and .cleanup is leaving it in place because a✝¹ drags it in.

Impact
Add :+1: to issues you consider important. If others are impacted by this issue, please ask them to add :+1: to it.

One theory is that the lambda expression (fun i => …) gets duplicated, and opened separately three times, so the i in the local context gets a fresh variable, and Lean.LocalContext.isSubPrefixOf will thus not consider them to be equal.
If it’s just this corner case probably ok to leave it like this for now, until we have evidence that this is more seriously bothering anyone.

A possible fix would be to normalize the metavars in the following sense:

Create one list of fresh FVarIds, as long as the longest Lean.LocalContext.decls array we encounter (including deleted entries!)
In each goal MVar, replace each FVarId bound in the LocalContext with the fresh one from above according to its position in the .decls array, and substitute accordingly.

Afterwards, the i above should have the same FVarId, the goal expressions should be structurally equivalent, and the deduplication with isSubPrefixOf should kick in.
Not a priority, but it's good to have a plan.


Fix GetOrphanRoot() and update checkpoint

GetOrphanRoot() was failing causing the stuck client sync issues. With this update the client syncs from the network without any issue.
This was only tested on 2 vm's but both synced from the network without issues. Sync went through with no client resets required.

If one or two more people can confirm this fixes the syncing issue before its merged it would be appreciated!

Stalling seems to be fixed for me. I'll let it run for a while, though.
The "ProcessBlock() : already have block xxxx" spam is still there though as reported in #269
Just so everyone is aware =D

Definitely still problems, but your(l0rdicon) reindex branch sync'd past 900k fresh; seems bogged down now.

I'm going to close this for now until a full PR can be opened with all the updates


Show deleted items with indicators

What this PR does / why we need it:
This change does the following:

Shows items that are being deleted using an animation
Adds an indicator for containing the object status in lists

This change touches lots of files since we don't have a good way to separate testing the operation list handlers from their contents.
Release note:
Add indicator to show object status and animation for objects when they are being deleted

I'm going to start taking a look at this now.

Pods being deleted continues to read "Running" during the delete process. When you view the Pod details, we provide the message that the pod is currently being deleted, but in the table view, it stays running. Which is not a bug in this PR. And directly ties in to Octant doing better when it comes to object status.
I wanted to note it because I think this PR will likely increase the priority of better object status so that there is better feedback for the user during the delete action.


Add Access-Control-Allow-Origin header to all responses

OPTIONS is a "preflight" request that Chrome/other browsers make to check the CORS headers before actually making the request. And we're not expecting /validate to respond to GET, but many of the other routes in the wrapper do, and it's easier to just have one OPTIONS handler than to write a bunch of them.


This is still happening.

An unrated level with the "Tough" smiley i tried to rate Harder but it crashes when i clicked the smiley

Which level?

Multiple recent tab levels with 4,7,9 stars requested

Existed since v1.2.6, fixed in v1.2.7


IPv6 security should match IPv4

Docker abuses IPv4 NAT to create a private network for containers. Ports opened by containers are by default not available from the public internet and need to be mapped/forwarded explicitly.
When IPv6 is enabled for Docker, all of that goes out of the window and what's worse is that there is NO indication about this at all to the user.
Docker should use a stateful packet filter to mirror a similar setup with IPv6, i.e.:

Block access to Docker's IPv6 network from the outside world by default
Port numbers explicitly configured as exposed by a container can then be used to let through traffic to specific IP/port combinations to containers
There should probably be an option to fully expose a container if that is desired

Of course there are some limitations as well: as there is no NAT, there is no way to remap ports. But that should not a serious issue in practice because after all every container gets its own address.

I think this should be fixed by https://github.com/moby/libnetwork/pull/2572 (not yet in a release, but will probably included as an experimental feature for docker 20.10)

As far as I can tell, that MR implements IPv6 NAT as an optional mode of operation for IPv6. This is a completely different matter. Please reopen.

Ah, right, so the intent here is to not use IPv6 NAT (the default, routable IPv6 addresses for containers), but still block access?
I can reopen, but I think generally firewall rules to block access are out of scope for the rules that the daemon sets up.
/cc @arkodg

I don't really see how that is out of scope. NAT indirectly forces a default-block policy in a sense. The same can be achieved with regular routing and a stateful filter. And if Docker doesn't handle this, the whole "port publishing" functionality doesn't make much sense.

Thanks for reporting!
As of v27.0, ip6tables has been put out of experimental mode and Docker networks support a new option named com.docker.network.bridge.gateway_mode_ipv4|6. This new option can currently take two values: routed and nat.
With routed, all ports but those published with -p are blocked, no NAT rules is created, and it's up to the end-user to properly set the routing table of adjacent / remote hosts to access those ports. This new mode is documented here: https://docs.docker.com/engine/network/packet-filtering-firewalls/#direct-routing.
With nat, ports are NATed like before.
Based on your original post @grigorig, I assume what you were asking for is that new routed mode.
Since this repo is now defunct, and not actively watched by maintainers, let me close this issue. If you think these new 'gateway modes' don't match what you need, please ping me and I'll reopen / move this issue to https://github.com/moby/moby.


kkpe.dll 2.18 removed all body blend shapes

this is best seen with sac kupaa uncensor body since it has a bunch of extra blendshapes of its own. in the newest version those are no longer found anywhere. it added a new slot, nonMatched which i'm guessing is where they could be moved, but the place is empty regardless of what's selected, plus the size of the window changes. the groups get much wider while the blend shapes part itself gets much smaller.

@ReafLife

KKPE.zip
It has been modified, so please check it with this

seems to be working so far.


Getting undefined keys of a socket from dht connection

Hello!
During the _handleServerConnection (https://github.com/holepunchto/hyperswarm/blob/caf59d7b40981f975eb0b260d565acd08e5d2b15/index.js#L275C86-L275C86), when a socket reconnects, the conn.publicKey is undefined causing a fail
Other things to note, I am running other DHT operations on the same node as the swarm is operating on, not sure if that could cause problems. I am also running operations through the DHT WebSocket Relay. Everything is fine up until a socket tries to reconnect.
edit: sorry for all the edits, long night.

From the stack above you are not using plain hyperswarm (ie there is a websocket involved in your stack)
The remotePublicKey is never null nor undefined in vanilla. I suggest you open the issue on the “custom” provider you are using

Ie the websocket relay after rereading your message. Just ping me there is thats a holepunch project also


Workflow submission scenarios

While working out the web GUI interactions, I came up with a more detailed version of workflow submissions. I'm summarizing here such that we have a centralized overview of the scenarios (see also draft of new functional specs, submission section).

A user submits a full workflow for the first time (already supported)
A user reruns a workflow from the beginning (should be supported in the 1.x release, right)
A user runs a workflow until a given step (e.g. 4 task workflow, the user runs the first 2 => running the preprocessing steps, but not the image analysis steps yet)
A user continues the run of a workflow (e.g. after 3, now runs the second part of the workflow, tasks 3 & 4)
A user tests parameters of the workflow on a subset of the data. E.g. user ran scenario 3 (tasks 1 & 2), then runs multiple options of tasks 3 on a subset of the data. These subsets are saved to temporary files, not overwriting the main OME-Zarr file => see https://github.com/fractal-analytics-platform/fractal-server/issues/109
A user reruns part of a workflow (e.g. reruns tasks 3 & 4). There need to be some restrictions to what can be rerun, will cover this in a separate issue.

Here is a sketch of these scenarios:

There is a main workflow (see discussion here: https://github.com/fractal-analytics-platform/fractal-server/issues/236) that the user sees & where the user edits parameters. They first submit tasks 1 & 2 (workflow submission ID1). Then, the user experiments with options for task 3 (workflow submission IDs 2-4). Finally, they submit the fitting parameter on the whole dataset & run tasks 3 & 4 (workflow submission ID5)

I'm dumping here some meetings note concerning the "running a workflow from task A to task B" feature.

Running workflow from A to B: to be more clearly defined => what do we need to clarify? User stories? Implementation approach?
User stories:

I’m not ready for the whole workflow yet. I just want to look at the image first (=> run 0 to n)
Continue a workflow: n to m
Something failed at step 3 (because input parameters were wrong). Let me correct parameters and rerun from there
Tricky rerun part: clean up old outputs? Partial failure? => not initial scope [reserved keyword argument of the task]
I’m just testing things (trying some parameters)

Goal: Tackle user stories 1-3
Assumptions:
Current status
Datasets are little metadata layers (collection of resources => paths + metadata)
Running a workflow has an input & output. Those are for the whole workflow => no clear access to intermediate states
Use case 3 is tricky => no info on what the last valid dataset is [some history is stored, but only at the end of the workflow]
Database is never touched from beginning to end of the workflow (separation of concern between runner & db)
Get job status is retrieved from disk (from the metadata.json, which is updated after every task [at least the history is updated, metadata dict updates are optional]) => use of this file is only for job monitoring endpoint
At the end of the workflow, db is updated
New
If a workflow fails, should the metadata be updated?
What we can do now: Update to the last valid state, i.e. to the state at the end of step 2.
Writing the last valid state
Requirement: We need to select to correct task to restart from
User needs to start from the correct dataset (the output dataset)
This will require an additional check: IO compatibility of tasks: We only check for input of workflow and output of workflow, not for each task
Tasks can modify dataset types
Q: Does the user need to define the output dataset? If the task defines (& changes) the output type, not necessarily
=> Tasks define their input/output
Runner has no access to the db => monitoring & updates goes via the metadata file

Use case 6:
Switch back and forth between 3D and 2D OME-Zarrs, e.g. go back to 3D dataset after performing MIP.
Likely this could go through a more structured Dataset.meta attribute. Instead of just a list parallelization_level -> list_of_components, we could have something a bit more structured (possibly mimicking some part of the OME-Zarr structure).
This work would happen mostly on the task side, and possibly lead to some limited fractal-server updates.
The guiding principle in this should be that "Each attribute in metadata needs to exist somewhere else in the OME-Zarr file", and we would also need to rely on "Bootstrap metadata from an existing OME-Zarr file".
Other related fractal-tasks-core issues:

https://github.com/fractal-analytics-platform/fractal-tasks-core/issues/342
https://github.com/fractal-analytics-platform/fractal-tasks-core/issues/279

Reviewed. Functionality of 1-4 is already implemented, 5 is indeed covered with:
https://github.com/fractal-analytics-platform/fractal-tasks-core/issues/342
https://github.com/fractal-analytics-platform/fractal-tasks-core/issues/279


Add changelog to spec

Supersedes #79
Signed-off-by: Pavol Loffay<EMAIL_ADDRESS>

@fmhwong @pilhuhn could you please review?

LTGM


Use Espree's built-in comment attachment feature

JSDoc currently attaches comments to the AST using a bunch of custom code in jsdoc/src/astbuilder, for two reasons:

At one time, JavaScript parsers like Esprima didn't provide a way to attach comments to source code.
For historical reasons, JSDoc expects comments to be attached in the same places that the Mozilla Rhino parser would attach them.

Issue 1 is a thing of the past. However, issue 2 is still a problem—Esprima, Espree, and similar parsers don't use the same algorithm as Mozilla Rhino to attach comments, which means they end up attached to the wrong parts of the AST from JSDoc's perspective. As a result, we're still using our own comment attachment code.
Removing this dependency is a first step to allowing JSDoc to adopt Babylon as its JavaScript parser, which would make it possible for JSDoc to support stage-0 language features, TypeScript, and many other features that users want.
The process for removing this dependency probably looks something like this:

Replace JSDoc's comment attachment code with Espree's built-in comment attachment feature. This will break a ton of test cases.
Pick a test case that's broken by this change, and figure out where Espree's comment attachment went wrong.
Update jsdoc/src/walker to move the misplaced comment to the node where JSDoc expects to find it (similar to this example). This won't always be the right place to make a fix, but it should be in at least some cases.
Repeat steps 2 and 3 until all the test cases pass.

Fixed on master.


Enter Logon Data Prompt

Hi Gopal,
Why am I seeing this username/password window? I see my Free subscription has ended and the API keys are disabled in Azure Open AI . Is it because of that?

Hi @Dev4Develop ,
The popup comes up due to failed authorization. In this case, as your API keys are disabled/resource is disabled, the authentication fails, and you are presented with a prompt.
JFYI... AI SDK for SAP supports Azure Open AI as well as Open AI, as you can see in the documentation website. So, if you dont have access to Azure Open AI, you can try out all the features using Open AI as well.
Best Regards,
Gopal Nair.

Thanks Gopal for quick response. I tried creating Secret Key and use in the program ZP_PENGG_AZOAI_DEMO_COMPLETION. But what will be the input for other Selection Screen Parameters?
Otherwise If we have any demo program without Azure let me know.


Some questions about the FCN code

Thank you for writing this.
I have several questions about https://github.com/mzaradzki/neuralnets/tree/master/vgg_segmentation_keras/utils.py
First, Is there a specific reason for you to only define fcn32s and 2 functions to convert 32s to 16s and 8s? Is there any specific difficulties on defining 16s or 8s directly?
Second, why do you name the function fcn32_blank? Does it mean that this model is "blank" in terms of that it can not be used directly?
Thank you very much

hi @CreatCodeBuild
The main reason I wrote the function into separated steps is mostly that I wanted to compare the relative performance (as in the jupyter notebook, at the end) as the different model configuration.
Also, the model is not so easy to build from the original paper, I mean the architecture when you are not an expert in this is not crystal clear. so to get to my goal I actually iterated from the simplest one to the finest one.
The name "_blank" indeed indicates that it is a "utility/intermediate" function to build more accurate model.
The thing is that it is not simply a sequence : FCN32=>FCN16=>FCN8. That is why you have the 2 functions "32_blank to 16" and "32_blank to 8" in my code, rather than a sequential composition.
The main reason it is this way is because of the dimension/resolution that changes. Once you are at the end of 32 (not 32_blank) you cannot go directly to 8 or 16.
If it helps you can compare the diagrams for 16 and 8 in the blog :
<EMAIL_ADDRESS>This will help you see the part that is common to the 2 models and that I "factorized" into 32_blank.

I spent some time to search how exactly "deconvolution" is computed. The so-called "deconvolution" is not an actual mathematical deconvolution. It actually a transposed convolution operation, which is just normal convolution computation with some tricks. That I finally understand how strides(subsampling), kernel size affects the final result's size.
More surprisingly, the "convolutional layer" actually does correlation instead of convolution if we use the computer vision terms.
After carefully studying your code and your medium post, I understood why are you writing your code this way. It makes a lot of sense.
Since I am using Keras 2, I will need to change the code a little bit. (Keras just loves to break API)
I wonder what you mean by "I actually iterated from the simplest one to the finest one". If you are to load weights from the matlab toolkit, don't you have to define the network exactly the same as matlab toolkit does?

Keras 2 : indeed I wrote most of my Keras scripts using Keras 1 and migrating my code has proven more time consuming that I would have liked to the FCN is still Keras 1. If you have time to explain me when you are done with Keras 2 what needs to be modified that would be great. If you dont time I fully understand of course.
About your question :

If you are to load weights from the matlab toolkit, don't you have to define the network exactly the same as matlab toolkit does?

The Matlab files for weights are available for both 16s and 8s versions, so I first coded 16s using these weights and then I implemented 8s with the other weight file.
Actually I found that the .mat files from vlfeat (http://www.vlfeat.org/matconvnet/pretrained/) are also useful to help clarifying the model structure as you can read the shapes of all the weights to figure out the shape of your layers !
One last thing, that may help you a lot with Keras 2, Andrew Hundt posted this link in another chat yesterday :
https://github.com/farizrahman4u/keras-contrib/blob/master/keras_contrib/applications/densenet.py#L175


I get "Insecure update error!" each time I run the app (that I build)

I want to make minor modifications to the caffeinate command (to change it to -s) so I'm building my own version of the app.  I don't have a developer account so I turned off code signing, installed Carthage and did the carthage bootstrap.  When I run the built app, I get the "Insecure update error!" pop up.
How to make this go away?
Thanks.

Hi! This might be related to the automatic update check on launch.
Try disabling the automatic update by changing the key SUEnableAutomaticChecks in the Info.plist to NO.

Tried that.  Still happens.

This error might be related to the missing app transport security Info.plist settings in version v1.3.0. Can you check it again with the current master (>= 1.3.1)?


V1.4 tests

Student and group statistics test
closes #247

Codecov Report

Merging #275 (5b70085) into master (cf3d086) will increase coverage by 1.81%.
The diff coverage is 50.00%.

@@             Coverage Diff              @@
##             master     #275      +/-   ##
============================================
+ Coverage     74.29%   76.10%   +1.81%
- Complexity      925      934       +9
============================================
  Files           105      105
  Lines          2925     2921       -4
  Branches        398      397       -1
============================================
+ Hits           2173     2223      +50
+ Misses          648      591      -57
- Partials        104      107       +3

Impacted Files
Coverage Δ

...a/seedu/address/model/student/GroupStatistics.java
82.22% <ø> (+82.22%)
:arrow_up:

...main/java/seedu/address/model/student/Student.java
97.01% <ø> (+7.46%)
:arrow_up:

...seedu/address/model/student/StudentStatistics.java
85.71% <ø> (+42.85%)
:arrow_up:

...ain/java/seedu/address/commons/util/ChartUtil.java
47.95% <50.00%> (+0.90%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cf3d086...5b70085. Read the comment docs.


add license info from cmudict

CMUdict has a 2-clause BSD license which requires reproducing a copyright notice and disclaimer. The license itself is included in the version of CMUdict included in the source distribution, which meets the letter of the license for the purposes of this repository. The version of the package distributed on PyPI isn't technically a binary, so condition (2) in the license does not obtain, but I nevertheless think it might be good form to reproduce the required license in the documentation as well.

obviated by dependency on cmudict package.


Implement more beta api endpoints

This pull request adds more beta api endpoints to the library.
Browse
Browses the crunchyroll catalog filtered by the specified options and returns all found series and movies within the given limit.
// Filters for dubbed action and fantasy series, sorted by popularity
options := crunchyroll.BrowseOptions{
    Categories: []string{"action", "fantasy"},
    IsDubbed:   true,
    Sort:       crunchyroll.POPULARITY,
    Type:       crunchyroll.SERIES,
}

// Returns 5 entries filtered by the options
series, movies, err := crunchy.Browse(options, 5)

// Filters for slice of life series and movies from the winter 2022 simulcast, sorted alphabetically
options := crunchyroll.BrowseOptions{
    Categories: []string{"slice of life"},
    Simulcast:  "winter-2022",
    Sort:       crunchyroll.ALPHABETICAL,
}

// Returns 3 entries filtered by the options
series, movies, err := crunchy.Browse(options, 3)

Returns arrays of *crunchyroll.Series and / or *crunchroll.Movie.
Categories
Returns all available categories and possible subcategories.
// Don't include subcategories
categories, err := crunchy.Categories(false)

// Include subcategories
categories, err := crunchy.Categories(true)

Returns an array of *crunchyroll.Category.
Simulcasts
Returns all available simulcast seasons for the current locale.
simulcasts, err := crunchy.Simulcasts()

Returns an array of *crunchyroll.Simulcast.
News
Returns the top and latest news from crunchyroll for the current locale within the given limits.
// Returns 2 top and 5 latest news
top, latest, err := crunchy.News(2, 5)

Returns two arrays of *crunchyroll.News.
Recommendations
Returns series and movie recommendations from crunchyroll based on the currently logged in account within the given limit.
// Returns 10 series or movies
series, movies, err := crunchy.Recommendations(10)

Returns arrays of *crunchyroll.Series and / or *crunchroll.Movie.
UpNext
Returns the episodes that are up next based on the currently logged in account within the given limit.
// Returns 5 episodes
episodes, err := crunchy.UpNext(5)

Returns an array of *crunchyroll.Episode.
SimilarTo
Returns similar series and movies according to crunchyroll to the one specified by id within the given limit.
// Returns 5 series or movies similar to the series with id GRJ0J828Y
series, movies, err := crunchy.SimilarTo("GRJ0J828Y", 5)

Returns arrays of *crunchyroll.Series and / or *crunchroll.Movie.
WatchHistory
Returns the history of watched episodes based on the currently logged in account from the given page with the given size.
// Returns 10 episodes from the first page of the history
episodes, err := crunchy.WatchHistory(1, 10)

Returns an array of *crunchyroll.HistoryEpisode.
Account
Returns information about the currently logged in crunchyroll account.
account, err := crunchy.Account()

Returns *crunchyroll.Account.

Unexpected side effects were caused lul


Proposal to return T instead or Response(of T)

PR to use for discussion...

Architecture Board Discussion
Comments

(BT) In the headers section, can you call it session?

(JS) Some of them are per-account

(KC/JS) Response carries the response stream all the way up the chain
(JR) There is an issue around what happens when the connection goes down during read (deserialization happens in the pipeline, but could be postponed to after the pipeline)

(JS) This is an orthogonal problem that will be there irrespective of the choice

(KC) The biggest issue with Response is it makes the signature of the API looks really busy
(AH) There is a use case that suggests the status code needs to be available, but doesn't need to be in the main flow
(JR) In the case of returning T, you don't have a way to get the status code.
(AH) Can you create a CachingPolicy?  (Maybe, yes in Node, no in .NET)
(BT) I can justify why caching SHOULD go in the pipeline and why the pipeline CAN be complex.  (ServiceWorker) - KC disagrees
(KC) We are concerned about differences in success status codes, but headers are important

Options (really):

You can't
Response
Lift to properties of T (T.headers, etc.)
Response property on T
Optional callback (in **kwargs) that takes response
GetMetadataFor(T)
out param via mutating options object
ThreadContext
Message as first-class entity

Open Issues from discussion:

Pushing streams up the stack to the caller / consumer of the response (KC / JR / JS)

Agreed Principles:

The HTTP response (status code and headers) is available, but not in your face

Action Items:

(Language Architects) Determine what is required to support returning T
(Language Architects) Design a UX study to see whether Response is an issue

Re-review on 4/1


Reacting to removal of ILoggerFactory.MinimumLevel

Reacting to https://github.com/aspnet/Logging/pull/308
Tested locally.

Hi @JunTaoLuo, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

:shipit:


Game Token is big problem GF Update

The code block created in auth/iovation and sent to auth/thin/codes to enter the game is created from https://gameforge.com/tra/game1.js and is checked and changed every time you log in. Fiddler, I got these results. How can we solve this problem, there is no protection for now but when they are active it will be a big problem. When the code is not generated, the server returns message: 'Not allowed to create code'

Hi, the request to auth/iovation is not needed at all to log in that's why i'm not sending it. Gfless client works correctly and if you're interested in doing something similar you should check the sources I used to make it which explains very deeply all you need to know:
https://github.com/morsisko/NosTale-Auth
https://github.com/morsisko/NosTale-Gfless

I came across this while listening to the Gameforge client. There is no need for such a scenario for Nostale at the moment, but it sends these codes when entering. It has come to my attention that this system may be active in the near future, I'm investigating what could happen in this scenario. I'll look into the sources, thanks


Windows 32 bit build

Hello.
I have problems to build Ninja on win 32 bit.
If I try to use Python configure.py, it throws error.
If I try to build ninja by cmake and use MinGW, I get error again.
First is Python, second is MinGW.
https://imgur.com/a/AZHwWzw
Should you help me, how can I build ninja for 32 bit?
Appreciate it a lot and thank you for any help

You should use mingw-w64 (don't worry about the w64, there's a 32 bit version, too) version of MinGW. You can get it via MSYS2 for example.

@drkousek FYI I was able to compile 32bit version with msvc 2019 and python 3.10 under win 8.1 32bit


Feature/third task corrections

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

26 of 26 (100.0%)  changed or added relevant lines in 5 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1040

Relevant Lines:
1040

💛  - Coveralls