From 0d8decfe6690de0a253a91fd5eb83ffb3ce09394 Mon Sep 17 00:00:00 2001 From: Panda Date: Thu, 6 Feb 2020 14:34:20 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E3=80=9004=E3=80=91SSRF=20=E6=BC=8F?= =?UTF-8?q?=E6=B4=9E=E5=8E=9F=E7=90=86=E4=B8=8E=E5=AE=9E=E9=99=85=E6=A1=88?= =?UTF-8?q?=E4=BE=8B=E4=BB=8B=E7=BB=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【04】SSRF 漏洞原理与实际案例介绍 --- .../.circleci/circle-v1.yml" | 40 + .../hawtio-hawtio-2.5.0/.circleci/config.yml" | 22 + .../hawtio-hawtio-2.5.0/.editorconfig" | 11 + .../hawtio-hawtio-2.5.0/.gitignore" | 24 + .../hawtio-hawtio-2.5.0/BUILDING.md" | 272 + .../hawtio-hawtio-2.5.0/CHANGES.md" | 93 + .../hawtio-hawtio-2.5.0/CONTRIBUTING.md" | 62 + .../hawtio-hawtio-2.5.0/DEVELOPERS.md" | 189 + .../hawtio-hawtio-2.5.0/FAQ.md" | 222 + .../hawtio-hawtio-2.5.0/LICENSE.txt" | 202 + .../hawtio-hawtio-2.5.0/README.md" | 33 + .../hawtio-hawtio-2.5.0/bin/release" | 47 + .../hawtio-hawtio-2.5.0/bom/pom.xml" | 111 + .../examples/keycloak-integration/README.md" | 171 + .../keycloak-bearer.json" | 9 + .../keycloak-direct-access.json" | 9 + .../keycloak-hawtio.json" | 5 + .../examples/keycloak-integration/login.conf" | 4 + .../keycloak-integration/run-hawtio.sh" | 27 + .../springboot-1-authentication/README.md" | 11 + .../springboot-1-authentication/pom.xml" | 103 + .../example/spring/boot/HelloController.java" | 16 + .../spring/boot/PropertyFileLoginModule.java" | 108 + ...ampleAuthenticationSpringBootService.java" | 71 + .../main/resources/application.properties" | 10 + .../src/main/resources/banner.txt" | 9 + .../src/main/resources/jolokia-access.xml" | 114 + .../src/main/resources/login.conf" | 3 + .../src/main/resources/realm.properties" | 7 + .../sample-plugin/html/sample-plugin.html" | 8 + .../app/sample-plugin/js/sample-plugin.js" | 41 + .../examples/springboot-1/README.md" | 32 + .../examples/springboot-1/pom.xml" | 127 + .../example/spring/boot/HelloController.java" | 16 + .../spring/boot/SampleCamelRouter.java" | 17 + .../spring/boot/SampleSpringBootService.java" | 41 + .../main/resources/application.properties" | 15 + .../src/main/resources/banner.txt" | 8 + .../sample-plugin/html/sample-plugin.html" | 8 + .../app/sample-plugin/js/sample-plugin.js" | 41 + .../springboot-authentication/README.md" | 11 + .../springboot-authentication/pom.xml" | 103 + .../example/spring/boot/HelloController.java" | 16 + .../spring/boot/PropertyFileLoginModule.java" | 108 + ...ampleAuthenticationSpringBootService.java" | 71 + .../main/resources/application.properties" | 9 + .../src/main/resources/banner.txt" | 9 + .../src/main/resources/jolokia-access.xml" | 114 + .../src/main/resources/login.conf" | 3 + .../src/main/resources/realm.properties" | 7 + .../sample-plugin/html/sample-plugin.html" | 8 + .../app/sample-plugin/js/sample-plugin.js" | 41 + .../examples/springboot/README.md" | 50 + .../examples/springboot/jmx-exporter.yml" | 6 + .../examples/springboot/pom.xml" | 157 + .../example/spring/boot/HelloController.java" | 16 + .../spring/boot/SampleCamelRouter.java" | 17 + .../spring/boot/SampleSpringBootService.java" | 34 + .../main/resources/application.properties" | 12 + .../springboot/src/main/resources/banner.txt" | 8 + .../sample-plugin/html/sample-plugin.html" | 8 + .../app/sample-plugin/js/sample-plugin.js" | 41 + .../hawtio-hawtio-2.5.0/freenode.txt" | 2 + .../hawtio-hawtio-2.5.0/hawtio-app/README.md" | 21 + .../hawtio-hawtio-2.5.0/hawtio-app/pom.xml" | 71 + .../src/main/assembly/assembly.xml" | 52 + .../src/main/java/io/hawt/app/App.java" | 160 + .../hawtio-base/.gitignore" | 4 + .../hawtio-hawtio-2.5.0/hawtio-base/pom.xml" | 133 + .../HawtioBlueprintContextListener.java" | 145 + .../src/main/resources/blueprint.properties" | 5 + .../src/main/resources/log4j.properties" | 14 + .../src/main/webapp/WEB-INF/web.xml" | 301 ++ .../hawtio-console-assembly/.editorconfig" | 8 + .../hawtio-console-assembly/.gitignore" | 6 + .../hawtio-console-assembly/README.md" | 42 + .../hawtio-console-assembly/app/package.json" | 29 + .../hawtio-console-assembly/app/src/app.less" | 3 + .../hawtio-console-assembly/app/src/app.ts" | 39 + .../app/src/hawtconfig.json" | 15 + .../app/src/head-partial.html" | 133 + .../app/src/img/favicon.ico" | Bin 0 -> 1150 bytes .../app/src/index.html" | 10 + .../app/src/login.html" | 10 + .../app/src/login/keycloak-login.ts" | 68 + .../app/src/login/login.component.html" | 42 + .../app/src/login/login.component.ts" | 52 + .../app/src/login/login.config.ts" | 56 + .../app/src/login/login.less" | 12 + .../app/src/login/login.module.ts" | 14 + .../hawtio-console-assembly/app/yarn.lock" | 746 +++ .../hawtio-console-assembly/gulpfile.js" | 294 + .../hawtio-console-assembly/package.json" | 51 + .../hawtio-console-assembly/pom.xml" | 107 + .../hawtio-console-assembly/tsconfig.json" | 15 + .../tslint-rules/licenseHeaderRule.js" | 28 + .../hawtio-console-assembly/tslint.json" | 48 + .../hawtio-console-assembly/yarn.lock" | 4811 +++++++++++++++++ .../hawtio-hawtio-2.5.0/hawtio-core/pom.xml" | 45 + .../java/io/hawt/config/ConfigFacade.java" | 108 + .../io/hawt/config/ConfigFacadeMBean.java" | 16 + .../main/java/io/hawt/config/URLHandler.java" | 31 + .../OSGI-INF/blueprint/blueprint.xml" | 17 + .../io/hawt/config/ConfigFacadeTest.java" | 47 + .../src/test/resources/log4j.properties" | 18 + .../hawtio-default/.gitignore" | 4 + .../hawtio-default/pom.xml" | 173 + .../OSGI-INF/blueprint/blueprint.xml" | 15 + .../src/main/resources/blueprint.properties" | 5 + .../src/main/resources/log4j.properties" | 14 + .../src/main/webapp/.gitignore" | 0 .../hawtio-embedded/.gitignore" | 1 + .../hawtio-embedded/pom.xml" | 98 + .../src/main/java/io/hawt/embedded/Main.java" | 324 ++ .../main/java/io/hawt/embedded/Options.java" | 351 ++ .../test/java/io/hawt/embedded/MainTest.java" | 27 + .../src/test/resources/log4j.properties" | 16 + .../hawtio-hawtio-2.5.0/hawtio-ide/pom.xml" | 45 + .../src/main/java/io/hawt/ide/IdeFacade.java" | 187 + .../java/io/hawt/ide/IdeFacadeMBean.java" | 25 + .../OSGI-INF/blueprint/blueprint.xml" | 18 + .../test/java/io/hawt/ide/IdeFacadeTest.java" | 47 + .../src/test/resources/log4j.properties" | 18 + .../hawtio-local-jvm-mbean/pom.xml" | 87 + .../main/java/io/hawt/jvm/local/JVMList.java" | 287 + .../java/io/hawt/jvm/local/JVMListMBean.java" | 17 + .../io/hawt/jvm/local/VMDescriptorDTO.java" | 85 + .../java/io/hawt/jvm/local/JVMListTest.java" | 110 + .../src/test/resources/log4j.properties" | 14 + .../hawtio-log-osgi/pom.xml" | 88 + .../java/io/hawt/log/osgi/Activator.java" | 35 + .../main/java/io/hawt/log/osgi/LogQuery.java" | 87 + .../io/hawt/log/osgi/LogQueryCallback.java" | 7 + .../java/io/hawt/log/osgi/LogQueryMBean.java" | 11 + .../src/main/java/io/hawt/log/osgi/Logs.java" | 159 + .../io/hawt/log/osgi/MavenCoordinates.java" | 110 + .../hawtio-hawtio-2.5.0/hawtio-log/pom.xml" | 81 + .../src/main/java/io/hawt/log/LogEvent.java" | 226 + .../src/main/java/io/hawt/log/LogFilter.java" | 76 + .../main/java/io/hawt/log/LogResults.java" | 55 + .../io/hawt/log/log4j/Log4jLogQuery.java" | 398 ++ .../hawt/log/log4j/Log4jLogQueryMBean.java" | 19 + .../io/hawt/log/log4j/MavenCoordHelper.java" | 116 + .../hawt/log/log4j/ThrowableFormatter.java" | 155 + .../java/io/hawt/log/rest/LogRequest.java" | 114 + .../java/io/hawt/log/rest/LogResponse.java" | 25 + .../io/hawt/log/rest/LogResponseHit.java" | 24 + .../io/hawt/log/rest/LogResponseHits.java" | 27 + .../io/hawt/log/support/LogQuerySupport.java" | 314 ++ .../log/support/LogQuerySupportMBean.java" | 83 + .../java/io/hawt/log/support/LruList.java" | 87 + .../hawt/log/support/MavenCoordinates.java" | 56 + .../java/io/hawt/log/support/Objects.java" | 56 + .../java/io/hawt/log/support/Predicate.java" | 10 + .../io/hawt/log/log4j/Log4jLogQueryTest.java" | 27 + .../src/test/resources/log4j.properties" | 16 + .../hawtio-system/pom.xml" | 117 + .../java/io/hawt/HawtioContextListener.java" | 82 + .../src/main/java/io/hawt/jmx/About.java" | 135 + .../main/java/io/hawt/jmx/AboutMBean.java" | 7 + .../src/main/java/io/hawt/jmx/FileDTO.java" | 43 + .../main/java/io/hawt/jmx/JMXSecurity.java" | 63 + .../java/io/hawt/jmx/JMXSecurityMBean.java" | 134 + .../java/io/hawt/jmx/JmxTreeWatcher.java" | 114 + .../io/hawt/jmx/JmxTreeWatcherMBean.java" | 7 + .../java/io/hawt/jmx/PluginRegistry.java" | 75 + .../io/hawt/jmx/PluginRegistryMBean.java" | 8 + .../main/java/io/hawt/jmx/QuartzFacade.java" | 172 + .../java/io/hawt/jmx/QuartzFacadeMBean.java" | 25 + .../main/java/io/hawt/jmx/RBACRegistry.java" | 318 ++ .../java/io/hawt/jmx/RBACRegistryMBean.java" | 42 + .../java/io/hawt/osgi/OsgiMBeanDetector.java" | 60 + .../java/io/hawt/system/AuthHelpers.java" | 56 + .../main/java/io/hawt/system/AuthInfo.java" | 17 + .../io/hawt/system/AuthenticateResult.java" | 10 + .../java/io/hawt/system/Authenticator.java" | 321 ++ .../java/io/hawt/system/ConfigManager.java" | 105 + .../java/io/hawt/system/HawtioProperty.java" | 23 + .../main/java/io/hawt/system/JmxHelpers.java" | 26 + .../java/io/hawt/system/ProxyWhitelist.java" | 170 + .../io/hawt/system/RBACMBeanInvoker.java" | 274 + .../java/io/hawt/system/RBACRestrictor.java" | 129 + .../java/io/hawt/web/ForbiddenReason.java" | 6 + .../java/io/hawt/web/ServletHelpers.java" | 209 + .../auth/AuthenticationConfiguration.java" | 217 + .../AuthenticationContainerDiscovery.java" | 23 + .../hawt/web/auth/AuthenticationFilter.java" | 115 + .../hawt/web/auth/LoginRedirectFilter.java" | 69 + .../java/io/hawt/web/auth/LoginServlet.java" | 176 + .../java/io/hawt/web/auth/LogoutServlet.java" | 52 + .../java/io/hawt/web/auth/Redirector.java" | 36 + .../io/hawt/web/auth/RelativeRequestUri.java" | 148 + .../hawt/web/auth/SessionExpiryFilter.java" | 171 + .../java/io/hawt/web/auth/UserServlet.java" | 72 + .../web/auth/keycloak/KeycloakServlet.java" | 182 + .../auth/keycloak/KeycloakUserServlet.java" | 54 + .../hawt/web/filters/BaseTagHrefFilter.java" | 137 + .../java/io/hawt/web/filters/CORSFilter.java" | 29 + .../hawt/web/filters/CacheHeadersFilter.java" | 89 + .../filters/ContentSecurityPolicyFilter.java" | 70 + .../hawt/web/filters/HttpHeaderFilter.java" | 46 + .../web/filters/PublicKeyPinningFilter.java" | 39 + .../StrictTransportSecurityFilter.java" | 39 + .../filters/XContentTypeOptionsFilter.java" | 15 + .../web/filters/XFrameOptionsFilter.java" | 15 + .../web/filters/XXSSProtectionFilter.java" | 15 + .../web/kubernetes/DefaultProxyAddress.java" | 57 + .../OpenShiftProtocolSocketFactory.java" | 37 + .../io/hawt/web/kubernetes/PodServlet.java" | 90 + .../hawt/web/kubernetes/ServiceResolver.java" | 80 + .../hawt/web/kubernetes/ServiceServlet.java" | 77 + .../java/io/hawt/web/proxy/ProxyAddress.java" | 30 + .../java/io/hawt/web/proxy/ProxyDetails.java" | 266 + .../java/io/hawt/web/proxy/ProxyServlet.java" | 527 ++ .../JolokiaConfiguredAgentServlet.java" | 133 + .../servlets/SpringBatchConfigServlet.java" | 120 + ...mcatAuthenticationContainerDiscovery.java" | 72 + .../TomcatLoginContextConfiguration.java" | 34 + .../io/hawt/web/tomcat/TomcatPrincipal.java" | 21 + .../TomcatUserDatabaseLoginContext.java" | 232 + .../src/main/resources/META-INF/detectors" | 1 + .../java/io/hawt/jmx/JmxTreeWatcherTest.java" | 41 + .../java/io/hawt/jmx/RBACRegistryTest.java" | 40 + .../io/hawt/system/ConfigManagerTest.java" | 168 + .../io/hawt/system/RBACRestrictorTest.java" | 137 + .../io/hawt/web/RelativeRequestUriTest.java" | 93 + .../java/io/hawt/web/ServletHelpersTest.java" | 26 + .../web/auth/LoginRedirectFilterTest.java" | 47 + .../io/hawt/web/auth/RedirectorTest.java" | 55 + .../web/filters/BaseTagHrefFilterTest.java" | 113 + .../ContentSecurityPolicyFilterTest.java" | 85 + .../io/hawt/web/proxy/ProxyDetailsTest.java" | 283 + .../resources/io/hawt/web/filters/index.html" | 11 + .../resources/keycloak-hawtio-client.json" | 5 + .../src/test/resources/log4j.properties" | 19 + .../hawtio-hawtio-2.5.0/hawtio-util/pom.xml" | 36 + .../main/java/io/hawt/util/Closeables.java" | 20 + .../main/java/io/hawt/util/FileFilters.java" | 101 + .../main/java/io/hawt/util/FileLocker.java" | 45 + .../src/main/java/io/hawt/util/Files.java" | 186 + .../src/main/java/io/hawt/util/Function.java" | 11 + .../src/main/java/io/hawt/util/Hosts.java" | 174 + .../src/main/java/io/hawt/util/IOHelper.java" | 149 + .../main/java/io/hawt/util/MBeanSupport.java" | 80 + .../src/main/java/io/hawt/util/Objects.java" | 120 + .../main/java/io/hawt/util/Predicate.java" | 25 + .../java/io/hawt/util/ReflectionHelper.java" | 92 + .../src/main/java/io/hawt/util/Strings.java" | 135 + .../main/java/io/hawt/util/XmlHelper.java" | 53 + .../io/hawt/util/XmlNamespaceFinder.java" | 83 + .../src/main/java/io/hawt/util/Zips.java" | 137 + .../util/introspect/ClassLoaderProvider.java" | 29 + .../introspect/ClassLoaderProviders.java" | 75 + .../util/introspect/support/CacheValue.java" | 35 + .../introspect/support/ClassResource.java" | 40 + .../introspect/support/ClassScanner.java" | 560 ++ .../util/introspect/support/Packages.java" | 112 + .../test/java/io/hawt/util/HostsTest.java" | 51 + .../test/java/io/hawt/util/StringsTest.java" | 165 + .../src/test/resources/log4j.properties" | 18 + .../hawtio-hawtio-2.5.0/hawtio-war/README.md" | 17 + .../hawtio-war/etc/login.conf" | 4 + .../hawtio-war/etc/security.cli" | 13 + .../hawtio-war/etc/users.properties" | 1 + .../hawtio-hawtio-2.5.0/hawtio-war/pom.xml" | 255 + .../HawtioBlueprintContextListener.java" | 145 + .../src/main/resources/blueprint.properties" | 5 + .../src/main/resources/log4j.properties" | 7 + .../src/main/webapp/WEB-INF/web.xml" | 304 ++ .../hawtio-hawtio-2.5.0/hawtio.properties" | 65 + .../platforms/hawtio-osgi-jmx/pom.xml" | 115 + .../java/io/hawt/osgi/jmx/Activator.java" | 31 + .../java/io/hawt/osgi/jmx/ConfigAdmin.java" | 59 + .../io/hawt/osgi/jmx/ConfigAdminMXBean.java" | 12 + .../java/io/hawt/osgi/jmx/OSGiTools.java" | 69 + .../io/hawt/osgi/jmx/OSGiToolsMXBean.java" | 22 + .../java/io/hawt/osgi/jmx/RBACDecorator.java" | 611 +++ .../io/hawt/osgi/jmx/RBACDecoratorMBean.java" | 55 + .../io/hawt/osgi/jmx/ConfigAdminTest.java" | 42 + .../java/io/hawt/osgi/jmx/OSGiToolsTest.java" | 90 + .../io/hawt/osgi/jmx/RBACDecoratorTest.java" | 215 + .../osgi/jmx/RBACDecoratorTest-input.json" | 286 + .../src/test/resources/log4j.properties" | 7 + .../platforms/karaf/pom.xml" | 110 + .../karaf/src/main/resources/features.xml" | 38 + .../platforms/springboot-1/pom.xml" | 153 + .../io/hawt/springboot/AbstractMvcIT.java" | 93 + .../springboot/DefaultSettingsMvcIT.java" | 29 + .../HawtioAuthenticationIsDisabledMvcIT.java" | 500 ++ .../springboot/HawtioConfigurationIT.java" | 98 + .../java/io/hawt/springboot/HawtPlugin.java" | 56 + .../springboot/HawtioAutoConfiguration.java" | 60 + .../hawt/springboot/HawtioConfiguration.java" | 349 ++ .../io/hawt/springboot/HawtioEndpoint.java" | 83 + .../io/hawt/springboot/HawtioProperties.java" | 20 + .../io/hawt/springboot/PluginService.java" | 22 + .../SpringHawtioContextListener.java" | 27 + .../main/resources/META-INF/spring.factories" | 5 + .../hawt/springboot/application.properties" | 3 + .../hawt/springboot/HawtioEndpointTest.java" | 44 + .../SpringHawtioContextListenerTest.java" | 30 + .../platforms/springboot/pom.xml" | 115 + ...wtioSpringBootCustomManagementPortIT.java" | 124 + .../HawtioSpringBootEndpointIT.java" | 400 ++ .../HawtioSpringBootExposedEndpointIT.java" | 48 + .../HawtioSpringBootTestCommon.java" | 80 + .../HawtioSpringBootTestSupport.java" | 279 + .../resources/logback-test.xml" | 7 + .../ConditionalOnExposedEndpoint.java" | 15 + .../springboot/EndpointPathResolver.java" | 67 + .../io/hawt/springboot/ExposedEndpoint.java" | 34 + .../java/io/hawt/springboot/HawtPlugin.java" | 56 + .../io/hawt/springboot/HawtioEndpoint.java" | 78 + .../HawtioEndpointAutoConfiguration.java" | 67 + .../HawtioManagementConfiguration.java" | 310 ++ .../io/hawt/springboot/HawtioProperties.java" | 20 + .../SpringHawtioContextListener.java" | 27 + .../main/resources/META-INF/spring.factories" | 5 + .../hawt/springboot/application.properties" | 3 + .../hawt/springboot/HawtioEndpointTest.java" | 44 + .../SpringHawtioContextListenerTest.java" | 30 + .../platforms/wildfly/.gitignore" | 4 + .../platforms/wildfly/compatibility.md" | 8 + .../platforms/wildfly/configuration.md" | 23 + .../platforms/wildfly/pom.xml" | 78 + .../src/main/webapp/META-INF/beans.xml" | 10 + .../src/main/webapp/WEB-INF/jboss-web.xml" | 4 + .../wildfly/src/main/webapp/WEB-INF/web.xml" | 271 + .../hawtio-hawtio-2.5.0/pom.xml" | 337 ++ .../tooling/hawtio-junit/pom.xml" | 43 + .../io/hawt/junit/DefaultJUnitService.java" | 200 + .../main/java/io/hawt/junit/FailureDTO.java" | 98 + .../java/io/hawt/junit/InProgressDTO.java" | 75 + .../io/hawt/junit/InProgressRunListener.java" | 68 + .../main/java/io/hawt/junit/JUnitFacade.java" | 88 + .../java/io/hawt/junit/JUnitFacadeMBean.java" | 15 + .../java/io/hawt/junit/JUnitService.java" | 19 + .../main/java/io/hawt/junit/ResultDTO.java" | 110 + .../java/io/hawt/junit/StackTraceDTO.java" | 88 + .../java/io/hawt/junit/ThrowableDTO.java" | 91 + .../OSGI-INF/blueprint/blueprint.xml" | 21 + .../src/test/resources/log4j.properties" | 18 + .../tooling/hawtio-maven-plugin/pom.xml" | 99 + .../main/java/io/hawt/maven/BaseMojo.java" | 355 ++ .../main/java/io/hawt/maven/BaseRunMojo.java" | 220 + .../io/hawt/maven/CamelBlueprintMojo.java" | 133 + .../java/io/hawt/maven/CamelCdiMojo.java" | 101 + .../main/java/io/hawt/maven/CamelMojo.java" | 100 + .../io/hawt/maven/DefaultMojoLifecycle.java" | 116 + .../java/io/hawt/maven/MojoLifecycle.java" | 8 + .../src/main/java/io/hawt/maven/RunMojo.java" | 20 + .../java/io/hawt/maven/SpringBootMojo.java" | 86 + .../main/java/io/hawt/maven/SpringMojo.java" | 81 + .../main/java/io/hawt/maven/TestMojo.java" | 97 + .../java/io/hawt/maven/main/SpringMain.java" | 269 + .../hawt/maven/util/IsolatedThreadGroup.java" | 36 + .../OSGI-INF/blueprint/blueprint.xml" | 9 + .../img/1.png" | Bin 0 -> 108777 bytes .../img/10.png" | Bin 0 -> 41322 bytes .../img/11.png" | Bin 0 -> 120717 bytes .../img/12.png" | Bin 0 -> 1528540 bytes .../img/13.png" | Bin 0 -> 209833 bytes .../img/14.png" | Bin 0 -> 153293 bytes .../img/2.png" | Bin 0 -> 152760 bytes .../img/3.png" | Bin 0 -> 247343 bytes .../img/4.png" | Bin 0 -> 71392 bytes .../img/5.png" | Bin 0 -> 970066 bytes .../img/6.png" | Bin 0 -> 120929 bytes .../img/7.png" | Bin 0 -> 1948165 bytes .../img/8.png" | Bin 0 -> 593831 bytes .../img/9.png" | Bin 0 -> 842726 bytes .../ssrf/.DS_Store" | Bin 0 -> 6148 bytes .../ssrf/.classpath" | 24 + .../ssrf/.project" | 36 + .../ssrf/.settings/.jsdtscope" | 12 + .../.settings/org.eclipse.jdt.core.prefs" | 7 + .../org.eclipse.wst.common.component" | 8 + ...eclipse.wst.common.project.facet.core.xml" | 11 + ...g.eclipse.wst.jsdt.ui.superType.container" | 1 + .../org.eclipse.wst.jsdt.ui.superType.name" | 1 + .../ssrf/WebRoot/META-INF/MANIFEST.MF" | 3 + .../ssrf/WebRoot/WEB-INF/web.xml" | 42 + .../ssrf/WebRoot/index.jsp" | 26 + .../ssrf/src/.DS_Store" | Bin 0 -> 6148 bytes .../ssrf/src/com/.DS_Store" | Bin 0 -> 6148 bytes .../src/com/sec/servlet/ssrfFileDown.java" | 50 + .../src/com/sec/servlet/ssrfFileRead.java" | 54 + .../ssrf/src/com/sec/servlet/ssrfTest.java" | 54 + ...10\344\276\213\344\273\213\347\273\215.md" | 390 ++ 389 files changed, 35533 insertions(+) create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.circleci/circle-v1.yml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.circleci/config.yml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.editorconfig" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.gitignore" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/BUILDING.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/CHANGES.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/CONTRIBUTING.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/DEVELOPERS.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/FAQ.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/LICENSE.txt" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/README.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/bin/release" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/bom/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/README.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-bearer.json" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-direct-access.json" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-hawtio.json" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/login.conf" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/run-hawtio.sh" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/README.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/HelloController.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/PropertyFileLoginModule.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/SampleAuthenticationSpringBootService.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/application.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/banner.txt" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/jolokia-access.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/login.conf" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/realm.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/webapp/app/sample-plugin/html/sample-plugin.html" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/webapp/app/sample-plugin/js/sample-plugin.js" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/README.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/HelloController.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/SampleCamelRouter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/SampleSpringBootService.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/resources/application.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/resources/banner.txt" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/webapp/app/sample-plugin/html/sample-plugin.html" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/webapp/app/sample-plugin/js/sample-plugin.js" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/README.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/HelloController.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/PropertyFileLoginModule.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/SampleAuthenticationSpringBootService.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/application.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/banner.txt" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/jolokia-access.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/login.conf" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/realm.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/webapp/app/sample-plugin/html/sample-plugin.html" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/webapp/app/sample-plugin/js/sample-plugin.js" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/README.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/jmx-exporter.yml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/HelloController.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/SampleCamelRouter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/SampleSpringBootService.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/resources/application.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/resources/banner.txt" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/webapp/app/sample-plugin/html/sample-plugin.html" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/webapp/app/sample-plugin/js/sample-plugin.js" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/freenode.txt" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/README.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/src/main/assembly/assembly.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/src/main/java/io/hawt/app/App.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/.gitignore" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/java/io/hawt/blueprint/HawtioBlueprintContextListener.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/resources/blueprint.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/webapp/WEB-INF/web.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/.editorconfig" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/.gitignore" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/README.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/package.json" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/app.less" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/app.ts" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/hawtconfig.json" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/head-partial.html" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/img/favicon.ico" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/index.html" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login.html" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/keycloak-login.ts" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.component.html" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.component.ts" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.config.ts" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.less" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.module.ts" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/yarn.lock" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/gulpfile.js" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/package.json" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tsconfig.json" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tslint-rules/licenseHeaderRule.js" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tslint.json" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/yarn.lock" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/ConfigFacade.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/ConfigFacadeMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/URLHandler.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/test/java/io/hawt/config/ConfigFacadeTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/test/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/.gitignore" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/OSGI-INF/blueprint/blueprint.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/blueprint.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/webapp/.gitignore" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/.gitignore" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/src/main/java/io/hawt/embedded/Main.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/src/main/java/io/hawt/embedded/Options.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/src/test/java/io/hawt/embedded/MainTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/src/test/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-ide/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-ide/src/main/java/io/hawt/ide/IdeFacade.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-ide/src/main/java/io/hawt/ide/IdeFacadeMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-ide/src/main/resources/OSGI-INF/blueprint/blueprint.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-ide/src/test/java/io/hawt/ide/IdeFacadeTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-ide/src/test/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-local-jvm-mbean/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-local-jvm-mbean/src/main/java/io/hawt/jvm/local/JVMList.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-local-jvm-mbean/src/main/java/io/hawt/jvm/local/JVMListMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-local-jvm-mbean/src/main/java/io/hawt/jvm/local/VMDescriptorDTO.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-local-jvm-mbean/src/test/java/io/hawt/jvm/local/JVMListTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-local-jvm-mbean/src/test/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log-osgi/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log-osgi/src/main/java/io/hawt/log/osgi/Activator.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log-osgi/src/main/java/io/hawt/log/osgi/LogQuery.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log-osgi/src/main/java/io/hawt/log/osgi/LogQueryCallback.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log-osgi/src/main/java/io/hawt/log/osgi/LogQueryMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log-osgi/src/main/java/io/hawt/log/osgi/Logs.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log-osgi/src/main/java/io/hawt/log/osgi/MavenCoordinates.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/LogEvent.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/LogFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/LogResults.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/log4j/Log4jLogQuery.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/log4j/Log4jLogQueryMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/log4j/MavenCoordHelper.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/log4j/ThrowableFormatter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/rest/LogRequest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/rest/LogResponse.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/rest/LogResponseHit.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/rest/LogResponseHits.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/support/LogQuerySupport.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/support/LogQuerySupportMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/support/LruList.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/support/MavenCoordinates.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/support/Objects.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/main/java/io/hawt/log/support/Predicate.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/test/java/io/hawt/log/log4j/Log4jLogQueryTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-log/src/test/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/HawtioContextListener.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/About.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/AboutMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/FileDTO.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/JMXSecurity.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/JMXSecurityMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/JmxTreeWatcher.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/JmxTreeWatcherMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/PluginRegistry.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/PluginRegistryMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/QuartzFacade.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/QuartzFacadeMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/RBACRegistry.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/jmx/RBACRegistryMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/osgi/OsgiMBeanDetector.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/system/AuthHelpers.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/system/AuthInfo.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/system/AuthenticateResult.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/system/Authenticator.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/system/ConfigManager.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/system/HawtioProperty.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/system/JmxHelpers.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/system/ProxyWhitelist.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/system/RBACMBeanInvoker.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/system/RBACRestrictor.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/ForbiddenReason.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/ServletHelpers.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/AuthenticationConfiguration.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/AuthenticationContainerDiscovery.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/AuthenticationFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/LoginRedirectFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/LoginServlet.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/LogoutServlet.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/Redirector.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/RelativeRequestUri.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/SessionExpiryFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/UserServlet.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/keycloak/KeycloakServlet.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/auth/keycloak/KeycloakUserServlet.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/filters/BaseTagHrefFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/filters/CORSFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/filters/CacheHeadersFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/filters/ContentSecurityPolicyFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/filters/HttpHeaderFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/filters/PublicKeyPinningFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/filters/StrictTransportSecurityFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/filters/XContentTypeOptionsFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/filters/XFrameOptionsFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/filters/XXSSProtectionFilter.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/kubernetes/DefaultProxyAddress.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/kubernetes/OpenShiftProtocolSocketFactory.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/kubernetes/PodServlet.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/kubernetes/ServiceResolver.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/kubernetes/ServiceServlet.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/proxy/ProxyAddress.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/proxy/ProxyDetails.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/proxy/ProxyServlet.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/servlets/JolokiaConfiguredAgentServlet.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/servlets/SpringBatchConfigServlet.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/tomcat/TomcatAuthenticationContainerDiscovery.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/tomcat/TomcatLoginContextConfiguration.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/tomcat/TomcatPrincipal.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/java/io/hawt/web/tomcat/TomcatUserDatabaseLoginContext.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/main/resources/META-INF/detectors" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/jmx/JmxTreeWatcherTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/jmx/RBACRegistryTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/system/ConfigManagerTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/system/RBACRestrictorTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/web/RelativeRequestUriTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/web/ServletHelpersTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/web/auth/LoginRedirectFilterTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/web/auth/RedirectorTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/web/filters/BaseTagHrefFilterTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/web/filters/ContentSecurityPolicyFilterTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/java/io/hawt/web/proxy/ProxyDetailsTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/resources/io/hawt/web/filters/index.html" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/resources/keycloak-hawtio-client.json" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-system/src/test/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/Closeables.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/FileFilters.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/FileLocker.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/Files.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/Function.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/Hosts.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/IOHelper.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/MBeanSupport.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/Objects.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/Predicate.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/ReflectionHelper.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/Strings.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/XmlHelper.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/XmlNamespaceFinder.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/Zips.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/introspect/ClassLoaderProvider.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/introspect/ClassLoaderProviders.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/introspect/support/CacheValue.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/introspect/support/ClassResource.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/introspect/support/ClassScanner.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/main/java/io/hawt/util/introspect/support/Packages.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/test/java/io/hawt/util/HostsTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/test/java/io/hawt/util/StringsTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-util/src/test/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-war/README.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-war/etc/login.conf" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-war/etc/security.cli" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-war/etc/users.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-war/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-war/src/main/java/io/hawt/blueprint/HawtioBlueprintContextListener.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-war/src/main/resources/blueprint.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-war/src/main/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-war/src/main/webapp/WEB-INF/web.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/main/java/io/hawt/osgi/jmx/Activator.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/main/java/io/hawt/osgi/jmx/ConfigAdmin.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/main/java/io/hawt/osgi/jmx/ConfigAdminMXBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/main/java/io/hawt/osgi/jmx/OSGiTools.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/main/java/io/hawt/osgi/jmx/OSGiToolsMXBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/main/java/io/hawt/osgi/jmx/RBACDecorator.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/main/java/io/hawt/osgi/jmx/RBACDecoratorMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/test/java/io/hawt/osgi/jmx/ConfigAdminTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/test/java/io/hawt/osgi/jmx/OSGiToolsTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/test/java/io/hawt/osgi/jmx/RBACDecoratorTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/test/resources/io/hawt/osgi/jmx/RBACDecoratorTest-input.json" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/hawtio-osgi-jmx/src/test/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/karaf/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/karaf/src/main/resources/features.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/integration-test/java/io/hawt/springboot/AbstractMvcIT.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/integration-test/java/io/hawt/springboot/DefaultSettingsMvcIT.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/integration-test/java/io/hawt/springboot/HawtioAuthenticationIsDisabledMvcIT.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/integration-test/java/io/hawt/springboot/HawtioConfigurationIT.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/main/java/io/hawt/springboot/HawtPlugin.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/main/java/io/hawt/springboot/HawtioAutoConfiguration.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/main/java/io/hawt/springboot/HawtioConfiguration.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/main/java/io/hawt/springboot/HawtioEndpoint.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/main/java/io/hawt/springboot/HawtioProperties.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/main/java/io/hawt/springboot/PluginService.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/main/java/io/hawt/springboot/SpringHawtioContextListener.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/main/resources/META-INF/spring.factories" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/main/resources/io/hawt/springboot/application.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/test/java/io/hawt/springboot/HawtioEndpointTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot-1/src/test/java/io/hawt/springboot/SpringHawtioContextListenerTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/integration-test/java/io/hawt/springboot/HawtioSpringBootCustomManagementPortIT.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/integration-test/java/io/hawt/springboot/HawtioSpringBootEndpointIT.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/integration-test/java/io/hawt/springboot/HawtioSpringBootExposedEndpointIT.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/integration-test/java/io/hawt/springboot/HawtioSpringBootTestCommon.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/integration-test/java/io/hawt/springboot/HawtioSpringBootTestSupport.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/integration-test/resources/logback-test.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/java/io/hawt/springboot/ConditionalOnExposedEndpoint.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/java/io/hawt/springboot/EndpointPathResolver.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/java/io/hawt/springboot/ExposedEndpoint.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/java/io/hawt/springboot/HawtPlugin.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/java/io/hawt/springboot/HawtioEndpoint.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/java/io/hawt/springboot/HawtioEndpointAutoConfiguration.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/java/io/hawt/springboot/HawtioManagementConfiguration.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/java/io/hawt/springboot/HawtioProperties.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/java/io/hawt/springboot/SpringHawtioContextListener.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/resources/META-INF/spring.factories" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/main/resources/io/hawt/springboot/application.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/test/java/io/hawt/springboot/HawtioEndpointTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/springboot/src/test/java/io/hawt/springboot/SpringHawtioContextListenerTest.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/wildfly/.gitignore" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/wildfly/compatibility.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/wildfly/configuration.md" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/wildfly/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/wildfly/src/main/webapp/META-INF/beans.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/wildfly/src/main/webapp/WEB-INF/jboss-web.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/platforms/wildfly/src/main/webapp/WEB-INF/web.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/java/io/hawt/junit/DefaultJUnitService.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/java/io/hawt/junit/FailureDTO.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/java/io/hawt/junit/InProgressDTO.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/java/io/hawt/junit/InProgressRunListener.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/java/io/hawt/junit/JUnitFacade.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/java/io/hawt/junit/JUnitFacadeMBean.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/java/io/hawt/junit/JUnitService.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/java/io/hawt/junit/ResultDTO.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/java/io/hawt/junit/StackTraceDTO.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/java/io/hawt/junit/ThrowableDTO.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/main/resources/OSGI-INF/blueprint/blueprint.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-junit/src/test/resources/log4j.properties" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/pom.xml" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/BaseMojo.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/BaseRunMojo.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/CamelBlueprintMojo.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/CamelCdiMojo.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/CamelMojo.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/DefaultMojoLifecycle.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/MojoLifecycle.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/RunMojo.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/SpringBootMojo.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/SpringMojo.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/TestMojo.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/main/SpringMain.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/java/io/hawt/maven/util/IsolatedThreadGroup.java" create mode 100755 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/tooling/hawtio-maven-plugin/src/main/resources/OSGI-INF/blueprint/blueprint.xml" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/1.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/10.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/11.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/12.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/13.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/14.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/2.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/3.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/4.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/5.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/6.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/7.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/8.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/9.png" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/.DS_Store" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/.classpath" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/.project" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/.settings/.jsdtscope" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/.settings/org.eclipse.jdt.core.prefs" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/.settings/org.eclipse.wst.common.component" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/.settings/org.eclipse.wst.common.project.facet.core.xml" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/.settings/org.eclipse.wst.jsdt.ui.superType.container" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/.settings/org.eclipse.wst.jsdt.ui.superType.name" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/WebRoot/META-INF/MANIFEST.MF" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/WebRoot/WEB-INF/web.xml" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/WebRoot/index.jsp" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/src/.DS_Store" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/src/com/.DS_Store" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/src/com/sec/servlet/ssrfFileDown.java" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/src/com/sec/servlet/ssrfFileRead.java" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/ssrf/src/com/sec/servlet/ssrfTest.java" create mode 100644 "\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215.md" diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.circleci/circle-v1.yml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.circleci/circle-v1.yml" new file mode 100755 index 0000000..0fb0f1c --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.circleci/circle-v1.yml" @@ -0,0 +1,40 @@ +machine: + node: + version: 6.9.1 + java: + version: oraclejdk8 + environment: + PATH: "${PATH}:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin" + +branches: + only: + - master + +dependencies: + pre: + - rm -rf ~/.yarn + - npm install --global yarn + override: + - mvn --batch-mode install + cache_directories: + - ~/.cache/yarn + +test: + override: + - echo true + +general: + artifacts: + - '**/target/*.jar' + - '**/target/*.war' + - '**/target/classes/features.xml' + +deployment: + website: + branch: master + owner: hawtio + commands: + - git config --global user.email "circleci@mail.com" + - git config --global user.name "CircleCI" + - ./ci-website.sh + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.circleci/config.yml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.circleci/config.yml" new file mode 100755 index 0000000..546b6fd --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.circleci/config.yml" @@ -0,0 +1,22 @@ +# Javascript Node CircleCI 2.0 configuration file +# +# Check https://circleci.com/docs/2.0/language-java/ for more details +# +version: 2 +jobs: + build: + working_directory: ~/hawtio + docker: + - image: circleci/openjdk:8-browsers + steps: + - checkout + - restore_cache: + key: dependency-cache-{{ checksum "pom.xml" }} + - run: + command: mvn --batch-mode install + environment: + MAVEN_OPTS: -showversion -Xms256m -Xmx4096m + - save_cache: + paths: + - ~/.m2 + key: dependency-cache-{{ checksum "pom.xml" }} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.editorconfig" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.editorconfig" new file mode 100755 index 0000000..f0881c0 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.editorconfig" @@ -0,0 +1,11 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_style = space +indent_size = 2 +insert_final_newline = true + +[*.java] +indent_size = 4 diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.gitignore" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.gitignore" new file mode 100755 index 0000000..aa6d138 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/.gitignore" @@ -0,0 +1,24 @@ +target +*.iml +*.ipr +*.iws +*.log +*.out +overlays +.DS_Store +.settings +.project +.classpath +runtime-EclipseApplication-m2eclipse +.metadata +/runtime-*/ +./fabric +./fuseenterprise +.idea +tags +node_modules +hawtio-config +.tscache +node/ +bower_components/ +.vscode diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/BUILDING.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/BUILDING.md" new file mode 100755 index 0000000..522cef8 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/BUILDING.md" @@ -0,0 +1,272 @@ +We love [contributions](http://hawt.io/docs/contributing/)! You may also want to know [how to hack on the hawtio code](DEVELOPERS.md) + +[hawtio](http://hawt.io/) can now be built **without** having to install node.js or anything first thanks to the [frontend-maven-plugin](https://github.com/eirslett/frontend-maven-plugin). This +will install node.js & npm into a subdirectory, run `npm install` to install dependencies & run the build like normal. + +## Building + +After you've cloned hawtio's git repo the first thing you should do is build the whole project. First `cd` into the root directory of the hawtio project and run: + + mvn clean install + +This will ensure all dependencies within the hawtio repo are built and any dependencies are downloaded and in your local repo. + +To run the sample web application for development, type: + + cd hawtio-web + mvn compile + mvn test-compile exec:java + +On OS X and linux the _mvn compile_ command above is unnecessary but folks have found on windows there can be timing issues with grunt and maven that make this extra step a requirement (see [issue #203 for more details](https://github.com/hawtio/hawtio/issues/203#issuecomment-15808516)) + +Or if you want to just run an empty hawtio and connect in hawtio to a remote container (e.g. connect to a Fuse Fabric or something via the Connect tab) just run + + cd hawtio-web + mvn clean jetty:run + +### How to resolve building error of hawtio-web + +In case you get any building error of `hawtio-web`, then it may be due permission error of your local `.npm` directory. This has been known to happen for osx users. To remedy this + + cd ~ + cd .npm + sudo chown -R yourusernamehere * + +Where `yourusernamehere` is your username. This will change the file permissions of the node files so you can build the project. After this try building the hawtio source code again. + +### Troubleshooting + +This section should help you to figure out problems that you could discover when you build/compile the `hawtio` or `hawtio-web` module : + +1. ERROR : Can not find the binary /usr/local/bin/phantomjs +If during the build, you get this error message + +```` +[INFO] Running "karma:unit" (karma) task +[INFO] ERROR [launcher]: Cannot start PhantomJS +[INFO] Can not find the binary /usr/local/bin/phantomjs +[INFO] Please set env variable PHANTOMJS_BIN +[INFO] Warning: Task "karma:unit" failed. Use --force to continue. +[INFO] +[INFO] Aborted due to warnings. +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD FAILURE +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 13.511 s +[INFO] Finished at: 2015-01-30T07:30:49+01:00 +[INFO] Final Memory: 28M/317M +[INFO] ------------------------------------------------------------------------ +[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:0.0.16:grunt (grunt build) on project hawtio-web: Failed to run task: 'grunt default --no-color' failed. (error code 3) -> [Help 1] +```` +the problem could be solved after removing & installing again phantomjs +```` +npm uninstall phantomjs +npm install phantomjs -g +```` + + + +### Trying Different Containers + +The above uses Jetty but you can try running hawtio in different containers via any of the following commands. Each of them runs the hawtio-web in a different container (with an empty JVM so no beans or camel by default). + + mvn tomcat7:run + mvn tomcat6:run + mvn jboss-as:run + mvn jetty:run + +## Incrementally compiling TypeScript + +For a more rapid development workflow its good to use incremental compiling of TypeScript and to use LiveReload (or LiveEdit) below too. + +So in a **separate shell** (while keeping the above shell running!) run the following commands: + + cd hawtio-web + mvn compile -Pwatch + +This will incrementally watch all the *.ts files in the src/main/webapp/app directory and recompile them into src/main/webapp/app/app.js whenever there's a change. + +## Incrementally compiling TypeScript inside IntelliJ (IDEA) + +The easiest way we've figured out how to use [IDEA](http://www.jetbrains.com/idea/) and TypeScript together is to setup an External Tool to run watchTsc; then you get (relatively) fast recompile of all the TypeScript files to a single app.js file; so you can just keep hacking code in IDEA and letting LiveReload reload your web page. + +* open the **Preferences** dialog +* select **External Tools** +* add a new one called **watchTsc** +* select path to **mvn** as the program and **compile -Pwatch** as the program arguments +* select **hawtio-web** as the working directory +* click on Output Filters... +* add a new Output Filter +* use this regular expression + +``` +$FILE_PATH$\($LINE$,$COLUMN$\)\: +``` + +Now when you do **Tools** -> **watchTsc** you should get a output in the Run tab. If you get a compile error when TypeScript gets recompiled you should get a nice link to the line and column of the error. + +**Note** when you do this you probably want the Run window to just show the latest compile errors (which is usually the last couple of lines). + +I spotted a handy tip on [this issue](http://youtrack.jetbrains.com/issue/IDEA-74931), if you move the cursor to the end of the Run window after some compiler output has been generated - pressing keys _META_ + _end_ (which on OS X is the _fn_ and the _option/splat_ and right cursor keys) then IDEA keeps scrolling to the end of the output automatically; you don't have to then keep pressing the "Scroll to end" button ;) + +## Adding additional Javascript dependencies + +Hawtio is (finally) adopting [bower](http://bower.io/) for managing dependencies, these are automatically pulled in when building the project. It's now really easy to add third-party Javascript/CSS stuff to hawtio: + +* cd into 'hawtio-web', and build it +* source 'setenv.sh' to add bower to your PATH (it's under node_modules) if you haven't installed it globally +* run 'bower install --save some-awesome-tool' +* run 'grunt bower wiredep' to update index.html +* commit the change to bower.json and index.html + +When running in development mode be sure you've run 'grunt bower' if you see 404 errors for the bower package you've installed. This is normally done for you when running 'mvn clean install' + +## Using LiveReload + +The LiveReload support allows you to edit the code and for the browser to automatically reload once things are compiled. This makes for a much more fun and RAD development environment!! + +The easiest method to run with LiveReload support is to cd into the "hawtio-web" module and run the following: + +mvn test-compile exec:java + +The sample server runs an embedded LiveReload server that's all set up to look at src/main/webapp for file changes. If you don't want to load all of the sample apps because you're connecting to another JVM you don't have to: + +mvn test-compile exec:java -DloadApps=false + + +The Live Reload server implementation is provided by [livereload-jvm](https://github.com/davidB/livereload-jvm). When using other methods to run hawtio, like "mvn jetty:run" or "mvn tomcat:run", you can run [livereload-jvm](https://github.com/davidB/livereload-jvm) directly, for example from the hawtio-web directory: + + java -jar livereload-jvm-0.2.0-SNAPSHOT-onejar.jar -d src/main/webapp/ -e .*\.ts$ + +Install the [LiveReload](https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei) plugin for Chrome and then enable it for the website (click the live reload icon on the right of the address bar). There is also a LiveReload plugin for Firefox, you can get it straight from the [LiveReload site](http://livereload.com). + + +In another shell (as mentioned above in the "Incrementally compile TypeScript" section you probably want to auto-recompile all the TypeScript files into app.js in *another shell* via this command: + + cd hawtio-web + mvn compile -Pwatch + +Enable Live Reload in your browser (open [http://localhost:8282/hawtio/](http://localhost:8282/hawtio/) then click on the Live Reload icon to the right of the location bar). + +Now if you change any source (HTML, CSS, TypeScript, JS library) the browser will auto reload on the fly. No more context-switching between your IDE and your browser! :) + +To specify a different port to run on, just override the `jettyPort` property + + mvn test-compile exec:java -DjettyPort=8181 + +### Using your build & LiveReload inside other web containers + +TODO - this needs updating still... + +The easiest way to use other containers and still get the benefits of LiveReload is to create a symbolic link to the generated hawtio-web war in expanded form, in the deploy directory in your web server. + +e.g. to use Tomcat7 in LiveReload mode try the following to create a symbolic link in the tomcat/webapps directory to the **hawtio-web/target/hawtio-web-1.3-SNAPSHOT** directory: + + cd tomcat/webapps + ln -s ~/hawtio/hawtio-web/target/hawtio-web-1.3-SNAPSHOT hawtio + +Then use [livereload-jvm](https://github.com/davidB/livereload-jvm) manually as shown above. + +Now just run Tomcat as normal. You should have full LiveReload support and should not have to stop/start Tomcat or recreate the WAR etc! + +### Running hawtio against Kubernetes / OpenShift + +To try run a [local OpenShift V3 based on Kubernetes / Docker](http://fabric8.io/v2/getStarted.html) first + + opeshift start + +Then run the following: + + export KUBERNETES_MASTER=http://localhost:8080 + mvn test-compile exec:java + +You should now see the Kubernetes / OpenShift console at http://localhost:8282/ + +#### Using your build from inside Jetty + +For jetty you need to name the symlink directory **hawtio.war** for [Jetty to recognise it](http://www.eclipse.org/jetty/documentation/current/automatic-webapp-deployment.html). + + cd jetty-distribution/webapps + ln -s ~/hawtio/hawtio-web/target/hawtio-web-1.3-SNAPSHOT hawtio.war + +Another thing is for symlinks jetty uses the real directory name rather than the symlink name for the context path. + +So to open the application in Jetty open [http://localhost:8282/hawtio-web-1.3-SNAPSHOT/](http://localhost:8282/hawtio-web-1.3-SNAPSHOT/) + + +## Running Unit Tests + +You can run the unit tests via maven: + + cd hawtio-web + mvn test + +If you are using the [LiveReload plugin for Chrome](https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei) you can then hit the LiveReload icon to the right of the address bar and if you are running the watch profile, the tests are re-run every time there is a compile: + + mvn test -Pwatch + +Now the unit tests are all re-run whenever you edit the source. + +## Running integration Tests + +You can run the Protractor integration tests via maven: + + cd hawtio-web + mvn verify -Pitests + +This will run the tests headlessly, in [Phantomjs](http://phantomjs.org/). + +If you want to see the tests running, you can run them in Chrome with: + + cd hawtio-web + mvn verify -Pitests,chrome + +## How to Get Started Hacking the Code + +Check out the [hawtio technologies, tools and code walkthroughs](http://hawt.io/developers/index.html) + +## Trying hawtio with Fuse Fabric + +As of writing hawtio depends on the latest snapshot of [Fuse Fabric](http://fuse.fusesource.org/fabric/). To try out hawtio with it try these steps: + + 1. Grab the latest [Fuse Fabric source code](http://fuse.fusesource.org/source.html) and do a build in the fabric directory... + + git clone git://github.com/fusesource/fuse.git + cd fuse + cd fabric + mvn -Dtest=false -DfailIfNoTests=false clean install + + 2. Now create a Fuse Fabric instance + + cd fuse-fabric\target + tar xf fuse-fabric-99-master-SNAPSHOT.tar.gz + cd fuse-fabric-99-master-SNAPSHOT + bin/fusefabric + + 3. When the Fabric starts up run the command + + fabric:create + + to properly test things out you might want to create a new version and maybe some child containers. + +### Running hawtio with Fuse Fabric in development mode + + cd hawtio-web + mvn test-compile exec:java -Psnapshot,fabric + +### Running hawtio using `jetty-maven-plugin` with authentication enabled + +Running hawtio using `mvn jetty:run` will switch hawtio configuration to use system (instead of JNDI) properties. The default configuration uses +`/` list inside `jetty-maven-plugin` configuration. + +One of those properties is standard JAAS property `java.security.auth.login.config` pointing at Jetty-Plus JAAS LoginModule which uses `src/test/resources/users.properties` file for mapping +users to password and roles. + +By default this mapping is: + + admin=admin123,admin,viewer + +However `hawtio.authenticationEnabled` is disabled (`false`) by default. So in order to run hawtio using Jetty Maven plugin with authentication enabled, you can either +change this property in `hawtio-web/pom.xml`, or simply run: + + mvn jetty:run -Dhawtio.authenticationEnabled=true diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/CHANGES.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/CHANGES.md" new file mode 100755 index 0000000..bdefb01 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/CHANGES.md" @@ -0,0 +1,93 @@ +## Change Log + +#### 2.6.0 (To be released) + +#### 2.5.0 + +* Add config property `hawtio.localAddressProbing`. Now you can disable local address probing + for proxy whitelist upon startup by setting this property to `false` (default: `true`). +* Upgrade Camel to 2.23.1 +* Upgrade Spring Framework to 5.1.3 +* Upgrade Spring Boot to 2.1.2 +* Bug fixes + +#### 2.4.0 + +* Support Java 11 +* Upgrade @hawtio/integration, @hawtio/jmx to 4.2.x +* Upgrade Spring Boot to 2.1.1 + +#### 2.3.0 + +* Add support for Spring Boot 2 + **Note:** Spring Boot 2 is now the default Spring Boot version for Hawtio dependency `hawtio-spring-boot`. + If Spring Boot 1 is required, use dependency `hawtio-spring-boot-1`. +* Bug fixes + +#### 2.2.0 + +* Upgrade Hawtio components to 4.1.x +* Minor improvements +* Bug fixes + +#### 2.1.0 + +* Upgrade Hawtio components to 4.0.x +* Upgrade AngularJS to 1.7.x +* Improve security-releated HTTP headers handling +* Bug fixes + +#### 2.0.3 + +- #2488: Allow using SSL by specifying a keyStore and keyStorePass from embedded Hawtio + +#### 2.0.2 + +* **Official Hawtio v2 GA version!** + +#### 2.0.0, 2.0.1 + +* These are old versions that were mistakenly released years ago. Please don't use these versions! + +#### 2.0 Beta3 (To be released) + +* Added hawtio BOM + +#### 2.0 Beta2 + +* Keycloak integration support +* Bug fixes + +#### 2.0 Beta1 + +* hawtio Maven plugin +* Improved Spring Boot support +* Log plugin +* Diagnostics plugin +* Karaf RBAC support +* PatternFly-based login page and logo +* Upgrade to Servlet API 3.1 +* Port fixes from hawtio v1 +* Bug fixes + +#### 2.0 M3 + +* Switch from bower to yarn +* Help plugin +* Port fixes from hawtio v1 + +#### 2.0 M2 + +* Migrate to PatternFly +* Bug fixes +* Port fixes from hawtio v1 + +#### 2.0 M1 + +* Initial 2.0 milestone release + +----- + +#### 1.x + +See: https://github.com/hawtio/hawtio/blob/1.x/CHANGES.md diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/CONTRIBUTING.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/CONTRIBUTING.md" new file mode 100755 index 0000000..f1308d3 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/CONTRIBUTING.md" @@ -0,0 +1,62 @@ +We love contributions! We really need your help to make [hawtio](http://hawt.io/) even more hawt, so please [join our community](http://hawt.io/community/index.html)! + +Many thanks to all of our [existing contributors](https://github.com/hawtio/hawtio/graphs/contributors)! But we're greedy, we want more! hawtio is _hawt_, but it can be _hawter_! :). We have [lots of plugins](http://hawt.io/plugins/index.html) but they can be improved and we want more plugins! + +Here's some notes to help you get started: + +## Getting Started + +* Make sure you have a [GitHub account](https://github.com/signup/free) as you'll need it to submit issues, comments or pull requests. +* Got any ideas for how we can improve hawtio? Please [submit an issue](https://github.com/hawtio/hawtio/issues?state=open) with your thoughts. Constructive criticism is always greatly appreciated! +* Fancy submitting [any nice screenshots of how you're using hawtio?](https://github.com/hawtio/hawtio/tree/master/website/src/images/screenshots) A quick Youtube screencast would be even _hawter_ or a blog post/article we can link to? Just [submit an issue](https://github.com/hawtio/hawtio/issues?state=open) (or fork and patch the [website](https://github.com/hawtio/hawtio/tree/master/website/src/) or any Markdown docs in our repository directly) and we'll merge it into our website. +* Fancy submitting your cool new dashboard configuration or some wiki docs? See below on how to do that... +* Search [our issue tracker](https://github.com/hawtio/hawtio/issues?state=open) and see if there's been any ideas or issues reported for what you had in mind; if so please join the conversation in the comments. +* Submit any issues, feature requests or improvement ideas [our issue tracker](https://github.com/hawtio/hawtio/issues?state=open). + * Clearly describe the issue including steps to reproduce when it is a bug. + * Make sure you fill in the earliest version that you know has the issue. + +### Fancy hacking some code? + +* If you fancy working on some code, check out the these lists of issues: + * [open apprentice tasks](https://github.com/hawtio/hawtio/issues?labels=apprentice+tasks&page=1&sort=updated&state=open) - which are moderately easy to fix and tend to have links to which bits of the code to look at to fix it or + * [all open issues](https://github.com/hawtio/hawtio/issues?state=open) if you fancy being more adventurous. + * [hawt ideas](https://github.com/hawtio/hawtio/issues?labels=hawt+ideas&page=1&sort=updated&state=open) if you're feeling like a ninja and fancy tackling our harder issues that tend to add really _hawt_ new features! + +* To make code changes, fork the repository on GitHub then you can hack on the code. We love any contribution such as: + * fixing typos + * improving the documentation or embedded help + * writing new test cases or improve existing ones + * adding new features + * improving the layout / design / CSS + * creating a new [plugin](http://hawt.io/plugins/index.html) + +## Submitting changes to hawtio + +* Push your changes to your fork of the [hawtio repository](https://github.com/hawtio/hawtio). +* Submit a pull request to the repository in the **hawtio** organization. +* If your change references an existing [issue](https://github.com/hawtio/hawtio/issues?state=open) then use "fixes #123" in the commit message (using the correct issue number ;). + +## Submitting changes dashboard and wiki content + +Hawtio uses the [hawtio-config repository](https://github.com/hawtio/hawtio-config) to host its runtime configuration. When you startup hawtio by default it will clone this repository to the configuration directory (see the [configuration document](https://github.com/hawtio/hawtio/blob/master/docs/Configuration.md) or more detail). + +In development mode if you are running hawtio via the **hawtio-web** directory, then your local clone of the [hawtio-config repository](https://github.com/hawtio/hawtio-config) will be in the **hawtio/hawtio-web/hawtio-config directory**. If you've added some cool new dashboard or editted any files via the hawtio user interface then your changes will be committed locally in this directory. + +If you are a committer and want to submit any changes back just type: + + cd hawtio-config + git push + +Otherwise if you want to submit pull requests for your new dashboard or wiki content then fork the [hawtio-config repository](https://github.com/hawtio/hawtio-config) then update your hawtio-config directory to point to this directory. e.g. edit the hawtio-config/.git/config file to point to your forked repository. + +Now perform a git push as above and then submit a pull request on your forked repo. + +# Additional Resources + +* [FAQ](http://hawt.io/docs/faq/) +* [General GitHub documentation](http://help.github.com/) +* [GitHub create pull request documentation](https://help.github.com/articles/creating-a-pull-request) +* [Here is how to build the code](BUILDING.md) +* [More information for developers in terms of hawtio technologies, tools and code walkthroughs](DEVELOPERS.md) +* [Join the hawtio community](http://hawt.io/community/) + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/DEVELOPERS.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/DEVELOPERS.md" new file mode 100755 index 0000000..4685e1f --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/DEVELOPERS.md" @@ -0,0 +1,189 @@ +We love [contributions](http://hawt.io/docs/contributing/). This page is intended to help you get started hacking on the code, it contains various information on technology and tools together with code walk-throughs. + +Welcome and enjoy! Its hawt, but stay cool! :) + +## Building the code + +Check out [How To Build The Code](BUILDING.md) if you want to start hacking on the source. + +## Architecture + +**hawtio** is a single page application which is highly modular and capable of dynamically loading [plugins](http://hawt.io/plugins/index.html) based on the capability of the server. + +You may want to check out: + +* [Current hawtio plugins](http://hawt.io/plugins/index.html) +* [How plugins work](http://hawt.io/docs/how-plugins-work/) + +## Developer Tools + +The following are recommended if you want to contribute to the code + +* [IntelliJ IDEA EAP 12 or later](http://confluence.jetbrains.net/display/IDEADEV/IDEA+12+EAP) as this has TypeScript support and is the daddy of IDEs! +* [There are other TypeScript plugins](http://blogs.msdn.com/b/interoperability/archive/2012/10/01/sublime-text-vi-emacs-typescript-enabled.aspx) if you prefer Sublime, Emacs or VIM. (Unfortunately we're not aware of an eclipse plugin yet). +* [AngularJS plugin for IDEA](http://plugins.jetbrains.com/plugin/?id=6971) if you use [IDEA](http://www.jetbrains.com/idea/) then this plugin really helps work with Angular JS +* [AngularJS plugin for Chrome](https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk) which is handy for visualising scopes and performance testing etc. +* [JSONView plugin for Chrome](https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc) makes it easy to visualise JSON returned by the [REST API of Jolokia](http://jolokia.org/reference/html/protocol.html) +* [Apache Maven 3.0.3 or later](http://maven.apache.org/) +* [gruntjs](http://gruntjs.com/) a build tool for JavaScript. See nearly the beginning of this document for details of how to install and use. +* [Dash.app](http://kapeli.com/) is a handy tool for browsing API documentation for JavaScript, HTML, CSS, jquery, AngularJS etc. + +## JavaScript Libraries + +For those interested in [contributing](http://hawt.io/contributing/index.html) or just learning how to build single page applications, here is a list of the various open source libraries used to build hawtio: + +* [AngularJS](http://angularjs.org/) is the web framework for performing real time two-way binding of HTML to the model of the UI using simple declarative attributes in the HTML. +* [jolokia](http://jolokia.org/) is the server side / JVM plugin for exposing JMX as JSON over HTTP. It's awesome and is currently the only server side component of hawtio. +* [TypeScript](http://typescriptlang.org/) is the language used to implement the console; it compiles to JavaScript and adds classes, modules, type inference & type checking. We recommend [IntelliJ IDEA EAP 12 or later](http://confluence.jetbrains.net/display/IDEADEV/IDEA+12+EAP) for editing TypeScript--especially if you don't use Windows or Visual Studio (though there is a Sublime Text plugin too). +* [angular ui](http://angular-ui.github.com/) is a library of AngularJS additions and directives +* [d3](http://d3js.org/) is the visualization library used to do the force layout graphs (for example the diagram view for ActiveMQ) +* [cubism](http://square.github.com/cubism/) implements the real-time horizon charts +* [dagre](https://github.com/cpettitt/dagre) for graphviz style layouts of d3 diagrams (e.g. the Camel diagram view). +* [ng-grid](http://angular-ui.github.com/ng-grid/) an AngualrJS based table/grid component for sorting/filtering/resizing tables +* [marked](https://github.com/chjj/marked) for rendering Github-flavoured Markdown as HTML +* [DataTables](http://datatables.net/) for sorted/filtered tables (though we are migrating to ng-grid as its a bit more natural for AngularJS) +* [DynaTree](http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html) for tree widget +* [jQuery](http://jquery.com/) small bits of general DOM stuff, usually when working with third-party libraries which don't use AngularJS +* [Twitter Bootstrap](http://twitter.github.com/bootstrap/) for CSS +* [Toastr](https://github.com/CodeSeven/toastr) for notifications + +We're not yet using it but these look handy too: + +* [jquery-mobile-angular-adapter](https://github.com/tigbro/jquery-mobile-angular-adapter) for easy interop of jQuery Mobile and AngularJS +* [breezejs](http://www.breezejs.com/) for easy LINQ / ActiveRecord style database access and synchronization + +## API documentation + +If you are interested in working on the code the following references and articles have been really useful so far: + +* [available AngularJS Directives](http://hawt.io/developers/directives.html) +* [angularjs API](http://docs.angularjs.org/api/) +* [bootstrap API](http://twitter.github.com/bootstrap/base-css.html) +* [cubism API](https://github.com/square/cubism/wiki/API-Reference) +* [d3 API](https://github.com/mbostock/d3/wiki/API-Reference) +* [ng-grid API](http://angular-ui.github.com/ng-grid/#/api) +* [datatables API](http://www.datatables.net/api) +* [javascript API](http://www.w3schools.com/jsref/default.asp) +* [sugarjs API](http://sugarjs.com/api/Array/sortBy) +* [icons from Font Awesome](http://fortawesome.github.com/Font-Awesome/) + +### Developer Articles, Forums and Resources + +* [Fun with AngularJS](http://devgirl.org/2013/03/21/fun-with-angularjs/) is great overview on AngularJS! +* [egghead.io various short angularjs videos](http://egghead.io/) +* [great angularjs talk](http://www.youtube.com/angularjs) +* [AngularJS plugins](http://ngmodules.org/) +* [AngularJS tips and tricks](http://deansofer.com/posts/view/14/AngularJs-Tips-and-Tricks-UPDATED) +* [more AngularJS magic to supercharge your webapp](http://www.yearofmoo.com/2012/10/more-angularjs-magic-to-supercharge-your-webapp.html#) +* [AngularJS questions on stackoverflow](http://stackoverflow.com/questions/tagged/angularjs) +* [Modeling Data and State in Your AngularJS Application](http://joelhooks.com/blog/2013/04/24/modeling-data-and-state-in-your-angularjs-application/) +* [6 Common Pitfalls Using Scopes](http://thenittygritty.co/angularjs-pitfalls-using-scopes) + +## Code Walkthrough + +If you fancy contributing--and [we love contributions!](http://hawt.io/docs/contributing/)--the following should give you an overview of how the code hangs together: + +* hawtio is a single page web application, from [this single page of HTML](https://github.com/hawtio/hawtio/blob/master/hawtio-web/src/main/webapp/index.html) +* We use [AngularJS routing](http://docs.angularjs.org/api/ng.directive:ngView) to display different [partial pages](https://github.com/hawtio/hawtio/tree/master/hawtio-web/src/main/webapp/app/core/html) depending on which tab/view you choose. You'll notice that the partials are simple HTML fragments which use [AngularJS](http://angularjs.org/) attributes (starting with **ng-**) along with some {{expressions}} in the markup. +* Other than the JavaScript libraries listed above which live in [webapp/lib](https://github.com/hawtio/hawtio/tree/master/hawtio-web/src/main/webapp/lib) and are [included in the index.html](https://github.com/hawtio/hawtio/blob/master/hawtio-web/src/main/webapp/index.html), we then implement [AngularJS](http://angularjs.org/) controllers using [TypeScript](http://typescriptlang.org/). All the typescript source is in the [in files in webapp/app/pluginName/js/ directory](https://github.com/hawtio/hawtio/tree/master/hawtio-web/src/main/webapp/app) which is then compiled into the [webapp/app/app.js file](https://github.com/hawtio/hawtio/blob/master/hawtio-web/src/main/webapp/app/app.js) +* To be able to compile with TypeScript's static type checking we use the various [TypeScript definition files](https://github.com/hawtio/hawtio/tree/master/hawtio-web/src/main/d.ts) to define the optional statically typed APIs for the various APIs we use +* The controllers use the [Jolokia JavaScript API](http://jolokia.org/reference/html/clients.html#client-javascript) to interact with the server side JMX MBeans + +### How the Tabs Work + +Tabs can dynamically become visible or disappear based on the following: + +* the contents of the JVM +* the [plugins](http://hawt.io/docs/plugins/), +* and the current UI selection(s). + +[Plugins](http://hawt.io/docs/plugins/) can register new top-level tabs by adding to the [topLevelTabs](https://github.com/hawtio/hawtio/blob/master/hawtio-web/src/main/webapp/app/log/js/logPlugin.ts#L9) on the workspace which can be dependency injected into your plugin via [AngularJS Dependency Injection](http://docs.angularjs.org/guide/di). + +The [isValid()](https://github.com/hawtio/hawtio/blob/master/hawtio-web/src/main/webapp/app/log/js/logPlugin.ts#L12) function is then used to specify when this top-level tab should be visible. + +You can register [subLevelTabs](https://github.com/hawtio/hawtio/blob/master/hawtio-web/src/main/webapp/app/log/js/logPlugin.ts#L16) which are then visible when the [right kind of MBean is selected](https://github.com/hawtio/hawtio/blob/master/hawtio-web/src/main/webapp/app/log/js/logPlugin.ts#L19). + +For more detail check out the [plugin documentation](http://hawt.io/docs/plugins/). + +#### Enable Source Maps for Easier Debugging + +We recommend you enable [Source Maps](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1) in your browser (e.g. in Chrome) for easier debugging by clicking on the bottom-right Settings icon in the *JavaScript Console* and [enabling Source Maps support such as in this video](http://www.youtube.com/watch?v=-xJl22Kvgjg). + +#### Notes on Using IDEA + +To help IDEA navigate to functions in your source and to avoid noise, you may want to ignore some JavaScript files in IDEA so that they are not included in the navigation. Go to `Settings/Preferences -> File Types -> Ignore Files` then add these patterns to the end: + + *.min.js;*-min.js + +Ignoring these files will let IDEA ignore the minified versions of the JavaScript libraries. + +Then select the generated [webapp/app/app.js file](https://github.com/hawtio/hawtio/blob/master/hawtio-web/src/main/webapp/app/app.js) in the Project Explorer, right-click and select _Mark as Plain Text_ so that it is ignored as being JavaScript source. This hint came from [this forum thread](http://devnet.jetbrains.net/message/5472690#5472690), hopefully there will be a nicer way to do all this one day! + +#### Handy AngularJS debugging tip + +Open the JavaScript Console and select the _Console_ tab so you can type expressions into the shell. +Select part of the DOM of the scope you want to investigate +Right click and select _Inspect Element_ +In the console type the following + + s = angular.element($0).scope() + +You have now defined a variable called _s_ which contains all the values in the active AngularJS scope so you can navigate into the scope and inspect values or invoke functions in the REPL, etc. + +#### Handy JQuery debugging tip + +Open the JavaScript Console and select the _Console_ tab so you can type expressions into the shell. +Select a DOM element (e.g., button) for which you want to check what jquery event handlers are attached. +In the console type: + + jQuery._data($0, "events") + +You'll get array of events. When you expand the events and go to "handler" member (e.g., `click->0->handler`), you can: + +* in Firebug right click `function()` and select _Inspect in Script Panel_ +* in Chrome dev tools right click `function()` and select _Show Function Definition_ + +to see the body of handler method. + +### Handy AngularJS programming tips + +#### Use a nested scope object to own state for 2 way binding + +When binding models to HTML templates; its always a good idea to use a level of indirection between the $scope and the property. So rather than binding to $scope.name, bind to $scope.entity.name then have code like + + $scope.entity = { "name": "James" }; + +This means to that to reset the form you can just do + + $scope.entity = {}; + +And you can then refer to the entire entity via **$scope.entity**. Another reason for doing this is that when you have lots of nested scopes; for example when using nested directives, or using includes or layouts, you don't get inheritence issues; since you can acess $scope.entity from child scopes fine. + +#### When working with $routeParams use the $scope.$on + +Its often useful to use $routeParams to get the URI template parameters. However due to [the rules on who gets the $routeParams injected](http://deansofer.com/posts/view/14/AngularJs-Tips-and-Tricks-UPDATED#routing) when using layouts and so forth, the $routeParams can be empty. + +So put all code that uses $routeParams inside the $routeChangeSuccess callback: + + $scope.$on('$routeChangeSuccess', function(event, routeData){ + // process $routeParams now... + }); + +### Local Storage + +hawtio uses local storage to store preferences and preferred views for different kinds of MBean type and so forth. + +You can view the current Local Storage in the Chrome developer tools console in the Resources / Local Storage tab. + +If you ever want to clear it out in Chrome on OS X you'll find this located at `~/Library/Application Support/Google/Chrome/Default/Local Storage`. + + +### Updating the hawtio website + +The website is automatic build and updated on each commit. There is a CI job on circleci that runs + + https://circleci.com/gh/hawtio/hawtio + +The task runs the script `ci-website.sh` that builds the website. If anything goes wrong, the errors are usually shown in the CI job output (link above). + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/FAQ.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/FAQ.md" new file mode 100755 index 0000000..c72671a --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/FAQ.md" @@ -0,0 +1,222 @@ +## General Questions + +General questions on all things hawtio. + +#### What is the license? + +hawtio uses the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0.txt). + +#### What does hawtio do? + +It's a [pluggable](http://hawt.io/plugins/index.html) management console for Java stuff which supports any kind of JVM, any kind of container (Tomcat, Jetty, Karaf, JBoss, Fuse Fabric, etc), and any kind of Java technology and middleware. + +#### How do I install hawtio? + +See the [Getting Started Guide](http://hawt.io/getstarted/index.html) and the [Configuration Guide](http://hawt.io/configuration/index.html) + +#### How do I configure hawtio? + +Mostly hawtio just works. However, please check out the [Configuration Guide](http://hawt.io/configuration/index.html) to see what kinds of things you can configure via system properties, environment variables, web.xml context-params or dependency injection. + +#### How do I disable security? + +Since 1.2-M2 of hawtio we enable security by default using the underlying application container's security mechanism. + +Here's how to [disable security](https://github.com/hawtio/hawtio/blob/master/docs/Configuration.md#configuring-or-disabling-security-in-karaf-servicemix-fuse) if you wish to remove the need to login to hawtio. + +#### Which Java version is required? + +- Hawtio 1.5 onwards - requires Java 8. +- Hawtio 1.4 - requires Java 7 or 8. +- Hawtio 1.3 or older - supports Java 6 and 7. + +#### How do I enable hawtio inside my Java Application / Spring Boot / DropWizard / Micro Service + +The easiest thing to do is add jolokia as a java agent via a java agent command line: + + java -javaagent:jolokia-agent.jar=host=0.0.0.0 -jar foo.jar + +Then by default you can connect on http;//localhost:8778/jolokia to access the jolokia REST API. + +Now you can use hawtio (e.g. the Google Chrome Extension or the stand alone hawtio application) to connect to it - and it then minimises the effect of hawtio/jolokia on your app (e.g. you don't need to mess about with whats inside your application or even change the classpath) + +#### How do I connect to my remote JVM? + +All that's required for hawtio to connect to any remote JVM is that a [jolokia agent](http://jolokia.org/agent.html) is attached to the JVM you wish to connect to. This can be done in various ways. + +Firstly if you are using [Fuse](http://www.jboss.org/products/fuse) or [Apache ActiveMQ 5.9.x or later](http://activemq.apache.org/) then you already have jolokia enabled by default. + +If a JVM has no jolokia agent, you can use the **Local** tab of the **Connect** menu (in 1.2.x or later of **hawtio-default.war**). The Local tab lists all local Java processes on the same machine (just like JConsole does). + +For JVMs not running a jolokia agent already, there's a start button (on the right) which will dynamically add the [jolokia JVM agent](http://jolokia.org/agent/jvm.html) into the selected JVM process. You can then click on the Agent URL link to connect into it. + +Note that the Local plugin only works when the JVM running hawtio has the **hawtio-local-jvm-mbean** plugin installed (which depends on the JVM finding the com.sun.tools.attach.VirtualMachine API that jconsole uses and is included in the hawtio-default.war). BTW if you don't see a **Local** tab inside the **Conect** menu in your hawtio application; check the log of your hawtio JVM; there might be a warning around com.sun.tools.attach.VirtualMachine not being available on the classpath. Or you could just try using the [exectuable jar](http://hawt.io/getstarted/index.html) to run hawtio which seems to work on most platforms. + +Note also that the **Local** tab only works when the process is on the same machine as the JVM running hawtio. So a safer option is just to make sure there's a jolokia agent running in each JVM you want to manage with hawtio. + +There are a [few different agents you can use](http://jolokia.org/agent.html): + +* [WAR agent](http://jolokia.org/agent/war.html) if you are using a servlet / EE container +* [OSGi agent](http://jolokia.org/agent/osgi.html) if you are using OSGi (note that Jolokia is enabled by default in [Fuse](http://www.jboss.org/products/fuse) so you don't have to worry) +* [JVM agent](http://jolokia.org/agent/jvm.html) if you are using a stand alone Java process + +So once you've got a jolokia agent in your JVM you can test it by accessing `http://host:port/jolokia` in a browser to see if you can view the JSON returned for the version information of the jolokia agent. + +Assuming you have jolokia working in your JVM, then you can use the **Remote** tab on the **Connect** menu in hawtio to connect; just enter the host, port, jolokia path and user/password. Note by default only `localhost` is accepted to connect for security, so you need to configure `hawtio.proxyWhitelist` system property or `proxyWhitelist` init parameter on `ProxyServlet` in `hawtio.war`'s `WEB-INF/web.xml` to explicitly allow hosts that you are connecting to. + +After trying the above if you have problems connecting to your JVM, please [let us know](http://hawt.io/community/index.html) by [raising an issue](https://github.com/hawtio/hawtio/issues?state=open) and we'll try to help. + +#### How do I install a plugin? + +Each hawtio distro has these [browser based plugins](http://hawt.io/plugins/index.html) inside already; plus hawtio can discover any other external plugins deployed in the same JVM too. + +Then the hawtio UI updates itself in real time based on what it can find in the server side JVM it connects to. So, for example, if you connect to an empty tomcat/jetty you'll just see things like JMX and tomcat/jetty (and maybe wiki / dashboard / maven if you're using hawtio-default.war which has a few more server side plugins inside). + +Then if you deploy a WAR which has ActiveMQ or Camel inside it, you should see an ActiveMQ or Camel tab appear as you deploy code which registers mbeans for ActiveMQ or Camel. + +So usually, if you are interested in a particular plugin and its not visible in the hawtio UI (after checking your preferences in case you disabled it), usually you just need to deploy or add a server side plugin; which is usually a case of deploying some Java code (e.g. ActiveMQ, Camel, Infinispan etc). + +#### What has changed lately? + +Try have a look at the [change log](http://hawt.io/changelog.html) to see the latest changes in hawtio! + +#### Where can I find more information? + +Try have a look at the [articles and demos](http://hawt.io/articles/index.html) to see what other folks are saying about hawtio. + +#### Why does hawtio log a bunch of 404s to the javascript console at startup? + +The hawtio help registry tries to automatically discover help data for each registered plugin even if plugins haven't specifically registered a help file. + +#### Why does hawtio have its own wiki? + +At first a git-based wiki might not seem terribly relevant to hawtio. A wiki can be useful to document running systems and link to the various consoles, operational tools and views. Though in addition to being used for documentation, hawtio's wiki also lets you view and edit any text file; such as Camel routes, Fuse Fabric profiles, Spring XML files, Drools rulebases, etc. + +From a hawtio perspective though its wiki pages can be HTML or Markdown and then be an AngularJS HTML partial. So it can include JavaScript widgets; or it can include [AngularJS directives](http://docs.angularjs.org/guide/directive). + +This lets us use HTML and Markdown files to define custom views using HTML directives (custom tags) from any [hawtio plugins](http://hawt.io/plugins/index.html). Hopefully over time we can build a large library of HTML directives that folks can use inside HTML or Markdown files to show attribute values or charts from MBeans in real time, to show a panel from a dashboard, etc. Then folks can make their own mashups and happy pages showing just the information they want. + +So another way to think of hawtio wiki pages is as a kind of plugin or a custom format of a dashboard page. Right now each dashboard page assumes a grid layout of rectangular widgets which you can add to and then move around. However with a wiki page you can choose to render whatever information & widgets you like in whatever layout you like. You have full control over the content and layout of the page! + +Here are some [sample](https://github.com/hawtio/hawtio/issues/103) [issues](https://github.com/hawtio/hawtio/issues/62) on this if you want to help! + +So whether the hawtio wiki is used for documentation, to link to various hawtio and external resources, to create custom mashups or happy pages or to provide new plugin views--all the content of the wiki is audited, versioned and stored in git so it's easy to see who changed what, when and to roll back changes, etc. + +#### How to I install hawtio as web console for Apache ActiveMQ + +You can use hawtio to remote manage any ActiveMQ brokers without the need to co-install hawtio together with the ActiveMQ broker. However you can also install hawtio with the broker if you want. Dejan Bosanac [blogged how to do this](http://sensatic.net/activemq/activemq-and-hawtio.html). + + +### Problems/General Questions about using hawtio + +Questions relating to errors you get while using hawtio or other general questions: + +#### How can I hide or move tabs to different perspectives? + +An easy way is to use a plugin to reconfigure the default perspective definition. Have a look at the [custom-perspective](https://github.com/hawtio/hawtio/tree/master/hawtio-plugin-examples/custom-perspective) for a plugin-based solution. + +From **hawtio 1.2.2** onwards you can reorder and hide plugins from the preference. + + +#### Provider sun.tools.attach.WindowsAttachProvider could not be instantiated: java.lang.UnsatisfiedLinkError: no attach in java.library.path + +If you see an error like this: + + java.util.ServiceConfigurationError: com.sun.tools.attach.spi.AttachProvider: Provider sun.tools.attach.WindowsAttachProvider could not be instantiated: java.lang.UnsatisfiedLinkError: no attach in java.library.path + +when starting up or trying the **Connect/Local** tab then its probably related to [this issue](http://stackoverflow.com/questions/14027164/fix-the-java-lang-unsatisfiedlinkerror-no-attach-in-java-library-path) as was found on [#718](https://github.com/hawtio/hawtio/issues/718#issuecomment-27677738). + +Basically you need to make sure that you have JAVA_HOME/bin on your path. e.g. try this first before starting hawtio: + + set path=%path%;%JAVA_HOME%\jre\bin + +#### The Terminal plugin in Karaf does not work + +The terminal plugin may have trouble the first time in use, not being able to connect and show the terminal. Try selecting another plugin, and go back to the terminal plugin a bit later, and it then may be able to login. Also if the screen is all black, then pressing ENTER may help show the terminal. + + +#### Why does the Camel Route Diagram not show counters + +If you use Apache ServixeMix / Karaf and you deploy a Camel XML file by copying a xml file to the deploy directory, then the deployer does not run this with proper security. So the Karaf RBAC will deny the Apache Camel plugin to query the Camel routes to gather performance counters. As deploying by using plain XML files is not recommended, then it works by using a deployment unit as a proper OSGi bundle such as a JAR or KAR file. + + +#### The tree keeps refreshing making the UI sluggish + +The reason is that there is something running in the JVM that keeps modifying the JMX tree, such as repeativily adding/removing same set of MBeans. For example Apache ActiveMQ does that when a JMS Client has been mis configured or configured without a connection pool. Because of no connection pool, then ActiveMQ JMS client creates a new connection, uses and closes the connection, and repeat that. As a net result of that, the MBean tree keeps being modified, which causes Hawtio to trigger a tree refresh. To resolve this use connection pooling with ActiveMQ - which you should always do. For an example see [issue 1903](https://github.com/hawtio/hawtio/issues/1903) for more details and how to resolve that. + + +### Plugin Questions + +Questions on using the available plugins: + +#### What plugins are available? + +See the list of [hawtio plugins](http://hawt.io/plugins/index.html) + +#### What is a plugin? + +See [How Plugins Work](http://hawt.io/plugins/howPluginsWork.html) + + +#### Why does the OSGi tab not appear on GlassFish? + +This is a [reported issue](https://github.com/hawtio/hawtio/issues/158). It turns out that the standard OSGi MBeans (in the osgi.core domain) are not installed by default on GlassFish. + +The workaround is to install the [Gemini Management bundle](http://www.eclipse.org/gemini/management/) then you should see the MBeans in the osgi.core domain in the JMX tree; then the OSGi tab should appear! + + +### Camel Questions + +Questions on using [Apache Camel](http://camel.apache.org/) and hawtio. + +#### The Camel plugin is not visible or does not show any Camels + +The Camel plugin currently requires that the Camel MBeans are stored using the default domain name which is `org.apache.camel`. So if you configure Camel to use a different name, using the `mbeanObjectDomainName` configuration, then the Camel plugin will not work. See details reported in ticket [1712](https://github.com/hawtio/hawtio/issues/1712). + +#### Why does the Debug or Trace tab not appear for my Camel route? + +The Debug and Trace tabs depend on the JMX MBeans provided by the Camel release you use. + +* the Debug tab requires at least version 2.12.x or later of your Camel library to be running +* the Trace tab requires either a 2.12.x or later distro of Camel or a Fuse distro of Camel from about 2.8 or later + + +### Developer Questions + +Questions on writing new plugins or hacking on existing ones: + +#### How do I build the project? + +If you just want to run hawtio in a JVM then please see the [Getting Started](http://hawt.io/getstarted/index.html) section. + +If you want to hack the source code then check out [how to build hawtio](http://hawt.io/building/index.html). + +#### What code conventions do you have? + +Check out the [Coding Conventions](https://github.com/hawtio/hawtio/blob/master/docs/CodingConventions.md) for our recommended approach. + +#### What can my new plugin do? + +Anything you like :). So long as it runs on a web browser, you're good to go. Please start [contributing](http://hawt.io/contributing/index.html)! + +#### Do I have to use TypeScript? + +You can write hawtio plugins in anything that runs in a browser and ideally compiles to JavaScript. So use pure JavaScript, CoffeeScript, EcmaScript6-transpiler, TypeScript, GWT, Kotlin, Ceylon, ClojureScript, ScalaJS and [any language that compiles to JavaScript](https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS). + +So take your pick; the person who creates a plugin can use whatever language they prefer, so please contribute a [new plugin](http://hawt.io/contributing/index.html) :). + +The only real APIs a plugin needs to worry about are AngularJS (if you want to work in the core layout rather than just be an iframe), JSON (for some pretty trivial extension points such as adding new tabs), HTML and CSS. + +#### How can I add my new plugin? + +Check out [how plugins work](http://hawt.io/plugins/index.html). You can then either: + +* Fork this project and submit your plugin by [creating a Github pull request](https://help.github.com/articles/creating-a-pull-request) then we'll include your plugin by default in the hawtio distribution. +* Make your own WAR with your plugin added (by depending on the hawtio-web.war in your pom.xml) +* Host your plugin at some canonical website (e.g. with Github pages) then [submit an issue](https://github.com/hawtio/hawtio/issues?state=open) to tell us about it and we can add it to the plugin registry JSON file. + +#### How can I reuse those awesome AngularJS directives in my application? + +We hope that folks can just write plugins for hawtio to be able to reuse all the various [plugins](http://hawt.io/plugins/index.html) in hawtio. + +However if you are writing your own stand alone web application using AngularJS then please check out the [Hawtio Directives](http://hawt.io/directives/) which you should be able to reuse in any AngularJS application diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/LICENSE.txt" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/LICENSE.txt" new file mode 100755 index 0000000..7a4a3ea --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/LICENSE.txt" @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/README.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/README.md" new file mode 100755 index 0000000..8640ad3 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/README.md" @@ -0,0 +1,33 @@ +![hawtio][logo] + +[![CircleCI](https://circleci.com/gh/hawtio/hawtio.svg?style=svg)](https://circleci.com/gh/hawtio/hawtio) + +Don't cha wish your console was [hawt like me?](http://www.youtube.com/watch?v=YNSxNsr4wmA) I'm hawt so you can stay cool + +**[hawtio](http://hawt.io)** is a lightweight and [modular](http://hawt.io/docs/plugins/) HTML5 web console with [lots of plugins](http://hawt.io/docs/plugins/) for managing your Java stuff + +[View Demos](http://hawt.io/docs/articles/) +[Get Started Now!](http://hawt.io/docs/get-started/) + +**hawtio** has [lots of plugins](http://hawt.io/docs/plugins/) such as: a git-based Dashboard and Wiki, [logs](http://hawt.io/plugins/logs/index.html), [health](http://hawt.io/plugins/health/index.html), JMX, OSGi, [Apache ActiveMQ](http://activemq.apache.org/), [Apache Camel](http://camel.apache.org/), [Apache OpenEJB](http://openejb.apache.org/), [Apache Tomcat](http://tomcat.apache.org/), [Jetty](http://www.eclipse.org/jetty/), [JBoss](http://www.jboss.org/jbossas) and [Fuse Fabric](http://fuse.fusesource.org/fabric/) + +You can dynamically [extend hawtio with your own plugins](http://hawt.io/docs/plugins/) or automatically [discover plugins](http://hawt.io/docs/plugins/) inside the JVM. + +The only server side dependency (other than the static HTML/CSS/JS/images) is the excellent [Jolokia library](http://jolokia.org) which has small footprint (around 300Kb) and is available as a [JVM agent](http://jolokia.org/agent/jvm.html), or comes embedded as a servlet inside the **hawtio-default.war** or can be deployed as [an OSGi bundle](http://jolokia.org/agent/osgi.html). + + +## Want to hack on some code? + +We love [contributions](http://hawt.io/docs/contributing/)! + +* [Articles and Demos](http://hawt.io/docs/articles/) +* [FAQ](http://hawt.io/docs/faq/) +* [Change Log](CHANGES.md) +* [How to contribute](http://hawt.io/docs/contributing/) +* [How to build the code](BUILDING.md) +* [How to get started working on the code](DEVELOPERS.md) +* [Community](http://hawt.io/community/) + +Check out our [huboard](https://huboard.com/hawtio/hawtio#/) for prioritizing issues. + +[logo]: http://hawt.io/images/hawtio_logo.svg "hawtio" diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/bin/release" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/bin/release" new file mode 100755 index 0000000..cd5199b --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/bin/release" @@ -0,0 +1,47 @@ +#!/bin/sh + +if [ -z $2 ]; then + echo "Usage: `basename $0` [path to m2 settings file]" + exit +fi + +RELEASE_VERSION=$1 +SNAPSHOT_VERSION=$2 +M2_SETTINGS=${3:-$HOME/.m2/settings.xml} + +echo ============================================================================ +echo Building version $RELEASE_VERSION +echo ============================================================================ + +mvn -s $M2_SETTINGS \ + org.apache.maven.plugins:maven-release-plugin:2.5:prepare \ + -Prelease \ + -Dtag=hawtio-$RELEASE_VERSION \ + -DreleaseVersion=$RELEASE_VERSION \ + -DdevelopmentVersion=$SNAPSHOT_VERSION + +mvn -s $M2_SETTINGS \ + org.apache.maven.plugins:maven-release-plugin:2.5:perform -Prelease + +git push --tags + +REPO_ID=$(mvn org.sonatype.plugins:nexus-staging-maven-plugin:1.6.5:rc-list -DserverId=oss-sonatype-staging -DnexusUrl=https://oss.sonatype.org | grep OPEN | grep -Eo 'iohawt-[[:digit:]]+') +echo ============================================================================ +echo REPO_ID = $REPO_ID +echo ============================================================================ + +mvn -s $M2_SETTINGS \ + org.sonatype.plugins:nexus-staging-maven-plugin:1.6.5:rc-close \ + -DserverId=oss-sonatype-staging \ + -DnexusUrl=https://oss.sonatype.org \ + -DstagingRepositoryId=$REPO_ID \ + -Ddescription="$RELEASE_VERSION is ready" \ + -DstagingProgressTimeoutMinutes=60 + +mvn -s $M2_SETTINGS \ + org.sonatype.plugins:nexus-staging-maven-plugin:1.6.5:rc-release \ + -DserverId=oss-sonatype-staging \ + -DnexusUrl=https://oss.sonatype.org \ + -DstagingRepositoryId=$REPO_ID \ + -Ddescription="$RELEASE_VERSION is ready" \ + -DstagingProgressTimeoutMinutes=60 diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/bom/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/bom/pom.xml" new file mode 100755 index 0000000..fec98bd --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/bom/pom.xml" @@ -0,0 +1,111 @@ + + + 4.0.0 + + + io.hawt + project + 2.5.0 + + + hawtio-bom + pom + ${project.artifactId} + hawtio :: BOM + + + + + io.hawt + hawtio-app + ${project.version} + + + io.hawt + hawtio-base + ${project.version} + + + io.hawt + hawtio-console-assembly + ${project.version} + + + io.hawt + hawtio-core + ${project.version} + + + io.hawt + hawtio-default + ${project.version} + + + io.hawt + hawtio-embedded + ${project.version} + + + io.hawt + hawtio-ide + ${project.version} + + + io.hawt + hawtio-karaf + ${project.version} + + + io.hawt + hawtio-log + ${project.version} + + + io.hawt + hawtio-log-osgi + ${project.version} + + + io.hawt + hawtio-local-jvm-mbean + ${project.version} + + + io.hawt + hawtio-osgi-jmx + ${project.version} + + + io.hawt + hawtio-springboot + ${project.version} + + + io.hawt + hawtio-springboot-1 + ${project.version} + + + io.hawt + hawtio-system + ${project.version} + + + io.hawt + hawtio-util + ${project.version} + + + io.hawt + hawtio-war + ${project.version} + + + io.hawt + hawtio-wildfly + ${project.version} + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/README.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/README.md" new file mode 100755 index 0000000..71d827f --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/README.md" @@ -0,0 +1,171 @@ +# Hawtio integration with Keycloak + +Hawtio's Keycloak integration is provided through [hawtio-oauth](https://github.com/hawtio/hawtio-oauth). + +Those steps assume that you want your Hawtio console to be secured by [Keycloak](http://www.keycloak.org). Integration consists of 2 main steps: + +1. Prepare Keycloak server +2. Deploy Hawtio to your favourite server (Spring Boot, WildFly, Karaf, Jetty, Tomcat, Red Hat Fuse, ...) and configure it to use Keycloak for authentication + + +## Table of contents + +1. [Prepare Keycloak server](#prepare-keycloak-server) +2. [Apache Karaf or Red Hat Fuse](#apache-karaf-or-red-hat-fuse) +3. [WildFly or JBoss EAP](#wildfly-or-jboss-eap) +4. [Jetty](#jetty) +5. [Tomcat](#tomcat) + + +## Prepare Keycloak server + +1. Install and run Keycloak server. The easiest way is to use [Docker image](https://hub.docker.com/r/jboss/keycloak/): + + $ docker run -d -p 18080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin --name keycloak jboss/keycloak + + Here we use port number `18080` for Keycloak server to avoid conflict with the default port number of most application servers. + +2. Import [hawtio-demo-realm.json](https://github.com/hawtio/hawtio-oauth/blob/master/test-plugins/hawtio-demo-realm.json) into your Keycloak. To do that, go to the Keycloak admin console (http://localhost:18080/auth/admin/) and select "Add realm" and then select the JSON file. It creates `hawtio-demo` realm. + +`hawtio-demo` realm has `hawtio-client` application installed as public client. There are a couple of realm roles like `admin` and `viewer`. Names of these roles are the same as default Hawtio roles, which are allowed to login into Hawtio admin console and to JMX. + +There are also 3 users: + +* `admin` with password `admin` and role `admin`, who is allowed to login into Hawtio +* `viewer` with password `viewer` and role `viewer`, who is allowed to login into Hawtio +* `jdoe` with password `password` and no role assigned, who is not allowed to login into Hawtio + + +## Apache Karaf or Red Hat Fuse + +Assume `$KARAF_HOME` is the root directory of your Karaf/Fuse installation. + +* Run Karaf/Fuse: + + cd $KARAF_HOME/bin + ./karaf + + Replace `./karaf` with `./fuse` if you are on Red Hat Fuse. + +* Install Hawtio: + + feature:add-repo hawtio 2.0-beta-2 + feature:install hawtio + +* Install [pax-keycloak](https://github.com/ops4j/org.ops4j.pax.keycloak): + + feature:add-repo pax-keycloak + feature:install pax-keycloak + + This automatically generates `keycloak-hawtio.json`, `keycloak-bearer.json`, and `keycloak-direct-access.json` files under `$KARAF_HOME/etc/`. It also updates `$KARAF_HOME/etc/system.properties` with the following system properties: + + # Hawtio / Keycloak integration + hawtio.keycloakEnabled = true + hawtio.roles = admin,manager,viewer + hawtio.realm = karaf + hawtio.keycloakClientConfig = file://${karaf.etc}/keycloak-hawtio.json + hawtio.rolePrincipalClasses=org.keycloak.adapters.jaas.RolePrincipal,org.apache.karaf.jaas.boot.principal.RolePrincipal + +* Replace them with [keycloak-hawtio.json](keycloak-hawtio.json), [keycloak-bearer.json](keycloak-bearer.json), and [keycloak-direct-access.json](keycloak-direct-access.json) in this example. File `keycloak-bearer.json` is currently used for adapters on server (JAAS Login module) side. File `keycloak-hawtio.json` is used on client (Hawtio JS application) side. File `keycloak-direct-access.json` is not used but the realm name needs to be updated. + + cp examples/keycloak-integration/keycloak-hawtio.json $KARAF_HOME/etc/ + cp examples/keycloak-integration/keycloak-bearer.json $KARAF_HOME/etc/ + cp examples/keycloak-integration/keycloak-direct-access.json $KARAF_HOME/etc/ + +* Restart Karaf/Fuse. + +* Go to http://localhost:8181/hawtio and login to Keycloak as `admin` or `viewer` to see Hawtio admin console. If you login as `jdoe`, you should receive "forbidden" error in Hawtio. + + +## WildFly or JBoss EAP + +Assume `$JBOSS_HOME` is the root directory of your WildFly/JBoss EAP installation and you deployed Hawtio WAR to it as described in [hawtio Get Started](http://hawt.io/getstarted/index.html). + +* Install Keycloak adapter subsystem to your WildFly as described on: http://www.keycloak.org/docs/3.4/securing_apps/index.html#_jboss_adapter + +* Download and copy [keycloak-hawtio.json](keycloak-hawtio.json) and [keycloak-bearer.json](keycloak-bearer.json) into WildFly. File `keycloak-bearer.json` is currently used for adapters on server (JAAS Login module) side. File `keycloak-hawtio.json` is used on client (Hawtio JS application) side. + + cp examples/keycloak-integration/keycloak-hawtio.json $JBOSS_HOME/standalone/configuration/ + cp examples/keycloak-integration/keycloak-bearer.json $JBOSS_HOME/standalone/configuration/ + +* In `$JBOSS_HOME/standalone/configuration/standalone.xml` configure system properties like this: + + + ... + + + + + + + + + + + + + Also add `hawtio` realm to this file in `` section: + + + + + + + + + +* Add the `` section to the `keycloak` subsystem in `$JBOSS_HOME/standalone/configuration/standalone.xml`. It should ensure that Hawtio WAR is able to find the JAAS login modules. + + + + does-not-matter + does-not-matter + + + +* Run WildFly on port `8080` and go to http://localhost:8080/hawtio. Users are again `admin` and `viewer` with access and `jdoe` without access. + + +## Jetty + +Assume `$JETTY_HOME` is the root directory of your Jetty installation and you deployed Hawtio WAR to Jetty as described in [hawtio Get Started](http://hawt.io/getstarted/index.html). + +* Install Keycloak Jetty adapter into your Jetty server as described on: http://www.keycloak.org/docs/3.4/securing_apps/index.html#_jetty9_adapter + +* Download and copy [keycloak-hawtio.json](keycloak-hawtio.json) and [keycloak-bearer.json](keycloak-bearer.json) into Jetty. File `keycloak-bearer.json` is currently used for adapters on server (JAAS Login module) side. File `keycloak-hawtio.json` is used on client (Hawtio JS application) side. + + cp examples/keycloak-integration/keycloak-hawtio.json $JETTY_HOME/etc/ + cp examples/keycloak-integration/keycloak-bearer.json $JETTY_HOME/etc/ + +* Create file `$JETTY_HOME/etc/login.conf` with the content like this: + + hawtio { + org.keycloak.adapters.jaas.BearerTokenLoginModule required + keycloak-config-file="${hawtio.keycloakServerConfig}"; + }; + +* Export `JETTY_HOME` in your terminal. For example: + + export JETTY_HOME=/mydir/jetty-distribution-9.x.x + +* Export `JAVA_OPTIONS` and add all necessary system properties similarly like this: + + export JAVA_OPTIONS="-Dhawtio.authenticationEnabled=true \ + -Dhawtio.realm=hawtio \ + -Dhawtio.keycloakEnabled=true \ + -Dhawtio.roles=admin,manager,viewer \ + -Dhawtio.rolePrincipalClasses=org.keycloak.adapters.jaas.RolePrincipal \ + -Dhawtio.keycloakClientConfig=$JETTY_HOME/etc/keycloak-hawtio.json \ + -Dhawtio.keycloakServerConfig=$JETTY_HOME/etc/keycloak-bearer.json \ + -Djava.security.auth.login.config=$JETTY_HOME/etc/login.conf" + +* Run Jetty and go to http://localhost:8080/hawtio. Users are again `admin` and `viewer` with access and `jdoe` without access. + + +## Tomcat + +Instructions are quite similar to Jetty. You would need to setup JAAS realm and set the system properties. Just use Tomcat adapter instead of the Jetty one. Also you may need to add this system property (really empty value): + + -Dhawtio.authenticationContainerDiscoveryClasses= + +This is needed, so that Tomcat will use configured JAAS realm with `BearerTokenLoginModule` instead of `tomcat-users.xml` file, which Hawtio uses on Tomcat by default. diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-bearer.json" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-bearer.json" new file mode 100755 index 0000000..c488a52 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-bearer.json" @@ -0,0 +1,9 @@ +{ + "realm": "hawtio-demo", + "resource": "jaas", + "bearer-only": true, + "auth-server-url": "http://localhost:18080/auth", + "ssl-required": "external", + "use-resource-role-mappings": false, + "principal-attribute": "preferred_username" +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-direct-access.json" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-direct-access.json" new file mode 100755 index 0000000..07e2b0f --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-direct-access.json" @@ -0,0 +1,9 @@ +{ + "realm": "hawtio-demo", + "resource": "ssh-jmx-admin-client", + "ssl-required": "external", + "auth-server-url": "http://localhost:18080/auth", + "credentials": { + "secret": "password" + } +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-hawtio.json" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-hawtio.json" new file mode 100755 index 0000000..24b0ac6 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/keycloak-hawtio.json" @@ -0,0 +1,5 @@ +{ + "url": "http://localhost:18080/auth", + "realm": "hawtio-demo", + "clientId": "hawtio-client" +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/login.conf" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/login.conf" new file mode 100755 index 0000000..3a20549 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/login.conf" @@ -0,0 +1,4 @@ +hawtio { + org.keycloak.adapters.jaas.BearerTokenLoginModule required + keycloak-config-file="${hawtio.keycloakServerConfig}"; +}; diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/run-hawtio.sh" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/run-hawtio.sh" new file mode 100755 index 0000000..76845ac --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/keycloak-integration/run-hawtio.sh" @@ -0,0 +1,27 @@ +#!/bin/sh + +if [ -z $1 ]; then + echo "Usage:" + echo " ./run-hawtio.sh " + exit 1 +fi + +HOME=`cd $(dirname $0); pwd` + +JAVA_OPTS="$JAVA_OPTS -Dhawtio.authenticationEnabled=true" +JAVA_OPTS="$JAVA_OPTS -Dhawtio.realm=hawtio" +JAVA_OPTS="$JAVA_OPTS -Dhawtio.keycloakEnabled=true" +JAVA_OPTS="$JAVA_OPTS -Dhawtio.roles=admin,manager,viewer" +JAVA_OPTS="$JAVA_OPTS -Dhawtio.rolePrincipalClasses=org.keycloak.adapters.jaas.RolePrincipal" +JAVA_OPTS="$JAVA_OPTS -Dhawtio.keycloakClientConfig=$HOME/keycloak-hawtio.json" +JAVA_OPTS="$JAVA_OPTS -Dhawtio.keycloakServerConfig=$HOME/keycloak-bearer.json" +JAVA_OPTS="$JAVA_OPTS -Djava.security.auth.login.config=$HOME/login.conf" + +echo ========================================================================= +echo +echo " hawtio integration with Keycloak" +echo +echo " java $JAVA_OPTS -jar $*" +echo +echo ========================================================================= +java $JAVA_OPTS -jar $* diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/README.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/README.md" new file mode 100755 index 0000000..1afb4dc --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/README.md" @@ -0,0 +1,11 @@ +# Hawtio Spring boot 1 Authentication Example + +Sample application for Hawtio + Spring Boot 1 with authentication enabled. + +Run with + + mvn spring-boot:run + +Browse Hawtio using the url: http://localhost:10001/hawtio/index.html + +Log in with user: `hawtio` password: `hawtio` diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/pom.xml" new file mode 100755 index 0000000..3400b7e --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/pom.xml" @@ -0,0 +1,103 @@ + + + + 4.0.0 + + + io.hawt + project + 2.5.0 + ../.. + + + io.hawt.examples + hawtio-example-springboot-1-authentication + ${project.artifactId} + hawtio :: Sample Spring Boot 1.x process with authentication + war + + + + 9.4.9.v20180320 + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot1-version} + pom + import + + + io.hawt + hawtio-bom + ${project.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.springframework.boot + spring-boot-starter-undertow + + + org.eclipse.jetty + jetty-jaas + ${jetty.version} + + + org.eclipse.jetty + jetty-http + + + org.springframework.boot + spring-boot-actuator + + + io.hawt + hawtio-springboot-1 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot1-version} + + io.hawt.example.spring.boot.SampleAuthenticationSpringBootService + + + + + repackage + + + + + + maven-war-plugin + + false + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/HelloController.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/HelloController.java" new file mode 100755 index 0000000..3c6b7a8 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/HelloController.java" @@ -0,0 +1,16 @@ +package io.hawt.example.spring.boot; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class HelloController { + + @RequestMapping("/") + @ResponseBody + public String hello() { + return "Hello World!"; + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/PropertyFileLoginModule.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/PropertyFileLoginModule.java" new file mode 100755 index 0000000..5fcb1ee --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/PropertyFileLoginModule.java" @@ -0,0 +1,108 @@ +package io.hawt.example.spring.boot; + +import org.eclipse.jetty.jaas.spi.AbstractLoginModule; +import org.eclipse.jetty.jaas.spi.UserInfo; +import org.eclipse.jetty.security.PropertyUserStore; +import org.eclipse.jetty.server.UserIdentity; +import org.eclipse.jetty.util.security.Credential; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.security.auth.Subject; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.login.LoginException; + +import java.security.Principal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Sample PropertyFileLoginModule. + */ +public class PropertyFileLoginModule extends AbstractLoginModule { + public static final String DEFAULT_FILENAME = "realm.properties"; + + private static final Logger LOG = LoggerFactory.getLogger(PropertyFileLoginModule.class); + private static ConcurrentHashMap PROPERTY_USERSTORES = new ConcurrentHashMap<>(); + + private boolean hotReload = false; + private String filename = null; + + /** + * Read contents of the configured property file. + * + * @param subject + * @param callbackHandler + * @param sharedState + * @param options + * @see javax.security.auth.spi.LoginModule#initialize(Subject, CallbackHandler, Map, Map) + */ + @Override + public void initialize(final Subject subject, final CallbackHandler callbackHandler, + final Map sharedState, final Map options) { + super.initialize(subject, callbackHandler, sharedState, options); + setupPropertyUserStore(options); + } + + private void setupPropertyUserStore(final Map options) { + parseConfig(options); + + if (PROPERTY_USERSTORES.get(filename) == null) { + final PropertyUserStore propertyUserStore = new PropertyUserStore(); + propertyUserStore.setConfig(filename); + propertyUserStore.setHotReload(hotReload); + + final PropertyUserStore prev = PROPERTY_USERSTORES.putIfAbsent(filename, propertyUserStore); + if (prev == null) { + LOG.info("setupPropertyUserStore: Starting new PropertyUserStore. PropertiesFile: " + filename + + " hotReload: " + hotReload); + + try { + propertyUserStore.start(); + } catch (Exception e) { + LOG.warn("Exception while starting propertyUserStore: ", e); + } + } + } + } + + private void parseConfig(final Map options) { + String tmp = (String) options.get("file"); + filename = (tmp == null ? DEFAULT_FILENAME : tmp); + filename = System.getProperty("login.file", filename); + tmp = (String) options.get("hotReload"); + hotReload = tmp == null ? hotReload : Boolean.parseBoolean(tmp); + } + + @Override + public UserInfo getUserInfo(final String userName) { + final PropertyUserStore propertyUserStore = PROPERTY_USERSTORES.get(filename); + if (propertyUserStore == null) { + throw new IllegalStateException("PropertyUserStore should never be null here!"); + } + + LOG.trace("Checking PropertyUserStore " + filename + " for " + userName); + final UserIdentity userIdentity = propertyUserStore.getUserIdentity(userName); + if (userIdentity == null) { + return null; + } + + final Set principals = userIdentity.getSubject().getPrincipals(); + final List roles = new ArrayList<>(); + for (final Principal principal : principals) { + roles.add(principal.getName()); + } + + final Credential credential = (Credential) userIdentity.getSubject().getPrivateCredentials().iterator().next(); + LOG.trace("Found: " + userName + " in PropertyUserStore " + filename); + return new UserInfo(userName, credential, roles); + } + + @Override + public boolean logout() throws LoginException { + return true; + } +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/SampleAuthenticationSpringBootService.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/SampleAuthenticationSpringBootService.java" new file mode 100755 index 0000000..2a795ee --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/java/io/hawt/example/spring/boot/SampleAuthenticationSpringBootService.java" @@ -0,0 +1,71 @@ +package io.hawt.example.spring.boot; + +import java.net.URL; + +import io.hawt.config.ConfigFacade; +import io.hawt.springboot.HawtPlugin; +import io.hawt.web.auth.AuthenticationConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class SampleAuthenticationSpringBootService { + + private static final Logger LOG = LoggerFactory.getLogger(SampleAuthenticationSpringBootService.class); + private static final String JAVA_SECURITY_AUTH_LOGIN_CONFIG = "java.security.auth.login.config"; + + + public static void main(String[] args) { + System.setProperty(AuthenticationConfiguration.HAWTIO_AUTHENTICATION_ENABLED, "false"); + SpringApplication.run(SampleAuthenticationSpringBootService.class, args); + } + + /** + * Loading an example plugin. + */ + @Bean + public HawtPlugin samplePlugin() { + return new HawtPlugin("sample-plugin", "plugins", "", new String[] { "sample-plugin/js/sample-plugin.js" }); + } + + /** + * Configure facade to use authentication. + * + * @return config + * @throws Exception if an error occurs + */ + @Bean(initMethod = "init") + public ConfigFacade configFacade() throws Exception { + + final URL loginResource = this.getClass().getClassLoader().getResource("login.conf"); + if (loginResource != null) { + setSystemPropertyIfNotSet(JAVA_SECURITY_AUTH_LOGIN_CONFIG, loginResource.getFile()); + } + LOG.info("Using loginResource " + JAVA_SECURITY_AUTH_LOGIN_CONFIG + " : " + System + .getProperty(JAVA_SECURITY_AUTH_LOGIN_CONFIG)); + + final URL loginFile = this.getClass().getClassLoader().getResource("realm.properties"); + if (loginFile != null) { + setSystemPropertyIfNotSet("login.file", loginFile.getFile()); + } + LOG.info("Using login.file : " + System.getProperty("login.file")); + + setSystemPropertyIfNotSet(AuthenticationConfiguration.HAWTIO_ROLES, "admin"); + setSystemPropertyIfNotSet(AuthenticationConfiguration.HAWTIO_REALM, "hawtio"); + setSystemPropertyIfNotSet(AuthenticationConfiguration.HAWTIO_ROLE_PRINCIPAL_CLASSES, "org.eclipse.jetty.jaas.JAASRole"); + if (!Boolean.getBoolean("debugMode")) { + System.setProperty(AuthenticationConfiguration.HAWTIO_AUTHENTICATION_ENABLED, "true"); + } + return new ConfigFacade(); + } + + private void setSystemPropertyIfNotSet(final String key, final String value) { + if (System.getProperty(key) == null) { + System.setProperty(key, value); + } + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/application.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/application.properties" new file mode 100755 index 0000000..4379ceb --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/application.properties" @@ -0,0 +1,10 @@ +server.port = 10000 +management.port = 10001 + +endpoints.jolokia.sensitive = false +endpoints.hawtio.sensitive = false + +logging.level.io.hawt = INFO +logging.level.org.springframework = WARN +logging.level.io.undertow = WARN +logging.level.org.eclipse.jetty = WARN diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/banner.txt" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/banner.txt" new file mode 100755 index 0000000..e832f57 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/banner.txt" @@ -0,0 +1,9 @@ + _______________________________ +/ Hawtio SpringBoot Sample With \ +\ Authentication / + ------------------------------- + \ ^__^ + \ (oo)\_______ + (__)\ )\/\ + ||----w | + || || diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/jolokia-access.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/jolokia-access.xml" new file mode 100755 index 0000000..d714f34 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/jolokia-access.xml" @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + read + write + exec + list + version + search + + + + + + + + + + com.mchange.v2.c3p0:type=PooledDataSource,* + properties + + + + + + + * + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/login.conf" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/login.conf" new file mode 100755 index 0000000..6c4cfc1 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/login.conf" @@ -0,0 +1,3 @@ +hawtio { + io.hawt.example.spring.boot.PropertyFileLoginModule required; +}; diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/realm.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/realm.properties" new file mode 100755 index 0000000..77055d3 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/resources/realm.properties" @@ -0,0 +1,7 @@ +# +# Hash generated with: +# java -cp ~/.m2/repository/org/eclipse/jetty/jetty-util/9.2.11.v20150529/jetty-util-9.2.11.v20150529.jar org.eclipse.jetty.util.security.Password hawtio hawtio +# + +hawtio: MD5:2d3c8a35f1d0c2a1a6ff1dc4ba221476,user,admin + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/webapp/app/sample-plugin/html/sample-plugin.html" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/webapp/app/sample-plugin/html/sample-plugin.html" new file mode 100755 index 0000000..d76f916 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/webapp/app/sample-plugin/html/sample-plugin.html" @@ -0,0 +1,8 @@ +
+ +
+

