occam-nominal 1.0.284 → 1.0.285

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -118,9 +118,10 @@ _export(exports, {
118
118
  return instantiateVariable;
119
119
  }
120
120
  });
121
- const _bnf = require("../utilities/bnf");
121
+ const _occamlanguages = require("occam-languages");
122
122
  const _ruleNames = require("../ruleNames");
123
- const termPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_RULE_NAME), typePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TYPE_RULE_NAME), framePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_RULE_NAME), labelPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.LABEL_RULE_NAME), premisePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PREMISE_RULE_NAME), variablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.VARIABLE_RULE_NAME), equalityPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUALITY_RULE_NAME), propertyPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROPERTY_RULE_NAME), judgementPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.JUDGEMENT_RULE_NAME), generatorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.GENERATOR_RULE_NAME), deductionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.DEDUCTION_RULE_NAME), parameterPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PARAMETER_RULE_NAME), statementPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_RULE_NAME), referencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_RULE_NAME), signaturePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SIGNATURE_RULE_NAME), constraintPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONSTRAINT_RULE_NAME), combinatorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.COMBINATOR_RULE_NAME), conclusionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONCLUSION_RULE_NAME), hypothesisPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.HYPOTHESIS_RULE_NAME), typePrefixPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TYPE_PREFIX_RULE_NAME), suppositionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUPPOSITION_RULE_NAME), constructorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONSTRUCTOR_RULE_NAME), equivalencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUIVALENCE_RULE_NAME), metavariablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.METAVARIABLE_RULE_NAME), typeAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TYPE_ASSERTION_RULE_NAME), definedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.DEFINED_ASSERTION_RULE_NAME), termSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_SUBSTITUTION_RULE_NAME), subproofAssertionlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUBPROOF_ASSERTION_RULE_NAME), propertyAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROPERTY_ASSERTION_RULE_NAME), frameSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_SUBSTITUTION_RULE_NAME), procedureReferencelaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_REFERENCE_RULE_NAME), containedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONTAINED_ASSERTION_RULE_NAME), signatureAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SIGNATURE_ASSERTION_RULE_NAME), implicitAssumptionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.IMPLICIT_ASSUMPTION_RULE_NAME), statementSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_SUBSTITUTION_RULE_NAME), referenceSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_SUBSTITUTION_RULE_NAME);
123
+ const { ruleFromRuleName } = _occamlanguages.bnfUtilities;
124
+ const termPlaceholderRule = ruleFromRuleName(_ruleNames.TERM_RULE_NAME), typePlaceholderRule = ruleFromRuleName(_ruleNames.TYPE_RULE_NAME), framePlaceholderRule = ruleFromRuleName(_ruleNames.FRAME_RULE_NAME), labelPlaceholderRule = ruleFromRuleName(_ruleNames.LABEL_RULE_NAME), premisePlaceholderRule = ruleFromRuleName(_ruleNames.PREMISE_RULE_NAME), variablePlaceholderRule = ruleFromRuleName(_ruleNames.VARIABLE_RULE_NAME), equalityPlaceholderRule = ruleFromRuleName(_ruleNames.EQUALITY_RULE_NAME), propertyPlaceholderRule = ruleFromRuleName(_ruleNames.PROPERTY_RULE_NAME), judgementPlaceholderRule = ruleFromRuleName(_ruleNames.JUDGEMENT_RULE_NAME), generatorPlaceholderRule = ruleFromRuleName(_ruleNames.GENERATOR_RULE_NAME), deductionPlaceholderRule = ruleFromRuleName(_ruleNames.DEDUCTION_RULE_NAME), parameterPlaceholderRule = ruleFromRuleName(_ruleNames.PARAMETER_RULE_NAME), statementPlaceholderRule = ruleFromRuleName(_ruleNames.STATEMENT_RULE_NAME), referencePlaceholderRule = ruleFromRuleName(_ruleNames.REFERENCE_RULE_NAME), signaturePlaceholderRule = ruleFromRuleName(_ruleNames.SIGNATURE_RULE_NAME), constraintPlaceholderRule = ruleFromRuleName(_ruleNames.CONSTRAINT_RULE_NAME), combinatorPlaceholderRule = ruleFromRuleName(_ruleNames.COMBINATOR_RULE_NAME), conclusionPlaceholderRule = ruleFromRuleName(_ruleNames.CONCLUSION_RULE_NAME), hypothesisPlaceholderRule = ruleFromRuleName(_ruleNames.HYPOTHESIS_RULE_NAME), typePrefixPlaceholderRule = ruleFromRuleName(_ruleNames.TYPE_PREFIX_RULE_NAME), suppositionPlaceholderRule = ruleFromRuleName(_ruleNames.SUPPOSITION_RULE_NAME), constructorPlaceholderRule = ruleFromRuleName(_ruleNames.CONSTRUCTOR_RULE_NAME), equivalencePlaceholderRule = ruleFromRuleName(_ruleNames.EQUIVALENCE_RULE_NAME), metavariablePlaceholderRule = ruleFromRuleName(_ruleNames.METAVARIABLE_RULE_NAME), typeAssertionPlaceholderRule = ruleFromRuleName(_ruleNames.TYPE_ASSERTION_RULE_NAME), definedAssertionPlaceholderRule = ruleFromRuleName(_ruleNames.DEFINED_ASSERTION_RULE_NAME), termSubstitutionPlaceholderRule = ruleFromRuleName(_ruleNames.TERM_SUBSTITUTION_RULE_NAME), subproofAssertionlaceholderRule = ruleFromRuleName(_ruleNames.SUBPROOF_ASSERTION_RULE_NAME), propertyAssertionPlaceholderRule = ruleFromRuleName(_ruleNames.PROPERTY_ASSERTION_RULE_NAME), frameSubstitutionPlaceholderRule = ruleFromRuleName(_ruleNames.FRAME_SUBSTITUTION_RULE_NAME), procedureReferencelaceholderRule = ruleFromRuleName(_ruleNames.PROCEDURE_REFERENCE_RULE_NAME), containedAssertionPlaceholderRule = ruleFromRuleName(_ruleNames.CONTAINED_ASSERTION_RULE_NAME), signatureAssertionPlaceholderRule = ruleFromRuleName(_ruleNames.SIGNATURE_ASSERTION_RULE_NAME), implicitAssumptionPlaceholderRule = ruleFromRuleName(_ruleNames.IMPLICIT_ASSUMPTION_RULE_NAME), statementSubstitutionPlaceholderRule = ruleFromRuleName(_ruleNames.STATEMENT_SUBSTITUTION_RULE_NAME), referenceSubstitutionPlaceholderRule = ruleFromRuleName(_ruleNames.REFERENCE_SUBSTITUTION_RULE_NAME);
124
125
  function instantiatePremise(string, context) {
125
126
  string = `${string}
126
127
  `; ///
@@ -252,4 +253,4 @@ function instantiate(placeholderRule, string, context) {
252
253
  return node;
253
254
  }
254
255
 
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2luc3RhbnRpYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBydWxlRnJvbVJ1bGVOYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9ibmZcIjtcbmltcG9ydCB7IFRFUk1fUlVMRV9OQU1FLFxuICAgICAgICAgVFlQRV9SVUxFX05BTUUsXG4gICAgICAgICBGUkFNRV9SVUxFX05BTUUsXG4gICAgICAgICBMQUJFTF9SVUxFX05BTUUsXG4gICAgICAgICBQUkVNSVNFX1JVTEVfTkFNRSxcbiAgICAgICAgIFZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIEVRVUFMSVRZX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST1BFUlRZX1JVTEVfTkFNRSxcbiAgICAgICAgIEpVREdFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBERURVQ1RJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUEFSQU1FVEVSX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBSRUZFUkVOQ0VfUlVMRV9OQU1FLFxuICAgICAgICAgU0lHTkFUVVJFX1JVTEVfTkFNRSxcbiAgICAgICAgIEdFTkVSQVRPUl9SVUxFX05BTUUsXG4gICAgICAgICBDT01CSU5BVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTkNMVVNJT05fUlVMRV9OQU1FLFxuICAgICAgICAgSFlQT1RIRVNJU19SVUxFX05BTUUsXG4gICAgICAgICBDT05TVFJBSU5UX1JVTEVfTkFNRSxcbiAgICAgICAgIFRZUEVfUFJFRklYX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVUFBPU0lUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlNUUlVDVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIEVRVUlWQUxFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIE1FVEFWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICBUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBQUk9QRVJUWV9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIEZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU0lHTkFUVVJFX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBJTVBMSUNJVF9BU1NVTVBUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmNvbnN0IHRlcm1QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRFUk1fUlVMRV9OQU1FKSxcbiAgICAgIHR5cGVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRZUEVfUlVMRV9OQU1FKSxcbiAgICAgIGZyYW1lUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShGUkFNRV9SVUxFX05BTUUpLFxuICAgICAgbGFiZWxQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKExBQkVMX1JVTEVfTkFNRSksXG4gICAgICBwcmVtaXNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUkVNSVNFX1JVTEVfTkFNRSksXG4gICAgICB2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVkFSSUFCTEVfUlVMRV9OQU1FKSxcbiAgICAgIGVxdWFsaXR5UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShFUVVBTElUWV9SVUxFX05BTUUpLFxuICAgICAgcHJvcGVydHlQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFBST1BFUlRZX1JVTEVfTkFNRSksXG4gICAgICBqdWRnZW1lbnRQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEpVREdFTUVOVF9SVUxFX05BTUUpLFxuICAgICAgZ2VuZXJhdG9yUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShHRU5FUkFUT1JfUlVMRV9OQU1FKSxcbiAgICAgIGRlZHVjdGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoREVEVUNUSU9OX1JVTEVfTkFNRSksXG4gICAgICBwYXJhbWV0ZXJQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFBBUkFNRVRFUl9SVUxFX05BTUUpLFxuICAgICAgc3RhdGVtZW50UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVEFURU1FTlRfUlVMRV9OQU1FKSxcbiAgICAgIHJlZmVyZW5jZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUkVGRVJFTkNFX1JVTEVfTkFNRSksXG4gICAgICBzaWduYXR1cmVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNJR05BVFVSRV9SVUxFX05BTUUpLFxuICAgICAgY29uc3RyYWludFBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoQ09OU1RSQUlOVF9SVUxFX05BTUUpLFxuICAgICAgY29tYmluYXRvclBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoQ09NQklOQVRPUl9SVUxFX05BTUUpLFxuICAgICAgY29uY2x1c2lvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoQ09OQ0xVU0lPTl9SVUxFX05BTUUpLFxuICAgICAgaHlwb3RoZXNpc1BsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoSFlQT1RIRVNJU19SVUxFX05BTUUpLFxuICAgICAgdHlwZVByZWZpeFBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVFlQRV9QUkVGSVhfUlVMRV9OQU1FKSxcbiAgICAgIHN1cHBvc2l0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVVBQT1NJVElPTl9SVUxFX05BTUUpLFxuICAgICAgY29uc3RydWN0b3JQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTlNUUlVDVE9SX1JVTEVfTkFNRSksXG4gICAgICBlcXVpdmFsZW5jZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRVFVSVZBTEVOQ0VfUlVMRV9OQU1FKSxcbiAgICAgIG1ldGF2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoTUVUQVZBUklBQkxFX1JVTEVfTkFNRSksXG4gICAgICB0eXBlQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUpLFxuICAgICAgZGVmaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHRlcm1TdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICBzdWJwcm9vZkFzc2VydGlvbmxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHByb3BlcnR5QXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9QRVJUWV9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGZyYW1lU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHByb2NlZHVyZVJlZmVyZW5jZWxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSksXG4gICAgICBjb250YWluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHNpZ25hdHVyZUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU0lHTkFUVVJFX0FTU0VSVElPTl9SVUxFX05BTUUpLFxuICAgICAgaW1wbGljaXRBc3N1bXB0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShJTVBMSUNJVF9BU1NVTVBUSU9OX1JVTEVfTkFNRSksXG4gICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHJlZmVyZW5jZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcmVtaXNlKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKHByZW1pc2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZURlZHVjdGlvbihzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShkZWR1Y3Rpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbmNsdXNpb24oc3RyaW5nLCBjb250ZXh0KSB7XG4gIHN0cmluZyA9IGAke3N0cmluZ31cbmA7ICAvLy9cblxuICByZXR1cm4gaW5zdGFudGlhdGUoY29uY2x1c2lvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU3VwcG9zaXRpb24oc3RyaW5nLCBjb250ZXh0KSB7XG4gIHN0cmluZyA9IGAke3N0cmluZ31cbmA7ICAvLy9cblxuICByZXR1cm4gaW5zdGFudGlhdGUoc3VwcG9zaXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVRlcm0oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0ZXJtUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVR5cGUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0eXBlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUZyYW1lKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZnJhbWVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlTGFiZWwoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShsYWJlbFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVWYXJpYWJsZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUVxdWFsaXR5KHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZXF1YWxpdHlQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJvcGVydHkoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShwcm9wZXJ0eVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVHZW5lcmF0b3Ioc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShnZW5lcmF0b3JQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlSnVkZ2VtZW50KHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoanVkZ2VtZW50UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVBhcmFtZXRlcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHBhcmFtZXRlclBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTdGF0ZW1lbnQoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUmVmZXJlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVNpZ25hdHVyZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHNpZ25hdHVyZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVDb21iaW5hdG9yKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoY29tYmluYXRvclBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVIeXBvdGhlc2lzKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoaHlwb3RoZXNpc1BsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVDb25zdHJhaW50KHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoY29uc3RyYWludFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUeXBlUHJlZml4KHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodHlwZVByZWZpeFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUVxdWl2YWxlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlTWV0YXZhcmlhYmxlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUobWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0eXBlQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShkZWZpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVRlcm1TdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHByb3BlcnR5QXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvY2VkdXJlUmVmZXJlbmNlbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVNpZ25hdHVyZUFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHNpZ25hdHVyZUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShpbXBsaWNpdEFzc3VtcHRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU3RhdGVtZW50U3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc3RhdGVtZW50U3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVJlZmVyZW5jZVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHJlZmVyZW5jZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZShwbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCkge1xuICBsZXQgbm9kZTtcblxuICBjb25zdCBsZXhlciA9IGNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgY29udGVudCA9IGAke3N0cmluZ31cbmAsXG4gICAgICAgIHRva2VucyA9IGxleGVyLnRva2VuaXNlKGNvbnRlbnQpO1xuXG4gIGNvbnRleHQuc2V0VG9rZW5zKHRva2Vucyk7XG5cbiAgY29uc3Qgc3RhcnRSdWxlID0gcGxhY2Vob2xkZXJSdWxlOyAgLy8vXG5cbiAgbm9kZSA9IHBhcnNlci5wYXJzZSh0b2tlbnMsIHN0YXJ0UnVsZSk7XG5cbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgLy8vXG5cbiAgbm9uVGVybWluYWxOb2RlLnNvbWVDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgIG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBub2RlO1xufVxuIl0sIm5hbWVzIjpbImluc3RhbnRpYXRlQ29tYmluYXRvciIsImluc3RhbnRpYXRlQ29uY2x1c2lvbiIsImluc3RhbnRpYXRlQ29uc3RyYWludCIsImluc3RhbnRpYXRlQ29uc3RydWN0b3IiLCJpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiIsImluc3RhbnRpYXRlRGVkdWN0aW9uIiwiaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVFcXVhbGl0eSIsImluc3RhbnRpYXRlRXF1aXZhbGVuY2UiLCJpbnN0YW50aWF0ZUZyYW1lIiwiaW5zdGFudGlhdGVGcmFtZVN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlR2VuZXJhdG9yIiwiaW5zdGFudGlhdGVIeXBvdGhlc2lzIiwiaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24iLCJpbnN0YW50aWF0ZUp1ZGdlbWVudCIsImluc3RhbnRpYXRlTGFiZWwiLCJpbnN0YW50aWF0ZU1ldGF2YXJpYWJsZSIsImluc3RhbnRpYXRlUGFyYW1ldGVyIiwiaW5zdGFudGlhdGVQcmVtaXNlIiwiaW5zdGFudGlhdGVQcm9jZWR1cmVSZWZlcmVuY2UiLCJpbnN0YW50aWF0ZVByb3BlcnR5IiwiaW5zdGFudGlhdGVQcm9wZXJ0eUFzc2VydGlvbiIsImluc3RhbnRpYXRlUmVmZXJlbmNlIiwiaW5zdGFudGlhdGVSZWZlcmVuY2VTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZVNpZ25hdHVyZSIsImluc3RhbnRpYXRlU2lnbmF0dXJlQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVTdGF0ZW1lbnQiLCJpbnN0YW50aWF0ZVN0YXRlbWVudFN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24iLCJpbnN0YW50aWF0ZVN1cHBvc2l0aW9uIiwiaW5zdGFudGlhdGVUZXJtIiwiaW5zdGFudGlhdGVUZXJtU3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVUeXBlIiwiaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVUeXBlUHJlZml4IiwiaW5zdGFudGlhdGVWYXJpYWJsZSIsInRlcm1QbGFjZWhvbGRlclJ1bGUiLCJydWxlRnJvbVJ1bGVOYW1lIiwiVEVSTV9SVUxFX05BTUUiLCJ0eXBlUGxhY2Vob2xkZXJSdWxlIiwiVFlQRV9SVUxFX05BTUUiLCJmcmFtZVBsYWNlaG9sZGVyUnVsZSIsIkZSQU1FX1JVTEVfTkFNRSIsImxhYmVsUGxhY2Vob2xkZXJSdWxlIiwiTEFCRUxfUlVMRV9OQU1FIiwicHJlbWlzZVBsYWNlaG9sZGVyUnVsZSIsIlBSRU1JU0VfUlVMRV9OQU1FIiwidmFyaWFibGVQbGFjZWhvbGRlclJ1bGUiLCJWQVJJQUJMRV9SVUxFX05BTUUiLCJlcXVhbGl0eVBsYWNlaG9sZGVyUnVsZSIsIkVRVUFMSVRZX1JVTEVfTkFNRSIsInByb3BlcnR5UGxhY2Vob2xkZXJSdWxlIiwiUFJPUEVSVFlfUlVMRV9OQU1FIiwianVkZ2VtZW50UGxhY2Vob2xkZXJSdWxlIiwiSlVER0VNRU5UX1JVTEVfTkFNRSIsImdlbmVyYXRvclBsYWNlaG9sZGVyUnVsZSIsIkdFTkVSQVRPUl9SVUxFX05BTUUiLCJkZWR1Y3Rpb25QbGFjZWhvbGRlclJ1bGUiLCJERURVQ1RJT05fUlVMRV9OQU1FIiwicGFyYW1ldGVyUGxhY2Vob2xkZXJSdWxlIiwiUEFSQU1FVEVSX1JVTEVfTkFNRSIsInN0YXRlbWVudFBsYWNlaG9sZGVyUnVsZSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJyZWZlcmVuY2VQbGFjZWhvbGRlclJ1bGUiLCJSRUZFUkVOQ0VfUlVMRV9OQU1FIiwic2lnbmF0dXJlUGxhY2Vob2xkZXJSdWxlIiwiU0lHTkFUVVJFX1JVTEVfTkFNRSIsImNvbnN0cmFpbnRQbGFjZWhvbGRlclJ1bGUiLCJDT05TVFJBSU5UX1JVTEVfTkFNRSIsImNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUiLCJDT01CSU5BVE9SX1JVTEVfTkFNRSIsImNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUiLCJDT05DTFVTSU9OX1JVTEVfTkFNRSIsImh5cG90aGVzaXNQbGFjZWhvbGRlclJ1bGUiLCJIWVBPVEhFU0lTX1JVTEVfTkFNRSIsInR5cGVQcmVmaXhQbGFjZWhvbGRlclJ1bGUiLCJUWVBFX1BSRUZJWF9SVUxFX05BTUUiLCJzdXBwb3NpdGlvblBsYWNlaG9sZGVyUnVsZSIsIlNVUFBPU0lUSU9OX1JVTEVfTkFNRSIsImNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlIiwiQ09OU1RSVUNUT1JfUlVMRV9OQU1FIiwiZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUiLCJFUVVJVkFMRU5DRV9SVUxFX05BTUUiLCJtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUiLCJNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIiwidHlwZUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSIsIlRZUEVfQVNTRVJUSU9OX1JVTEVfTkFNRSIsImRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJ0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiVEVSTV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwic3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSIsIlNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUiLCJwcm9wZXJ0eUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSIsIlBST1BFUlRZX0FTU0VSVElPTl9SVUxFX05BTUUiLCJmcmFtZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIkZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJwcm9jZWR1cmVSZWZlcmVuY2VsYWNlaG9sZGVyUnVsZSIsIlBST0NFRFVSRV9SRUZFUkVOQ0VfUlVMRV9OQU1FIiwiY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJzaWduYXR1cmVBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJTSUdOQVRVUkVfQVNTRVJUSU9OX1JVTEVfTkFNRSIsImltcGxpY2l0QXNzdW1wdGlvblBsYWNlaG9sZGVyUnVsZSIsIklNUExJQ0lUX0FTU1VNUFRJT05fUlVMRV9OQU1FIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJyZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInN0cmluZyIsImNvbnRleHQiLCJpbnN0YW50aWF0ZSIsInBsYWNlaG9sZGVyUnVsZSIsIm5vZGUiLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwiY29udGVudCIsInRva2VucyIsInRva2VuaXNlIiwic2V0VG9rZW5zIiwic3RhcnRSdWxlIiwicGFyc2UiLCJub25UZXJtaW5hbE5vZGUiLCJzb21lQ2hpbGROb2RlIiwiY2hpbGROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFtSWdCQTtlQUFBQTs7UUF4Q0FDO2VBQUFBOztRQTRDQUM7ZUFBQUE7O1FBSUFDO2VBQUFBOztRQW9CQUM7ZUFBQUE7O1FBM0VBQztlQUFBQTs7UUErREFDO2VBQUFBOztRQWhDQUM7ZUFBQUE7O1FBMEJBQztlQUFBQTs7UUFoQ0FDO2VBQUFBOztRQThDQUM7ZUFBQUE7O1FBcENBQztlQUFBQTs7UUFjQUM7ZUFBQUE7O1FBOEJBQztlQUFBQTs7UUExQ0FDO2VBQUFBOztRQVZBQztlQUFBQTs7UUFnQ0FDO2VBQUFBOztRQXBCQUM7ZUFBQUE7O1FBOUNBQztlQUFBQTs7UUFnRkFDO2VBQUFBOztRQXhDQUM7ZUFBQUE7O1FBb0NBQztlQUFBQTs7UUExQkFDO2VBQUFBOztRQXdDQUM7ZUFBQUE7O1FBdENBQztlQUFBQTs7UUFnQ0FDO2VBQUFBOztRQXBDQUM7ZUFBQUE7O1FBd0NBQztlQUFBQTs7UUFkQUM7ZUFBQUE7O1FBckRBQztlQUFBQTs7UUFPQUM7ZUFBQUE7O1FBNENBQztlQUFBQTs7UUExQ0FDO2VBQUFBOztRQXNDQUM7ZUFBQUE7O1FBUkFDO2VBQUFBOztRQXhCQUM7ZUFBQUE7OztxQkEvR2lCOzJCQW9DZ0I7QUFFakQsTUFBTUMsc0JBQXNCQyxJQUFBQSxxQkFBZ0IsRUFBQ0MseUJBQWMsR0FDckRDLHNCQUFzQkYsSUFBQUEscUJBQWdCLEVBQUNHLHlCQUFjLEdBQ3JEQyx1QkFBdUJKLElBQUFBLHFCQUFnQixFQUFDSywwQkFBZSxHQUN2REMsdUJBQXVCTixJQUFBQSxxQkFBZ0IsRUFBQ08sMEJBQWUsR0FDdkRDLHlCQUF5QlIsSUFBQUEscUJBQWdCLEVBQUNTLDRCQUFpQixHQUMzREMsMEJBQTBCVixJQUFBQSxxQkFBZ0IsRUFBQ1csNkJBQWtCLEdBQzdEQywwQkFBMEJaLElBQUFBLHFCQUFnQixFQUFDYSw2QkFBa0IsR0FDN0RD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
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2luc3RhbnRpYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBibmZVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IFRFUk1fUlVMRV9OQU1FLFxuICAgICAgICAgVFlQRV9SVUxFX05BTUUsXG4gICAgICAgICBGUkFNRV9SVUxFX05BTUUsXG4gICAgICAgICBMQUJFTF9SVUxFX05BTUUsXG4gICAgICAgICBQUkVNSVNFX1JVTEVfTkFNRSxcbiAgICAgICAgIFZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIEVRVUFMSVRZX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST1BFUlRZX1JVTEVfTkFNRSxcbiAgICAgICAgIEpVREdFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBERURVQ1RJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUEFSQU1FVEVSX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBSRUZFUkVOQ0VfUlVMRV9OQU1FLFxuICAgICAgICAgU0lHTkFUVVJFX1JVTEVfTkFNRSxcbiAgICAgICAgIEdFTkVSQVRPUl9SVUxFX05BTUUsXG4gICAgICAgICBDT01CSU5BVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTkNMVVNJT05fUlVMRV9OQU1FLFxuICAgICAgICAgSFlQT1RIRVNJU19SVUxFX05BTUUsXG4gICAgICAgICBDT05TVFJBSU5UX1JVTEVfTkFNRSxcbiAgICAgICAgIFRZUEVfUFJFRklYX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVUFBPU0lUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlNUUlVDVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIEVRVUlWQUxFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIE1FVEFWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICBUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBQUk9QRVJUWV9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIEZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU0lHTkFUVVJFX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBJTVBMSUNJVF9BU1NVTVBUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmNvbnN0IHsgcnVsZUZyb21SdWxlTmFtZSB9ID0gYm5mVXRpbGl0aWVzO1xuXG5jb25zdCB0ZXJtUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShURVJNX1JVTEVfTkFNRSksXG4gICAgICB0eXBlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShUWVBFX1JVTEVfTkFNRSksXG4gICAgICBmcmFtZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRlJBTUVfUlVMRV9OQU1FKSxcbiAgICAgIGxhYmVsUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShMQUJFTF9SVUxFX05BTUUpLFxuICAgICAgcHJlbWlzZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJFTUlTRV9SVUxFX05BTUUpLFxuICAgICAgdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFZBUklBQkxFX1JVTEVfTkFNRSksXG4gICAgICBlcXVhbGl0eVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRVFVQUxJVFlfUlVMRV9OQU1FKSxcbiAgICAgIHByb3BlcnR5UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9QRVJUWV9SVUxFX05BTUUpLFxuICAgICAganVkZ2VtZW50UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShKVURHRU1FTlRfUlVMRV9OQU1FKSxcbiAgICAgIGdlbmVyYXRvclBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoR0VORVJBVE9SX1JVTEVfTkFNRSksXG4gICAgICBkZWR1Y3Rpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKERFRFVDVElPTl9SVUxFX05BTUUpLFxuICAgICAgcGFyYW1ldGVyUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQQVJBTUVURVJfUlVMRV9OQU1FKSxcbiAgICAgIHN0YXRlbWVudFBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1RBVEVNRU5UX1JVTEVfTkFNRSksXG4gICAgICByZWZlcmVuY2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFJFRkVSRU5DRV9SVUxFX05BTUUpLFxuICAgICAgc2lnbmF0dXJlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTSUdOQVRVUkVfUlVMRV9OQU1FKSxcbiAgICAgIGNvbnN0cmFpbnRQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTlNUUkFJTlRfUlVMRV9OQU1FKSxcbiAgICAgIGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTUJJTkFUT1JfUlVMRV9OQU1FKSxcbiAgICAgIGNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTkNMVVNJT05fUlVMRV9OQU1FKSxcbiAgICAgIGh5cG90aGVzaXNQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEhZUE9USEVTSVNfUlVMRV9OQU1FKSxcbiAgICAgIHR5cGVQcmVmaXhQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRZUEVfUFJFRklYX1JVTEVfTkFNRSksXG4gICAgICBzdXBwb3NpdGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1VQUE9TSVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05TVFJVQ1RPUl9SVUxFX05BTUUpLFxuICAgICAgZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEVRVUlWQUxFTkNFX1JVTEVfTkFNRSksXG4gICAgICBtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKE1FVEFWQVJJQUJMRV9SVUxFX05BTUUpLFxuICAgICAgdHlwZUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVFlQRV9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKERFRklORURfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICB0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgc3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBwcm9wZXJ0eUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPUEVSVFlfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBmcmFtZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRlJBTUVfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICBwcm9jZWR1cmVSZWZlcmVuY2VsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPQ0VEVVJFX1JFRkVSRU5DRV9SVUxFX05BTUUpLFxuICAgICAgY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBzaWduYXR1cmVBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNJR05BVFVSRV9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGltcGxpY2l0QXNzdW1wdGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoSU1QTElDSVRfQVNTVU1QVElPTl9SVUxFX05BTUUpLFxuICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICByZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFJFRkVSRU5DRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJlbWlzZShzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShwcmVtaXNlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVEZWR1Y3Rpb24oc3RyaW5nLCBjb250ZXh0KSB7XG4gIHN0cmluZyA9IGAke3N0cmluZ31cbmA7ICAvLy9cblxuICByZXR1cm4gaW5zdGFudGlhdGUoZGVkdWN0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVDb25jbHVzaW9uKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKGNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN1cHBvc2l0aW9uKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKHN1cHBvc2l0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUZXJtKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodGVybVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUeXBlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodHlwZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVGcmFtZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGZyYW1lUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUxhYmVsKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUobGFiZWxQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVmFyaWFibGUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVFcXVhbGl0eShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGVxdWFsaXR5UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb3BlcnR5KHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvcGVydHlQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlR2VuZXJhdG9yKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZ2VuZXJhdG9yUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUp1ZGdlbWVudChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGp1ZGdlbWVudFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQYXJhbWV0ZXIoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShwYXJhbWV0ZXJQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU3RhdGVtZW50KHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc3RhdGVtZW50UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVJlZmVyZW5jZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHJlZmVyZW5jZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTaWduYXR1cmUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzaWduYXR1cmVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29tYmluYXRvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlSHlwb3RoZXNpcyhzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGh5cG90aGVzaXNQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbnN0cmFpbnRQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVHlwZVByZWZpeChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHR5cGVQcmVmaXhQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uc3RydWN0b3Ioc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVFcXVpdmFsZW5jZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZU1ldGF2YXJpYWJsZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKG1ldGF2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodHlwZUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZGVmaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUZXJtU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodGVybVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTdWJwcm9vZkFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN1YnByb29mQXNzZXJ0aW9ubGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJvcGVydHlBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShwcm9wZXJ0eUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVGcmFtZVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGZyYW1lU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHByb2NlZHVyZVJlZmVyZW5jZWxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbnRhaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTaWduYXR1cmVBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzaWduYXR1cmVBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlSW1wbGljaXRBc3N1bXB0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoaW1wbGljaXRBc3N1bXB0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0YXRlbWVudFN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVSZWZlcmVuY2VTdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShyZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGUocGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGU7XG5cbiAgY29uc3QgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgIGNvbnRlbnQgPSBgJHtzdHJpbmd9XG5gLFxuICAgICAgICB0b2tlbnMgPSBsZXhlci50b2tlbmlzZShjb250ZW50KTtcblxuICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuXG4gIGNvbnN0IHN0YXJ0UnVsZSA9IHBsYWNlaG9sZGVyUnVsZTsgIC8vL1xuXG4gIG5vZGUgPSBwYXJzZXIucGFyc2UodG9rZW5zLCBzdGFydFJ1bGUpO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGU7IC8vL1xuXG4gIG5vblRlcm1pbmFsTm9kZS5zb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbm9kZTtcbn1cbiJdLCJuYW1lcyI6WyJpbnN0YW50aWF0ZUNvbWJpbmF0b3IiLCJpbnN0YW50aWF0ZUNvbmNsdXNpb24iLCJpbnN0YW50aWF0ZUNvbnN0cmFpbnQiLCJpbnN0YW50aWF0ZUNvbnN0cnVjdG9yIiwiaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24iLCJpbnN0YW50aWF0ZURlZHVjdGlvbiIsImluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbiIsImluc3RhbnRpYXRlRXF1YWxpdHkiLCJpbnN0YW50aWF0ZUVxdWl2YWxlbmNlIiwiaW5zdGFudGlhdGVGcmFtZSIsImluc3RhbnRpYXRlRnJhbWVTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZUdlbmVyYXRvciIsImluc3RhbnRpYXRlSHlwb3RoZXNpcyIsImluc3RhbnRpYXRlSW1wbGljaXRBc3N1bXB0aW9uIiwiaW5zdGFudGlhdGVKdWRnZW1lbnQiLCJpbnN0YW50aWF0ZUxhYmVsIiwiaW5zdGFudGlhdGVNZXRhdmFyaWFibGUiLCJpbnN0YW50aWF0ZVBhcmFtZXRlciIsImluc3RhbnRpYXRlUHJlbWlzZSIsImluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwiaW5zdGFudGlhdGVQcm9wZXJ0eSIsImluc3RhbnRpYXRlUHJvcGVydHlBc3NlcnRpb24iLCJpbnN0YW50aWF0ZVJlZmVyZW5jZSIsImluc3RhbnRpYXRlUmVmZXJlbmNlU3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVTaWduYXR1cmUiLCJpbnN0YW50aWF0ZVNpZ25hdHVyZUFzc2VydGlvbiIsImluc3RhbnRpYXRlU3RhdGVtZW50IiwiaW5zdGFudGlhdGVTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVTdXBwb3NpdGlvbiIsImluc3RhbnRpYXRlVGVybSIsImluc3RhbnRpYXRlVGVybVN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlVHlwZSIsImluc3RhbnRpYXRlVHlwZUFzc2VydGlvbiIsImluc3RhbnRpYXRlVHlwZVByZWZpeCIsImluc3RhbnRpYXRlVmFyaWFibGUiLCJydWxlRnJvbVJ1bGVOYW1lIiwiYm5mVXRpbGl0aWVzIiwidGVybVBsYWNlaG9sZGVyUnVsZSIsIlRFUk1fUlVMRV9OQU1FIiwidHlwZVBsYWNlaG9sZGVyUnVsZSIsIlRZUEVfUlVMRV9OQU1FIiwiZnJhbWVQbGFjZWhvbGRlclJ1bGUiLCJGUkFNRV9SVUxFX05BTUUiLCJsYWJlbFBsYWNlaG9sZGVyUnVsZSIsIkxBQkVMX1JVTEVfTkFNRSIsInByZW1pc2VQbGFjZWhvbGRlclJ1bGUiLCJQUkVNSVNFX1JVTEVfTkFNRSIsInZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlIiwiVkFSSUFCTEVfUlVMRV9OQU1FIiwiZXF1YWxpdHlQbGFjZWhvbGRlclJ1bGUiLCJFUVVBTElUWV9SVUxFX05BTUUiLCJwcm9wZXJ0eVBsYWNlaG9sZGVyUnVsZSIsIlBST1BFUlRZX1JVTEVfTkFNRSIsImp1ZGdlbWVudFBsYWNlaG9sZGVyUnVsZSIsIkpVREdFTUVOVF9SVUxFX05BTUUiLCJnZW5lcmF0b3JQbGFjZWhvbGRlclJ1bGUiLCJHRU5FUkFUT1JfUlVMRV9OQU1FIiwiZGVkdWN0aW9uUGxhY2Vob2xkZXJSdWxlIiwiREVEVUNUSU9OX1JVTEVfTkFNRSIsInBhcmFtZXRlclBsYWNlaG9sZGVyUnVsZSIsIlBBUkFNRVRFUl9SVUxFX05BTUUiLCJzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUiLCJTVEFURU1FTlRfUlVMRV9OQU1FIiwicmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlIiwiUkVGRVJFTkNFX1JVTEVfTkFNRSIsInNpZ25hdHVyZVBsYWNlaG9sZGVyUnVsZSIsIlNJR05BVFVSRV9SVUxFX05BTUUiLCJjb25zdHJhaW50UGxhY2Vob2xkZXJSdWxlIiwiQ09OU1RSQUlOVF9SVUxFX05BTUUiLCJjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlIiwiQ09NQklOQVRPUl9SVUxFX05BTUUiLCJjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlIiwiQ09OQ0xVU0lPTl9SVUxFX05BTUUiLCJoeXBvdGhlc2lzUGxhY2Vob2xkZXJSdWxlIiwiSFlQT1RIRVNJU19SVUxFX05BTUUiLCJ0eXBlUHJlZml4UGxhY2Vob2xkZXJSdWxlIiwiVFlQRV9QUkVGSVhfUlVMRV9OQU1FIiwic3VwcG9zaXRpb25QbGFjZWhvbGRlclJ1bGUiLCJTVVBQT1NJVElPTl9SVUxFX05BTUUiLCJjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSIsIkNPTlNUUlVDVE9SX1JVTEVfTkFNRSIsImVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlIiwiRVFVSVZBTEVOQ0VfUlVMRV9OQU1FIiwibWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsInR5cGVBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUiLCJkZWZpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwidGVybVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInN1YnByb29mQXNzZXJ0aW9ubGFjZWhvbGRlclJ1bGUiLCJTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FIiwicHJvcGVydHlBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJQUk9QRVJUWV9BU1NFUlRJT05fUlVMRV9OQU1FIiwiZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwicHJvY2VkdXJlUmVmZXJlbmNlbGFjZWhvbGRlclJ1bGUiLCJQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSIsImNvbnRhaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSIsIkNPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwic2lnbmF0dXJlQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiU0lHTkFUVVJFX0FTU0VSVElPTl9SVUxFX05BTUUiLCJpbXBsaWNpdEFzc3VtcHRpb25QbGFjZWhvbGRlclJ1bGUiLCJJTVBMSUNJVF9BU1NVTVBUSU9OX1JVTEVfTkFNRSIsInN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJzdHJpbmciLCJjb250ZXh0IiwiaW5zdGFudGlhdGUiLCJwbGFjZWhvbGRlclJ1bGUiLCJub2RlIiwibGV4ZXIiLCJnZXRMZXhlciIsInBhcnNlciIsImdldFBhcnNlciIsImNvbnRlbnQiLCJ0b2tlbnMiLCJ0b2tlbmlzZSIsInNldFRva2VucyIsInN0YXJ0UnVsZSIsInBhcnNlIiwibm9uVGVybWluYWxOb2RlIiwic29tZUNoaWxkTm9kZSIsImNoaWxkTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBc0lnQkE7ZUFBQUE7O1FBeENBQztlQUFBQTs7UUE0Q0FDO2VBQUFBOztRQUlBQztlQUFBQTs7UUFvQkFDO2VBQUFBOztRQTNFQUM7ZUFBQUE7O1FBK0RBQztlQUFBQTs7UUFoQ0FDO2VBQUFBOztRQTBCQUM7ZUFBQUE7O1FBaENBQztlQUFBQTs7UUE4Q0FDO2VBQUFBOztRQXBDQUM7ZUFBQUE7O1FBY0FDO2VBQUFBOztRQThCQUM7ZUFBQUE7O1FBMUNBQztlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBZ0NBQztlQUFBQTs7UUFwQkFDO2VBQUFBOztRQTlDQUM7ZUFBQUE7O1FBZ0ZBQztlQUFBQTs7UUF4Q0FDO2VBQUFBOztRQW9DQUM7ZUFBQUE7O1FBMUJBQztlQUFBQTs7UUF3Q0FDO2VBQUFBOztRQXRDQUM7ZUFBQUE7O1FBZ0NBQztlQUFBQTs7UUFwQ0FDO2VBQUFBOztRQXdDQUM7ZUFBQUE7O1FBZEFDO2VBQUFBOztRQXJEQUM7ZUFBQUE7O1FBT0FDO2VBQUFBOztRQTRDQUM7ZUFBQUE7O1FBMUNBQztlQUFBQTs7UUFzQ0FDO2VBQUFBOztRQVJBQztlQUFBQTs7UUF4QkFDO2VBQUFBOzs7Z0NBbEhhOzJCQXFDb0I7QUFFakQsTUFBTSxFQUFFQyxnQkFBZ0IsRUFBRSxHQUFHQyw0QkFBWTtBQUV6QyxNQUFNQyxzQkFBc0JGLGlCQUFpQkcseUJBQWMsR0FDckRDLHNCQUFzQkosaUJBQWlCSyx5QkFBYyxHQUNyREMsdUJBQXVCTixpQkFBaUJPLDBCQUFlLEdBQ3ZEQyx1QkFBdUJSLGlCQUFpQlMsMEJBQWUsR0FDdkRDLHlCQUF5QlYsaUJBQWlCVyw0QkFBaUIsR0FDM0RDLDBCQUEwQlosaUJBQWlCYSw2QkFBa0IsR0FDN0RDLDBCQUEwQmQs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
@@ -895,4 +895,4 @@ function findMetaTypeByName(name, context) {
895
895
  return metaType;
896
896
  }
897
897
 
898
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlIH0gPSBqc29uO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAganNvbiA9IHR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgIG5hbWUgPSBzdHJpbmc7ICAvLy9cblxuICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVsIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgIGxhYmVsSlNPTiA9IGxhYmVsOyAgLy8vXG5cbiAganNvbiA9IGxhYmVsSlNPTjsgLy8vXG5cbiAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YVR5cGUgfSA9IGpzb247XG5cbiAgaWYgKG1ldGFUeXBlICE9PSBudWxsKSB7XG4gICAganNvbiA9IG1ldGFUeXBlOyAgLy8vXG5cbiAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICBuYW1lID0gc3RyaW5nOyAgLy8vXG5cbiAgICBtZXRhVHlwZSA9IGZpbmRNZXRhVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVjdGlvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZGVkdWN0aW9uIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRGVkdWN0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvbjsgIC8vL1xuXG4gIGpzb24gPSBkZWR1Y3Rpb25KU09OOyAgLy8vXG5cbiAgZGVkdWN0aW9uID0gRGVkdWN0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHNpZ25hdHVyZSA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHNpZ25hdHVyZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgU2lnbmF0dXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlOyAgLy8vXG5cbiAgICBqc29uID0gc2lnbmF0dXJlSlNPTjsgLy8vXG5cbiAgICBzaWduYXR1cmUgPSBTaWduYXR1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc2lnbmF0dXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHByb3Zpc2lvbmFsIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcm92aXNpb25hbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgKHsgY29udGV4dCB9ID0ganNvbik7XG5cbiAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgbW5lbWljQ29udGV4dCA9IE1uZW1pY0NvbnRleHQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzO1xuXG4gIHR5cGVzSlNPTi5mb3JFYWNoKCh0eXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdvYWxzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBnb2FscyB9ID0ganNvbjtcblxuICBjb25zdCB7IEdvYWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBnb2Fsc0pTT04gPSBnb2FsczsgLy8vXG5cbiAgZ29hbHMgPSBnb2Fsc0pTT04ubWFwKChnb2FsSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBnb2FsSlNPTiwgIC8vL1xuICAgICAgICAgIGdvYWwgPSBHb2FsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdvYWw7XG4gIH0pO1xuXG4gIHJldHVybiBnb2Fscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJ1bGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBydWxlc0pTT04gPSBydWxlczsgLy8vXG5cbiAgcnVsZXMgPSBydWxlc0pTT04ubWFwKChydWxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBydWxlSlNPTiwgIC8vL1xuICAgICAgICAgIHJ1bGUgPSBSdWxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH0pO1xuXG4gIHJldHVybiBydWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZnJhbWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRnJhbWUgfSA9IGVsZW1lbnRzLFxuICAgIGZyYW1lc0pTT04gPSBmcmFtZXM7IC8vL1xuXG4gIGZyYW1lcyA9IGZyYW1lc0pTT04ubWFwKChmcmFtZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZnJhbWVKU09OLCAgLy8vXG4gICAgICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsYWJlbEpTT04sIC8vL1xuICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGF4aW9tcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEF4aW9tIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tczsgLy8vXG5cbiAgYXhpb21zID0gYXhpb21zSlNPTi5tYXAoKGF4aW9tSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBheGlvbUpTT04sICAvLy9cbiAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2NoZW1hcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFNjaGVtYSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHNjaGVtYXNKU09OID0gc2NoZW1hczsgLy8vXG5cbiAgc2NoZW1hcyA9IHNjaGVtYXNKU09OLm1hcCgoc2NoZW1hSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzY2hlbWFKU09OLCAgLy8vXG4gICAgICBzY2hlbWEgPSBTY2hlbWEuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9KTtcblxuICByZXR1cm4gc2NoZW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcmVtaXNlc0pTT04gPSBwcmVtaXNlczsgIC8vL1xuXG4gIHByZW1pc2VzID0gcHJlbWlzZXNKU09OLm1hcCgocHJlbWlzZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJlbWlzZUpTT04sIC8vL1xuICAgICAgICAgIHByZW1pc2UgPSBQcmVtaXNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGVxdWFsaXRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzOyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0pTT04ubWFwKChlcXVhbGl0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZXF1YWxpdHlKU09OLCAgLy8vXG4gICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9wZXJ0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllczsgLy8vXG5cbiAgcHJvcGVydGllcyA9IHByb3BlcnRpZXNKU09OLm1hcCgocHJvcGVydHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5SlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5ID0gUHJvcGVydHkuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlZml4TmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwcmVmaXhOYW1lIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcmVmaXhOYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBzdXBlclR5cGVzOiBzdXBlclR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04ubWFwKChzdXBlclR5cGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1cGVyVHlwZUpTT04sICAvLy9cbiAgICAgIHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgbmFtZSA9IHN0cmluZywgIC8vL1xuICAgICAgdHlwZSA9IGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpLFxuICAgICAgc3VwZXJUeXBlID0gdHlwZTsgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGh5cG90aGVzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBIeXBvdGhlc2lzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzOyAgLy8vXG5cbiAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLm1hcCgoaHlwb3RoZXNpc0pTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gaHlwb3RoZXNpc0pTT04sIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXMgPSBIeXBvdGhlc2lzLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXM7XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsganVkZ2VtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IEp1ZGdlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50czsgLy8vXG5cbiAganVkZ2VtZW50cyA9IGp1ZGdlbWVudHNKU09OLm1hcCgoanVkZ2VtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBqdWRnZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzOyAvLy9cblxuICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0pTT04ubWFwKChzdGF0ZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc2VydGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIFNpZ25hdHVyZUFzc2VydGlvbiwgQ29udGFpbmVkQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIERlZmluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzOyAvLy9cblxuICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0pTT04ubWFwKChyZWZlcmVuY2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJlZmVyZW5jZUpTT04sICAvLy9cbiAgICAgIHJlZmVyZW5jZSA9IFJlZmVyZW5jZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH0pO1xuXG4gIHJldHVybiByZWZlcmVuY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHNpZ25hdHVyZXNKU09OID0gc2lnbmF0dXJlczsgLy8vXG5cbiAgc2lnbmF0dXJlcyA9IHNpZ25hdHVyZXNKU09OLm1hcCgoc2lnbmF0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzaWduYXR1cmVKU09OLCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBnZW5lcmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgR2VuZXJhdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZ2VuZXJhdG9yc0pTT04gPSBnZW5lcmF0b3JzOyAvLy9cblxuICBnZW5lcmF0b3JzID0gZ2VuZXJhdG9yc0pTT04ubWFwKChnZW5lcmF0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGdlbmVyYXRvckpTT04sICAvLy9cbiAgICAgICAgICBnZW5lcmF0b3IgPSBHZW5lcmF0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9KTtcblxuICByZXR1cm4gZ2VuZXJhdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25qZWN0dXJlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmplY3R1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlczsgLy8vXG5cbiAgY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0pTT04ubWFwKChjb25qZWN0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25qZWN0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbmplY3R1cmUgPSBDb25qZWN0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb21iaW5hdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbWJpbmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9yczsgLy8vXG5cbiAgY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0pTT04ubWFwKChjb21iaW5hdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb21iaW5hdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3IgPSBDb21iaW5hdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3N1bXB0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgIGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zOyAvLy9cblxuICBhc3N1bXB0aW9ucyA9IGFzc3VtcHRpb25zSlNPTi5tYXAoKGFzc3VtcHRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc3VtcHRpb25KU09OLCAgLy8vXG4gICAgICAgICAgYXNzdW1wdGlvbiA9IEFzc3VtcHRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RyYWludHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cmFpbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uc3RyYWludCB9ID0gZWxlbWVudHMsXG4gICAgY29uc3RyYWludHNKU09OID0gY29uc3RyYWludHM7IC8vL1xuXG4gIGNvbnN0cmFpbnRzID0gY29uc3RyYWludHNKU09OLm1hcCgoY29uc3RyYWludEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uc3RyYWludEpTT04sICAvLy9cbiAgICAgIGNvbnN0cmFpbnQgPSBDb25zdHJhaW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJhaW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZVByZWZpeGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZVByZWZpeCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXM7IC8vL1xuXG4gIHR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0pTT04ubWFwKCh0eXBlUHJlZml4SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlUHJlZml4SlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXggPSBUeXBlUHJlZml4LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cnVjdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG5cbiAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTi5tYXAoKGNvbnN0cnVjdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdXBwb3NpdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdXBwb3NpdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnM7ICAvLy9cblxuICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLm1hcCgoc3VwcG9zaXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1cHBvc2l0aW9uSlNPTiwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb24gPSBTdXBwb3NpdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN1YnN0aXR1dGlvbnMgfSA9IGpzb247ICAvLy9cblxuICBjb25zdCBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnM7IC8vL1xuXG4gIHN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zSlNPTi5tYXAoKHN1YnN0aXR1dGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3Vic3RpdHV0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbkZyb21TdWJzdGl0dXRpb25KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzOyAvLy9cblxuICBtZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlc0pTT04ubWFwKChtZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IHsgY29udGV4dHMgfSA9IGpzb247XG5cbiAgY29uc3QgbW5lbWljQ29udGV4dHMgPSBjb250ZXh0cy5tYXAoKGNvbnRleHQpID0+IHtcbiAgICBqc29uID0gY29udGV4dDsgLy8vXG5cbiAgICBjb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gICAgY29uc3QgbW5lbWljQ29udGV4dCA9IE1uZW1pY0NvbnRleHQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbW5lbWljQ29udGV4dDsgIC8vL1xuICB9KTtcblxuICByZXR1cm4gbW5lbWljQ29udGV4dHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZFZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZGVjbGFyZWRWYXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlY2xhcmVkVmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkVmFyaWFibGVzOyAvLy9cblxuICBkZWNsYXJlZFZhcmlhYmxlcyA9IGRlY2xhcmVkVmFyaWFibGVzSlNPTi5tYXAoKGRlY2xhcmVkVmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGRlY2xhcmVkVmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlID0gdmFyaWFibGU7ICAvLy9cblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlY2xhcmVkTWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXM7IC8vL1xuXG4gIGRlY2xhcmVkTWV0YXZhcmlhYmxlcyA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04ubWFwKChkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlOyAgLy8vXG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlVG9UeXBlSlNPTih0eXBlKSB7XG4gIGxldCB0eXBlSlNPTiA9IG51bGw7XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBhYnJpZGdlZCA9IHRydWU7XG5cbiAgICB0eXBlSlNPTiA9IHR5cGUudG9KU09OKGFicmlkZ2VkKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsVG9MYWJlbEpTT04obGFiZWwpIHtcbiAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgcmV0dXJuIGxhYmVsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlVG9NZXRhVHlwZUpTT04obWV0YVR5cGUpIHtcbiAgY29uc3QgbWV0YVR5cGVKU09OID0gKG1ldGFUeXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gbWV0YVR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVKU09OID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTihjb25jbHVzaW9uKSB7XG4gIGNvbnN0IGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbi50b0pTT04oKTtcblxuICByZXR1cm4gY29uY2x1c2lvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHByb3Zpc2lvbmFsKSB7XG4gIGNvbnN0IHByb3Zpc2lvbmFsSlNPTiA9IHByb3Zpc2lvbmFsOyAgLy8vXG5cbiAgcmV0dXJuIHByb3Zpc2lvbmFsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRUb01uZW1pY0NvbnRleHRKU09OKG1uZW1pY0NvbnRleHQpIHtcbiAgY29uc3QgbW5lbWljQ29udGV4dEpTT04gPSBtbmVtaWNDb250ZXh0LnRvSlNPTigpO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbkZyb21TdWJzdGl0dXRpb25KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBUZXJtU3Vic3RpdHV0aW9uLCBGcmFtZVN1YnN0aXR1dGlvbiwgU3RhdGVtZW50U3Vic3RpdHV0aW9uLCBSZWZlcmVuY2VTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBUZXJtU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBGcmFtZVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVtZW50U3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2VTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcykge1xuICBjb25zdCB0ZXJtc0pTT04gPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gdGVybUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnb2Fsc1RvR29hbHNKU09OKGdvYWxzKSB7XG4gIGNvbnN0IGdvYWxzSlNPTiA9IGdvYWxzLm1hcCgoZ29hbCkgPT4ge1xuICAgIGNvbnN0IGdvYWxKU09OID0gZ29hbC50b0pTT04oKTtcblxuICAgIHJldHVybiBnb2FsSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGdvYWxzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzVG9SdWxlc0pTT04ocnVsZXMpIHtcbiAgY29uc3QgcnVsZXNKU09OID0gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgY29uc3QgcnVsZUpTT04gPSBydWxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHJ1bGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzVG9MYWJlbHNKU09OKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzLm1hcCgobGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgIHJldHVybiBsYWJlbEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVzVG9GcmFtZXNKU09OKGZyYW1lcykge1xuICBjb25zdCBmcmFtZXNKU09OID0gZnJhbWVzLm1hcCgoZnJhbWUpID0+IHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZS50b0pTT04oKTtcblxuICAgIHJldHVybiBmcmFtZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zVG9BeGlvbXNKU09OKGF4aW9tcykge1xuICBjb25zdCBheGlvbXNKU09OID0gYXhpb21zLm1hcCgoYXhpb20pID0+IHtcbiAgICBjb25zdCBheGlvbUpTT04gPSBheGlvbS50b0pTT04oKTtcblxuICAgIHJldHVybiBheGlvbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hc1RvU2NoZW1hc0pTT04oc2NoZW1hcykge1xuICBjb25zdCBzY2hlbWFzSlNPTiA9IHNjaGVtYXMubWFwKChzY2hlbWEpID0+IHtcbiAgICBjb25zdCBzY2hlbWFKU09OID0gc2NoZW1hLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHNjaGVtYUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzY2hlbWFzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzVG9QcmVtaXNlc0pTT04ocHJlbWlzZXMpIHtcbiAgY29uc3QgcHJlbWlzZXNKU09OID0gcHJlbWlzZXMubWFwKChwcmVtaXNlKSA9PiB7XG4gICAgY29uc3QgcHJlbWlzZUpTT04gPSBwcmVtaXNlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByZW1pc2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNUb1RoZW9yZW1zSlNPTih0aGVvcmVtcykge1xuICBjb25zdCB0aGVvcmVtc0pTT04gPSB0aGVvcmVtcy5tYXAoKHRoZW9yZW0pID0+IHtcbiAgICBjb25zdCB0aGVvcmVtSlNPTiA9IHRoZW9yZW0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gdGhlb3JlbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTihoeXBvdGhlc2VzKSB7XG4gIGNvbnN0IGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlcy5tYXAoKGh5cG90aGVzaXMpID0+IHtcbiAgICBjb25zdCBoeXBvdGhlc2lzSlNPTiA9IGh5cG90aGVzaXMudG9KU09OKCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpc0pTT047XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OKHByZWZpeG5hbWUpIHtcbiAgY29uc3QgcHJlZml4TmFtZUpTT04gPSBwcmVmaXhuYW1lOyAgLy8vXG5cbiAgcmV0dXJuIHByZWZpeE5hbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04oc3VwZXJUeXBlcykge1xuICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICBjb25zdCBhYnJpZGdlZCA9IHRydWUsXG4gICAgICBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlLnRvSlNPTihhYnJpZGdlZCk7XG5cbiAgICByZXR1cm4gc3VwZXJUeXBlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc1RvUHJvcGVydGllc0pTT04ocHJvcGVydGllcykge1xuICBjb25zdCBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXMubWFwKChwcm9wZXJ0eSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5SlNPTiA9IHByb3BlcnR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04oanVkZ2VtZW50cykge1xuICBjb25zdCBqdWRnZW1lbnRzSlNPTiA9IGp1ZGdlbWVudHMubWFwKChqdWRnZW1lbnQpID0+IHtcbiAgICBjb25zdCBqdWRnZW1lbnRKU09OID0ganVkZ2VtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBqdWRnZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OKGVxdWFsaXRpZXMpIHtcbiAgY29uc3QgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzLm1hcCgoZXF1YWxpdHkpID0+IHtcbiAgICBjb25zdCBlcXVhbGl0eUpTT04gPSBlcXVhbGl0eS50b0pTT04oKTtcblxuICAgIHJldHVybiBlcXVhbGl0eUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OKHN0YXRlbWVudHMpIHtcbiAgY29uc3Qgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudC50b0pTT04oKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVzVG9TaWduYXR1cmVzSlNPTihzaWduYXR1cmVzKSB7XG4gIGNvbnN0IHNpZ25hdHVyZXNKU09OID0gc2lnbmF0dXJlcy5tYXAoKHNpZ25hdHVyZSkgPT4ge1xuICAgIGNvbnN0IHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04oYXNzZXJ0aW9ucykge1xuICBjb25zdCBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnMubWFwKChhc3NlcnRpb24pID0+IHtcbiAgICBjb25zdCBhc3NlcnRpb25KU09OID0gYXNzZXJ0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OKHJlZmVyZW5jZXMpIHtcbiAgY29uc3QgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzLm1hcCgocmVmZXJlbmNlKSA9PiB7XG4gICAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICAgIHJldHVybiByZWZlcmVuY2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTihnZW5lcmF0b3JzKSB7XG4gIGNvbnN0IGdlbmVyYXRvcnNKU09OID0gZ2VuZXJhdG9ycy5tYXAoKGdlbmVyYXRvcikgPT4ge1xuICAgIGNvbnN0IGdlbmVyYXRvckpTT04gPSBnZW5lcmF0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGdlbmVyYXRvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RyYWludHNUb0NvbnN0cmFpbnRzSlNPTihjb25zdHJhaW50cykge1xuICBjb25zdCBjb25zdHJhaW50c0pTT04gPSBjb25zdHJhaW50cy5tYXAoKGNvbnN0cmFpbnQpID0+IHtcbiAgICBjb25zdCBjb25zdHJhaW50SlNPTiA9IGNvbnN0cmFpbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJhaW50c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OKGNvbmplY3R1cmVzKSB7XG4gIGNvbnN0IGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzLm1hcCgoY29uamVjdHVyZSkgPT4ge1xuICAgIGNvbnN0IGNvbmplY3R1cmVKU09OID0gY29uamVjdHVyZS50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04oY29tYmluYXRvcnMpIHtcbiAgY29uc3QgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnMubWFwKChjb21iaW5hdG9yKSA9PiB7XG4gICAgY29uc3QgY29tYmluYXRvckpTT04gPSBjb21iaW5hdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTihhc3N1bXB0aW9ucykge1xuICBjb25zdCBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9ucy5tYXAoKGFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBhc3N1bXB0aW9uSlNPTiA9IGFzc3VtcHRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04oc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnMubWFwKChzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uSlNPTiA9IHN1cHBvc2l0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04oY29uc3RydWN0b3JzKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnMubWFwKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ySlNPTiA9IGNvbnN0cnVjdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04odHlwZVByZWZpeGVzKSB7XG4gIGNvbnN0IHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXMubWFwKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgY29uc3QgdHlwZVByZWZpeEpTT04gPSB0eXBlUHJlZml4LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLm1hcCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uSlNPTiA9IHN1YnN0aXR1dGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlcy5tYXAoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTihtbmVtaWNDb250ZXh0cykge1xuICBjb25zdCBtbmVtaWNDb250ZXh0c0pTT04gPSBtbmVtaWNDb250ZXh0cy5tYXAoKG1uZW1pY0NvbnRleHQpID0+IHtcbiAgICBjb25zdCBtbmVtaWNDb250ZXh0SlNPTiA9IG1uZW1pY0NvbnRleHQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbW5lbWljQ29udGV4dEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OKGRlY2xhcmVkVmFyaWFibGVzKSB7XG4gIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkVmFyaWFibGVzLm1hcCgoZGVjbGFyZWRWYXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVKU09OID0gZGVjbGFyZWRWYXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTihkZWNsYXJlZE1ldGF2YXJpYWJsZXMpIHtcbiAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlcy5tYXAoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTjtcbn1cblxuZnVuY3Rpb24gZmluZFR5cGVCeU5hbWUobmFtZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlTmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZnVuY3Rpb24gZmluZE1ldGFUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpIHtcbiAgY29uc3QgbWV0YVR5cGVOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICBtZXRhVHlwZSA9IGNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG4iXSwibmFtZXMiOlsiYXNzZXJ0aW9uc0Zyb21KU09OIiwiYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04iLCJhc3N1bXB0aW9uc0Zyb21KU09OIiwiYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTiIsImF4aW9tc0Zyb21KU09OIiwiYXhpb21zVG9BeGlvbXNKU09OIiwiY29tYmluYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJjb25jbHVzaW9uRnJvbUpTT04iLCJjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiIsImNvbmplY3R1cmVzRnJvbUpTT04iLCJjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OIiwiY29uc3RyYWludHNGcm9tSlNPTiIsImNvbnN0cmFpbnRzVG9Db25zdHJhaW50c0pTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0Zyb21KU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWR1Y3Rpb25Gcm9tSlNPTiIsImRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTiIsImVxdWFsaXRpZXNGcm9tSlNPTiIsImVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OIiwiZnJhbWVzRnJvbUpTT04iLCJmcmFtZXNUb0ZyYW1lc0pTT04iLCJnZW5lcmF0b3JzRnJvbUpTT04iLCJnZW5lcmF0b3JzVG9HZW5lcmF0b3JzSlNPTiIsImdvYWxzRnJvbUpTT04iLCJnb2Fsc1RvR29hbHNKU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJqdWRnZW1lbnRzRnJvbUpTT04iLCJqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTiIsImxhYmVsRnJvbUpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwibGFiZWxzRnJvbUpTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwibW5lbWljQ29udGV4dEZyb21KU09OIiwibW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04iLCJtbmVtaWNDb250ZXh0c0Zyb21KU09OIiwibW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTiIsInByZWZpeE5hbWVGcm9tSlNPTiIsInByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9wZXJ0aWVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIiwicmVmZXJlbmNlc0Zyb21KU09OIiwicmVmZXJlbmNlc1RvUmVmZXJlbmNlc0pTT04iLCJydWxlc0Zyb21KU09OIiwicnVsZXNUb1J1bGVzSlNPTiIsInNjaGVtYXNGcm9tSlNPTiIsInNjaGVtYXNUb1NjaGVtYXNKU09OIiwic2lnbmF0dXJlRnJvbUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVzRnJvbUpTT04iLCJzaWduYXR1cmVzVG9TaWduYXR1cmVzSlNPTiIsInN0YXRlbWVudHNGcm9tSlNPTiIsInN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OIiwic3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbkpTT04iLCJzdWJzdGl0dXRpb25zRnJvbUpTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJ0ZXJtc0Zyb21KU09OIiwidGVybXNUb1Rlcm1zSlNPTiIsInRoZW9yZW1zRnJvbUpTT04iLCJ0aGVvcmVtc1RvVGhlb3JlbXNKU09OIiwidHlwZUZyb21KU09OIiwidHlwZVByZWZpeGVzRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04iLCJ0eXBlVG9UeXBlSlNPTiIsInR5cGVzRnJvbUpTT04iLCJ0eXBlc1RvVHlwZXNKU09OIiwianNvbiIsImNvbnRleHQiLCJ0eXBlIiwic3RyaW5nIiwibmFtZSIsImZpbmRUeXBlQnlOYW1lIiwibGFiZWwiLCJMYWJlbCIsImVsZW1lbnRzIiwibGFiZWxKU09OIiwiZnJvbUpTT04iLCJtZXRhVHlwZSIsImZpbmRNZXRhVHlwZUJ5TmFtZSIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwiY29uY2x1c2lvbiIsIkNvbmNsdXNpb24iLCJjb25jbHVzaW9uSlNPTiIsInByb3Zpc2lvbmFsIiwicmVsZWFzZUNvbnRleHQiLCJtbmVtaWNDb250ZXh0IiwiTW5lbWljQ29udGV4dCIsInR5cGVzIiwidHlwZXNKU09OIiwiVHlwZSIsImZvckVhY2giLCJ0eXBlSlNPTiIsInB1c2giLCJ0ZXJtcyIsIlRlcm0iLCJ0ZXJtc0pTT04iLCJtYXAiLCJ0ZXJtSlNPTiIsInRlcm0iLCJnb2FscyIsIkdvYWwiLCJnb2Fsc0pTT04iLCJnb2FsSlNPTiIsImdvYWwiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJmcmFtZXMiLCJGcmFtZSIsImZyYW1lc0pTT04iLCJmcmFtZUpTT04iLCJmcmFtZSIsImxhYmVscyIsImxhYmVsc0pTT04iLCJheGlvbXMiLCJBeGlvbSIsImF4aW9tc0pTT04iLCJheGlvbUpTT04iLCJheGlvbSIsInNjaGVtYXMiLCJTY2hlbWEiLCJzY2hlbWFzSlNPTiIsInNjaGVtYUpTT04iLCJzY2hlbWEiLCJwcmVtaXNlcyIsIlByZW1pc2UiLCJwcmVtaXNlc0pTT04iLCJwcmVtaXNlSlNPTiIsInByZW1pc2UiLCJ0aGVvcmVtcyIsIlRoZW9yZW0iLCJ0aGVvcmVtc0pTT04iLCJ0aGVvcmVtSlNPTiIsInRoZW9yZW0iLCJlcXVhbGl0aWVzIiwiRXF1YWxpdHkiLCJlcXVhbGl0aWVzSlNPTiIsImVxdWFsaXR5SlNPTiIsImVxdWFsaXR5IiwicHJvcGVydGllcyIsIlByb3BlcnR5IiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eUpTT04iLCJwcm9wZXJ0eSIsInByZWZpeE5hbWUiLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc0pTT04iLCJzdXBlclR5cGVKU09OIiwic3VwZXJUeXBlIiwiaHlwb3RoZXNlcyIsIkh5cG90aGVzaXMiLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzaXNKU09OIiwiaHlwb3RoZXNpcyIsImp1ZGdlbWVudHMiLCJKdWRnZW1lbnQiLCJqdWRnZW1lbnRzSlNPTiIsImp1ZGdlbWVudEpTT04iLCJqdWRnZW1lbnQiLCJzdGF0ZW1lbnRzIiwiU3RhdGVtZW50Iiwic3RhdGVtZW50c0pTT04iLCJzdGF0ZW1lbnRKU09OIiwic3RhdGVtZW50IiwiYXNzZXJ0aW9ucyIsIlR5cGVBc3NlcnRpb24iLCJEZWZpbmVkQXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJTdWJwcm9vZkFzc2VydGlvbiIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkNvbnRhaW5lZEFzc2VydGlvbiIsImFzc2VydGlvbnNKU09OIiwiYXNzZXJ0aW9uSlNPTiIsImFzc2VydGlvbiIsInJlZmVyZW5jZXMiLCJSZWZlcmVuY2UiLCJyZWZlcmVuY2VzSlNPTiIsInJlZmVyZW5jZUpTT04iLCJyZWZlcmVuY2UiLCJzaWduYXR1cmVzIiwic2lnbmF0dXJlc0pTT04iLCJnZW5lcmF0b3JzIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yc0pTT04iLCJnZW5lcmF0b3JKU09OIiwiZ2VuZXJhdG9yIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiYXNzdW1wdGlvbnMiLCJBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbnNKU09OIiwiYXNzdW1wdGlvbkpTT04iLCJhc3N1bXB0aW9uIiwiY29uc3RyYWludHMiLCJDb25zdHJhaW50IiwiY29uc3RyYWludHNKU09OIiwiY29uc3RyYWludEpTT04iLCJjb25zdHJhaW50IiwidHlwZVByZWZpeGVzIiwiVHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4SlNPTiIsInR5cGVQcmVmaXgiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnNKU09OIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVzSlNPTiIsIm1ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGUiLCJjb250ZXh0cyIsIm1uZW1pY0NvbnRleHRzIiwiZGVjbGFyZWRWYXJpYWJsZXMiLCJWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwiYWJyaWRnZWQiLCJ0b0pTT04iLCJtZXRhVHlwZUpTT04iLCJwcm92aXNpb25hbEpTT04iLCJtbmVtaWNDb250ZXh0SlNPTiIsIlRlcm1TdWJzdGl0dXRpb24iLCJGcmFtZVN1YnN0aXR1dGlvbiIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsIlJlZmVyZW5jZVN1YnN0aXR1dGlvbiIsInByZWZpeG5hbWUiLCJwcmVmaXhOYW1lSlNPTiIsIm1uZW1pY0NvbnRleHRzSlNPTiIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWdYZ0JBO2VBQUFBOztRQTZmQUM7ZUFBQUE7O1FBeFpBQztlQUFBQTs7UUFvZEFDO2VBQUFBOztRQS90QkFDO2VBQUFBOztRQThpQkFDO2VBQUFBOztRQW5UQUM7ZUFBQUE7O1FBMGRBQztlQUFBQTs7UUFuMUJBQztlQUFBQTs7UUFvbEJBQztlQUFBQTs7UUEzT0FDO2VBQUFBOztRQWdlQUM7ZUFBQUE7O1FBaGJBQztlQUFBQTs7UUFzYUFDO2VBQUFBOztRQXRZQUM7ZUFBQUE7O1FBd2JBQztlQUFBQTs7UUF0VkFDO2VBQUFBOztRQWtaQUM7ZUFBQUE7O1FBbmFBQztlQUFBQTs7UUF5WkFDO2VBQUFBOztRQS83QkFDO2VBQUFBOztRQWttQkFDO2VBQUFBOztRQXhZQUM7ZUFBQUE7O1FBcWtCQUM7ZUFBQUE7O1FBcnFCQUM7ZUFBQUE7O1FBb2tCQUM7ZUFBQUE7O1FBelVB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
898
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlIH0gPSBqc29uO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAganNvbiA9IHR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgIG5hbWUgPSBzdHJpbmc7ICAvLy9cblxuICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVsIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbEpTT04gPSBsYWJlbDsgIC8vL1xuXG4gIGpzb24gPSBsYWJlbEpTT047IC8vL1xuXG4gIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlZHVjdGlvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IERlZHVjdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb247ICAvLy9cblxuICBqc29uID0gZGVkdWN0aW9uSlNPTjsgIC8vL1xuXG4gIGRlZHVjdGlvbiA9IERlZHVjdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzaWduYXR1cmUgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAganNvbiA9IHNpZ25hdHVyZUpTT047IC8vL1xuXG4gICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmNsdXNpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25jbHVzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uOyAgLy8vXG5cbiAganNvbiA9IGNvbmNsdXNpb25KU09OOyAgLy8vXG5cbiAgY29uY2x1c2lvbiA9IENvbmNsdXNpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwcm92aXNpb25hbCB9ID0ganNvbjtcblxuICByZXR1cm4gcHJvdmlzaW9uYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICh7IGNvbnRleHQgfSA9IGpzb24pO1xuXG4gIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICBjb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNGcm9tSlNPTihqc29uLCB0eXBlcywgY29udGV4dCkge1xuICBjb25zdCB7IHR5cGVzOiB0eXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cztcblxuICB0eXBlc0pTT04uZm9yRWFjaCgodHlwZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHRlcm1zSlNPTiA9IHRlcm1zOyAvLy9cblxuICB0ZXJtcyA9IHRlcm1zSlNPTi5tYXAoKHRlcm1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRlcm1KU09OLCAgLy8vXG4gICAgICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnb2Fsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZ29hbHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBHb2FsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZ29hbHNKU09OID0gZ29hbHM7IC8vL1xuXG4gIGdvYWxzID0gZ29hbHNKU09OLm1hcCgoZ29hbEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZ29hbEpTT04sICAvLy9cbiAgICAgICAgICBnb2FsID0gR29hbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnb2FsO1xuICB9KTtcblxuICByZXR1cm4gZ29hbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgICAgICBydWxlID0gUnVsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGZyYW1lcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEZyYW1lIH0gPSBlbGVtZW50cyxcbiAgICBmcmFtZXNKU09OID0gZnJhbWVzOyAvLy9cblxuICBmcmFtZXMgPSBmcmFtZXNKU09OLm1hcCgoZnJhbWVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGZyYW1lSlNPTiwgIC8vL1xuICAgICAgICAgIGZyYW1lID0gRnJhbWUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVscyB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gIGxhYmVscyA9IGxhYmVsc0pTT04ubWFwKChsYWJlbEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBheGlvbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBeGlvbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGF4aW9tc0pTT04gPSBheGlvbXM7IC8vL1xuXG4gIGF4aW9tcyA9IGF4aW9tc0pTT04ubWFwKChheGlvbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXhpb21KU09OLCAgLy8vXG4gICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjaGVtYXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHNjaGVtYXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTY2hlbWEgfSA9IGVsZW1lbnRzLFxuICAgICAgICBzY2hlbWFzSlNPTiA9IHNjaGVtYXM7IC8vL1xuXG4gIHNjaGVtYXMgPSBzY2hlbWFzSlNPTi5tYXAoKHNjaGVtYUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc2NoZW1hSlNPTiwgIC8vL1xuICAgICAgc2NoZW1hID0gU2NoZW1hLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfSk7XG5cbiAgcmV0dXJuIHNjaGVtYXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJlbWlzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcmVtaXNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJlbWlzZXNKU09OID0gcHJlbWlzZXM7ICAvLy9cblxuICBwcmVtaXNlcyA9IHByZW1pc2VzSlNPTi5tYXAoKHByZW1pc2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByZW1pc2VKU09OLCAvLy9cbiAgICAgICAgICBwcmVtaXNlID0gUHJlbWlzZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcmVtaXNlO1xuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUaGVvcmVtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGhlb3JlbXNKU09OID0gdGhlb3JlbXM7IC8vL1xuXG4gIHRoZW9yZW1zID0gdGhlb3JlbXNKU09OLm1hcCgodGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGhlb3JlbUpTT04sICAvLy9cbiAgICAgICAgICB0aGVvcmVtID0gVGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBlcXVhbGl0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRXF1YWxpdHkgfSA9IGVsZW1lbnRzLFxuICAgIGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllczsgLy8vXG5cbiAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNKU09OLm1hcCgoZXF1YWxpdHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGVxdWFsaXR5SlNPTiwgIC8vL1xuICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXM7IC8vL1xuXG4gIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTi5tYXAoKHByb3BlcnR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eUpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeE5hbWVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcHJlZml4TmFtZSB9ID0ganNvbjtcblxuICByZXR1cm4gcHJlZml4TmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc3VwZXJUeXBlczogc3VwZXJUeXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3Qgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLm1hcCgoc3VwZXJUeXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgIG5hbWUgPSBzdHJpbmcsICAvLy9cbiAgICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSxcbiAgICAgIHN1cGVyVHlwZSA9IHR5cGU7IC8vL1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBoeXBvdGhlc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSHlwb3RoZXNpcyB9ID0gZWxlbWVudHMsXG4gICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlczsgIC8vL1xuXG4gIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTi5tYXAoKGh5cG90aGVzaXNKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGh5cG90aGVzaXNKU09OLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzID0gSHlwb3RoZXNpcy5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGp1ZGdlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGp1ZGdlbWVudHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBKdWRnZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBqdWRnZW1lbnRzSlNPTiA9IGp1ZGdlbWVudHM7IC8vL1xuXG4gIGp1ZGdlbWVudHMgPSBqdWRnZW1lbnRzSlNPTi5tYXAoKGp1ZGdlbWVudEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0ganVkZ2VtZW50SlNPTiwgIC8vL1xuICAgICAgICAgIGp1ZGdlbWVudCA9IEp1ZGdlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBqdWRnZW1lbnQ7XG4gIH0pO1xuXG4gIHJldHVybiBqdWRnZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50czsgLy8vXG5cbiAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHNKU09OLm1hcCgoc3RhdGVtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdGF0ZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3NlcnRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZUFzc2VydGlvbiwgRGVmaW5lZEFzc2VydGlvbiwgUHJvcGVydHlBc3NlcnRpb24sIFN1YnByb29mQXNzZXJ0aW9uLCBTaWduYXR1cmVBc3NlcnRpb24sIENvbnRhaW5lZEFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGFzc2VydGlvbnNKU09OID0gYXNzZXJ0aW9uczsgLy8vXG5cbiAgYXNzZXJ0aW9ucyA9IGFzc2VydGlvbnNKU09OLm1hcCgoYXNzZXJ0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3NlcnRpb25KU09OLCAgLy8vXG4gICAgICAgICAgYXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBEZWZpbmVkQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5QXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFN1YnByb29mQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZUFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBDb250YWluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSZWZlcmVuY2UgfSA9IGVsZW1lbnRzLFxuICAgIHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlczsgLy8vXG5cbiAgcmVmZXJlbmNlcyA9IHJlZmVyZW5jZXNKU09OLm1hcCgocmVmZXJlbmNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSByZWZlcmVuY2VKU09OLCAgLy8vXG4gICAgICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHNpZ25hdHVyZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBzaWduYXR1cmVzSlNPTiA9IHNpZ25hdHVyZXM7IC8vL1xuXG4gIHNpZ25hdHVyZXMgPSBzaWduYXR1cmVzSlNPTi5tYXAoKHNpZ25hdHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc2lnbmF0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIHNpZ25hdHVyZSA9IFNpZ25hdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBzaWduYXR1cmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZ2VuZXJhdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IEdlbmVyYXRvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGdlbmVyYXRvcnNKU09OID0gZ2VuZXJhdG9yczsgLy8vXG5cbiAgZ2VuZXJhdG9ycyA9IGdlbmVyYXRvcnNKU09OLm1hcCgoZ2VuZXJhdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBnZW5lcmF0b3JKU09OLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhdG9yID0gR2VuZXJhdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGdlbmVyYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uamVjdHVyZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25qZWN0dXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXM7IC8vL1xuXG4gIGNvbmplY3R1cmVzID0gY29uamVjdHVyZXNKU09OLm1hcCgoY29uamVjdHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uamVjdHVyZUpTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlID0gQ29uamVjdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29tYmluYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb21iaW5hdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnM7IC8vL1xuXG4gIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLm1hcCgoY29tYmluYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29tYmluYXRvckpTT04sICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yID0gQ29tYmluYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzdW1wdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9uczsgLy8vXG5cbiAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT04ubWFwKChhc3N1bXB0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3N1bXB0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb24gPSBBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cmFpbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25zdHJhaW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cmFpbnQgfSA9IGVsZW1lbnRzLFxuICAgIGNvbnN0cmFpbnRzSlNPTiA9IGNvbnN0cmFpbnRzOyAvLy9cblxuICBjb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzSlNPTi5tYXAoKGNvbnN0cmFpbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbnN0cmFpbnRKU09OLCAgLy8vXG4gICAgICBjb25zdHJhaW50ID0gQ29uc3RyYWludC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9KTtcblxuICByZXR1cm4gY29uc3RyYWludHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGVQcmVmaXhlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGVQcmVmaXggfSA9IGVsZW1lbnRzLFxuICAgICAgICB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzOyAvLy9cblxuICB0eXBlUHJlZml4ZXMgPSB0eXBlUHJlZml4ZXNKU09OLm1hcCgodHlwZVByZWZpeEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZVByZWZpeEpTT04sICAvLy9cbiAgICAgICAgICB0eXBlUHJlZml4ID0gVHlwZVByZWZpeC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25zdHJ1Y3RvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJ1Y3RvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnM7IC8vL1xuXG4gIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04ubWFwKChjb25zdHJ1Y3RvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uc3RydWN0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zOyAvLy9cblxuICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04ubWFwKChzdWJzdGl0dXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICBjb25zdCB7IGNvbnRleHRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzID0gY29udGV4dHMubWFwKChjb250ZXh0KSA9PiB7XG4gICAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHJlbGVhc2VDb250ZXh0OyAvLy9cblxuICAgIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7ICAvLy9cbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlY2xhcmVkVmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlczsgLy8vXG5cbiAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlc0pTT04ubWFwKChkZWNsYXJlZFZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBkZWNsYXJlZFZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzOyAvLy9cblxuICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvVHlwZUpTT04odHlwZSkge1xuICBsZXQgdHlwZUpTT04gPSBudWxsO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgY29uc3QgYWJyaWRnZWQgPSB0cnVlO1xuXG4gICAgdHlwZUpTT04gPSB0eXBlLnRvSlNPTihhYnJpZGdlZCk7XG4gIH1cblxuICByZXR1cm4gdHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbFRvTGFiZWxKU09OKGxhYmVsKSB7XG4gIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gIHJldHVybiBsYWJlbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZVRvTWV0YVR5cGVKU09OKG1ldGFUeXBlKSB7XG4gIGNvbnN0IG1ldGFUeXBlSlNPTiA9IChtZXRhVHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFUeXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTihkZWR1Y3Rpb24pIHtcbiAgY29uc3QgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvbi50b0pTT04oKTtcblxuICByZXR1cm4gZGVkdWN0aW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTihzaWduYXR1cmUpIHtcbiAgY29uc3Qgc2lnbmF0dXJlSlNPTiA9IChzaWduYXR1cmUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzaWduYXR1cmVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04oY29uY2x1c2lvbikge1xuICBjb25zdCBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb24udG9KU09OKCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTihwcm92aXNpb25hbCkge1xuICBjb25zdCBwcm92aXNpb25hbEpTT04gPSBwcm92aXNpb25hbDsgIC8vL1xuXG4gIHJldHVybiBwcm92aXNpb25hbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0VG9NbmVtaWNDb250ZXh0SlNPTihtbmVtaWNDb250ZXh0KSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICByZXR1cm4gbW5lbWljQ29udGV4dEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVGVybVN1YnN0aXR1dGlvbiwgRnJhbWVTdWJzdGl0dXRpb24sIFN0YXRlbWVudFN1YnN0aXR1dGlvbiwgUmVmZXJlbmNlU3Vic3RpdHV0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlbWVudFN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc1RvVHlwZXNKU09OKHR5cGVzKSB7XG4gIGNvbnN0IHR5cGVzSlNPTiA9IHR5cGVzLm1hcCgodHlwZSkgPT4ge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZS50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zVG9UZXJtc0pTT04odGVybXMpIHtcbiAgY29uc3QgdGVybXNKU09OID0gdGVybXMubWFwKCh0ZXJtKSA9PiB7XG4gICAgY29uc3QgdGVybUpTT04gPSB0ZXJtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHRlcm1KU09OO1xuICB9KTtcblxuICByZXR1cm4gdGVybXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ29hbHNUb0dvYWxzSlNPTihnb2Fscykge1xuICBjb25zdCBnb2Fsc0pTT04gPSBnb2Fscy5tYXAoKGdvYWwpID0+IHtcbiAgICBjb25zdCBnb2FsSlNPTiA9IGdvYWwudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZ29hbEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBnb2Fsc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc1RvUnVsZXNKU09OKHJ1bGVzKSB7XG4gIGNvbnN0IHJ1bGVzSlNPTiA9IHJ1bGVzLm1hcCgocnVsZSkgPT4ge1xuICAgIGNvbnN0IHJ1bGVKU09OID0gcnVsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBydWxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1RvTGFiZWxzSlNPTihsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbGFiZWxKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lc1RvRnJhbWVzSlNPTihmcmFtZXMpIHtcbiAgY29uc3QgZnJhbWVzSlNPTiA9IGZyYW1lcy5tYXAoKGZyYW1lKSA9PiB7XG4gICAgY29uc3QgZnJhbWVKU09OID0gZnJhbWUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZnJhbWVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZnJhbWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc1RvQXhpb21zSlNPTihheGlvbXMpIHtcbiAgY29uc3QgYXhpb21zSlNPTiA9IGF4aW9tcy5tYXAoKGF4aW9tKSA9PiB7XG4gICAgY29uc3QgYXhpb21KU09OID0gYXhpb20udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXhpb21KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjaGVtYXNUb1NjaGVtYXNKU09OKHNjaGVtYXMpIHtcbiAgY29uc3Qgc2NoZW1hc0pTT04gPSBzY2hlbWFzLm1hcCgoc2NoZW1hKSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hSlNPTiA9IHNjaGVtYS50b0pTT04oKTtcblxuICAgIHJldHVybiBzY2hlbWFKU09OO1xuICB9KTtcblxuICByZXR1cm4gc2NoZW1hc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1RvUHJlbWlzZXNKU09OKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzSlNPTiA9IHByZW1pc2VzLm1hcCgocHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VKU09OID0gcHJlbWlzZS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcmVtaXNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhlb3JlbXMpIHtcbiAgY29uc3QgdGhlb3JlbXNKU09OID0gdGhlb3JlbXMubWFwKCh0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgdGhlb3JlbUpTT04gPSB0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1KU09OO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04oaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXMubWFwKChoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc0pTT04gPSBoeXBvdGhlc2lzLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNKU09OO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhuYW1lVG9QcmV2aXhOYW1lSlNPTihwcmVmaXhuYW1lKSB7XG4gIGNvbnN0IHByZWZpeE5hbWVKU09OID0gcHJlZml4bmFtZTsgIC8vL1xuXG4gIHJldHVybiBwcmVmaXhOYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHN1cGVyVHlwZXMpIHtcbiAgY29uc3Qgc3VwZXJUeXBlc0pTT04gPSBzdXBlclR5cGVzLm1hcCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgY29uc3QgYWJyaWRnZWQgPSB0cnVlLFxuICAgICAgc3VwZXJUeXBlSlNPTiA9IHN1cGVyVHlwZS50b0pTT04oYWJyaWRnZWQpO1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHByb3BlcnRpZXMpIHtcbiAgY29uc3QgcHJvcGVydGllc0pTT04gPSBwcm9wZXJ0aWVzLm1hcCgocHJvcGVydHkpID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eUpTT04gPSBwcm9wZXJ0eS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcm9wZXJ0eUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGp1ZGdlbWVudHNUb0p1ZGdlbWVudHNKU09OKGp1ZGdlbWVudHMpIHtcbiAgY29uc3QganVkZ2VtZW50c0pTT04gPSBqdWRnZW1lbnRzLm1hcCgoanVkZ2VtZW50KSA9PiB7XG4gICAgY29uc3QganVkZ2VtZW50SlNPTiA9IGp1ZGdlbWVudC50b0pTT04oKTtcblxuICAgIHJldHVybiBqdWRnZW1lbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4ganVkZ2VtZW50c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTihlcXVhbGl0aWVzKSB7XG4gIGNvbnN0IGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllcy5tYXAoKGVxdWFsaXR5KSA9PiB7XG4gICAgY29uc3QgZXF1YWxpdHlKU09OID0gZXF1YWxpdHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTihzdGF0ZW1lbnRzKSB7XG4gIGNvbnN0IHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50cy5tYXAoKHN0YXRlbWVudCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlc1RvU2lnbmF0dXJlc0pTT04oc2lnbmF0dXJlcykge1xuICBjb25zdCBzaWduYXR1cmVzSlNPTiA9IHNpZ25hdHVyZXMubWFwKChzaWduYXR1cmUpID0+IHtcbiAgICBjb25zdCBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzaWduYXR1cmVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OKGFzc2VydGlvbnMpIHtcbiAgY29uc3QgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zLm1hcCgoYXNzZXJ0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0aW9uSlNPTiA9IGFzc2VydGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTihyZWZlcmVuY2VzKSB7XG4gIGNvbnN0IHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlcy5tYXAoKHJlZmVyZW5jZSkgPT4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdG9yc1RvR2VuZXJhdG9yc0pTT04oZ2VuZXJhdG9ycykge1xuICBjb25zdCBnZW5lcmF0b3JzSlNPTiA9IGdlbmVyYXRvcnMubWFwKChnZW5lcmF0b3IpID0+IHtcbiAgICBjb25zdCBnZW5lcmF0b3JKU09OID0gZ2VuZXJhdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBnZW5lcmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cmFpbnRzVG9Db25zdHJhaW50c0pTT04oY29uc3RyYWludHMpIHtcbiAgY29uc3QgY29uc3RyYWludHNKU09OID0gY29uc3RyYWludHMubWFwKChjb25zdHJhaW50KSA9PiB7XG4gICAgY29uc3QgY29uc3RyYWludEpTT04gPSBjb25zdHJhaW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RyYWludHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTihjb25qZWN0dXJlcykge1xuICBjb25zdCBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlcy5tYXAoKGNvbmplY3R1cmUpID0+IHtcbiAgICBjb25zdCBjb25qZWN0dXJlSlNPTiA9IGNvbmplY3R1cmUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OKGNvbWJpbmF0b3JzKSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzLm1hcCgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JKU09OID0gY29tYmluYXRvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb21iaW5hdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnMubWFwKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzdW1wdGlvbkpTT04gPSBhc3N1bXB0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbkpTT04gPSBzdXBwb3NpdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKGNvbnN0cnVjdG9ycykge1xuICBjb25zdCBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzLm1hcCgoY29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckpTT04gPSBjb25zdHJ1Y3Rvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OKHR5cGVQcmVmaXhlcykge1xuICBjb25zdCB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzLm1hcCgodHlwZVByZWZpeCkgPT4ge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhKU09OID0gdHlwZVByZWZpeC50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucy5tYXAoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXMubWFwKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRzVG9NbmVtaWNDb250ZXh0c0pTT04obW5lbWljQ29udGV4dHMpIHtcbiAgY29uc3QgbW5lbWljQ29udGV4dHNKU09OID0gbW5lbWljQ29udGV4dHMubWFwKChtbmVtaWNDb250ZXh0KSA9PiB7XG4gICAgY29uc3QgbW5lbWljQ29udGV4dEpTT04gPSBtbmVtaWNDb250ZXh0LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHRKU09OO1xuICB9KTtcblxuICByZXR1cm4gbW5lbWljQ29udGV4dHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRWYXJpYWJsZXNUb0RlY2xhcmVkVmFyaWFibGVzSlNPTihkZWNsYXJlZFZhcmlhYmxlcykge1xuICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlcy5tYXAoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkVmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04oZGVjbGFyZWRNZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXMubWFwKChkZWNsYXJlZE1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT047XG59XG5cbmZ1bmN0aW9uIGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIGZpbmRNZXRhVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSB7XG4gIGNvbnN0IG1ldGFUeXBlTmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgbWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuIl0sIm5hbWVzIjpbImFzc2VydGlvbnNGcm9tSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJheGlvbXNGcm9tSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwiY29uY2x1c2lvbkZyb21KU09OIiwiY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbnN0cmFpbnRzRnJvbUpTT04iLCJjb25zdHJhaW50c1RvQ29uc3RyYWludHNKU09OIiwiY29uc3RydWN0b3JzRnJvbUpTT04iLCJjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04iLCJkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJlcXVhbGl0aWVzRnJvbUpTT04iLCJlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTiIsImZyYW1lc0Zyb21KU09OIiwiZnJhbWVzVG9GcmFtZXNKU09OIiwiZ2VuZXJhdG9yc0Zyb21KU09OIiwiZ2VuZXJhdG9yc1RvR2VuZXJhdG9yc0pTT04iLCJnb2Fsc0Zyb21KU09OIiwiZ29hbHNUb0dvYWxzSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwianVkZ2VtZW50c0Zyb21KU09OIiwianVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04iLCJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibWV0YVR5cGVGcm9tSlNPTiIsIm1ldGFUeXBlVG9NZXRhVHlwZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsIm1uZW1pY0NvbnRleHRGcm9tSlNPTiIsIm1uZW1pY0NvbnRleHRUb01uZW1pY0NvbnRleHRKU09OIiwibW5lbWljQ29udGV4dHNGcm9tSlNPTiIsIm1uZW1pY0NvbnRleHRzVG9NbmVtaWNDb250ZXh0c0pTT04iLCJwcmVmaXhOYW1lRnJvbUpTT04iLCJwcmVmaXhuYW1lVG9QcmV2aXhOYW1lSlNPTiIsInByZW1pc2VzRnJvbUpTT04iLCJwcmVtaXNlc1RvUHJlbWlzZXNKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm92aXNpb25hbEZyb21KU09OIiwicHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiIsInJlZmVyZW5jZXNGcm9tSlNPTiIsInJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzY2hlbWFzRnJvbUpTT04iLCJzY2hlbWFzVG9TY2hlbWFzSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwic2lnbmF0dXJlc0Zyb21KU09OIiwic2lnbmF0dXJlc1RvU2lnbmF0dXJlc0pTT04iLCJzdGF0ZW1lbnRzRnJvbUpTT04iLCJzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTiIsInN1YnN0aXR1dGlvbkZyb21TdWJzdGl0dXRpb25KU09OIiwic3Vic3RpdHV0aW9uc0Zyb21KU09OIiwic3Vic3RpdHV0aW9uc1RvU3Vic3RpdHV0aW9uc0pTT04iLCJzdXBlclR5cGVzRnJvbUpTT04iLCJzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTiIsInN1cHBvc2l0aW9uc0Zyb21KU09OIiwic3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIiwidGVybXNGcm9tSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwidGhlb3JlbXNUb1RoZW9yZW1zSlNPTiIsInR5cGVGcm9tSlNPTiIsInR5cGVQcmVmaXhlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwidHlwZVRvVHlwZUpTT04iLCJ0eXBlc0Zyb21KU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsImpzb24iLCJjb250ZXh0IiwidHlwZSIsInN0cmluZyIsIm5hbWUiLCJmaW5kVHlwZUJ5TmFtZSIsImxhYmVsIiwiTGFiZWwiLCJlbGVtZW50cyIsImxhYmVsSlNPTiIsImZyb21KU09OIiwibWV0YVR5cGUiLCJmaW5kTWV0YVR5cGVCeU5hbWUiLCJkZWR1Y3Rpb24iLCJEZWR1Y3Rpb24iLCJkZWR1Y3Rpb25KU09OIiwic2lnbmF0dXJlIiwiU2lnbmF0dXJlIiwic2lnbmF0dXJlSlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJwcm92aXNpb25hbCIsInJlbGVhc2VDb250ZXh0IiwibW5lbWljQ29udGV4dCIsIk1uZW1pY0NvbnRleHQiLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJUZXJtIiwidGVybXNKU09OIiwibWFwIiwidGVybUpTT04iLCJ0ZXJtIiwiZ29hbHMiLCJHb2FsIiwiZ29hbHNKU09OIiwiZ29hbEpTT04iLCJnb2FsIiwicnVsZXMiLCJSdWxlIiwicnVsZXNKU09OIiwicnVsZUpTT04iLCJydWxlIiwiZnJhbWVzIiwiRnJhbWUiLCJmcmFtZXNKU09OIiwiZnJhbWVKU09OIiwiZnJhbWUiLCJsYWJlbHMiLCJsYWJlbHNKU09OIiwiYXhpb21zIiwiQXhpb20iLCJheGlvbXNKU09OIiwiYXhpb21KU09OIiwiYXhpb20iLCJzY2hlbWFzIiwiU2NoZW1hIiwic2NoZW1hc0pTT04iLCJzY2hlbWFKU09OIiwic2NoZW1hIiwicHJlbWlzZXMiLCJQcmVtaXNlIiwicHJlbWlzZXNKU09OIiwicHJlbWlzZUpTT04iLCJwcmVtaXNlIiwidGhlb3JlbXMiLCJUaGVvcmVtIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJ0aGVvcmVtIiwiZXF1YWxpdGllcyIsIkVxdWFsaXR5IiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0eUpTT04iLCJlcXVhbGl0eSIsInByb3BlcnRpZXMiLCJQcm9wZXJ0eSIsInByb3BlcnRpZXNKU09OIiwicHJvcGVydHlKU09OIiwicHJvcGVydHkiLCJwcmVmaXhOYW1lIiwic3VwZXJUeXBlcyIsInN1cGVyVHlwZXNKU09OIiwic3VwZXJUeXBlSlNPTiIsInN1cGVyVHlwZSIsImh5cG90aGVzZXMiLCJIeXBvdGhlc2lzIiwiaHlwb3RoZXNlc0pTT04iLCJoeXBvdGhlc2lzSlNPTiIsImh5cG90aGVzaXMiLCJqdWRnZW1lbnRzIiwiSnVkZ2VtZW50IiwianVkZ2VtZW50c0pTT04iLCJqdWRnZW1lbnRKU09OIiwianVkZ2VtZW50Iiwic3RhdGVtZW50cyIsIlN0YXRlbWVudCIsInN0YXRlbWVudHNKU09OIiwic3RhdGVtZW50SlNPTiIsInN0YXRlbWVudCIsImFzc2VydGlvbnMiLCJUeXBlQXNzZXJ0aW9uIiwiRGVmaW5lZEFzc2VydGlvbiIsIlByb3BlcnR5QXNzZXJ0aW9uIiwiU3VicHJvb2ZBc3NlcnRpb24iLCJTaWduYXR1cmVBc3NlcnRpb24iLCJDb250YWluZWRBc3NlcnRpb24iLCJhc3NlcnRpb25zSlNPTiIsImFzc2VydGlvbkpTT04iLCJhc3NlcnRpb24iLCJyZWZlcmVuY2VzIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlc0pTT04iLCJyZWZlcmVuY2VKU09OIiwicmVmZXJlbmNlIiwic2lnbmF0dXJlcyIsInNpZ25hdHVyZXNKU09OIiwiZ2VuZXJhdG9ycyIsIkdlbmVyYXRvciIsImdlbmVyYXRvcnNKU09OIiwiZ2VuZXJhdG9ySlNPTiIsImdlbmVyYXRvciIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiQ29tYmluYXRvciIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JKU09OIiwiY29tYmluYXRvciIsImFzc3VtcHRpb25zIiwiQXNzdW1wdGlvbiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25KU09OIiwiYXNzdW1wdGlvbiIsImNvbnN0cmFpbnRzIiwiQ29uc3RyYWludCIsImNvbnN0cmFpbnRzSlNPTiIsImNvbnN0cmFpbnRKU09OIiwiY29uc3RyYWludCIsInR5cGVQcmVmaXhlcyIsIlR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeEpTT04iLCJ0eXBlUHJlZml4IiwiY29uc3RydWN0b3JzIiwiQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JKU09OIiwiY29uc3RydWN0b3IiLCJzdXBwb3NpdGlvbnMiLCJTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uc0pTT04iLCJzdXBwb3NpdGlvbkpTT04iLCJzdXBwb3NpdGlvbiIsInN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zSlNPTiIsInN1YnN0aXR1dGlvbkpTT04iLCJzdWJzdGl0dXRpb24iLCJtZXRhdmFyaWFibGVzIiwiTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlc0pTT04iLCJtZXRhdmFyaWFibGVKU09OIiwibWV0YXZhcmlhYmxlIiwiY29udGV4dHMiLCJtbmVtaWNDb250ZXh0cyIsImRlY2xhcmVkVmFyaWFibGVzIiwiVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZFZhcmlhYmxlSlNPTiIsInZhcmlhYmxlIiwiZGVjbGFyZWRWYXJpYWJsZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImFicmlkZ2VkIiwidG9KU09OIiwibWV0YVR5cGVKU09OIiwicHJvdmlzaW9uYWxKU09OIiwibW5lbWljQ29udGV4dEpTT04iLCJUZXJtU3Vic3RpdHV0aW9uIiwiRnJhbWVTdWJzdGl0dXRpb24iLCJTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJSZWZlcmVuY2VTdWJzdGl0dXRpb24iLCJwcmVmaXhuYW1lIiwicHJlZml4TmFtZUpTT04iLCJtbmVtaWNDb250ZXh0c0pTT04iLCJ0eXBlTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFnWGdCQTtlQUFBQTs7UUE2ZkFDO2VBQUFBOztRQXhaQUM7ZUFBQUE7O1FBb2RBQztlQUFBQTs7UUEvdEJBQztlQUFBQTs7UUE4aUJBQztlQUFBQTs7UUFuVEFDO2VBQUFBOztRQTBkQUM7ZUFBQUE7O1FBbjFCQUM7ZUFBQUE7O1FBb2xCQUM7ZUFBQUE7O1FBM09BQztlQUFBQTs7UUFnZUFDO2VBQUFBOztRQWhiQUM7ZUFBQUE7O1FBc2FBQztlQUFBQTs7UUF0WUFDO2VBQUFBOztRQXdiQUM7ZUFBQUE7O1FBdFZBQztlQUFBQTs7UUFrWkFDO2VBQUFBOztRQW5hQUM7ZUFBQUE7O1FBeVpBQztlQUFBQTs7UUEvN0JBQztlQUFBQTs7UUFrbUJBQztlQUFBQTs7UUF4WUFDO2VBQUFBOztRQXFrQkFDO2VBQUFBOztRQXJxQkFDO2VBQUFBOztRQW9rQkFDO2VBQUFBOztR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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-nominal",
3
3
  "author": "James Smith",
4
- "version": "1.0.284",
4
+ "version": "1.0.285",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-nominal",
7
7
  "description": "Occam's Nominal language.",
@@ -14,8 +14,6 @@
14
14
  "occam-furtle": "^3.0.368",
15
15
  "occam-grammar-utilities": "^8.1.17",
16
16
  "occam-languages": "^1.0.26",
17
- "occam-lexers": "^23.2.2",
18
- "occam-parsers": "^23.2.4",
19
17
  "occam-query": "^4.1.198"
20
18
  },
