From 62059f4a9506ddeacff3984611632e959d7eb2ec Mon Sep 17 00:00:00 2001 From: vinoja98 Date: Sat, 3 Sep 2022 19:02:57 +0530 Subject: [PATCH] first commit --- .vscode/settings.json | 4 + README.md | 28 ++ checkstyle-suppressions.xml | 7 + component/pom.xml | 156 ++++++ .../extension/io/live/sink/LiveSink.java | 162 +++++++ .../extension/io/live/source/LiveSource.java | 233 +++++++++ .../io/live/utils/LiveSourceConstants.java | 5 + component/src/main/resources/log4j.properties | 16 + .../io/live/sink/TestCaseOfLiveSink.java | 9 + .../io/live/source/TestCaseOfLiveSource.java | 9 + component/src/test/resources/log4j.properties | 13 + component/src/test/resources/testng.xml | 12 + .../extension/io/live/sink/LiveSink.class | Bin 0 -> 2224 bytes .../extension/io/live/source/LiveSource.class | Bin 0 -> 6292 bytes .../io/live/utils/LiveSourceConstants.class | Bin 0 -> 423 bytes component/target/classes/log4j.properties | 16 + .../io/live/sink/TestCaseOfLiveSink.class | Bin 0 -> 345 bytes .../io/live/source/TestCaseOfLiveSource.class | Bin 0 -> 355 bytes .../target/test-classes/log4j.properties | 13 + component/target/test-classes/testng.xml | 12 + docs/api/latest.md | 0 docs/assets/javascripts/extra.js | 101 ++++ .../assets/lib/backtotop/img/cd-top-arrow.svg | 7 + docs/assets/lib/backtotop/js/main.js | 31 ++ docs/assets/lib/backtotop/js/util.js | 174 +++++++ docs/assets/lib/highlightjs/default.min.css | 1 + docs/assets/lib/highlightjs/highlight.min.js | 2 + docs/assets/stylesheets/extra.css | 443 ++++++++++++++++++ docs/images/favicon.ico | Bin 0 -> 31509 bytes docs/images/siddhi-logo.svg | 45 ++ docs/index.md | 0 docs/license.md | 0 findbugs-exclude.xml | 3 + mkdocs.yml | 27 ++ pom.xml | 134 ++++++ 35 files changed, 1663 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 checkstyle-suppressions.xml create mode 100644 component/pom.xml create mode 100644 component/src/main/java/io/siddhi/extension/io/live/sink/LiveSink.java create mode 100644 component/src/main/java/io/siddhi/extension/io/live/source/LiveSource.java create mode 100644 component/src/main/java/io/siddhi/extension/io/live/utils/LiveSourceConstants.java create mode 100644 component/src/main/resources/log4j.properties create mode 100644 component/src/test/java/io/siddhi/extension/io/live/sink/TestCaseOfLiveSink.java create mode 100644 component/src/test/java/io/siddhi/extension/io/live/source/TestCaseOfLiveSource.java create mode 100644 component/src/test/resources/log4j.properties create mode 100644 component/src/test/resources/testng.xml create mode 100644 component/target/classes/io/siddhi/extension/io/live/sink/LiveSink.class create mode 100644 component/target/classes/io/siddhi/extension/io/live/source/LiveSource.class create mode 100644 component/target/classes/io/siddhi/extension/io/live/utils/LiveSourceConstants.class create mode 100644 component/target/classes/log4j.properties create mode 100644 component/target/test-classes/io/siddhi/extension/io/live/sink/TestCaseOfLiveSink.class create mode 100644 component/target/test-classes/io/siddhi/extension/io/live/source/TestCaseOfLiveSource.class create mode 100644 component/target/test-classes/log4j.properties create mode 100644 component/target/test-classes/testng.xml create mode 100644 docs/api/latest.md create mode 100644 docs/assets/javascripts/extra.js create mode 100644 docs/assets/lib/backtotop/img/cd-top-arrow.svg create mode 100644 docs/assets/lib/backtotop/js/main.js create mode 100644 docs/assets/lib/backtotop/js/util.js create mode 100644 docs/assets/lib/highlightjs/default.min.css create mode 100644 docs/assets/lib/highlightjs/highlight.min.js create mode 100644 docs/assets/stylesheets/extra.css create mode 100644 docs/images/favicon.ico create mode 100644 docs/images/siddhi-logo.svg create mode 100644 docs/index.md create mode 100644 docs/license.md create mode 100644 findbugs-exclude.xml create mode 100644 mkdocs.yml create mode 100644 pom.xml diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a5350d0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:jni+resolve=off", + "java.configuration.updateBuildConfiguration": "interactive" +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..fbb6dd0 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +Siddhi Store ${typeOfIOinCamelCase} +====================================== + +The **siddhi-io-live extension** is an extension to Siddhi that receives and publishes events via + +For information on Siddhi and it's features refer Siddhi Documentation. + +## Download + +Versions with group id `io.siddhi.extension.io.*` from here. + +## Latest API Docs + +## Features + +## Dependencies + +## Installation + +For installing this extension on various Siddhi execution environments refer Siddhi documentation section on adding extensions. + +## Support and Contribution + +* We encourage users to ask questions and get support via StackOverflow, make sure to add the `siddhi` tag to the issue for better response. + +* If you find any issues related to the extension please report them on the issue tracker. + +* For production support and other contribution related information refer Siddhi Community documentation. \ No newline at end of file diff --git a/checkstyle-suppressions.xml b/checkstyle-suppressions.xml new file mode 100644 index 0000000..dc0042a --- /dev/null +++ b/checkstyle-suppressions.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/component/pom.xml b/component/pom.xml new file mode 100644 index 0000000..a6aa9ce --- /dev/null +++ b/component/pom.xml @@ -0,0 +1,156 @@ + + + + io.siddhi.extension.io.live + siddhi-io-live-parent + 1.0.0-SNAPSHOT + + 4.0.0 + siddhi-io-live + bundle + Siddhi IO Live extension + + + + com.arangodb + arangodb-java-driver + 6.18.0 + + + + io.siddhi + siddhi-core + + + io.siddhi + siddhi-annotations + + + io.siddhi + siddhi-query-compiler + + + io.siddhi + siddhi-query-api + + + log4j + log4j + + + org.testng + testng + + + io.siddhi.extension.map.xml + siddhi-map-xml + test + + + io.siddhi.extension.map.json + siddhi-map-json + test + + + + + + default + + true + + + + documentation-deploy + + + + io.siddhi + siddhi-doc-gen + ${siddhi.version} + + + compile + + deploy-mkdocs-github-pages + + + + + + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + src/test/resources/testng.xml + + ${surefireArgLine} -ea -Xmx512m + + + + org.jacoco + jacoco-maven-plugin + ${jacoco.plugin.version} + + + jacoco-initialize + + prepare-agent + + + ${basedir}/target/coverage-reports/jacoco.exec + surefireArgLine + + + + jacoco-site + post-integration-test + + report + + + ${basedir}/target/coverage-reports/jacoco.exec + ${basedir}/target/coverage-reports/ + + + + + + org.apache.felix + maven-bundle-plugin + true + + + ${project.artifactId} + ${project.artifactId} + + io.siddhi.extension.io.live.*, + io.siddhi.extension.io.live.* + + + *;resolution:=optional + + * + + META-INF=target/classes/META-INF, + {maven-resources} + + + + + + org.jacoco + jacoco-maven-plugin + + + + diff --git a/component/src/main/java/io/siddhi/extension/io/live/sink/LiveSink.java b/component/src/main/java/io/siddhi/extension/io/live/sink/LiveSink.java new file mode 100644 index 0000000..14efc59 --- /dev/null +++ b/component/src/main/java/io/siddhi/extension/io/live/sink/LiveSink.java @@ -0,0 +1,162 @@ +package io.siddhi.extension.io.live.sink; + +import io.siddhi.annotation.Example; +import io.siddhi.annotation.Extension; +import io.siddhi.core.config.SiddhiAppContext; +import io.siddhi.core.exception.ConnectionUnavailableException; +import io.siddhi.core.stream.ServiceDeploymentInfo; +import io.siddhi.core.stream.output.sink.Sink; +import io.siddhi.core.util.config.ConfigReader; +import io.siddhi.core.util.snapshot.state.State; +import io.siddhi.core.util.snapshot.state.StateFactory; +import io.siddhi.core.util.transport.DynamicOptions; +import io.siddhi.core.util.transport.OptionHolder; +import io.siddhi.query.api.definition.StreamDefinition; + +/** + * This is a sample class-level comment, explaining what the extension class does. + */ + +/** + * Annotation of Siddhi Extension. + *

