geonetwork-ui 2.3.0-dev.ff2a9db7 → 2.4.0-dev.a2f3bb9f

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.
Files changed (98) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +2 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +9 -7
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +22 -7
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +14 -3
  5. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  6. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +14 -2
  7. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +1 -1
  8. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +30 -10
  9. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +7 -3
  10. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +14 -7
  11. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +34 -5
  12. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +1 -3
  13. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +4 -4
  14. package/esm2022/libs/ui/elements/src/index.mjs +2 -2
  15. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +30 -0
  16. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +6 -7
  17. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +6 -6
  18. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
  19. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  20. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  21. package/esm2022/translations/de.json +1 -0
  22. package/esm2022/translations/en.json +1 -0
  23. package/esm2022/translations/es.json +1 -0
  24. package/esm2022/translations/fr.json +1 -0
  25. package/esm2022/translations/it.json +1 -0
  26. package/esm2022/translations/nl.json +1 -0
  27. package/esm2022/translations/pt.json +1 -0
  28. package/fesm2022/geonetwork-ui.mjs +391 -287
  29. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  30. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +2 -2
  31. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
  32. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +1 -1
  33. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  34. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +4 -1
  35. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  36. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +2 -1
  37. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  38. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +3 -3
  39. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  40. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -1
  41. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  42. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +6 -0
  43. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  44. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -1
  45. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  46. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  47. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +2 -2
  48. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  49. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +5 -2
  50. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  51. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  52. package/libs/ui/elements/src/index.d.ts +1 -1
  53. package/libs/ui/elements/src/index.d.ts.map +1 -1
  54. package/libs/ui/elements/src/lib/error/error.component.d.ts +16 -0
  55. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -0
  56. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  57. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -2
  58. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  59. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  60. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  61. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  62. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  63. package/package.json +2 -2
  64. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +9 -1
  65. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +3 -3
  66. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +35 -31
  67. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +67 -15
  68. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +71 -13
  69. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -3
  70. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +8 -0
  71. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +15 -1
  72. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +6 -0
  73. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +31 -9
  74. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +6 -2
  75. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +15 -8
  76. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +40 -3
  77. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +0 -2
  78. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +4 -4
  79. package/src/libs/ui/elements/src/index.ts +1 -1
  80. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.html → error/error.component.html} +18 -3
  81. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.ts → error/error.component.ts} +5 -4
  82. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +7 -8
  83. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -4
  84. package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
  85. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  86. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  87. package/translations/de.json +1 -0
  88. package/translations/en.json +1 -0
  89. package/translations/es.json +1 -0
  90. package/translations/fr.json +1 -0
  91. package/translations/it.json +1 -0
  92. package/translations/nl.json +1 -0
  93. package/translations/pt.json +1 -0
  94. package/translations/sk.json +1 -0
  95. package/esm2022/libs/ui/elements/src/lib/search-results-error/search-results-error.component.mjs +0 -29
  96. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts +0 -15
  97. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts.map +0 -1
  98. /package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.css → error/error.component.css} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { Iso19139Converter } from '../iso19139';
2
+ import { renameElements } from '../xml-utils';
2
3
  import { readContacts, readDistributions, readKind, readLandingPage, readLineage, readOwnerOrganization, readRecordCreated, readRecordPublished, readRecordUpdated, readResourceContacts, readUniqueIdentifier, } from './read-parts';
3
4
  import { writeContacts, writeContactsForResource, writeDistributions, writeKind, writeLandingPage, writeLineage, writeOwnerOrganization, writeRecordCreated, writeRecordPublished, writeRecordUpdated, writeResourceCreated, writeResourcePublished, writeResourceUpdated, writeSpatialRepresentation, writeStatus, writeUniqueIdentifier, } from './write-parts';