Demo Page

+

{{message}}

+
+ +
\ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/webapp/app/sample-plugin/js/sample-plugin.js" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/webapp/app/sample-plugin/js/sample-plugin.js" new file mode 100755 index 0000000..928c6f0 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1-authentication/src/main/webapp/app/sample-plugin/js/sample-plugin.js" @@ -0,0 +1,41 @@ +var SamplePlugin = (function(SamplePlugin) { + + SamplePlugin.pluginName = 'sample-plugin'; + SamplePlugin.log = Logger.get('SamplePlugin'); + SamplePlugin.contextPath = window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/")) + "/plugins/"; + SamplePlugin.templatePath = SamplePlugin.contextPath + "sample-plugin/html/"; + + SamplePlugin.module = angular.module('sample-plugin', ['hawtioCore']) + .config(function($routeProvider) { + $routeProvider. + when('/sample-plugin', { + templateUrl: SamplePlugin.templatePath + 'sample-plugin.html' + }); + }); + + SamplePlugin.module.run(function(workspace, viewRegistry, layoutFull) { + + SamplePlugin.log.info(SamplePlugin.pluginName, " loaded"); + viewRegistry["sample-plugin"] = layoutFull; + workspace.topLevelTabs.push({ + id: "samplePlugin", + content: "Sample Plugin", + title: "Sample plugin loaded dynamically", + isValid: function(workspace) { return true; }, + href: function() { return "#/sample-plugin"; }, + isActive: function(workspace) { return workspace.isLinkActive("sample-plugin"); } + + }); + + }); + + SamplePlugin.SamplePluginController = function($scope, jolokia) { + $scope.message = "hello world"; + Core.$apply($scope); + }; + + return SamplePlugin; + +})(SamplePlugin || {}); + +hawtioPluginLoader.addModule(SamplePlugin.pluginName); \ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/README.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/README.md" new file mode 100755 index 0000000..1da3fdb --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/README.md" @@ -0,0 +1,32 @@ +# Hawtio Spring Boot 1 Example + +This sample application shows how to run Hawtio with Spring Boot 1. + +## How to run + +Run with: + + mvn spring-boot:run + +Hawtio is exposed at the [Actuator](https://docs.spring.io/spring-boot/docs/1.5.x/reference/html/production-ready-endpoints.html) management port configured using +`management.port` in `appplication.properties`. Browse Hawtio via the following URL: http://localhost:10001/hawtio/index.html + +The actual application is running on port 10000 (`server.port` in `application.properties`). + +## Alternative configurations + +Alternative ports and context path configurations can be tested by changing the following properties in `application.properties`: + +``` +server.port = 10000 +server.contextPath = /sample-app +management.port = 10000 +management.contextPath = /management +``` + +Using the above configuration, the server will use port 10000 and the custom context path `sample-app`. +The Actuator management endpoints and Hawtio will also run on port 10000 using the custom management context path `management`. +The URLs for accessing the application and Hawtio are as follows: + +- Application: http://localhost:10000/sample-app/ +- Hawtio: http://localhost:10000/sample-app/management/hawtio diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/pom.xml" new file mode 100755 index 0000000..4fe7452 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/pom.xml" @@ -0,0 +1,127 @@ + + + + 4.0.0 + + + io.hawt + project + 2.5.0 + ../.. + + + io.hawt.examples + hawtio-example-springboot-1 + ${project.artifactId} + hawtio :: Sample Spring Boot 1.x process + war + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot1-version} + pom + import + + + org.apache.camel + camel-spring-boot-dependencies + ${camel-2.21-version} + pom + import + + + io.hawt + hawtio-bom + ${project.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.springframework.boot + spring-boot-starter-undertow + + + io.undertow + undertow-websockets-jsr + + + + + org.springframework.boot + spring-boot-actuator + + + + + io.hawt + hawtio-springboot-1 + + + + + org.apache.camel + camel-spring-boot-starter + + + org.apache.camel + camel-stream-starter + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot1-version} + + io.hawt.example.spring.boot.SampleSpringBootService + + + + + repackage + + + + + + + maven-war-plugin + + false + + + + + + io.hawt + hawtio-maven-plugin + ${project.version} + + io.hawt.example.spring.boot.SampleSpringBootService + + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/HelloController.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/HelloController.java" new file mode 100755 index 0000000..3c6b7a8 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/HelloController.java" @@ -0,0 +1,16 @@ +package io.hawt.example.spring.boot; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class HelloController { + + @RequestMapping("/") + @ResponseBody + public String hello() { + return "Hello World!"; + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/SampleCamelRouter.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/SampleCamelRouter.java" new file mode 100755 index 0000000..afe8d31 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/SampleCamelRouter.java" @@ -0,0 +1,17 @@ +package io.hawt.example.spring.boot; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; + +@Component +public class SampleCamelRouter extends RouteBuilder { + + @Override + public void configure() throws Exception { + from("timer:hello?period={{timer.period}}") + .setBody().constant("Hello Camel!") + .to("stream:out") + .to("mock:result"); + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/SampleSpringBootService.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/SampleSpringBootService.java" new file mode 100755 index 0000000..0a74cba --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/java/io/hawt/example/spring/boot/SampleSpringBootService.java" @@ -0,0 +1,41 @@ +package io.hawt.example.spring.boot; + +import io.hawt.config.ConfigFacade; +import io.hawt.springboot.HawtPlugin; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.support.SpringBootServletInitializer; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class SampleSpringBootService extends SpringBootServletInitializer { + + public static void main(String[] args) { + SpringApplication.run(SampleSpringBootService.class, args); + } + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(SampleSpringBootService.class); + } + + /** + * Loading an example plugin. + */ + @Bean + public HawtPlugin samplePlugin() { + return new HawtPlugin("sample-plugin", + "plugins", + "", + new String[] { "sample-plugin/js/sample-plugin.js" }); + } + + /** + * Set things up to be in offline mode. + */ + @Bean + public ConfigFacade configFacade() { + return ConfigFacade.getSingleton(); + } +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/resources/application.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/resources/application.properties" new file mode 100755 index 0000000..5af461b --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/resources/application.properties" @@ -0,0 +1,15 @@ +server.port = 10000 +management.port = 10001 + +endpoints.jolokia.sensitive = false +endpoints.hawtio.sensitive = false + +logging.level.io.hawt = INFO +logging.level.org.springframework = WARN +logging.level.io.undertow = WARN + +camel.springboot.name = SampleCamel +timer.period = 10000 + +hawtio.authenticationEnabled = false + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/resources/banner.txt" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/resources/banner.txt" new file mode 100755 index 0000000..3770eff --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/resources/banner.txt" @@ -0,0 +1,8 @@ + __________________________ +< Hawtio SpringBoot Sample > + -------------------------- + \ ^__^ + \ (oo)\_______ + (__)\ )\/\ + ||----w | + || || diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/webapp/app/sample-plugin/html/sample-plugin.html" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/webapp/app/sample-plugin/html/sample-plugin.html" new file mode 100755 index 0000000..d76f916 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/webapp/app/sample-plugin/html/sample-plugin.html" @@ -0,0 +1,8 @@ +
+ +
+