+ * eg:-
+ * {@literal @}Extension(
+ * name = "The name of the extension",
+ * namespace = "The namespace of the extension",
+ * description = "The description of the extension (optional).",
+ * //Sink configurations
+ * parameters = {
+ * {@literal @}Parameter(name = "The name of the first parameter", type = "Supprted parameter types.
+ *                              eg:{DataType.STRING,DataType.INT, DataType.LONG etc},dynamic=false ,optinal=true/false ,
+ *                              if optional =true then assign default value according the type")
+ *   System parameter is used to define common extension wide
+ *              },
+ * examples = {
+ * {@literal @}Example({"Example of the first CustomExtension contain syntax and description.Here,
+ *                      Syntax describe default mapping for SourceMapper and description describes
+ *                      the output of according this syntax},
+ *                      }
+ * 
+ */ + +@Extension( + name = "live", + namespace = "sink", + description = " ", + parameters = { + /*@Parameter(name = " ", + description = " " , + dynamic = false/true, + optional = true/false, defaultValue = " ", + type = {DataType.INT, DataType.BOOL, DataType.STRING, DataType.DOUBLE,etc }), + type = {DataType.INT, DataType.BOOL, DataType.STRING, DataType.DOUBLE, }),*/ + }, + examples = { + @Example( + syntax = " ", + description = " " + ) + } +) +// For more information refer https://siddhi.io/en/v5.0/docs/query-guide/#sink +public class LiveSink extends Sink { + + /** + * The initialization method for {@link Sink}, will be called before other methods. It used to validate + * all configurations and to get initial values. + * + * @param streamDefinition containing stream definition bind to the {@link Sink} + * @param optionHolder Option holder containing static and dynamic configuration related + * to the {@link Sink} + * @param configReader to read the sink related system configuration. + * @param siddhiAppContext the context of the {@link io.siddhi.query.api.SiddhiApp} used to + * get siddhi related utility functions. + * @return StateFactory for the Function which contains logic for the updated state based on arrived events. + */ + @Override + protected StateFactory init(StreamDefinition streamDefinition, OptionHolder optionHolder, ConfigReader configReader, + SiddhiAppContext siddhiAppContext) { + return null; + } + + /** + * Returns the list of classes which this sink can consume. + * Based on the type of the sink, it may be limited to being able to publish specific type of classes. + * For example, a sink of type file can only write objects of type String . + * + * @return array of supported classes , if extension can support of any types of classes + * then return empty array . + */ + @Override + public Class[] getSupportedInputEventClasses() { + return new Class[0]; + } + + /** + * Returns a list of supported dynamic options (that means for each event value of the option can change) by + * the transport. + * + * @return the list of supported dynamic option keys + */ + @Override + public String[] getSupportedDynamicOptions() { + return new String[0]; + } + + /** + * Give information to the deployment about the service exposed by the sink. + * + * @return ServiceDeploymentInfo Service related information to the deployment + */ + @Override + protected ServiceDeploymentInfo exposeServiceDeploymentInfo() { + return null; + } + + /** + * This method will be called before the processing method. + * Intention to establish connection to publish event. + * + * @throws ConnectionUnavailableException if end point is unavailable the ConnectionUnavailableException thrown + * such that the system will take care retrying for connection + */ + @Override + public void connect() throws ConnectionUnavailableException { + + } + + /** + * This method will be called when events need to be published via this sink. + * + * @param payload payload of the event based on the supported event class exported by the extensions + * @param dynamicOptions holds the dynamic options of this sink and Use this object to obtain dynamic options. + * @param state current state of the sink + * @throws ConnectionUnavailableException if end point is unavailable the ConnectionUnavailableException thrown + * such that the system will take care retrying for connection + */ + @Override + public void publish(Object payload, DynamicOptions dynamicOptions, State state) + throws ConnectionUnavailableException { + + } + + /** + * Called after all publishing is done, or when {@link ConnectionUnavailableException} is thrown + * Implementation of this method should contain the steps needed to disconnect from the sink. + */ + @Override + public void disconnect() { + + } + + /** + * The method can be called when removing an event receiver. + * The cleanups that have to be done after removing the receiver could be done here. + */ + @Override + public void destroy() { + + } + +} diff --git a/component/src/main/java/io/siddhi/extension/io/live/source/LiveSource.java b/component/src/main/java/io/siddhi/extension/io/live/source/LiveSource.java new file mode 100644 index 0000000..0d28ac6 --- /dev/null +++ b/component/src/main/java/io/siddhi/extension/io/live/source/LiveSource.java @@ -0,0 +1,233 @@ +package io.siddhi.extension.io.live.source; + +import io.siddhi.annotation.Example; +import io.siddhi.annotation.Extension; +import io.siddhi.annotation.Parameter; +import io.siddhi.annotation.util.DataType; +import io.siddhi.core.config.SiddhiAppContext; +import io.siddhi.core.exception.ConnectionUnavailableException; +import io.siddhi.core.stream.ServiceDeploymentInfo; +import io.siddhi.core.stream.input.source.Source; +import io.siddhi.core.stream.input.source.SourceEventListener; +import io.siddhi.core.util.config.ConfigReader; +import io.siddhi.core.util.snapshot.state.State; +import io.siddhi.core.util.snapshot.state.StateFactory; +import io.siddhi.core.util.transport.OptionHolder; +import io.siddhi.extension.io.live.utils.LiveSourceConstants; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import com.arangodb.ArangoDBException; +import com.arangodb.DbName; +import com.arangodb.internal.http.HttpConnection; +import com.arangodb.internal.net.HostDescription; +import com.arangodb.mapping.ArangoJack; +import com.arangodb.velocystream.Request; +import com.arangodb.velocystream.RequestType; +import com.arangodb.velocystream.Response; + +/** + * This is a sample class-level comment, explaining what the extension class does. + */ + +/** + * Annotation of Siddhi Extension. + *

+ * eg:-
+ * {@literal @}Extension(
+ * name = "The name of the extension",
+ * namespace = "The namespace of the extension",
+ * description = "The description of the extension (optional).",
+ * //Source configurations
+ * parameters = {
+ * {@literal @}Parameter(name = "The name of the first parameter",
+ *                               description= "The description of the first parameter",
+ *                               type =  "Supported parameter types.
+ *                                        eg:{DataType.STRING, DataType.INT, DataType.LONG etc}",
+ *                               dynamic= "false
+ *                                         (if parameter doesn't depend on each event then dynamic parameter is false.
+ *                                         In Source, only use static parameter)",
+ *                               optional= "true/false, defaultValue= if it is optional then assign a default value
+ *                                          according to the type."),
+ * {@literal @}Parameter(name = "The name of the second parameter",
+ *                               description= "The description of the second parameter",
+ *                               type =   "Supported parameter types.
+ *                                         eg:{DataType.STRING, DataType.INT, DataType.LONG etc}",
+ *                               dynamic= "false
+ *                                         (if parameter doesn't depend on each event then dynamic parameter is false.
+ *                                         In Source, only use static parameter)",
+ *                               optional= "true/false, defaultValue= if it is optional then assign a default value
+ *                                         according to the type."),
+ * },
+ * //If Source system configurations will need then
+ * systemParameters = {
+ * {@literal @}SystemParameter(name = "The name of the first  system parameter",
+ *                                      description="The description of the first system parameter." ,
+ *                                      defaultValue = "the default value of the system parameter.",
+ *                                      possibleParameter="the possible value of the system parameter.",
+ *                               ),
+ * },
+ * examples = {
+ * {@literal @}Example(syntax = "sample query with Source annotation that explain how extension use in Siddhi."
+ *                              description =" The description of the given example's query."
+ *                      ),
+ * }
+ * )
+ * 
+ */ + +@Extension( + name = "live", + namespace = "source", + description = " ", + parameters = { + /*@Parameter(name = " ", + description = " " , + dynamic = false/true, + optional = true/false, defaultValue = " ", + type = {DataType.INT, DataType.BOOL, DataType.STRING, DataType.DOUBLE, }), + type = {DataType.INT, DataType.BOOL, DataType.STRING, DataType.DOUBLE, }),*/ + @Parameter( + name = "sql", + description = "The SQL select query", + type = DataType.STRING, + dynamic = true + ) + }, + examples = { + @Example( + syntax = "@source(type = 'live', sql='Select * from table', " + + "\n@map(type='keyvalue'), @attributes(id = 'id', name = 'name'))" + + "\ndefine stream inputStream (id int, name string)", + description = "In this example, the Live source executes the select query. The" + + "events consumed by the source are sent to the inputStream" + ) + } +) +// for more information refer https://siddhi.io/en/v5.0/docs/query-guide/#source +public class LiveSource extends Source { + private String siddhiAppName; + /** + * The initialization method for {@link Source}, will be called before other methods. It used to validate + * all configurations and to get initial values. + * + * @param sourceEventListener The listener to pass the events for processing which are consumed + * by the source + * @param optionHolder Contains static options of the source + * @param requestedTransportPropertyNames Requested transport properties that should be passed to + * SourceEventListener + * @param configReader System configuration reader for source + * @param siddhiAppContext Siddhi application context + * @return StateFactory for the Function which contains logic for the updated state based on arrived events. + */ + @Override + public StateFactory init(SourceEventListener sourceEventListener, OptionHolder optionHolder, + String[] requestedTransportPropertyNames, ConfigReader configReader, + SiddhiAppContext siddhiAppContext) { + String streamName = sourceEventListener.getStreamDefinition().getId(); + String selectQuery; + Map deploymentConfigMap = new HashMap(); + deploymentConfigMap.putAll(configReader.getAllConfigs()); + siddhiAppName = siddhiAppContext.getName(); + selectQuery = deploymentConfigMap.get(LiveSourceConstants.SQLQUERY); + return null; + } + + /** + * Returns the list of classes which this source can output. + * + * @return Array of classes that will be output by the source. + * Null or empty array if it can produce any type of class. + */ + @Override + public Class[] getOutputEventClasses() { + return new Class[0]; + } + + /** + * Give information to the deployment about the service exposed by the sink. + * + * @return ServiceDeploymentInfo Service related information to the deployment + */ + @Override + protected ServiceDeploymentInfo exposeServiceDeploymentInfo() { + return null; + } + + /** + * Initially Called to connect to the end point for start retrieving the messages asynchronously. + * + * @param connectionCallback Callback to pass the ConnectionUnavailableException in case of connection failure after + * initial successful connection. (can be used when events are receiving asynchronously) + * @param state current state of the source + * @throws ConnectionUnavailableException if it cannot connect to the source backend immediately. + */ + @Override + public void connect(ConnectionCallback connectionCallback, State state) throws ConnectionUnavailableException { + HttpConnection arangoHttpConnection = new HttpConnection.Builder() + .useSsl(true) + .host(new HostDescription("api-varden-4f0f3c4f.paas.macrometa.io", 443)) + .serializationUtil(new ArangoJack()) + .build(); + arangoHttpConnection.setJwt("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjEuNjYxOTI2NjY5MjU4OTYxNWUrNiwiZXhwIjoxNjYxOTY5ODY5LCJpc3MiOiJtYWNyb21ldGEiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJyb290Iiwic3ViIjoibWFkdTE0MF9nbWFpbC5jb20iLCJ0ZW5hbnQiOiJtYWR1MTQwX2dtYWlsLmNvbSJ9.dVQccQomvpT2VktQJtvvuLKrdeART38Ek4Y6V5tzrB4="); + System.out.println(arangoHttpConnection.toString()); + Request req = new Request(DbName.SYSTEM, RequestType.GET,"/_db/_system/_api/database"); + + while(true) { + Response res; + try { + res = arangoHttpConnection.execute(req); + System.out.println(res.getBody().toString()); + + } catch (ArangoDBException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + try { +// res.wait(); + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + /** + * Called to pause event consumption. + */ + @Override + public void pause() { + + } + + /** + * Called to resume event consumption. + */ + @Override + public void resume() { + + } + + /** + * This method can be called when it is needed to disconnect from the end point. + */ + @Override + public void disconnect() { + + } + + /** + * Called at the end to clean all the resources consumed by the {@link Source}. + */ + @Override + public void destroy() { + + } + +} diff --git a/component/src/main/java/io/siddhi/extension/io/live/utils/LiveSourceConstants.java b/component/src/main/java/io/siddhi/extension/io/live/utils/LiveSourceConstants.java new file mode 100644 index 0000000..ab2a479 --- /dev/null +++ b/component/src/main/java/io/siddhi/extension/io/live/utils/LiveSourceConstants.java @@ -0,0 +1,5 @@ +package io.siddhi.extension.io.live.utils; + +public class LiveSourceConstants { + public static final String SQLQUERY = "sql"; +} diff --git a/component/src/main/resources/log4j.properties b/component/src/main/resources/log4j.properties new file mode 100644 index 0000000..6ec02cb --- /dev/null +++ b/component/src/main/resources/log4j.properties @@ -0,0 +1,16 @@ +# For the general syntax of property based configuration files see the +# documenation of org.apache.log4j.PropertyConfigurator. + +# The root category uses the appender called A1. Since no priority is +# specified, the root category assumes the default priority for root +# which is DEBUG in log4j. The root category is the only category that +# has a default priority. All other categories need not be assigned a +# priority in which case they inherit their priority from the +# hierarchy. + +#log4j.rootLogger=DEBUG, stdout +log4j.rootLogger=INFO, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%m%n diff --git a/component/src/test/java/io/siddhi/extension/io/live/sink/TestCaseOfLiveSink.java b/component/src/test/java/io/siddhi/extension/io/live/sink/TestCaseOfLiveSink.java new file mode 100644 index 0000000..9053db7 --- /dev/null +++ b/component/src/test/java/io/siddhi/extension/io/live/sink/TestCaseOfLiveSink.java @@ -0,0 +1,9 @@ +package io.siddhi.extension.io.live.sink; + +/** + * Testcase of LiveSink. + */ +public class TestCaseOfLiveSink { + // If you will know about this related testcase, + //refer https://github.com/siddhi-io/siddhi-io-file/blob/master/component/src/test +} diff --git a/component/src/test/java/io/siddhi/extension/io/live/source/TestCaseOfLiveSource.java b/component/src/test/java/io/siddhi/extension/io/live/source/TestCaseOfLiveSource.java new file mode 100644 index 0000000..162fcb6 --- /dev/null +++ b/component/src/test/java/io/siddhi/extension/io/live/source/TestCaseOfLiveSource.java @@ -0,0 +1,9 @@ +package io.siddhi.extension.io.live.source; + +/** + * Testcase of LiveSource. + */ +public class TestCaseOfLiveSource { + // If you will know about this related testcase, + //refer https://github.com/siddhi-io/siddhi-io-file/blob/master/component/src/test +} diff --git a/component/src/test/resources/log4j.properties b/component/src/test/resources/log4j.properties new file mode 100644 index 0000000..b52a2f1 --- /dev/null +++ b/component/src/test/resources/log4j.properties @@ -0,0 +1,13 @@ +# For the general syntax of property based configuration files see the +# documenation of org.apache.log4j.PropertyConfigurator. +# The root category uses the appender called A1. Since no priority is +# specified, the root category assumes the default priority for root +# which is DEBUG in log4j. The root category is the only category that +# has a default priority. All other categories need not be assigned a +# priority in which case they inherit their priority from the +# hierarchy. +#log4j.rootLogger=DEBUG, stdout +log4j.rootLogger=INFO, stdout +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%m%n diff --git a/component/src/test/resources/testng.xml b/component/src/test/resources/testng.xml new file mode 100644 index 0000000..a04f603 --- /dev/null +++ b/component/src/test/resources/testng.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/component/target/classes/io/siddhi/extension/io/live/sink/LiveSink.class b/component/target/classes/io/siddhi/extension/io/live/sink/LiveSink.class new file mode 100644 index 0000000000000000000000000000000000000000..7c86f81653e33156b50ec457a74122e952b693f7 GIT binary patch literal 2224 zcma)7%W@k<6g@4=R_r(rLINZq!Mr6qcnBB*C^jV$q&yTOCH-!_3Gf zt@s1BZ21IOQAHJe0Dr-cP@L|OrHMQ)v+16`eb0TId;8Ac|Nik8fDJropeE4LHpp}o z^>m8Q@M6)Dq^fxQux$2wduDqrM*W_f`5-?#D{tO2>vW-j%6#=drM!_jD$()|vV} zBg{6PIoAUJG)t%-1}Yr|GSNY#4&1%Vv+JYZnh4q@fKP9b>o~|$X|lwodGI)Ku&-|BR^W-k!dL=jo}|uIk&i8wHI-j$$h#_u{AAjU5YIjApoBuWYANgAthbFGXOr z5?C1*nT>Qdp}7$$mc))I?%F{bsz=&Qs0+uVaNWf%aQ(@^)89I?0yaMMLMwn_}ZvnBwa1xnPEmtXBoKr*D zPh!{Tw@>rt73gar8<|`V@j5t>IsSn~esL0WZSWLu7u@Gpf5*As_))_WS9cA3f%9CK z3kB{Mc&g(fE>YsZPr1)?uZdsXT0(x~ksHPB80j=F;{|W6hAViHXD7RgYd*9ZUc$?? zFYpSkk3CGnoBIL-gw{s(O_j!-+ zd+NUrKMJ4`|58vUuv)i5wjPg<>mhB*(M(&n%n;WMJ)?zeE1imIp$@+HxvvU*0`+q& zF)KwXC#9*0kZvZ^&Mb>ZE^wA7dwVk3r6x3i>W&FDqlOIC91Hb1Dcu}v7O2>)o4T`A zU{PKDfPk;Xifeu>LRA0?Dh1B&&`qr?orr3wh#ECqF;+}92Go=;e`gnc&bV$1(A+cG z67~C}dVzn}<#C>7XKfkHbUJjK9@A3I#e8W;H$qNIHSMI8azfonhhE)n8FA8HGv5Ox z*<+SDs*i?x zH&@{toU34|z=k>Rorws&+h1i7L#C_^ImpI0kh_%bIV>PGx}b^C`b;0tBTQRFIX@NIH@CG z<)x0ms$xm5e-=nIfs0cb0mB@PM`m+zPs&PaDQ8-Ggb_NYL^e{Z=TR@|Sno<|Edc}R zlw7?d3S=${%&RI3#Eaa1&of@Btg1BSaQ zaG^Gpv}~d0Fu0b}agvKAsYNx6 zs2ZD`S5aL+l`53YvNQSHred0lNLvAaUs;ri+U#dpwzI1GO*TB;kbNr0tzbxCZOlr9 zR04C%ibvT!9W7<5Mrhn|lA+!FGbdvCjw#ZZ$j-CwW!W{MgWu{cVKY%H)oRmi; zq&WUD_X-R@6%Ly#@oFK?)27?Uqq|~yx85G^KM-EqrHAdX+1nIr32z8bCWi)E+BdEt zQF3^wNAI3!OLt8SPjyGa>-cQyoak@tjtozA4fdzH^!@tC(D?rFgf->S3^#SR4mWkQ zv?pWhJEa0=c(7|ax^Arz-_@pbeSa)5kQfpucyzE|(vogtLzpsS z>j!ko)T4ttC*zT}hR&TEO};0iElm^Abq!KZ!^j}{Oxow_=v~_x>DfQDE>3-h-I3_Z zMEkgj_&`rA)?+0y$;i5aNvEgX$z;+UR}-b%dn4B zB?Z{YXoeM|U2>8O^?JQ`G2V^$DtHfN7SOgvWtR)!eRw||&^O!{Y3r0*C_&V`7$3xk z6x_x#QSiBxz6d*B03XIj=#^b<5zcUhA{XKzwm&LxL1-^)@m||?ZfLJNqpFS?Rc#(f z4&&pp_IyI1rzlOm%{0GAP4nxPEL%6=Qvn>or|DsBN{gi(7SV8#o>Imamx3Z1o42lvtrcK#h!oYmrr;ws@ONwTbk2KMl8pTWLPCHG6HJy2Rn z5w#x=;vof}5m;7Wkyq_ncjTI705k3((8V1OEwM>Xb1}x_xa2>P2i9HOip$+J^&KYjI zXkUCM6kA z&OBObVI_NJNvLFLWLyjO^>hTiBSX+VCR4Y=VkpBjH>T!U=>n>i)lHU63aRLe^oF~3 zN!Lu%Og*-U`6JjKv?(=_G-SY+m6p`z5l9*KwCSi*0=IATc2_4&2yO}1%Kg`_3i8ys zrMAyK*aTMuM>*LASzZnK$-j+5lS{v)c2b*mXV}{MRl#kl!;7LQ3!+`8$E7SiPIBo< z`9nTy>+AjQU4j<$@-66IM)kR!C@8sz{VWR!IGFJSJ{2~D^2R8b-QOzy(iqVUg}9ep z{NUDM+x?L5+BHEsT$5Koc94jY@QMec(;l72tEMQ11VP7gm-7tb0W-|gK`M8YQnK^C zf`15Xo(op~QK-c2T8Z-vtJ2)DVfK)NOL+8mgNZVE{%2U_WdN_%_;)dXh4>VFmajMl z{{ws}Lx6uP+(i>-@jc)X;3YVlzgSGMgnuRTk4P<_%_~o!TCi51zp3IRmJJ_6a8qSX zWsUCyE)h6^+A^%DDWAdWhp?`uvbymEHk7ddZ`!1Y`^mn@Re6DH-9c1w4aLE}s@#at7Dq zMmA9|o?X0F1n!{OcXDfY;Ue5kZ{LFzTw95Ic|&y{<8?o|AL3?bDC0QB@GvEv#6EWJ z3?8Gr$8iu(5Cuo`FmNb`fkXHro^+ji2w%dN>9&{OAerS?wzs7I4rr~+~7QY+8@9_th RgB*ANMo|BqG5ROO{{TUzNId`m literal 0 HcmV?d00001 diff --git a/component/target/classes/io/siddhi/extension/io/live/utils/LiveSourceConstants.class b/component/target/classes/io/siddhi/extension/io/live/utils/LiveSourceConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..a5ce89aee74f1ebce2d52bbc4e5dac3f797cec31 GIT binary patch literal 423 zcmbVIu};G<6g;1aBglhjXMTSvK->={~WS$Z-~#!QpEEGBxC zTj!Pau7yCLzfemhjj}U&oh|gl3xvry9^YNu+zSli-|fT~WM`)W-JgV1nNo*X6R5jK zBhWk}Oa7eY{y{1bjPj|DP{(=)5!wR1n5@1kA2MCss?6vrKc6U*s)8#0Z3cc$PT(Z| zS1TSc`YL)!)e}2^G(W0ZVGleh|DwPy8ffy`VpT)Pj6=|7?64zO8fYB8p!>W!(qpVH VfCKuBofU6j0|Qn9n~XJVeF8aJXWsw- literal 0 HcmV?d00001 diff --git a/component/target/classes/log4j.properties b/component/target/classes/log4j.properties new file mode 100644 index 0000000..6ec02cb --- /dev/null +++ b/component/target/classes/log4j.properties @@ -0,0 +1,16 @@ +# For the general syntax of property based configuration files see the +# documenation of org.apache.log4j.PropertyConfigurator. + +# The root category uses the appender called A1. Since no priority is +# specified, the root category assumes the default priority for root +# which is DEBUG in log4j. The root category is the only category that +# has a default priority. All other categories need not be assigned a +# priority in which case they inherit their priority from the +# hierarchy. + +#log4j.rootLogger=DEBUG, stdout +log4j.rootLogger=INFO, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%m%n diff --git a/component/target/test-classes/io/siddhi/extension/io/live/sink/TestCaseOfLiveSink.class b/component/target/test-classes/io/siddhi/extension/io/live/sink/TestCaseOfLiveSink.class new file mode 100644 index 0000000000000000000000000000000000000000..930ecaa450c659928d2661f77613daa1f329a170 GIT binary patch literal 345 zcmbV|F;2rk5Jmqub_^zvC=E3oP_PA1foLL8S)@pmer*qAf>}%UCgNIDNE93(heFIo zbaZLn?0-}2*KB{jz5(1|lp-QrOJh2zs-+ly_v|`poKaWHhIQdy&73X)4ap!{Go4`h;OFj-S?V1-Els)Jz!X zO=;_eZ6)MC8T+Mlgxh?NYIlTe)~wr-A0>Qn`oH~ED2_8|O}ztjQmCg)HJM!olFLsV Ze5i_TAKao;~Gi z=e + + + + + + + + + + + diff --git a/docs/api/latest.md b/docs/api/latest.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/assets/javascripts/extra.js b/docs/assets/javascripts/extra.js new file mode 100644 index 0000000..38b83bd --- /dev/null +++ b/docs/assets/javascripts/extra.js @@ -0,0 +1,101 @@ +/* +~ Copyright (c) WSO2 Inc. (http://wso2.com) All Rights Reserved. +~ +~ 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. +*/ + +var logo = document.querySelector('.md-logo'); +var logoTitle = logo.title; +logo.setAttribute('href', 'https://siddhi.io/') + +var header = document.querySelector('.md-header-nav__title'); +var headerContent = document.querySelectorAll('.md-header-nav__title span')[1].textContent; +var url = document.querySelector('.md-nav__item a.md-nav__link').href +header.innerHTML = '' + logoTitle + '' + + '' + headerContent + '' + + +/* + * TOC position highlight on scroll + */ + +var observeeList = document.querySelectorAll(".md-sidebar__inner > .md-nav--secondary .md-nav__link"); +var listElems = document.querySelectorAll(".md-sidebar__inner > .md-nav--secondary > ul li"); +var config = {attributes: true, childList: true, subtree: true}; + +var callback = function (mutationsList, observer) { + for (var mutation of mutationsList) { + if (mutation.type == 'attributes') { + mutation.target.parentNode.setAttribute(mutation.attributeName, + mutation.target.getAttribute(mutation.attributeName)); + scrollerPosition(mutation); + } + } +}; +var observer = new MutationObserver(callback); + +listElems[0].classList.add('active'); + +for (var i = 0; i < observeeList.length; i++) { + var el = observeeList[i]; + + observer.observe(el, config); + + el.onclick = function (e) { + listElems.forEach(function (elm) { + if (elm.classList) { + elm.classList.remove('active'); + } + }); + + e.target.parentNode.classList.add('active'); + } +} + +function scrollerPosition(mutation) { + var blurList = document.querySelectorAll(".md-sidebar__inner > .md-nav--secondary > ul li > .md-nav__link[data-md-state='blur']"); + + listElems.forEach(function (el) { + if (el.classList) { + el.classList.remove('active'); + } + }); + + if (blurList.length > 0) { + if (mutation.target.getAttribute('data-md-state') === 'blur') { + if (mutation.target.parentNode.querySelector('ul li')) { + mutation.target.parentNode.querySelector('ul li').classList.add('active'); + } else { + setActive(mutation.target.parentNode); + } + } else { + mutation.target.parentNode.classList.add('active'); + } + } else { + if (listElems.length > 0) { + listElems[0].classList.add('active'); + } + } +} + +function setActive(parentNode, i) { + i = i || 0; + if (i === 5) { + return; + } + if (parentNode.nextElementSibling) { + parentNode.nextElementSibling.classList.add('active'); + return; + } + setActive(parentNode.parentNode.parentNode.parentNode, ++i); +} diff --git a/docs/assets/lib/backtotop/img/cd-top-arrow.svg b/docs/assets/lib/backtotop/img/cd-top-arrow.svg new file mode 100644 index 0000000..e80e102 --- /dev/null +++ b/docs/assets/lib/backtotop/img/cd-top-arrow.svg @@ -0,0 +1,7 @@ + + + + + + diff --git a/docs/assets/lib/backtotop/js/main.js b/docs/assets/lib/backtotop/js/main.js new file mode 100644 index 0000000..5fd253f --- /dev/null +++ b/docs/assets/lib/backtotop/js/main.js @@ -0,0 +1,31 @@ +(function(){ + // Back to Top - by CodyHouse.co + var backTop = document.getElementsByClassName('js-cd-top')[0], + offset = 300, // browser window scroll (in pixels) after which the "back to top" link is shown + offsetOpacity = 1200, //browser window scroll (in pixels) after which the "back to top" link opacity is reduced + scrollDuration = 700, + scrolling = false; + + if( backTop ) { + //update back to top visibility on scrolling + window.addEventListener("scroll", function(event) { + if( !scrolling ) { + scrolling = true; + (!window.requestAnimationFrame) ? setTimeout(checkBackToTop, 250) : window.requestAnimationFrame(checkBackToTop); + } + }); + + //smooth scroll to top + backTop.addEventListener('click', function(event) { + event.preventDefault(); + (!window.requestAnimationFrame) ? window.scrollTo(0, 0) : Util.scrollTo(0, scrollDuration); + }); + } + + function checkBackToTop() { + var windowTop = window.scrollY || document.documentElement.scrollTop; + ( windowTop > offset ) ? Util.addClass(backTop, 'cd-top--is-visible') : Util.removeClass(backTop, 'cd-top--is-visible cd-top--fade-out'); + ( windowTop > offsetOpacity ) && Util.addClass(backTop, 'cd-top--fade-out'); + scrolling = false; + } +})(); \ No newline at end of file diff --git a/docs/assets/lib/backtotop/js/util.js b/docs/assets/lib/backtotop/js/util.js new file mode 100644 index 0000000..60d96fc --- /dev/null +++ b/docs/assets/lib/backtotop/js/util.js @@ -0,0 +1,174 @@ +// Utility function +function Util () {}; + +/* + class manipulation functions +*/ +Util.hasClass = function(el, className) { + if (el.classList) return el.classList.contains(className); + else return !!el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)')); +}; + +Util.addClass = function(el, className) { + var classList = className.split(' '); + if (el.classList) el.classList.add(classList[0]); + else if (!Util.hasClass(el, classList[0])) el.className += " " + classList[0]; + if (classList.length > 1) Util.addClass(el, classList.slice(1).join(' ')); +}; + +Util.removeClass = function(el, className) { + var classList = className.split(' '); + if (el.classList) el.classList.remove(classList[0]); + else if(Util.hasClass(el, classList[0])) { + var reg = new RegExp('(\\s|^)' + classList[0] + '(\\s|$)'); + el.className=el.className.replace(reg, ' '); + } + if (classList.length > 1) Util.removeClass(el, classList.slice(1).join(' ')); +}; + +Util.toggleClass = function(el, className, bool) { + if(bool) Util.addClass(el, className); + else Util.removeClass(el, className); +}; + +Util.setAttributes = function(el, attrs) { + for(var key in attrs) { + el.setAttribute(key, attrs[key]); + } +}; + +/* + DOM manipulation +*/ +Util.getChildrenByClassName = function(el, className) { + var children = el.children, + childrenByClass = []; + for (var i = 0; i < el.children.length; i++) { + if (Util.hasClass(el.children[i], className)) childrenByClass.push(el.children[i]); + } + return childrenByClass; +}; + +/* + Animate height of an element +*/ +Util.setHeight = function(start, to, element, duration, cb) { + var change = to - start, + currentTime = null; + + var animateHeight = function(timestamp){ + if (!currentTime) currentTime = timestamp; + var progress = timestamp - currentTime; + var val = parseInt((progress/duration)*change + start); + element.setAttribute("style", "height:"+val+"px;"); + if(progress < duration) { + window.requestAnimationFrame(animateHeight); + } else { + cb(); + } + }; + + //set the height of the element before starting animation -> fix bug on Safari + element.setAttribute("style", "height:"+start+"px;"); + window.requestAnimationFrame(animateHeight); +}; + +/* + Smooth Scroll +*/ + +Util.scrollTo = function(final, duration, cb) { + var start = window.scrollY || document.documentElement.scrollTop, + currentTime = null; + + var animateScroll = function(timestamp){ + if (!currentTime) currentTime = timestamp; + var progress = timestamp - currentTime; + if(progress > duration) progress = duration; + var val = Math.easeInOutQuad(progress, start, final-start, duration); + window.scrollTo(0, val); + if(progress < duration) { + window.requestAnimationFrame(animateScroll); + } else { + cb && cb(); + } + }; + + window.requestAnimationFrame(animateScroll); +}; + +/* + Focus utility classes +*/ + +//Move focus to an element +Util.moveFocus = function (element) { + if( !element ) element = document.getElementsByTagName("body")[0]; + element.focus(); + if (document.activeElement !== element) { + element.setAttribute('tabindex','-1'); + element.focus(); + } +}; + +/* + Misc +*/ + +Util.getIndexInArray = function(array, el) { + return Array.prototype.indexOf.call(array, el); +}; + +Util.cssSupports = function(property, value) { + if('CSS' in window) { + return CSS.supports(property, value); + } else { + var jsProperty = property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase();}); + return jsProperty in document.body.style; + } +}; + +/* + Polyfills +*/ +//Closest() method +if (!Element.prototype.matches) { + Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; +} + +if (!Element.prototype.closest) { + Element.prototype.closest = function(s) { + var el = this; + if (!document.documentElement.contains(el)) return null; + do { + if (el.matches(s)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + }; +} + +//Custom Event() constructor +if ( typeof window.CustomEvent !== "function" ) { + + function CustomEvent ( event, params ) { + params = params || { bubbles: false, cancelable: false, detail: undefined }; + var evt = document.createEvent( 'CustomEvent' ); + evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail ); + return evt; + } + + CustomEvent.prototype = window.Event.prototype; + + window.CustomEvent = CustomEvent; +} + +/* + Animation curves +*/ +Math.easeInOutQuad = function (t, b, c, d) { + t /= d/2; + if (t < 1) return c/2*t*t + b; + t--; + return -c/2 * (t*(t-2) - 1) + b; +}; \ No newline at end of file diff --git a/docs/assets/lib/highlightjs/default.min.css b/docs/assets/lib/highlightjs/default.min.css new file mode 100644 index 0000000..2b8ac2c --- /dev/null +++ b/docs/assets/lib/highlightjs/default.min.css @@ -0,0 +1 @@ +.hljs{display:block;overflow-x:auto;padding:.5em;background:#F0F0F0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} \ No newline at end of file diff --git a/docs/assets/lib/highlightjs/highlight.min.js b/docs/assets/lib/highlightjs/highlight.min.js new file mode 100644 index 0000000..1f06ffc --- /dev/null +++ b/docs/assets/lib/highlightjs/highlight.min.js @@ -0,0 +1,2 @@ +/*! highlight.js v9.15.6 | BSD3 License | git.io/hljslicense */ +!function(e){var t="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):t&&(t.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return t.hljs}))}(function(n){var b=[],o=Object.keys,h={},p={},t=/^(no-?highlight|plain|text)$/i,m=/\blang(?:uage)?-([\w-]+)\b/i,r=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,a={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},N="",v={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function y(e){return e.replace(/&/g,"&").replace(//g,">")}function f(e){return e.nodeName.toLowerCase()}function w(e,t){var r=e&&e.exec(t);return r&&0===r.index}function g(e){return t.test(e)}function u(e){var t,r={},a=Array.prototype.slice.call(arguments,1);for(t in e)r[t]=e[t];return a.forEach(function(e){for(t in e)r[t]=e[t]}),r}function _(e){var n=[];return function e(t,r){for(var a=t.firstChild;a;a=a.nextSibling)3===a.nodeType?r+=a.nodeValue.length:1===a.nodeType&&(n.push({event:"start",offset:r,node:a}),r=e(a,r),f(a).match(/br|hr|img|input/)||n.push({event:"stop",offset:r,node:a}));return r}(e,0),n}function i(e){if(a&&!e.langApiRestored){for(var t in e.langApiRestored=!0,a)e[t]&&(e[a[t]]=e[t]);(e.c||[]).concat(e.v||[]).forEach(i)}}function E(s){function l(e){return e&&e.source||e}function c(e,t){return new RegExp(l(e),"m"+(s.cI?"i":"")+(t?"g":""))}!function t(r,e){if(!r.compiled){if(r.compiled=!0,r.k=r.k||r.bK,r.k){var a={},n=function(r,e){s.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var t=e.split("|");a[t[0]]=[r,t[1]?Number(t[1]):1]})};"string"==typeof r.k?n("keyword",r.k):o(r.k).forEach(function(e){n(e,r.k[e])}),r.k=a}r.lR=c(r.l||/\w+/,!0),e&&(r.bK&&(r.b="\\b("+r.bK.split(" ").join("|")+")\\b"),r.b||(r.b=/\B|\b/),r.bR=c(r.b),r.endSameAsBegin&&(r.e=r.b),r.e||r.eW||(r.e=/\B|\b/),r.e&&(r.eR=c(r.e)),r.tE=l(r.e)||"",r.eW&&e.tE&&(r.tE+=(r.e?"|":"")+e.tE)),r.i&&(r.iR=c(r.i)),null==r.r&&(r.r=1),r.c||(r.c=[]),r.c=Array.prototype.concat.apply([],r.c.map(function(e){return(t="self"===e?r:e).v&&!t.cached_variants&&(t.cached_variants=t.v.map(function(e){return u(t,{v:null},e)})),t.cached_variants||t.eW&&[u(t)]||[t];var t})),r.c.forEach(function(e){t(e,r)}),r.starts&&t(r.starts,e);var i=r.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([r.tE,r.i]).map(l).filter(Boolean);r.t=i.length?c(function(e,t){for(var r=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,a=0,n="",i=0;i')+t+(r?"":N)}function l(){p+=null!=b.sL?function(){var e="string"==typeof b.sL;if(e&&!h[b.sL])return y(m);var t=e?k(b.sL,m,!0,i[b.sL]):x(m,b.sL.length?b.sL:void 0);return 0")+'"');return m+=t,t.length||1}var d=C(e);if(!d)throw new Error('Unknown language: "'+e+'"');E(d);var n,b=r||d,i={},p="";for(n=b;n!==d;n=n.parent)n.cN&&(p=o(n.cN,"",!0)+p);var m="",f=0;try{for(var s,g,_=0;b.t.lastIndex=_,s=b.t.exec(t);)g=a(t.substring(_,s.index),s[0]),_=s.index+g;for(a(t.substr(_)),n=b;n.parent;n=n.parent)n.cN&&(p+=N);return{r:f,value:p,language:e,top:b}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:y(t)};throw e}}function x(r,e){e=e||v.languages||o(h);var a={r:0,value:y(r)},n=a;return e.filter(C).filter(l).forEach(function(e){var t=k(e,r,!1);t.language=e,t.r>n.r&&(n=t),t.r>a.r&&(n=a,a=t)}),n.language&&(a.second_best=n),a}function M(e){return v.tabReplace||v.useBR?e.replace(r,function(e,t){return v.useBR&&"\n"===e?"
":v.tabReplace?t.replace(/\t/g,v.tabReplace):""}):e}function s(e){var t,r,a,n,i,s,c,o,l,u,d=function(e){var t,r,a,n,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",r=m.exec(i))return C(r[1])?r[1]:"no-highlight";for(t=0,a=(i=i.split(/\s+/)).length;t/g,"\n"):t=e,i=t.textContent,a=d?k(d,i,!0):x(i),(r=_(t)).length&&((n=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=a.value,a.value=function(e,t,r){var a=0,n="",i=[];function s(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function o(e){n+=""}function l(e){("start"===e.event?c:o)(e.node)}for(;e.length||t.length;){var u=s();if(n+=y(r.substring(a,u[0].offset)),a=u[0].offset,u===e){for(i.reverse().forEach(o);l(u.splice(0,1)[0]),(u=s())===e&&u.length&&u[0].offset===a;);i.reverse().forEach(c)}else"start"===u[0].event?i.push(u[0].node):i.pop(),l(u.splice(0,1)[0])}return n+y(r.substr(a))}(r,_(n),i)),a.value=M(a.value),e.innerHTML=a.value,e.className=(s=e.className,c=d,o=a.language,l=c?p[c]:o,u=[s.trim()],s.match(/\bhljs\b/)||u.push("hljs"),-1===s.indexOf(l)&&u.push(l),u.join(" ").trim()),e.result={language:a.language,re:a.r},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.r}))}function c(){if(!c.called){c.called=!0;var e=document.querySelectorAll("pre code");b.forEach.call(e,s)}}function C(e){return e=(e||"").toLowerCase(),h[e]||h[p[e]]}function l(e){var t=C(e);return t&&!t.disableAutodetect}return n.highlight=k,n.highlightAuto=x,n.fixMarkup=M,n.highlightBlock=s,n.configure=function(e){v=u(v,e)},n.initHighlighting=c,n.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",c,!1),addEventListener("load",c,!1)},n.registerLanguage=function(t,e){var r=h[t]=e(n);i(r),r.aliases&&r.aliases.forEach(function(e){p[e]=t})},n.listLanguages=function(){return o(h)},n.getLanguage=C,n.autoDetection=l,n.inherit=u,n.IR=n.IDENT_RE="[a-zA-Z]\\w*",n.UIR=n.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",n.NR=n.NUMBER_RE="\\b\\d+(\\.\\d+)?",n.CNR=n.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",n.BNR=n.BINARY_NUMBER_RE="\\b(0b[01]+)",n.RSR=n.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",n.BE=n.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},n.ASM=n.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[n.BE]},n.QSM=n.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[n.BE]},n.PWM=n.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},n.C=n.COMMENT=function(e,t,r){var a=n.inherit({cN:"comment",b:e,e:t,c:[]},r||{});return a.c.push(n.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},n.CLCM=n.C_LINE_COMMENT_MODE=n.C("//","$"),n.CBCM=n.C_BLOCK_COMMENT_MODE=n.C("/\\*","\\*/"),n.HCM=n.HASH_COMMENT_MODE=n.C("#","$"),n.NM=n.NUMBER_MODE={cN:"number",b:n.NR,r:0},n.CNM=n.C_NUMBER_MODE={cN:"number",b:n.CNR,r:0},n.BNM=n.BINARY_NUMBER_MODE={cN:"number",b:n.BNR,r:0},n.CSSNM=n.CSS_NUMBER_MODE={cN:"number",b:n.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},n.RM=n.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[n.BE,{b:/\[/,e:/\]/,r:0,c:[n.BE]}]},n.TM=n.TITLE_MODE={cN:"title",b:n.IR,r:0},n.UTM=n.UNDERSCORE_TITLE_MODE={cN:"title",b:n.UIR,r:0},n.METHOD_GUARD={b:"\\.\\s*"+n.UIR,r:0},n.registerLanguage("apache",function(e){var t={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",t]},t,e.QSM]}}],i:/\S/}}),n.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,r,{cN:"string",b:/'/,e:/'/},t]}}),n.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},r="[A-Za-z$_][0-9A-Za-z$_]*",a={cN:"subst",b:/#\{/,e:/}/,k:t},n=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,a]},{b:/"/,e:/"/,c:[e.BE,a]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[a,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+r},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];a.c=n;var i=e.inherit(e.TM,{b:r}),s="(\\(.*\\))?\\s*\\B[-=]>",c={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(n)}]};return{aliases:["coffee","cson","iced"],k:t,i:/\/\*/,c:n.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+r+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,c]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[c]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{b:r+":",e:":",rB:!0,rE:!0,r:0}])}}),n.registerLanguage("cpp",function(e){var t={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U|L)?"',e:'"',i:"\\n",c:[e.BE]},{b:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/},{b:"'\\\\?.",e:"'",i:"."}]},a={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},n={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},e.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},e.CLCM,e.CBCM]},i=e.IR+"\\s*\\(",s={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},c=[t,e.CLCM,e.CBCM,a,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:s,i:"",k:s,c:["self",t]},{b:e.IR+"::",k:s},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:s,c:c.concat([{b:/\(/,e:/\)/,k:s,c:c.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+e.IR+"[\\*&\\s]+)+"+i,rB:!0,e:/[{;=]/,eE:!0,k:s,i:/[^\w\s\*&]/,c:[{b:i,rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:s,r:0,c:[e.CLCM,e.CBCM,r,a,t,{b:/\(/,e:/\)/,k:s,r:0,c:["self",e.CLCM,e.CBCM,r,a,t]}]},e.CLCM,e.CBCM,n]},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b://,c:["self"]},e.TM]}]),exports:{preprocessor:n,strings:r,k:s}}}),n.registerLanguage("cs",function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},r={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},a={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},n=e.inherit(a,{i:/\n/}),i={cN:"subst",b:"{",e:"}",k:t},s=e.inherit(i,{i:/\n/}),c={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,s]},o={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},i]},l=e.inherit(o,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},s]});i.c=[o,c,a,e.ASM,e.QSM,r,e.CBCM],s.c=[l,c,n,e.ASM,e.QSM,r,e.inherit(e.CBCM,{i:/\n/})];var u={v:[o,c,a,e.ASM,e.QSM]},d=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],k:t,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:"\x3c!--|--\x3e"},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},u,r,{bK:"class interface",e:/[{;=]/,i:/[^\s:,]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",r:0},{cN:"function",b:"("+d+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/\s*[{;=]/,eE:!0,k:t,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,r:0,c:[u,r,e.CBCM]},e.CLCM,e.CBCM]}]}}),n.registerLanguage("css",function(e){var t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:"[a-zA-Z-][a-zA-Z0-9_-]*",r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}}),n.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}}),n.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}),n.registerLanguage("ini",function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_\.-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_\.-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}}),n.registerLanguage("java",function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",r={cN:"number",b:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",r:0};return{aliases:["jsp"],k:t,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},r,{cN:"meta",b:"@[A-Za-z]+"}]}}),n.registerLanguage("javascript",function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",r={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:r,c:[]},i={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,i,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:r,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:t+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:t,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+t+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:t},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:t}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor get set",e:/\{/,eE:!0}],i:/#(?!!)/}}),n.registerLanguage("json",function(e){var t={literal:"true false null"},r=[e.QSM,e.CNM],a={e:",",eW:!0,eE:!0,c:r,k:t},n={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(a,{b:/:/})],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a)],i:"\\S"};return r.splice(r.length,0,n,i),{c:r,k:t,i:"\\S"}}),n.registerLanguage("makefile",function(e){var t={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("\x3c!--","--\x3e",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"meta",b:/<\?xml/,e:/\?>/,r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0},{b:'b"',e:'"',skip:!0},{b:"b'",e:"'",skip:!0},e.inherit(e.ASM,{i:null,cN:null,c:null,skip:!0}),e.inherit(e.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[t],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[t],starts:{e:"<\/script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}}),n.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}}),n.registerLanguage("nginx",function(e){var t={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},r={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,t],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[t]},{cN:"regexp",c:[e.BE,t],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},t]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:r}],r:0}],i:"[^\\s\\}]"}}),n.registerLanguage("objectivec",function(e){var t=/[a-zA-Z@][a-zA-Z0-9_]*/,r="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},l:t,i:""}]}]},{cN:"class",b:"("+r.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:r,l:t,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}}),n.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},a={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],s=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),a,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=s,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:a.c=s}}),n.registerLanguage("php",function(e){var t={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"meta",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php","php3","php4","php5","php6","php7"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[r]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},r,{cN:"keyword",b:/\$this\b/},t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}}),n.registerLanguage("properties",function(e){var t="[ \\t\\f]*",r="("+t+"[:=]"+t+"|[ \\t\\f]+)",a="([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",n="([^\\\\:= \\t\\f\\n]|\\\\.)+",i={e:r,r:0,starts:{cN:"string",e:/$/,r:0,c:[{b:"\\\\\\n"}]}};return{cI:!0,i:/\S/,c:[e.C("^\\s*[!#]","$"),{b:a+r,rB:!0,c:[{cN:"attr",b:a,endsParent:!0,r:0}],starts:i},{b:n+r,rB:!0,r:0,c:[{cN:"meta",b:n,endsParent:!0,r:0}],starts:i},{cN:"attr",r:0,b:n+t+"$"}]}}),n.registerLanguage("python",function(e){var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},r={cN:"meta",b:/^(>>>|\.\.\.) /},a={cN:"subst",b:/\{/,e:/\}/,k:t,i:/#/},n={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[e.BE,r],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[e.BE,r],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[e.BE,r,a]},{b:/(fr|rf|f)"""/,e:/"""/,c:[e.BE,r,a]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[e.BE,a]},{b:/(fr|rf|f)"/,e:/"/,c:[e.BE,a]},e.ASM,e.QSM]},i={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},s={cN:"params",b:/\(/,e:/\)/,c:["self",r,i,n]};return a.c=[n,i,r],{aliases:["py","gyp","ipython"],k:t,i:/(<\/|->|\?)|=>/,c:[r,i,n,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,s,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),n.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},a={cN:"doctag",b:"@[A-Za-z]+"},n={b:"#<",e:">"},i=[e.C("#","$",{c:[a]}),e.C("^\\=begin","^\\=end",{c:[a],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},c={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},o={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},l=[c,n,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(i)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:t}),o].concat(i)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[c,{b:t}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[n,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(i),r:0}].concat(i);s.c=l;var u=[{b:/^\s*=>/,starts:{e:"$",c:o.c=l}},{cN:"meta",b:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:i.concat(u).concat(l)}}),n.registerLanguage("shell",function(e){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}}),n.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t,e.HCM]},e.CBCM,t,e.HCM]}}),n}); \ No newline at end of file diff --git a/docs/assets/stylesheets/extra.css b/docs/assets/stylesheets/extra.css new file mode 100644 index 0000000..da56fd7 --- /dev/null +++ b/docs/assets/stylesheets/extra.css @@ -0,0 +1,443 @@ +/* + * Copyright (c) 2019, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you 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. + */ + + +.md-header-nav__button.md-logo img { + width: 80px; + height: 20px; +} + +.extension-title-low { + font-weight: 100; + padding-left: 15px; +} + +.extension-title { + font-weight: 700; + margin-right: 5px; +} + +.extension-title:hover { + opacity: .7; +} + +.md-header-nav__title { + padding: 1px 0; +} + +.md-main > .md-main__inner > .md-content { + -webkit-transition: margin 0.2s linear; + -khtml-transition: margin 0.2s linear; + -moz-transition: margin 0.2s linear; + -ms-transition: margin 0.2s linear; + transition: margin 0.2s linear; +} + +.md-main .md-sidebar.md-sidebar--secondary { + -webkit-transition: width 0.2s linear; + -khtml-transition: width 0.2s linear; + -moz-transition: width 0.2s linear; + -ms-transition: width 0.2s linear; + transition: width 0.2s linear; + padding-bottom: 80px; +} + +.md-main.hide-toc .md-content { + margin-right: 0; +} + +.md-main.hide-toc .md-sidebar.md-sidebar--secondary { + width: 0; +} + +.md-header { + height: 2.6rem; +} + +.md-header-nav__topic { + top: 0; + margin-top: .2rem; + font-weight: bold; + color: darkslategray; +} + +/*White header*/ +[data-md-color-primary=teal] .md-header { + background-color: #ffffff; + color: #212121; + border-top: 4px solid #009688; + box-shadow: 0 0 0.2rem #009688, 0 0.2rem 0.4rem rgba(0,0,0,.2); +} + +@media only screen and (min-width: 76.25em) { + .md-source { + padding-right: 0; + text-align: right; + opacity: 0.7; + } +} + +html .md-typeset .superfences-tabs > label:hover { + color: #009688; +} + +.md-search__input { + background-color: #dedede; +} + +.md-search__input::placeholder { + color: #404040; +} + +.md-nav-link-wrapper { + display: block; + margin-top: .625em; + transition: color .125s; + text-overflow: ellipsis; + cursor: pointer; + overflow: hidden +} + +.md-nav__item--nested > .md-nav-link-wrapper > .md-nav__link { + display: inline; +} + +.md-nav__item--nested > .md-nav-link-wrapper > .md-nav__link:after { + content: "\E313"; + display: inline-block; + vertical-align: middle; +} + +.md-nav__item--nested .md-nav__toggle:checked ~ .md-nav-link-wrapper > .md-nav__link:after { + -webkit-transform: rotateX(180deg); + transform: rotateX(180deg) +} + +[data-md-color-primary=deep-orange] .md-nav-link-wrapper a:focus, +[data-md-color-primary=deep-orange] .md-nav-link-wrapper a:hover { + color: #009688; +} + +.hljs-title, +.hljs-section { + color: #009688; + font-weight: normal; +} + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #009688; +} + +.home_icon { + height: 45px; + margin-right: -12px; + vertical-align: middle; +} + +.home_icon a { + margin-top: 4px; +} + +.home_icon a i { + font-size: 25px; +} + +.md-nav__link[data-md-state=blur] { + color: rgba(0, 0, 0, .54); +} + +.quick_links { + float: right; +} + +.nav_link { + color: #fff; + font-size: 22px; + -webkit-transition: right 0.2s linear; + -khtml-transition: right 0.2s linear; + -moz-transition: right 0.2s linear; + -ms-transition: right 0.2s linear; + transition: right 0.2s linear, color .25s, opacity .1s; + z-index: 2; + padding-left: 20px; + opacity: 0; + display: none; +} + +.nav_link.active:hover { + opacity: 1; +} + +.edit_link.active { + display: block; + opacity: 0.7; + margin-top: 18px; +} + +.md-header-nav { + padding-right: 0; +} + +@media only screen and (min-width: 76.25em) { + .md-search__inner { + margin-right: 0; + } +} + +@media only screen and (min-width: 60em) { + .md-search { + padding-right: 0; + } +} + +@media only screen and (max-width: 76.1875em) { + html .md-nav--primary .md-nav__title--site .md-nav__button { + font-size: 1.9rem; + padding: 0 0 0 .4rem; + height: 2.2rem; + } + + .extension-title { + display: none; + } + + html [data-md-color-primary=teal] .md-nav--primary .md-nav__title--site { + background-color: #fff; + border-top: 3px solid #009688; + box-shadow: 0 0 0.2rem rgba(0, 0, 0, .1), 0 0.2rem 0.4rem rgba(0, 0, 0, .2); + color: black; + } + + .md-header-nav__source { + display: block; + } + + .md-source__icon + .md-source__repository { + display: none; + } + +} + +.feedbackBtn { + transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms; + background: rgb(38, 50, 56);; + color: #fff; + font-size: .7rem; + position: fixed; + right: 0; + top: 50%; + border-radius: 6px 0px 0px 6px; + writing-mode: vertical-lr; + padding: 15px 2px; + line-height: 30px; + box-shadow: 0 1px 0 rgba(153, 153, 153, 0.25) inset, 0 -1px 0 rgba(0, 0, 0, 0.25) inset; +} + +.feedbackBtn:hover { + background-color: #3c464c; +} + +.md-footer-nav { + background-color: rgba(0, 0, 0, 0.67); +} + +.md-footer-nav__link { + padding-top: .4rem; + padding-bottom: 0; +} + +.md-footer-nav__inner { + height: 3rem; + overflow: hidden; +} + +.md-footer-nav__direction { + font-size: .5rem; + top: 3px; +} + +.md-footer-nav__title { + font-size: .7rem; +} + +.md-footer-nav .md-flex__cell { + vertical-align: baseline; +} + +.md-footer-copyright__highlight { + padding-right: 10px; + border-right: 1px solid #575757; + margin-right: 10px; + display: inline-block; +} + +.text--replace { + overflow: hidden; + color: transparent; + text-indent: 100%; + white-space: nowrap +} + +.cd-top { + position: fixed; + bottom: 20px; + right: 20px; + display: inline-block; + height: 40px; + width: 40px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.05); + background: url(../lib/backtotop/img/cd-top-arrow.svg) no-repeat center 50%; + background-color: hsla(174, 100%, 29%, 0.8); +} + +.js .cd-top { + visibility: hidden; + opacity: 0; + transition: opacity .3s, visibility .3s, background-color .3s +} + +.js .cd-top--is-visible { + visibility: visible; + opacity: 1 +} + +.js .cd-top--fade-out { + opacity: .5 +} + +.js .cd-top:hover { + background-color: hsl(174, 100%, 29%); + opacity: 1 +} + +.md-nav__source { + display: none; +} + +@media only screen and (max-width: 1220px) { + .nav_link { + display: none; + } +} + +.md-nav--secondary ul > li.md-nav__item { + border-left: 4px solid transparent; + transition: border 500ms; + margin-left: -3px; +} + +.md-sidebar--secondary .md-nav--secondary > ul { + border-left: 2px solid #ccc; + margin-left: 3px; +} + +.md-nav--secondary > ul li.md-nav__item.active { + border-color: #242424 !important; +} + +.md-sidebar--secondary .md-nav--secondary > ul ul { + margin-left: -15px; +} + +.md-sidebar--secondary .md-nav--secondary > ul ul > li { + padding-left: 30px; +} + +.md-sidebar--secondary .md-nav--secondary > ul ul ul { + margin-left: -31px; +} + +.md-sidebar--secondary .md-nav--secondary > ul ul ul > li { + padding-left: 45px; +} + +.md-sidebar--secondary .md-nav--secondary > ul ul ul ul { + margin-left: -46px; +} + +.md-sidebar--secondary .md-nav--secondary > ul ul ul ul > li { + padding-left: 60px; +} + +.md-sidebar--secondary .md-nav--secondary > ul ul ul ul ul { + margin-left: -61px; +} + +.md-sidebar--secondary .md-nav--secondary > ul ul ul ul ul > li { + padding-left: 75px; +} + +.md-sidebar { + position: fixed; +} + +.md-sidebar[data-md-state=lock] { + top: 3.9rem; +} + +@media screen and (min-width: 1220px) and (max-width: 1599px) { + .nav_link { + top: 62px; + } +} + +.md-content__icon, +.md-footer-nav__button, +.md-header-nav__button, +.md-nav__button, +.md-nav__title::before, +.md-search-result__article--document::before { + margin: 0.3rem; +} + +.md-source__icon { + float: right; + text-align: right; + width: 1.8rem; +} + +@media (min-width: 60em) { + .md-header-nav__source { + padding-right: 0; + } +} + +.md-source { + opacity: 0.7; +} + +.md-source:hover { + opacity: 1; +} + +@media only screen and (min-width: 45em) { + .md-footer-social { + padding: 2px 0; + } +} + +.md-nav__button img { + width: 150%; +} diff --git a/docs/images/favicon.ico b/docs/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dd8f844c9eaaddab1adcfc2525e60735e97c2bd0 GIT binary patch literal 31509 zcmeHP3s)3J7H$`Im)BvQ48wbZfFNo>5Hkc9HsP^=Q3y&PL|s9bhvAU~ISMZPvOW8g z_Al)H`h)H}v_1APgUlr5DKD4m>Z)5`-MaVItyasrW|doGW0w3(S>5t;(z2{n>h$-p zW$j2^GI{!YrDgr^zyF!Dtgt+>-zc|hmMyDW-jk+yE)>s#{Ap}#lot%W3lF_A@Dzgc|#`g`~49K`6UzeP-tU`}gN0(NYx~Kl-nl`Ze(cRsBu0}sC2A(?X;9De&MrM94 z>_}BQcJDMZM6D8KyfyOXFal=`tB0#f`+SZtfZ z$YT&N2p9wm0znXHXlM`@7Nn(Va~TMj?`f{)J4N#y*=1;R_C7V{XMFZI%+q`jIKvn} z@fC4O{*KAtY~K)bJbHy>GAX{H_$j5;w7I!iByVbJDhWzyiF|!MzI~zOLDoJN!yH3l z%r_jE*45#y=4Q}n6dBCQ%1Vb;RpDk@(^w35u6|OnUh9cpOFbjXFr3Dh9zQJNE1D+@ z$UtSMPoJPoUtdCKO%0@)nwk>&;ll@^M@L6O4-O85?(gplJw84b`uOo