4
- import { renameElements } from '../xml-utils';
5
5
  export class Iso191153Converter extends Iso19139Converter {
6
6
  constructor() {
7
7
  super();
@@ -120,4 +120,4 @@ export class Iso191153Converter extends Iso19139Converter {
120
120
  return result;
121
121
  }
122
122
  }
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMTUtMy5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTExNS0zL2lzbzE5MTE1LTMuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMvQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsZUFBZSxFQUNmLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLG9CQUFvQixHQUNyQixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQ0wsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGdCQUFnQixFQUNoQixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gscUJBQXFCLEdBQ3RCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHN0MsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQUN2RDtRQUNFLEtBQUssRUFBRSxDQUFBO1FBRVAsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLG9CQUFvQixDQUFBO1FBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFBO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsaUJBQWlCLENBQUE7UUFDakQsSUFBSSxDQUFD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QW9CLEVBQUUsb0JBQW9CO1lBQzFDLHVCQUF1QixFQUFFLHVCQUF1QjtZQUNoRCxzQkFBc0IsRUFBRSxzQkFBc0I7WUFDOUMsd0JBQXdCLEVBQUUsd0JBQXdCO1lBQ2xELG9CQUFvQixFQUFFLG9CQUFvQjtZQUMxQywyQkFBMkIsRUFBRSwyQkFBMkI7WUFFeEQsWUFBWTtZQUNaLHFCQUFxQixFQUFFLHFCQUFxQjtZQUM1QyxzQkFBc0IsRUFBRSxzQkFBc0I7WUFDOUMsY0FBYyxFQUFFLGNBQWM7WUFDOUIscUJBQXFCLEVBQUUscUJBQXFCO1lBRTVDLHVCQUF1QjtZQUN2QixTQUFTLEVBQUUscUJBQXFCO1NBQ2pDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUNmLE1BQXFCLEVBQ3JCLFNBQWtCO1FBRWxCLElBQUksTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDdkQsd0VBQXdFO1FBQ3hFLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUNyQixvQ0FBb0MsRUFDcEMsaURBQWlELENBQ2xELENBQUE7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElzbzE5MTM5Q29udmVydGVyIH0gZnJvbSAnLi4vaXNvMTkxMzknXG5pbXBvcnQge1xuICByZWFkQ29udGFjdHMsXG4gIHJlYWREaXN0cmlidXRpb25zLFxuICByZWFkS2luZCxcbiAgcmVhZExhbmRpbmdQYWdlLFxuICByZWFkTGluZWFnZSxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkQ3JlYXRlZCxcbiAgcmVhZFJlY29yZFB1Ymxpc2hlZCxcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNvbnRhY3RzLFxuICByZWFkVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHtcbiAgd3JpdGVDb250YWN0cyxcbiAgd3JpdGVDb250YWN0c0ZvclJlc291cmNlLFxuICB3cml0ZURpc3RyaWJ1dGlvbnMsXG4gIHdyaXRlS2luZCxcbiAgd3JpdGVMYW5kaW5nUGFnZSxcbiAgd3JpdGVMaW5lYWdlLFxuICB3cml0ZU93bmVyT3JnYW5pemF0aW9uLFxuICB3cml0ZVJlY29yZENyZWF0ZWQsXG4gIHdyaXRlUmVjb3JkUHVibGlzaGVkLFxuICB3cml0ZVJlY29yZFVwZGF0ZWQsXG4gIHdyaXRlUmVzb3VyY2VDcmVhdGVkLFxuICB3cml0ZVJlc291cmNlUHVibGlzaGVkLFxuICB3cml0ZVJlc291cmNlVXBkYXRlZCxcbiAgd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb24sXG4gIHdyaXRlU3RhdHVzLFxuICB3cml0ZVVuaXF1ZUlkZW50aWZpZXIsXG59IGZyb20gJy4vd3JpdGUtcGFydHMnXG5pbXBvcnQgeyBYbWxFbGVtZW50IH0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5pbXBvcnQgeyByZW5hbWVFbGVtZW50cyB9IGZyb20gJy4uL3htbC11dGlscydcbmltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbmV4cG9ydCBjbGFzcyBJc28xOTExNTNDb252ZXJ0ZXIgZXh0ZW5kcyBJc28xOTEzOUNvbnZlcnRlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMucmVhZGVyc1sndW5pcXVlSWRlbnRpZmllciddID0gcmVhZFVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLnJlYWRlcnNbJ2tpbmQnXSA9IHJlYWRLaW5kXG4gICAgdGhpcy5yZWFkZXJzWydyZWNvcmRVcGRhdGVkJ10gPSByZWFkUmVjb3JkVXBkYXRlZFxuICAgIHRoaXMucmVhZGVyc1sncmVjb3JkQ3JlYXRlZCddID0gcmVhZFJlY29yZENyZWF0ZWRcbiAgICB0aGlzLnJlYWRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddID0gcmVhZFJlY29yZFB1Ymxpc2hlZFxuICAgIHRoaXMucmVhZGVyc1snY29udGFjdHMnXSA9IHJlYWRDb250YWN0c1xuICAgIHRoaXMucmVhZGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddID0gcmVhZFJlc291cmNlQ29udGFjdHNcbiAgICB0aGlzLnJlYWRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10gPSByZWFkT3duZXJPcmdhbml6YXRpb25cbiAgICB0aGlzLnJlYWRlcnNbJ2xhbmRpbmdQYWdlJ10gPSByZWFkTGFuZGluZ1BhZ2VcbiAgICB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXSA9IHJlYWRMaW5lYWdlXG4gICAgdGhpcy5yZWFkZXJzWydkaXN0cmlidXRpb25zJ10gPSByZWFkRGlzdHJpYnV0aW9uc1xuXG4gICAgdGhpcy53cml0ZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10gPSB3cml0ZVVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLndyaXRlcnNbJ2tpbmQnXSA9IHdyaXRlS2luZFxuICAgIHRoaXMud3JpdGVyc1sncmVjb3JkVXBkYXRlZCddID0gd3JpdGVSZWNvcmRVcGRhdGVkXG4gICAgdGhpcy53cml0ZXJzWydyZWNvcmRDcmVhdGVkJ10gPSB3cml0ZVJlY29yZENyZWF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddID0gd3JpdGVSZWNvcmRQdWJsaXNoZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlVXBkYXRlZCddID0gd3JpdGVSZXNvdXJjZVVwZGF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlQ3JlYXRlZCddID0gd3JpdGVSZXNvdXJjZUNyZWF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10gPSB3cml0ZVJlc291cmNlUHVibGlzaGVkXG4gICAgdGhpcy53cml0ZXJzWydjb250YWN0cyddID0gd3JpdGVDb250YWN0c1xuICAgIHRoaXMud3JpdGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddID0gd3JpdGVDb250YWN0c0ZvclJlc291cmNlXG4gICAgdGhpcy53cml0ZXJzWydvd25lck9yZ2FuaXphdGlvbiddID0gd3JpdGVPd25lck9yZ2FuaXphdGlvblxuICAgIHRoaXMud3JpdGVyc1snbGFuZGluZ1BhZ2UnXSA9IHdyaXRlTGFuZGluZ1BhZ2VcbiAgICB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXSA9IHdyaXRlTGluZWFnZVxuICAgIHRoaXMud3JpdGVyc1snZGlzdHJpYnV0aW9ucyddID0gd3JpdGVEaXN0cmlidXRpb25zXG4gICAgdGhpcy53cml0ZXJzWydzdGF0dXMnXSA9IHdyaXRlU3RhdHVzXG4gICAgdGhpcy53cml0ZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXSA9IHdyaXRlU3BhdGlhbFJlcHJlc2VudGF0aW9uXG4gIH1cblxuICBiZWZvcmVEb2N1bWVudENyZWF0aW9uKHJvb3RFbDogWG1sRWxlbWVudCkge1xuICAgIHJlbmFtZUVsZW1lbnRzKHJvb3RFbCwge1xuICAgICAgZ21kOiAnbWRiJyxcbiAgICAgICdnbWQ6Y2hhcmFjdGVyRW5jb2RpbmcnOiAnbGFuOmNoYXJhY3RlckVuY29kaW5nJyxcbiAgICAgICdnbWQ6TURfQ2hhcmFjdGVyU2V0Q29kZSc6ICdsYW46TURfQ2hhcmFjdGVyU2V0Q29kZScsXG4gICAgICAnZ21kOk1EX0RhdGFJZGVudGlmaWNhdGlvbic6ICdtcmk6TURfRGF0YUlkZW50aWZpY2F0aW9uJyxcbiAgICAgICdnbWQ6Y2l0YXRpb24nOiAnbXJpOmNpdGF0aW9uJyxcbiAgICAgICdnbWQ6YWJzdHJhY3QnOiAnbXJpOmFic3RyYWN0JyxcbiAgICAgICdnbWQ6dGl0bGUnOiAnY2l0OnRpdGxlJyxcbiAgICAgICdnbWQ6Q0lfQ2l0YXRpb24nOiAnY2l0OkNJX0NpdGF0aW9uJyxcbiAgICAgICdnbXg6QW5jaG9yJzogJ2djeDpBbmNob3InLFxuXG4gICAgICAvLyBsYW5ndWFnZXNcbiAgICAgICdnbWQ6UFRfTG9jYWxlJzogJ2xhbjpQVF9Mb2NhbGUnLFxuICAgICAgJ2dtZDpsYW5ndWFnZUNvZGUnOiAnbGFuOmxhbmd1YWdlQ29kZScsXG4gICAgICAnZ21kOkxhbmd1YWdlQ29kZSc6ICdsYW46TGFuZ3VhZ2VDb2RlJyxcblxuICAgICAgLy8gc3RhdHVzXG4gICAgICAnZ21kOnN0YXR1cyc6ICdtcmk6c3RhdHVzJyxcbiAgICAgICdnbWQ6TURfUHJvZ3Jlc3NDb2RlJzogJ21yaTpNRF9Qcm9ncmVzc0NvZGUnLFxuXG4gICAgICAvLyBkYXRlc1xuICAgICAgJ2dtZDpkYXRlJzogJ2NpdDpkYXRlJyxcbiAgICAgICdnbWQ6Q0lfRGF0ZSc6ICdjaXQ6Q0lfRGF0ZScsXG4gICAgICAnZ21kOmRhdGVUeXBlJzogJ2NpdDpkYXRlVHlwZScsXG4gICAgICAnZ21kOkNJX0RhdGVUeXBlQ29kZSc6ICdjaXQ6Q0lfRGF0ZVR5cGVDb2RlJyxcblxuICAgICAgLy8gY29udGFjdHNcbiAgICAgICdnbWQ6Q0lfUmVzcG9uc2liaWxpdHknOiAnY2l0OkNJX1Jlc3BvbnNpYmlsaXR5JyxcbiAgICAgICdnbWQ6cm9sZSc6ICdjaXQ6cm9sZScsXG4gICAgICAnZ21kOkNJX1JvbGVDb2RlJzogJ2NpdDpDSV9Sb2xlQ29kZScsXG5cbiAgICAgIC8vIGtleXdvcmRzXG4gICAgICAnZ21kOmRlc2NyaXB0aXZlS2V5d29yZHMnOiAnbXJpOmRlc2NyaXB0aXZlS2V5d29yZHMnLFxuICAgICAgJ2dtZDpNRF9LZXl3b3Jkcyc6ICdtcmk6TURfS2V5d29yZHMnLFxuICAgICAgJ2dtZDp0eXBlJzogJ21yaTp0eXBlJyxcbiAgICAgICdnbWQ6TURfS2V5d29yZFR5cGVDb2RlJzogJ21yaTpNRF9LZXl3b3JkVHlwZUNvZGUnLFxuICAgICAgJ2dtZDp0aGVzYXVydXNOYW1lJzogJ21yaTp0aGVzYXVydXNOYW1lJyxcbiAgICAgICdnbWQ6a2V5d29yZCc6ICdtcmk6a2V5d29yZCcsXG4gICAgICAnZ21kOmlkZW50aWZpZXInOiAnY2l0OmlkZW50aWZpZXInLFxuICAgICAgJ2dtZDpNRF9JZGVudGlmaWVyJzogJ21jYzpNRF9JZGVudGlmaWVyJyxcbiAgICAgICdnbWQ6Y29kZSc6ICdtY2M6Y29kZScsXG5cbiAgICAgIC8vIGRpc3RyaWJ1dGlvbnNcbiAgICAgICdnbWQ6TURfRGlzdHJpYnV0aW9uJzogJ21yZDpNRF9EaXN0cmlidXRpb24nLFxuICAgICAgJ2dtZDp0cmFuc2Zlck9wdGlvbnMnOiAnbXJkOnRyYW5zZmVyT3B0aW9ucycsXG4gICAgICAnZ21kOk1EX0RpZ2l0YWxUcmFuc2Zlck9wdGlvbnMnOiAnbXJkOk1EX0RpZ2l0YWxUcmFuc2Zlck9wdGlvbnMnLFxuICAgICAgJ2dtZDpvbkxpbmUnOiAnbXJkOm9uTGluZScsXG4gICAgICAnZ21kOmRpc3RyaWJ1dGlvbkZvcm1hdCc6ICdtcmQ6ZGlzdHJpYnV0aW9uRm9ybWF0JyxcbiAgICAgICdnbWQ6TURfRm9ybWF0JzogJ21yZDpNRF9Gb3JtYXQnLFxuICAgICAgJ2dtZDpDSV9PbmxpbmVSZXNvdXJjZSc6ICdjaXQ6Q0lfT25saW5lUmVzb3VyY2UnLFxuICAgICAgJ2dtZDpsaW5rYWdlJzogJ2NpdDpsaW5rYWdlJyxcbiAgICAgICdnbWQ6bmFtZSc6ICdjaXQ6bmFtZScsXG4gICAgICAnZ21kOmRlc2NyaXB0aW9uJzogJ2NpdDpkZXNjcmlwdGlvbicsXG4gICAgICAnZ21kOkNJX09uTGluZUZ1bmN0aW9uQ29kZSc6ICdjaXQ6Q0lfT25MaW5lRnVuY3Rpb25Db2RlJyxcbiAgICAgICdnbWQ6ZnVuY3Rpb24nOiAnY2l0OmZ1bmN0aW9uJyxcbiAgICAgICdnbWQ6cHJvdG9jb2wnOiAnY2l0OnByb3RvY29sJyxcblxuICAgICAgLy8gdG9waWNcbiAgICAgICdnbWQ6dG9waWNDYXRlZ29yeSc6ICdtcmk6dG9waWNDYXRlZ29yeScsXG4gICAgICAnZ21kOk1EX1RvcGljQ2F0ZWdvcnlDb2RlJzogJ21yaTpNRF9Ub3BpY0NhdGVnb3J5Q29kZScsXG5cbiAgICAgIC8vIHVwZGF0ZSBmcmVxdWVuY3lcbiAgICAgICdnbWQ6cmVzb3VyY2VNYWludGVuYW5jZSc6ICdtcmk6cmVzb3VyY2VNYWludGVuYW5jZScsXG4gICAgICAnZ21kOk1EX01haW50ZW5hbmNlSW5mb3JtYXRpb24nOiAnbW1pOk1EX01haW50ZW5hbmNlSW5mb3JtYXRpb24nLFxuICAgICAgJ2dtZDp1c2VyRGVmaW5lZE1haW50ZW5hbmNlRnJlcXVlbmN5JzpcbiAgICAgICAgJ21taTp1c2VyRGVmaW5lZE1haW50ZW5hbmNlRnJlcXVlbmN5JyxcbiAgICAgICdndHM6VE1fUGVyaW9kRHVyYXRpb24nOiAnZ2NvOlRNX1BlcmlvZER1cmF0aW9uJyxcblxuICAgICAgLy8gY29uc3RyYWludHNcbiAgICAgICdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cyc6ICdtcmk6cmVzb3VyY2VDb25zdHJhaW50cycsXG4gICAgICAnZ21kOk1EX0NvbnN0cmFpbnRzJzogJ21jbzpNRF9Db25zdHJhaW50cycsXG4gICAgICAnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnOiAnbWNvOk1EX0xlZ2FsQ29uc3RyYWludHMnLFxuICAgICAgJ2dtZDpNRF9TZWN1cml0eUNvbnN0cmFpbnRzJzogJ21jbzpNRF9TZWN1cml0eUNvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6dXNlTGltaXRhdGlvbic6ICdtY286dXNlTGltaXRhdGlvbicsXG4gICAgICAnZ21kOnVzZUNvbnN0cmFpbnRzJzogJ21jbzp1c2VDb25zdHJhaW50cycsXG4gICAgICAnZ21kOmFjY2Vzc0NvbnN0cmFpbnRzJzogJ21jbzphY2Nlc3NDb25zdHJhaW50cycsXG4gICAgICAnZ21kOm90aGVyQ29uc3RyYWludHMnOiAnbWNvOm90aGVyQ29uc3RyYWludHMnLFxuICAgICAgJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnOiAnbWNvOk1EX1Jlc3RyaWN0aW9uQ29kZScsXG4gICAgICAnZ21kOmNsYXNzaWZpY2F0aW9uJzogJ21jbzpjbGFzc2lmaWNhdGlvbicsXG4gICAgICAnZ21kOk1EX0NsYXNzaWZpY2F0aW9uQ29kZSc6ICdtY286TURfQ2xhc3NpZmljYXRpb25Db2RlJyxcblxuICAgICAgLy8gb3ZlcnZpZXdzXG4gICAgICAnZ21kOmdyYXBoaWNPdmVydmlldyc6ICdtcmk6Z3JhcGhpY092ZXJ2aWV3JyxcbiAgICAgICdnbWQ6TURfQnJvd3NlR3JhcGhpYyc6ICdtY2M6TURfQnJvd3NlR3JhcGhpYycsXG4gICAgICAnZ21kOmZpbGVOYW1lJzogJ21jYzpmaWxlTmFtZScsXG4gICAgICAnZ21kOmZpbGVEZXNjcmlwdGlvbic6ICdtY2M6ZmlsZURlc2NyaXB0aW9uJyxcblxuICAgICAgLy8gbm8gbW9yZSBVUkwgZWxlbWVudHNcbiAgICAgICdnbWQ6VVJMJzogJ2djbzpDaGFyYWN0ZXJTdHJpbmcnLFxuICAgIH0pXG4gIH1cblxuICBhc3luYyB3cml0ZVJlY29yZChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlPzogc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHN1cGVyLndyaXRlUmVjb3JkKHJlY29yZCwgcmVmZXJlbmNlKVxuICAgIC8vIGZpeCBnY28gbmFtZXNwYWNlIGRlZmluaXRpb24gKGNoYW5nZXMgYmV0d2VlbiBpc28xOTEzOSBhbmQgaXNvMTkxMTUtM1xuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKFxuICAgICAgJ1wiaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9nY29cIicsXG4gICAgICAnXCJodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL2djby8xLjBcIidcbiAgICApXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG4iXX0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMTUtMy5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTExNS0zL2lzbzE5MTE1LTMuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzdDLE9BQU8sRUFDTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixlQUFlLEVBQ2YsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3JCLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFDTCxhQUFhLEVBQ2Isd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLFdBQVcsRUFDWCxxQkFBcUIsR0FDdEIsTUFBTSxlQUFlLENBQUE7QUFFdEIsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQUN2RDtRQUNFLEtBQUssRUFBRSxDQUFBO1FBRVAsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLG9CQUFvQixDQUFBO1FBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFBO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsaUJBQWlCLENBQUE7UUFDakQsSUFBSSxDQUFD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QW9CLEVBQUUsb0JBQW9CO1lBQzFDLHVCQUF1QixFQUFFLHVCQUF1QjtZQUNoRCxzQkFBc0IsRUFBRSxzQkFBc0I7WUFDOUMsd0JBQXdCLEVBQUUsd0JBQXdCO1lBQ2xELG9CQUFvQixFQUFFLG9CQUFvQjtZQUMxQywyQkFBMkIsRUFBRSwyQkFBMkI7WUFFeEQsWUFBWTtZQUNaLHFCQUFxQixFQUFFLHFCQUFxQjtZQUM1QyxzQkFBc0IsRUFBRSxzQkFBc0I7WUFDOUMsY0FBYyxFQUFFLGNBQWM7WUFDOUIscUJBQXFCLEVBQUUscUJBQXFCO1lBRTVDLHVCQUF1QjtZQUN2QixTQUFTLEVBQUUscUJBQXFCO1NBQ2pDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUNmLE1BQXFCLEVBQ3JCLFNBQWtCO1FBRWxCLElBQUksTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDdkQsd0VBQXdFO1FBQ3hFLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUNyQixvQ0FBb0MsRUFDcEMsaURBQWlELENBQ2xELENBQUE7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBYbWxFbGVtZW50IH0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5pbXBvcnQgeyBJc28xOTEzOUNvbnZlcnRlciB9IGZyb20gJy4uL2lzbzE5MTM5J1xuaW1wb3J0IHsgcmVuYW1lRWxlbWVudHMgfSBmcm9tICcuLi94bWwtdXRpbHMnXG5pbXBvcnQge1xuICByZWFkQ29udGFjdHMsXG4gIHJlYWREaXN0cmlidXRpb25zLFxuICByZWFkS2luZCxcbiAgcmVhZExhbmRpbmdQYWdlLFxuICByZWFkTGluZWFnZSxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkQ3JlYXRlZCxcbiAgcmVhZFJlY29yZFB1Ymxpc2hlZCxcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNvbnRhY3RzLFxuICByZWFkVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHtcbiAgd3JpdGVDb250YWN0cyxcbiAgd3JpdGVDb250YWN0c0ZvclJlc291cmNlLFxuICB3cml0ZURpc3RyaWJ1dGlvbnMsXG4gIHdyaXRlS2luZCxcbiAgd3JpdGVMYW5kaW5nUGFnZSxcbiAgd3JpdGVMaW5lYWdlLFxuICB3cml0ZU93bmVyT3JnYW5pemF0aW9uLFxuICB3cml0ZVJlY29yZENyZWF0ZWQsXG4gIHdyaXRlUmVjb3JkUHVibGlzaGVkLFxuICB3cml0ZVJlY29yZFVwZGF0ZWQsXG4gIHdyaXRlUmVzb3VyY2VDcmVhdGVkLFxuICB3cml0ZVJlc291cmNlUHVibGlzaGVkLFxuICB3cml0ZVJlc291cmNlVXBkYXRlZCxcbiAgd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb24sXG4gIHdyaXRlU3RhdHVzLFxuICB3cml0ZVVuaXF1ZUlkZW50aWZpZXIsXG59IGZyb20gJy4vd3JpdGUtcGFydHMnXG5cbmV4cG9ydCBjbGFzcyBJc28xOTExNTNDb252ZXJ0ZXIgZXh0ZW5kcyBJc28xOTEzOUNvbnZlcnRlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMucmVhZGVyc1sndW5pcXVlSWRlbnRpZmllciddID0gcmVhZFVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLnJlYWRlcnNbJ2tpbmQnXSA9IHJlYWRLaW5kXG4gICAgdGhpcy5yZWFkZXJzWydyZWNvcmRVcGRhdGVkJ10gPSByZWFkUmVjb3JkVXBkYXRlZFxuICAgIHRoaXMucmVhZGVyc1sncmVjb3JkQ3JlYXRlZCddID0gcmVhZFJlY29yZENyZWF0ZWRcbiAgICB0aGlzLnJlYWRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddID0gcmVhZFJlY29yZFB1Ymxpc2hlZFxuICAgIHRoaXMucmVhZGVyc1snY29udGFjdHMnXSA9IHJlYWRDb250YWN0c1xuICAgIHRoaXMucmVhZGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddID0gcmVhZFJlc291cmNlQ29udGFjdHNcbiAgICB0aGlzLnJlYWRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10gPSByZWFkT3duZXJPcmdhbml6YXRpb25cbiAgICB0aGlzLnJlYWRlcnNbJ2xhbmRpbmdQYWdlJ10gPSByZWFkTGFuZGluZ1BhZ2VcbiAgICB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXSA9IHJlYWRMaW5lYWdlXG4gICAgdGhpcy5yZWFkZXJzWydkaXN0cmlidXRpb25zJ10gPSByZWFkRGlzdHJpYnV0aW9uc1xuXG4gICAgdGhpcy53cml0ZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10gPSB3cml0ZVVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLndyaXRlcnNbJ2tpbmQnXSA9IHdyaXRlS2luZFxuICAgIHRoaXMud3JpdGVyc1sncmVjb3JkVXBkYXRlZCddID0gd3JpdGVSZWNvcmRVcGRhdGVkXG4gICAgdGhpcy53cml0ZXJzWydyZWNvcmRDcmVhdGVkJ10gPSB3cml0ZVJlY29yZENyZWF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddID0gd3JpdGVSZWNvcmRQdWJsaXNoZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlVXBkYXRlZCddID0gd3JpdGVSZXNvdXJjZVVwZGF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlQ3JlYXRlZCddID0gd3JpdGVSZXNvdXJjZUNyZWF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10gPSB3cml0ZVJlc291cmNlUHVibGlzaGVkXG4gICAgdGhpcy53cml0ZXJzWydjb250YWN0cyddID0gd3JpdGVDb250YWN0c1xuICAgIHRoaXMud3JpdGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddID0gd3JpdGVDb250YWN0c0ZvclJlc291cmNlXG4gICAgdGhpcy53cml0ZXJzWydvd25lck9yZ2FuaXphdGlvbiddID0gd3JpdGVPd25lck9yZ2FuaXphdGlvblxuICAgIHRoaXMud3JpdGVyc1snbGFuZGluZ1BhZ2UnXSA9IHdyaXRlTGFuZGluZ1BhZ2VcbiAgICB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXSA9IHdyaXRlTGluZWFnZVxuICAgIHRoaXMud3JpdGVyc1snZGlzdHJpYnV0aW9ucyddID0gd3JpdGVEaXN0cmlidXRpb25zXG4gICAgdGhpcy53cml0ZXJzWydzdGF0dXMnXSA9IHdyaXRlU3RhdHVzXG4gICAgdGhpcy53cml0ZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXSA9IHdyaXRlU3BhdGlhbFJlcHJlc2VudGF0aW9uXG4gIH1cblxuICBiZWZvcmVEb2N1bWVudENyZWF0aW9uKHJvb3RFbDogWG1sRWxlbWVudCkge1xuICAgIHJlbmFtZUVsZW1lbnRzKHJvb3RFbCwge1xuICAgICAgZ21kOiAnbWRiJyxcbiAgICAgICdnbWQ6Y2hhcmFjdGVyRW5jb2RpbmcnOiAnbGFuOmNoYXJhY3RlckVuY29kaW5nJyxcbiAgICAgICdnbWQ6TURfQ2hhcmFjdGVyU2V0Q29kZSc6ICdsYW46TURfQ2hhcmFjdGVyU2V0Q29kZScsXG4gICAgICAnZ21kOk1EX0RhdGFJZGVudGlmaWNhdGlvbic6ICdtcmk6TURfRGF0YUlkZW50aWZpY2F0aW9uJyxcbiAgICAgICdnbWQ6Y2l0YXRpb24nOiAnbXJpOmNpdGF0aW9uJyxcbiAgICAgICdnbWQ6YWJzdHJhY3QnOiAnbXJpOmFic3RyYWN0JyxcbiAgICAgICdnbWQ6dGl0bGUnOiAnY2l0OnRpdGxlJyxcbiAgICAgICdnbWQ6Q0lfQ2l0YXRpb24nOiAnY2l0OkNJX0NpdGF0aW9uJyxcbiAgICAgICdnbXg6QW5jaG9yJzogJ2djeDpBbmNob3InLFxuXG4gICAgICAvLyBsYW5ndWFnZXNcbiAgICAgICdnbWQ6UFRfTG9jYWxlJzogJ2xhbjpQVF9Mb2NhbGUnLFxuICAgICAgJ2dtZDpsYW5ndWFnZUNvZGUnOiAnbGFuOmxhbmd1YWdlQ29kZScsXG4gICAgICAnZ21kOkxhbmd1YWdlQ29kZSc6ICdsYW46TGFuZ3VhZ2VDb2RlJyxcblxuICAgICAgLy8gc3RhdHVzXG4gICAgICAnZ21kOnN0YXR1cyc6ICdtcmk6c3RhdHVzJyxcbiAgICAgICdnbWQ6TURfUHJvZ3Jlc3NDb2RlJzogJ21yaTpNRF9Qcm9ncmVzc0NvZGUnLFxuXG4gICAgICAvLyBkYXRlc1xuICAgICAgJ2dtZDpkYXRlJzogJ2NpdDpkYXRlJyxcbiAgICAgICdnbWQ6Q0lfRGF0ZSc6ICdjaXQ6Q0lfRGF0ZScsXG4gICAgICAnZ21kOmRhdGVUeXBlJzogJ2NpdDpkYXRlVHlwZScsXG4gICAgICAnZ21kOkNJX0RhdGVUeXBlQ29kZSc6ICdjaXQ6Q0lfRGF0ZVR5cGVDb2RlJyxcblxuICAgICAgLy8gY29udGFjdHNcbiAgICAgICdnbWQ6Q0lfUmVzcG9uc2liaWxpdHknOiAnY2l0OkNJX1Jlc3BvbnNpYmlsaXR5JyxcbiAgICAgICdnbWQ6cm9sZSc6ICdjaXQ6cm9sZScsXG4gICAgICAnZ21kOkNJX1JvbGVDb2RlJzogJ2NpdDpDSV9Sb2xlQ29kZScsXG5cbiAgICAgIC8vIGtleXdvcmRzXG4gICAgICAnZ21kOmRlc2NyaXB0aXZlS2V5d29yZHMnOiAnbXJpOmRlc2NyaXB0aXZlS2V5d29yZHMnLFxuICAgICAgJ2dtZDpNRF9LZXl3b3Jkcyc6ICdtcmk6TURfS2V5d29yZHMnLFxuICAgICAgJ2dtZDp0eXBlJzogJ21yaTp0eXBlJyxcbiAgICAgICdnbWQ6TURfS2V5d29yZFR5cGVDb2RlJzogJ21yaTpNRF9LZXl3b3JkVHlwZUNvZGUnLFxuICAgICAgJ2dtZDp0aGVzYXVydXNOYW1lJzogJ21yaTp0aGVzYXVydXNOYW1lJyxcbiAgICAgICdnbWQ6a2V5d29yZCc6ICdtcmk6a2V5d29yZCcsXG4gICAgICAnZ21kOmlkZW50aWZpZXInOiAnY2l0OmlkZW50aWZpZXInLFxuICAgICAgJ2dtZDpNRF9JZGVudGlmaWVyJzogJ21jYzpNRF9JZGVudGlmaWVyJyxcbiAgICAgICdnbWQ6Y29kZSc6ICdtY2M6Y29kZScsXG5cbiAgICAgIC8vIGRpc3RyaWJ1dGlvbnNcbiAgICAgICdnbWQ6TURfRGlzdHJpYnV0aW9uJzogJ21yZDpNRF9EaXN0cmlidXRpb24nLFxuICAgICAgJ2dtZDp0cmFuc2Zlck9wdGlvbnMnOiAnbXJkOnRyYW5zZmVyT3B0aW9ucycsXG4gICAgICAnZ21kOk1EX0RpZ2l0YWxUcmFuc2Zlck9wdGlvbnMnOiAnbXJkOk1EX0RpZ2l0YWxUcmFuc2Zlck9wdGlvbnMnLFxuICAgICAgJ2dtZDpvbkxpbmUnOiAnbXJkOm9uTGluZScsXG4gICAgICAnZ21kOmRpc3RyaWJ1dGlvbkZvcm1hdCc6ICdtcmQ6ZGlzdHJpYnV0aW9uRm9ybWF0JyxcbiAgICAgICdnbWQ6TURfRm9ybWF0JzogJ21yZDpNRF9Gb3JtYXQnLFxuICAgICAgJ2dtZDpDSV9PbmxpbmVSZXNvdXJjZSc6ICdjaXQ6Q0lfT25saW5lUmVzb3VyY2UnLFxuICAgICAgJ2dtZDpsaW5rYWdlJzogJ2NpdDpsaW5rYWdlJyxcbiAgICAgICdnbWQ6bmFtZSc6ICdjaXQ6bmFtZScsXG4gICAgICAnZ21kOmRlc2NyaXB0aW9uJzogJ2NpdDpkZXNjcmlwdGlvbicsXG4gICAgICAnZ21kOkNJX09uTGluZUZ1bmN0aW9uQ29kZSc6ICdjaXQ6Q0lfT25MaW5lRnVuY3Rpb25Db2RlJyxcbiAgICAgICdnbWQ6ZnVuY3Rpb24nOiAnY2l0OmZ1bmN0aW9uJyxcbiAgICAgICdnbWQ6cHJvdG9jb2wnOiAnY2l0OnByb3RvY29sJyxcblxuICAgICAgLy8gdG9waWNcbiAgICAgICdnbWQ6dG9waWNDYXRlZ29yeSc6ICdtcmk6dG9waWNDYXRlZ29yeScsXG4gICAgICAnZ21kOk1EX1RvcGljQ2F0ZWdvcnlDb2RlJzogJ21yaTpNRF9Ub3BpY0NhdGVnb3J5Q29kZScsXG5cbiAgICAgIC8vIHVwZGF0ZSBmcmVxdWVuY3lcbiAgICAgICdnbWQ6cmVzb3VyY2VNYWludGVuYW5jZSc6ICdtcmk6cmVzb3VyY2VNYWludGVuYW5jZScsXG4gICAgICAnZ21kOk1EX01haW50ZW5hbmNlSW5mb3JtYXRpb24nOiAnbW1pOk1EX01haW50ZW5hbmNlSW5mb3JtYXRpb24nLFxuICAgICAgJ2dtZDp1c2VyRGVmaW5lZE1haW50ZW5hbmNlRnJlcXVlbmN5JzpcbiAgICAgICAgJ21taTp1c2VyRGVmaW5lZE1haW50ZW5hbmNlRnJlcXVlbmN5JyxcbiAgICAgICdndHM6VE1fUGVyaW9kRHVyYXRpb24nOiAnZ2NvOlRNX1BlcmlvZER1cmF0aW9uJyxcblxuICAgICAgLy8gY29uc3RyYWludHNcbiAgICAgICdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cyc6ICdtcmk6cmVzb3VyY2VDb25zdHJhaW50cycsXG4gICAgICAnZ21kOk1EX0NvbnN0cmFpbnRzJzogJ21jbzpNRF9Db25zdHJhaW50cycsXG4gICAgICAnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnOiAnbWNvOk1EX0xlZ2FsQ29uc3RyYWludHMnLFxuICAgICAgJ2dtZDpNRF9TZWN1cml0eUNvbnN0cmFpbnRzJzogJ21jbzpNRF9TZWN1cml0eUNvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6dXNlTGltaXRhdGlvbic6ICdtY286dXNlTGltaXRhdGlvbicsXG4gICAgICAnZ21kOnVzZUNvbnN0cmFpbnRzJzogJ21jbzp1c2VDb25zdHJhaW50cycsXG4gICAgICAnZ21kOmFjY2Vzc0NvbnN0cmFpbnRzJzogJ21jbzphY2Nlc3NDb25zdHJhaW50cycsXG4gICAgICAnZ21kOm90aGVyQ29uc3RyYWludHMnOiAnbWNvOm90aGVyQ29uc3RyYWludHMnLFxuICAgICAgJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnOiAnbWNvOk1EX1Jlc3RyaWN0aW9uQ29kZScsXG4gICAgICAnZ21kOmNsYXNzaWZpY2F0aW9uJzogJ21jbzpjbGFzc2lmaWNhdGlvbicsXG4gICAgICAnZ21kOk1EX0NsYXNzaWZpY2F0aW9uQ29kZSc6ICdtY286TURfQ2xhc3NpZmljYXRpb25Db2RlJyxcblxuICAgICAgLy8gb3ZlcnZpZXdzXG4gICAgICAnZ21kOmdyYXBoaWNPdmVydmlldyc6ICdtcmk6Z3JhcGhpY092ZXJ2aWV3JyxcbiAgICAgICdnbWQ6TURfQnJvd3NlR3JhcGhpYyc6ICdtY2M6TURfQnJvd3NlR3JhcGhpYycsXG4gICAgICAnZ21kOmZpbGVOYW1lJzogJ21jYzpmaWxlTmFtZScsXG4gICAgICAnZ21kOmZpbGVEZXNjcmlwdGlvbic6ICdtY2M6ZmlsZURlc2NyaXB0aW9uJyxcblxuICAgICAgLy8gbm8gbW9yZSBVUkwgZWxlbWVudHNcbiAgICAgICdnbWQ6VVJMJzogJ2djbzpDaGFyYWN0ZXJTdHJpbmcnLFxuICAgIH0pXG4gIH1cblxuICBhc3luYyB3cml0ZVJlY29yZChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlPzogc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHN1cGVyLndyaXRlUmVjb3JkKHJlY29yZCwgcmVmZXJlbmNlKVxuICAgIC8vIGZpeCBnY28gbmFtZXNwYWNlIGRlZmluaXRpb24gKGNoYW5nZXMgYmV0d2VlbiBpc28xOTEzOSBhbmQgaXNvMTkxMTUtM1xuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKFxuICAgICAgJ1wiaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9nY29cIicsXG4gICAgICAnXCJodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1Ly0zL2djby8xLjBcIidcbiAgICApXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG4iXX0=
@@ -1,8 +1,8 @@
1
- import { createDocument, createElement, getRootElement, parseXmlString, xmlToString, } from '../xml-utils';
2
- import { writeAbstract, writeContacts, writeContactsForResource, writeDistributions, writeGraphicOverviews, writeKeywords, writeKind, writeLegalConstraints, writeLicenses, writeLineage, writeOnlineResources, writeOtherConstraints, writeOwnerOrganization, writeRecordUpdated, writeResourceCreated, writeResourcePublished, writeResourceUpdated, writeSecurityConstraints, writeSpatialRepresentation, writeStatus, writeTitle, writeTopics, writeUniqueIdentifier, writeUpdateFrequency, } from './write-parts';
3
- import { readAbstract, readContacts, readContactsForResource, readDistributions, readIsoTopics, readKeywords, readKind, readLegalConstraints, readLicenses, readLineage, readOnlineResources, readOtherConstraints, readOverviews, readOwnerOrganization, readRecordUpdated, readResourceCreated, readResourcePublished, readResourceUpdated, readSecurityConstraints, readSpatialRepresentation, readStatus, readTitle, readUniqueIdentifier, readUpdateFrequency, } from './read-parts';
4
- import { isEqual } from '../convert-utils';
5
1
  import { BaseConverter } from '../base.converter';
2
+ import { isEqual } from '../convert-utils';
3
+ import { createDocument, createElement, getRootElement, parseXmlString, xmlToString, } from '../xml-utils';
4
+ import { readAbstract, readContacts, readContactsForResource, readDistributions, readIsoTopics, readKeywords, readKind, readLegalConstraints, readLicenses, readLineage, readOnlineResources, readOtherConstraints, readOverviews, readOwnerOrganization, readRecordUpdated, readResourceCreated, readResourcePublished, readResourceUpdated, readSecurityConstraints, readSpatialRepresentation, readStatus, readTemporalExtents, readTitle, readUniqueIdentifier, readUpdateFrequency, } from './read-parts';
5
+ import { writeAbstract, writeContacts, writeContactsForResource, writeDistributions, writeGraphicOverviews, writeKeywords, writeKind, writeLegalConstraints, writeLicenses, writeLineage, writeOnlineResources, writeOtherConstraints, writeOwnerOrganization, writeRecordUpdated, writeResourceCreated, writeResourcePublished, writeResourceUpdated, writeSecurityConstraints, writeSpatialRepresentation, writeStatus, writeTemporalExtents, writeTitle, writeTopics, writeUniqueIdentifier, writeUpdateFrequency, } from './write-parts';
6
6
  export class Iso19139Converter extends BaseConverter {
7
7
  constructor() {
8
8
  super(...arguments);
@@ -33,9 +33,9 @@ export class Iso19139Converter extends BaseConverter {
33
33
  lineage: readLineage,
34
34
  distributions: readDistributions,
35
35
  onlineResources: readOnlineResources,
36
+ temporalExtents: readTemporalExtents,
36
37
  // TODO
37
38
  spatialExtents: () => [],
38
- temporalExtents: () => [],
39
39
  extras: () => undefined,
40
40
  landingPage: () => undefined,
41
41
  languages: () => [],
@@ -67,9 +67,9 @@ export class Iso19139Converter extends BaseConverter {
67
67
  lineage: writeLineage,
68
68
  distributions: writeDistributions,
69
69
  onlineResources: writeOnlineResources,
70
+ temporalExtents: writeTemporalExtents,
70
71
  // TODO
71
72
  spatialExtents: () => undefined,
72
- temporalExtents: () => undefined,
73
73
  extras: () => undefined,
74
74
  landingPage: () => undefined,
75
75
  languages: () => undefined,
@@ -226,6 +226,8 @@ export class Iso19139Converter extends BaseConverter {
226
226
  fieldChanged('spatialRepresentation') &&
227
227
  this.writers['spatialRepresentation'](record, rootEl);
228
228
  fieldChanged('overviews') && this.writers['overviews'](record, rootEl);
229
+ fieldChanged('temporalExtents') &&
230
+ this.writers['temporalExtents'](record, rootEl);
229
231
  fieldChanged('distributions') &&
230
232
  this.writers['distributions'](record, rootEl);
231
233
  fieldChanged('lineage') && this.writers['lineage'](record, rootEl);
@@ -239,4 +241,4 @@ export class Iso19139Converter extends BaseConverter {
239
241
  return xmlToString(newDocument);
240
242
  }
241
243
  }
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMzkuY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIvaXNvMTkxMzkvaXNvMTkxMzkuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFDTCxjQUFjLEVBQ2QsYUFBYSxFQUNiLGNBQWMsRUFDZCxjQUFjLEVBQ2QsV0FBVyxHQUNaLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixTQUFTLEVBQ1QscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QiwwQkFBMEIsRUFDMUIsV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLG9CQUFvQixHQUNyQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQ0wsWUFBWSxFQUNaLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1osUUFBUSxFQUNSLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osV0FBVyxFQUNYLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixVQUFVLEVBQ1YsU0FBUyxFQUNULG9CQUFvQixFQUNwQixtQkFBbUIsR0FDcEIsTUFBTSxjQUFjLENBQUE7QUFD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QU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUMvQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7U0FDbkU7YUFBTTtZQUNMLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtTQUNsRDtRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVuQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUMsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gIERhdGFzZXRSZWNvcmQsXG4gIFNlcnZpY2VSZWNvcmQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7XG4gIGNyZWF0ZURvY3VtZW50LFxuICBjcmVhdGVFbGVtZW50LFxuICBnZXRSb290RWxlbWVudCxcbiAgcGFyc2VYbWxTdHJpbmcsXG4gIHhtbFRvU3RyaW5nLFxufSBmcm9tICcuLi94bWwtdXRpbHMnXG5pbXBvcnQge1xuICB3cml0ZUFic3RyYWN0LFxuICB3cml0ZUNvbnRhY3RzLFxuICB3cml0ZUNvbnRhY3RzRm9yUmVzb3VyY2UsXG4gIHdyaXRlRGlzdHJpYnV0aW9ucyxcbiAgd3JpdGVHcmFwaGljT3ZlcnZpZXdzLFxuICB3cml0ZUtleXdvcmRzLFxuICB3cml0ZUtpbmQsXG4gIHdyaXRlTGVnYWxDb25zdHJhaW50cyxcbiAgd3JpdGVMaWNlbnNlcyxcbiAgd3JpdGVMaW5lYWdlLFxuICB3cml0ZU9ubGluZVJlc291cmNlcyxcbiAgd3JpdGVPdGhlckNvbnN0cmFpbnRzLFxuICB3cml0ZU93bmVyT3JnYW5pemF0aW9uLFxuICB3cml0ZVJlY29yZFVwZGF0ZWQsXG4gIHdyaXRlUmVzb3VyY2VDcmVhdGVkLFxuICB3cml0ZVJlc291cmNlUHVibGlzaGVkLFxuICB3cml0ZVJlc291cmNlVXBkYXRlZCxcbiAgd3JpdGVTZWN1cml0eUNvbnN0cmFpbnRzLFxuICB3cml0ZVNwYXRpYWxSZXByZXNlbnRhdGlvbixcbiAgd3JpdGVTdGF0dXMsXG4gIHdyaXRlVGl0bGUsXG4gIHdyaXRlVG9waWNzLFxuICB3cml0ZVVuaXF1ZUlkZW50aWZpZXIsXG4gIHdyaXRlVXBkYXRlRnJlcXVlbmN5LFxufSBmcm9tICcuL3dyaXRlLXBhcnRzJ1xuaW1wb3J0IHtcbiAgcmVhZEFic3RyYWN0LFxuICByZWFkQ29udGFjdHMsXG4gIHJlYWRDb250YWN0c0ZvclJlc291cmNlLFxuICByZWFkRGlzdHJpYnV0aW9ucyxcbiAgcmVhZElzb1RvcGljcyxcbiAgcmVhZEtleXdvcmRzLFxuICByZWFkS2luZCxcbiAgcmVhZExlZ2FsQ29uc3RyYWludHMsXG4gIHJlYWRMaWNlbnNlcyxcbiAgcmVhZExpbmVhZ2UsXG4gIHJlYWRPbmxpbmVSZXNvdXJjZXMsXG4gIHJlYWRPdGhlckNvbnN0cmFpbnRzLFxuICByZWFkT3ZlcnZpZXdzLFxuICByZWFkT3duZXJPcmdhbml6YXRpb24sXG4gIHJlYWRSZWNvcmRVcGRhdGVkLFxuICByZWFkUmVzb3VyY2VDcmVhdGVkLFxuICByZWFkUmVzb3VyY2VQdWJsaXNoZWQsXG4gIHJlYWRSZXNvdXJjZVVwZGF0ZWQsXG4gIHJlYWRTZWN1cml0eUNvbnN0cmFpbnRzLFxuICByZWFkU3BhdGlhbFJlcHJlc2VudGF0aW9uLFxuICByZWFkU3RhdHVzLFxuICByZWFkVGl0bGUsXG4gIHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICByZWFkVXBkYXRlRnJlcXVlbmN5LFxufSBmcm9tICcuL3JlYWQtcGFydHMnXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnLi4vY29udmVydC11dGlscydcbmltcG9ydCB7IEJhc2VDb252ZXJ0ZXIgfSBmcm9tICcuLi9iYXNlLmNvbnZlcnRlcidcbmltcG9ydCB7IFhtbEVsZW1lbnQgfSBmcm9tICdAcmdyb3ZlL3BhcnNlLXhtbCdcblxuZXhwb3J0IGNsYXNzIElzbzE5MTM5Q29udmVydGVyIGV4dGVuZHMgQmFzZUNvbnZlcnRlcjxzdHJpbmc+IHtcbiAgcHJvdGVjdGVkIHJlYWRlcnM6IFJlY29yZDxcbiAgICBDYXRhbG9nUmVjb3JkS2V5cyxcbiAgICAocm9vdEVsOiBYbWxFbGVtZW50KSA9PiB1bmtub3duXG4gID4gPSB7XG4gICAgdW5pcXVlSWRlbnRpZmllcjogcmVhZFVuaXF1ZUlkZW50aWZpZXIsXG4gICAga2luZDogcmVhZEtpbmQsXG4gICAgb3duZXJPcmdhbml6YXRpb246IHJlYWRPd25lck9yZ2FuaXphdGlvbixcbiAgICByZWNvcmRVcGRhdGVkOiByZWFkUmVjb3JkVXBkYXRlZCxcbiAgICByZWNvcmRDcmVhdGVkOiAoKSA9PiB1bmRlZmluZWQsIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSVNPMTkxMzlcbiAgICByZWNvcmRQdWJsaXNoZWQ6ICgpID0+IHVuZGVmaW5lZCwgLy8gbm90IHN1cHBvcnRlZCBpbiBJU08xOTEzOVxuICAgIHJlc291cmNlVXBkYXRlZDogcmVhZFJlc291cmNlVXBkYXRlZCxcbiAgICByZXNvdXJjZUNyZWF0ZWQ6IHJlYWRSZXNvdXJjZUNyZWF0ZWQsXG4gICAgcmVzb3VyY2VQdWJsaXNoZWQ6IHJlYWRSZXNvdXJjZVB1Ymxpc2hlZCxcbiAgICB0aXRsZTogcmVhZFRpdGxlLFxuICAgIGFic3RyYWN0OiByZWFkQWJzdHJhY3QsXG4gICAgY29udGFjdHM6IHJlYWRDb250YWN0cyxcbiAgICBjb250YWN0c0ZvclJlc291cmNlOiByZWFkQ29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICBrZXl3b3JkczogcmVhZEtleXdvcmRzLFxuICAgIHRvcGljczogcmVhZElzb1RvcGljcyxcbiAgICBsaWNlbnNlczogcmVhZExpY2Vuc2VzLFxuICAgIGxlZ2FsQ29uc3RyYWludHM6IHJlYWRMZWdhbENvbnN0cmFpbnRzLFxuICAgIHNlY3VyaXR5Q29uc3RyYWludHM6IHJlYWRTZWN1cml0eUNvbnN0cmFpbnRzLFxuICAgIG90aGVyQ29uc3RyYWludHM6IHJlYWRPdGhlckNvbnN0cmFpbnRzLFxuICAgIHN0YXR1czogcmVhZFN0YXR1cyxcbiAgICB1cGRhdGVGcmVxdWVuY3k6IHJlYWRVcGRhdGVGcmVxdWVuY3ksXG4gICAgc3BhdGlhbFJlcHJlc2VudGF0aW9uOiByZWFkU3BhdGlhbFJlcHJlc2VudGF0aW9uLFxuICAgIG92ZXJ2aWV3czogcmVhZE92ZXJ2aWV3cyxcbiAgICBsaW5lYWdlOiByZWFkTGluZWFnZSxcbiAgICBkaXN0cmlidXRpb25zOiByZWFkRGlzdHJpYnV0aW9ucyxcbiAgICBvbmxpbmVSZXNvdXJjZXM6IHJlYWRPbmxpbmVSZXNvdXJjZXMsXG4gICAgLy8gVE9ET1xuICAgIHNwYXRpYWxFeHRlbnRzOiAoKSA9PiBbXSxcbiAgICB0ZW1wb3JhbEV4dGVudHM6ICgpID0+IFtdLFxuICAgIGV4dHJhczogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxhbmRpbmdQYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGFuZ3VhZ2VzOiAoKSA9PiBbXSxcbiAgfVxuXG4gIHByb3RlY3RlZCB3cml0ZXJzOiBSZWNvcmQ8XG4gICAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gICAgKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSA9PiB2b2lkXG4gID4gPSB7XG4gICAgdW5pcXVlSWRlbnRpZmllcjogd3JpdGVVbmlxdWVJZGVudGlmaWVyLFxuICAgIGtpbmQ6IHdyaXRlS2luZCxcbiAgICBvd25lck9yZ2FuaXphdGlvbjogd3JpdGVPd25lck9yZ2FuaXphdGlvbixcbiAgICByZWNvcmRVcGRhdGVkOiB3cml0ZVJlY29yZFVwZGF0ZWQsXG4gICAgcmVjb3JkQ3JlYXRlZDogKCkgPT4gdW5kZWZpbmVkLCAvLyBub3Qgc3VwcG9ydGVkIGluIElTTzE5MTM5XG4gICAgcmVjb3JkUHVibGlzaGVkOiAoKSA9PiB1bmRlZmluZWQsIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSVNPMTkxMzlcbiAgICByZXNvdXJjZVVwZGF0ZWQ6IHdyaXRlUmVzb3VyY2VVcGRhdGVkLFxuICAgIHJlc291cmNlQ3JlYXRlZDogd3JpdGVSZXNvdXJjZUNyZWF0ZWQsXG4gICAgcmVzb3VyY2VQdWJsaXNoZWQ6IHdyaXRlUmVzb3VyY2VQdWJsaXNoZWQsXG4gICAgdGl0bGU6IHdyaXRlVGl0bGUsXG4gICAgYWJzdHJhY3Q6IHdyaXRlQWJzdHJhY3QsXG4gICAgY29udGFjdHM6IHdyaXRlQ29udGFjdHMsXG4gICAgY29udGFjdHNGb3JSZXNvdXJjZTogd3JpdGVDb250YWN0c0ZvclJlc291cmNlLFxuICAgIGtleXdvcmRzOiB3cml0ZUtleXdvcmRzLFxuICAgIHRvcGljczogd3JpdGVUb3BpY3MsXG4gICAgbGljZW5zZXM6IHdyaXRlTGljZW5zZXMsXG4gICAgbGVnYWxDb25zdHJhaW50czogd3JpdGVMZWdhbENvbnN0cmFpbnRzLFxuICAgIHNlY3VyaXR5Q29uc3RyYWludHM6IHdyaXRlU2VjdXJpdHlDb25zdHJhaW50cyxcbiAgICBvdGhlckNvbnN0cmFpbnRzOiB3cml0ZU90aGVyQ29uc3RyYWludHMsXG4gICAgc3RhdHVzOiB3cml0ZVN0YXR1cyxcbiAgICB1cGRhdGVGcmVxdWVuY3k6IHdyaXRlVXBkYXRlRnJlcXVlbmN5LFxuICAgIHNwYXRpYWxSZXByZXNlbnRhdGlvbjogd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb24sXG4gICAgb3ZlcnZpZXdzOiB3cml0ZUdyYXBoaWNPdmVydmlld3MsXG4gICAgbGluZWFnZTogd3JpdGVMaW5lYWdlLFxuICAgIGRpc3RyaWJ1dGlvbnM6IHdyaXRlRGlzdHJpYnV0aW9ucyxcbiAgICBvbmxpbmVSZXNvdXJjZXM6IHdyaXRlT25saW5lUmVzb3VyY2VzLFxuICAgIC8vIFRPRE9cbiAgICBzcGF0aWFsRXh0ZW50czogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHRlbXBvcmFsRXh0ZW50czogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGV4dHJhczogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxhbmRpbmdQYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGFuZ3VhZ2VzOiAoKSA9PiB1bmRlZmluZWQsXG4gIH1cblxuICBwcm90ZWN0ZWQgYmVmb3JlRG9jdW1lbnRDcmVhdGlvbihyb290RWxlbWVudDogWG1sRWxlbWVudCkge1xuICAgIC8vIHRvIG92ZXJyaWRlXG4gIH1cblxuICBhc3luYyByZWFkUmVjb3JkKGRvY3VtZW50OiBzdHJpbmcpOiBQcm9taXNlPENhdGFsb2dSZWNvcmQ+IHtcbiAgICBjb25zdCBkb2MgPSBwYXJzZVhtbFN0cmluZyhkb2N1bWVudClcbiAgICBjb25zdCByb290RWwgPSBnZXRSb290RWxlbWVudChkb2MpXG5cbiAgICBjb25zdCB1bmlxdWVJZGVudGlmaWVyID0gdGhpcy5yZWFkZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10ocm9vdEVsKVxuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnJlYWRlcnNbJ2tpbmQnXShyb290RWwpXG4gICAgY29uc3Qgb3duZXJPcmdhbml6YXRpb24gPSB0aGlzLnJlYWRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10ocm9vdEVsKVxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5yZWFkZXJzWyd0aXRsZSddKHJvb3RFbClcbiAgICBjb25zdCBhYnN0cmFjdCA9IHRoaXMucmVhZGVyc1snYWJzdHJhY3QnXShyb290RWwpXG4gICAgY29uc3QgY29udGFjdHMgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzJ10ocm9vdEVsKVxuICAgIGNvbnN0IGNvbnRhY3RzRm9yUmVzb3VyY2UgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShyb290RWwpXG4gICAgY29uc3QgcmVjb3JkVXBkYXRlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkVXBkYXRlZCddKHJvb3RFbClcbiAgICBjb25zdCByZWNvcmRDcmVhdGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRDcmVhdGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlY29yZFB1Ymxpc2hlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkUHVibGlzaGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlc291cmNlQ3JlYXRlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VDcmVhdGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlc291cmNlVXBkYXRlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VVcGRhdGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlc291cmNlUHVibGlzaGVkID0gdGhpcy5yZWFkZXJzWydyZXNvdXJjZVB1Ymxpc2hlZCddKHJvb3RFbClcbiAgICBjb25zdCBrZXl3b3JkcyA9IHRoaXMucmVhZGVyc1sna2V5d29yZHMnXShyb290RWwpXG4gICAgY29uc3QgdG9waWNzID0gdGhpcy5yZWFkZXJzWyd0b3BpY3MnXShyb290RWwpXG4gICAgY29uc3QgbGVnYWxDb25zdHJhaW50cyA9IHRoaXMucmVhZGVyc1snbGVnYWxDb25zdHJhaW50cyddKHJvb3RFbClcbiAgICBjb25zdCBvdGhlckNvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydvdGhlckNvbnN0cmFpbnRzJ10ocm9vdEVsKVxuICAgIGNvbnN0IHNlY3VyaXR5Q29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ3NlY3VyaXR5Q29uc3RyYWludHMnXShyb290RWwpXG4gICAgY29uc3QgbGljZW5zZXMgPSB0aGlzLnJlYWRlcnNbJ2xpY2Vuc2VzJ10ocm9vdEVsKVxuICAgIGNvbnN0IG92ZXJ2aWV3cyA9IHRoaXMucmVhZGVyc1snb3ZlcnZpZXdzJ10ocm9vdEVsKVxuICAgIGNvbnN0IGxhbmRpbmdQYWdlID0gdGhpcy5yZWFkZXJzWydsYW5kaW5nUGFnZSddKHJvb3RFbClcblxuICAgIGlmIChraW5kID09PSAnZGF0YXNldCcpIHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucmVhZGVyc1snc3RhdHVzJ10ocm9vdEVsKVxuICAgICAgY29uc3Qgc3BhdGlhbFJlcHJlc2VudGF0aW9uID1cbiAgICAgICAgdGhpcy5yZWFkZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXShyb290RWwpXG4gICAgICBjb25zdCBzcGF0aWFsRXh0ZW50cyA9IHRoaXMucmVhZGVyc1snc3BhdGlhbEV4dGVudHMnXShyb290RWwpXG4gICAgICBjb25zdCB0ZW1wb3JhbEV4dGVudHMgPSB0aGlzLnJlYWRlcnNbJ3RlbXBvcmFsRXh0ZW50cyddKHJvb3RFbClcbiAgICAgIGNvbnN0IGxpbmVhZ2UgPSB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXShyb290RWwpXG4gICAgICBjb25zdCBkaXN0cmlidXRpb25zID0gdGhpcy5yZWFkZXJzWydkaXN0cmlidXRpb25zJ10ocm9vdEVsKVxuICAgICAgY29uc3QgdXBkYXRlRnJlcXVlbmN5ID0gdGhpcy5yZWFkZXJzWyd1cGRhdGVGcmVxdWVuY3knXShyb290RWwpXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIGxhbmd1YWdlczogW10sXG4gICAgICAgIC4uLihyZWNvcmRDcmVhdGVkICYmIHsgcmVjb3JkQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlY29yZFB1Ymxpc2hlZCAmJiB7IHJlY29yZFB1Ymxpc2hlZCB9KSxcbiAgICAgICAgcmVjb3JkVXBkYXRlZCxcbiAgICAgICAgLi4uKHJlc291cmNlQ3JlYXRlZCAmJiB7IHJlc291cmNlQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlVXBkYXRlZCAmJiB7IHJlc291cmNlVXBkYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlUHVibGlzaGVkICYmIHsgcmVzb3VyY2VQdWJsaXNoZWQgfSksXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGFic3RyYWN0LFxuICAgICAgICBvd25lck9yZ2FuaXphdGlvbixcbiAgICAgICAgY29udGFjdHMsXG4gICAgICAgIGNvbnRhY3RzRm9yUmVzb3VyY2UsXG4gICAgICAgIGtleXdvcmRzLFxuICAgICAgICB0b3BpY3MsXG4gICAgICAgIGxpY2Vuc2VzLFxuICAgICAgICBsZWdhbENvbnN0cmFpbnRzLFxuICAgICAgICBzZWN1cml0eUNvbnN0cmFpbnRzLFxuICAgICAgICBvdGhlckNvbnN0cmFpbnRzLFxuICAgICAgICBsaW5lYWdlLFxuICAgICAgICAuLi4oc3BhdGlhbFJlcHJlc2VudGF0aW9uICYmIHsgc3BhdGlhbFJlcHJlc2VudGF0aW9uIH0pLFxuICAgICAgICBvdmVydmlld3MsXG4gICAgICAgIHNwYXRpYWxFeHRlbnRzLFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHMsXG4gICAgICAgIGRpc3RyaWJ1dGlvbnMsXG4gICAgICAgIHVwZGF0ZUZyZXF1ZW5jeSxcbiAgICAgICAgLi4uKGxhbmRpbmdQYWdlICYmIHsgbGFuZGluZ1BhZ2UgfSksXG4gICAgICB9IGFzIERhdGFzZXRSZWNvcmRcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb25saW5lUmVzb3VyY2VzID0gdGhpcy5yZWFkZXJzWydvbmxpbmVSZXNvdXJjZXMnXShyb290RWwpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICBraW5kLFxuICAgICAgICBsYW5ndWFnZXM6IFtdLFxuICAgICAgICAuLi4ocmVjb3JkQ3JlYXRlZCAmJiB7IHJlY29yZENyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZWNvcmRQdWJsaXNoZWQgJiYgeyByZWNvcmRQdWJsaXNoZWQgfSksXG4gICAgICAgIHJlY29yZFVwZGF0ZWQsXG4gICAgICAgIC4uLihyZXNvdXJjZUNyZWF0ZWQgJiYgeyByZXNvdXJjZUNyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVVwZGF0ZWQgJiYgeyByZXNvdXJjZVVwZGF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVB1Ymxpc2hlZCAmJiB7IHJlc291cmNlUHVibGlzaGVkIH0pLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgYWJzdHJhY3QsXG4gICAgICAgIG93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgICBjb250YWN0cyxcbiAgICAgICAgY29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICAgICAga2V5d29yZHMsXG4gICAgICAgIHRvcGljcyxcbiAgICAgICAgbGljZW5zZXMsXG4gICAgICAgIGxlZ2FsQ29uc3RyYWludHMsXG4gICAgICAgIHNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgICAgIG90aGVyQ29uc3RyYWludHMsXG4gICAgICAgIG92ZXJ2aWV3cyxcbiAgICAgICAgb25saW5lUmVzb3VyY2VzLFxuICAgICAgICAuLi4obGFuZGluZ1BhZ2UgJiYgeyBsYW5kaW5nUGFnZSB9KSxcbiAgICAgIH0gYXMgU2VydmljZVJlY29yZFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHdyaXRlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgcm9vdEVsOiBYbWxFbGVtZW50XG4gICAgbGV0IGZpZWxkQ2hhbmdlZDogKG5hbWU6IHN0cmluZykgPT4gYm9vbGVhblxuICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsRG9jID0gcGFyc2VYbWxTdHJpbmcocmVmZXJlbmNlKVxuICAgICAgY29uc3Qgb3JpZ2luYWxSZWNvcmQgPSBhd2FpdCB0aGlzLnJlYWRSZWNvcmQocmVmZXJlbmNlKVxuICAgICAgcm9vdEVsID0gZ2V0Um9vdEVsZW1lbnQob3JpZ2luYWxEb2MpXG5cbiAgICAgIGZpZWxkQ2hhbmdlZCA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVjb3JkICE9PSBudWxsXG4gICAgICAgICAgPyAhaXNFcXVhbChyZWNvcmRbbmFtZV0sIG9yaWdpbmFsUmVjb3JkW25hbWVdKVxuICAgICAgICAgIDogdHJ1ZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByb290RWwgPSBjcmVhdGVFbGVtZW50KCdnbWQ6TURfTWV0YWRhdGEnKSgpXG4gICAgICBmaWVsZENoYW5nZWQgPSAoKSA9PiB0cnVlXG4gICAgfVxuXG4gICAgZmllbGRDaGFuZ2VkKCd1bmlxdWVJZGVudGlmaWVyJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndW5pcXVlSWRlbnRpZmllciddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgna2luZCcpICYmIHRoaXMud3JpdGVyc1sna2luZCddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdjb250YWN0cycpICYmIHRoaXMud3JpdGVyc1snY29udGFjdHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ293bmVyT3JnYW5pemF0aW9uJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snb3duZXJPcmdhbml6YXRpb24nXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVjb3JkVXBkYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFVwZGF0ZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3JlY29yZENyZWF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRDcmVhdGVkJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZWNvcmRQdWJsaXNoZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRQdWJsaXNoZWQnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgndGl0bGUnKSAmJiB0aGlzLndyaXRlcnNbJ3RpdGxlJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdhYnN0cmFjdCcpICYmIHRoaXMud3JpdGVyc1snYWJzdHJhY3QnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVzb3VyY2VDcmVhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VDcmVhdGVkJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVB1Ymxpc2hlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVVwZGF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZVVwZGF0ZWQnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgnY29udGFjdHNGb3JSZXNvdXJjZScpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgna2V5d29yZHMnKSAmJiB0aGlzLndyaXRlcnNbJ2tleXdvcmRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCd0b3BpY3MnKSAmJiB0aGlzLndyaXRlcnNbJ3RvcGljcyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnbGVnYWxDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2xlZ2FsQ29uc3RyYWludHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3NlY3VyaXR5Q29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydzZWN1cml0eUNvbnN0cmFpbnRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdsaWNlbnNlcycpICYmIHRoaXMud3JpdGVyc1snbGljZW5zZXMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ290aGVyQ29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvdGhlckNvbnN0cmFpbnRzJ10ocmVjb3JkLCByb290RWwpXG5cbiAgICBpZiAocmVjb3JkLmtpbmQgPT09ICdkYXRhc2V0Jykge1xuICAgICAgZmllbGRDaGFuZ2VkKCdzdGF0dXMnKSAmJiB0aGlzLndyaXRlcnNbJ3N0YXR1cyddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCd1cGRhdGVGcmVxdWVuY3knKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ3VwZGF0ZUZyZXF1ZW5jeSddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCdzcGF0aWFsUmVwcmVzZW50YXRpb24nKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ3NwYXRpYWxSZXByZXNlbnRhdGlvbiddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCdvdmVydmlld3MnKSAmJiB0aGlzLndyaXRlcnNbJ292ZXJ2aWV3cyddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCdkaXN0cmlidXRpb25zJykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWydkaXN0cmlidXRpb25zJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ2xpbmVhZ2UnKSAmJiB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXShyZWNvcmQsIHJvb3RFbClcbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGRDaGFuZ2VkKCdvbmxpbmVSZXNvdXJjZXMnKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ29ubGluZVJlc291cmNlcyddKHJlY29yZCwgcm9vdEVsKVxuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRG9jdW1lbnRDcmVhdGlvbihyb290RWwpXG5cbiAgICBjb25zdCBuZXdEb2N1bWVudCA9IGNyZWF0ZURvY3VtZW50KHJvb3RFbClcbiAgICByZXR1cm4geG1sVG9TdHJpbmcobmV3RG9jdW1lbnQpXG4gIH1cbn1cbiJdfQ==
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMzkuY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIvaXNvMTkxMzkvaXNvMTkxMzkuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBQ2IsY0FBYyxFQUNkLGNBQWMsRUFDZCxXQUFXLEdBQ1osTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLG1CQUFtQixHQUNwQixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsU0FBUyxFQUNULHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQix3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QyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDakQsWUFBWSxDQUFDLGVBQWUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDL0MsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQ25FO2FBQU07WUFDTCxZQUFZLENBQUMsaUJBQWlCLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7U0FDbEQ7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFbkMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFDLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIENhdGFsb2dSZWNvcmRLZXlzLFxuICBEYXRhc2V0UmVjb3JkLFxuICBTZXJ2aWNlUmVjb3JkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBYbWxFbGVtZW50IH0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyIH0gZnJvbSAnLi4vYmFzZS5jb252ZXJ0ZXInXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnLi4vY29udmVydC11dGlscydcbmltcG9ydCB7XG4gIGNyZWF0ZURvY3VtZW50LFxuICBjcmVhdGVFbGVtZW50LFxuICBnZXRSb290RWxlbWVudCxcbiAgcGFyc2VYbWxTdHJpbmcsXG4gIHhtbFRvU3RyaW5nLFxufSBmcm9tICcuLi94bWwtdXRpbHMnXG5pbXBvcnQge1xuICByZWFkQWJzdHJhY3QsXG4gIHJlYWRDb250YWN0cyxcbiAgcmVhZENvbnRhY3RzRm9yUmVzb3VyY2UsXG4gIHJlYWREaXN0cmlidXRpb25zLFxuICByZWFkSXNvVG9waWNzLFxuICByZWFkS2V5d29yZHMsXG4gIHJlYWRLaW5kLFxuICByZWFkTGVnYWxDb25zdHJhaW50cyxcbiAgcmVhZExpY2Vuc2VzLFxuICByZWFkTGluZWFnZSxcbiAgcmVhZE9ubGluZVJlc291cmNlcyxcbiAgcmVhZE90aGVyQ29uc3RyYWludHMsXG4gIHJlYWRPdmVydmlld3MsXG4gIHJlYWRPd25lck9yZ2FuaXphdGlvbixcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNyZWF0ZWQsXG4gIHJlYWRSZXNvdXJjZVB1Ymxpc2hlZCxcbiAgcmVhZFJlc291cmNlVXBkYXRlZCxcbiAgcmVhZFNlY3VyaXR5Q29uc3RyYWludHMsXG4gIHJlYWRTcGF0aWFsUmVwcmVzZW50YXRpb24sXG4gIHJlYWRTdGF0dXMsXG4gIHJlYWRUZW1wb3JhbEV4dGVudHMsXG4gIHJlYWRUaXRsZSxcbiAgcmVhZFVuaXF1ZUlkZW50aWZpZXIsXG4gIHJlYWRVcGRhdGVGcmVxdWVuY3ksXG59IGZyb20gJy4vcmVhZC1wYXJ0cydcbmltcG9ydCB7XG4gIHdyaXRlQWJzdHJhY3QsXG4gIHdyaXRlQ29udGFjdHMsXG4gIHdyaXRlQ29udGFjdHNGb3JSZXNvdXJjZSxcbiAgd3JpdGVEaXN0cmlidXRpb25zLFxuICB3cml0ZUdyYXBoaWNPdmVydmlld3MsXG4gIHdyaXRlS2V5d29yZHMsXG4gIHdyaXRlS2luZCxcbiAgd3JpdGVMZWdhbENvbnN0cmFpbnRzLFxuICB3cml0ZUxpY2Vuc2VzLFxuICB3cml0ZUxpbmVhZ2UsXG4gIHdyaXRlT25saW5lUmVzb3VyY2VzLFxuICB3cml0ZU90aGVyQ29uc3RyYWludHMsXG4gIHdyaXRlT3duZXJPcmdhbml6YXRpb24sXG4gIHdyaXRlUmVjb3JkVXBkYXRlZCxcbiAgd3JpdGVSZXNvdXJjZUNyZWF0ZWQsXG4gIHdyaXRlUmVzb3VyY2VQdWJsaXNoZWQsXG4gIHdyaXRlUmVzb3VyY2VVcGRhdGVkLFxuICB3cml0ZVNlY3VyaXR5Q29uc3RyYWludHMsXG4gIHdyaXRlU3BhdGlhbFJlcHJlc2VudGF0aW9uLFxuICB3cml0ZVN0YXR1cyxcbiAgd3JpdGVUZW1wb3JhbEV4dGVudHMsXG4gIHdyaXRlVGl0bGUsXG4gIHdyaXRlVG9waWNzLFxuICB3cml0ZVVuaXF1ZUlkZW50aWZpZXIsXG4gIHdyaXRlVXBkYXRlRnJlcXVlbmN5LFxufSBmcm9tICcuL3dyaXRlLXBhcnRzJ1xuXG5leHBvcnQgY2xhc3MgSXNvMTkxMzlDb252ZXJ0ZXIgZXh0ZW5kcyBCYXNlQ29udmVydGVyPHN0cmluZz4ge1xuICBwcm90ZWN0ZWQgcmVhZGVyczogUmVjb3JkPFxuICAgIENhdGFsb2dSZWNvcmRLZXlzLFxuICAgIChyb290RWw6IFhtbEVsZW1lbnQpID0+IHVua25vd25cbiAgPiA9IHtcbiAgICB1bmlxdWVJZGVudGlmaWVyOiByZWFkVW5pcXVlSWRlbnRpZmllcixcbiAgICBraW5kOiByZWFkS2luZCxcbiAgICBvd25lck9yZ2FuaXphdGlvbjogcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICAgIHJlY29yZFVwZGF0ZWQ6IHJlYWRSZWNvcmRVcGRhdGVkLFxuICAgIHJlY29yZENyZWF0ZWQ6ICgpID0+IHVuZGVmaW5lZCwgLy8gbm90IHN1cHBvcnRlZCBpbiBJU08xOTEzOVxuICAgIHJlY29yZFB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLCAvLyBub3Qgc3VwcG9ydGVkIGluIElTTzE5MTM5XG4gICAgcmVzb3VyY2VVcGRhdGVkOiByZWFkUmVzb3VyY2VVcGRhdGVkLFxuICAgIHJlc291cmNlQ3JlYXRlZDogcmVhZFJlc291cmNlQ3JlYXRlZCxcbiAgICByZXNvdXJjZVB1Ymxpc2hlZDogcmVhZFJlc291cmNlUHVibGlzaGVkLFxuICAgIHRpdGxlOiByZWFkVGl0bGUsXG4gICAgYWJzdHJhY3Q6IHJlYWRBYnN0cmFjdCxcbiAgICBjb250YWN0czogcmVhZENvbnRhY3RzLFxuICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IHJlYWRDb250YWN0c0ZvclJlc291cmNlLFxuICAgIGtleXdvcmRzOiByZWFkS2V5d29yZHMsXG4gICAgdG9waWNzOiByZWFkSXNvVG9waWNzLFxuICAgIGxpY2Vuc2VzOiByZWFkTGljZW5zZXMsXG4gICAgbGVnYWxDb25zdHJhaW50czogcmVhZExlZ2FsQ29uc3RyYWludHMsXG4gICAgc2VjdXJpdHlDb25zdHJhaW50czogcmVhZFNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgb3RoZXJDb25zdHJhaW50czogcmVhZE90aGVyQ29uc3RyYWludHMsXG4gICAgc3RhdHVzOiByZWFkU3RhdHVzLFxuICAgIHVwZGF0ZUZyZXF1ZW5jeTogcmVhZFVwZGF0ZUZyZXF1ZW5jeSxcbiAgICBzcGF0aWFsUmVwcmVzZW50YXRpb246IHJlYWRTcGF0aWFsUmVwcmVzZW50YXRpb24sXG4gICAgb3ZlcnZpZXdzOiByZWFkT3ZlcnZpZXdzLFxuICAgIGxpbmVhZ2U6IHJlYWRMaW5lYWdlLFxuICAgIGRpc3RyaWJ1dGlvbnM6IHJlYWREaXN0cmlidXRpb25zLFxuICAgIG9ubGluZVJlc291cmNlczogcmVhZE9ubGluZVJlc291cmNlcyxcbiAgICB0ZW1wb3JhbEV4dGVudHM6IHJlYWRUZW1wb3JhbEV4dGVudHMsXG4gICAgLy8gVE9ET1xuICAgIHNwYXRpYWxFeHRlbnRzOiAoKSA9PiBbXSxcbiAgICBleHRyYXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsYW5kaW5nUGFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxhbmd1YWdlczogKCkgPT4gW10sXG4gIH1cblxuICBwcm90ZWN0ZWQgd3JpdGVyczogUmVjb3JkPFxuICAgIENhdGFsb2dSZWNvcmRLZXlzLFxuICAgIChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkgPT4gdm9pZFxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbiAgICBraW5kOiB3cml0ZUtpbmQsXG4gICAgb3duZXJPcmdhbml6YXRpb246IHdyaXRlT3duZXJPcmdhbml6YXRpb24sXG4gICAgcmVjb3JkVXBkYXRlZDogd3JpdGVSZWNvcmRVcGRhdGVkLFxuICAgIHJlY29yZENyZWF0ZWQ6ICgpID0+IHVuZGVmaW5lZCwgLy8gbm90IHN1cHBvcnRlZCBpbiBJU08xOTEzOVxuICAgIHJlY29yZFB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLCAvLyBub3Qgc3VwcG9ydGVkIGluIElTTzE5MTM5XG4gICAgcmVzb3VyY2VVcGRhdGVkOiB3cml0ZVJlc291cmNlVXBkYXRlZCxcbiAgICByZXNvdXJjZUNyZWF0ZWQ6IHdyaXRlUmVzb3VyY2VDcmVhdGVkLFxuICAgIHJlc291cmNlUHVibGlzaGVkOiB3cml0ZVJlc291cmNlUHVibGlzaGVkLFxuICAgIHRpdGxlOiB3cml0ZVRpdGxlLFxuICAgIGFic3RyYWN0OiB3cml0ZUFic3RyYWN0LFxuICAgIGNvbnRhY3RzOiB3cml0ZUNvbnRhY3RzLFxuICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IHdyaXRlQ29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICBrZXl3b3Jkczogd3JpdGVLZXl3b3JkcyxcbiAgICB0b3BpY3M6IHdyaXRlVG9waWNzLFxuICAgIGxpY2Vuc2VzOiB3cml0ZUxpY2Vuc2VzLFxuICAgIGxlZ2FsQ29uc3RyYWludHM6IHdyaXRlTGVnYWxDb25zdHJhaW50cyxcbiAgICBzZWN1cml0eUNvbnN0cmFpbnRzOiB3cml0ZVNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgb3RoZXJDb25zdHJhaW50czogd3JpdGVPdGhlckNvbnN0cmFpbnRzLFxuICAgIHN0YXR1czogd3JpdGVTdGF0dXMsXG4gICAgdXBkYXRlRnJlcXVlbmN5OiB3cml0ZVVwZGF0ZUZyZXF1ZW5jeSxcbiAgICBzcGF0aWFsUmVwcmVzZW50YXRpb246IHdyaXRlU3BhdGlhbFJlcHJlc2VudGF0aW9uLFxuICAgIG92ZXJ2aWV3czogd3JpdGVHcmFwaGljT3ZlcnZpZXdzLFxuICAgIGxpbmVhZ2U6IHdyaXRlTGluZWFnZSxcbiAgICBkaXN0cmlidXRpb25zOiB3cml0ZURpc3RyaWJ1dGlvbnMsXG4gICAgb25saW5lUmVzb3VyY2VzOiB3cml0ZU9ubGluZVJlc291cmNlcyxcbiAgICB0ZW1wb3JhbEV4dGVudHM6IHdyaXRlVGVtcG9yYWxFeHRlbnRzLFxuICAgIC8vIFRPRE9cbiAgICBzcGF0aWFsRXh0ZW50czogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGV4dHJhczogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxhbmRpbmdQYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGFuZ3VhZ2VzOiAoKSA9PiB1bmRlZmluZWQsXG4gIH1cblxuICBwcm90ZWN0ZWQgYmVmb3JlRG9jdW1lbnRDcmVhdGlvbihyb290RWxlbWVudDogWG1sRWxlbWVudCkge1xuICAgIC8vIHRvIG92ZXJyaWRlXG4gIH1cblxuICBhc3luYyByZWFkUmVjb3JkKGRvY3VtZW50OiBzdHJpbmcpOiBQcm9taXNlPENhdGFsb2dSZWNvcmQ+IHtcbiAgICBjb25zdCBkb2MgPSBwYXJzZVhtbFN0cmluZyhkb2N1bWVudClcbiAgICBjb25zdCByb290RWwgPSBnZXRSb290RWxlbWVudChkb2MpXG5cbiAgICBjb25zdCB1bmlxdWVJZGVudGlmaWVyID0gdGhpcy5yZWFkZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10ocm9vdEVsKVxuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnJlYWRlcnNbJ2tpbmQnXShyb290RWwpXG4gICAgY29uc3Qgb3duZXJPcmdhbml6YXRpb24gPSB0aGlzLnJlYWRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10ocm9vdEVsKVxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5yZWFkZXJzWyd0aXRsZSddKHJvb3RFbClcbiAgICBjb25zdCBhYnN0cmFjdCA9IHRoaXMucmVhZGVyc1snYWJzdHJhY3QnXShyb290RWwpXG4gICAgY29uc3QgY29udGFjdHMgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzJ10ocm9vdEVsKVxuICAgIGNvbnN0IGNvbnRhY3RzRm9yUmVzb3VyY2UgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShyb290RWwpXG4gICAgY29uc3QgcmVjb3JkVXBkYXRlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkVXBkYXRlZCddKHJvb3RFbClcbiAgICBjb25zdCByZWNvcmRDcmVhdGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRDcmVhdGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlY29yZFB1Ymxpc2hlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkUHVibGlzaGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlc291cmNlQ3JlYXRlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VDcmVhdGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlc291cmNlVXBkYXRlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VVcGRhdGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlc291cmNlUHVibGlzaGVkID0gdGhpcy5yZWFkZXJzWydyZXNvdXJjZVB1Ymxpc2hlZCddKHJvb3RFbClcbiAgICBjb25zdCBrZXl3b3JkcyA9IHRoaXMucmVhZGVyc1sna2V5d29yZHMnXShyb290RWwpXG4gICAgY29uc3QgdG9waWNzID0gdGhpcy5yZWFkZXJzWyd0b3BpY3MnXShyb290RWwpXG4gICAgY29uc3QgbGVnYWxDb25zdHJhaW50cyA9IHRoaXMucmVhZGVyc1snbGVnYWxDb25zdHJhaW50cyddKHJvb3RFbClcbiAgICBjb25zdCBvdGhlckNvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydvdGhlckNvbnN0cmFpbnRzJ10ocm9vdEVsKVxuICAgIGNvbnN0IHNlY3VyaXR5Q29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ3NlY3VyaXR5Q29uc3RyYWludHMnXShyb290RWwpXG4gICAgY29uc3QgbGljZW5zZXMgPSB0aGlzLnJlYWRlcnNbJ2xpY2Vuc2VzJ10ocm9vdEVsKVxuICAgIGNvbnN0IG92ZXJ2aWV3cyA9IHRoaXMucmVhZGVyc1snb3ZlcnZpZXdzJ10ocm9vdEVsKVxuICAgIGNvbnN0IGxhbmRpbmdQYWdlID0gdGhpcy5yZWFkZXJzWydsYW5kaW5nUGFnZSddKHJvb3RFbClcblxuICAgIGlmIChraW5kID09PSAnZGF0YXNldCcpIHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucmVhZGVyc1snc3RhdHVzJ10ocm9vdEVsKVxuICAgICAgY29uc3Qgc3BhdGlhbFJlcHJlc2VudGF0aW9uID1cbiAgICAgICAgdGhpcy5yZWFkZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXShyb290RWwpXG4gICAgICBjb25zdCBzcGF0aWFsRXh0ZW50cyA9IHRoaXMucmVhZGVyc1snc3BhdGlhbEV4dGVudHMnXShyb290RWwpXG4gICAgICBjb25zdCB0ZW1wb3JhbEV4dGVudHMgPSB0aGlzLnJlYWRlcnNbJ3RlbXBvcmFsRXh0ZW50cyddKHJvb3RFbClcbiAgICAgIGNvbnN0IGxpbmVhZ2UgPSB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXShyb290RWwpXG4gICAgICBjb25zdCBkaXN0cmlidXRpb25zID0gdGhpcy5yZWFkZXJzWydkaXN0cmlidXRpb25zJ10ocm9vdEVsKVxuICAgICAgY29uc3QgdXBkYXRlRnJlcXVlbmN5ID0gdGhpcy5yZWFkZXJzWyd1cGRhdGVGcmVxdWVuY3knXShyb290RWwpXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIGxhbmd1YWdlczogW10sXG4gICAgICAgIC4uLihyZWNvcmRDcmVhdGVkICYmIHsgcmVjb3JkQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlY29yZFB1Ymxpc2hlZCAmJiB7IHJlY29yZFB1Ymxpc2hlZCB9KSxcbiAgICAgICAgcmVjb3JkVXBkYXRlZCxcbiAgICAgICAgLi4uKHJlc291cmNlQ3JlYXRlZCAmJiB7IHJlc291cmNlQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlVXBkYXRlZCAmJiB7IHJlc291cmNlVXBkYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlUHVibGlzaGVkICYmIHsgcmVzb3VyY2VQdWJsaXNoZWQgfSksXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGFic3RyYWN0LFxuICAgICAgICBvd25lck9yZ2FuaXphdGlvbixcbiAgICAgICAgY29udGFjdHMsXG4gICAgICAgIGNvbnRhY3RzRm9yUmVzb3VyY2UsXG4gICAgICAgIGtleXdvcmRzLFxuICAgICAgICB0b3BpY3MsXG4gICAgICAgIGxpY2Vuc2VzLFxuICAgICAgICBsZWdhbENvbnN0cmFpbnRzLFxuICAgICAgICBzZWN1cml0eUNvbnN0cmFpbnRzLFxuICAgICAgICBvdGhlckNvbnN0cmFpbnRzLFxuICAgICAgICBsaW5lYWdlLFxuICAgICAgICAuLi4oc3BhdGlhbFJlcHJlc2VudGF0aW9uICYmIHsgc3BhdGlhbFJlcHJlc2VudGF0aW9uIH0pLFxuICAgICAgICBvdmVydmlld3MsXG4gICAgICAgIHNwYXRpYWxFeHRlbnRzLFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHMsXG4gICAgICAgIGRpc3RyaWJ1dGlvbnMsXG4gICAgICAgIHVwZGF0ZUZyZXF1ZW5jeSxcbiAgICAgICAgLi4uKGxhbmRpbmdQYWdlICYmIHsgbGFuZGluZ1BhZ2UgfSksXG4gICAgICB9IGFzIERhdGFzZXRSZWNvcmRcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb25saW5lUmVzb3VyY2VzID0gdGhpcy5yZWFkZXJzWydvbmxpbmVSZXNvdXJjZXMnXShyb290RWwpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICBraW5kLFxuICAgICAgICBsYW5ndWFnZXM6IFtdLFxuICAgICAgICAuLi4ocmVjb3JkQ3JlYXRlZCAmJiB7IHJlY29yZENyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZWNvcmRQdWJsaXNoZWQgJiYgeyByZWNvcmRQdWJsaXNoZWQgfSksXG4gICAgICAgIHJlY29yZFVwZGF0ZWQsXG4gICAgICAgIC4uLihyZXNvdXJjZUNyZWF0ZWQgJiYgeyByZXNvdXJjZUNyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVVwZGF0ZWQgJiYgeyByZXNvdXJjZVVwZGF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVB1Ymxpc2hlZCAmJiB7IHJlc291cmNlUHVibGlzaGVkIH0pLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgYWJzdHJhY3QsXG4gICAgICAgIG93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgICBjb250YWN0cyxcbiAgICAgICAgY29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICAgICAga2V5d29yZHMsXG4gICAgICAgIHRvcGljcyxcbiAgICAgICAgbGljZW5zZXMsXG4gICAgICAgIGxlZ2FsQ29uc3RyYWludHMsXG4gICAgICAgIHNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgICAgIG90aGVyQ29uc3RyYWludHMsXG4gICAgICAgIG92ZXJ2aWV3cyxcbiAgICAgICAgb25saW5lUmVzb3VyY2VzLFxuICAgICAgICAuLi4obGFuZGluZ1BhZ2UgJiYgeyBsYW5kaW5nUGFnZSB9KSxcbiAgICAgIH0gYXMgU2VydmljZVJlY29yZFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHdyaXRlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgcm9vdEVsOiBYbWxFbGVtZW50XG4gICAgbGV0IGZpZWxkQ2hhbmdlZDogKG5hbWU6IHN0cmluZykgPT4gYm9vbGVhblxuICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsRG9jID0gcGFyc2VYbWxTdHJpbmcocmVmZXJlbmNlKVxuICAgICAgY29uc3Qgb3JpZ2luYWxSZWNvcmQgPSBhd2FpdCB0aGlzLnJlYWRSZWNvcmQocmVmZXJlbmNlKVxuICAgICAgcm9vdEVsID0gZ2V0Um9vdEVsZW1lbnQob3JpZ2luYWxEb2MpXG5cbiAgICAgIGZpZWxkQ2hhbmdlZCA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVjb3JkICE9PSBudWxsXG4gICAgICAgICAgPyAhaXNFcXVhbChyZWNvcmRbbmFtZV0sIG9yaWdpbmFsUmVjb3JkW25hbWVdKVxuICAgICAgICAgIDogdHJ1ZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByb290RWwgPSBjcmVhdGVFbGVtZW50KCdnbWQ6TURfTWV0YWRhdGEnKSgpXG4gICAgICBmaWVsZENoYW5nZWQgPSAoKSA9PiB0cnVlXG4gICAgfVxuXG4gICAgZmllbGRDaGFuZ2VkKCd1bmlxdWVJZGVudGlmaWVyJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndW5pcXVlSWRlbnRpZmllciddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgna2luZCcpICYmIHRoaXMud3JpdGVyc1sna2luZCddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdjb250YWN0cycpICYmIHRoaXMud3JpdGVyc1snY29udGFjdHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ293bmVyT3JnYW5pemF0aW9uJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snb3duZXJPcmdhbml6YXRpb24nXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVjb3JkVXBkYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFVwZGF0ZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3JlY29yZENyZWF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRDcmVhdGVkJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZWNvcmRQdWJsaXNoZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRQdWJsaXNoZWQnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgndGl0bGUnKSAmJiB0aGlzLndyaXRlcnNbJ3RpdGxlJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdhYnN0cmFjdCcpICYmIHRoaXMud3JpdGVyc1snYWJzdHJhY3QnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVzb3VyY2VDcmVhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VDcmVhdGVkJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVB1Ymxpc2hlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVVwZGF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZVVwZGF0ZWQnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgnY29udGFjdHNGb3JSZXNvdXJjZScpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgna2V5d29yZHMnKSAmJiB0aGlzLndyaXRlcnNbJ2tleXdvcmRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCd0b3BpY3MnKSAmJiB0aGlzLndyaXRlcnNbJ3RvcGljcyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnbGVnYWxDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2xlZ2FsQ29uc3RyYWludHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3NlY3VyaXR5Q29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydzZWN1cml0eUNvbnN0cmFpbnRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdsaWNlbnNlcycpICYmIHRoaXMud3JpdGVyc1snbGljZW5zZXMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ290aGVyQ29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvdGhlckNvbnN0cmFpbnRzJ10ocmVjb3JkLCByb290RWwpXG5cbiAgICBpZiAocmVjb3JkLmtpbmQgPT09ICdkYXRhc2V0Jykge1xuICAgICAgZmllbGRDaGFuZ2VkKCdzdGF0dXMnKSAmJiB0aGlzLndyaXRlcnNbJ3N0YXR1cyddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCd1cGRhdGVGcmVxdWVuY3knKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ3VwZGF0ZUZyZXF1ZW5jeSddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCdzcGF0aWFsUmVwcmVzZW50YXRpb24nKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ3NwYXRpYWxSZXByZXNlbnRhdGlvbiddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCdvdmVydmlld3MnKSAmJiB0aGlzLndyaXRlcnNbJ292ZXJ2aWV3cyddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCd0ZW1wb3JhbEV4dGVudHMnKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ3RlbXBvcmFsRXh0ZW50cyddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCdkaXN0cmlidXRpb25zJykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWydkaXN0cmlidXRpb25zJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ2xpbmVhZ2UnKSAmJiB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXShyZWNvcmQsIHJvb3RFbClcbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGRDaGFuZ2VkKCdvbmxpbmVSZXNvdXJjZXMnKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ29ubGluZVJlc291cmNlcyddKHJlY29yZCwgcm9vdEVsKVxuICAgIH1cblxuICAgIHRoaXMuYmVmb3JlRG9jdW1lbnRDcmVhdGlvbihyb290RWwpXG5cbiAgICBjb25zdCBuZXdEb2N1bWVudCA9IGNyZWF0ZURvY3VtZW50KHJvb3RFbClcbiAgICByZXR1cm4geG1sVG9TdHJpbmcobmV3RG9jdW1lbnQpXG4gIH1cbn1cbiJdfQ==
@@ -1,11 +1,11 @@
1
- import { getStatusFromStatusCode } from './utils/status.mapper';
2
- import { getUpdateFrequencyFromFrequencyCode } from './utils/update-frequency.mapper';
3
- import { findChildElement, findChildrenElement, findNestedElement, findNestedElements, findParent, readAttribute, readText, } from '../xml-utils';
4
- import { combine, fallback, filterArray, flattenArray, getAtIndex, map, mapArray, pipe, } from '../function-utils';
5
- import { getRoleFromRoleCode } from './utils/role.mapper';
6
1
  import { matchMimeType, matchProtocol } from '../common/distribution.mapper';
7
- import { getKeywordTypeFromKeywordTypeCode } from './utils/keyword.mapper';
2
+ import { combine, fallback, filterArray, flattenArray, getAtIndex, map, mapArray, pipe, } from '../function-utils';
3
+ import { findChildElement, findChildrenElement, findNestedElement, findNestedElements, findParent, readAttribute, readText, } from '../xml-utils';
8
4
  import { fullNameToParts } from './utils/individual-name';
5
+ import { getKeywordTypeFromKeywordTypeCode } from './utils/keyword.mapper';
6
+ import { getRoleFromRoleCode } from './utils/role.mapper';
7
+ import { getStatusFromStatusCode } from './utils/status.mapper';
8
+ import { getUpdateFrequencyFromFrequencyCode } from './utils/update-frequency.mapper';
9
9
  export function extractCharacterString() {
10
10
  return pipe(fallback(findChildElement('gco:CharacterString', false), findChildElement('gmx:Anchor', false)), readText());
11
11
  }
@@ -354,4 +354,19 @@ export function extractServiceOnlineResources() {
354
354
  export function readOnlineResources(rootEl) {
355
355
  return pipe(findNestedElements('gmd:distributionInfo', 'gmd:MD_Distribution'), mapArray(extractServiceOnlineResources()), flattenArray())(rootEl);
356
356
  }
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1wYXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2lzbzE5MTM5L3JlYWQtcGFydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQy9ELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3JGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGFBQWEsRUFDYixRQUFRLEdBRVQsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUVMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFlBQVksRUFDWixVQUFVLEVBQ1YsR0FBRyxFQUNILFFBQVEsRUFDUixJQUFJLEdBQ0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQzVFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUV6RCxNQUFNLFVBQVUsc0JBQXNCO0lBSXBDLE9BQU8sSUFBSSxDQUNULFFBQVEsQ0FDTixnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsRUFDOUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUN0QyxFQUNELFFBQVEsRUFBRSxDQUNYLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxJQUFJLENBQ1QsUUFBUSxDQUNOLGdCQUFnQixD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QVksRUFDWix1QkFBdUIsQ0FDeEIsRUFDRCxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxFQUMxRSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFO1FBQ3RELElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTztnQkFDTCxJQUFJLEVBQUUsTUFBTTtnQkFDWixHQUFHLEVBQUUsR0FBRztnQkFDUixHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLEdBQUcsQ0FBQyxXQUFXLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQzthQUNwQyxDQUFBO1NBQ0Y7YUFBTTtZQUNMLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFdBQVcsRUFBRSxHQUFHO2dCQUNoQixRQUFRO2dCQUNSLEdBQUcsQ0FBQyxXQUFXLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQzthQUNwQyxDQUFBO1NBQ0Y7SUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsTUFBa0I7SUFFbEIsT0FBTyxJQUFJLENBQ1Qsa0JBQWtCLENBQUMsc0JBQXNCLEVBQUUscUJBQXFCLENBQUMsRUFDakUsUUFBUSxDQUFDLDZCQUE2QixFQUFFLENBQUMsRUFDekMsWUFBWSxFQUFFLENBQ2YsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25zdHJhaW50LFxuICBEYXRhc2V0RGlzdHJpYnV0aW9uLFxuICBHcmFwaGljT3ZlcnZpZXcsXG4gIEluZGl2aWR1YWwsXG4gIEtleXdvcmQsXG4gIEtleXdvcmRUaGVzYXVydXMsXG4gIE9yZ2FuaXphdGlvbixcbiAgUmVjb3JkS2luZCxcbiAgUmVjb3JkU3RhdHVzLFxuICBSb2xlLFxuICBTZXJ2aWNlT25saW5lUmVzb3VyY2UsXG4gIFNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUsXG4gIFVwZGF0ZUZyZXF1ZW5jeSxcbiAgVXBkYXRlRnJlcXVlbmN5Q3VzdG9tLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBnZXRTdGF0dXNGcm9tU3RhdHVzQ29kZSB9IGZyb20gJy4vdXRpbHMvc3RhdHVzLm1hcHBlcidcbmltcG9ydCB7IGdldFVwZGF0ZUZyZXF1ZW5jeUZyb21GcmVxdWVuY3lDb2RlIH0gZnJvbSAnLi91dGlscy91cGRhdGUtZnJlcXVlbmN5Lm1hcHBlcidcbmltcG9ydCB7XG4gIGZpbmRDaGlsZEVsZW1lbnQsXG4gIGZpbmRDaGlsZHJlbkVsZW1lbnQsXG4gIGZpbmROZXN0ZWRFbGVtZW50LFxuICBmaW5kTmVzdGVkRWxlbWVudHMsXG4gIGZpbmRQYXJlbnQsXG4gIHJlYWRBdHRyaWJ1dGUsXG4gIHJlYWRUZXh0LFxuICBYbWxFbGVtZW50LFxufSBmcm9tICcuLi94bWwtdXRpbHMnXG5pbXBvcnQge1xuICBDaGFpbmFibGVGdW5jdGlvbixcbiAgY29tYmluZSxcbiAgZmFsbGJhY2ssXG4gIGZpbHRlckFycmF5LFxuICBmbGF0dGVuQXJyYXksXG4gIGdldEF0SW5kZXgsXG4gIG1hcCxcbiAgbWFwQXJyYXksXG4gIHBpcGUsXG59IGZyb20gJy4uL2Z1bmN0aW9uLXV0aWxzJ1xuaW1wb3J0IHsgZ2V0Um9sZUZyb21Sb2xlQ29kZSB9IGZyb20gJy4vdXRpbHMvcm9sZS5tYXBwZXInXG5pbXBvcnQgeyBtYXRjaE1pbWVUeXBlLCBtYXRjaFByb3RvY29sIH0gZnJvbSAnLi4vY29tbW9uL2Rpc3RyaWJ1dGlvbi5tYXBwZXInXG5pbXBvcnQgeyBnZXRLZXl3b3JkVHlwZUZyb21LZXl3b3JkVHlwZUNvZGUgfSBmcm9tICcuL3V0aWxzL2tleXdvcmQubWFwcGVyJ1xuaW1wb3J0IHsgZnVsbE5hbWVUb1BhcnRzIH0gZnJvbSAnLi91dGlscy9pbmRpdmlkdWFsLW5hbWUnXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCk6IENoYWluYWJsZUZ1bmN0aW9uPFxuICBYbWxFbGVtZW50LFxuICBzdHJpbmdcbj4ge1xuICByZXR1cm4gcGlwZShcbiAgICBmYWxsYmFjayhcbiAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2djbzpDaGFyYWN0ZXJTdHJpbmcnLCBmYWxzZSksXG4gICAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbXg6QW5jaG9yJywgZmFsc2UpXG4gICAgKSxcbiAgICByZWFkVGV4dCgpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3REYXRlVGltZSgpOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBEYXRlPiB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZhbGxiYWNrKFxuICAgICAgZmluZENoaWxkRWxlbWVudCgnZ2NvOkRhdGVUaW1lJywgZmFsc2UpLFxuICAgICAgZmluZENoaWxkRWxlbWVudCgnZ2NvOkRhdGUnLCBmYWxzZSlcbiAgICApLFxuICAgIHJlYWRUZXh0KCksXG4gICAgbWFwKChkYXRlU3RyKSA9PiAoZGF0ZVN0ciA/IG5ldyBEYXRlKGRhdGVTdHIpIDogbnVsbCkpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RVcmwoKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgVVJMPiB7XG4gIGNvbnN0IGdldFVybCA9IHBpcGUoZmluZENoaWxkRWxlbWVudCgnZ21kOlVSTCcsIGZhbHNlKSwgcmVhZFRleHQoKSlcbiAgY29uc3QgZ2V0Q2hhcmFjdGVyU3RyaW5nID0gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnY286Q2hhcmFjdGVyU3RyaW5nJywgZmFsc2UpLFxuICAgIHJlYWRUZXh0KClcbiAgKVxuICBjb25zdCBnZXRBbmNob3IgPSBwaXBlKFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dteDpBbmNob3InLCBmYWxzZSksXG4gICAgcmVhZEF0dHJpYnV0ZSgneGxpbms6aHJlZicpXG4gIClcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmFsbGJhY2soZ2V0VXJsLCBnZXRBbmNob3IsIGdldENoYXJhY3RlclN0cmluZyksXG4gICAgbWFwKCh1cmxTdHIpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cilcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICB9KVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0TWFuZGF0b3J5VXJsKCkge1xuICByZXR1cm4gZmFsbGJhY2soZXh0cmFjdFVybCgpLCAoKSA9PiBuZXcgVVJMKCdodHRwOi8vbWlzc2luZycpKVxufVxuXG4vLyBmcm9tIGdtZDpyb2xlXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFJvbGUoKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgUm9sZT4ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6Q0lfUm9sZUNvZGUnKSxcbiAgICByZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJyksXG4gICAgbWFwKGdldFJvbGVGcm9tUm9sZUNvZGUpXG4gIClcbn1cblxuLy8gZnJvbSBnbWQ6Q0lfUmVzcG9uc2libGVQYXJ0eVxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPcmdhbml6YXRpb24oKTogQ2hhaW5hYmxlRnVuY3Rpb248XG4gIFhtbEVsZW1lbnQsXG4gIE9yZ2FuaXphdGlvblxuPiB7XG4gIGNvbnN0IGdldFVybCA9IHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKFxuICAgICAgJ2dtZDpjb250YWN0SW5mbycsXG4gICAgICAnZ21kOkNJX0NvbnRhY3QnLFxuICAgICAgJ2dtZDpvbmxpbmVSZXNvdXJjZScsXG4gICAgICAnZ21kOkNJX09ubGluZVJlc291cmNlJyxcbiAgICAgICdnbWQ6bGlua2FnZSdcbiAgICApLFxuICAgIGdldEF0SW5kZXgoMCksXG4gICAgZXh0cmFjdFVybCgpXG4gIClcbiAgcmV0dXJuIHBpcGUoXG4gICAgY29tYmluZShcbiAgICAgIHBpcGUoXG4gICAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpvcmdhbmlzYXRpb25OYW1lJywgZmFsc2UpLFxuICAgICAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgICAgICksXG4gICAgICBnZXRVcmxcbiAgICApLFxuICAgIG1hcCgoW25hbWUsIHdlYnNpdGVdKSA9PiAoe1xuICAgICAgbmFtZSxcbiAgICAgIC4uLih3ZWJzaXRlICYmIHsgd2Vic2l0ZSB9KSxcbiAgICB9KSlcbiAgKVxufVxuXG4vLyBmcm9tIGdtZDpDSV9SZXNwb25zaWJsZVBhcnR5XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEluZGl2aWR1YWwoKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgSW5kaXZpZHVhbD4ge1xuICBjb25zdCBnZXRSb2xlID0gcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6cm9sZScpLCBleHRyYWN0Um9sZSgpKVxuICBjb25zdCBnZXRQb3NpdGlvbiA9IHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnZ21kOnBvc2l0aW9uTmFtZScpLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKVxuICApXG4gIGNvbnN0IGdldE5hbWVQYXJ0cyA9IHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnZ21kOmluZGl2aWR1YWxOYW1lJyksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpLFxuICAgIG1hcCgoZnVsbE5hbWUpID0+IHtcbiAgICAgIGlmICghZnVsbE5hbWUpIHJldHVybiBbXVxuICAgICAgcmV0dXJuIGZ1bGxOYW1lVG9QYXJ0cyhmdWxsTmFtZSlcbiAgICB9KVxuICApXG4gIGNvbnN0IGdldE9yZ2FuaXphdGlvbiA9IGV4dHJhY3RPcmdhbml6YXRpb24oKVxuICBjb25zdCBnZXRDb250YWN0Um9vdCA9IGZpbmROZXN0ZWRFbGVtZW50KCdnbWQ6Y29udGFjdEluZm8nLCAnZ21kOkNJX0NvbnRhY3QnKVxuICBjb25zdCBnZXRFbWFpbCA9IHBpcGUoXG4gICAgZ2V0Q29udGFjdFJvb3QsXG4gICAgZmluZENoaWxkRWxlbWVudCgnZ21kOmVsZWN0cm9uaWNNYWlsQWRkcmVzcycpLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSxcbiAgICBtYXAoKGVtYWlsKSA9PiAoZW1haWwgPT09IG51bGwgPyAnbWlzc2luZ0BtaXNzaW5nLmNvbScgOiBlbWFpbCkpXG4gIClcbiAgY29uc3QgZ2V0QWRkcmVzcyA9IHBpcGUoXG4gICAgZ2V0Q29udGFjdFJvb3QsXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ2dtZDphZGRyZXNzJywgJ2dtZDpDSV9BZGRyZXNzJyksXG4gICAgY29tYmluZShcbiAgICAgIHBpcGUoXG4gICAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpkZWxpdmVyeVBvaW50JywgZmFsc2UpLFxuICAgICAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgICAgICksXG4gICAgICBwaXBlKGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpjaXR5JywgZmFsc2UpLCBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCkpLFxuICAgICAgcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6cG9zdGFsQ29kZScsIGZhbHNlKSwgZXh0cmFjdENoYXJhY3RlclN0cmluZygpKSxcbiAgICAgIHBpcGUoZmluZENoaWxkRWxlbWVudCgnZ21kOmNvdW50cnknLCBmYWxzZSksIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSlcbiAgICApLFxuICAgIG1hcCgocGFydHMpID0+IHBhcnRzLmZpbHRlcigocCkgPT4gISFwKS5qb2luKCcsICcpKVxuICApXG4gIGNvbnN0IGdldFBob25lID0gcGlwZShcbiAgICBnZXRDb250YWN0Um9vdCxcbiAgICBmaW5kTmVzdGVkRWxlbWVudCgnZ21kOnBob25lJywgJ2dtZDpDSV9UZWxlcGhvbmUnLCAnZ21kOnZvaWNlJyksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gIClcbiAgcmV0dXJuIHBpcGUoXG4gICAgY29tYmluZShcbiAgICAgIGdldFJvbGUsXG4gICAgICBnZXRQb3NpdGlvbixcbiAgICAgIGdldE5hbWVQYXJ0cyxcbiAgICAgIGdldE9yZ2FuaXphdGlvbixcbiAgICAgIGdldEVtYWlsLFxuICAgICAgZ2V0QWRkcmVzcyxcbiAgICAgIGdldFBob25lXG4gICAgKSxcbiAgICBtYXAoXG4gICAgICAoW1xuICAgICAgICByb2xlLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgW2ZpcnN0TmFtZSwgbGFzdE5hbWVdLFxuICAgICAgICBvcmdhbml6YXRpb24sXG4gICAgICAgIGVtYWlsLFxuICAgICAgICBhZGRyZXNzLFxuICAgICAgICBwaG9uZSxcbiAgICAgIF0pID0+ICh7XG4gICAgICAgIGVtYWlsLFxuICAgICAgICByb2xlLFxuICAgICAgICBvcmdhbml6YXRpb24sXG4gICAgICAgIC4uLihwb3NpdGlvbiAmJiB7IHBvc2l0aW9uIH0pLFxuICAgICAgICAuLi4oZmlyc3ROYW1lICYmIHsgZmlyc3ROYW1lIH0pLFxuICAgICAgICAuLi4obGFzdE5hbWUgJiYgeyBsYXN0TmFtZSB9KSxcbiAgICAgICAgLi4uKGFkZHJlc3MgJiYgeyBhZGRyZXNzIH0pLFxuICAgICAgICAuLi4ocGhvbmUgJiYgeyBwaG9uZSB9KSxcbiAgICAgIH0pXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0U3RhdHVzKCk6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFJlY29yZFN0YXR1cz4ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6TURfUHJvZ3Jlc3NDb2RlJyksXG4gICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpLFxuICAgIG1hcChnZXRTdGF0dXNGcm9tU3RhdHVzQ29kZSlcbiAgKVxufVxuXG4vLyBmcm9tIGdtZDpyZXNvdXJjZUNvbnN0cmFpbnRzXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdExlZ2FsQ29uc3RyYWludHMoKTogQ2hhaW5hYmxlRnVuY3Rpb248XG4gIFhtbEVsZW1lbnQsXG4gIEFycmF5PENvbnN0cmFpbnQ+XG4+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnLCBmYWxzZSksXG4gICAgZmlsdGVyQXJyYXkoXG4gICAgICBwaXBlKFxuICAgICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6TURfUmVzdHJpY3Rpb25Db2RlJyksXG4gICAgICAgIG1hcEFycmF5KHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSksXG4gICAgICAgIG1hcCgodmFsdWVzKSA9PiB2YWx1ZXMuaW5kZXhPZignbGljZW5zZScpID09PSAtMSlcbiAgICAgIClcbiAgICApLFxuICAgIG1hcEFycmF5KFxuICAgICAgY29tYmluZShcbiAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOm90aGVyQ29uc3RyYWludHMnKSxcbiAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnVzZUxpbWl0YXRpb24nKVxuICAgICAgKVxuICAgICksXG4gICAgZmxhdHRlbkFycmF5KCksXG4gICAgZmxhdHRlbkFycmF5KCksXG4gICAgbWFwQXJyYXkoY29tYmluZShleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCksIGV4dHJhY3RVcmwoKSkpLFxuICAgIG1hcEFycmF5KChbdGV4dCwgdXJsXSkgPT4gKHtcbiAgICAgIC4uLih1cmwgJiYgeyB1cmwgfSksXG4gICAgICB0ZXh0LFxuICAgIH0pKVxuICApXG59XG5cbi8vIGZyb20gZ21kOnJlc291cmNlQ29uc3RyYWludHNcbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0U2VjdXJpdHlDb25zdHJhaW50cygpOiBDaGFpbmFibGVGdW5jdGlvbjxcbiAgWG1sRWxlbWVudCxcbiAgQXJyYXk8Q29uc3RyYWludD5cbj4ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudHMoJ2dtZDpNRF9TZWN1cml0eUNvbnN0cmFpbnRzJywgJ2dtZDp1c2VMaW1pdGF0aW9uJyksXG4gICAgZmxhdHRlbkFycmF5KCksXG4gICAgbWFwQXJyYXkoY29tYmluZShleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCksIGV4dHJhY3RVcmwoKSkpLFxuICAgIG1hcEFycmF5KChbdGV4dCwgdXJsXSkgPT4gKHtcbiAgICAgIC4uLih1cmwgJiYgeyB1cmwgfSksXG4gICAgICB0ZXh0LFxuICAgIH0pKVxuICApXG59XG5cbi8vIGZyb20gZ21kOnJlc291cmNlQ29uc3RyYWludHNcbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0T3RoZXJDb25zdHJhaW50cygpOiBDaGFpbmFibGVGdW5jdGlvbjxcbiAgWG1sRWxlbWVudCxcbiAgQXJyYXk8Q29uc3RyYWludD5cbj4ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudHMoJ2dtZDpNRF9Db25zdHJhaW50cycsICdnbWQ6dXNlTGltaXRhdGlvbicpLFxuICAgIGZsYXR0ZW5BcnJheSgpLFxuICAgIG1hcEFycmF5KGNvbWJpbmUoZXh0cmFjdENoYXJhY3RlclN0cmluZygpLCBleHRyYWN0VXJsKCkpKSxcbiAgICBtYXBBcnJheSgoW3RleHQsIHVybF0pID0+ICh7XG4gICAgICAuLi4odXJsICYmIHsgdXJsIH0pLFxuICAgICAgdGV4dCxcbiAgICB9KSlcbiAgKVxufVxuXG4vLyBmcm9tIGdtZDpyZXNvdXJjZUNvbnN0cmFpbnRzXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdExpY2Vuc2VzKCk6IENoYWluYWJsZUZ1bmN0aW9uPFxuICBYbWxFbGVtZW50LFxuICBBcnJheTxDb25zdHJhaW50PlxuPiB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpNRF9MZWdhbENvbnN0cmFpbnRzJywgZmFsc2UpLFxuICAgIGZpbHRlckFycmF5KFxuICAgICAgcGlwZShcbiAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOk1EX1Jlc3RyaWN0aW9uQ29kZScpLFxuICAgICAgICBtYXBBcnJheShyZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJykpLFxuICAgICAgICBtYXAoKHZhbHVlcykgPT4gdmFsdWVzLmluZGV4T2YoJ2xpY2Vuc2UnKSA+IC0xKVxuICAgICAgKVxuICAgICksXG4gICAgbWFwQXJyYXkoXG4gICAgICBjb21iaW5lKFxuICAgICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6b3RoZXJDb25zdHJhaW50cycpLFxuICAgICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6dXNlTGltaXRhdGlvbicpXG4gICAgICApXG4gICAgKSxcbiAgICBmbGF0dGVuQXJyYXkoKSxcbiAgICBmbGF0dGVuQXJyYXkoKSxcbiAgICBtYXBBcnJheShjb21iaW5lKGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSwgZXh0cmFjdFVybCgpKSksXG4gICAgbWFwQXJyYXkoKFt0ZXh0LCB1cmxdKSA9PiAoe1xuICAgICAgLi4uKHVybCAmJiB7IHVybCB9KSxcbiAgICAgIHRleHQsXG4gICAgfSkpXG4gIClcbn1cblxuY29uc3QgZ2V0TWltZVR5cGUgPSBwaXBlKFxuICBmaW5kUGFyZW50KCdnbWQ6TURfRGlzdHJpYnV0aW9uJyksXG4gIGZpbmROZXN0ZWRFbGVtZW50KCdnbWQ6ZGlzdHJpYnV0aW9uRm9ybWF0JywgJ2dtZDpNRF9Gb3JtYXQnLCAnZ21kOm5hbWUnKSxcbiAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpLFxuICBtYXAobWF0Y2hNaW1lVHlwZSlcbilcblxuLyoqXG4gKiBFeHRyYWN0IGRpc3RyaWJ1dGlvbnMgZnJvbSBhIE1EX0Rpc3RyaWJ1dGlvbiBlbGVtZW50XG4gKiBAcGFyYW0gZ2V0TWltZVR5cGVGbiBUaGlzIGZ1bmN0aW9uIHN0YXJ0cyBmcm9tIGEgZ21kOnRyYW5zZmVyT3B0aW9ucyBlbGVtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RGF0YXNldERpc3RyaWJ1dGlvbnMoXG4gIGdldE1pbWVUeXBlRm46IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIHN0cmluZz5cbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIERhdGFzZXREaXN0cmlidXRpb25bXT4ge1xuICBjb25zdCBnZXRVcmwgPSBwaXBlKGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpsaW5rYWdlJyksIGV4dHJhY3RNYW5kYXRvcnlVcmwoKSlcbiAgY29uc3QgZ2V0UHJvdG9jb2xTdHIgPSBwaXBlKFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpwcm90b2NvbCcpLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKVxuICApXG4gIGNvbnN0IGdldFByb3RvY29sID0gcGlwZShnZXRQcm90b2NvbFN0ciwgbWFwKG1hdGNoUHJvdG9jb2wpKVxuICBjb25zdCBnZXRPbmxpbmVGdW5jdGlvbiA9IHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ2dtZDpmdW5jdGlvbicsICdnbWQ6Q0lfT25MaW5lRnVuY3Rpb25Db2RlJyksXG4gICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpXG4gIClcbiAgY29uc3QgZ2V0SXNTZXJ2aWNlID0gcGlwZShcbiAgICBnZXRQcm90b2NvbCxcbiAgICBtYXAoKHByb3RvY29sKSA9PiBwcm90b2NvbCAhPT0gJ290aGVyJylcbiAgKVxuICBjb25zdCBnZXRJc0Rvd25sb2FkID0gcGlwZShcbiAgICBjb21iaW5lKGdldElzU2VydmljZSwgZ2V0T25saW5lRnVuY3Rpb24sIGdldFByb3RvY29sU3RyKSxcbiAgICBtYXAoXG4gICAgICAoW2lzU2VydmljZSwgb25saW5lRnVuY3Rpb24sIHByb3RvY29sU3RyXSkgPT5cbiAgICAgICAgKCFpc1NlcnZpY2UgJiYgb25saW5lRnVuY3Rpb24gPT09ICdkb3dubG9hZCcpIHx8XG4gICAgICAgIC9kb3dubG9hZC9pLnRlc3QocHJvdG9jb2xTdHIpXG4gICAgKVxuICApXG4gIGNvbnN0IGdldE5hbWUgPSBwaXBlKGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpuYW1lJyksIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSlcbiAgY29uc3QgZ2V0RGVzY3JpcHRpb24gPSBwaXBlKFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpkZXNjcmlwdGlvbicpLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKVxuICApXG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cyhcbiAgICAgICdnbWQ6dHJhbnNmZXJPcHRpb25zJyxcbiAgICAgICdnbWQ6TURfRGlnaXRhbFRyYW5zZmVyT3B0aW9ucycsXG4gICAgICAnZ21kOm9uTGluZScsXG4gICAgICAnZ21kOkNJX09ubGluZVJlc291cmNlJ1xuICAgICksXG4gICAgbWFwQXJyYXkoXG4gICAgICBjb21iaW5lKFxuICAgICAgICBnZXRJc1NlcnZpY2UsXG4gICAgICAgIGdldElzRG93bmxvYWQsXG4gICAgICAgIGdldFByb3RvY29sLFxuICAgICAgICBnZXRVcmwsXG4gICAgICAgIGdldE5hbWUsXG4gICAgICAgIGdldERlc2NyaXB0aW9uLFxuICAgICAgICBnZXRNaW1lVHlwZUZuXG4gICAgICApXG4gICAgKSxcbiAgICBtYXBBcnJheShcbiAgICAgIChbaXNTZXJ2aWNlLCBpc0Rvd25sb2FkLCBwcm90b2NvbCwgdXJsLCBuYW1lLCBkZXNjcmlwdGlvbiwgbWltZVR5cGVdKSA9PiB7XG4gICAgICAgIGlmIChpc1NlcnZpY2UpIHtcbiAgICAgICAgICBjb25zdCBoYXNJZGVudGlmaWVyID0gcHJvdG9jb2wgPT09ICd3bXMnIHx8IHByb3RvY29sID09PSAnd2ZzJ1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnc2VydmljZScsXG4gICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgIGFjY2Vzc1NlcnZpY2VQcm90b2NvbDogcHJvdG9jb2wsXG4gICAgICAgICAgICAuLi4obmFtZSAmJiBoYXNJZGVudGlmaWVyICYmIHsgaWRlbnRpZmllckluU2VydmljZTogbmFtZSB9KSxcbiAgICAgICAgICAgIC4uLihuYW1lICYmIHsgbmFtZSB9KSxcbiAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uIH0pLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpc0Rvd25sb2FkKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgIC4uLihuYW1lICYmIHsgbmFtZSB9KSxcbiAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uIH0pLFxuICAgICAgICAgICAgLi4uKG1pbWVUeXBlICYmIHsgbWltZVR5cGUgfSksXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgIC4uLihuYW1lICYmIHsgbmFtZSB9KSxcbiAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uIH0pLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUN1c3RvbVBlcmlvZChcbiAgaXNvUGVyaW9kOiBzdHJpbmdcbik6IFVwZGF0ZUZyZXF1ZW5jeUN1c3RvbSB7XG4gIGlmICghaXNvUGVyaW9kKSByZXR1cm4gbnVsbFxuICBjb25zdCBtYXRjaGVzID0gaXNvUGVyaW9kLm1hdGNoKFxuICAgIC9eLT9QKD86KFswLTldKylZKT8oPzooWzAtOV0rKU0pPyg/OihbMC05XSspRCk/VD8oPzooWzAtOV0rKUgpPy9cbiAgKVxuICBpZiAoIW1hdGNoZXMpIHJldHVybiBudWxsXG4gIGNvbnN0IHllYXJzID0gcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApIHx8IDBcbiAgY29uc3QgbW9udGhzID0gcGFyc2VJbnQobWF0Y2hlc1syXSwgMTApIHx8IDBcbiAgY29uc3QgZGF5cyA9IHBhcnNlSW50KG1hdGNoZXNbM10sIDEwKSB8fCAwXG4gIGNvbnN0IGhvdXJzID0gcGFyc2VJbnQobWF0Y2hlc1s0XSwgMTApIHx8IDBcbiAgaWYgKHllYXJzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBlcjogJ3llYXInLFxuICAgICAgdXBkYXRlZFRpbWVzOiAxLFxuICAgIH1cbiAgfSBlbHNlIGlmIChtb250aHMgPT09IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGVyOiAnbW9udGgnLFxuICAgICAgdXBkYXRlZFRpbWVzOiAxLFxuICAgIH1cbiAgfSBlbHNlIGlmIChtb250aHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGVyOiAneWVhcicsXG4gICAgICB1cGRhdGVkVGltZXM6IE1hdGgucm91bmQoMTIgLyBtb250aHMpLFxuICAgIH1cbiAgfSBlbHNlIGlmIChkYXlzID09PSAxKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBlcjogJ2RheScsXG4gICAgICB1cGRhdGVkVGltZXM6IDEsXG4gICAgfVxuICB9IGVsc2UgaWYgKGRheXMgPD0gNykge1xuICAgIHJldHVybiB7XG4gICAgICBwZXI6ICd3ZWVrJyxcbiAgICAgIHVwZGF0ZWRUaW1lczogTWF0aC5yb3VuZCg3IC8gZGF5cyAtIDAuMDAwMSksIC8vIHRoaXMgaXMgdG8gbWFrZSBzdXJlIHRoYXQgJ2V2ZXJ5IDIgZGF5cycgPSAnMyB0aW1lcyBwZXIgd2VlaydcbiAgICB9XG4gIH0gZWxzZSBpZiAoZGF5cykge1xuICAgIHJldHVybiB7XG4gICAgICBwZXI6ICdtb250aCcsXG4gICAgICB1cGRhdGVkVGltZXM6IE1hdGgucm91bmQoMzAgLyBkYXlzKSxcbiAgICB9XG4gIH0gZWxzZSBpZiAoaG91cnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGVyOiAnZGF5JyxcbiAgICAgIHVwZGF0ZWRUaW1lczogTWF0aC5yb3VuZCgyNCAvIGRheXMpLFxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG4vLyBmcm9tIGdtZDpNRF9NYWludGVuYW5jZUluZm9ybWF0aW9uXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFVwZGF0ZUZyZXF1ZW5jeSgpOiBDaGFpbmFibGVGdW5jdGlvbjxcbiAgWG1sRWxlbWVudCxcbiAgVXBkYXRlRnJlcXVlbmN5XG4+IHtcbiAgcmV0dXJuIGZhbGxiYWNrKFxuICAgIHBpcGUoXG4gICAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6TURfTWFpbnRlbmFuY2VGcmVxdWVuY3lDb2RlJyksXG4gICAgICByZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJyksXG4gICAgICBtYXAoZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUZyZXF1ZW5jeUNvZGUpXG4gICAgKSxcbiAgICBwaXBlKFxuICAgICAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgICAgICdnbWQ6dXNlckRlZmluZWRNYWludGVuYW5jZUZyZXF1ZW5jeScsXG4gICAgICAgICdndHM6VE1fUGVyaW9kRHVyYXRpb24nXG4gICAgICApLFxuICAgICAgcmVhZFRleHQoKSxcbiAgICAgIG1hcChnZXRVcGRhdGVGcmVxdWVuY3lGcm9tQ3VzdG9tUGVyaW9kKVxuICAgICksXG4gICAgbWFwKCgpID0+ICd1bmtub3duJylcbiAgKVxufVxuXG4vKipcbiAqIExvb2tzIGZvciBzcnY6U1ZfU2VydmljZUlkZW50aWZpY2F0aW9uIG9yIGdtZDpNRF9EYXRhSWRlbnRpZmljYXRpb24gZWxlbWVudFxuICogV2lsbCBmaW5kIHRoZSBmaXJzdCBvbmUgdGhhdCBleGlzdHMsIG5vdCByZWFkaW5nIHRoZSB0eXBlIG9mIHRoZSByZWNvcmRcbiAqICh0aGlzIGFsbG93cyB1c2luZyB0aGlzIGZ1bmN0aW9uIGluIG90aGVyIHNpbWlsYXIgc2NoZW1hcylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRJZGVudGlmaWNhdGlvbigpIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnZ21kOmlkZW50aWZpY2F0aW9uSW5mbycsIGZhbHNlKSxcbiAgICBjb21iaW5lKFxuICAgICAgZmluZENoaWxkRWxlbWVudCgnZ21kOk1EX0RhdGFJZGVudGlmaWNhdGlvbicsIGZhbHNlKSxcbiAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ3NydjpTVl9TZXJ2aWNlSWRlbnRpZmljYXRpb24nLCBmYWxzZSlcbiAgICApLFxuICAgIGZpbHRlckFycmF5KChlbCkgPT4gZWwgIT09IG51bGwpLFxuICAgIGdldEF0SW5kZXgoMClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdElkZW50aWZpY2F0aW9uRGF0ZShcbiAgdHlwZTogJ2NyZWF0aW9uJyB8ICdyZXZpc2lvbicgfCAncHVibGljYXRpb24nXG4pIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZElkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6Y2l0YXRpb24nLCAnZ21kOkNJX0NpdGF0aW9uJywgJ2dtZDpkYXRlJyksXG4gICAgZmlsdGVyQXJyYXkoXG4gICAgICBwaXBlKFxuICAgICAgICBmaW5kTmVzdGVkRWxlbWVudHMoXG4gICAgICAgICAgJ2dtZDpDSV9EYXRlJyxcbiAgICAgICAgICAnZ21kOmRhdGVUeXBlJyxcbiAgICAgICAgICAnZ21kOkNJX0RhdGVUeXBlQ29kZSdcbiAgICAgICAgKSxcbiAgICAgICAgZ2V0QXRJbmRleCgwKSxcbiAgICAgICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpLFxuICAgICAgICBtYXAoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gdHlwZSlcbiAgICAgIClcbiAgICApLFxuICAgIGdldEF0SW5kZXgoMCksXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6Q0lfRGF0ZScsICdnbWQ6ZGF0ZScpLFxuICAgIGdldEF0SW5kZXgoMCksXG4gICAgZXh0cmFjdERhdGVUaW1lKClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BhdGlhbFJlcHJlc2VudGF0aW9uRnJvbUNvZGUoXG4gIHNwYXRpYWxSZXByZXNlbnRhdGlvbkNvZGU6IHN0cmluZ1xuKTogU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZSB8IG51bGwge1xuICBzd2l0Y2ggKHNwYXRpYWxSZXByZXNlbnRhdGlvbkNvZGUpIHtcbiAgICBjYXNlICdncmlkJzpcbiAgICBjYXNlICd2ZWN0b3InOlxuICAgIGNhc2UgJ3Rpbic6XG4gICAgY2FzZSAndGFibGUnOlxuICAgIGNhc2UgJ3BvaW50JzpcbiAgICAgIHJldHVybiBzcGF0aWFsUmVwcmVzZW50YXRpb25Db2RlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVbmlxdWVJZGVudGlmaWVyKHJvb3RFbDogWG1sRWxlbWVudCk6IHN0cmluZyB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpmaWxlSWRlbnRpZmllcicsIGZhbHNlKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkS2luZChyb290RWw6IFhtbEVsZW1lbnQpOiBSZWNvcmRLaW5kIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ2dtZDpoaWVyYXJjaHlMZXZlbCcsICdnbWQ6TURfU2NvcGVDb2RlJyksXG4gICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpLFxuICAgIG1hcChcbiAgICAgIChzY29wZUNvZGUpOiBSZWNvcmRLaW5kID0+XG4gICAgICAgIHNjb3BlQ29kZSA9PT0gJ3NlcnZpY2UnID8gJ3NlcnZpY2UnIDogJ2RhdGFzZXQnXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRPd25lck9yZ2FuaXphdGlvbihyb290RWw6IFhtbEVsZW1lbnQpOiBPcmdhbml6YXRpb24ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudCgnZ21kOmNvbnRhY3QnLCAnZ21kOkNJX1Jlc3BvbnNpYmxlUGFydHknKSxcbiAgICBleHRyYWN0T3JnYW5pemF0aW9uKClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkUmVzb3VyY2VVcGRhdGVkKHJvb3RFbDogWG1sRWxlbWVudCk6IERhdGUge1xuICByZXR1cm4gZXh0cmFjdElkZW50aWZpY2F0aW9uRGF0ZSgncmV2aXNpb24nKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkUmVzb3VyY2VDcmVhdGVkKHJvb3RFbDogWG1sRWxlbWVudCk6IERhdGUge1xuICByZXR1cm4gZXh0cmFjdElkZW50aWZpY2F0aW9uRGF0ZSgnY3JlYXRpb24nKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkUmVzb3VyY2VQdWJsaXNoZWQocm9vdEVsOiBYbWxFbGVtZW50KTogRGF0ZSB7XG4gIHJldHVybiBleHRyYWN0SWRlbnRpZmljYXRpb25EYXRlKCdwdWJsaWNhdGlvbicpKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZWNvcmRVcGRhdGVkKHJvb3RFbDogWG1sRWxlbWVudCk6IERhdGUge1xuICByZXR1cm4gcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6ZGF0ZVN0YW1wJyksIGV4dHJhY3REYXRlVGltZSgpKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVGl0bGUocm9vdEVsOiBYbWxFbGVtZW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZElkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ2dtZDpjaXRhdGlvbicsICdnbWQ6Q0lfQ2l0YXRpb24nLCAnZ21kOnRpdGxlJyksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEFic3RyYWN0KHJvb3RFbDogWG1sRWxlbWVudCk6IHN0cmluZyB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDphYnN0cmFjdCcsIGZhbHNlKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQ29udGFjdHMocm9vdEVsOiBYbWxFbGVtZW50KTogSW5kaXZpZHVhbFtdIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOmNvbnRhY3QnLCBmYWxzZSksXG4gICAgbWFwQXJyYXkoZmluZENoaWxkRWxlbWVudCgnZ21kOkNJX1Jlc3BvbnNpYmxlUGFydHknLCBmYWxzZSkpLFxuICAgIG1hcEFycmF5KGV4dHJhY3RJbmRpdmlkdWFsKCkpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvbnRhY3RzRm9yUmVzb3VyY2Uocm9vdEVsOiBYbWxFbGVtZW50KTogSW5kaXZpZHVhbFtdIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZElkZW50aWZpY2F0aW9uKCksXG4gICAgY29tYmluZShcbiAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpjb250YWN0JywgZmFsc2UpLFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnBvaW50T2ZDb250YWN0JywgZmFsc2UpXG4gICAgKSxcbiAgICBmbGF0dGVuQXJyYXkoKSxcbiAgICBtYXBBcnJheShmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6Q0lfUmVzcG9uc2libGVQYXJ0eScsIGZhbHNlKSksXG4gICAgbWFwQXJyYXkoZXh0cmFjdEluZGl2aWR1YWwoKSlcbiAgKShyb290RWwpXG59XG5cbi8vIGZyb20gZ21kOnRoZXNhdXJ1c05hbWVcbmV4cG9ydCBmdW5jdGlvbiByZWFkVGhlc2F1cnVzKHJvb3RFbDogWG1sRWxlbWVudCk6IEtleXdvcmRUaGVzYXVydXMge1xuICBpZiAoIXJvb3RFbCkgcmV0dXJuIG51bGxcblxuICBjb25zdCBmaW5kSWRlbnRpZmllciA9IGZpbmROZXN0ZWRFbGVtZW50KFxuICAgICdnbWQ6Q0lfQ2l0YXRpb24nLFxuICAgICdnbWQ6aWRlbnRpZmllcicsXG4gICAgJ2dtZDpNRF9JZGVudGlmaWVyJyxcbiAgICAnZ21kOmNvZGUnXG4gIClcbiAgY29uc3QgaWQgPSBwaXBlKGZpbmRJZGVudGlmaWVyLCBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCkpKHJvb3RFbClcbiAgY29uc3QgdXJsID0gcGlwZShmaW5kSWRlbnRpZmllciwgZXh0cmFjdFVybCgpKShyb290RWwpXG4gIGNvbnN0IG5hbWUgPSBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdnbWQ6Q0lfQ2l0YXRpb24nLCAnZ21kOnRpdGxlJyksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gICkocm9vdEVsKVxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIC4uLihuYW1lICYmIHsgbmFtZSB9KSxcbiAgICAuLi4odXJsICYmIHsgdXJsIH0pLFxuICB9XG59XG5cbi8vIGZyb20gZ21kOk1EX0tleXdvcmRzXG5leHBvcnQgZnVuY3Rpb24gcmVhZEtleXdvcmRHcm91cChyb290RWw6IFhtbEVsZW1lbnQpOiBLZXl3b3JkW10ge1xuICBjb25zdCB0eXBlID0gcGlwZShcbiAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6TURfS2V5d29yZFR5cGVDb2RlJyksXG4gICAgbWFwQXJyYXkocmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpKSxcbiAgICBtYXAoKHZhbHVlcykgPT4gZ2V0S2V5d29yZFR5cGVGcm9tS2V5d29yZFR5cGVDb2RlKHZhbHVlc1swXSkpXG4gICkocm9vdEVsKVxuICBjb25zdCB0aGVzYXVydXMgPSBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdnbWQ6dGhlc2F1cnVzTmFtZScpLFxuICAgIHJlYWRUaGVzYXVydXNcbiAgKShyb290RWwpXG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDprZXl3b3JkJyksXG4gICAgbWFwQXJyYXkoKGVsKSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKShlbClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLih0aGVzYXVydXMgPyB7IHRoZXNhdXJ1cyB9IDoge30pLFxuICAgICAgICBsYWJlbCxcbiAgICAgICAgdHlwZSxcbiAgICAgIH0gYXMgS2V5d29yZFxuICAgIH0pXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEtleXdvcmRzKHJvb3RFbDogWG1sRWxlbWVudCk6IEtleXdvcmRbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cygnZ21kOmRlc2NyaXB0aXZlS2V5d29yZHMnLCAnZ21kOk1EX0tleXdvcmRzJyksXG4gICAgbWFwQXJyYXkocmVhZEtleXdvcmRHcm91cCksXG4gICAgZmxhdHRlbkFycmF5KClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkU3RhdHVzKHJvb3RFbDogWG1sRWxlbWVudCk6IFJlY29yZFN0YXR1cyB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpzdGF0dXMnLCBmYWxzZSksXG4gICAgZXh0cmFjdFN0YXR1cygpXG4gICkocm9vdEVsKVxufVxuXG5jb25zdCBnZXRDb25zdHJhaW50cyA9IHBpcGUoXG4gIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycsIGZhbHNlKVxuKVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZExlZ2FsQ29uc3RyYWludHMocm9vdEVsOiBYbWxFbGVtZW50KTogQ29uc3RyYWludFtdIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZ2V0Q29uc3RyYWludHMsXG4gICAgbWFwQXJyYXkoZXh0cmFjdExlZ2FsQ29uc3RyYWludHMoKSksXG4gICAgZmxhdHRlbkFycmF5KCksXG4gICAgZmxhdHRlbkFycmF5KClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkU2VjdXJpdHlDb25zdHJhaW50cyhyb290RWw6IFhtbEVsZW1lbnQpOiBDb25zdHJhaW50W10ge1xuICByZXR1cm4gcGlwZShcbiAgICBnZXRDb25zdHJhaW50cyxcbiAgICBtYXBBcnJheShleHRyYWN0U2VjdXJpdHlDb25zdHJhaW50cygpKSxcbiAgICBmbGF0dGVuQXJyYXkoKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRPdGhlckNvbnN0cmFpbnRzKHJvb3RFbDogWG1sRWxlbWVudCk6IENvbnN0cmFpbnRbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGdldENvbnN0cmFpbnRzLFxuICAgIG1hcEFycmF5KGV4dHJhY3RPdGhlckNvbnN0cmFpbnRzKCkpLFxuICAgIGZsYXR0ZW5BcnJheSgpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZExpY2Vuc2VzKHJvb3RFbDogWG1sRWxlbWVudCk6IENvbnN0cmFpbnRbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGdldENvbnN0cmFpbnRzLFxuICAgIG1hcEFycmF5KGV4dHJhY3RMaWNlbnNlcygpKSxcbiAgICBmbGF0dGVuQXJyYXkoKVxuICApKHJvb3RFbClcbn1cblxuLy8gbm90IHVzZWQgeWV0XG5leHBvcnQgZnVuY3Rpb24gcmVhZElzb1RvcGljcyhyb290RWw6IFhtbEVsZW1lbnQpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpNRF9Ub3BpY0NhdGVnb3J5Q29kZScsIHRydWUpLFxuICAgIG1hcEFycmF5KHJlYWRUZXh0KCkpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFNwYXRpYWxSZXByZXNlbnRhdGlvbihcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pOiBTcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlIHwgbnVsbCB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KFxuICAgICAgJ2dtZDpzcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlJyxcbiAgICAgICdnbWQ6TURfU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZUNvZGUnXG4gICAgKSxcbiAgICByZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJyksXG4gICAgbWFwKGdldFNwYXRpYWxSZXByZXNlbnRhdGlvbkZyb21Db2RlKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRPdmVydmlld3Mocm9vdEVsOiBYbWxFbGVtZW50KTogR3JhcGhpY092ZXJ2aWV3W10ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6Z3JhcGhpY092ZXJ2aWV3JywgZmFsc2UpLFxuICAgIG1hcEFycmF5KFxuICAgICAgY29tYmluZShcbiAgICAgICAgcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6ZmlsZU5hbWUnKSwgZXh0cmFjdE1hbmRhdG9yeVVybCgpKSxcbiAgICAgICAgcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6ZmlsZURlc2NyaXB0aW9uJyksIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSlcbiAgICAgIClcbiAgICApLFxuICAgIG1hcEFycmF5KChbdXJsLCBkZXNjcmlwdGlvbl0pID0+ICh7XG4gICAgICB1cmwsXG4gICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbiB9KSxcbiAgICB9KSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkTGluZWFnZShyb290RWw6IFhtbEVsZW1lbnQpOiBzdHJpbmcge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudChcbiAgICAgICdnbWQ6ZGF0YVF1YWxpdHlJbmZvJyxcbiAgICAgICdnbWQ6RFFfRGF0YVF1YWxpdHknLFxuICAgICAgJ2dtZDpsaW5lYWdlJyxcbiAgICAgICdnbWQ6TElfTGluZWFnZScsXG4gICAgICAnZ21kOnN0YXRlbWVudCdcbiAgICApLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWREaXN0cmlidXRpb25zKHJvb3RFbDogWG1sRWxlbWVudCk6IERhdGFzZXREaXN0cmlidXRpb25bXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cygnZ21kOmRpc3RyaWJ1dGlvbkluZm8nLCAnZ21kOk1EX0Rpc3RyaWJ1dGlvbicpLFxuICAgIG1hcEFycmF5KGV4dHJhY3REYXRhc2V0RGlzdHJpYnV0aW9ucyhnZXRNaW1lVHlwZSkpLFxuICAgIGZsYXR0ZW5BcnJheSgpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVwZGF0ZUZyZXF1ZW5jeShyb290RWw6IFhtbEVsZW1lbnQpOiBVcGRhdGVGcmVxdWVuY3kge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkRWxlbWVudChcbiAgICAgICdnbWQ6cmVzb3VyY2VNYWludGVuYW5jZScsXG4gICAgICAnZ21kOk1EX01haW50ZW5hbmNlSW5mb3JtYXRpb24nXG4gICAgKSxcbiAgICBleHRyYWN0VXBkYXRlRnJlcXVlbmN5KCksXG4gICAgbWFwKCh1cGRhdGVGcmVxdWVuY3kpID0+IHVwZGF0ZUZyZXF1ZW5jeSB8fCAndW5rbm93bicpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFNlcnZpY2VPbmxpbmVSZXNvdXJjZXMoKTogQ2hhaW5hYmxlRnVuY3Rpb248XG4gIFhtbEVsZW1lbnQsXG4gIFNlcnZpY2VPbmxpbmVSZXNvdXJjZVtdXG4+IHtcbiAgY29uc3QgZ2V0VXJsID0gcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6bGlua2FnZScpLCBleHRyYWN0TWFuZGF0b3J5VXJsKCkpXG4gIGNvbnN0IGdldFByb3RvY29sU3RyID0gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6cHJvdG9jb2wnKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKVxuICBjb25zdCBnZXRQcm90b2NvbCA9IHBpcGUoZ2V0UHJvdG9jb2xTdHIsIG1hcChtYXRjaFByb3RvY29sKSlcbiAgY29uc3QgZ2V0T25saW5lRnVuY3Rpb24gPSBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdnbWQ6ZnVuY3Rpb24nLCAnZ21kOkNJX09uTGluZUZ1bmN0aW9uQ29kZScpLFxuICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKVxuICApXG4gIGNvbnN0IGdldElzTGluayA9IHBpcGUoXG4gICAgZ2V0T25saW5lRnVuY3Rpb24sXG4gICAgbWFwKChvbmxpbmVGdW5jdGlvbikgPT4gb25saW5lRnVuY3Rpb24gPT09ICdpbmZvcm1hdGlvbicpXG4gIClcbiAgY29uc3QgZ2V0TmFtZSA9IHBpcGUoZmluZENoaWxkRWxlbWVudCgnZ21kOm5hbWUnKSwgZXh0cmFjdENoYXJhY3RlclN0cmluZygpKVxuICBjb25zdCBnZXREZXNjcmlwdGlvbiA9IHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnZ21kOmRlc2NyaXB0aW9uJyksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gIClcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKFxuICAgICAgJ2dtZDp0cmFuc2Zlck9wdGlvbnMnLFxuICAgICAgJ2dtZDpNRF9EaWdpdGFsVHJhbnNmZXJPcHRpb25zJyxcbiAgICAgICdnbWQ6b25MaW5lJyxcbiAgICAgICdnbWQ6Q0lfT25saW5lUmVzb3VyY2UnXG4gICAgKSxcbiAgICBtYXBBcnJheShjb21iaW5lKGdldElzTGluaywgZ2V0UHJvdG9jb2wsIGdldFVybCwgZ2V0TmFtZSwgZ2V0RGVzY3JpcHRpb24pKSxcbiAgICBtYXBBcnJheSgoW2lzTGluaywgcHJvdG9jb2wsIHVybCwgbmFtZSwgZGVzY3JpcHRpb25dKSA9PiB7XG4gICAgICBpZiAoaXNMaW5rKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ2xpbmsnLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgIC4uLihuYW1lICYmIHsgbmFtZSB9KSxcbiAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbiB9KSxcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAnZW5kcG9pbnQnLFxuICAgICAgICAgIGVuZHBvaW50VXJsOiB1cmwsXG4gICAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT25saW5lUmVzb3VyY2VzKFxuICByb290RWw6IFhtbEVsZW1lbnRcbik6IFNlcnZpY2VPbmxpbmVSZXNvdXJjZVtdIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6ZGlzdHJpYnV0aW9uSW5mbycsICdnbWQ6TURfRGlzdHJpYnV0aW9uJyksXG4gICAgbWFwQXJyYXkoZXh0cmFjdFNlcnZpY2VPbmxpbmVSZXNvdXJjZXMoKSksXG4gICAgZmxhdHRlbkFycmF5KClcbiAgKShyb290RWwpXG59XG4iXX0=
357
+ export function readTemporalExtents(rootEl) {
358
+ return pipe(findIdentification(), findNestedElements('gmd:extent', 'gmd:EX_Extent', 'gmd:temporalElement'), mapArray(combine(findNestedElement('gmd:EX_TemporalExtent', 'gmd:extent', 'gml:TimePeriod'), findNestedElement('gmd:EX_TemporalExtent', 'gmd:extent', 'gml:TimeInstant'))), mapArray(([periodEl, instantEl]) => {
359
+ if (periodEl) {
360
+ return pipe(combine(pipe(findChildElement('gml:beginPosition', false), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null))), pipe(findChildElement('gml:endPosition', false), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null)))), map(([start, end]) => ({
361
+ start,
362
+ end,
363
+ })))(periodEl);
364
+ }
365
+ else {
366
+ return pipe(findChildElement('gml:timePosition', false), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null)), map((date) => ({
367
+ start: date,
368
+ })))(instantEl);
369
+ }
370
+ }))(rootEl);
371
+ }
372
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1wYXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2lzbzE5MTM5L3JlYWQtcGFydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDNUUsT0FBTyxFQUVMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFlBQVksRUFDWixVQUFVLEVBQ1YsR0FBRyxFQUNILFFBQVEsRUFDUixJQUFJLEdBQ0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixhQUFhLEVBQ2IsUUFBUSxHQUNULE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUVyRixNQUFNLFVBQVUsc0JBQXNCO0lBSXBDLE9BQU8sSUFBSSxDQUNULFFBQVEsQ0FDTixnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsRUFDOUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUN0QyxFQUNELFFBQVEsRUFBRSxDQUNYLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxJQUFJLENBQ1QsUUFBUSxDQUNOLGdCQUFnQixD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LElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDYixLQUFLLEVBQUUsSUFBSTthQUNaLENBQUMsQ0FBQyxDQUNKLENBQUMsU0FBUyxDQUFDLENBQUE7U0FDYjtJQUNILENBQUMsQ0FBQyxDQUNILENBQUMsTUFBTSxDQUFDLENBQUE7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uc3RyYWludCxcbiAgRGF0YXNldERpc3RyaWJ1dGlvbixcbiAgR3JhcGhpY092ZXJ2aWV3LFxuICBJbmRpdmlkdWFsLFxuICBLZXl3b3JkLFxuICBLZXl3b3JkVGhlc2F1cnVzLFxuICBPcmdhbml6YXRpb24sXG4gIFJlY29yZEtpbmQsXG4gIFJlY29yZFN0YXR1cyxcbiAgUm9sZSxcbiAgU2VydmljZU9ubGluZVJlc291cmNlLFxuICBTcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlLFxuICBVcGRhdGVGcmVxdWVuY3ksXG4gIFVwZGF0ZUZyZXF1ZW5jeUN1c3RvbSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgbWF0Y2hNaW1lVHlwZSwgbWF0Y2hQcm90b2NvbCB9IGZyb20gJy4uL2NvbW1vbi9kaXN0cmlidXRpb24ubWFwcGVyJ1xuaW1wb3J0IHtcbiAgQ2hhaW5hYmxlRnVuY3Rpb24sXG4gIGNvbWJpbmUsXG4gIGZhbGxiYWNrLFxuICBmaWx0ZXJBcnJheSxcbiAgZmxhdHRlbkFycmF5LFxuICBnZXRBdEluZGV4LFxuICBtYXAsXG4gIG1hcEFycmF5LFxuICBwaXBlLFxufSBmcm9tICcuLi9mdW5jdGlvbi11dGlscydcbmltcG9ydCB7XG4gIFhtbEVsZW1lbnQsXG4gIGZpbmRDaGlsZEVsZW1lbnQsXG4gIGZpbmRDaGlsZHJlbkVsZW1lbnQsXG4gIGZpbmROZXN0ZWRFbGVtZW50LFxuICBmaW5kTmVzdGVkRWxlbWVudHMsXG4gIGZpbmRQYXJlbnQsXG4gIHJlYWRBdHRyaWJ1dGUsXG4gIHJlYWRUZXh0LFxufSBmcm9tICcuLi94bWwtdXRpbHMnXG5pbXBvcnQgeyBmdWxsTmFtZVRvUGFydHMgfSBmcm9tICcuL3V0aWxzL2luZGl2aWR1YWwtbmFtZSdcbmltcG9ydCB7IGdldEtleXdvcmRUeXBlRnJvbUtleXdvcmRUeXBlQ29kZSB9IGZyb20gJy4vdXRpbHMva2V5d29yZC5tYXBwZXInXG5pbXBvcnQgeyBnZXRSb2xlRnJvbVJvbGVDb2RlIH0gZnJvbSAnLi91dGlscy9yb2xlLm1hcHBlcidcbmltcG9ydCB7IGdldFN0YXR1c0Zyb21TdGF0dXNDb2RlIH0gZnJvbSAnLi91dGlscy9zdGF0dXMubWFwcGVyJ1xuaW1wb3J0IHsgZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUZyZXF1ZW5jeUNvZGUgfSBmcm9tICcuL3V0aWxzL3VwZGF0ZS1mcmVxdWVuY3kubWFwcGVyJ1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdENoYXJhY3RlclN0cmluZygpOiBDaGFpbmFibGVGdW5jdGlvbjxcbiAgWG1sRWxlbWVudCxcbiAgc3RyaW5nXG4+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmFsbGJhY2soXG4gICAgICBmaW5kQ2hpbGRFbGVtZW50KCdnY286Q2hhcmFjdGVyU3RyaW5nJywgZmFsc2UpLFxuICAgICAgZmluZENoaWxkRWxlbWVudCgnZ214OkFuY2hvcicsIGZhbHNlKVxuICAgICksXG4gICAgcmVhZFRleHQoKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RGF0ZVRpbWUoKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgRGF0ZT4ge1xuICByZXR1cm4gcGlwZShcbiAgICBmYWxsYmFjayhcbiAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2djbzpEYXRlVGltZScsIGZhbHNlKSxcbiAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2djbzpEYXRlJywgZmFsc2UpXG4gICAgKSxcbiAgICByZWFkVGV4dCgpLFxuICAgIG1hcCgoZGF0ZVN0cikgPT4gKGRhdGVTdHIgPyBuZXcgRGF0ZShkYXRlU3RyKSA6IG51bGwpKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VXJsKCk6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFVSTD4ge1xuICBjb25zdCBnZXRVcmwgPSBwaXBlKGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpVUkwnLCBmYWxzZSksIHJlYWRUZXh0KCkpXG4gIGNvbnN0IGdldENoYXJhY3RlclN0cmluZyA9IHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnZ2NvOkNoYXJhY3RlclN0cmluZycsIGZhbHNlKSxcbiAgICByZWFkVGV4dCgpXG4gIClcbiAgY29uc3QgZ2V0QW5jaG9yID0gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbXg6QW5jaG9yJywgZmFsc2UpLFxuICAgIHJlYWRBdHRyaWJ1dGUoJ3hsaW5rOmhyZWYnKVxuICApXG4gIHJldHVybiBwaXBlKFxuICAgIGZhbGxiYWNrKGdldFVybCwgZ2V0QW5jaG9yLCBnZXRDaGFyYWN0ZXJTdHJpbmcpLFxuICAgIG1hcCgodXJsU3RyKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbmV3IFVSTCh1cmxTdHIpXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgfSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE1hbmRhdG9yeVVybCgpIHtcbiAgcmV0dXJuIGZhbGxiYWNrKGV4dHJhY3RVcmwoKSwgKCkgPT4gbmV3IFVSTCgnaHR0cDovL21pc3NpbmcnKSlcbn1cblxuLy8gZnJvbSBnbWQ6cm9sZVxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSb2xlKCk6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFJvbGU+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnZ21kOkNJX1JvbGVDb2RlJyksXG4gICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpLFxuICAgIG1hcChnZXRSb2xlRnJvbVJvbGVDb2RlKVxuICApXG59XG5cbi8vIGZyb20gZ21kOkNJX1Jlc3BvbnNpYmxlUGFydHlcbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0T3JnYW5pemF0aW9uKCk6IENoYWluYWJsZUZ1bmN0aW9uPFxuICBYbWxFbGVtZW50LFxuICBPcmdhbml6YXRpb25cbj4ge1xuICBjb25zdCBnZXRVcmwgPSBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cyhcbiAgICAgICdnbWQ6Y29udGFjdEluZm8nLFxuICAgICAgJ2dtZDpDSV9Db250YWN0JyxcbiAgICAgICdnbWQ6b25saW5lUmVzb3VyY2UnLFxuICAgICAgJ2dtZDpDSV9PbmxpbmVSZXNvdXJjZScsXG4gICAgICAnZ21kOmxpbmthZ2UnXG4gICAgKSxcbiAgICBnZXRBdEluZGV4KDApLFxuICAgIGV4dHJhY3RVcmwoKVxuICApXG4gIHJldHVybiBwaXBlKFxuICAgIGNvbWJpbmUoXG4gICAgICBwaXBlKFxuICAgICAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6b3JnYW5pc2F0aW9uTmFtZScsIGZhbHNlKSxcbiAgICAgICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gICAgICApLFxuICAgICAgZ2V0VXJsXG4gICAgKSxcbiAgICBtYXAoKFtuYW1lLCB3ZWJzaXRlXSkgPT4gKHtcbiAgICAgIG5hbWUsXG4gICAgICAuLi4od2Vic2l0ZSAmJiB7IHdlYnNpdGUgfSksXG4gICAgfSkpXG4gIClcbn1cblxuLy8gZnJvbSBnbWQ6Q0lfUmVzcG9uc2libGVQYXJ0eVxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbmRpdmlkdWFsKCk6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIEluZGl2aWR1YWw+IHtcbiAgY29uc3QgZ2V0Um9sZSA9IHBpcGUoZmluZENoaWxkRWxlbWVudCgnZ21kOnJvbGUnKSwgZXh0cmFjdFJvbGUoKSlcbiAgY29uc3QgZ2V0UG9zaXRpb24gPSBwaXBlKFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpwb3NpdGlvbk5hbWUnKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKVxuICBjb25zdCBnZXROYW1lUGFydHMgPSBwaXBlKFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDppbmRpdmlkdWFsTmFtZScpLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSxcbiAgICBtYXAoKGZ1bGxOYW1lKSA9PiB7XG4gICAgICBpZiAoIWZ1bGxOYW1lKSByZXR1cm4gW11cbiAgICAgIHJldHVybiBmdWxsTmFtZVRvUGFydHMoZnVsbE5hbWUpXG4gICAgfSlcbiAgKVxuICBjb25zdCBnZXRPcmdhbml6YXRpb24gPSBleHRyYWN0T3JnYW5pemF0aW9uKClcbiAgY29uc3QgZ2V0Q29udGFjdFJvb3QgPSBmaW5kTmVzdGVkRWxlbWVudCgnZ21kOmNvbnRhY3RJbmZvJywgJ2dtZDpDSV9Db250YWN0JylcbiAgY29uc3QgZ2V0RW1haWwgPSBwaXBlKFxuICAgIGdldENvbnRhY3RSb290LFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDplbGVjdHJvbmljTWFpbEFkZHJlc3MnKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCksXG4gICAgbWFwKChlbWFpbCkgPT4gKGVtYWlsID09PSBudWxsID8gJ21pc3NpbmdAbWlzc2luZy5jb20nIDogZW1haWwpKVxuICApXG4gIGNvbnN0IGdldEFkZHJlc3MgPSBwaXBlKFxuICAgIGdldENvbnRhY3RSb290LFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdnbWQ6YWRkcmVzcycsICdnbWQ6Q0lfQWRkcmVzcycpLFxuICAgIGNvbWJpbmUoXG4gICAgICBwaXBlKFxuICAgICAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6ZGVsaXZlcnlQb2ludCcsIGZhbHNlKSxcbiAgICAgICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gICAgICApLFxuICAgICAgcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6Y2l0eScsIGZhbHNlKSwgZXh0cmFjdENoYXJhY3RlclN0cmluZygpKSxcbiAgICAgIHBpcGUoZmluZENoaWxkRWxlbWVudCgnZ21kOnBvc3RhbENvZGUnLCBmYWxzZSksIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSksXG4gICAgICBwaXBlKGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpjb3VudHJ5JywgZmFsc2UpLCBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCkpXG4gICAgKSxcbiAgICBtYXAoKHBhcnRzKSA9PiBwYXJ0cy5maWx0ZXIoKHApID0+ICEhcCkuam9pbignLCAnKSlcbiAgKVxuICBjb25zdCBnZXRQaG9uZSA9IHBpcGUoXG4gICAgZ2V0Q29udGFjdFJvb3QsXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ2dtZDpwaG9uZScsICdnbWQ6Q0lfVGVsZXBob25lJywgJ2dtZDp2b2ljZScpLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKVxuICApXG4gIHJldHVybiBwaXBlKFxuICAgIGNvbWJpbmUoXG4gICAgICBnZXRSb2xlLFxuICAgICAgZ2V0UG9zaXRpb24sXG4gICAgICBnZXROYW1lUGFydHMsXG4gICAgICBnZXRPcmdhbml6YXRpb24sXG4gICAgICBnZXRFbWFpbCxcbiAgICAgIGdldEFkZHJlc3MsXG4gICAgICBnZXRQaG9uZVxuICAgICksXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgcm9sZSxcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIFtmaXJzdE5hbWUsIGxhc3ROYW1lXSxcbiAgICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgcGhvbmUsXG4gICAgICBdKSA9PiAoe1xuICAgICAgICBlbWFpbCxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgICAuLi4ocG9zaXRpb24gJiYgeyBwb3NpdGlvbiB9KSxcbiAgICAgICAgLi4uKGZpcnN0TmFtZSAmJiB7IGZpcnN0TmFtZSB9KSxcbiAgICAgICAgLi4uKGxhc3ROYW1lICYmIHsgbGFzdE5hbWUgfSksXG4gICAgICAgIC4uLihhZGRyZXNzICYmIHsgYWRkcmVzcyB9KSxcbiAgICAgICAgLi4uKHBob25lICYmIHsgcGhvbmUgfSksXG4gICAgICB9KVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFN0YXR1cygpOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBSZWNvcmRTdGF0dXM+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnZ21kOk1EX1Byb2dyZXNzQ29kZScpLFxuICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSxcbiAgICBtYXAoZ2V0U3RhdHVzRnJvbVN0YXR1c0NvZGUpXG4gIClcbn1cblxuLy8gZnJvbSBnbWQ6cmVzb3VyY2VDb25zdHJhaW50c1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RMZWdhbENvbnN0cmFpbnRzKCk6IENoYWluYWJsZUZ1bmN0aW9uPFxuICBYbWxFbGVtZW50LFxuICBBcnJheTxDb25zdHJhaW50PlxuPiB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpNRF9MZWdhbENvbnN0cmFpbnRzJywgZmFsc2UpLFxuICAgIGZpbHRlckFycmF5KFxuICAgICAgcGlwZShcbiAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOk1EX1Jlc3RyaWN0aW9uQ29kZScpLFxuICAgICAgICBtYXBBcnJheShyZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJykpLFxuICAgICAgICBtYXAoKHZhbHVlcykgPT4gdmFsdWVzLmluZGV4T2YoJ2xpY2Vuc2UnKSA9PT0gLTEpXG4gICAgICApXG4gICAgKSxcbiAgICBtYXBBcnJheShcbiAgICAgIGNvbWJpbmUoXG4gICAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpvdGhlckNvbnN0cmFpbnRzJyksXG4gICAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDp1c2VMaW1pdGF0aW9uJylcbiAgICAgIClcbiAgICApLFxuICAgIGZsYXR0ZW5BcnJheSgpLFxuICAgIGZsYXR0ZW5BcnJheSgpLFxuICAgIG1hcEFycmF5KGNvbWJpbmUoZXh0cmFjdENoYXJhY3RlclN0cmluZygpLCBleHRyYWN0VXJsKCkpKSxcbiAgICBtYXBBcnJheSgoW3RleHQsIHVybF0pID0+ICh7XG4gICAgICAuLi4odXJsICYmIHsgdXJsIH0pLFxuICAgICAgdGV4dCxcbiAgICB9KSlcbiAgKVxufVxuXG4vLyBmcm9tIGdtZDpyZXNvdXJjZUNvbnN0cmFpbnRzXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFNlY3VyaXR5Q29uc3RyYWludHMoKTogQ2hhaW5hYmxlRnVuY3Rpb248XG4gIFhtbEVsZW1lbnQsXG4gIEFycmF5PENvbnN0cmFpbnQ+XG4+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6TURfU2VjdXJpdHlDb25zdHJhaW50cycsICdnbWQ6dXNlTGltaXRhdGlvbicpLFxuICAgIGZsYXR0ZW5BcnJheSgpLFxuICAgIG1hcEFycmF5KGNvbWJpbmUoZXh0cmFjdENoYXJhY3RlclN0cmluZygpLCBleHRyYWN0VXJsKCkpKSxcbiAgICBtYXBBcnJheSgoW3RleHQsIHVybF0pID0+ICh7XG4gICAgICAuLi4odXJsICYmIHsgdXJsIH0pLFxuICAgICAgdGV4dCxcbiAgICB9KSlcbiAgKVxufVxuXG4vLyBmcm9tIGdtZDpyZXNvdXJjZUNvbnN0cmFpbnRzXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE90aGVyQ29uc3RyYWludHMoKTogQ2hhaW5hYmxlRnVuY3Rpb248XG4gIFhtbEVsZW1lbnQsXG4gIEFycmF5PENvbnN0cmFpbnQ+XG4+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6TURfQ29uc3RyYWludHMnLCAnZ21kOnVzZUxpbWl0YXRpb24nKSxcbiAgICBmbGF0dGVuQXJyYXkoKSxcbiAgICBtYXBBcnJheShjb21iaW5lKGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSwgZXh0cmFjdFVybCgpKSksXG4gICAgbWFwQXJyYXkoKFt0ZXh0LCB1cmxdKSA9PiAoe1xuICAgICAgLi4uKHVybCAmJiB7IHVybCB9KSxcbiAgICAgIHRleHQsXG4gICAgfSkpXG4gIClcbn1cblxuLy8gZnJvbSBnbWQ6cmVzb3VyY2VDb25zdHJhaW50c1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RMaWNlbnNlcygpOiBDaGFpbmFibGVGdW5jdGlvbjxcbiAgWG1sRWxlbWVudCxcbiAgQXJyYXk8Q29uc3RyYWludD5cbj4ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6TURfTGVnYWxDb25zdHJhaW50cycsIGZhbHNlKSxcbiAgICBmaWx0ZXJBcnJheShcbiAgICAgIHBpcGUoXG4gICAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnKSxcbiAgICAgICAgbWFwQXJyYXkocmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpKSxcbiAgICAgICAgbWFwKCh2YWx1ZXMpID0+IHZhbHVlcy5pbmRleE9mKCdsaWNlbnNlJykgPiAtMSlcbiAgICAgIClcbiAgICApLFxuICAgIG1hcEFycmF5KFxuICAgICAgY29tYmluZShcbiAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOm90aGVyQ29uc3RyYWludHMnKSxcbiAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnVzZUxpbWl0YXRpb24nKVxuICAgICAgKVxuICAgICksXG4gICAgZmxhdHRlbkFycmF5KCksXG4gICAgZmxhdHRlbkFycmF5KCksXG4gICAgbWFwQXJyYXkoY29tYmluZShleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCksIGV4dHJhY3RVcmwoKSkpLFxuICAgIG1hcEFycmF5KChbdGV4dCwgdXJsXSkgPT4gKHtcbiAgICAgIC4uLih1cmwgJiYgeyB1cmwgfSksXG4gICAgICB0ZXh0LFxuICAgIH0pKVxuICApXG59XG5cbmNvbnN0IGdldE1pbWVUeXBlID0gcGlwZShcbiAgZmluZFBhcmVudCgnZ21kOk1EX0Rpc3RyaWJ1dGlvbicpLFxuICBmaW5kTmVzdGVkRWxlbWVudCgnZ21kOmRpc3RyaWJ1dGlvbkZvcm1hdCcsICdnbWQ6TURfRm9ybWF0JywgJ2dtZDpuYW1lJyksXG4gIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSxcbiAgbWFwKG1hdGNoTWltZVR5cGUpXG4pXG5cbi8qKlxuICogRXh0cmFjdCBkaXN0cmlidXRpb25zIGZyb20gYSBNRF9EaXN0cmlidXRpb24gZWxlbWVudFxuICogQHBhcmFtIGdldE1pbWVUeXBlRm4gVGhpcyBmdW5jdGlvbiBzdGFydHMgZnJvbSBhIGdtZDp0cmFuc2Zlck9wdGlvbnMgZWxlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdERhdGFzZXREaXN0cmlidXRpb25zKFxuICBnZXRNaW1lVHlwZUZuOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBzdHJpbmc+XG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBEYXRhc2V0RGlzdHJpYnV0aW9uW10+IHtcbiAgY29uc3QgZ2V0VXJsID0gcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6bGlua2FnZScpLCBleHRyYWN0TWFuZGF0b3J5VXJsKCkpXG4gIGNvbnN0IGdldFByb3RvY29sU3RyID0gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6cHJvdG9jb2wnKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKVxuICBjb25zdCBnZXRQcm90b2NvbCA9IHBpcGUoZ2V0UHJvdG9jb2xTdHIsIG1hcChtYXRjaFByb3RvY29sKSlcbiAgY29uc3QgZ2V0T25saW5lRnVuY3Rpb24gPSBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdnbWQ6ZnVuY3Rpb24nLCAnZ21kOkNJX09uTGluZUZ1bmN0aW9uQ29kZScpLFxuICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKVxuICApXG4gIGNvbnN0IGdldElzU2VydmljZSA9IHBpcGUoXG4gICAgZ2V0UHJvdG9jb2wsXG4gICAgbWFwKChwcm90b2NvbCkgPT4gcHJvdG9jb2wgIT09ICdvdGhlcicpXG4gIClcbiAgY29uc3QgZ2V0SXNEb3dubG9hZCA9IHBpcGUoXG4gICAgY29tYmluZShnZXRJc1NlcnZpY2UsIGdldE9ubGluZUZ1bmN0aW9uLCBnZXRQcm90b2NvbFN0ciksXG4gICAgbWFwKFxuICAgICAgKFtpc1NlcnZpY2UsIG9ubGluZUZ1bmN0aW9uLCBwcm90b2NvbFN0cl0pID0+XG4gICAgICAgICghaXNTZXJ2aWNlICYmIG9ubGluZUZ1bmN0aW9uID09PSAnZG93bmxvYWQnKSB8fFxuICAgICAgICAvZG93bmxvYWQvaS50ZXN0KHByb3RvY29sU3RyKVxuICAgIClcbiAgKVxuICBjb25zdCBnZXROYW1lID0gcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6bmFtZScpLCBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCkpXG4gIGNvbnN0IGdldERlc2NyaXB0aW9uID0gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6ZGVzY3JpcHRpb24nKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKVxuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudHMoXG4gICAgICAnZ21kOnRyYW5zZmVyT3B0aW9ucycsXG4gICAgICAnZ21kOk1EX0RpZ2l0YWxUcmFuc2Zlck9wdGlvbnMnLFxuICAgICAgJ2dtZDpvbkxpbmUnLFxuICAgICAgJ2dtZDpDSV9PbmxpbmVSZXNvdXJjZSdcbiAgICApLFxuICAgIG1hcEFycmF5KFxuICAgICAgY29tYmluZShcbiAgICAgICAgZ2V0SXNTZXJ2aWNlLFxuICAgICAgICBnZXRJc0Rvd25sb2FkLFxuICAgICAgICBnZXRQcm90b2NvbCxcbiAgICAgICAgZ2V0VXJsLFxuICAgICAgICBnZXROYW1lLFxuICAgICAgICBnZXREZXNjcmlwdGlvbixcbiAgICAgICAgZ2V0TWltZVR5cGVGblxuICAgICAgKVxuICAgICksXG4gICAgbWFwQXJyYXkoXG4gICAgICAoW2lzU2VydmljZSwgaXNEb3dubG9hZCwgcHJvdG9jb2wsIHVybCwgbmFtZSwgZGVzY3JpcHRpb24sIG1pbWVUeXBlXSkgPT4ge1xuICAgICAgICBpZiAoaXNTZXJ2aWNlKSB7XG4gICAgICAgICAgY29uc3QgaGFzSWRlbnRpZmllciA9IHByb3RvY29sID09PSAnd21zJyB8fCBwcm90b2NvbCA9PT0gJ3dmcydcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ3NlcnZpY2UnLFxuICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2w6IHByb3RvY29sLFxuICAgICAgICAgICAgLi4uKG5hbWUgJiYgaGFzSWRlbnRpZmllciAmJiB7IGlkZW50aWZpZXJJblNlcnZpY2U6IG5hbWUgfSksXG4gICAgICAgICAgICAuLi4obmFtZSAmJiB7IG5hbWUgfSksXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbiB9KSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEb3dubG9hZCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZG93bmxvYWQnLFxuICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAuLi4obmFtZSAmJiB7IG5hbWUgfSksXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbiB9KSxcbiAgICAgICAgICAgIC4uLihtaW1lVHlwZSAmJiB7IG1pbWVUeXBlIH0pLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2xpbmsnLFxuICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAuLi4obmFtZSAmJiB7IG5hbWUgfSksXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbiB9KSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVwZGF0ZUZyZXF1ZW5jeUZyb21DdXN0b21QZXJpb2QoXG4gIGlzb1BlcmlvZDogc3RyaW5nXG4pOiBVcGRhdGVGcmVxdWVuY3lDdXN0b20ge1xuICBpZiAoIWlzb1BlcmlvZCkgcmV0dXJuIG51bGxcbiAgY29uc3QgbWF0Y2hlcyA9IGlzb1BlcmlvZC5tYXRjaChcbiAgICAvXi0/UCg/OihbMC05XSspWSk/KD86KFswLTldKylNKT8oPzooWzAtOV0rKUQpP1Q/KD86KFswLTldKylIKT8vXG4gIClcbiAgaWYgKCFtYXRjaGVzKSByZXR1cm4gbnVsbFxuICBjb25zdCB5ZWFycyA9IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSB8fCAwXG4gIGNvbnN0IG1vbnRocyA9IHBhcnNlSW50KG1hdGNoZXNbMl0sIDEwKSB8fCAwXG4gIGNvbnN0IGRheXMgPSBwYXJzZUludChtYXRjaGVzWzNdLCAxMCkgfHwgMFxuICBjb25zdCBob3VycyA9IHBhcnNlSW50KG1hdGNoZXNbNF0sIDEwKSB8fCAwXG4gIGlmICh5ZWFycykge1xuICAgIHJldHVybiB7XG4gICAgICBwZXI6ICd5ZWFyJyxcbiAgICAgIHVwZGF0ZWRUaW1lczogMSxcbiAgICB9XG4gIH0gZWxzZSBpZiAobW9udGhzID09PSAxKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBlcjogJ21vbnRoJyxcbiAgICAgIHVwZGF0ZWRUaW1lczogMSxcbiAgICB9XG4gIH0gZWxzZSBpZiAobW9udGhzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBlcjogJ3llYXInLFxuICAgICAgdXBkYXRlZFRpbWVzOiBNYXRoLnJvdW5kKDEyIC8gbW9udGhzKSxcbiAgICB9XG4gIH0gZWxzZSBpZiAoZGF5cyA9PT0gMSkge1xuICAgIHJldHVybiB7XG4gICAgICBwZXI6ICdkYXknLFxuICAgICAgdXBkYXRlZFRpbWVzOiAxLFxuICAgIH1cbiAgfSBlbHNlIGlmIChkYXlzIDw9IDcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGVyOiAnd2VlaycsXG4gICAgICB1cGRhdGVkVGltZXM6IE1hdGgucm91bmQoNyAvIGRheXMgLSAwLjAwMDEpLCAvLyB0aGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGF0ICdldmVyeSAyIGRheXMnID0gJzMgdGltZXMgcGVyIHdlZWsnXG4gICAgfVxuICB9IGVsc2UgaWYgKGRheXMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGVyOiAnbW9udGgnLFxuICAgICAgdXBkYXRlZFRpbWVzOiBNYXRoLnJvdW5kKDMwIC8gZGF5cyksXG4gICAgfVxuICB9IGVsc2UgaWYgKGhvdXJzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBlcjogJ2RheScsXG4gICAgICB1cGRhdGVkVGltZXM6IE1hdGgucm91bmQoMjQgLyBkYXlzKSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLy8gZnJvbSBnbWQ6TURfTWFpbnRlbmFuY2VJbmZvcm1hdGlvblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RVcGRhdGVGcmVxdWVuY3koKTogQ2hhaW5hYmxlRnVuY3Rpb248XG4gIFhtbEVsZW1lbnQsXG4gIFVwZGF0ZUZyZXF1ZW5jeVxuPiB7XG4gIHJldHVybiBmYWxsYmFjayhcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkRWxlbWVudCgnZ21kOk1EX01haW50ZW5hbmNlRnJlcXVlbmN5Q29kZScpLFxuICAgICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpLFxuICAgICAgbWFwKGdldFVwZGF0ZUZyZXF1ZW5jeUZyb21GcmVxdWVuY3lDb2RlKVxuICAgICksXG4gICAgcGlwZShcbiAgICAgIGZpbmROZXN0ZWRFbGVtZW50KFxuICAgICAgICAnZ21kOnVzZXJEZWZpbmVkTWFpbnRlbmFuY2VGcmVxdWVuY3knLFxuICAgICAgICAnZ3RzOlRNX1BlcmlvZER1cmF0aW9uJ1xuICAgICAgKSxcbiAgICAgIHJlYWRUZXh0KCksXG4gICAgICBtYXAoZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUN1c3RvbVBlcmlvZClcbiAgICApLFxuICAgIG1hcCgoKSA9PiAndW5rbm93bicpXG4gIClcbn1cblxuLyoqXG4gKiBMb29rcyBmb3Igc3J2OlNWX1NlcnZpY2VJZGVudGlmaWNhdGlvbiBvciBnbWQ6TURfRGF0YUlkZW50aWZpY2F0aW9uIGVsZW1lbnRcbiAqIFdpbGwgZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQgZXhpc3RzLCBub3QgcmVhZGluZyB0aGUgdHlwZSBvZiB0aGUgcmVjb3JkXG4gKiAodGhpcyBhbGxvd3MgdXNpbmcgdGhpcyBmdW5jdGlvbiBpbiBvdGhlciBzaW1pbGFyIHNjaGVtYXMpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kSWRlbnRpZmljYXRpb24oKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDppZGVudGlmaWNhdGlvbkluZm8nLCBmYWxzZSksXG4gICAgY29tYmluZShcbiAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpNRF9EYXRhSWRlbnRpZmljYXRpb24nLCBmYWxzZSksXG4gICAgICBmaW5kQ2hpbGRFbGVtZW50KCdzcnY6U1ZfU2VydmljZUlkZW50aWZpY2F0aW9uJywgZmFsc2UpXG4gICAgKSxcbiAgICBmaWx0ZXJBcnJheSgoZWwpID0+IGVsICE9PSBudWxsKSxcbiAgICBnZXRBdEluZGV4KDApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJZGVudGlmaWNhdGlvbkRhdGUoXG4gIHR5cGU6ICdjcmVhdGlvbicgfCAncmV2aXNpb24nIHwgJ3B1YmxpY2F0aW9uJ1xuKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cygnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicsICdnbWQ6ZGF0ZScpLFxuICAgIGZpbHRlckFycmF5KFxuICAgICAgcGlwZShcbiAgICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKFxuICAgICAgICAgICdnbWQ6Q0lfRGF0ZScsXG4gICAgICAgICAgJ2dtZDpkYXRlVHlwZScsXG4gICAgICAgICAgJ2dtZDpDSV9EYXRlVHlwZUNvZGUnXG4gICAgICAgICksXG4gICAgICAgIGdldEF0SW5kZXgoMCksXG4gICAgICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSxcbiAgICAgICAgbWFwKCh2YWx1ZSkgPT4gdmFsdWUgPT09IHR5cGUpXG4gICAgICApXG4gICAgKSxcbiAgICBnZXRBdEluZGV4KDApLFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cygnZ21kOkNJX0RhdGUnLCAnZ21kOmRhdGUnKSxcbiAgICBnZXRBdEluZGV4KDApLFxuICAgIGV4dHJhY3REYXRlVGltZSgpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNwYXRpYWxSZXByZXNlbnRhdGlvbkZyb21Db2RlKFxuICBzcGF0aWFsUmVwcmVzZW50YXRpb25Db2RlOiBzdHJpbmdcbik6IFNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUgfCBudWxsIHtcbiAgc3dpdGNoIChzcGF0aWFsUmVwcmVzZW50YXRpb25Db2RlKSB7XG4gICAgY2FzZSAnZ3JpZCc6XG4gICAgY2FzZSAndmVjdG9yJzpcbiAgICBjYXNlICd0aW4nOlxuICAgIGNhc2UgJ3RhYmxlJzpcbiAgICBjYXNlICdwb2ludCc6XG4gICAgICByZXR1cm4gc3BhdGlhbFJlcHJlc2VudGF0aW9uQ29kZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVW5pcXVlSWRlbnRpZmllcihyb290RWw6IFhtbEVsZW1lbnQpOiBzdHJpbmcge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6ZmlsZUlkZW50aWZpZXInLCBmYWxzZSksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEtpbmQocm9vdEVsOiBYbWxFbGVtZW50KTogUmVjb3JkS2luZCB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdnbWQ6aGllcmFyY2h5TGV2ZWwnLCAnZ21kOk1EX1Njb3BlQ29kZScpLFxuICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSxcbiAgICBtYXAoXG4gICAgICAoc2NvcGVDb2RlKTogUmVjb3JkS2luZCA9PlxuICAgICAgICBzY29wZUNvZGUgPT09ICdzZXJ2aWNlJyA/ICdzZXJ2aWNlJyA6ICdkYXRhc2V0J1xuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT3duZXJPcmdhbml6YXRpb24ocm9vdEVsOiBYbWxFbGVtZW50KTogT3JnYW5pemF0aW9uIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ2dtZDpjb250YWN0JywgJ2dtZDpDSV9SZXNwb25zaWJsZVBhcnR5JyksXG4gICAgZXh0cmFjdE9yZ2FuaXphdGlvbigpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlc291cmNlVXBkYXRlZChyb290RWw6IFhtbEVsZW1lbnQpOiBEYXRlIHtcbiAgcmV0dXJuIGV4dHJhY3RJZGVudGlmaWNhdGlvbkRhdGUoJ3JldmlzaW9uJykocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlc291cmNlQ3JlYXRlZChyb290RWw6IFhtbEVsZW1lbnQpOiBEYXRlIHtcbiAgcmV0dXJuIGV4dHJhY3RJZGVudGlmaWNhdGlvbkRhdGUoJ2NyZWF0aW9uJykocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlc291cmNlUHVibGlzaGVkKHJvb3RFbDogWG1sRWxlbWVudCk6IERhdGUge1xuICByZXR1cm4gZXh0cmFjdElkZW50aWZpY2F0aW9uRGF0ZSgncHVibGljYXRpb24nKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkUmVjb3JkVXBkYXRlZChyb290RWw6IFhtbEVsZW1lbnQpOiBEYXRlIHtcbiAgcmV0dXJuIHBpcGUoZmluZENoaWxkRWxlbWVudCgnZ21kOmRhdGVTdGFtcCcpLCBleHRyYWN0RGF0ZVRpbWUoKSkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFRpdGxlKHJvb3RFbDogWG1sRWxlbWVudCk6IHN0cmluZyB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdnbWQ6Y2l0YXRpb24nLCAnZ21kOkNJX0NpdGF0aW9uJywgJ2dtZDp0aXRsZScpLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRBYnN0cmFjdChyb290RWw6IFhtbEVsZW1lbnQpOiBzdHJpbmcge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6YWJzdHJhY3QnLCBmYWxzZSksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvbnRhY3RzKHJvb3RFbDogWG1sRWxlbWVudCk6IEluZGl2aWR1YWxbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpjb250YWN0JywgZmFsc2UpLFxuICAgIG1hcEFycmF5KGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpDSV9SZXNwb25zaWJsZVBhcnR5JywgZmFsc2UpKSxcbiAgICBtYXBBcnJheShleHRyYWN0SW5kaXZpZHVhbCgpKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDb250YWN0c0ZvclJlc291cmNlKHJvb3RFbDogWG1sRWxlbWVudCk6IEluZGl2aWR1YWxbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICAgIGNvbWJpbmUoXG4gICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6Y29udGFjdCcsIGZhbHNlKSxcbiAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpwb2ludE9mQ29udGFjdCcsIGZhbHNlKVxuICAgICksXG4gICAgZmxhdHRlbkFycmF5KCksXG4gICAgbWFwQXJyYXkoZmluZENoaWxkRWxlbWVudCgnZ21kOkNJX1Jlc3BvbnNpYmxlUGFydHknLCBmYWxzZSkpLFxuICAgIG1hcEFycmF5KGV4dHJhY3RJbmRpdmlkdWFsKCkpXG4gICkocm9vdEVsKVxufVxuXG4vLyBmcm9tIGdtZDp0aGVzYXVydXNOYW1lXG5leHBvcnQgZnVuY3Rpb24gcmVhZFRoZXNhdXJ1cyhyb290RWw6IFhtbEVsZW1lbnQpOiBLZXl3b3JkVGhlc2F1cnVzIHtcbiAgaWYgKCFyb290RWwpIHJldHVybiBudWxsXG5cbiAgY29uc3QgZmluZElkZW50aWZpZXIgPSBmaW5kTmVzdGVkRWxlbWVudChcbiAgICAnZ21kOkNJX0NpdGF0aW9uJyxcbiAgICAnZ21kOmlkZW50aWZpZXInLFxuICAgICdnbWQ6TURfSWRlbnRpZmllcicsXG4gICAgJ2dtZDpjb2RlJ1xuICApXG4gIGNvbnN0IGlkID0gcGlwZShmaW5kSWRlbnRpZmllciwgZXh0cmFjdENoYXJhY3RlclN0cmluZygpKShyb290RWwpXG4gIGNvbnN0IHVybCA9IHBpcGUoZmluZElkZW50aWZpZXIsIGV4dHJhY3RVcmwoKSkocm9vdEVsKVxuICBjb25zdCBuYW1lID0gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudCgnZ21kOkNJX0NpdGF0aW9uJywgJ2dtZDp0aXRsZScpLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKVxuICApKHJvb3RFbClcbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICAuLi4obmFtZSAmJiB7IG5hbWUgfSksXG4gICAgLi4uKHVybCAmJiB7IHVybCB9KSxcbiAgfVxufVxuXG4vLyBmcm9tIGdtZDpNRF9LZXl3b3Jkc1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRLZXl3b3JkR3JvdXAocm9vdEVsOiBYbWxFbGVtZW50KTogS2V5d29yZFtdIHtcbiAgY29uc3QgdHlwZSA9IHBpcGUoXG4gICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOk1EX0tleXdvcmRUeXBlQ29kZScpLFxuICAgIG1hcEFycmF5KHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSksXG4gICAgbWFwKCh2YWx1ZXMpID0+IGdldEtleXdvcmRUeXBlRnJvbUtleXdvcmRUeXBlQ29kZSh2YWx1ZXNbMF0pKVxuICApKHJvb3RFbClcbiAgY29uc3QgdGhlc2F1cnVzID0gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudCgnZ21kOnRoZXNhdXJ1c05hbWUnKSxcbiAgICByZWFkVGhlc2F1cnVzXG4gICkocm9vdEVsKVxuICByZXR1cm4gcGlwZShcbiAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6a2V5d29yZCcpLFxuICAgIG1hcEFycmF5KChlbCkgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCkoZWwpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi4odGhlc2F1cnVzID8geyB0aGVzYXVydXMgfSA6IHt9KSxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHR5cGUsXG4gICAgICB9IGFzIEtleXdvcmRcbiAgICB9KVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRLZXl3b3Jkcyhyb290RWw6IFhtbEVsZW1lbnQpOiBLZXl3b3JkW10ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkRWxlbWVudHMoJ2dtZDpkZXNjcmlwdGl2ZUtleXdvcmRzJywgJ2dtZDpNRF9LZXl3b3JkcycpLFxuICAgIG1hcEFycmF5KHJlYWRLZXl3b3JkR3JvdXApLFxuICAgIGZsYXR0ZW5BcnJheSgpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0YXR1cyhyb290RWw6IFhtbEVsZW1lbnQpOiBSZWNvcmRTdGF0dXMge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6c3RhdHVzJywgZmFsc2UpLFxuICAgIGV4dHJhY3RTdGF0dXMoKVxuICApKHJvb3RFbClcbn1cblxuY29uc3QgZ2V0Q29uc3RyYWludHMgPSBwaXBlKFxuICBmaW5kSWRlbnRpZmljYXRpb24oKSxcbiAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnLCBmYWxzZSlcbilcblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRMZWdhbENvbnN0cmFpbnRzKHJvb3RFbDogWG1sRWxlbWVudCk6IENvbnN0cmFpbnRbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGdldENvbnN0cmFpbnRzLFxuICAgIG1hcEFycmF5KGV4dHJhY3RMZWdhbENvbnN0cmFpbnRzKCkpLFxuICAgIGZsYXR0ZW5BcnJheSgpLFxuICAgIGZsYXR0ZW5BcnJheSgpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFNlY3VyaXR5Q29uc3RyYWludHMocm9vdEVsOiBYbWxFbGVtZW50KTogQ29uc3RyYWludFtdIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZ2V0Q29uc3RyYWludHMsXG4gICAgbWFwQXJyYXkoZXh0cmFjdFNlY3VyaXR5Q29uc3RyYWludHMoKSksXG4gICAgZmxhdHRlbkFycmF5KClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT3RoZXJDb25zdHJhaW50cyhyb290RWw6IFhtbEVsZW1lbnQpOiBDb25zdHJhaW50W10ge1xuICByZXR1cm4gcGlwZShcbiAgICBnZXRDb25zdHJhaW50cyxcbiAgICBtYXBBcnJheShleHRyYWN0T3RoZXJDb25zdHJhaW50cygpKSxcbiAgICBmbGF0dGVuQXJyYXkoKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRMaWNlbnNlcyhyb290RWw6IFhtbEVsZW1lbnQpOiBDb25zdHJhaW50W10ge1xuICByZXR1cm4gcGlwZShcbiAgICBnZXRDb25zdHJhaW50cyxcbiAgICBtYXBBcnJheShleHRyYWN0TGljZW5zZXMoKSksXG4gICAgZmxhdHRlbkFycmF5KClcbiAgKShyb290RWwpXG59XG5cbi8vIG5vdCB1c2VkIHlldFxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJc29Ub3BpY3Mocm9vdEVsOiBYbWxFbGVtZW50KTogc3RyaW5nW10ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6TURfVG9waWNDYXRlZ29yeUNvZGUnLCB0cnVlKSxcbiAgICBtYXBBcnJheShyZWFkVGV4dCgpKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTcGF0aWFsUmVwcmVzZW50YXRpb24oXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKTogU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZSB8IG51bGwge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkRWxlbWVudChcbiAgICAgICdnbWQ6c3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZScsXG4gICAgICAnZ21kOk1EX1NwYXRpYWxSZXByZXNlbnRhdGlvblR5cGVDb2RlJ1xuICAgICksXG4gICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpLFxuICAgIG1hcChnZXRTcGF0aWFsUmVwcmVzZW50YXRpb25Gcm9tQ29kZSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT3ZlcnZpZXdzKHJvb3RFbDogWG1sRWxlbWVudCk6IEdyYXBoaWNPdmVydmlld1tdIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZElkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOmdyYXBoaWNPdmVydmlldycsIGZhbHNlKSxcbiAgICBtYXBBcnJheShcbiAgICAgIGNvbWJpbmUoXG4gICAgICAgIHBpcGUoZmluZENoaWxkRWxlbWVudCgnZ21kOmZpbGVOYW1lJyksIGV4dHJhY3RNYW5kYXRvcnlVcmwoKSksXG4gICAgICAgIHBpcGUoZmluZENoaWxkRWxlbWVudCgnZ21kOmZpbGVEZXNjcmlwdGlvbicpLCBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCkpXG4gICAgICApXG4gICAgKSxcbiAgICBtYXBBcnJheSgoW3VybCwgZGVzY3JpcHRpb25dKSA9PiAoe1xuICAgICAgdXJsLFxuICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgfSkpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZExpbmVhZ2Uocm9vdEVsOiBYbWxFbGVtZW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgICAnZ21kOmRhdGFRdWFsaXR5SW5mbycsXG4gICAgICAnZ21kOkRRX0RhdGFRdWFsaXR5JyxcbiAgICAgICdnbWQ6bGluZWFnZScsXG4gICAgICAnZ21kOkxJX0xpbmVhZ2UnLFxuICAgICAgJ2dtZDpzdGF0ZW1lbnQnXG4gICAgKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRGlzdHJpYnV0aW9ucyhyb290RWw6IFhtbEVsZW1lbnQpOiBEYXRhc2V0RGlzdHJpYnV0aW9uW10ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudHMoJ2dtZDpkaXN0cmlidXRpb25JbmZvJywgJ2dtZDpNRF9EaXN0cmlidXRpb24nKSxcbiAgICBtYXBBcnJheShleHRyYWN0RGF0YXNldERpc3RyaWJ1dGlvbnMoZ2V0TWltZVR5cGUpKSxcbiAgICBmbGF0dGVuQXJyYXkoKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVcGRhdGVGcmVxdWVuY3kocm9vdEVsOiBYbWxFbGVtZW50KTogVXBkYXRlRnJlcXVlbmN5IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZElkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgICAnZ21kOnJlc291cmNlTWFpbnRlbmFuY2UnLFxuICAgICAgJ2dtZDpNRF9NYWludGVuYW5jZUluZm9ybWF0aW9uJ1xuICAgICksXG4gICAgZXh0cmFjdFVwZGF0ZUZyZXF1ZW5jeSgpLFxuICAgIG1hcCgodXBkYXRlRnJlcXVlbmN5KSA9PiB1cGRhdGVGcmVxdWVuY3kgfHwgJ3Vua25vd24nKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RTZXJ2aWNlT25saW5lUmVzb3VyY2VzKCk6IENoYWluYWJsZUZ1bmN0aW9uPFxuICBYbWxFbGVtZW50LFxuICBTZXJ2aWNlT25saW5lUmVzb3VyY2VbXVxuPiB7XG4gIGNvbnN0IGdldFVybCA9IHBpcGUoZmluZENoaWxkRWxlbWVudCgnZ21kOmxpbmthZ2UnKSwgZXh0cmFjdE1hbmRhdG9yeVVybCgpKVxuICBjb25zdCBnZXRQcm90b2NvbFN0ciA9IHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnZ21kOnByb3RvY29sJyksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gIClcbiAgY29uc3QgZ2V0UHJvdG9jb2wgPSBwaXBlKGdldFByb3RvY29sU3RyLCBtYXAobWF0Y2hQcm90b2NvbCkpXG4gIGNvbnN0IGdldE9ubGluZUZ1bmN0aW9uID0gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudCgnZ21kOmZ1bmN0aW9uJywgJ2dtZDpDSV9PbkxpbmVGdW5jdGlvbkNvZGUnKSxcbiAgICByZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJylcbiAgKVxuICBjb25zdCBnZXRJc0xpbmsgPSBwaXBlKFxuICAgIGdldE9ubGluZUZ1bmN0aW9uLFxuICAgIG1hcCgob25saW5lRnVuY3Rpb24pID0+IG9ubGluZUZ1bmN0aW9uID09PSAnaW5mb3JtYXRpb24nKVxuICApXG4gIGNvbnN0IGdldE5hbWUgPSBwaXBlKGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpuYW1lJyksIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSlcbiAgY29uc3QgZ2V0RGVzY3JpcHRpb24gPSBwaXBlKFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpkZXNjcmlwdGlvbicpLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKVxuICApXG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cyhcbiAgICAgICdnbWQ6dHJhbnNmZXJPcHRpb25zJyxcbiAgICAgICdnbWQ6TURfRGlnaXRhbFRyYW5zZmVyT3B0aW9ucycsXG4gICAgICAnZ21kOm9uTGluZScsXG4gICAgICAnZ21kOkNJX09ubGluZVJlc291cmNlJ1xuICAgICksXG4gICAgbWFwQXJyYXkoY29tYmluZShnZXRJc0xpbmssIGdldFByb3RvY29sLCBnZXRVcmwsIGdldE5hbWUsIGdldERlc2NyaXB0aW9uKSksXG4gICAgbWFwQXJyYXkoKFtpc0xpbmssIHByb3RvY29sLCB1cmwsIG5hbWUsIGRlc2NyaXB0aW9uXSkgPT4ge1xuICAgICAgaWYgKGlzTGluaykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICdsaW5rJyxcbiAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAuLi4obmFtZSAmJiB7IG5hbWUgfSksXG4gICAgICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ2VuZHBvaW50JyxcbiAgICAgICAgICBlbmRwb2ludFVybDogdXJsLFxuICAgICAgICAgIHByb3RvY29sLFxuICAgICAgICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uIH0pLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZE9ubGluZVJlc291cmNlcyhcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pOiBTZXJ2aWNlT25saW5lUmVzb3VyY2VbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cygnZ21kOmRpc3RyaWJ1dGlvbkluZm8nLCAnZ21kOk1EX0Rpc3RyaWJ1dGlvbicpLFxuICAgIG1hcEFycmF5KGV4dHJhY3RTZXJ2aWNlT25saW5lUmVzb3VyY2VzKCkpLFxuICAgIGZsYXR0ZW5BcnJheSgpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFRlbXBvcmFsRXh0ZW50cyhyb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZElkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6ZXh0ZW50JywgJ2dtZDpFWF9FeHRlbnQnLCAnZ21kOnRlbXBvcmFsRWxlbWVudCcpLFxuICAgIG1hcEFycmF5KFxuICAgICAgY29tYmluZShcbiAgICAgICAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgICAgICAgJ2dtZDpFWF9UZW1wb3JhbEV4dGVudCcsXG4gICAgICAgICAgJ2dtZDpleHRlbnQnLFxuICAgICAgICAgICdnbWw6VGltZVBlcmlvZCdcbiAgICAgICAgKSxcbiAgICAgICAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgICAgICAgJ2dtZDpFWF9UZW1wb3JhbEV4dGVudCcsXG4gICAgICAgICAgJ2dtZDpleHRlbnQnLFxuICAgICAgICAgICdnbWw6VGltZUluc3RhbnQnXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIG1hcEFycmF5KChbcGVyaW9kRWwsIGluc3RhbnRFbF0pID0+IHtcbiAgICAgIGlmIChwZXJpb2RFbCkge1xuICAgICAgICByZXR1cm4gcGlwZShcbiAgICAgICAgICBjb21iaW5lKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgZmluZENoaWxkRWxlbWVudCgnZ21sOmJlZ2luUG9zaXRpb24nLCBmYWxzZSksXG4gICAgICAgICAgICAgIHJlYWRUZXh0KCksXG4gICAgICAgICAgICAgIG1hcCgoZGF0ZVN0cikgPT4gKGRhdGVTdHIgPyBuZXcgRGF0ZShkYXRlU3RyKSA6IG51bGwpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtbDplbmRQb3NpdGlvbicsIGZhbHNlKSxcbiAgICAgICAgICAgICAgcmVhZFRleHQoKSxcbiAgICAgICAgICAgICAgbWFwKChkYXRlU3RyKSA9PiAoZGF0ZVN0ciA/IG5ldyBEYXRlKGRhdGVTdHIpIDogbnVsbCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtYXAoKFtzdGFydCwgZW5kXSkgPT4gKHtcbiAgICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgICAgZW5kLFxuICAgICAgICAgIH0pKVxuICAgICAgICApKHBlcmlvZEVsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBpcGUoXG4gICAgICAgICAgZmluZENoaWxkRWxlbWVudCgnZ21sOnRpbWVQb3NpdGlvbicsIGZhbHNlKSxcbiAgICAgICAgICByZWFkVGV4dCgpLFxuICAgICAgICAgIG1hcCgoZGF0ZVN0cikgPT4gKGRhdGVTdHIgPyBuZXcgRGF0ZShkYXRlU3RyKSA6IG51bGwpKSxcbiAgICAgICAgICBtYXAoKGRhdGUpID0+ICh7XG4gICAgICAgICAgICBzdGFydDogZGF0ZSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKShpbnN0YW50RWwpXG4gICAgICB9XG4gICAgfSlcbiAgKShyb290RWwpXG59XG4iXX0=