Demo Page

+

{{message}}

+
+ +
\ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/webapp/app/sample-plugin/js/sample-plugin.js" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/webapp/app/sample-plugin/js/sample-plugin.js" new file mode 100755 index 0000000..2b425eb --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-1/src/main/webapp/app/sample-plugin/js/sample-plugin.js" @@ -0,0 +1,41 @@ +var SamplePlugin = (function(SamplePlugin) { + + SamplePlugin.pluginName = 'sample-plugin'; + SamplePlugin.log = Logger.get('SamplePlugin'); + SamplePlugin.contextPath = window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/")) + "/plugins/"; + SamplePlugin.templatePath = SamplePlugin.contextPath + "sample-plugin/html/"; + + SamplePlugin.module = angular.module('sample-plugin', ['hawtioCore']) + .config(function($routeProvider) { + $routeProvider. + when('/sample-plugin', { + templateUrl: SamplePlugin.templatePath + 'sample-plugin.html' + }); + }); + + SamplePlugin.module.run(function(workspace, viewRegistry, layoutFull) { + + SamplePlugin.log.info(SamplePlugin.pluginName, " loaded"); + viewRegistry["sample-plugin"] = layoutFull; + workspace.topLevelTabs.push({ + id: "samplePlugin", + content: "Sample Plugin", + title: "Sample plugin loaded dynamically", + isValid: function(workspace) { return true; }, + href: function() { return "#/sample-plugin"; }, + isActive: function(workspace) { return workspace.isLinkActive("sample-plugin"); } + + }); + + }); + + SamplePlugin.SamplePluginController = function($scope, jolokia) { + $scope.message = "hello world"; + Core.$apply($scope); + }; + + return SamplePlugin; + +})(SamplePlugin || {}); + +hawtioPluginLoader.addModule(SamplePlugin.pluginName); diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/README.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/README.md" new file mode 100755 index 0000000..c7e17b2 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/README.md" @@ -0,0 +1,11 @@ +# Hawtio Spring boot 2 Authentication Example + +Sample application for Hawtio + Spring Boot 2 with authentication enabled. + +Run with + + mvn spring-boot:run + +Browse Hawtio using the url: http://localhost:10001/actuator/hawtio/index.html + +Log in with user: `hawtio` password: `hawtio` diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/pom.xml" new file mode 100755 index 0000000..7d67b74 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/pom.xml" @@ -0,0 +1,103 @@ + + + + 4.0.0 + + + io.hawt + project + 2.5.0 + ../.. + + + io.hawt.examples + hawtio-example-springboot-authentication + ${project.artifactId} + hawtio :: Sample Spring Boot 2.x process with authentication + war + + + + 9.4.11.v20180605 + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot-version} + pom + import + + + io.hawt + hawtio-bom + ${project.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.springframework.boot + spring-boot-starter-undertow + + + org.eclipse.jetty + jetty-jaas + ${jetty.version} + + + org.eclipse.jetty + jetty-http + + + org.springframework.boot + spring-boot-starter-actuator + + + io.hawt + hawtio-springboot + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-version} + + io.hawt.example.spring.boot.SampleAuthenticationSpringBootService + + + + + repackage + + + + + + maven-war-plugin + + false + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/HelloController.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/HelloController.java" new file mode 100755 index 0000000..3c6b7a8 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/HelloController.java" @@ -0,0 +1,16 @@ +package io.hawt.example.spring.boot; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class HelloController { + + @RequestMapping("/") + @ResponseBody + public String hello() { + return "Hello World!"; + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/PropertyFileLoginModule.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/PropertyFileLoginModule.java" new file mode 100755 index 0000000..5fcb1ee --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/PropertyFileLoginModule.java" @@ -0,0 +1,108 @@ +package io.hawt.example.spring.boot; + +import org.eclipse.jetty.jaas.spi.AbstractLoginModule; +import org.eclipse.jetty.jaas.spi.UserInfo; +import org.eclipse.jetty.security.PropertyUserStore; +import org.eclipse.jetty.server.UserIdentity; +import org.eclipse.jetty.util.security.Credential; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.security.auth.Subject; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.login.LoginException; + +import java.security.Principal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Sample PropertyFileLoginModule. + */ +public class PropertyFileLoginModule extends AbstractLoginModule { + public static final String DEFAULT_FILENAME = "realm.properties"; + + private static final Logger LOG = LoggerFactory.getLogger(PropertyFileLoginModule.class); + private static ConcurrentHashMap PROPERTY_USERSTORES = new ConcurrentHashMap<>(); + + private boolean hotReload = false; + private String filename = null; + + /** + * Read contents of the configured property file. + * + * @param subject + * @param callbackHandler + * @param sharedState + * @param options + * @see javax.security.auth.spi.LoginModule#initialize(Subject, CallbackHandler, Map, Map) + */ + @Override + public void initialize(final Subject subject, final CallbackHandler callbackHandler, + final Map sharedState, final Map options) { + super.initialize(subject, callbackHandler, sharedState, options); + setupPropertyUserStore(options); + } + + private void setupPropertyUserStore(final Map options) { + parseConfig(options); + + if (PROPERTY_USERSTORES.get(filename) == null) { + final PropertyUserStore propertyUserStore = new PropertyUserStore(); + propertyUserStore.setConfig(filename); + propertyUserStore.setHotReload(hotReload); + + final PropertyUserStore prev = PROPERTY_USERSTORES.putIfAbsent(filename, propertyUserStore); + if (prev == null) { + LOG.info("setupPropertyUserStore: Starting new PropertyUserStore. PropertiesFile: " + filename + + " hotReload: " + hotReload); + + try { + propertyUserStore.start(); + } catch (Exception e) { + LOG.warn("Exception while starting propertyUserStore: ", e); + } + } + } + } + + private void parseConfig(final Map options) { + String tmp = (String) options.get("file"); + filename = (tmp == null ? DEFAULT_FILENAME : tmp); + filename = System.getProperty("login.file", filename); + tmp = (String) options.get("hotReload"); + hotReload = tmp == null ? hotReload : Boolean.parseBoolean(tmp); + } + + @Override + public UserInfo getUserInfo(final String userName) { + final PropertyUserStore propertyUserStore = PROPERTY_USERSTORES.get(filename); + if (propertyUserStore == null) { + throw new IllegalStateException("PropertyUserStore should never be null here!"); + } + + LOG.trace("Checking PropertyUserStore " + filename + " for " + userName); + final UserIdentity userIdentity = propertyUserStore.getUserIdentity(userName); + if (userIdentity == null) { + return null; + } + + final Set principals = userIdentity.getSubject().getPrincipals(); + final List roles = new ArrayList<>(); + for (final Principal principal : principals) { + roles.add(principal.getName()); + } + + final Credential credential = (Credential) userIdentity.getSubject().getPrivateCredentials().iterator().next(); + LOG.trace("Found: " + userName + " in PropertyUserStore " + filename); + return new UserInfo(userName, credential, roles); + } + + @Override + public boolean logout() throws LoginException { + return true; + } +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/SampleAuthenticationSpringBootService.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/SampleAuthenticationSpringBootService.java" new file mode 100755 index 0000000..2a795ee --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/java/io/hawt/example/spring/boot/SampleAuthenticationSpringBootService.java" @@ -0,0 +1,71 @@ +package io.hawt.example.spring.boot; + +import java.net.URL; + +import io.hawt.config.ConfigFacade; +import io.hawt.springboot.HawtPlugin; +import io.hawt.web.auth.AuthenticationConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class SampleAuthenticationSpringBootService { + + private static final Logger LOG = LoggerFactory.getLogger(SampleAuthenticationSpringBootService.class); + private static final String JAVA_SECURITY_AUTH_LOGIN_CONFIG = "java.security.auth.login.config"; + + + public static void main(String[] args) { + System.setProperty(AuthenticationConfiguration.HAWTIO_AUTHENTICATION_ENABLED, "false"); + SpringApplication.run(SampleAuthenticationSpringBootService.class, args); + } + + /** + * Loading an example plugin. + */ + @Bean + public HawtPlugin samplePlugin() { + return new HawtPlugin("sample-plugin", "plugins", "", new String[] { "sample-plugin/js/sample-plugin.js" }); + } + + /** + * Configure facade to use authentication. + * + * @return config + * @throws Exception if an error occurs + */ + @Bean(initMethod = "init") + public ConfigFacade configFacade() throws Exception { + + final URL loginResource = this.getClass().getClassLoader().getResource("login.conf"); + if (loginResource != null) { + setSystemPropertyIfNotSet(JAVA_SECURITY_AUTH_LOGIN_CONFIG, loginResource.getFile()); + } + LOG.info("Using loginResource " + JAVA_SECURITY_AUTH_LOGIN_CONFIG + " : " + System + .getProperty(JAVA_SECURITY_AUTH_LOGIN_CONFIG)); + + final URL loginFile = this.getClass().getClassLoader().getResource("realm.properties"); + if (loginFile != null) { + setSystemPropertyIfNotSet("login.file", loginFile.getFile()); + } + LOG.info("Using login.file : " + System.getProperty("login.file")); + + setSystemPropertyIfNotSet(AuthenticationConfiguration.HAWTIO_ROLES, "admin"); + setSystemPropertyIfNotSet(AuthenticationConfiguration.HAWTIO_REALM, "hawtio"); + setSystemPropertyIfNotSet(AuthenticationConfiguration.HAWTIO_ROLE_PRINCIPAL_CLASSES, "org.eclipse.jetty.jaas.JAASRole"); + if (!Boolean.getBoolean("debugMode")) { + System.setProperty(AuthenticationConfiguration.HAWTIO_AUTHENTICATION_ENABLED, "true"); + } + return new ConfigFacade(); + } + + private void setSystemPropertyIfNotSet(final String key, final String value) { + if (System.getProperty(key) == null) { + System.setProperty(key, value); + } + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/application.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/application.properties" new file mode 100755 index 0000000..de623ce --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/application.properties" @@ -0,0 +1,9 @@ +server.port=10000 +management.server.port=10001 + +management.endpoints.web.exposure.include=hawtio,jolokia + +logging.level.io.hawt=INFO +logging.level.org.springframework=WARN +logging.level.io.undertow=WARN +logging.level.org.eclipse.jetty=WARN diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/banner.txt" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/banner.txt" new file mode 100755 index 0000000..e832f57 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/banner.txt" @@ -0,0 +1,9 @@ + _______________________________ +/ Hawtio SpringBoot Sample With \ +\ Authentication / + ------------------------------- + \ ^__^ + \ (oo)\_______ + (__)\ )\/\ + ||----w | + || || diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/jolokia-access.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/jolokia-access.xml" new file mode 100755 index 0000000..d714f34 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/jolokia-access.xml" @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + read + write + exec + list + version + search + + + + + + + + + + com.mchange.v2.c3p0:type=PooledDataSource,* + properties + + + + + + + * + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/login.conf" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/login.conf" new file mode 100755 index 0000000..6c4cfc1 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/login.conf" @@ -0,0 +1,3 @@ +hawtio { + io.hawt.example.spring.boot.PropertyFileLoginModule required; +}; diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/realm.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/realm.properties" new file mode 100755 index 0000000..77055d3 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/resources/realm.properties" @@ -0,0 +1,7 @@ +# +# Hash generated with: +# java -cp ~/.m2/repository/org/eclipse/jetty/jetty-util/9.2.11.v20150529/jetty-util-9.2.11.v20150529.jar org.eclipse.jetty.util.security.Password hawtio hawtio +# + +hawtio: MD5:2d3c8a35f1d0c2a1a6ff1dc4ba221476,user,admin + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/webapp/app/sample-plugin/html/sample-plugin.html" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/webapp/app/sample-plugin/html/sample-plugin.html" new file mode 100755 index 0000000..d76f916 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/webapp/app/sample-plugin/html/sample-plugin.html" @@ -0,0 +1,8 @@ +
+ +
+