21
19
  "devDependencies": {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { ruleFromRuleName } from "../utilities/bnf";
3
+ import { bnfUtilities } from "occam-languages";
4
+
4
5
  import { TERM_RULE_NAME,
5
6
  TYPE_RULE_NAME,
6
7
  FRAME_RULE_NAME,
@@ -38,6 +39,8 @@ import { TERM_RULE_NAME,
38
39
  STATEMENT_SUBSTITUTION_RULE_NAME,
39
40
  REFERENCE_SUBSTITUTION_RULE_NAME } from "../ruleNames";
40
41
 
42
+ const { ruleFromRuleName } = bnfUtilities;
43
+
41
44
  const termPlaceholderRule = ruleFromRuleName(TERM_RULE_NAME),
42
45
  typePlaceholderRule = ruleFromRuleName(TYPE_RULE_NAME),
43
46
  framePlaceholderRule = ruleFromRuleName(FRAME_RULE_NAME),
@@ -22,7 +22,7 @@ export function labelFromJSON(json, context) {
22
22
  let { label } = json;
23
23
 
24
24
  const { Label } = elements,
25
- labelJSON = label; ///
25
+ labelJSON = label; ///
26
26
 
27
27
  json = labelJSON; ///
28
28
 
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "ruleFromRuleName", {
6
- enumerable: true,
7
- get: function() {
8
- return ruleFromRuleName;
9
- }
10
- });
11
- const _occamlexers = require("occam-lexers");
12
- const _occamparsers = require("occam-parsers");
13
- const _necessary = require("necessary");
14
- const { first } = _necessary.arrayUtilities;
15
- const bnfLexer = _occamlexers.BNFLexer.fromNothing(), bnfParser = _occamparsers.BNFParser.fromNothing();
16
- function ruleFromRuleName(ruleName) {
17
- const bnf = ` _ ::= ${ruleName}... <END_OF_LINE> ; `, tokens = bnfLexer.tokensFromBNF(bnf), rules = bnfParser.rulesFromTokens(tokens), firstRule = first(rules), rule = firstRule; ///
18
- return rule;
19
- }
20
-
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBCTkZMZXhlciB9IGZyb20gXCJvY2NhbS1sZXhlcnNcIjtcbmltcG9ydCB7IEJORlBhcnNlciB9IGZyb20gXCJvY2NhbS1wYXJzZXJzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IGJuZkxleGVyID0gQk5GTGV4ZXIuZnJvbU5vdGhpbmcoKSxcbiAgICAgIGJuZlBhcnNlciA9IEJORlBhcnNlci5mcm9tTm90aGluZygpO1xuXG5leHBvcnQgZnVuY3Rpb24gcnVsZUZyb21SdWxlTmFtZShydWxlTmFtZSkge1xuICBjb25zdCBibmYgPSBgIF8gOjo9ICR7cnVsZU5hbWV9Li4uIDxFTkRfT0ZfTElORT4gOyBgLFxuICAgICAgICB0b2tlbnMgPSBibmZMZXhlci50b2tlbnNGcm9tQk5GKGJuZiksXG4gICAgICAgIHJ1bGVzID0gYm5mUGFyc2VyLnJ1bGVzRnJvbVRva2Vucyh0b2tlbnMpLFxuICAgICAgICBmaXJzdFJ1bGUgPSBmaXJzdChydWxlcyksXG4gICAgICAgIHJ1bGUgPSBmaXJzdFJ1bGU7IC8vL1xuXG4gIHJldHVybiBydWxlO1xufVxuIl0sIm5hbWVzIjpbInJ1bGVGcm9tUnVsZU5hbWUiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiYm5mTGV4ZXIiLCJCTkZMZXhlciIsImZyb21Ob3RoaW5nIiwiYm5mUGFyc2VyIiwiQk5GUGFyc2VyIiwicnVsZU5hbWUiLCJibmYiLCJ0b2tlbnMiLCJ0b2tlbnNGcm9tQk5GIiwicnVsZXMiLCJydWxlc0Zyb21Ub2tlbnMiLCJmaXJzdFJ1bGUiLCJydWxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFXZ0JBOzs7ZUFBQUE7Ozs2QkFUUzs4QkFDQzsyQkFDSztBQUUvQixNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYztBQUVoQyxNQUFNQyxXQUFXQyxxQkFBUSxDQUFDQyxXQUFXLElBQy9CQyxZQUFZQyx1QkFBUyxDQUFDRixXQUFXO0FBRWhDLFNBQVNMLGlCQUFpQlEsUUFBUTtJQUN2QyxNQUFNQyxNQUFNLENBQUMsT0FBTyxFQUFFRCxTQUFTLG9CQUFvQixDQUFDLEVBQzlDRSxTQUFTUCxTQUFTUSxhQUFhLENBQUNGLE1BQ2hDRyxRQUFRTixVQUFVTyxlQUFlLENBQUNILFNBQ2xDSSxZQUFZYixNQUFNVyxRQUNsQkcsT0FBT0QsV0FBVyxHQUFHO0lBRTNCLE9BQU9DO0FBQ1QifQ==
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- import { BNFLexer } from "occam-lexers";
4
- import { BNFParser } from "occam-parsers";
5
- import { arrayUtilities } from "necessary";
6
-
7
- const { first } = arrayUtilities;
8
-
9
- const bnfLexer = BNFLexer.fromNothing(),
10
- bnfParser = BNFParser.fromNothing();
11
-
12
- export function ruleFromRuleName(ruleName) {
13
- const bnf = ` _ ::= ${ruleName}... <END_OF_LINE> ; `,
14
- tokens = bnfLexer.tokensFromBNF(bnf),
15
- rules = bnfParser.rulesFromTokens(tokens),
16
- firstRule = first(rules),
17
- rule = firstRule; ///
18
-
19
- return rule;
20
- }