=f_OUpn$ zSNVzg__&+-y(ay#6guCFL~LuTn-FmZx-c^|G$ika!@w~gEE*c%xua3&(7OX@4@;pD z$n0p^Wm^Jwl*PSWu^Otp!|ACrLV6~dZsPp{DN!9S$pgm zqC$GT9oTeq*z~#&wV!_R1x{+Tn&stx72dD(_xH;q+C{%Me)Wfkhw_NF|4e4AVXoGl z?{Z)0`DW+q>oFGJqJ>&pTay}ow^&_WEqr--xzL@R9ih1v`Z~@f*R|t}@~0d(k$?x& zel-$_NX_u@aITY*_LNG;4nfu{NR-Dm-dS^vyfm4Fma?92)z;QZ&HViQ1?EMRa-A2) zYb+`Wq!YGWN%bpJQRefz(9DC=$d&lh;w+6s@kyNd`bNST?Lk!JL>!RO1>Z)1`7`g{y^~HDA|=Ou}GLku?pnY&6U? zPSQ!i%ibP7=I!r?3bJIvU+B8!AD}pqD2%7ZBKS6EOB&?%_I3(b5IQzCC;hDaczMUO zOl*(dL*M8mvcJdpJE_KL{QpFbD+ z_U&7t{DA$@qesGX|4&b2{~v$IcmJOpqlZO1J<-&Z@80K(yp*Ot9!Ef-(=JTPP!G;@ z0+xq|0B`W+tzozwiC}jolaSv#y2hE-N!R$b&!?VpQl3vxJIN4aENy$)o=%bV#ZPq- zP*x$uIRpvOb*O(;yp|KGX8C_DtiBRRHS3^@*!iW78ym6n;&JRG?kD=Z3~KMQ=&3J6 z%R~av2m^guFH-Juj;M9>oEFHteCpi++}Zbs&_6#FnwUUBQq!qP)O_;|0@3<WqoZdeNEBX@Uyb$SiX9NLK(oq`Lp7W52Xeu?A)i<=nBJ=KO7^1%q+ z+uja()N=+t$1okmBVdr3(A(D83B*R*3v_m>R2dUyHf4QV8xjv?W$@R$2G9beQYrmw zKwclvv+n`DKk3neB)Sp_T=p=n*xK4EJd<0aqoV;O)KY2QyGywv7-MLvcMAP7lW>%u zd^E~r6{HP?aB(m`K3;GMiNnpCH>GEO(B0G1BYam^r_eJz5yM<>$6DJ5$)%+wVRJ2$ z6PN@`J{ui|Zg3E=q=)}5l%|slk=^*PCBs_EaWTrH=x`eISzf|XjCX0I48=(Y2jMDc zAfi!($6C(p(lYZjGBP4>1u1v#+>vIht8g&w?bn5d!&ow!SwG5ro8C%Z-p_O}4>CJD zE29J{Wo0mKoR@c$d}{n8WEda(-vKa-f9)D{jD{$ggr+eB;a%@(AYz9dn&(sA&3WhI zCn5ELm;}L4x7pp@m0uY~baY_b4%~%~@iy$|H^|(-*+Q0)^yfD&KQ@ZcA(1$LJn@s0 zGomY*oSc+*^C{`{E$8)oY(eI`yrI?_oqaZ(6W#sOr%xS;f-~uKhtoJy7FJ)ZE^Xh> zYfTC=4?UZ%t}YQE`+ZGsZ=baJ?jf{<#SL5Bf0yLexm@PcXFuVtK_7!DiI$lmKWq5Z zOX(oF>lmt6S0gm!4vEDO+Sk{g*H_&Sg8+uclt(|+^3W6b9Xr@E2yJM<0VO--A;#Mq zN9XJWpB2ig4|RO@d8kGThe`P_5$$i6F7n+{EC#<5iD0dwQBd-{{b2CJbta|tEu-pH~VV0~q|Zv|uee z)m=IHXcW=U%nZ_hD=RBPH#Rne`W1ad{IY*AGe>xU&gT#I{H?24@VdYHG01q+E0ctPGv0 zklqmqKDWBxxLaFW^60Ctz82cm1v4=}2M8CwhXQ|ZQ}VZOBh;hXd&lCe830MMoXT&% ze0pKoq1z5l_AHcvlhH_1Ixa9#%)Y|kJ;Vu}#dY59-9#q$!oF_y8#~h+LpQX`KHKJ4 zO*%f_-jPynt~hyZ1c-2O2bf4;bT8FNX?G%8XZ{!j3<3rLgMdN6AYc$M2p9wm0tNwt wfI+|@U=T0}7z7Lg1_6VBLBJqj5HJWB1PlTO0fT@+z#w1{FbEg~N(_Pj0}ja9kpKVy literal 0 HcmV?d00001 diff --git a/docs/images/siddhi-logo.svg b/docs/images/siddhi-logo.svg new file mode 100644 index 0000000..5350461 --- /dev/null +++ b/docs/images/siddhi-logo.svg @@ -0,0 +1,45 @@ + + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/license.md b/docs/license.md new file mode 100644 index 0000000..e69de29 diff --git a/findbugs-exclude.xml b/findbugs-exclude.xml new file mode 100644 index 0000000..976f767 --- /dev/null +++ b/findbugs-exclude.xml @@ -0,0 +1,3 @@ + + + diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..3eb9b79 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,27 @@ +site_name: Siddhi IO Live +site_description: Siddhi IO Live Extension +repo_name: Siddhi-Store-Live +repo_url: +edit_url: +copyright: +theme: + name: 'material' + logo: images/siddhi-logo.svg + favicon: images/favicon.ico + palette: + primary: teal + accent: teal +extra_css: + - assets/stylesheets/extra.css +extra_javascript: + - assets/javascripts/extra.js +extra: + social: +google_analytics: +markdown_extensions: + - markdown.extensions.admonition +pages: + - Information : index.md + - API Docs: + - latest: api/latest.md + - License: license.md \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..2a9eb84 --- /dev/null +++ b/pom.xml @@ -0,0 +1,134 @@ + + + + io.siddhi + siddhi + 5.0.0 + + 4.0.0 + pom + io.siddhi.extension.io.live + siddhi-io-live-parent + 1.0.0-SNAPSHOT + Siddhi I/O Live + + + component + + + + + + io.siddhi + siddhi-core + ${siddhi.version} + + + io.siddhi + siddhi-query-api + ${siddhi.version} + + + io.siddhi + siddhi-annotations + ${siddhi.version} + + + io.siddhi + siddhi-query-compiler + ${siddhi.version} + + + log4j + log4j + ${log4j.version} + + + javax.mail + mail + + + javax.jms + jms + + + com.sun.jdmk + jmxtools + + + com.sun.jmx + jmxri + + + + + io.siddhi.extension.map.xml + siddhi-map-xml + ${siddhi.map.xml.version} + test + + + io.siddhi.extension.map.json + siddhi-map-json + ${siddhi.map.json.version} + test + + + com.arangodb + arangodb-java-driver + 6.15 + + + org.testng + testng + 6.11 + test + + + + + + + org.apache.maven.plugins + maven-release-plugin + + clean install -Pdocumentation-deploy + true + + + + io.siddhi + siddhi-doc-gen + ${siddhi.version} + + + + generate-md-docs + + + + + + + + 5.0.0 + 1.2.17 + 5.0.2 + 5.0.2 + 0.7.9 + + + + + + + + com.arangodb + arangodb-java-driver + 6.18.0 + + + +