Demo Page

+

{{message}}

+
+ +
\ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/webapp/app/sample-plugin/js/sample-plugin.js" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/webapp/app/sample-plugin/js/sample-plugin.js" new file mode 100755 index 0000000..928c6f0 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot-authentication/src/main/webapp/app/sample-plugin/js/sample-plugin.js" @@ -0,0 +1,41 @@ +var SamplePlugin = (function(SamplePlugin) { + + SamplePlugin.pluginName = 'sample-plugin'; + SamplePlugin.log = Logger.get('SamplePlugin'); + SamplePlugin.contextPath = window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/")) + "/plugins/"; + SamplePlugin.templatePath = SamplePlugin.contextPath + "sample-plugin/html/"; + + SamplePlugin.module = angular.module('sample-plugin', ['hawtioCore']) + .config(function($routeProvider) { + $routeProvider. + when('/sample-plugin', { + templateUrl: SamplePlugin.templatePath + 'sample-plugin.html' + }); + }); + + SamplePlugin.module.run(function(workspace, viewRegistry, layoutFull) { + + SamplePlugin.log.info(SamplePlugin.pluginName, " loaded"); + viewRegistry["sample-plugin"] = layoutFull; + workspace.topLevelTabs.push({ + id: "samplePlugin", + content: "Sample Plugin", + title: "Sample plugin loaded dynamically", + isValid: function(workspace) { return true; }, + href: function() { return "#/sample-plugin"; }, + isActive: function(workspace) { return workspace.isLinkActive("sample-plugin"); } + + }); + + }); + + SamplePlugin.SamplePluginController = function($scope, jolokia) { + $scope.message = "hello world"; + Core.$apply($scope); + }; + + return SamplePlugin; + +})(SamplePlugin || {}); + +hawtioPluginLoader.addModule(SamplePlugin.pluginName); \ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/README.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/README.md" new file mode 100755 index 0000000..d045f41 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/README.md" @@ -0,0 +1,50 @@ +# Hawtio Spring Boot 2 Example + +This sample application shows how to run Hawtio with Spring Boot 2. + +## How to run + +Run with: + + mvn spring-boot:run + +Hawtio is exposed at the [Actuator](https://docs.spring.io/spring-boot/docs/latest/reference/html/production-ready-endpoints.html) management port configured using +`management.server.port` in `appplication.properties`. Browse Hawtio via the following URL: http://localhost:10001/actuator/hawtio/index.html + +The actual application is running on port 10000 (`server.port` in `application.properties`). + +## Alternative configurations + +### Alternative management endpoint base paths +If your preference is to avoid running Hawtio under the `/actuator` path, you can set the `management.endpoints.web.base-path` property in `application.properties`: + +``` +management.endpoints.web.base-path=/ +``` + +Hawtio will then be available at http://localhost:10001/hawtio/index.html. + +### Alternative hawtio endpoint paths + +You can also customize the endpoint path of the Hawtio actuator endpoint by setting the `management.endpoints.web.path-mapping.hawtio` property in `application.properties`: + +``` +management.endpoints.web.path-mapping.hawtio=hawtio/console +``` + +### Alternative ports & context paths +Alternative ports and context path configurations can be tested by changing the following properties in `application.properties`: + +``` +server.port=10000 +server.servlet.context-path=/sample-app +management.port=10000 +management.server.servlet.context-path=/management +``` + +Using the above configuration, the server will use port 10000 and the custom context path `sample-app`. +The Actuator management endpoints and Hawtio will also run on port 10000 using the custom management context path `management`. +The URLs for accessing the application and Hawtio are as follows: + +- Application: http://localhost:10000/sample-app/ +- Hawtio: http://localhost:10000/sample-app/management/actuator/hawtio diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/jmx-exporter.yml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/jmx-exporter.yml" new file mode 100755 index 0000000..02df234 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/jmx-exporter.yml" @@ -0,0 +1,6 @@ +startDelaySecs: 5 +ssl: false +lowercaseOutputName: true +lowercaseOutputLabelNames: true +blacklistObjectNames: ["java.lang:*"] +attrNameSnakeCase: true diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/pom.xml" new file mode 100755 index 0000000..6a453de --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/pom.xml" @@ -0,0 +1,157 @@ + + + + 4.0.0 + + + io.hawt + project + 2.5.0 + ../.. + + + io.hawt.examples + hawtio-example-springboot + ${project.artifactId} + hawtio :: Sample Spring Boot 2.x process + war + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot-version} + pom + import + + + org.apache.camel + camel-spring-boot-dependencies + ${camel-version} + pom + import + + + io.hawt + hawtio-bom + ${project.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + org.springframework.boot + spring-boot-starter-undertow + + + io.undertow + undertow-websockets-jsr + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + io.hawt + hawtio-springboot + + + + + org.apache.camel + camel-spring-boot-starter + + + org.apache.camel + camel-stream-starter + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-version} + + io.hawt.example.spring.boot.SampleSpringBootService + + -javaagent:./target/dependency/jmx_prometheus_javaagent.jar=10002:./jmx-exporter.yml + + + + + + repackage + + + + + + + maven-war-plugin + + false + + + + + + io.hawt + hawtio-maven-plugin + ${project.version} + + io.hawt.example.spring.boot.SampleSpringBootService + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.1.1 + + + copy + compile + + copy + + + + + + + io.prometheus.jmx + jmx_prometheus_javaagent + 0.3.1 + jar + jmx_prometheus_javaagent.jar + + + + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/HelloController.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/HelloController.java" new file mode 100755 index 0000000..3c6b7a8 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/HelloController.java" @@ -0,0 +1,16 @@ +package io.hawt.example.spring.boot; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class HelloController { + + @RequestMapping("/") + @ResponseBody + public String hello() { + return "Hello World!"; + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/SampleCamelRouter.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/SampleCamelRouter.java" new file mode 100755 index 0000000..afe8d31 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/SampleCamelRouter.java" @@ -0,0 +1,17 @@ +package io.hawt.example.spring.boot; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; + +@Component +public class SampleCamelRouter extends RouteBuilder { + + @Override + public void configure() throws Exception { + from("timer:hello?period={{timer.period}}") + .setBody().constant("Hello Camel!") + .to("stream:out") + .to("mock:result"); + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/SampleSpringBootService.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/SampleSpringBootService.java" new file mode 100755 index 0000000..5c393f8 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/java/io/hawt/example/spring/boot/SampleSpringBootService.java" @@ -0,0 +1,34 @@ +package io.hawt.example.spring.boot; + +import io.hawt.config.ConfigFacade; +import io.hawt.springboot.HawtPlugin; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class SampleSpringBootService { + + public static void main(String[] args) { + SpringApplication.run(SampleSpringBootService.class, args); + } + + /** + * Loading an example plugin. + */ + @Bean + public HawtPlugin samplePlugin() { + return new HawtPlugin("sample-plugin", + "plugins", + "", + new String[] { "sample-plugin/js/sample-plugin.js" }); + } + + /** + * Set things up to be in offline mode. + */ + @Bean + public ConfigFacade configFacade() { + return ConfigFacade.getSingleton(); + } +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/resources/application.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/resources/application.properties" new file mode 100755 index 0000000..1be96ba --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/resources/application.properties" @@ -0,0 +1,12 @@ +server.port=10000 +management.server.port=10001 + +management.endpoints.web.exposure.include=hawtio,jolokia + +logging.level.io.hawt=INFO +logging.level.org.springframework=WARN +logging.level.io.undertow=WARN + +camel.springboot.name=SampleCamel +timer.period=10000 +hawtio.authenticationEnabled=false diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/resources/banner.txt" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/resources/banner.txt" new file mode 100755 index 0000000..3770eff --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/resources/banner.txt" @@ -0,0 +1,8 @@ + __________________________ +< Hawtio SpringBoot Sample > + -------------------------- + \ ^__^ + \ (oo)\_______ + (__)\ )\/\ + ||----w | + || || diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/webapp/app/sample-plugin/html/sample-plugin.html" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/webapp/app/sample-plugin/html/sample-plugin.html" new file mode 100755 index 0000000..d76f916 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/webapp/app/sample-plugin/html/sample-plugin.html" @@ -0,0 +1,8 @@ +
+ +
+

Demo Page

+

{{message}}

+
+ +
\ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/webapp/app/sample-plugin/js/sample-plugin.js" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/webapp/app/sample-plugin/js/sample-plugin.js" new file mode 100755 index 0000000..2b425eb --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/examples/springboot/src/main/webapp/app/sample-plugin/js/sample-plugin.js" @@ -0,0 +1,41 @@ +var SamplePlugin = (function(SamplePlugin) { + + SamplePlugin.pluginName = 'sample-plugin'; + SamplePlugin.log = Logger.get('SamplePlugin'); + SamplePlugin.contextPath = window.location.pathname.substr(0, window.location.pathname.lastIndexOf("/")) + "/plugins/"; + SamplePlugin.templatePath = SamplePlugin.contextPath + "sample-plugin/html/"; + + SamplePlugin.module = angular.module('sample-plugin', ['hawtioCore']) + .config(function($routeProvider) { + $routeProvider. + when('/sample-plugin', { + templateUrl: SamplePlugin.templatePath + 'sample-plugin.html' + }); + }); + + SamplePlugin.module.run(function(workspace, viewRegistry, layoutFull) { + + SamplePlugin.log.info(SamplePlugin.pluginName, " loaded"); + viewRegistry["sample-plugin"] = layoutFull; + workspace.topLevelTabs.push({ + id: "samplePlugin", + content: "Sample Plugin", + title: "Sample plugin loaded dynamically", + isValid: function(workspace) { return true; }, + href: function() { return "#/sample-plugin"; }, + isActive: function(workspace) { return workspace.isLinkActive("sample-plugin"); } + + }); + + }); + + SamplePlugin.SamplePluginController = function($scope, jolokia) { + $scope.message = "hello world"; + Core.$apply($scope); + }; + + return SamplePlugin; + +})(SamplePlugin || {}); + +hawtioPluginLoader.addModule(SamplePlugin.pluginName); diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/freenode.txt" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/freenode.txt" new file mode 100755 index 0000000..d30573f --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/freenode.txt" @@ -0,0 +1,2 @@ +skjCBPwx + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/README.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/README.md" new file mode 100755 index 0000000..efff72d --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/README.md" @@ -0,0 +1,21 @@ +# Hawtio executable JAR + +You can run hawtio on your machine using the hawtio-app executable JAR. + +Once you have built it, just run this from the command line: + + java -jar hawtio-app-x.y.z.jar + +Note: If you launch Hawtio with Java 9, add the specified modules to avoid errors on startup and allow attaching to other Java processes: + + java --add-modules jdk.attach,java.xml.bind -jar hawtio-app-x.y.z.jar + +The console should show you which URL to open, which by default is [http://localhost:8080/hawtio/](http://localhost:8080/hawtio/). + +To set a different port number, run: + + java -jar hawtio-app-x.y.z.jar --port 8090 + +To see the full list of configuration options, run: + + java -jar hawtio-app-x.y.z.jar --help diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/pom.xml" new file mode 100755 index 0000000..ba72a1d --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/pom.xml" @@ -0,0 +1,71 @@ + + + + io.hawt + project + 2.5.0 + + + 4.0.0 + hawtio-app + ${project.artifactId} + hawtio :: hawtio-app + + + + io.hawt + hawtio-embedded + ${project.version} + + + io.hawt + hawtio-default + ${project.version} + war + + + org.keycloak + keycloak-jetty94-adapter + ${keycloak-version} + + + org.slf4j + slf4j-api + ${slf4j-version} + + + org.slf4j + slf4j-simple + ${slf4j-version} + + + + + + + maven-assembly-plugin + + false + + src/main/assembly/assembly.xml + + + + io.hawt.app.App + + + + + + + make-assembly + package + + single + + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/src/main/assembly/assembly.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/src/main/assembly/assembly.xml" new file mode 100755 index 0000000..904bbf6 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/src/main/assembly/assembly.xml" @@ -0,0 +1,52 @@ + + + hawtio-app + + jar + + false + + + src/main/assembly + + + embedded.properties + + + + + + + true + + + io.hawt:hawtio-app + io.hawt:hawtio-embedded + org.eclipse.jetty:* + org.slf4j:* + javax.servlet:javax.servlet-api + + + + + + + hawtio.war + + io.hawt:hawtio-default + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/src/main/java/io/hawt/app/App.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/src/main/java/io/hawt/app/App.java" new file mode 100755 index 0000000..f12d793 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-app/src/main/java/io/hawt/app/App.java" @@ -0,0 +1,160 @@ +/** + * Copyright (C) 2013 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.hawt.app; + +import java.awt.*; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URI; +import java.net.URL; +import java.util.HashSet; +import java.util.Set; + +import io.hawt.embedded.Main; + +public class App { + private static final String WAR_FILENAME = "hawtio.war"; + private static final int KB = 1024; + + public static void main(String[] args) { + + Object val = System.getProperty("hawtio.authenticationEnabled"); + if (val == null) { + System.setProperty("hawtio.authenticationEnabled", "false"); + } + + Main main = new Main(); + + try { + String virtualMachineClass = "com.sun.tools.attach.VirtualMachine"; + try { + loadClass(virtualMachineClass, App.class.getClassLoader(), Thread.currentThread().getContextClassLoader()); + } catch (Exception e) { + // lets try find the tools.jar instead + Set paths = new HashSet<>(); + String javaHome = System.getProperty("java.home", "."); + addPath(paths, javaHome); + + // now lets try the JAVA_HOME environment variable just in case + javaHome = System.getenv("JAVA_HOME"); + if (javaHome != null && javaHome.length() > 0) { + addPath(paths, javaHome); + } + + boolean found = false; + for (String path : paths) { + File file = new File(path, "lib/tools.jar"); + if (file.exists()) { + found = true; + String url = file.toURI().toURL().toString(); + main.setExtraClassPath(url); + break; + } + } + if (!found) { + System.err.println(String.format( + "Failed to load class %s and find tools.jar in directories %s. %s", + virtualMachineClass, paths, e)); + } + } + + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + URL resource = classLoader.getResource(WAR_FILENAME); + if (resource == null) { + System.err.println(String.format("Could not find the %s on classpath!", WAR_FILENAME)); + System.exit(1); + } + File warFile = File.createTempFile("hawtio-", ".war"); + writeStreamTo(resource.openStream(), new FileOutputStream(warFile), 64 * KB); + + String warPath = warFile.getCanonicalPath(); + main.setWar(warPath); + } catch (Exception e) { + System.err.println("Failed to create hawtio: " + e.getMessage()); + e.printStackTrace(); + return; + } + + if (!main.parseArguments(args) || main.isHelp()) { + main.showOptions(); + } else { + try { + main.run(); + + // should we open the url + int port = main.getPort(); + String url = "http://localhost:" + port + main.getContextPath(); + // set what is the url + System.setProperty("hawtio.url", url); + + String open = main.isOpenUrl() ? "true" : "false"; + // JVM system override the main option + boolean openUrl = "true".equals(System.getProperty("hawtio.openUrl", open)); + if (openUrl && Desktop.isDesktopSupported()) { + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (Exception e) { + System.err.println(String.format( + "Failed to open browser session, to access hawtio visit \"%s\"", + url)); + } + } + } catch (Exception e) { + System.err.println("Failed running hawtio: " + e.getMessage()); + e.printStackTrace(); + } + } + } + + protected static void addPath(Set paths, String path) { + paths.add(path); + String jreSuffix = File.separator + "jre"; + if (path.endsWith(jreSuffix)) { + path = path.substring(0, path.length() - jreSuffix.length()); + paths.add(path); + } + } + + private static Class loadClass(String name, ClassLoader... classLoaders) throws ClassNotFoundException { + for (ClassLoader classLoader : classLoaders) { + try { + return classLoader.loadClass(name); + } catch (ClassNotFoundException e) { + // ignore + } + } + return Class.forName(name); + } + + public static int writeStreamTo(final InputStream input, final OutputStream output, int bufferSize) throws IOException { + int available = Math.min(input.available(), 256 * KB); + byte[] buffer = new byte[Math.max(bufferSize, available)]; + int answer = 0; + int count = input.read(buffer); + while (count >= 0) { + output.write(buffer, 0, count); + answer += count; + count = input.read(buffer); + } + return answer; + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/.gitignore" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/.gitignore" new file mode 100755 index 0000000..072a31e --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/.gitignore" @@ -0,0 +1,4 @@ +hawtio-config +hawtio.log +overlays +mavenIndexer diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/pom.xml" new file mode 100755 index 0000000..7049cc2 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/pom.xml" @@ -0,0 +1,133 @@ + + + + io.hawt + project + 2.5.0 + + + 4.0.0 + hawtio-base + war + ${project.artifactId} + hawtio :: Base Web Application + + + + javax.servlet + javax.servlet-api + ${servlet-api-version} + provided + + + + io.hawt + hawtio-war + ${project.version} + + war + + + + + io.hawt + hawtio-core + ${project.version} + provided + + + + org.slf4j + slf4j-api + ${slf4j-version} + + + org.apache.aries.blueprint + org.apache.aries.blueprint.web + ${blueprint-web-version} + + + org.apache.geronimo.specs + geronimo-servlet_2.5_spec + + + + org.slf4j + slf4j-api + + + + + + + + + ${jetty-plugin-groupId} + jetty-maven-plugin + ${jetty-version} + + ${project.build.directory}/${project.name} + 1 + + ${context} + + + + ${jettyPort} + 60000 + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.0 + + 9090 + ${context} + + + false + + + + + org.apache.tomcat.maven + tomcat6-maven-plugin + 2.0 + + 9090 + ${context} + + + false + + + + + + maven-clean-plugin + + + + ${basedir}/overlays + + **/*.* + + false + + + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/java/io/hawt/blueprint/HawtioBlueprintContextListener.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/java/io/hawt/blueprint/HawtioBlueprintContextListener.java" new file mode 100755 index 0000000..7560352 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/java/io/hawt/blueprint/HawtioBlueprintContextListener.java" @@ -0,0 +1,145 @@ +/** + * Copyright (C) 2013 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.hawt.blueprint; + +import org.apache.aries.blueprint.container.BlueprintContainerImpl; + +import javax.servlet.ServletContext; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import java.io.InputStream; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; + +/** + * Initialises all the blueprint XML files called META-INF/blueprint.xml on the classpath + */ +public class HawtioBlueprintContextListener implements ServletContextListener { + + public static final String CONTAINER_ATTRIBUTE = "org.apache.aries.blueprint.container"; + + public static final String LOCATION = "blueprintLocation"; + + public static final String PROPERTIES = "blueprintProperties"; + + public static final String DEFAULT_LOCATION = "META-INF/blueprint.xml"; + + public void contextInitialized(ServletContextEvent event) { + ServletContext servletContext = event.getServletContext(); + String location = servletContext.getInitParameter(LOCATION); + if (location == null) { + location = DEFAULT_LOCATION; + } + List resourcePaths = new ArrayList(); + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + try { + Enumeration resources = classLoader.getResources(location); + while (resources.hasMoreElements()) { + resourcePaths.add(resources.nextElement()); + } + Collections.sort(resourcePaths, new Comparator() { + @Override + public int compare(URL o1, URL o2) { + return o1.toString().compareTo(o2.toString()); + } + }); + servletContext.log("Loading Blueprint contexts " + resourcePaths); + + Map properties = new HashMap(); + String propLocations = servletContext.getInitParameter(PROPERTIES); + if (propLocations != null) { + for (String propLoc : propLocations.split(",")) { + Enumeration propUrl = classLoader.getResources(propLoc); + while (propUrl.hasMoreElements()) { + URL url = propUrl.nextElement(); + InputStream is = url.openStream(); + try { + Properties props = new Properties(); + props.load(is); + Enumeration names = props.propertyNames(); + while (names.hasMoreElements()) { + String key = names.nextElement().toString(); + properties.put(key, props.getProperty(key)); + } + } finally { + is.close(); + } + } + } + } + appendEnvironmentVariablesAndSystemProperties(servletContext, properties); + + BlueprintContainerImpl container = new BlueprintContainerImpl(classLoader, resourcePaths, properties, true); + servletContext.setAttribute(CONTAINER_ATTRIBUTE, container); + } catch (Exception e) { + servletContext.log("Failed to startup blueprint container. " + e, e); + } + } + + protected void appendEnvironmentVariablesAndSystemProperties(ServletContext servletContext, Map properties) { + try { + Properties sysProperties = System.getProperties(); + Set> sysEntries = sysProperties.entrySet(); + for (Map.Entry sysEntry : sysEntries) { + Object key = sysEntry.getKey(); + Object value = sysEntry.getValue(); + if (key != null && value != null) { + String propertyName = key.toString(); + String propertyValue = value.toString(); + if (!properties.containsKey(propertyName)) { + properties.put(propertyName, propertyValue); + } + } + } + Map env = System.getenv(); + if (env != null) { + Set> entries = env.entrySet(); + for (Map.Entry entry : entries) { + String name = entry.getKey(); + String propertyName = convertEnvironmentVariableToSystemProperty(name); + properties.put(propertyName, entry.getValue()); + } + } + } catch (Exception e) { + servletContext.log("Failed to load environment variables: " + e, e); + } + } + + protected String convertEnvironmentVariableToSystemProperty(String name) { + // system properties may be upper and lower case so lets not mess with the case + // lets convert _ to dots so that folks can specify dots in env vars + return name.replace('_', '.'); + } + + public void contextDestroyed(ServletContextEvent event) { + ServletContext servletContext = event.getServletContext(); + Object container = servletContext.getAttribute(CONTAINER_ATTRIBUTE); + if (container instanceof BlueprintContainerImpl) { + BlueprintContainerImpl blueprint = (BlueprintContainerImpl) container; + blueprint.destroy(); + } + } +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/resources/blueprint.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/resources/blueprint.properties" new file mode 100755 index 0000000..eb065e3 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/resources/blueprint.properties" @@ -0,0 +1,5 @@ +# the properties file used to override blueprint configuration properties: +#�http://aries.apache.org/modules/blueprintweb.html +# +# for hawtio configuration options see: +# https://github.com/hawtio/hawtio/blob/master/docs/Configuration.md \ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/resources/log4j.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/resources/log4j.properties" new file mode 100755 index 0000000..e0d1274 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/resources/log4j.properties" @@ -0,0 +1,14 @@ +log4j.rootLogger=INFO, console + +# Console will only display warnnings +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=%-5p | %t | %m%n +log4j.appender.console.threshold=INFO + +# File appender will contain all info messages +log4j.appender.file=org.apache.log4j.FileAppender +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d | %-5p | %m | %c | %t%n +log4j.appender.file.file=${user.home}/.hawtio/logs/hawtio.log +log4j.appender.file.append=true diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/webapp/WEB-INF/web.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/webapp/WEB-INF/web.xml" new file mode 100755 index 0000000..8977a64 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-base/src/main/webapp/WEB-INF/web.xml" @@ -0,0 +1,301 @@ + + + + hawtio + hawtio + + + Enable/disable hawtio's authentication filter, value is really a boolean + hawtio/authenticationEnabled + java.lang.String + false + + + + Authorized user role, empty string disables authorization + hawtio/role + java.lang.String + + + + + JAAS classname that would contain the role principal, empty string disables authorization + hawtio/rolePrincipalClasses + java.lang.String + + + + + JAAS realm used to authenticate users + hawtio/realm + java.lang.String + * + + + + AuthenticationContainerDiscovery classes divided by comma, used to discover container environments + hawtio/authenticationContainerDiscoveryClasses + java.lang.String + io.hawt.web.tomcat.TomcatAuthenticationContainerDiscovery + + + + Enable/disable Keycloak integration. Value is really a boolean + hawtio/keycloakEnabled + java.lang.String + false + + + + Keycloak config file used for frontend. Will use default location if not provided + hawtio/keycloakClientConfig + java.lang.String + + + + + The maximum time interval, in seconds, that the servlet container will keep this session open between client accesses. + hawtio/sessionTimeout + java.lang.String + + + + + SessionExpiryFilter + io.hawt.web.auth.SessionExpiryFilter + + + SessionExpiryFilter + /* + + + + cache + io.hawt.web.filters.CacheHeadersFilter + + + cache + /* + + + + CORSFilter + io.hawt.web.filters.CORSFilter + + + CORSFilter + /* + + + + XFrameOptionsFilter + io.hawt.web.filters.XFrameOptionsFilter + + + XFrameOptionsFilter + /* + + + + XXSSProtectionFilter + io.hawt.web.filters.XXSSProtectionFilter + + + XXSSProtectionFilter + /* + + + + XContentTypeOptionsFilter + io.hawt.web.filters.XContentTypeOptionsFilter + + + XContentTypeOptionsFilter + /* + + + + ContentSecurityPolicyFilter + io.hawt.web.filters.ContentSecurityPolicyFilter + + + ContentSecurityPolicyFilter + /* + + + + StrictTransportSecurityFilter + io.hawt.web.filters.StrictTransportSecurityFilter + + + StrictTransportSecurityFilter + /* + + + + PublicKeyPinningFilter + io.hawt.web.filters.PublicKeyPinningFilter + + + PublicKeyPinningFilter + /* + + + + AuthenticationFilter + io.hawt.web.auth.AuthenticationFilter + + + AuthenticationFilter + /jolokia/* + + + + LoginRedirectFilter + io.hawt.web.auth.LoginRedirectFilter + + + LoginRedirectFilter + /* + + + + BaseTagHrefFilter + io.hawt.web.filters.BaseTagHrefFilter + + + BaseTagHrefFilter + / + /index.html + /login.html + ERROR + FORWARD + REQUEST + + + + jolokia-agent + io.hawt.web.servlets.JolokiaConfiguredAgentServlet + + mbeanQualifier + qualifier=hawtio + + + + allowErrorDetails + false + + + includeStackTrace + false + + + restrictorClass + io.hawt.system.RBACRestrictor + + 1 + + + + jolokia-agent + /jolokia/* + + + + jolokia-proxy + io.hawt.web.proxy.ProxyServlet + + + proxyWhitelist + + localhost, + 127.0.0.1 + + + 1 + + + jolokia-proxy + /proxy/* + + + + user + io.hawt.web.auth.keycloak.KeycloakUserServlet + + + user + /user/* + + + + login + io.hawt.web.auth.LoginServlet + + + login + /auth/login + + + + logout + io.hawt.web.auth.LogoutServlet + + + logout + /auth/logout + + + + keycloak + io.hawt.web.auth.keycloak.KeycloakServlet + + + keycloak + /keycloak/* + + + + woff + application/font-woff + + + + io.hawt.HawtioContextListener + + + + io.hawt.blueprint.HawtioBlueprintContextListener + + + + blueprintProperties + blueprint.properties + + + blueprintLocation + OSGI-INF/blueprint/blueprint.xml + + + + 404 + /index.html + + + + index.html + + + + + true + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/.editorconfig" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/.editorconfig" new file mode 100755 index 0000000..a6d1783 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/.editorconfig" @@ -0,0 +1,8 @@ +# http://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*.{html,ts,js,json,css,less}] +indent_style = space +indent_size = 2 diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/.gitignore" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/.gitignore" new file mode 100755 index 0000000..46cd4e6 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/.gitignore" @@ -0,0 +1,6 @@ +.vscode +dist +node +node_modules +target +temp diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/README.md" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/README.md" new file mode 100755 index 0000000..4be128a --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/README.md" @@ -0,0 +1,42 @@ +# Hawtio console assembly + +This assembles all Hawtio v2 components for the Web console for Java. + +## Set up development environment + +### Clone the repository + + $ git clone https://github.com/hawtio/hawtio + $ cd hawtio/hawtio-console-assembly + +### Install development tools + +* [Node.js](http://nodejs.org) +* [Yarn](https://yarnpkg.com) +* [gulp](http://gulpjs.com/) + +### Install project dependencies + + $ yarn install + +### Run the web application + + $ yarn start + +#### To test Keycloak integration + + $ yarn start --keycloak + +### Change the default proxy port + +To proxy to a local JVM running on a different port than `8181` specify the `--port` CLI arguement to gulp: + + $ gulp --port=8282 + +### Turn on source maps generation for debugging TypeScript + +If you want to debug `.ts` using a browser developer tool such as Chrome DevTools, pass the `--sourcemap` flag to gulp: + + $ gulp --sourcemap + +Do not use this flag when you are committing the compiled `.js` file, as it embeds source maps to the output file. Use this flag only during development. diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/package.json" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/package.json" new file mode 100755 index 0000000..df1f8a0 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/package.json" @@ -0,0 +1,29 @@ +{ + "name": "@hawtio/console-assembly", + "version": "2.0.0", + "dependencies": { + "@hawtio/integration": "~4.2.0", + "@hawtio/oauth": "~4.1.0", + "keycloak-js": "3.4.3" + }, + "flat": true, + "resolutions": { + "@types/jasmine": "2.8.6", + "@types/jqueryui": "1.12.2", + "@types/angular": "1.6.43", + "@types/jquery": "2.0.49", + "@types/marked": "0.3.0", + "angular-ui-bootstrap": "2.5.6", + "jquery": "2.2.4", + "moment": "2.21.0", + "bootstrap-select": "1.13.0", + "angular": "1.7.3", + "angular-animate": "1.7.3", + "angular-sanitize": "1.7.3" + }, + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/hawtio/hawtio.git" + } +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/app.less" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/app.less" new file mode 100755 index 0000000..4b4274f --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/app.less" @@ -0,0 +1,3 @@ +.navbar-brand-name { + max-height: 30px; +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/app.ts" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/app.ts" new file mode 100755 index 0000000..75776a2 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/app.ts" @@ -0,0 +1,39 @@ +/// + +namespace ConsoleAssembly { + + const pluginName = 'hawtio-console-assembly'; + const log: Logging.Logger = Logger.get(pluginName); + + angular + .module(pluginName, [ + Login.loginModule + ]) + .run(refreshUserSessionWhenLocationChanges) + .run(configureAbout); + + function refreshUserSessionWhenLocationChanges( + locationChangeStartTasks: Core.ParameterizedTasks, + $http: ng.IHttpService): void { + 'ngInject'; + locationChangeStartTasks.addTask('RefreshUserSession', + ($event: ng.IAngularEvent, newUrl: string, oldUrl: string): void => { + $http({ + method: 'post', + url: 'refresh' + }).then((response) => { + log.debug("Updated session. Response:", response); + }).catch((response) => { + log.debug("Failed to update session expiry. Response:", response); + }); + }); + } + + function configureAbout(aboutService: About.AboutService, jolokiaService: JVM.JolokiaService): void { + jolokiaService.getAttribute('hawtio:type=About', 'HawtioVersion') + .then(hawtioVersion => aboutService.addProductInfo('Hawtio', hawtioVersion)); + } + + hawtioPluginLoader.addModule(pluginName); + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/hawtconfig.json" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/hawtconfig.json" new file mode 100755 index 0000000..59d54ff --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/hawtconfig.json" @@ -0,0 +1,15 @@ +{ + "branding": { + "appName": "Hawtio Management Console", + "appLogoUrl": "img/hawtio-logo.svg", + "companyLogoUrl": "img/hawtio-logo.svg" + }, + "about": { + "title": "Hawtio Management Console", + "productInfo": [], + "additionalInfo": "", + "copyright": "", + "imgSrc": "img/hawtio-logo.svg" + }, + "disabledRoutes": [] +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/head-partial.html" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/head-partial.html" new file mode 100755 index 0000000..ef0153b --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/head-partial.html" @@ -0,0 +1,133 @@ + + + Hawtio + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/img/favicon.ico" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/img/favicon.ico" new file mode 100755 index 0000000000000000000000000000000000000000..0cae3ad67767b746b93499664ad5c16fe98fbadc GIT binary patch literal 1150 zcma*lPe@cz6vy#1Iyw^xNx`%ri>ILDTPWmm8)tOCAKgs z0t**~1jEdmnP!y!EUX}lkcf)@%$S7)ku`mPdT*o<^z<|5-gEA`^X|N77UHkA*7#gu z2f}7CGmC>1nYlc{jM~!0b7trN`4I$xIje{lFo>Jz^;IoOn8uI4a=tc3t_kMEi4WlW7zSS-W}9FJs!wAVOmq>?Vz!>i1OtaIjyJCCm~32qtaPHjvy^H+Kd~d5Ne{3_ z{W{Ze=)Asvg0X5Z3%OK+zK%p!F^?=hFh9w@3F4dX_HGD}kMd(zZ9MhPxbIfZe(=rM zol5dYTwUufp$fi#J7b+mwGw*oWz*{p_dVNidFcLT_B%ta=<2%nEilnV)Y;nc71~43 z@)Lcp@zKqdS6%n<=eu3Mk&B`Qht;* oPE>cQi8W9(`PWr`WyZhtgiy&K0>uTwzDB)giCIu*Hq~wR8{B+RumAu6 literal 0 HcmV?d00001 diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/index.html" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/index.html" new file mode 100755 index 0000000..b5a0807 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/index.html" @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login.html" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login.html" new file mode 100755 index 0000000..15f211e --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login.html" @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/keycloak-login.ts" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/keycloak-login.ts" new file mode 100755 index 0000000..f76bc8c --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/keycloak-login.ts" @@ -0,0 +1,68 @@ +/// + +namespace Login { + + const KEYCLOAK_ENABLED_URL: string = "keycloak/enabled"; + const KEYCLOAK_CLIENT_CONFIG_URL: string = "keycloak/client-config"; + const KEYCLOAK_VALIDATE_URL: string = "keycloak/validate-subject-matches"; + + hawtioPluginLoader.registerPreBootstrapTask({ + name: 'KeycloakLoginBootstrap', + task: (next) => { + log.debug('Executing keycloak login bootstrap task'); + configureKeycloakIfEnabled(next); + } + }, true); + + function configureKeycloakIfEnabled(next: () => void): void { + $.ajax(KEYCLOAK_ENABLED_URL, { + type: "GET", + success: (data: any, status: string, xhr: JQueryXHR) => { + log.debug("Keycloak enabled:", data); + let keycloakEnabled = (data === true || data === "true"); + if (keycloakEnabled) { + loadKeycloakConfig(next); + } else { + next(); + } + }, + error: (xhr: JQueryXHR, status: string, error: string) => { + log.error("Failed to retrieve keycloak/enabled:", error); + next(); + } + }); + } + + function loadKeycloakConfig(next: () => void): void { + $.ajax(KEYCLOAK_CLIENT_CONFIG_URL, { + type: "GET", + success: (data: any, status: string, xhr: JQueryXHR) => { + log.debug("Loaded keycloak/client-config:", data); + + // This enables hawtio-oauth keycloak integration + HawtioKeycloak.config = data; + next(); + }, + error: (xhr: JQueryXHR, status: string, error: string) => { + log.error("Failed to retrieve keycloak/client-config:", error); + next(); + } + }); + } + + // TODO: validate subject against server session + function validateSubjectMatches(keycloakUser: string): void { + let keycloakValidateUrl: string = `${KEYCLOAK_VALIDATE_URL}?keycloakUser=${encodeURIComponent(keycloakUser)}`; + + $.ajax(keycloakValidateUrl, { + type: "GET", + success: (data: any, status: string, xhr: JQueryXHR) => { + log.debug("Got response for validate subject matches:", data); + }, + error: (xhr: JQueryXHR, status: string, error: string) => { + log.debug("Failed to validate subject matches:", error); + } + }); + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.component.html" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.component.html" new file mode 100755 index 0000000..71d49e4 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.component.html" @@ -0,0 +1,42 @@ + + + +
+
+
+
+ {{$ctrl.branding.appName}} + {{$ctrl.branding.appType}} +
+
+ + Incorrect username or password +
+
+ +
+
+
+
diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.component.ts" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.component.ts" new file mode 100755 index 0000000..886d3ce --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.component.ts" @@ -0,0 +1,52 @@ +namespace Login { + + const LOGIN_URL: string = 'auth/login'; + + export class LoginController { + branding = {}; + entity = { + username: '', + password: '' + }; + wrongPassword: boolean = false; + + constructor( + private $http: ng.IHttpService, + private $window: ng.IWindowService, + private documentBase: string) { + 'ngInject'; + } + + $onInit(): void { + // fetch hawtconfig.json + this.$http.get('hawtconfig.json').then( + (response: ng.IHttpResponse) => { + log.debug('hawtconfig.json:', response.data); + this.branding = response.data.branding; + }, + (response) => { + log.warn('Failed to fetch hawtconfig.json', response); + }); + } + + doLogin(): void { + if (this.entity.username.trim() == '') { + return; + } + this.$http.post(LOGIN_URL, this.entity).then( + (response: ng.IHttpResponse) => { + log.debug("Server login success:", response.data); + this.$window.location.href = this.documentBase; + }, + (response) => { + log.error('Failed to log in', response); + this.wrongPassword = true; + }); + } + } + + export const loginComponent: angular.IComponentOptions = { + controller: LoginController, + templateUrl: 'app/src/login/login.component.html' + }; +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.config.ts" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.config.ts" new file mode 100755 index 0000000..0ac5df1 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.config.ts" @@ -0,0 +1,56 @@ +/// +/// + +namespace Login { + + const USER_URL: string = 'user'; + const AUTH_LOGOUT_URL: string = 'auth/logout'; + + export function init(authService: Core.AuthService, keycloakService: HawtioKeycloak.KeycloakService, + postLogoutTasks: Core.Tasks, $window: ng.IWindowService, HawtioExtension: Core.HawtioExtension, + $compile: ng.ICompileService): void { + 'ngInject'; + + if (keycloakService.enabled) { + // When Keycloak is enabled, login/logout is handled at hawtio-oauth keycloak plugin + return; + } + + // Get logged-in user from server session + $.ajax(USER_URL, { + type: "GET", + success: (username: any, status: string, xhr: JQueryXHR) => { + log.debug("Logged-in user:", username); + + authService.login(username, null); + + if (!authService.isDefaultUser()) { + registerPostLogoutTasks(postLogoutTasks, $window); + addLogoutLink(authService, HawtioExtension, $compile); + } + }, + error: (xhr: JQueryXHR, status: string, error: string) => { + // Silently ignore as mostly it's just not logged-in yet + log.debug("Failed to get logged-in user from server", error); + } + }); + } + + function registerPostLogoutTasks(postLogoutTasks: Core.Tasks, $window: ng.IWindowService) { + log.debug("Register 'DefaultLogout' to postLogoutTasks"); + postLogoutTasks.addTask('DefaultLogout', () => { + log.debug("Log out, redirecting to:", AUTH_LOGOUT_URL); + $window.location.href = AUTH_LOGOUT_URL; + }); + } + + function addLogoutLink(authService: Core.AuthService, HawtioExtension: Core.HawtioExtension, + $compile: ng.ICompileService) { + HawtioExtension.add('hawtio-logout', ($scope) => { + $scope.authService = authService; + let template = 'Logout'; + return $compile(template)($scope); + }); + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.less" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.less" new file mode 100755 index 0000000..fec5b13 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.less" @@ -0,0 +1,12 @@ +.login-pf #brand img { + display: inline-block; + height: auto; + padding: 0 5px 7px 0; +} +.login-pf #brand span { + font-size: 18px; + font-weight: bold; + vertical-align: bottom; + text-transform: uppercase; + color: #c0c0c0; +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.module.ts" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.module.ts" new file mode 100755 index 0000000..2e5328a --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/src/login/login.module.ts" @@ -0,0 +1,14 @@ +/// +/// + +namespace Login { + + export const loginModule = angular + .module('hawtio-login', []) + .component('hawtioLogin', loginComponent) + .run(init) + .name; + + export const log = Logger.get(loginModule); + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/yarn.lock" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/yarn.lock" new file mode 100755 index 0000000..7689e42 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/app/yarn.lock" @@ -0,0 +1,746 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@hawtio/core-dts@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@hawtio/core-dts/-/core-dts-3.2.0.tgz#9a685349dcfb9733234f6de71da5005d69b613fb" + dependencies: + "@types/jquery" "~2.0.46" + +"@hawtio/core@~4.1.0": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@hawtio/core/-/core-4.1.3.tgz#7afb1bb43bc944579ccbef76b517f40a94e9752b" + dependencies: + "@hawtio/core-dts" "3.2.0" + "@types/angular" "*" + "@types/angular-route" "*" + "@types/jasmine" "2.8.2" + "@types/jquery" "~2.0.0" + "@types/lodash" "^4.0.0" + "@types/marked" "0.3.0" + "@types/urijs" "1.15.34" + angular "~1.7.0" + angular-animate "~1.7.0" + angular-patternfly "^4.0.0" + angular-route "~1.7.0" + angular-sanitize "~1.7.0" + gulp-rename "~1.2.3" + jquery "2.2.4" + js-logger "1.4.1" + lodash "~4.17.0" + marked "0.3.9" + urijs "1.19.0" + +"@hawtio/forms@~4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@hawtio/forms/-/forms-4.1.0.tgz#1bf89334e8cdf787661f2b38e788e3053dc7eef0" + dependencies: + "@hawtio/ui" "~4.1.0" + +"@hawtio/integration@~4.2.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@hawtio/integration/-/integration-4.2.1.tgz#26025f5e67e19e1de2ac7ac68aea2516c42492b1" + dependencies: + "@hawtio/jmx" "~4.2.0" + "@types/angular-mocks" "~1.7.0" + "@types/angular-ui-bootstrap" "~0.13.46" + "@types/jqueryui" "1.12.2" + dagre-layout "0.8.0" + ng-infinite-scroll "1.3.0" + +"@hawtio/jmx@~4.2.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@hawtio/jmx/-/jmx-4.2.1.tgz#c47fad08216b42769593605c83d84de397a1d2af" + dependencies: + "@hawtio/core" "~4.1.0" + "@hawtio/forms" "~4.1.0" + "@hawtio/ui" "~4.1.0" + "@types/angular-ui-bootstrap" "~0.13.46" + angular-resizable "1.2.0" + cubism "^1.6.0" + jolokia.js "^1.6.0-1" + patternfly-bootstrap-treeview "~2.1.0" + +"@hawtio/oauth@~4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@hawtio/oauth/-/oauth-4.1.0.tgz#18340083bf6f9ced3f1207f3eb3912b64a34f477" + dependencies: + "@hawtio/core" "~4.1.0" + ng-idle "^1.3.2" + +"@hawtio/ui@~4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@hawtio/ui/-/ui-4.1.0.tgz#c7d26dfa8e54f7a8e418eb872074e1821cf2bb54" + dependencies: + "@hawtio/core" "~4.1.0" + "@types/bootstrap" "3.3.36" + "@types/clipboard" "1.5.35" + "@types/codemirror" "0.0.40" + "@types/js-beautify" "0.0.30" + "@types/marked" "0.0.28" + angular-ui-bootstrap "2.5.6" + clipboard "1.7.1" + codemirror "5.33.0" + js-beautify "1.7.5" + +"@types/angular-mocks@~1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@types/angular-mocks/-/angular-mocks-1.7.0.tgz#310d999a3c47c10ecd8eef466b5861df84799429" + dependencies: + "@types/angular" "*" + +"@types/angular-route@*": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@types/angular-route/-/angular-route-1.7.0.tgz#ba12d09df1aac3c88e3684500001daedfc97fb69" + dependencies: + "@types/angular" "*" + +"@types/angular-ui-bootstrap@~0.13.46": + version "0.13.47" + resolved "https://registry.yarnpkg.com/@types/angular-ui-bootstrap/-/angular-ui-bootstrap-0.13.47.tgz#e9fd4baf09dd98ff2b868ed00474310b2a66fa37" + dependencies: + "@types/angular" "*" + +"@types/angular@*", "@types/angular@1.6.43": + version "1.6.43" + resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.6.43.tgz#6235ef416053a86302970717510a936d889cbb9a" + +"@types/bootstrap@3.3.36": + version "3.3.36" + resolved "https://registry.yarnpkg.com/@types/bootstrap/-/bootstrap-3.3.36.tgz#5ca0b81655427398fe7c8728bccdc395069093d0" + dependencies: + "@types/jquery" "*" + +"@types/c3@^0.6.0": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@types/c3/-/c3-0.6.2.tgz#b4d5fc5dbe05b900a531544786f8cfedf5b8e416" + dependencies: + "@types/d3" "^4" + +"@types/clipboard@1.5.35": + version "1.5.35" + resolved "https://registry.yarnpkg.com/@types/clipboard/-/clipboard-1.5.35.tgz#bceb67a7e0aad3070468929b95a2d626405db464" + +"@types/codemirror@0.0.40": + version "0.0.40" + resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-0.0.40.tgz#0868ed9ba5bf3ef8072de80e245ecf4a8f0bbdfd" + +"@types/d3-array@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-1.2.4.tgz#7088445c8717ba1fba416a1df7bbd11cc72a3763" + +"@types/d3-axis@*": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-1.0.11.tgz#efd975f9fec14c2afd03828f3acec0ef97d37c3b" + dependencies: + "@types/d3-selection" "*" + +"@types/d3-brush@*": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-1.0.9.tgz#c71070845946eeee4cf330e04123a3997e6476bf" + dependencies: + "@types/d3-selection" "*" + +"@types/d3-chord@*": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-1.0.8.tgz#08c0fbb10281be0a5b3fdf48c9c081af02f79fb6" + +"@types/d3-collection@*": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-collection/-/d3-collection-1.0.7.tgz#829e1db477d6bbbcdc038cbc489f22798752d707" + +"@types/d3-color@*": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.2.1.tgz#26141c3c554e320edd40726b793570a3ae57397e" + +"@types/d3-dispatch@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-1.0.6.tgz#19b173f669cd2ab7dd3d862e8037aae1a98c7508" + +"@types/d3-drag@*": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-1.2.2.tgz#1cdd7716212a8cdef0a24c782c9d86c6aeb4a451" + dependencies: + "@types/d3-selection" "*" + +"@types/d3-dsv@*": + version "1.0.34" + resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-1.0.34.tgz#b7b3c75653a31b1e2555c9c0300a6eaf12a5b6fd" + +"@types/d3-ease@*": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-1.0.7.tgz#93a301868be9e15061f3d44343b1ab3f8acb6f09" + +"@types/d3-force@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-1.1.1.tgz#185c18b77932df63457894bd36d0d6e9692546c0" + +"@types/d3-format@*": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-1.3.0.tgz#c5e115fac8e6861ce656fe9861892b22f6b0cfcb" + +"@types/d3-geo@*": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-1.10.3.tgz#3c01b2baa480e1108301096328dc2837e7ff4d8a" + dependencies: + "@types/geojson" "*" + +"@types/d3-hierarchy@*": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-1.1.4.tgz#b04dfcb1f2074da789ada10fe4942d13f0bce421" + +"@types/d3-interpolate@*": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.3.0.tgz#65b9627900bfdd82474875d9b23d574a4388af7c" + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-1.0.7.tgz#a0736fceed688a695f48265a82ff7a3369414b81" + +"@types/d3-polygon@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-1.0.6.tgz#db25c630a2afb9191fe51ba61dd37baee9dd44c7" + +"@types/d3-quadtree@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-1.0.6.tgz#45da9e603688ba90eedd3d40f6e504764e06e493" + +"@types/d3-queue@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-queue/-/d3-queue-3.0.7.tgz#94dc7af693281ab78ccdf381a8c1f71ef16659c1" + +"@types/d3-random@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-1.1.1.tgz#38647ce2ff4ce7d0d56974334c1c4092513c8b9f" + +"@types/d3-request@*": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/d3-request/-/d3-request-1.0.3.tgz#f528d12efdc83dbc3df486746c939fc5519dc79c" + dependencies: + "@types/d3-dsv" "*" + +"@types/d3-scale@^1": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-1.0.14.tgz#4544e4eb61e3712dacaba9dd8910e745bb7a9840" + dependencies: + "@types/d3-time" "*" + +"@types/d3-selection@*": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-1.3.4.tgz#2f9b71e25fb73bc95c3842dd52b7e6d523292896" + +"@types/d3-shape@*": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-1.2.6.tgz#5badbbf4f29f9ca91e847506aa2241db757adccb" + dependencies: + "@types/d3-path" "*" + +"@types/d3-time-format@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-2.1.0.tgz#011e0fb7937be34a9a8f580ae1e2f2f1336a8a22" + +"@types/d3-time@*": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-1.0.9.tgz#c2cf05a3cd51f810b8d8a9bbca0c74030d4e535e" + +"@types/d3-timer@*": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-1.0.8.tgz#a3441d9605367059e14ad8c3494132143cbc8d58" + +"@types/d3-transition@*": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-1.1.3.tgz#efcf4941dae22135d595514ba488f4f370d396b0" + dependencies: + "@types/d3-selection" "*" + +"@types/d3-voronoi@*": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@types/d3-voronoi/-/d3-voronoi-1.1.8.tgz#a039cb8368bce4efc1a70aebe744d210851cf1a7" + +"@types/d3-zoom@*": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-1.7.2.tgz#ee67f063199c179949d83b6b1e6166207de5f06e" + dependencies: + "@types/d3-interpolate" "*" + "@types/d3-selection" "*" + +"@types/d3@^4": + version "4.13.1" + resolved "https://registry.yarnpkg.com/@types/d3/-/d3-4.13.1.tgz#6d12ecab1ceb704fb41e4ac43e1c45f7fef016c8" + dependencies: + "@types/d3-array" "*" + "@types/d3-axis" "*" + "@types/d3-brush" "*" + "@types/d3-chord" "*" + "@types/d3-collection" "*" + "@types/d3-color" "*" + "@types/d3-dispatch" "*" + "@types/d3-drag" "*" + "@types/d3-dsv" "*" + "@types/d3-ease" "*" + "@types/d3-force" "*" + "@types/d3-format" "*" + "@types/d3-geo" "*" + "@types/d3-hierarchy" "*" + "@types/d3-interpolate" "*" + "@types/d3-path" "*" + "@types/d3-polygon" "*" + "@types/d3-quadtree" "*" + "@types/d3-queue" "*" + "@types/d3-random" "*" + "@types/d3-request" "*" + "@types/d3-scale" "^1" + "@types/d3-selection" "*" + "@types/d3-shape" "*" + "@types/d3-time" "*" + "@types/d3-time-format" "*" + "@types/d3-timer" "*" + "@types/d3-transition" "*" + "@types/d3-voronoi" "*" + "@types/d3-zoom" "*" + +"@types/geojson@*": + version "7946.0.4" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.4.tgz#4e049756383c3f055dd8f3d24e63fb543e98eb07" + +"@types/jasmine@2.8.2", "@types/jasmine@2.8.6": + version "2.8.6" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.6.tgz#14445b6a1613cf4e05dd61c3c3256d0e95c0421e" + +"@types/jquery@*", "@types/jquery@2.0.49", "@types/jquery@~2.0.0", "@types/jquery@~2.0.46": + version "2.0.49" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-2.0.49.tgz#95bd7064caebf65bde10429dff491a1aea05b67d" + +"@types/jqueryui@1.12.2": + version "1.12.2" + resolved "https://registry.yarnpkg.com/@types/jqueryui/-/jqueryui-1.12.2.tgz#8daa7ffa16880c78b1662ff287df058a2aceb651" + dependencies: + "@types/jquery" "*" + +"@types/js-beautify@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/js-beautify/-/js-beautify-0.0.30.tgz#82ffbeb2c2dec592f1d04169e926912eeed567ec" + +"@types/lodash@^4.0.0": + version "4.14.118" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.118.tgz#247bab39bfcc6d910d4927c6e06cbc70ec376f27" + +"@types/marked@0.0.28", "@types/marked@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@types/marked/-/marked-0.3.0.tgz#583c223dd33385a1dda01aaf77b0cd0411c4b524" + +"@types/urijs@1.15.34": + version "1.15.34" + resolved "https://registry.yarnpkg.com/@types/urijs/-/urijs-1.15.34.tgz#b9d5954e9beaabb6fc48c2127d8df15ac6393256" + dependencies: + "@types/jquery" "*" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +angular-animate@1.5.*, angular-animate@1.7.3, angular-animate@~1.7.0: + version "1.7.3" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.3.tgz#99aa794d3417aa6a794f603c9c27ec0ee4c4b3b4" + +angular-drag-and-drop-lists@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/angular-drag-and-drop-lists/-/angular-drag-and-drop-lists-2.0.0.tgz#a01d44b94cf233c9c2d45a31842cb35a9d0882ca" + +angular-patternfly@^4.0.0: + version "4.18.6" + resolved "https://registry.yarnpkg.com/angular-patternfly/-/angular-patternfly-4.18.6.tgz#4f62fc235d93aecd1c03f7ed70e08ec1ea2e5fdb" + dependencies: + angular "1.5.*" + angular-animate "1.5.*" + angular-sanitize "1.5.*" + angular-svg-base-fix "2.0.0" + angular-ui-bootstrap "2.3.x" + lodash "4.x" + patternfly "^3.37.1" + optionalDependencies: + angular-drag-and-drop-lists "2.0.0" + angularjs-datatables "^0.5.9" + bootstrap "~3.3.7" + bootstrap-select "~1.12.4" + c3 "~0.4.11" + d3 "~3.5.17" + datatables.net "^1.10.12" + datatables.net-select "~1.2.0" + jquery "~3.2.1" + jquery-ui-dist "~1.12.1" + moment "~2.19.3" + +angular-resizable@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/angular-resizable/-/angular-resizable-1.2.0.tgz#9dd29af008f8b54abfc051bd269a8f0b4fe43f1a" + +angular-route@~1.7.0: + version "1.7.5" + resolved "https://registry.yarnpkg.com/angular-route/-/angular-route-1.7.5.tgz#34a3648c407a14a030d075cf485318e33ba23f0e" + +angular-sanitize@1.5.*, angular-sanitize@1.7.3, angular-sanitize@~1.7.0: + version "1.7.3" + resolved "https://registry.yarnpkg.com/angular-sanitize/-/angular-sanitize-1.7.3.tgz#e1ddaa7337724f9554066fd9e9123486b8881c4a" + +angular-svg-base-fix@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/angular-svg-base-fix/-/angular-svg-base-fix-2.0.0.tgz#f3d5f85b87a10d21310f47da8455038b90cfb000" + +angular-ui-bootstrap@2.3.x, angular-ui-bootstrap@2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/angular-ui-bootstrap/-/angular-ui-bootstrap-2.5.6.tgz#23937322ec641a6fbee16498cc32452aa199e7c5" + +angular@1.5.*, angular@1.7.3, angular@>=1.3.0, angular@^1.2.0, angular@~1.7.0: + version "1.7.3" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.3.tgz#0f25a661d079fc84d5ccc877a2ef9d7178575ddb" + +angularjs-datatables@^0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/angularjs-datatables/-/angularjs-datatables-0.5.9.tgz#24bdc3ba0951741f4172295b6a795c58ce63ad94" + dependencies: + angular ">=1.3.0" + datatables.net "^1.10.11" + datatables.net-dt "^1.10.11" + jquery ">=1.11.0" + +bluebird@^3.0.5: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + +bootstrap-datepicker@^1.7.1: + version "1.8.0" + resolved "https://registry.yarnpkg.com/bootstrap-datepicker/-/bootstrap-datepicker-1.8.0.tgz#c63513931e6f09f16ae9f11b62f32d950df3958e" + dependencies: + jquery ">=1.7.1 <4.0.0" + +bootstrap-sass@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz#6596c7ab40f6637393323ab0bc80d064fc630498" + +bootstrap-select@1.12.2, bootstrap-select@1.13.0, bootstrap-select@~1.12.4: + version "1.13.0" + resolved "https://registry.yarnpkg.com/bootstrap-select/-/bootstrap-select-1.13.0.tgz#f31d0a23fc6070fd5b17b841bf1ca115ce54775b" + +bootstrap-slider@^9.9.0: + version "9.10.0" + resolved "https://registry.yarnpkg.com/bootstrap-slider/-/bootstrap-slider-9.10.0.tgz#1103d6bc00cfbfa8cfc9a2599ab518c55643da3f" + +bootstrap-switch@~3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/bootstrap-switch/-/bootstrap-switch-3.3.4.tgz#70e0aeb2a877c0dc766991de108e2170fc29a2ff" + +bootstrap-touchspin@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bootstrap-touchspin/-/bootstrap-touchspin-3.1.1.tgz#9779deac72aaf577e5e762b8512c747c871d9597" + +bootstrap@3.3.x, bootstrap@^3.3, bootstrap@~3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.3.7.tgz#5a389394549f23330875a3b150656574f8a9eb71" + +c3@~0.4.11: + version "0.4.23" + resolved "https://registry.yarnpkg.com/c3/-/c3-0.4.23.tgz#32ece135d0ac6d124187be5c6935903699643002" + dependencies: + d3 "~3.5.0" + +clipboard@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-1.7.1.tgz#360d6d6946e99a7a1fef395e42ba92b5e9b5a16b" + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + +codemirror@5.33.0: + version "5.33.0" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.33.0.tgz#462ad9a6fe8d38b541a9536a3997e1ef93b40c6a" + +commander@^2.9.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + +config-chain@~1.1.5: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +cubism@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/cubism/-/cubism-1.6.0.tgz#a566e10594ac59abfc73b829bdee32d91a2f0350" + dependencies: + d3 "3.x" + +d3@3.x, d3@~3.5.0, d3@~3.5.17: + version "3.5.17" + resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.17.tgz#bc46748004378b21a360c9fc7cf5231790762fb8" + +dagre-layout@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/dagre-layout/-/dagre-layout-0.8.0.tgz#7147b6afb655602f855158dfea171db9aa98d4ff" + dependencies: + graphlib "^2.1.1" + lodash "^4.17.4" + +datatables.net-bs@>=1.10.9: + version "1.10.19" + resolved "https://registry.yarnpkg.com/datatables.net-bs/-/datatables.net-bs-1.10.19.tgz#08763b4e4d0cef1a427d019dc15e717c7ed67a4d" + dependencies: + datatables.net "1.10.19" + jquery ">=1.7" + +datatables.net-colreorder-bs@~1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/datatables.net-colreorder-bs/-/datatables.net-colreorder-bs-1.3.3.tgz#3a9dcb08deebeb5d854079591e06e493ad793a53" + dependencies: + datatables.net-bs ">=1.10.9" + datatables.net-colreorder ">=1.2.0" + jquery ">=1.7" + +datatables.net-colreorder@>=1.2.0, datatables.net-colreorder@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/datatables.net-colreorder/-/datatables.net-colreorder-1.5.1.tgz#ee5eacd7178b5fd9396aab44d4907aae35086f8c" + dependencies: + datatables.net "^1.10.15" + jquery ">=1.7" + +datatables.net-dt@^1.10.11: + version "1.10.19" + resolved "https://registry.yarnpkg.com/datatables.net-dt/-/datatables.net-dt-1.10.19.tgz#fc668e4942ac6e331be2707975d0f33e01afb60f" + dependencies: + datatables.net "1.10.19" + jquery ">=1.7" + +datatables.net-select@~1.2.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/datatables.net-select/-/datatables.net-select-1.2.7.tgz#7d5badfca49c438f8b51df04483d8d77857e917c" + dependencies: + datatables.net "^1.10.15" + jquery ">=1.7" + +datatables.net@1.10.19, datatables.net@^1.10.11, datatables.net@^1.10.12, datatables.net@^1.10.15: + version "1.10.19" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.10.19.tgz#97a1ed41c85e62d61040603481b59790a172dd1f" + dependencies: + jquery ">=1.7" + +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + +drmonty-datatables-colvis@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/drmonty-datatables-colvis/-/drmonty-datatables-colvis-1.1.2.tgz#96ab9edfb48643cc2edda3f87b88933cdee8127c" + dependencies: + jquery ">=1.7.0" + +editorconfig@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.3.tgz#e5219e587951d60958fd94ea9a9a008cdeff1b34" + dependencies: + bluebird "^3.0.5" + commander "^2.9.0" + lru-cache "^3.2.0" + semver "^5.1.0" + sigmund "^1.0.1" + +eonasdan-bootstrap-datetimepicker@^4.17.47: + version "4.17.47" + resolved "https://registry.yarnpkg.com/eonasdan-bootstrap-datetimepicker/-/eonasdan-bootstrap-datetimepicker-4.17.47.tgz#7a49970044065276e7965efd16f822735219e735" + dependencies: + bootstrap "^3.3" + jquery "^1.8.3 || ^2.0 || ^3.0" + moment "^2.10" + moment-timezone "^0.4.0" + +font-awesome-sass@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/font-awesome-sass/-/font-awesome-sass-4.7.0.tgz#4eda693e915009ce00b228e0964dc5eca9bc34e1" + +font-awesome@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" + +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + dependencies: + delegate "^3.1.2" + +google-code-prettify@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/google-code-prettify/-/google-code-prettify-1.0.5.tgz#9f477f224dbfa62372e5ef803a7e157410400084" + +graphlib@^2.1.1: + version "2.1.7" + resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.7.tgz#b6a69f9f44bd9de3963ce6804a2fc9e73d86aecc" + dependencies: + lodash "^4.17.5" + +gulp-rename@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.3.tgz#37b75298e9d3e6c0fe9ac4eac13ce3be5434646b" + +ini@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +jolokia.js@^1.6.0-1: + version "1.6.0-1" + resolved "https://registry.yarnpkg.com/jolokia.js/-/jolokia.js-1.6.0-1.tgz#b0b527135e16940c2cfbc6b5b50be608177cc50e" + dependencies: + "@types/jquery" "~2.0.46" + +jquery-match-height@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/jquery-match-height/-/jquery-match-height-0.7.2.tgz#f8d9f3ba5314daab109cf07408674be204be5f0e" + +jquery-ui-dist@~1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/jquery-ui-dist/-/jquery-ui-dist-1.12.1.tgz#5c0815d3cc6f90ff5faaf5b268a6e23b4ca904fa" + +jquery@2.2.4, "jquery@>= 2.1.x", jquery@>=1.11.0, jquery@>=1.7, jquery@>=1.7.0, "jquery@>=1.7.1 <4.0.0", jquery@>=1.8, "jquery@^1.8.3 || ^2.0 || ^3.0", jquery@~3.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.2.4.tgz#2c89d6889b5eac522a7eea32c14521559c6cbf02" + +js-beautify@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.7.5.tgz#69d9651ef60dbb649f65527b53674950138a7919" + dependencies: + config-chain "~1.1.5" + editorconfig "^0.13.2" + mkdirp "~0.5.0" + nopt "~3.0.1" + +js-logger@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/js-logger/-/js-logger-1.4.1.tgz#f0230dc5e84e120f213d6e5a6b767a913d290335" + +keycloak-js@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/keycloak-js/-/keycloak-js-3.4.3.tgz#9fbb1ba7b2433229f5cc8babbd308ff0e945dac7" + +lodash@4.x, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.0: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + +lru-cache@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" + dependencies: + pseudomap "^1.0.1" + +marked@0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.9.tgz#54ce6a57e720c3ac6098374ec625fcbcc97ff290" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +mkdirp@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +moment-timezone@^0.4.0, moment-timezone@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.4.1.tgz#81f598c3ad5e22cdad796b67ecd8d88d0f5baa06" + dependencies: + moment ">= 2.6.0" + +moment@2.21.0, "moment@>= 2.6.0", moment@^2.10, moment@^2.19.1, moment@~2.19.3: + version "2.21.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.21.0.tgz#2a114b51d2a6ec9e6d83cf803f838a878d8a023a" + +ng-idle@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/ng-idle/-/ng-idle-1.3.2.tgz#73a4dcc0a6c8360310d1396df376be6bd0b0a867" + dependencies: + angular "^1.2.0" + +ng-infinite-scroll@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ng-infinite-scroll/-/ng-infinite-scroll-1.3.0.tgz#c2e98d8fd134b0525a4d2cf58c95d9b583755112" + +nopt@~3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +patternfly-bootstrap-combobox@~1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/patternfly-bootstrap-combobox/-/patternfly-bootstrap-combobox-1.1.7.tgz#6a5e3ccd1170c21b3c4b4aa168a7413e1ddbb6e1" + +patternfly-bootstrap-treeview@~2.1.0: + version "2.1.7" + resolved "https://registry.yarnpkg.com/patternfly-bootstrap-treeview/-/patternfly-bootstrap-treeview-2.1.7.tgz#3e325d4ca34040c24e7e3f701c8021b1700a6f5d" + dependencies: + bootstrap "3.3.x" + jquery ">= 2.1.x" + +patternfly@^3.37.1: + version "3.58.0" + resolved "https://registry.yarnpkg.com/patternfly/-/patternfly-3.58.0.tgz#c94516a9fbf2b645b63a53e58fcf39c45bf66a8b" + dependencies: + bootstrap "~3.3.7" + font-awesome "^4.7.0" + jquery "~3.2.1" + optionalDependencies: + "@types/c3" "^0.6.0" + bootstrap-datepicker "^1.7.1" + bootstrap-sass "^3.3.7" + bootstrap-select "1.12.2" + bootstrap-slider "^9.9.0" + bootstrap-switch "~3.3.4" + bootstrap-touchspin "~3.1.1" + c3 "~0.4.11" + d3 "~3.5.17" + datatables.net "^1.10.15" + datatables.net-colreorder "^1.4.1" + datatables.net-colreorder-bs "~1.3.2" + datatables.net-select "~1.2.0" + drmonty-datatables-colvis "~1.1.2" + eonasdan-bootstrap-datetimepicker "^4.17.47" + font-awesome-sass "^4.7.0" + google-code-prettify "~1.0.5" + jquery-match-height "^0.7.2" + moment "^2.19.1" + moment-timezone "^0.4.1" + patternfly-bootstrap-combobox "~1.1.7" + patternfly-bootstrap-treeview "~2.1.0" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + +semver@^5.1.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +tiny-emitter@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c" + +urijs@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.0.tgz#d8aa284d0e7469703a6988ad045c4cbfdf08ada0" diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/gulpfile.js" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/gulpfile.js" new file mode 100755 index 0000000..5ae017e --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/gulpfile.js" @@ -0,0 +1,294 @@ +const gulp = require('gulp'); +const eventStream = require('event-stream'); +const gulpLoadPlugins = require('gulp-load-plugins'); +const map = require('vinyl-map'); +const fs = require('fs'); +const path = require('path'); +const sequence = require('run-sequence'); +const size = require('gulp-size'); +const uri = require('urijs'); +const s = require('underscore.string'); +const argv = require('yargs').argv; +const logger = require('js-logger'); +const hawtio = require('@hawtio/node-backend'); +const tslint = require('gulp-tslint'); +const tslintRules = require('./tslint.json'); +const exec = require('child_process').exec; +const usemin = require('gulp-usemin'); +const uglify = require('gulp-uglify'); +const cleanCss = require('gulp-clean-css'); +const rev = require('gulp-rev'); +const preprocess = require("gulp-preprocess"); + +const plugins = gulpLoadPlugins({}); + +const config = { + proxyPort: argv.port || 8181, + targetPath: argv.path || '/hawtio/jolokia', + logLevel: argv.debug ? logger.DEBUG : logger.INFO, + keycloak: argv.keycloak ? 'true' : 'false', + app: 'app/', + src: 'app/src/', + srcLess: 'app/src/**/*.less', + srcTemplates: 'app/src/**/!(index|login).html', + docTemplates: '../@(CHANGES|FAQ).md', + templateModule: 'hawtio-console-assembly-templates', + temp: 'temp/', + dist: 'dist/', + distFonts: 'dist/fonts', + distImg: 'dist/img', + js: 'hawtio-console-assembly.js', + css: 'hawtio-console-assembly.css', + tsProject: plugins.typescript.createProject('tsconfig.json'), + tsLintOptions: { + rulesDirectory: './tslint-rules/' + }, + sourceMap: argv.sourcemap +}; + +var normalSizeOptions = { + showFiles: true +}, gZippedSizeOptions = { + showFiles: true, + gzip: true +}; + +//------------------------------------------------------------------------------ +// build tasks +//------------------------------------------------------------------------------ + +gulp.task('clean', function () { + return gulp.src(['dist', 'temp'], { read: false }) + .pipe(plugins.clean()); +}); + +gulp.task('tsc', function () { + return config.tsProject.src() + .pipe(plugins.debug({ title: 'tsc' })) + .pipe(plugins.if(config.sourceMap, plugins.sourcemaps.init())) + .pipe(config.tsProject()) + .js + .pipe(plugins.ngAnnotate()) + .pipe(plugins.debug({ title: 'tsc js' })) + .pipe(plugins.if(config.sourceMap, plugins.sourcemaps.write())) + .pipe(gulp.dest(config.temp)); +}); + +gulp.task('template', function () { + return gulp.src(config.srcTemplates) + .pipe(plugins.debug({ title: 'template' })) + .pipe(plugins.angularTemplatecache({ + filename: 'templates.js', + root: config.src, + standalone: true, + module: config.templateModule, + templateFooter: '}]); hawtioPluginLoader.addModule("' + config.templateModule + '");' + })) + .pipe(gulp.dest(config.temp)); +}); + +gulp.task('template-docs', function () { + return gulp.src(config.docTemplates) + .pipe(plugins.angularTemplatecache({ + filename: 'doc-templates.js', + root: 'plugins/help/doc', + standalone: true, + module: config.templateModule, + templateFooter: '}]); hawtioPluginLoader.addModule("' + config.templateModule + '");' + })) + .pipe(gulp.dest(config.temp)); +}); + +gulp.task('concat', function () { + var gZipSize = size(gZippedSizeOptions); + var license = tslintRules.rules['license-header'][1]; + return gulp.src(config.temp + '*.js') + .pipe(plugins.concat(config.js)) + .pipe(plugins.header(license)) + .pipe(size(normalSizeOptions)) + .pipe(gZipSize) + .pipe(gulp.dest(config.temp)); +}); + +gulp.task('less', function () { + return gulp.src(config.srcLess) + .pipe(plugins.less()) + .pipe(plugins.concat(config.css)) + .pipe(gulp.dest(config.temp)); +}); + +gulp.task('usemin', function () { + return gulp.src(config.src + '@(index|login).html') + .pipe(preprocess()) + .pipe(usemin({ + libCss: [cleanCss, rev], + appCss: [() => cleanCss({ rebaseTo: 'css/css' }), rev], + libJs: [uglify, rev], + appJs: [uglify, rev], + jsAttributes: { defer: true } + })) + .pipe(plugins.debug({ title: 'usemin' })) + .pipe(gulp.dest(config.dist)); +}); + +gulp.task('install-dependencies', function (cb) { + exec(`cd ${config.app} && yarn install --prod --flat --frozen-lockfile && cd ..`, function (error, stdout, stderr) { + if (error) { + console.log(stderr); + } + cb(error); + }); +}); + +gulp.task('copy-fonts', function () { + return gulp.src('app/node_modules/patternfly/dist/fonts/*') + .pipe(plugins.debug({ title: 'copy-fonts' })) + .pipe(gulp.dest(config.distFonts)); +}); + +gulp.task('copy-images', function () { + var hawtioDependencies = config.app + 'node_modules/@hawtio'; + var dirs = fs.readdirSync(hawtioDependencies); + var patterns = []; + dirs.forEach(function (dir) { + var path = hawtioDependencies + '/' + dir + '/dist/img'; + try { + if (fs.statSync(path).isDirectory()) { + console.log('found image dir: ', path); + var pattern = hawtioDependencies + '/' + dir + '/dist/img/**/*'; + patterns.push(pattern); + } + } catch (e) { + // ignore, file does not exist + } + }); + // Add PatternFly images package in dist + patterns.push(config.app + 'node_modules/patternfly/dist/img/**/*'); + return gulp.src(patterns) + .pipe(plugins.debug({ title: 'copy-images' })) + .pipe(gulp.dest(config.distImg)); +}); + +gulp.task('404', function () { + return gulp.src(config.dist + 'index.html') + .pipe(plugins.rename('404.html')) + .pipe(gulp.dest(config.dist)); +}); + +gulp.task('copy-config', function () { + return gulp.src(config.src + '*.json') + .pipe(gulp.dest(config.dist)); +}); + +//------------------------------------------------------------------------------ +// serve tasks +//------------------------------------------------------------------------------ + +gulp.task('connect', function () { + hawtio.setConfig({ + logLevel: config.logLevel, + port: 2772, + proxy: '/hawtio/proxy', + staticProxies: [ + { + proto: 'http', + port: config.proxyPort, + hostname: 'localhost', + path: '/hawtio/jolokia', + targetPath: config.targetPath + } + ], + staticAssets: [{ + path: '/hawtio/', + dir: './dist/' + }], + fallback: './dist/index.html', + liveReload: { + enabled: true + } + }); + + hawtio.use('/', (req, res, next) => { + if (!s.startsWith(req.originalUrl, '/hawtio/') + || s.startsWith(req.originalUrl, '/hawtio/jvm/') + || s.startsWith(req.originalUrl, '/hawtio/help') + || s.startsWith(req.originalUrl, '/hawtio/preferences')) { + res.redirect('/hawtio/'); + } else { + next(); + } + }); + + hawtio.use('/hawtio/refresh', (req, res, next) => { + res.set('Content-Type', 'text/html;charset=UTF-8'); + res.send('ok'); + }); + + // used for hawtio-login + hawtio.use('/hawtio/auth/login', (req, res, next) => { + // login always succeeds + res.set('Content-Type', 'application/json'); + res.send('{}'); + }); + + // used for hawtio-login + hawtio.use('/hawtio/auth/logout', (req, res, next) => { + res.redirect('/hawtio/login.html'); + }); + + // used for hawtio-login + hawtio.use('/hawtio/user', (req, res, next) => { + // login always succeeds + res.set('Content-Type', 'application/json'); + res.send('"public"'); + }); + + // used for hawtio-login + hawtio.use('/hawtio/keycloak/enabled', (req, res, next) => { + res.set('Content-Type', 'application/json'); + res.send(config.keycloak); + }); + + // used for hawtio-login + hawtio.use('/hawtio/keycloak/client-config', (req, res, next) => { + res.set('Content-Type', 'application/json'); + res.send(` + { + "clientId": "hawtio-client", + "url": "http://localhost:18080/auth", + "realm": "hawtio-demo" + } + `); + }); + + // used for hawtio-login + hawtio.use('/hawtio/keycloak/validate-subject-matches', (req, res, next) => { + res.set('Content-Type', 'application/json'); + res.send('true'); + }); + + hawtio.listen(function (server) { + var host = server.address().address; + var port = server.address().port; + console.log("started from gulp file at", host, ":", port); + }); +}); + +gulp.task('watch', function () { + gulp.watch(config.src + '**/*', ['build']); + gulp.watch(config.dist + '*', ['reload']); +}); + +gulp.task('reload', function () { + gulp.src('dist/@(index|login).html') + .pipe(hawtio.reload()); +}); + +//------------------------------------------------------------------------------ +// main tasks +//------------------------------------------------------------------------------ + +gulp.task('build', callback => sequence('clean', 'tsc', 'template', 'template-docs', 'concat', 'less', + 'install-dependencies', 'usemin', 'copy-fonts', 'copy-images', '404', 'copy-config', callback)); + +gulp.task('default', callback => sequence('build', ['connect', 'watch'])); diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/package.json" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/package.json" new file mode 100755 index 0000000..a7553da --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/package.json" @@ -0,0 +1,51 @@ +{ + "name": "@hawtio/console-assembly", + "version": "2.0.0", + "description": "The hawt.io web console helps you manage your JVM stuff and stay cool!", + "scripts": { + "postinstall": "cd app && yarn install --prod --flat", + "start": "gulp", + "build": "gulp build" + }, + "devDependencies": { + "@hawtio/node-backend": "^3.0.0", + "event-stream": "3.3.4", + "gulp": "^3.0.0", + "gulp-angular-templatecache": "^2.0.0", + "gulp-chmod": "^2.0.0", + "gulp-clean": "~0.3.0", + "gulp-clean-css": "^4.0.0", + "gulp-concat": "^2.0.0", + "gulp-debug": "^3.1.0", + "gulp-dedupe": "0.0.2", + "gulp-flatten": "~0.3.0", + "gulp-gh-pages": "~0.5.0", + "gulp-header": "^1.0.0", + "gulp-if": "^2.0.2", + "gulp-less": "^3.0.0", + "gulp-load-plugins": "^1.0.0", + "gulp-ng-annotate": "~2.0.0", + "gulp-preprocess": "~3.0.1", + "gulp-rename": "^1.0.0", + "gulp-replace": "^0.6.1", + "gulp-rev": "^9.0.0", + "gulp-size": "^2.0.0", + "gulp-sourcemaps": "^2.6.0", + "gulp-tslint": "^8.1.1", + "gulp-typescript": "^4.0.0", + "gulp-uglify": "^3.0.0", + "gulp-usemin": "~0.3.0", + "run-sequence": "^2.0.0", + "tslint": "^5.4.3", + "typescript": "^3.0.0", + "underscore.string": "^3.0.0", + "urijs": "^1.0.0", + "url-join": "^2.0.2", + "vinyl-map": "^1.0.0" + }, + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/hawtio/hawtio.git" + } +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/pom.xml" new file mode 100755 index 0000000..a177d90 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/pom.xml" @@ -0,0 +1,107 @@ + + + + + io.hawt + project + 2.5.0 + + + 4.0.0 + hawtio-console-assembly + ${project.artifactId} + hawtio :: ${project.artifactId} + + + + + + + + + com.github.eirslett + frontend-maven-plugin + ${frontend-maven-plugin-version} + + + install node and npm + + install-node-and-npm + + + v8.11.3 + 5.6.0 + + + + install node and yarn + + install-node-and-yarn + + + v8.11.3 + v1.9.4 + + + + yarn install + + yarn + + + install + + + + yarn run build + + yarn + + + run build + + + + + + + maven-clean-plugin + + + + + ${basedir}/dist + + **/* + + false + + + ${basedir}/node_modules + + **/* + + false + + + ${basedir}/app/node_modules + + **/* + + false + + + ${basedir}/temp + + **/* + + false + + + + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tsconfig.json" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tsconfig.json" new file mode 100755 index 0000000..4c05019 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tsconfig.json" @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "ES5", + "declaration": false, + "outFile": "compiled.js", + "typeRoots": [ + "app/node_modules/@types", + "app/node_modules/@hawtio" + ] + }, + "include": [ + "app/src/**/*.ts", + "app/node_modules/jolokia.js/index.d.ts" + ] +} \ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tslint-rules/licenseHeaderRule.js" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tslint-rules/licenseHeaderRule.js" new file mode 100755 index 0000000..0e18d33 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tslint-rules/licenseHeaderRule.js" @@ -0,0 +1,28 @@ +function Rule() { + Lint.Rules.AbstractRule.apply(this, arguments); +} + +Rule.prototype = Object.create(Lint.Rules.AbstractRule.prototype); +Rule.prototype.apply = function(sourceFile) { + return this.applyWithWalker(new LicenseHeaderWalker(sourceFile, this.getOptions())); +}; + +function LicenseHeaderWalker() { + Lint.RuleWalker.apply(this, arguments); +} + +LicenseHeaderWalker.prototype = Object.create(Lint.RuleWalker.prototype); +LicenseHeaderWalker.prototype.visitSourceFile = function (node) { + // create a failure at the current position + var sourceText = this.getSourceFile().text; + + var licenceHeader = this.getOptions()[0]; + + if ( sourceText.indexOf(licenceHeader) !== 0 ){ + this.addFailure(this.createFailure(0, 0, "Missing or incorrect project license header.")); + } + + Lint.RuleWalker.prototype.visitSourceFile.call(this, node); +}; + +exports.Rule = Rule; diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tslint.json" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tslint.json" new file mode 100755 index 0000000..0150dad --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/tslint.json" @@ -0,0 +1,48 @@ +{ + "rules": { + "class-name": true, + "curly": true, + "eofline": true, + "forin": true, + "indent": [true, "spaces"], + "label-position": true, + "label-undefined": true, + "no-arg": true, + "no-bitwise": true, + "no-console": [true, + "trace" + ], + "no-construct": true, + "no-debugger": false, + "no-duplicate-key": true, + "no-duplicate-variable": true, + "no-empty": true, + "no-eval": true, + "no-string-literal": false, + "no-switch-case-fall-through": true, + "no-trailing-comma": true, + "no-unused-expression": true, + "no-unused-variable": false, + "no-unreachable": true, + "no-use-before-declare": true, + "one-line": [true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "radix": true, + "semicolon": true, + "triple-equals": [true, "allow-null-check"], + "variable-name": false, + "whitespace": [false, + "check-branch", + "check-decl", + "check-operator", + "check-separator" + ], + "license-header": [ true, + "/// Copyright 2014-2015 Red Hat, Inc. and/or its affiliates\n/// and other contributors as indicated by the @author tags.\n///\n/// Licensed under the Apache License, Version 2.0 (the \"License\");\n/// you may not use this file except in compliance with the License.\n/// You may obtain a copy of the License at\n///\n/// http://www.apache.org/licenses/LICENSE-2.0\n///\n/// Unless required by applicable law or agreed to in writing, software\n/// distributed under the License is distributed on an \"AS IS\" BASIS,\n/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n/// See the License for the specific language governing permissions and\n/// limitations under the License.\n" + ] + } +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/yarn.lock" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/yarn.lock" new file mode 100755 index 0000000..7cd06c5 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-console-assembly/yarn.lock" @@ -0,0 +1,4811 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@gulp-sourcemaps/identity-map@1.X": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" + integrity sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ== + dependencies: + acorn "^5.0.3" + css "^2.2.1" + normalize-path "^2.1.1" + source-map "^0.6.0" + through2 "^2.0.3" + +"@gulp-sourcemaps/map-sources@1.X": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" + integrity sha1-iQrnxdjId/bThIYCFazp1+yUW9o= + dependencies: + normalize-path "^2.0.1" + through2 "^2.0.3" + +"@hawtio/node-backend@^3.0.0": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@hawtio/node-backend/-/node-backend-3.1.5.tgz#320aae8ecb0ff42ab48fa9677e9a0e204b827cf5" + integrity sha512-PBbxPSx8BTistX2MmKPmtH4bTkNG0Qd+AEwkcG+0HTwlAtfzFGUfOwVtOReDF/H8cN4ag0SN6bp+c0Q+9Kk6CA== + dependencies: + "@types/node" "^7.0.31" + body-parser "^1.17.2" + connect-livereload "^0.6.0" + event-stream "3.3.4" + express "^4.15.3" + express-ws "^3.0.0" + http-proxy "^1.16.2" + js-logger "^1.3.0" + lodash "^4.17.4" + request "^2.81.0" + tiny-lr "^1.0.5" + underscore.string "^3.3.4" + urijs "^1.18.10" + +"@types/fancy-log@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@types/fancy-log/-/fancy-log-1.3.0.tgz#a61ab476e5e628cd07a846330df53b85e05c8ce0" + integrity sha512-mQjDxyOM1Cpocd+vm1kZBP7smwKZ4TNokFeds9LV7OZibmPJFEzY3+xZMrKfUdNT71lv8GoCPD6upKwHxubClw== + +"@types/node@^7.0.31": + version "7.10.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.10.2.tgz#a98845168012d7a63a84d50e738829da43bdb0de" + integrity sha512-RO4ig5taKmcrU4Rex8ojG1gpwFkjddzug9iPQSDvbewHN9vDpcFewevkaOK+KT+w1LeZnxbgOyfXwV4pxsQ4GQ== + +accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +accord@^0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/accord/-/accord-0.28.0.tgz#bec516a2f722e7d50f5f9f42f81b77f3b95448ba" + integrity sha512-sPF34gqHegaCSryKf5wHJ8wREK1dTZnHmC9hsB7D8xjntRdd30DXDPKf0YVIcSvnXJmcYu5SCvZRz28H++kFhQ== + dependencies: + convert-source-map "^1.5.0" + glob "^7.0.5" + indx "^0.2.3" + lodash.clone "^4.3.2" + lodash.defaults "^4.0.1" + lodash.flatten "^4.2.0" + lodash.merge "^4.4.0" + lodash.partialright "^4.1.4" + lodash.pick "^4.2.1" + lodash.uniq "^4.3.0" + resolve "^1.5.0" + semver "^5.3.0" + uglify-js "^2.8.22" + when "^3.7.8" + +acorn@5.X, acorn@^5.0.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + +acorn@~2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.6.4.tgz#eb1f45b4a43fa31d03701a5ec46f3b52673e90ee" + integrity sha1-6x9FtKQ/ox0DcBpexG87Umc+kO4= + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^6.5.5: + version "6.5.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" + integrity sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alter@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/alter/-/alter-0.2.0.tgz#c7588808617572034aae62480af26b1d4d1cb3cd" + integrity sha1-x1iICGF1cgNKrmJICvJrHU0cs80= + dependencies: + stable "~0.1.3" + +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= + dependencies: + ansi-wrap "0.1.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^0.2.0, ansi-regex@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" + integrity sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-styles@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" + integrity sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94= + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + integrity sha1-aHwydYFjWI/vfeezb6vklesaOZo= + dependencies: + arr-flatten "^1.0.1" + array-slice "^0.2.3" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" + integrity sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0= + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= + +array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8= + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.2.1, aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak= + +binaryextensions@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-1.0.1.tgz#1e637488b35b58bda5f4774bf96a5212a8c90755" + integrity sha1-HmN0iLNbWL2l9HdL+WpSEqjJB1U= + +bl@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" + integrity sha1-ysMo977kVzDUBLaSID/LWQ4XLV4= + dependencies: + readable-stream "^2.0.5" + +body-parser@1.18.3, body-parser@^1.17.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + +body@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" + integrity sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk= + dependencies: + continuable-cache "^0.3.1" + error "^7.0.0" + raw-body "~1.1.0" + safe-json-parse "~1.0.1" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8= + dependencies: + hoek "2.x.x" + +brace-expansion@^1.0.0: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + integrity sha1-wHshHHyVLsH479Uad+8NHTmQopI= + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + +bufferstreams@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/bufferstreams/-/bufferstreams-1.1.3.tgz#a8515ac024fa90e8fa7d58c11b13dea1f28abe72" + integrity sha512-HaJnVuslRF4g2kSDeyl++AaVizoitCpL9PglzCYwy0uHHyvWerfvEb8jWmYbF1z4kiVFolGomnxSGl+GUQp2jg== + dependencies: + readable-stream "^2.0.2" + +builtin-modules@^1.0.0, builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + +bytes@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" + integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" + integrity sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g== + dependencies: + ansi-styles "^3.2.0" + escape-string-regexp "^1.0.5" + supports-color "^5.2.0" + +chalk@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" + integrity sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ= + dependencies: + ansi-styles "^1.1.0" + escape-string-regexp "^1.0.0" + has-ansi "^0.1.0" + strip-ansi "^0.3.0" + supports-color "^0.2.0" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +clean-css@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== + dependencies: + source-map "~0.6.0" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + +clone-stats@^0.0.1, clone-stats@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE= + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + integrity sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8= + +clone@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" + integrity sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8= + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" + integrity sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colors@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= + +combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.12.1: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-with-sourcemaps@*, concat-with-sourcemaps@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + +connect-livereload@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/connect-livereload/-/connect-livereload-0.6.0.tgz#f9f009874ad6837183afb170b4c4e3857a1d7ceb" + integrity sha1-+fAJh0rWg3GDr7FwtMTjhXodfOs= + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +continuable-cache@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" + integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8= + +convert-source-map@1.X, convert-source-map@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^1.1.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + integrity sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU= + +convert-source-map@~1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" + integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g= + dependencies: + boom "2.x.x" + +css@2.X, css@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= + dependencies: + es5-ext "^0.10.9" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +dateformat@^1.0.7-1.2.3: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= + +debug-fabulous@1.X: + version "1.1.0" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-1.1.0.tgz#af8a08632465224ef4174a9f06308c3c2a1ebc8e" + integrity sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg== + dependencies: + debug "3.X" + memoizee "0.4.X" + object-assign "4.X" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.X, debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-assign@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-1.0.0.tgz#b092743be8427dc621ea0067cdec7e70dd19f37b" + integrity sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s= + dependencies: + is-obj "^1.0.0" + +defaults@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +deprecated@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" + integrity sha1-+cmvVGSvoeepcUWKi97yqpTVuxk= + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-file@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" + integrity sha1-STXe39lIhkjgBrASlWbpOGcR6mM= + dependencies: + fs-exists-sync "^0.1.0" + +detect-newline@2.X: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +diff@^3.2.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diff@~1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/diff/-/diff-1.0.8.tgz#343276308ec991b7bc82267ed55bc1411f971666" + integrity sha1-NDJ2MI7Jkbe8giZ+1VvBQR+XFmY= + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= + dependencies: + readable-stream "~1.1.9" + +duplexer@^0.1.1, duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.2.0, duplexify@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" + integrity sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +duplexify@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" + integrity sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" + integrity sha1-epDYM+/abPpurA9JSduw+tOmMgY= + dependencies: + once "^1.4.0" + +end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + +end-of-stream@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" + integrity sha1-jhdyBsPICDfYVjLouTWd/osvbq8= + dependencies: + once "~1.3.0" + +errno@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + integrity sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI= + dependencies: + string-template "~0.2.1" + xtend "~4.0.0" + +es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.46" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572" + integrity sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "1" + +es6-iterator@^2.0.1, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-2.3.0.tgz#96edb9f2fdb01995822b263dd8aadab6748181bc" + integrity sha1-lu258v2wGZWCKyY92KratnSBgbw= + +es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8= + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" + +event-stream@*: + version "4.0.1" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-4.0.1.tgz#4092808ec995d0dd75ea4580c1df6a74db2cde65" + integrity sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA== + dependencies: + duplexer "^0.1.1" + from "^0.1.7" + map-stream "0.0.7" + pause-stream "^0.0.11" + split "^1.0.1" + stream-combiner "^0.2.2" + through "^2.3.8" + +event-stream@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +eventemitter3@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + +expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= + dependencies: + os-homedir "^1.0.1" + +expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +express-ws@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/express-ws/-/express-ws-3.0.0.tgz#7ddaaf3b7c758865c099905989911b6234477dbd" + integrity sha1-fdqvO3x1iGXAmZBZiZEbYjRHfb0= + dependencies: + ws "^2.0.0" + +express@^4.15.3: + version "4.16.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" + integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.3" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.4" + qs "6.5.2" + range-parser "~1.2.0" + safe-buffer "5.1.2" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" + integrity sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE= + dependencies: + kind-of "^1.1.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ= + +extend@~3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fancy-log@1.3.2, fancy-log@^1.1.0, fancy-log@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" + integrity sha1-9BEl49hPLn2JpD0G2VjI94vha+E= + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + time-stamp "^1.0.0" + +fancy-log@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" + integrity sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg= + dependencies: + chalk "^1.1.1" + time-stamp "^1.0.0" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +faye-websocket@~0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM= + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +finalhandler@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ= + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +findup-sync@^0.4.0, findup-sync@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" + integrity sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI= + dependencies: + detect-file "^0.1.0" + is-glob "^2.0.1" + micromatch "^2.3.7" + resolve-dir "^0.1.0" + +fined@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" + integrity sha1-s33IRLdqL15wgeiE98CuNE8VNHY= + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + integrity sha1-Wb+1DNkF9g18OUzT2ayqtOatk04= + +first-chunk-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" + integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA= + dependencies: + readable-stream "^2.0.2" + +flagged-respawn@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" + integrity sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU= + +flush-write-stream@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +follow-redirects@^1.0.0: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-stream@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/fork-stream/-/fork-stream-0.0.4.tgz#db849fce77f6708a5f8f386ae533a0907b54ae70" + integrity sha1-24Sfznf2cIpfjzhq5TOgkHtUrnA= + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE= + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from@^0.1.7, from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= + +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= + +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gaze@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + integrity sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8= + dependencies: + globule "~0.1.0" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" + integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +gift@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/gift/-/gift-0.6.1.tgz#c1698e6b6887164ed978a01095423cff65b8e79f" + integrity sha1-wWmOa2iHFk7ZeKAQlUI8/2W4558= + dependencies: + underscore "1.x.x" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.0.0, glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-stream@^3.1.5: + version "3.1.18" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" + integrity sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs= + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^1.0.0" + +glob-stream@^5.3.2: + version "5.3.5" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" + integrity sha1-pVZlqajM3EGRWofHAeMtTgFvrSI= + dependencies: + extend "^3.0.0" + glob "^5.0.3" + glob-parent "^3.0.0" + micromatch "^2.3.7" + ordered-read-streams "^0.3.0" + through2 "^0.6.0" + to-absolute-glob "^0.1.1" + unique-stream "^2.0.2" + +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + +glob-watcher@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" + integrity sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs= + dependencies: + gaze "^0.5.1" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY= + dependencies: + find-index "^0.1.1" + +glob@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + integrity sha1-xstz0yJsHv7wTePFbQEvAzd+4V8= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^5.0.3: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.5, glob@^7.1.1, glob@~7.1.1: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + integrity sha1-0p4KBV3qUTj00H7UDomC6DwgZs0= + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + integrity sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU= + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +glogg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" + integrity sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw== + dependencies: + sparkles "^1.0.0" + +graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= + +graceful-fs@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + integrity sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg= + dependencies: + natives "^1.1.0" + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + integrity sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q= + +gulp-angular-templatecache@^2.0.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/gulp-angular-templatecache/-/gulp-angular-templatecache-2.2.5.tgz#56393cf3f9982f2d931de3ff51d1170bfa40248f" + integrity sha512-BaNAVSt7lRQ7hRicUrVD7sBmXGUbkIE8iEjb0MUti7myg/4EfcadHIu9CMTbdjQc+UgyRAudCx6FHfR5QOZ0Ag== + dependencies: + event-stream "3.3.4" + gulp-concat "2.6.1" + gulp-footer "2.0.1" + gulp-header "2.0.5" + jsesc "2.5.1" + lodash.template "^4.4.0" + through2 "^2.0.3" + +gulp-chmod@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-chmod/-/gulp-chmod-2.0.0.tgz#00c390b928a0799b251accf631aa09e01cc6299c" + integrity sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw= + dependencies: + deep-assign "^1.0.0" + stat-mode "^0.2.0" + through2 "^2.0.0" + +gulp-clean-css@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.0.0.tgz#1b67f1636e2b0da73499a7602396a0d570eb9626" + integrity sha512-/Hs+dmclQfFBSpwrAKd4wTVsahJvrVIg2ga0J7Eo7DKVTVfJrM7wXlfU1mK9iJ9Y7OmkO/YstZVtmhfAKzZ00g== + dependencies: + clean-css "4.2.1" + plugin-error "1.0.1" + through2 "3.0.0" + vinyl-sourcemaps-apply "0.2.1" + +gulp-clean@~0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/gulp-clean/-/gulp-clean-0.3.2.tgz#a347d473acea40182f935587a451941671928102" + integrity sha1-o0fUc6zqQBgvk1WHpFGUFnGSgQI= + dependencies: + gulp-util "^2.2.14" + rimraf "^2.2.8" + through2 "^0.4.2" + +gulp-concat@2.6.1, gulp-concat@^2.0.0, gulp-concat@~2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" + integrity sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M= + dependencies: + concat-with-sourcemaps "^1.0.0" + through2 "^2.0.0" + vinyl "^2.0.0" + +gulp-debug@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/gulp-debug/-/gulp-debug-3.2.0.tgz#45aba4439fa79fe0788f6a411ee0778f4492dfa5" + integrity sha512-2LZzP+ydczqz1rhqq/NYxvVvYTmOa0IgBl2B1sQTdkQgku9ayOUM/KHuGPjF4QA5aO1VcG+Sskw7iCcRUqHKkA== + dependencies: + chalk "^2.3.0" + fancy-log "^1.3.2" + plur "^2.0.0" + stringify-object "^3.0.0" + through2 "^2.0.0" + tildify "^1.1.2" + +gulp-dedupe@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/gulp-dedupe/-/gulp-dedupe-0.0.2.tgz#36ef92adf7fcf53e2f096fbe9665d988f9e1ca7e" + integrity sha1-Nu+Srff89T4vCW++lmXZiPnhyn4= + dependencies: + colors "~1.0.2" + diff "~1.0.8" + gulp-util "~3.0.1" + lodash.defaults "~2.4.1" + through "~2.3.6" + +gulp-flatten@~0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/gulp-flatten/-/gulp-flatten-0.3.1.tgz#51e7fec13a33c404578d18c1589d1b5bc45fe1d6" + integrity sha1-Uef+wTozxARXjRjBWJ0bW8Rf4dY= + dependencies: + gulp-util "^3.0.7" + through2 "^2.0.0" + +gulp-footer@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/gulp-footer/-/gulp-footer-2.0.1.tgz#76578359feb72aa280a97cb980bcfbe0e6216f3e" + integrity sha512-leXmoTEwXjklKuIE+8xGhuqlN/OdWubnkn3W/jNzmxxYbzQVjCtl2XI5iZztgPKLZ+Mh1t+7tTTGyVQqZva4+A== + dependencies: + event-stream "*" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.6.2" + +gulp-gh-pages@~0.5.0: + version "0.5.4" + resolved "https://registry.yarnpkg.com/gulp-gh-pages/-/gulp-gh-pages-0.5.4.tgz#a6732ca475ab9b5a53253c1c24734c40c21b6546" + integrity sha1-pnMspHWrm1pTJTwcJHNMQMIbZUY= + dependencies: + gift "^0.6.1" + gulp-util "^3.0.7" + readable-stream "^2.0.2" + rimraf "^2.4.3" + vinyl-fs "^2.2.1" + wrap-promise "^1.0.1" + +gulp-header@2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-2.0.5.tgz#16e229c73593ade301168024fea68dab75d9d38c" + integrity sha512-7bOIiHvM1GUHIG3LRH+UIanOxyjSys0FbzzgUBlV2cZIIZihEW+KKKKm0ejUBNGvRdhISEFFr6HlptXoa28gtQ== + dependencies: + concat-with-sourcemaps "*" + lodash.template "^4.4.0" + through2 "^2.0.0" + +gulp-header@^1.0.0: + version "1.8.12" + resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84" + integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== + dependencies: + concat-with-sourcemaps "*" + lodash.template "^4.4.0" + through2 "^2.0.0" + +gulp-if@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/gulp-if/-/gulp-if-2.0.2.tgz#a497b7e7573005041caa2bc8b7dda3c80444d629" + integrity sha1-pJe351cwBQQcqivIt92jyARE1ik= + dependencies: + gulp-match "^1.0.3" + ternary-stream "^2.0.1" + through2 "^2.0.1" + +gulp-less@^3.0.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/gulp-less/-/gulp-less-3.5.0.tgz#8014f469ddfc6544d7dda50098def0371bbb4f78" + integrity sha512-FQLY7unaHdTOXG0jlwxeBQcWoPPrTMQZRA7HfYwSNi9IPVx5l7GJEN72mG4ri2yigp/f/VNGUAJnFMJHBmH3iw== + dependencies: + accord "^0.28.0" + less "2.6.x || ^2.7.1" + object-assign "^4.0.1" + plugin-error "^0.1.2" + replace-ext "^1.0.0" + through2 "^2.0.0" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-load-plugins@^1.0.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/gulp-load-plugins/-/gulp-load-plugins-1.5.0.tgz#4c419f7e5764d9a0e33061bab9618f81b73d4171" + integrity sha1-TEGffldk2aDjMGG6uWGPgbc9QXE= + dependencies: + array-unique "^0.2.1" + fancy-log "^1.2.0" + findup-sync "^0.4.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + micromatch "^2.3.8" + resolve "^1.1.7" + +gulp-match@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/gulp-match/-/gulp-match-1.0.3.tgz#91c7c0d7f29becd6606d57d80a7f8776a87aba8e" + integrity sha1-kcfA1/Kb7NZgbVfYCn+Hdqh6uo4= + dependencies: + minimatch "^3.0.3" + +gulp-ng-annotate@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-ng-annotate/-/gulp-ng-annotate-2.0.0.tgz#84a83db1f016520bd70f9a5cfa9f3fe89e25a205" + integrity sha1-hKg9sfAWUgvXD5pc+p8/6J4logU= + dependencies: + bufferstreams "^1.1.0" + gulp-util "^3.0.7" + merge "^1.2.0" + ng-annotate "^1.2.1" + through2 "^2.0.1" + vinyl-sourcemaps-apply "^0.2.1" + +gulp-preprocess@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/gulp-preprocess/-/gulp-preprocess-3.0.1.tgz#ef16db8fe49c1da86e44d79c64c6ea7683fece16" + integrity sha512-YN0sU0IZD9fCiGcpTPPIkH3WaTqN+l6QDHkFy1Z2LT9db3w/raFarggDDIFMFEqiqM0pG2y7sQAdTMh6VDqjFg== + dependencies: + lodash "^4.17.10" + map-stream "^0.1.x" + preprocess "^3.0.0" + +gulp-rename@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.4.0.tgz#de1c718e7c4095ae861f7296ef4f3248648240bd" + integrity sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg== + +gulp-replace@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/gulp-replace/-/gulp-replace-0.6.1.tgz#11bf8c8fce533e33e2f6a8f2f430b955ba0be066" + integrity sha1-Eb+Mj85TPjPi9qjy9DC5VboL4GY= + dependencies: + istextorbinary "1.0.2" + readable-stream "^2.0.1" + replacestream "^4.0.0" + +gulp-rev@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/gulp-rev/-/gulp-rev-9.0.0.tgz#fe51b181c5fbbebfe740b64748d6980827e82878" + integrity sha512-Ytx/uzDA2xNxHlPG8GReS1ut00msd0HlKDk9Ai/0xF2yvg+DAeGRAviCFlQzQmdZtqAoXznYspwWoGEoxDvhyA== + dependencies: + modify-filename "^1.1.0" + plugin-error "^1.0.1" + rev-hash "^2.0.0" + rev-path "^2.0.0" + sort-keys "^2.0.0" + through2 "^2.0.0" + vinyl "^2.1.0" + vinyl-file "^3.0.0" + +gulp-size@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/gulp-size/-/gulp-size-2.1.0.tgz#1c2b64f17f9071d5abd99d154b7b3481f8fba128" + integrity sha1-HCtk8X+QcdWr2Z0VS3s0gfj7oSg= + dependencies: + chalk "^1.0.0" + gulp-util "^3.0.0" + gzip-size "^3.0.0" + object-assign "^4.0.1" + pretty-bytes "^3.0.1" + stream-counter "^1.0.0" + through2 "^2.0.0" + +gulp-sourcemaps@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c" + integrity sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw= + dependencies: + convert-source-map "^1.1.1" + graceful-fs "^4.1.2" + strip-bom "^2.0.0" + through2 "^2.0.0" + vinyl "^1.0.0" + +gulp-sourcemaps@^2.6.0: + version "2.6.4" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.4.tgz#cbb2008450b1bcce6cd23bf98337be751bf6e30a" + integrity sha1-y7IAhFCxvM5s0jv5gze+dRv24wo= + dependencies: + "@gulp-sourcemaps/identity-map" "1.X" + "@gulp-sourcemaps/map-sources" "1.X" + acorn "5.X" + convert-source-map "1.X" + css "2.X" + debug-fabulous "1.X" + detect-newline "2.X" + graceful-fs "4.X" + source-map "~0.6.0" + strip-bom-string "1.X" + through2 "2.X" + +gulp-tslint@^8.1.1: + version "8.1.3" + resolved "https://registry.yarnpkg.com/gulp-tslint/-/gulp-tslint-8.1.3.tgz#a89ed144038ae861ee7bfea9528272d126a93da1" + integrity sha512-KEP350N5B9Jg6o6jnyCyKVBPemJePYpMsGfIQq0G0ErvY7tw4Lrfb/y3L4WRf7ek0OsaE8nnj86w+lcLXW8ovw== + dependencies: + "@types/fancy-log" "1.3.0" + chalk "2.3.1" + fancy-log "1.3.2" + map-stream "~0.0.7" + plugin-error "1.0.1" + through "~2.3.8" + +gulp-typescript@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp-typescript/-/gulp-typescript-4.0.2.tgz#80bb9e376e7aa87b763a6ad5fe054a5d078da1e6" + integrity sha512-Hhbn5Aa2l3T+tnn0KqsG6RRJmcYEsr3byTL2nBpNBeAK8pqug9Od4AwddU4JEI+hRw7mzZyjRbB8DDWR6paGVA== + dependencies: + ansi-colors "^1.0.1" + plugin-error "^0.1.2" + source-map "^0.6.1" + through2 "^2.0.3" + vinyl "^2.1.0" + vinyl-fs "^3.0.0" + +gulp-uglify@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.1.tgz#8d3eee466521bea6b10fd75dff72adf8b7ea2d97" + integrity sha512-KVffbGY9d4Wv90bW/B1KZJyunLMyfHTBbilpDvmcrj5Go0/a1G3uVpt+1gRBWSw/11dqR3coJ1oWNTt1AiXuWQ== + dependencies: + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash "^4.13.1" + make-error-cause "^1.1.1" + safe-buffer "^5.1.2" + through2 "^2.0.0" + uglify-js "^3.0.5" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-usemin@~0.3.0: + version "0.3.29" + resolved "https://registry.yarnpkg.com/gulp-usemin/-/gulp-usemin-0.3.29.tgz#f6846dc2903ff094b813c9edcc84c6c01761802e" + integrity sha512-khg8KQeMxJ/UTWt1N7YrHSnBpZAbfU89ij4wqHbUdmBPr/f0/fYhuQwhjydqCGvgfQwm1RuQaSsPfUmRMNr/7Q== + dependencies: + glob "~7.1.1" + gulp-concat "~2.6.1" + plugin-error "~1.0.1" + through2 "~2.0.3" + vinyl "~2.1.0" + +gulp-util@^2.2.14: + version "2.2.20" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-2.2.20.tgz#d7146e5728910bd8f047a6b0b1e549bc22dbd64c" + integrity sha1-1xRuVyiRC9jwR6awseVJvCLb1kw= + dependencies: + chalk "^0.5.0" + dateformat "^1.0.7-1.2.3" + lodash._reinterpolate "^2.4.1" + lodash.template "^2.4.1" + minimist "^0.2.0" + multipipe "^0.1.0" + through2 "^0.5.0" + vinyl "^0.2.1" + +gulp-util@^3.0.0, gulp-util@^3.0.7, gulp-util@~3.0.1: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08= + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulp@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" + integrity sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ= + dependencies: + archy "^1.0.0" + chalk "^1.0.0" + deprecated "^0.0.1" + gulp-util "^3.0.0" + interpret "^1.0.0" + liftoff "^2.1.0" + minimist "^1.1.0" + orchestrator "^0.3.0" + pretty-hrtime "^1.0.0" + semver "^4.1.0" + tildify "^1.0.0" + v8flags "^2.0.2" + vinyl-fs "^0.3.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= + dependencies: + glogg "^1.0.0" + +gzip-size@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA= + dependencies: + duplexer "^0.1.1" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + integrity sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4= + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + integrity sha1-M0gdDxu/9gDdID11gSpqX7oALio= + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" + integrity sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4= + dependencies: + ansi-regex "^0.2.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4= + dependencies: + sparkles "^1.0.0" + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ= + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0= + +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw= + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.4.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" + integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== + +http-proxy@^1.16.2: + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8= + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iconv-lite@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indx@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/indx/-/indx-0.2.3.tgz#15dcf56ee9cf65c0234c513c27fbd580e70fbc50" + integrity sha1-Fdz1bunPZcAjTFE8J/vVgOcPvFA= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + integrity sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js= + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +interpret@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= + +ipaddr.js@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= + +irregular-plurals@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766" + integrity sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y= + +is-absolute@^0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" + integrity sha1-IN5p89uULvLYe5wto28XIjWxtes= + dependencies: + is-relative "^0.2.1" + is-windows "^0.2.0" + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= + dependencies: + builtin-modules "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0, is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + +is-promise@^2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-relative@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" + integrity sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU= + dependencies: + is-unc-path "^0.1.1" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unc-path@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" + integrity sha1-arBTpyVzwQJQ/0FqOBTDUXivObk= + dependencies: + unc-path-regex "^0.1.0" + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-glob@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" + integrity sha1-1LVcafUYhvm2XHDWwmItN+KfSP4= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= + +is-windows@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istextorbinary@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-1.0.2.tgz#ace19354d1a9a0173efeb1084ce0f87b0ad7decf" + integrity sha1-rOGTVNGpoBc+/rEITOD4ewrX3s8= + dependencies: + binaryextensions "~1.0.0" + textextensions "~1.0.0" + +js-logger@^1.3.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/js-logger/-/js-logger-1.6.0.tgz#7abae5cfaf208c965f3ef20754533bb9e79c7aef" + integrity sha512-K4kt2AdD0jUYINbe00BPPpsL65u/rdYOgfaBBVWm/mid+ANk7qxDnoXgKI5ilm49Sjmach2Dzlc+5VxKdRA3tw== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.7.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + integrity sha1-5CGiqOINawgZ3yiQj3glJrlt0f4= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + integrity sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + +"less@2.6.x || ^2.7.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b" + integrity sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ== + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^7.1.1" + request "2.81.0" + source-map "^0.5.3" + +liftoff@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" + integrity sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U= + dependencies: + extend "^3.0.0" + findup-sync "^0.4.2" + fined "^1.0.1" + flagged-respawn "^0.3.2" + lodash.isplainobject "^4.0.4" + lodash.isstring "^4.0.1" + lodash.mapvalues "^4.4.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +livereload-js@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c" + integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw== + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U= + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc= + +lodash._escapehtmlchar@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz#df67c3bb6b7e8e1e831ab48bfa0795b92afe899d" + integrity sha1-32fDu2t+jh6DGrSL+geVuSr+iZ0= + dependencies: + lodash._htmlescapes "~2.4.1" + +lodash._escapestringchar@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz#ecfe22618a2ade50bfeea43937e51df66f0edb72" + integrity sha1-7P4iYYoq3lC/7qQ5N+Ud9m8O23I= + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + +lodash._htmlescapes@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz#32d14bf0844b6de6f8b62a051b4f67c228b624cb" + integrity sha1-MtFL8IRLbeb4tioFG09nwii2JMs= + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= + +lodash._isnative@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c" + integrity sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw= + +lodash._objecttypes@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" + integrity sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE= + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo= + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0= + +lodash._reinterpolate@^2.4.1, lodash._reinterpolate@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz#4f1227aa5a8711fc632f5b07a1f4607aab8b3222" + integrity sha1-TxInqlqHEfxjL1sHofRgequLMiI= + +lodash._reinterpolate@^3.0.0, lodash._reinterpolate@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash._reunescapedhtml@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz#747c4fc40103eb3bb8a0976e571f7a2659e93ba7" + integrity sha1-dHxPxAED6zu4oJduVx96JlnpO6c= + dependencies: + lodash._htmlescapes "~2.4.1" + lodash.keys "~2.4.1" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= + +lodash._shimkeys@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" + integrity sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM= + dependencies: + lodash._objecttypes "~2.4.1" + +lodash.clone@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= + +lodash.defaults@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + +lodash.defaults@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz#a7e8885f05e68851144b6e12a8f3678026bc4c54" + integrity sha1-p+iIXwXmiFEUS24SqPNngCa8TFQ= + dependencies: + lodash._objecttypes "~2.4.1" + lodash.keys "~2.4.1" + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg= + dependencies: + lodash._root "^3.0.0" + +lodash.escape@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-2.4.1.tgz#2ce12c5e084db0a57dda5e5d1eeeb9f5d175a3b4" + integrity sha1-LOEsXghNsKV92l5dHu659dF1o7Q= + dependencies: + lodash._escapehtmlchar "~2.4.1" + lodash._reunescapedhtml "~2.4.1" + lodash.keys "~2.4.1" + +lodash.flatten@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= + +lodash.isequal@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + +lodash.isobject@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" + integrity sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU= + dependencies: + lodash._objecttypes "~2.4.1" + +lodash.isplainobject@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.keys@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz#48dea46df8ff7632b10d706b8acb26591e2b3727" + integrity sha1-SN6kbfj/djKxDXBrissmWR4rNyc= + dependencies: + lodash._isnative "~2.4.1" + lodash._shimkeys "~2.4.1" + lodash.isobject "~2.4.1" + +lodash.mapvalues@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= + +lodash.merge@^4.4.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" + integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== + +lodash.partialright@^4.1.4: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.partialright/-/lodash.partialright-4.2.1.tgz#0130d80e83363264d40074f329b8a3e7a8a1cc4b" + integrity sha1-ATDYDoM2MmTUAHTzKbij56ihzEs= + +lodash.pick@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= + +lodash.template@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-2.4.1.tgz#9e611007edf629129a974ab3c48b817b3e1cf20d" + integrity sha1-nmEQB+32KRKal0qzxIuBez4c8g0= + dependencies: + lodash._escapestringchar "~2.4.1" + lodash._reinterpolate "~2.4.1" + lodash.defaults "~2.4.1" + lodash.escape "~2.4.1" + lodash.keys "~2.4.1" + lodash.templatesettings "~2.4.1" + lodash.values "~2.4.1" + +lodash.template@^3.0.0, lodash.template@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8= + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.template@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU= + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash.templatesettings@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY= + dependencies: + lodash._reinterpolate "~3.0.0" + +lodash.templatesettings@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz#ea76c75d11eb86d4dbe89a83893bb861929ac699" + integrity sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk= + dependencies: + lodash._reinterpolate "~2.4.1" + lodash.escape "~2.4.1" + +lodash.uniq@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash.values@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz#abf514436b3cb705001627978cbcf30b1280eea4" + integrity sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ= + dependencies: + lodash.keys "~2.4.1" + +lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +lodash@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + integrity sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE= + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= + +lru-queue@0.1: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= + dependencies: + es5-ext "~0.10.2" + +make-error-cause@^1.1.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/make-error-cause/-/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d" + integrity sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0= + dependencies: + make-error "^1.2.0" + +make-error@^1.2.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== + +map-cache@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-stream@0.0.7, map-stream@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" + integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg= + +map-stream@^0.1.x, map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memoizee@0.4.X: + version "0.4.14" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" + integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== + dependencies: + d "1" + es5-ext "^0.10.45" + es6-weak-map "^2.0.2" + event-emitter "^0.3.5" + is-promise "^2.1" + lru-queue "0.1" + next-tick "1" + timers-ext "^0.1.5" + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= + dependencies: + readable-stream "^2.0.1" + +merge@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^2.3.7, micromatch@^2.3.8: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.36.0: + version "1.36.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" + integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== + +mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== + +mime-types@^2.1.12, mime-types@~2.1.18, mime-types@~2.1.19: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== + dependencies: + mime-db "~1.37.0" + +mime-types@~2.1.7: + version "2.1.20" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" + integrity sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A== + dependencies: + mime-db "~1.36.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + +mime@^1.2.11: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +"minimatch@2 || 3", minimatch@^3.0.3, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + integrity sha1-jQh8OcazjAAbl/ynzm0OHoCvusc= + dependencies: + brace-expansion "^1.0.0" + +minimatch@~0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + integrity sha1-x054BXT2PG+aCQ6Q775u9TpqdWo= + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.0.tgz#4dffe525dae2b864c66c2e23c6271d7afdecefce" + integrity sha1-Tf/lJdriuGTGbC4jxicdev3s784= + +minimist@^1.1.0, minimist@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +mkdirp@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +modify-filename@^1.0.0, modify-filename@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/modify-filename/-/modify-filename-1.1.0.tgz#9a2dec83806fbb2d975f22beec859ca26b393aa1" + integrity sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE= + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +multipipe@^0.1.0, multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s= + dependencies: + duplexer2 "0.0.2" + +natives@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.1.tgz#011acce1f7cbd87f7ba6b3093d6cd9392be1c574" + integrity sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA== + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= + +new-from@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/new-from/-/new-from-0.0.3.tgz#1c4ad13613de3e15d6321b70ed5c23937ea25e67" + integrity sha1-HErRNhPePhXWMhtw7Vwjk36iXmc= + dependencies: + readable-stream "~1.1.8" + +next-tick@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +ng-annotate@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/ng-annotate/-/ng-annotate-1.2.2.tgz#dc3fc51ba0b2f8b385dbe047f4da06f580a1fd61" + integrity sha1-3D/FG6Cy+LOF2+BH9NoG9YCh/WE= + dependencies: + acorn "~2.6.4" + alter "~0.2.0" + convert-source-map "~1.1.2" + optimist "~0.6.1" + ordered-ast-traverse "~1.1.1" + simple-fmt "~0.1.0" + simple-is "~0.2.0" + source-map "~0.5.3" + stable "~0.1.5" + stringmap "~0.2.2" + stringset "~0.2.1" + tryor "~0.1.2" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +now-and-later@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.0.tgz#bc61cbb456d79cb32207ce47ca05136ff2e7d6ee" + integrity sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4= + dependencies: + once "^1.3.2" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@4.X, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= + +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== + +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= + +object.assign@^4.0.4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA= + dependencies: + wrappy "1" + +optimist@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +orchestrator@^0.3.0: + version "0.3.8" + resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" + integrity sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4= + dependencies: + end-of-stream "~0.1.5" + sequencify "~0.0.7" + stream-consume "~0.1.0" + +ordered-ast-traverse@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ordered-ast-traverse/-/ordered-ast-traverse-1.1.1.tgz#6843a170bc0eee8b520cc8ddc1ddd3aa30fa057c" + integrity sha1-aEOhcLwO7otSDMjdwd3TqjD6BXw= + dependencies: + ordered-esprima-props "~1.1.0" + +ordered-esprima-props@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ordered-esprima-props/-/ordered-esprima-props-1.1.0.tgz#a9827086df5f010aa60e9bd02b6e0335cea2ffcb" + integrity sha1-qYJwht9fAQqmDpvQK24DNc6i/8s= + +ordered-read-streams@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" + integrity sha1-/VZamvjrRHO6abbtijQ1LLVS8SY= + +ordered-read-streams@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" + integrity sha1-cTfmmzKYuzQiR6G77jiByA4v14s= + dependencies: + is-stream "^1.0.1" + readable-stream "^2.0.1" + +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +parse-filepath@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" + integrity sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M= + dependencies: + is-absolute "^0.2.3" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-parse@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pause-stream@0.0.11, pause-stream@^0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= + dependencies: + through "~2.3" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +plugin-error@1.0.1, plugin-error@^1.0.1, plugin-error@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== + dependencies: + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + +plugin-error@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" + integrity sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4= + dependencies: + ansi-cyan "^0.1.1" + ansi-red "^0.1.1" + arr-diff "^1.0.1" + arr-union "^2.0.1" + extend-shallow "^1.1.2" + +plur@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" + integrity sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo= + dependencies: + irregular-plurals "^1.0.0" + +preprocess@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/preprocess/-/preprocess-3.1.0.tgz#a44e5cdd5bbb5a54f0ad289aaeed80995d7d938a" + integrity sha1-pE5c3Vu7WlTwrSiaru2AmV19k4o= + dependencies: + xregexp "3.1.0" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + +pretty-bytes@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" + integrity sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8= + dependencies: + number-is-nan "^1.0.0" + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +proxy-addr@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.8.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.24: + version "1.1.29" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@6.5.2, qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +qs@^6.4.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2" + integrity sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA== + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + integrity sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + +raw-body@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" + integrity sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU= + dependencies: + bytes "1" + string_decoder "0.10" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +"readable-stream@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.6.tgz#351302e4c68b5abd6a2ed55376a7f9a25be3057a" + integrity sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readable-stream@^2.1.5, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@~1.1.8, readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ= + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +replacestream@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/replacestream/-/replacestream-4.0.3.tgz#3ee5798092be364b1cdb1484308492cb3dff2f36" + integrity sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA== + dependencies: + escape-string-regexp "^1.0.3" + object-assign "^4.0.1" + readable-stream "^2.0.2" + +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + integrity sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA= + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +request@^2.81.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.1.7: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + integrity sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw== + dependencies: + path-parse "^1.0.5" + +resolve@^1.3.2, resolve@^1.5.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== + dependencies: + path-parse "^1.0.5" + +rev-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/rev-hash/-/rev-hash-2.0.0.tgz#7720a236ed0c258df3e64bec03ec048b05b924c4" + integrity sha1-dyCiNu0MJY3z5kvsA+wEiwW5JMQ= + +rev-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/rev-path/-/rev-path-2.0.0.tgz#10c978e824d76ce7dd1f7e66e88f50f5e71a0a6a" + integrity sha512-G5R2L9gYu9kEuqPfIFgO9gO+OhBWOAT83HyauOQmGHO6y9Fsa4acv+XsmNhNDrod0HDh1/VxJRmsffThzeHJlQ== + dependencies: + modify-filename "^1.0.0" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + dependencies: + align-text "^0.1.1" + +rimraf@^2.2.8, rimraf@^2.4.3: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== + dependencies: + glob "^7.0.5" + +run-sequence@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.2.1.tgz#1ce643da36fd8c7ea7e1a9329da33fc2b8898495" + integrity sha512-qkzZnQWMZjcKbh3CNly2srtrkaO/2H/SI5f2eliMCapdRD3UhMrwjfOAZJAnZ2H8Ju4aBzFZkBGXUqFs9V0yxw== + dependencies: + chalk "^1.1.3" + fancy-log "^1.3.2" + plugin-error "^0.1.2" + +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + integrity sha1-0mPKVGls2KMGtcplUekt5XkY++c= + +safe-json-parse@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" + integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c= + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +semver@^4.1.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + integrity sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto= + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +sequencify@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" + integrity sha1-kM/xnQLgcCf9dn9erT57ldHnOAw= + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +simple-fmt@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/simple-fmt/-/simple-fmt-0.1.0.tgz#191bf566a59e6530482cb25ab53b4a8dc85c3a6b" + integrity sha1-GRv1ZqWeZTBILLJatTtKjchcOms= + +simple-is@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz#2abb75aade39deb5cc815ce10e6191164850baf0" + integrity sha1-Krt1qt453rXMgVzhDmGRFkhQuvA= + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg= + dependencies: + hoek "2.x.x" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +source-map-resolve@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.5.1, source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + +spdx-correct@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" + integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f" + integrity sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w== + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= + dependencies: + through "2" + +split@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +sprintf-js@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" + integrity sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw= + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz#c946d6bd9b1a39d0e8635763f5242d6ed6dcb629" + integrity sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stable@~0.1.3, stable@~0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.6.tgz#910f5d2aed7b520c6e777499c1f32e139fdecb10" + integrity sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA= + +stat-mode@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" + integrity sha1-5sgLYjEj19gM8TLOU480YokHJQI= + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== + +stream-combiner@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" + integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg= + dependencies: + duplexer "~0.1.1" + through "~2.3.4" + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= + dependencies: + duplexer "~0.1.1" + +stream-consume@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" + integrity sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8= + +stream-counter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-counter/-/stream-counter-1.0.0.tgz#91cf2569ce4dc5061febcd7acb26394a5a114751" + integrity sha1-kc8lac5NxQYf6816yyY5SloRR1E= + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= + +string_decoder@0.10, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +stringmap@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" + integrity sha1-VWwTeyWPlCuHdvWy71gqoGnX0bE= + +stringset@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/stringset/-/stringset-0.2.1.tgz#ef259c4e349344377fcd1c913dd2e848c9c042b5" + integrity sha1-7yWcTjSTRDd/zRyRPdLoSMnAQrU= + +stringstream@~0.0.4: + version "0.0.6" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" + integrity sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA== + +strip-ansi@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" + integrity sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA= + dependencies: + ansi-regex "^0.2.1" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-bom-buf@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" + integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI= + dependencies: + is-utf8 "^0.2.1" + +strip-bom-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" + integrity sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4= + dependencies: + first-chunk-stream "^1.0.0" + strip-bom "^2.0.0" + +strip-bom-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" + integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco= + dependencies: + first-chunk-stream "^2.0.0" + strip-bom "^2.0.0" + +strip-bom-string@1.X: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-bom@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" + integrity sha1-hbiGLzhEtabV7IRnqTWYFzo295Q= + dependencies: + first-chunk-stream "^1.0.0" + is-utf8 "^0.2.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +supports-color@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" + integrity sha1-2S3iaU6z9nMjlz1649i1W0wiGQo= + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.2.0, supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +ternary-stream@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ternary-stream/-/ternary-stream-2.0.1.tgz#064e489b4b5bf60ba6a6b7bc7f2f5c274ecf8269" + integrity sha1-Bk5Im0tb9gumpre8fy9cJ07Pgmk= + dependencies: + duplexify "^3.5.0" + fork-stream "^0.0.4" + merge-stream "^1.0.0" + through2 "^2.0.1" + +textextensions@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-1.0.2.tgz#65486393ee1f2bb039a60cbba05b0b68bd9501d2" + integrity sha1-ZUhjk+4fK7A5pgy7oFsLaL2VAdI= + +through2-filter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" + integrity sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw= + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@2.X, through2@^2.0.1, through2@~2.0.0, through2@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through2@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.0.tgz#468b461df9cd9fcc170f22ebf6852e467e578ff2" + integrity sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ== + dependencies: + readable-stream "2 || 3" + xtend "~4.0.1" + +through2@^0.4.1, through2@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" + integrity sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s= + dependencies: + readable-stream "~1.0.17" + xtend "~2.1.1" + +through2@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7" + integrity sha1-390BLrnHAOIyP9M084rGIqs3Lac= + dependencies: + readable-stream "~1.0.17" + xtend "~3.0.0" + +through2@^0.6.0, through2@^0.6.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through2@^2.0.0, through2@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@2, through@^2.3.8, through@~2.3, through@~2.3.1, through@~2.3.4, through@~2.3.6, through@~2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +tildify@^1.0.0, tildify@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" + integrity sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo= + dependencies: + os-homedir "^1.0.0" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + +timers-ext@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + +tiny-lr@^1.0.5: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" + integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA== + dependencies: + body "^5.1.0" + debug "^3.1.0" + faye-websocket "~0.10.0" + livereload-js "^2.3.0" + object-assign "^4.1.0" + qs "^6.4.0" + +to-absolute-glob@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" + integrity sha1-HN+kcqnvUMI57maZm2YsoOs5k38= + dependencies: + extend-shallow "^2.0.1" + +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== + dependencies: + punycode "^1.4.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +tryor@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/tryor/-/tryor-0.1.2.tgz#8145e4ca7caff40acde3ccf946e8b8bb75b4172b" + integrity sha1-gUXkynyv9ArN48z5Rui4u3W0Fys= + +tslib@^1.8.0, tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tslint@^5.4.3: + version "5.11.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" + integrity sha1-mPMMAurjzecAYgHkwzywi0hYHu0= + dependencies: + babel-code-frame "^6.22.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^3.2.0" + glob "^7.1.1" + js-yaml "^3.7.0" + minimatch "^3.0.4" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.27.2" + +tsutils@^2.27.2: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +typescript@^3.0.0: + version "3.1.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" + integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== + +uglify-js@^2.8.22: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-js@^3.0.5: + version "3.4.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unc-path-regex@^0.1.0, unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +underscore.string@^3.0.0, underscore.string@^3.3.4: + version "3.3.5" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" + integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg== + dependencies: + sprintf-js "^1.0.3" + util-deprecate "^1.0.2" + +underscore@1.x.x: + version "1.8.3" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= + +unique-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" + integrity sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs= + +unique-stream@^2.0.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" + integrity sha1-WqADz76Uxf+GbE59ZouxxNuts2k= + dependencies: + json-stable-stringify "^1.0.0" + through2-filter "^2.0.0" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urijs@^1.0.0, urijs@^1.18.10: + version "1.19.1" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.1.tgz#5b0ff530c0cbde8386f6342235ba5ca6e995d25a" + integrity sha512-xVrGVi94ueCJNrBSTjWqjvtgvl3cyOTThp2zaMaFNGp3F542TR6sM3f2o8RqZl+AwteClSVmoCyt0ka4RjQOQg== + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-join@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" + integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg= + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.0, uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +v8flags@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + dependencies: + user-home "^1.1.1" + +vali-date@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" + integrity sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY= + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl-file@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365" + integrity sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U= + dependencies: + graceful-fs "^4.1.2" + pify "^2.3.0" + strip-bom-buf "^1.0.0" + strip-bom-stream "^2.0.0" + vinyl "^2.0.1" + +vinyl-fs@^0.3.0: + version "0.3.14" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" + integrity sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY= + dependencies: + defaults "^1.0.0" + glob-stream "^3.1.5" + glob-watcher "^0.0.6" + graceful-fs "^3.0.0" + mkdirp "^0.5.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl-fs@^2.2.1: + version "2.4.4" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" + integrity sha1-vm/zJwy1Xf19MGNkDegfJddTIjk= + dependencies: + duplexify "^3.2.0" + glob-stream "^5.3.2" + graceful-fs "^4.0.0" + gulp-sourcemaps "1.6.0" + is-valid-glob "^0.3.0" + lazystream "^1.0.0" + lodash.isequal "^4.0.0" + merge-stream "^1.0.0" + mkdirp "^0.5.0" + object-assign "^4.0.0" + readable-stream "^2.0.4" + strip-bom "^2.0.0" + strip-bom-stream "^1.0.0" + through2 "^2.0.0" + through2-filter "^2.0.0" + vali-date "^1.0.0" + vinyl "^1.0.0" + +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-map@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/vinyl-map/-/vinyl-map-1.0.2.tgz#a8b296025f973fa7cad62817967a48f1d176bf7c" + integrity sha1-qLKWAl+XP6fK1igXlnpI8dF2v3w= + dependencies: + bl "^1.1.2" + new-from "0.0.3" + through2 "^0.4.1" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl-sourcemaps-apply@0.2.1, vinyl-sourcemaps-apply@^0.2.0, vinyl-sourcemaps-apply@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU= + dependencies: + source-map "^0.5.1" + +vinyl@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.2.3.tgz#bca938209582ec5a49ad538a00fa1f125e513252" + integrity sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI= + dependencies: + clone-stats "~0.0.1" + +vinyl@^0.4.0: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + integrity sha1-LzVsh6VQolVGHza76ypbqL94SEc= + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + integrity sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4= + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + integrity sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ= + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.0, vinyl@^2.0.1, vinyl@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vinyl@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" + integrity sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw= + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +when@^3.7.8: + version "3.7.8" + resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" + integrity sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I= + +which@^1.2.12: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg== + dependencies: + isexe "^2.0.0" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wrap-promise@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wrap-promise/-/wrap-promise-1.0.1.tgz#b019f4236ccbf1fb560921b4b4870b7bda2f5255" + integrity sha1-sBn0I2zL8ftWCSG0tIcLe9ovUlU= + dependencies: + es6-promise "^2.3.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^2.0.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-2.3.1.tgz#6b94b3e447cb6a363f785eaf94af6359e8e81c80" + integrity sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA= + dependencies: + safe-buffer "~5.0.1" + ultron "~1.1.0" + +xregexp@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-3.1.0.tgz#14d8461e0bdd38224bfee5039a0898fc42fcd336" + integrity sha1-FNhGHgvdOCJL/uUDmgiY/EL80zY= + +"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + dependencies: + object-keys "~0.4.0" + +xtend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" + integrity sha1-XM50B7r2Qsunvs2laBEcST9ZZlo= + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/pom.xml" new file mode 100755 index 0000000..cfe8aa1 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/pom.xml" @@ -0,0 +1,45 @@ + + + + io.hawt + project + 2.5.0 + + + 4.0.0 + hawtio-core + ${project.artifactId} + hawtio :: hawtio-core + + + + + + + io.hawt + hawtio-util + ${project.version} + + + + + org.slf4j + slf4j-api + ${slf4j-version} + + + + + junit + junit + ${junit-version} + test + + + org.slf4j + slf4j-log4j12 + ${slf4j-version} + test + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/ConfigFacade.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/ConfigFacade.java" new file mode 100755 index 0000000..b263640 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/ConfigFacade.java" @@ -0,0 +1,108 @@ +package io.hawt.config; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import io.hawt.util.MBeanSupport; +import io.hawt.util.Objects; +import io.hawt.util.Strings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * A facade for the hawtio configuration features. + */ +public class ConfigFacade extends MBeanSupport implements ConfigFacadeMBean { + private static final transient Logger LOG = LoggerFactory.getLogger(ConfigFacade.class); + private static ConfigFacade singleton; + + private static Map urlStreamHandlerMap = new ConcurrentHashMap(); + private String configDir; + private String version; + + public static ConfigFacade getSingleton() { + if (singleton == null) { + LOG.debug("No ConfigFacade constructed yet so using default configuration for now"); + singleton = new ConfigFacade(); + } + return singleton; + } + + @Override + public void init() throws Exception { + ConfigFacade.singleton = this; + super.init(); + } + + @Override + protected String getDefaultObjectName() { + return "hawtio:type=ConfigFacade"; + } + + @Override + public String getVersion() { + if (version == null) { + version = Objects.getVersion(getClass(), "io.hawt", "hawtio-core"); + } + return version; + } + + /** + * Returns the configuration directory; lazily attempting to create it if it does not yet exist + */ + public File getConfigDirectory() { + String dirName = getConfigDir(); + File answer = null; + if (Strings.isNotBlank(dirName)) { + answer = new File(dirName); + } else { + answer = new File(".hawtio"); + } + answer.mkdirs(); + return answer; + } + + @Override + public String getConfigDir() { + if (Strings.isBlank(configDir)) { + // lets default to the users home directory + String home = System.getProperty("user.home", "~"); + configDir = home + System.getProperty("hawtio.dirname", "/.hawtio"); + } + return configDir; + } + + public void setConfigDir(String configDir) { + this.configDir = configDir; + } + + public InputStream openURL(String url) throws IOException { + int idx = url.indexOf(':'); + if (idx > 1) { + String protocol = url.substring(0, idx); + String path = url.substring(idx + 1); + URLHandler urlHandler = getUrlHandler(protocol); + if (urlHandler != null) { + return urlHandler.openStream(path); + } + } + return new URL(url).openStream(); + } + + public URLHandler getUrlHandler(String protocol) { + return urlStreamHandlerMap.get(protocol); + } + + public void addUrlHandler(String protocol, URLHandler handler) { + urlStreamHandlerMap.put(protocol, handler); + } + + public void removeUrlHandler(String protocol) { + urlStreamHandlerMap.remove(protocol); + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/ConfigFacadeMBean.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/ConfigFacadeMBean.java" new file mode 100755 index 0000000..4ae966f --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/ConfigFacadeMBean.java" @@ -0,0 +1,16 @@ +package io.hawt.config; + +/** + * The JMX MBean interface for working with hawtio configuration + */ +public interface ConfigFacadeMBean { + /** + * Returns the fully qualified path name where configuration is written. + */ + String getConfigDir(); + + /** + * Returns the hawtio version + */ + String getVersion(); +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/URLHandler.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/URLHandler.java" new file mode 100755 index 0000000..8f7530c --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/java/io/hawt/config/URLHandler.java" @@ -0,0 +1,31 @@ +/** + * Copyright (C) 2013 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.hawt.config; + +import java.io.InputStream; + +/** + * A facade above the URLStreamHandler interface so we can use URL handlers with different kinds of class loaders + * and registration rather than relying on the global classpath like the java.net.URL class + */ +public interface URLHandler { + /** + * Returns the stream to the given URL + */ + InputStream openStream(String url); +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml" new file mode 100755 index 0000000..073641d --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/main/resources/OSGI-INF/blueprint/blueprint.xml" @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/test/java/io/hawt/config/ConfigFacadeTest.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/test/java/io/hawt/config/ConfigFacadeTest.java" new file mode 100755 index 0000000..35f0e75 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/test/java/io/hawt/config/ConfigFacadeTest.java" @@ -0,0 +1,47 @@ +package io.hawt.config; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + + +public class ConfigFacadeTest { + ConfigFacade facade = new ConfigFacade(); + + @Before + public void init() throws Exception { + facade.init(); + } + + @After + public void destroy() throws Exception { + facade.destroy(); + } + + @Test + public void testDefaultsToHomeDirectory() throws Exception { + File configDirectory = facade.getConfigDirectory(); + assertTrue("the config directory should exist " + configDirectory, configDirectory.exists()); + assertTrue("the config directory should be a directory " + configDirectory, configDirectory.isDirectory()); + assertEquals("The config directory name", ".hawtio", configDirectory.getName()); + + File homeDir = new File(System.getProperty("user.home", "noHomeDir")); + File parentFile = configDirectory.getParentFile(); + assertNotNull("Should have a parent directory", parentFile); + + assertEquals("config dir should be in the home directory", homeDir.getCanonicalPath(), parentFile.getCanonicalPath()); + } + + @Test + public void testHasVersion() throws Exception { + String version = facade.getVersion(); + System.out.println("Has version: " + version); + } + +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/test/resources/log4j.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/test/resources/log4j.properties" new file mode 100755 index 0000000..70f6cb4 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-core/src/test/resources/log4j.properties" @@ -0,0 +1,18 @@ +# +# The logging properties used during tests.. +# +log4j.rootLogger=INFO, stdout, out + +#log4j.logger.io.hawt.introspect=DEBUG + +# CONSOLE appender not used by default +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n + +# File appender +log4j.appender.out=org.apache.log4j.FileAppender +log4j.appender.out.layout=org.apache.log4j.PatternLayout +log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n +log4j.appender.out.file=target/test.log +log4j.appender.out.append=true diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/.gitignore" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/.gitignore" new file mode 100755 index 0000000..072a31e --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/.gitignore" @@ -0,0 +1,4 @@ +hawtio-config +hawtio.log +overlays +mavenIndexer diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/pom.xml" new file mode 100755 index 0000000..5655c7b --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/pom.xml" @@ -0,0 +1,173 @@ + + + + io.hawt + project + 2.5.0 + + + 4.0.0 + hawtio-default + war + ${project.artifactId} + hawtio :: Default Web Application + + + + javax.servlet + javax.servlet-api + ${servlet-api-version} + provided + + + + io.hawt + hawtio-base + ${project.version} + + war + + + + + io.hawt + hawtio-core + ${project.version} + provided + + + org.slf4j + slf4j-api + ${slf4j-version} + provided + + + org.apache.aries.blueprint + org.apache.aries.blueprint.web + ${blueprint-web-version} + provided + + + org.apache.geronimo.specs + geronimo-servlet_2.5_spec + + + + org.slf4j + slf4j-api + + + + + + + io.hawt + hawtio-log + ${project.version} + + + io.hawt + hawtio-ide + ${project.version} + + + io.hawt + hawtio-local-jvm-mbean + ${project.version} + + + + + commons-codec + commons-codec + ${commons-codec-version} + + + commons-logging + commons-logging + ${commons-logging-version} + + + + + + + + + org.apache.maven.plugins + maven-war-plugin + + **/lib/commons-logging-1.0.3.jar + false + + + + + ${jetty-plugin-groupId} + jetty-maven-plugin + ${jetty-version} + + ${project.build.directory}/${project.name} + 1 + + ${context} + + + + ${jettyPort} + 60000 + + + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.0 + + 9090 + ${context} + + + false + + + + + org.apache.tomcat.maven + tomcat6-maven-plugin + 2.0 + + 9090 + ${context} + + + false + + + + + + maven-clean-plugin + + + + ${basedir}/overlays + + **/*.* + + false + + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/OSGI-INF/blueprint/blueprint.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/OSGI-INF/blueprint/blueprint.xml" new file mode 100755 index 0000000..b2e8469 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/OSGI-INF/blueprint/blueprint.xml" @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/blueprint.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/blueprint.properties" new file mode 100755 index 0000000..860fdbe --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/blueprint.properties" @@ -0,0 +1,5 @@ +# the properties file used to override blueprint configuration properties: +# http://aries.apache.org/modules/blueprintweb.html +# +# for hawtio configuration options see: +# https://github.com/hawtio/hawtio/blob/master/docs/Configuration.md \ No newline at end of file diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/log4j.properties" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/log4j.properties" new file mode 100755 index 0000000..e0d1274 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/resources/log4j.properties" @@ -0,0 +1,14 @@ +log4j.rootLogger=INFO, console + +# Console will only display warnnings +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=%-5p | %t | %m%n +log4j.appender.console.threshold=INFO + +# File appender will contain all info messages +log4j.appender.file=org.apache.log4j.FileAppender +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d | %-5p | %m | %c | %t%n +log4j.appender.file.file=${user.home}/.hawtio/logs/hawtio.log +log4j.appender.file.append=true diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/webapp/.gitignore" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-default/src/main/webapp/.gitignore" new file mode 100755 index 0000000..e69de29 diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/.gitignore" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/.gitignore" new file mode 100755 index 0000000..9698a7c --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/.gitignore" @@ -0,0 +1 @@ +hawtio-config diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/pom.xml" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/pom.xml" new file mode 100755 index 0000000..ca7c157 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/pom.xml" @@ -0,0 +1,98 @@ + + + + io.hawt + project + 2.5.0 + + + 4.0.0 + hawtio-embedded + ${project.artifactId} + hawtio :: hawtio-embedded + + + + org.eclipse.jetty + jetty-webapp + ${jetty-version} + + + org.eclipse.jetty + jetty-server + ${jetty-version} + + + + + org.slf4j + slf4j-api + ${slf4j-version} + + + org.slf4j + slf4j-simple + ${slf4j-version} + + + + + junit + junit + ${junit-version} + test + + + org.apache.httpcomponents + fluent-hc + ${httpclient-version} + test + + + io.hawt + hawtio-default + ${project.version} + war + test + + + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin-version} + + + + java + + + + + io.hawt.embedded.Main + test + + --warLocation + ${basedir}/../hawtio-default/target + --port + ${jettyPort} + --contextPath + ${context} + + + + basedir + ${basedir} + + + hawtio.authenticationEnabled + false + + + + + + + diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/src/main/java/io/hawt/embedded/Main.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/src/main/java/io/hawt/embedded/Main.java" new file mode 100755 index 0000000..b90759b --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/src/main/java/io/hawt/embedded/Main.java" @@ -0,0 +1,324 @@ +/** + * Copyright (C) 2013 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.hawt.embedded; + +import java.io.File; +import java.io.FilenameFilter; +import java.net.InetAddress; +import java.net.InetSocketAddress; + +import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.HttpConfiguration; +import org.eclipse.jetty.server.HttpConnectionFactory; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.server.SslConnectionFactory; +import org.eclipse.jetty.server.handler.HandlerCollection; +import org.eclipse.jetty.util.log.Log; +import org.eclipse.jetty.util.log.Slf4jLog; +import org.eclipse.jetty.util.ssl.SslContextFactory; +import org.eclipse.jetty.webapp.WebAppContext; + +/** + * A simple way to run hawtio embedded inside a JVM by booting up a Jetty server + */ +public class Main { + private Options options; + private boolean welcome = true; + + public Main() { + options = new Options(); + options.init(); + } + + public static void main(String[] args) { + Main main = new Main(); + + if (!main.parseArguments(args) || main.isHelp()) { + main.showOptions(); + return; + } + + doRun(main); + } + + public boolean parseArguments(String[] args) { + return options.parseArguments(args); + } + + public void showOptions() { + options.showOptions(); + } + + public static void doRun(Main main) { + try { + main.run(); + } catch (Exception e) { + System.out.println("Error: " + e); + e.printStackTrace(); + } + } + + public void run() throws Exception { + run(options.isJointServerThread()); + } + + public void run(boolean join) throws Exception { + System.setProperty("org.eclipse.jetty.util.log.class", Slf4jLog.class.getName()); + Slf4jLog log = new Slf4jLog("jetty"); + Log.setLog(log); + + Server server = new Server(new InetSocketAddress(InetAddress.getByName(options.getHost()), options.getPort())); + + HandlerCollection handlers = new HandlerCollection(); + handlers.setServer(server); + server.setHandler(handlers); + String scheme = "http"; + if (null != options.getKeyStore()) { + System.out.println("Configuring SSL"); + SslContextFactory sslcontf = new SslContextFactory(); + HttpConfiguration httpconf = new HttpConfiguration(); + sslcontf.setKeyStorePath(options.getKeyStore()); + if (null != options.getKeyStorePass()) { + sslcontf.setKeyStorePassword(options.getKeyStorePass()); + } else { + System.out.println("Attempting to open keystore with no password..."); + } + try (ServerConnector sslconn = new ServerConnector(server, new SslConnectionFactory(sslcontf, "http/1.1"), new HttpConnectionFactory(httpconf));) { + sslconn.setPort(options.getPort()); + server.setConnectors(new Connector[] { sslconn }); + + } + scheme = "https"; + } + String sysScheme = System.getProperty("hawtio.redirect.scheme"); + if (null == sysScheme) { + System.out.println("Implicitly setting Scheme = " + scheme); + System.setProperty("hawtio.redirect.scheme", scheme); + } else { + System.out.println("Scheme Was Set Explicitly To = " + scheme); + scheme = sysScheme; + } + WebAppContext webapp = new WebAppContext(); + webapp.setServer(server); + webapp.setContextPath(options.getContextPath()); + String war = findWar(options.getWarLocation()); + if (war == null) { + war = options.getWar(); + } + if (war == null) { + throw new IllegalArgumentException("No war or warLocation options set!"); + } + webapp.setWar(war); + webapp.setParentLoaderPriority(true); + webapp.setLogUrlOnStart(true); + webapp.setInitParameter("scheme", scheme); + webapp.setExtraClasspath(options.getExtraClassPath()); + + // lets set a temporary directory so jetty doesn't bork if some process zaps /tmp/* + String homeDir = System.getProperty("user.home", ".") + "/.hawtio"; + String tempDirPath = homeDir + "/tmp"; + File tempDir = new File(tempDirPath); + tempDir.mkdirs(); + log.info("using temp directory for jetty: " + tempDir.getPath()); + webapp.setTempDirectory(tempDir); + + // check for 3rd party plugins before we add hawtio, so they are initialized before hawtio + findThirdPartyPlugins(log, handlers, tempDir); + + // add hawtio + handlers.addHandler(webapp); + + // create server and add the handlers + if (welcome) { + System.out.println("Embedded Hawtio: You can use --help to show usage"); + System.out.println(options.usedOptionsSummary()); + } + + System.out.println("About to start Hawtio " + war); + server.start(); + + if (welcome) { + System.out.println(); + System.out.println("Welcome to Hawtio"); + System.out.println("====================================================="); + System.out.println(); + System.out.println(scheme + "://localhost:" + options.getPort() + options.getContextPath()); + System.out.println(); + } + + if (join) { + if (welcome) { + System.out.println("Joining the Jetty server thread"); + } + server.join(); + } + } + + protected void findThirdPartyPlugins(Slf4jLog log, HandlerCollection handlers, File tempDir) { + File dir = new File(options.getPlugins()); + if (dir.exists() && dir.isDirectory()) { + + log.info("Scanning for 3rd party plugins in directory: " + dir.getName()); + + // find any .war files + File[] wars = dir.listFiles(new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return isWarFileName(name); + } + }); + if (wars != null) { + for (File war : wars) { + + // custom plugins must not use same context-path as hawtio + String contextPath = "/" + war.getName(); + if (contextPath.endsWith(".war")) { + contextPath = contextPath.substring(0, contextPath.length() - 4); + } + if (contextPath.equals(options.getContextPath())) { + throw new IllegalArgumentException("3rd party plugin " + war.getName() + " cannot have same name as Hawtio context path. Rename the plugin file to avoid the clash."); + } + + WebAppContext plugin = new WebAppContext(); + plugin.setServer(handlers.getServer()); + plugin.setContextPath(contextPath); + plugin.setWar(war.getAbsolutePath()); + // plugin.setParentLoaderPriority(true); + plugin.setLogUrlOnStart(true); + + // need to have private sub directory for each plugin + File pluginTempDir = new File(tempDir, war.getName()); + pluginTempDir.mkdirs(); + + plugin.setTempDirectory(pluginTempDir); + plugin.setThrowUnavailableOnStartupException(true); + + try { + plugin.start(); + handlers.addHandler(plugin); + + log.info("Added 3rd party plugin with context-path: " + contextPath); + System.out.println("Added 3rd party plugin with context-path: " + contextPath); + } catch (Exception e) { + log.warn("Failed to add and start 3rd party plugin with context-path: " + contextPath + " due " + e.getMessage(), e); + } + } + } + + } + } + + /** + * Strategy method where we could use some smarts to find the war + * using known paths or maybe the local maven repository? + */ + protected String findWar(String... paths) { + if (paths != null) { + for (String path : paths) { + if (path != null) { + File file = new File(path); + if (file.exists()) { + if (file.isFile()) { + String name = file.getName(); + if (isWarFileName(name)) { + return file.getPath(); + } + } + if (file.isDirectory()) { + // lets look for a war in this directory + File[] wars = file.listFiles((dir, name) -> isWarFileName(name)); + if (wars != null && wars.length > 0) { + return wars[0].getPath(); + } + } + } + } + } + } + return null; + } + + protected boolean isWarFileName(String name) { + return name.toLowerCase().endsWith(".war"); + } + + public String getWarLocation() { + return options.getWarLocation(); + } + + public void setWarLocation(String warLocation) { + options.setWarLocation(warLocation); + } + + public String getWar() { + return options.getWar(); + } + + public void setWar(String war) { + options.setWar(war); + } + + public String getContextPath() { + return options.getContextPath(); + } + + public void setContextPath(String contextPath) { + options.setContextPath(contextPath); + } + + public Integer getPort() { + return options.getPort(); + } + + public void setPort(Integer port) { + options.setPort(port); + } + + public String getExtraClassPath() { + return options.getExtraClassPath(); + } + + public void setExtraClassPath(String extraClassPath) { + options.setExtraClassPath(extraClassPath); + } + + public boolean isJoinServerThread() { + return options.isJointServerThread(); + } + + public void setJoinServerThread(boolean joinServerThread) { + options.setJointServerThread(joinServerThread); + } + + public boolean isOpenUrl() { + return options.isOpenUrl(); + } + + public void setOpenUrl(boolean openUrl) { + options.setOpenUrl(openUrl); + } + + public boolean isHelp() { + return options.isHelp(); + } + + public void showWelcome(boolean welcome) { + this.welcome = welcome; + } +} diff --git "a/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/src/main/java/io/hawt/embedded/Options.java" "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/src/main/java/io/hawt/embedded/Options.java" new file mode 100755 index 0000000..c0a0668 --- /dev/null +++ "b/\343\200\22004\343\200\221SSRF \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/hawtio-hawtio-2.5.0/hawtio-embedded/src/main/java/io/hawt/embedded/Options.java" @@ -0,0 +1,351 @@ +/** + * Copyright (C) 2013 the original author or authors. + * See the notice.md file distributed with this work for additional + * information regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.hawt.embedded; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +public class Options { + + private final List