@po-ui/ng-components 6.6.0 → 6.7.0

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY2hhcnQtc2VyaWUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWNoYXJ0L2ludGVyZmFjZXMvcG8tY2hhcnQtc2VyaWUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb0NoYXJ0VHlwZSB9IGZyb20gJy4uL2VudW1zL3BvLWNoYXJ0LXR5cGUuZW51bSc7XG5cbi8qKlxuICogQHVzZWRCeSBQb0NoYXJ0Q29tcG9uZW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogSW50ZXJmYWNlIGRhcyBzZXJpZXMgZGluw6JtaWNhcyBkbyBgcG8tY2hhcnRgIHF1ZSBwb3NzaWJpbGl0YSBkZXNlbmhhciBncsOhZmljb3MgZG9zIHRpcG9zIGBhcmVhYCwgYGJhcmAsIGBjb2x1bW5gLCBgbGluZWAsIGBkb251dGAgZSBgcGllYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvQ2hhcnRTZXJpZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGV0ZXJtaW5hIGEgY29yIGRhIHPDqXJpZS4gQXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvICpwcmVzZXQqIHBhZHLDo28gZGUgY29yZXMgc8OjbzpcbiAgICogLSBIZXhhZGV4aW1hbCwgcG9yIGV4ZW1wbG8gYCNjNjQ4NDBgO1xuICAgKiAtIFJHQiwgY29tbyBgcmdiKDAsIDAsIDE2NSlgXG4gICAqIC0gTyBub21lIGRhIGNvciwgcG9yIGV4ZW1wbG8gYGJsdWVgO1xuICAgKiAtIFVzYW5kbyB1bWEgZGFzIGNvcmVzIGRvIHRlbWEgZG8gUE86XG4gICAqICAgIFZhbG9yZXMgdsOhbGlkb3M6XG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDFcIj48L3NwYW4+IGBjb2xvci0wMWBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wMlwiPjwvc3Bhbj4gYGNvbG9yLTAyYFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTAzXCI+PC9zcGFuPiBgY29sb3ItMDNgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDRcIj48L3NwYW4+IGBjb2xvci0wNGBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wNVwiPjwvc3Bhbj4gYGNvbG9yLTA1YFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA2XCI+PC9zcGFuPiBgY29sb3ItMDZgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDdcIj48L3NwYW4+IGBjb2xvci0wN2BcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wOFwiPjwvc3Bhbj4gYGNvbG9yLTA4YFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA5XCI+PC9zcGFuPiBgY29sb3ItMDlgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMTBcIj48L3NwYW4+IGBjb2xvci0xMGBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0xMVwiPjwvc3Bhbj4gYGNvbG9yLTExYFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTEyXCI+PC9zcGFuPiBgY29sb3ItMTJgXG4gICAqL1xuICBjb2xvcj86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBsaXN0YSBkZSB2YWxvcmVzIHBhcmEgYSBzw6lyaWUuIE9zIHRpcG9zIGVzcGVyYWRvcyBzw6NvIGRlIGFjb3JkbyBjb20gbyB0aXBvIGRlIGdyw6FmaWNvOlxuICAgKiAtIFBhcmEgZ3LDoWZpY29zIGRvcyB0aXBvcyBgZG9udXRgIGUgYHBpZWAsIGVzcGVyYS1zZSAqbnVtYmVyKjtcbiAgICogLSBQYXJhIGdyw6FmaWNvcyBkb3MgdGlwb3MgYGFyZWFgLCBgYmFyYCwgYGNvbHVtbmAgZSBgbGluZWAsIGVzcGVyYS1zZSB1bSAqYXJyYXkqIGRlIGBkYXRhYC5cbiAgICpcbiAgICogPiBTZSBwYXNzYWRvIHZhbG9yIGBudWxsYCBlbSBkZXRlcm1pbmFkbyBpdGVtIGRhIGxpc3RhLCBhIGl0ZXJhw6fDo28gaXLDoSBpZ25vcsOhLWxvLlxuICAgKi9cbiAgZGF0YT86IG51bWJlciB8IEFycmF5PG51bWJlcj47XG5cbiAgLyoqIFLDs3R1bG8gcmVmZXLDqm5jaWEgZGEgc8OpcmllOy4gKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gdGV4dG8gcXVlIHNlcsOhIGV4aWJpZG8gYW8gcGFzc2FyIG8gbW91c2UgcG9yIGNpbWEgZGFzIHPDqXJpZXMgZG8gKmNoYXJ0Ki5cbiAgICpcbiAgICogPiBDYXNvIG7Do28gc2VqYSBpbmZvcm1hZG8gdW0gdmFsb3IgcGFyYSBvICp0b29sdGlwKiwgc2Vyw6EgZXhpYmlkbyBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogLSBgZG9udXRgOiBgbGFiZWxgOiB2YWxvciBwcm9wb3JjaW9uYWwgYW8gdG90YWwgZW0gcG9yY2VudGFnZW0uXG4gICAqIC0gYGFyZWFgLCBgYmFyYCwgYGNvbHVtbmAsIGBsaW5lYCBlIGBwaWVgOiBgbGFiZWxgOiBgZGF0YWAuXG4gICAqL1xuICB0b29sdGlwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBlbSBxdWFsIHRpcG8gZGUgZ3LDoWZpY28gcXVlIHNlcsOhIGV4aWJpZGEgYSBzw6lyaWUuIMOJIHBvc3PDrXZlbCBjb21iaW5hciBzw6lyaWVzIGRvcyB0aXBvcyBgY29sdW1uYCBlIGBsaW5lYCBubyBtZXNtbyBncsOhZmljby4gUGFyYSBpc3NvLCBiYXN0YSBjcmlhciBhcyBzw6lyaWVzIGNvbSBhcyBjb25maWd1cmHDp8O1ZXM6XG4gICAqIC0gU2VyaWUgQTogYHsgdHlwZTogQ2hhcnRUeXBlLkNvbHVtbiwgZGF0YTogLi4uIH1gO1xuICAgKiAtIFPDqXJpZSBCOiBgeyB0eXBlOiBDaGFydFR5cGUuTGluZSwgZGF0YTogLi4uIH1gLlxuICAgKlxuICAgKiBTZSB0YW50byBgcC10eXBlYCBxdWFudG8gYHsgdHlwZSB9YCBmb3JlbSBpZ25vcmFkb3MsIG8gcGFkcsOjbyBnZXJhZG8gcGVsbyBjb21wb25lbnRlIHNlcsOhOlxuICAgKiAtIGBjb2x1bW5gOiBzZSBgZGF0YWAgcmVjZWJlciBgQXJyYXk8bnVtYmVyPmA7XG4gICAqIC0gYHBpZWA6IHNlIGBkYXRhYCBmb3IgKm51bWJlciouXG4gICAqXG4gICAqID4gU2UgdXRpbGl6YWRhIGEgcHJvcHJpZWRhZGUgYHAtdHlwZWAsIGRpc3BlbnNhLXNlIGEgZGVmaW5pw6fDo28gZGVzdGEgcHJvcHJpZWRhZGUuIFBvcsOpbSwgc2UgaG91dmVyIGRlY2xhcmHDp8OjbyBwYXJhIGFtYmFzLCBvIHZhbG9yIGB7dHlwZX1gIGRhIHByaW1laXJhIHPDqXJpZSBzb2JyZXNjcmV2ZXLDoSBvIHZhbG9yIGRlZmluaWRvIGVtIGBwLXR5cGVgLlxuICAgKlxuICAgKiA+IE8gY29tcG9uZW50ZSBzw7MgZXhpYmlyw6EgYXMgc8OpcmllcyBxdWUgdGl2ZXJlbSBvIG1lc21vIGB0eXBlYCBkZWZpbmlkbywgZXhjZXRvIHBhcmEgbWVzY2xhZ2VtIHBhcmEgdGlwb3MgYGNvbHVtbmAgZSBgbGluZWAuXG4gICAqL1xuICB0eXBlPzogUG9DaGFydFR5cGU7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY2hhcnQtc2VyaWUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWNoYXJ0L2ludGVyZmFjZXMvcG8tY2hhcnQtc2VyaWUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb0NoYXJ0VHlwZSB9IGZyb20gJy4uL2VudW1zL3BvLWNoYXJ0LXR5cGUuZW51bSc7XG5cbi8qKlxuICogQHVzZWRCeSBQb0NoYXJ0Q29tcG9uZW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogSW50ZXJmYWNlIGRhcyBzZXJpZXMgZGluw6JtaWNhcyBkbyBgcG8tY2hhcnRgIHF1ZSBwb3NzaWJpbGl0YSBkZXNlbmhhciBncsOhZmljb3MgZG9zIHRpcG9zIGBhcmVhYCwgYGJhcmAsIGBjb2x1bW5gLCBgbGluZWAsIGBkb251dGAgZSBgcGllYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvQ2hhcnRTZXJpZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGV0ZXJtaW5hIGEgY29yIGRhIHPDqXJpZS4gQXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvICpwcmVzZXQqIHBhZHLDo28gZGUgY29yZXMgc8OjbzpcbiAgICogLSBIZXhhZGV4aW1hbCwgcG9yIGV4ZW1wbG8gYCNjNjQ4NDBgO1xuICAgKiAtIFJHQiwgY29tbyBgcmdiKDAsIDAsIDE2NSlgXG4gICAqIC0gTyBub21lIGRhIGNvciwgcG9yIGV4ZW1wbG8gYGJsdWVgO1xuICAgKiAtIFVzYW5kbyB1bWEgZGFzIGNvcmVzIGRvIHRlbWEgZG8gUE86XG4gICAqICAgIFZhbG9yZXMgdsOhbGlkb3M6XG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDFcIj48L3NwYW4+IGBjb2xvci0wMWBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wMlwiPjwvc3Bhbj4gYGNvbG9yLTAyYFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTAzXCI+PC9zcGFuPiBgY29sb3ItMDNgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDRcIj48L3NwYW4+IGBjb2xvci0wNGBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wNVwiPjwvc3Bhbj4gYGNvbG9yLTA1YFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA2XCI+PC9zcGFuPiBgY29sb3ItMDZgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDdcIj48L3NwYW4+IGBjb2xvci0wN2BcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wOFwiPjwvc3Bhbj4gYGNvbG9yLTA4YFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA5XCI+PC9zcGFuPiBgY29sb3ItMDlgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMTBcIj48L3NwYW4+IGBjb2xvci0xMGBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0xMVwiPjwvc3Bhbj4gYGNvbG9yLTExYFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTEyXCI+PC9zcGFuPiBgY29sb3ItMTJgXG4gICAqXG4gICAqXG4gICAqIC0gQSBwYXJ0aXIgZGEgMTPCsCBzw6lyaWUgbyB2YWxvciBkYSBjb3Igc2Vyw6EgcHJldGEgY2FzbyBuw6NvIHNlamEgZW52aWFkYSB1bWEgY29yIGN1c3RvbWl6YWRhLlxuICAgKi9cbiAgY29sb3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgbGlzdGEgZGUgdmFsb3JlcyBwYXJhIGEgc8OpcmllLiBPcyB0aXBvcyBlc3BlcmFkb3Mgc8OjbyBkZSBhY29yZG8gY29tIG8gdGlwbyBkZSBncsOhZmljbzpcbiAgICogLSBQYXJhIGdyw6FmaWNvcyBkb3MgdGlwb3MgYGRvbnV0YCBlIGBwaWVgLCBlc3BlcmEtc2UgKm51bWJlcio7XG4gICAqIC0gUGFyYSBncsOhZmljb3MgZG9zIHRpcG9zIGBhcmVhYCwgYGJhcmAsIGBjb2x1bW5gIGUgYGxpbmVgLCBlc3BlcmEtc2UgdW0gKmFycmF5KiBkZSBgZGF0YWAuXG4gICAqXG4gICAqID4gU2UgcGFzc2FkbyB2YWxvciBgbnVsbGAgZW0gZGV0ZXJtaW5hZG8gaXRlbSBkYSBsaXN0YSwgYSBpdGVyYcOnw6NvIGlyw6EgaWdub3LDoS1sby5cbiAgICovXG4gIGRhdGE/OiBudW1iZXIgfCBBcnJheTxudW1iZXI+O1xuXG4gIC8qKiBSw7N0dWxvIHJlZmVyw6puY2lhIGRhIHPDqXJpZTsuICovXG4gIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIHRleHRvIHF1ZSBzZXLDoSBleGliaWRvIGFvIHBhc3NhciBvIG1vdXNlIHBvciBjaW1hIGRhcyBzw6lyaWVzIGRvICpjaGFydCouXG4gICAqXG4gICAqID4gQ2FzbyBuw6NvIHNlamEgaW5mb3JtYWRvIHVtIHZhbG9yIHBhcmEgbyAqdG9vbHRpcCosIHNlcsOhIGV4aWJpZG8gZGEgc2VndWludGUgZm9ybWE6XG4gICAqIC0gYGRvbnV0YDogYGxhYmVsYDogdmFsb3IgcHJvcG9yY2lvbmFsIGFvIHRvdGFsIGVtIHBvcmNlbnRhZ2VtLlxuICAgKiAtIGBhcmVhYCwgYGJhcmAsIGBjb2x1bW5gLCBgbGluZWAgZSBgcGllYDogYGxhYmVsYDogYGRhdGFgLlxuICAgKi9cbiAgdG9vbHRpcD86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgZW0gcXVhbCB0aXBvIGRlIGdyw6FmaWNvIHF1ZSBzZXLDoSBleGliaWRhIGEgc8OpcmllLiDDiSBwb3Nzw612ZWwgY29tYmluYXIgc8OpcmllcyBkb3MgdGlwb3MgYGNvbHVtbmAgZSBgbGluZWAgbm8gbWVzbW8gZ3LDoWZpY28uIFBhcmEgaXNzbywgYmFzdGEgY3JpYXIgYXMgc8OpcmllcyBjb20gYXMgY29uZmlndXJhw6fDtWVzOlxuICAgKiAtIFNlcmllIEE6IGB7IHR5cGU6IENoYXJ0VHlwZS5Db2x1bW4sIGRhdGE6IC4uLiB9YDtcbiAgICogLSBTw6lyaWUgQjogYHsgdHlwZTogQ2hhcnRUeXBlLkxpbmUsIGRhdGE6IC4uLiB9YC5cbiAgICpcbiAgICogU2UgdGFudG8gYHAtdHlwZWAgcXVhbnRvIGB7IHR5cGUgfWAgZm9yZW0gaWdub3JhZG9zLCBvIHBhZHLDo28gZ2VyYWRvIHBlbG8gY29tcG9uZW50ZSBzZXLDoTpcbiAgICogLSBgY29sdW1uYDogc2UgYGRhdGFgIHJlY2ViZXIgYEFycmF5PG51bWJlcj5gO1xuICAgKiAtIGBwaWVgOiBzZSBgZGF0YWAgZm9yICpudW1iZXIqLlxuICAgKlxuICAgKiA+IFNlIHV0aWxpemFkYSBhIHByb3ByaWVkYWRlIGBwLXR5cGVgLCBkaXNwZW5zYS1zZSBhIGRlZmluacOnw6NvIGRlc3RhIHByb3ByaWVkYWRlLiBQb3LDqW0sIHNlIGhvdXZlciBkZWNsYXJhw6fDo28gcGFyYSBhbWJhcywgbyB2YWxvciBge3R5cGV9YCBkYSBwcmltZWlyYSBzw6lyaWUgc29icmVzY3JldmVyw6EgbyB2YWxvciBkZWZpbmlkbyBlbSBgcC10eXBlYC5cbiAgICpcbiAgICogPiBPIGNvbXBvbmVudGUgc8OzIGV4aWJpcsOhIGFzIHPDqXJpZXMgcXVlIHRpdmVyZW0gbyBtZXNtbyBgdHlwZWAgZGVmaW5pZG8sIGV4Y2V0byBwYXJhIG1lc2NsYWdlbSBwYXJhIHRpcG9zIGBjb2x1bW5gIGUgYGxpbmVgLlxuICAgKi9cbiAgdHlwZT86IFBvQ2hhcnRUeXBlO1xufVxuIl19
@@ -663,7 +663,7 @@ PoComboComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoComboCom
663
663
  useExisting: forwardRef(() => PoComboComponent),
664
664
  multi: true
665
665
  }
666
- ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 21, vars: 23, consts: [[3, "p-label", "p-help", "p-optional"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], ["autocomplete", "off", "type", "text", 1, "po-input", "po-combo-input", 3, "ngClass", "disabled", "placeholder", "required", "click", "keyup", "blur", "keyup.enter", "keydown"], ["inp", ""], [1, "po-field-icon-container-right"], [3, "p-element-ref", "p-change-event", 4, "ngIf"], [3, "click"], ["iconArrow", ""], [1, "po-combo-container", 3, "hidden"], ["containerElement", ""], [4, "ngIf", "ngIfThen", "ngIfElse"], ["loadingTemplate", ""], ["optionsTemplate", ""], ["visibleOptionsTemplate", ""], ["noDataTemplate", ""], [1, "po-field-icon-container-left"], [1, "po-field-icon", 3, "p-icon"], [3, "p-element-ref", "p-change-event"], [1, "po-combo-container-loading"], [1, "po-combo-container-content"], ["contentElement", ""], [3, "po-combo-item-selected", "click", 4, "ngFor", "ngForOf"], ["defaultOptionTemplate", ""], ["optionTemplate", ""], ["class", "po-combo-item-title", 4, "ngIf", "ngIfElse"], ["optionLink", ""], [1, "po-combo-item-title"], [1, "po-combo-item"], [3, "innerHTML"], ["optionsGroupTemplate", ""], ["defaultOptionsTemplate", ""], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "po-combo-container-no-data"], [1, "po-combo-no-data", "po-text-center"]], template: function PoComboComponent_Template(rf, ctx) { if (rf & 1) {
666
+ ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 21, vars: 23, consts: [[3, "p-label", "p-help", "p-optional"], [1, "po-field-container-content"], ["class", "po-field-icon-container-left", 4, "ngIf"], ["autocomplete", "off", "type", "text", 1, "po-input", "po-combo-input", 3, "ngClass", "disabled", "placeholder", "required", "click", "keyup", "blur", "keyup.enter", "keydown"], ["inp", ""], [1, "po-field-icon-container-right"], [3, "p-element-ref", "p-change-event", 4, "ngIf"], [3, "click"], ["iconArrow", ""], [1, "po-combo-container", 3, "hidden"], ["containerElement", ""], [4, "ngIf", "ngIfThen", "ngIfElse"], ["loadingTemplate", ""], ["optionsTemplate", ""], ["visibleOptionsTemplate", ""], ["noDataTemplate", ""], [1, "po-field-icon-container-left"], [1, "po-field-icon", 3, "p-icon"], [3, "p-element-ref", "p-change-event"], [1, "po-combo-container-loading"], [1, "po-combo-container-content"], ["contentElement", ""], [3, "po-combo-item-selected", "click", 4, "ngFor", "ngForOf"], ["defaultOptionTemplate", ""], ["optionTemplate", ""], ["class", "po-combo-item-title", 4, "ngIf", "ngIfElse"], ["optionLink", ""], [1, "po-combo-item-title"], [1, "po-combo-item"], [2, "pointer-events", "none", 3, "innerHTML"], ["optionsGroupTemplate", ""], ["defaultOptionsTemplate", ""], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "po-combo-container-no-data"], [1, "po-combo-no-data", "po-text-center"]], template: function PoComboComponent_Template(rf, ctx) { if (rf & 1) {
667
667
  i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1);
668
668
  i0.ɵɵtemplate(2, PoComboComponent_div_2_Template, 2, 3, "div", 2);
669
669
  i0.ɵɵelementStart(3, "input", 3, 4);
@@ -719,7 +719,7 @@ PoComboComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoComboCom
719
719
  useExisting: forwardRef(() => PoComboComponent),
720
720
  multi: true
721
721
  }
722
- ], template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon class=\"po-field-icon\" [class.po-field-icon-disabled]=\"disabled\" [p-icon]=\"icon\"></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input po-combo-input\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [class.po-input-icon-left]=\"icon\"\n autocomplete=\"off\"\n type=\"text\"\n [attr.name]=\"name\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n (click)=\"toggleComboVisibility()\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onBlur()\"\n (keyup.enter)=\"searchOnEnter($event.target.value)\"\n (keydown)=\"onKeyDown($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean *ngIf=\"clean && !disabled\" (p-change-event)=\"clear($event)\" [p-element-ref]=\"inputEl\"> </po-clean>\n <span\n #iconArrow\n class=\"po-icon po-field-icon {{ comboIcon }}\"\n [class.po-field-icon-disabled]=\"disabled\"\n [class.po-field-icon]=\"!disabled\"\n (click)=\"toggleComboVisibility()\"\n >\n </span>\n </div>\n </div>\n\n <div #containerElement class=\"po-combo-container\" [hidden]=\"!comboOpen && !isServerSearching\">\n <ng-container *ngIf=\"isServerSearching; then loadingTemplate; else optionsTemplate\"> </ng-container>\n </div>\n\n <po-field-container-bottom></po-field-container-bottom>\n</po-field-container>\n\n<ng-template #loadingTemplate>\n <div class=\"po-combo-container-loading\">\n <po-loading></po-loading>\n </div>\n</ng-template>\n\n<ng-template #optionsTemplate>\n <ng-container *ngIf=\"visibleOptions.length; then visibleOptionsTemplate; else noDataTemplate\"> </ng-container>\n</ng-template>\n\n<ng-template #visibleOptionsTemplate>\n <ul #contentElement class=\"po-combo-container-content\">\n <li\n *ngFor=\"let option of visibleOptions\"\n [class.po-combo-item-selected]=\"compareObjects(selectedView, option)\"\n (click)=\"option?.options ? undefined : onOptionClick(option, $event)\"\n >\n <ng-container *ngIf=\"comboOptionTemplate; then optionTemplate; else defaultOptionTemplate\"></ng-container>\n\n <ng-template #defaultOptionTemplate>\n <label *ngIf=\"option?.options; else optionLink\" class=\"po-combo-item-title\">{{ option.label }}</label>\n <ng-template #optionLink>\n <a class=\"po-combo-item\">\n <span [innerHTML]=\"getLabelFormatted(option?.label)\"></span>\n </a>\n </ng-template>\n </ng-template>\n\n <ng-template #optionTemplate>\n <ng-container *ngIf=\"isOptionGroupList; then optionsGroupTemplate; else defaultOptionsTemplate\"></ng-container>\n\n <ng-template #optionsGroupTemplate>\n <ng-template\n [ngTemplateOutlet]=\"comboOptionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, selected: compareObjects(selectedView, option) }\"\n >\n </ng-template>\n </ng-template>\n\n <ng-template #defaultOptionsTemplate>\n <a class=\"po-combo-item\">\n <ng-template\n [ngTemplateOutlet]=\"comboOptionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n >\n </ng-template>\n </a>\n </ng-template>\n </ng-template>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #noDataTemplate>\n <div class=\"po-combo-container-no-data\">\n <div class=\"po-combo-no-data po-text-center\">\n <span>\n {{ literals.noData }}\n </span>\n </div>\n </div>\n</ng-template>\n" }]
722
+ ], template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\">\n <div *ngIf=\"icon\" class=\"po-field-icon-container-left\">\n <po-icon class=\"po-field-icon\" [class.po-field-icon-disabled]=\"disabled\" [p-icon]=\"icon\"></po-icon>\n </div>\n\n <input\n #inp\n class=\"po-input po-combo-input\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [class.po-input-icon-left]=\"icon\"\n autocomplete=\"off\"\n type=\"text\"\n [attr.name]=\"name\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n (click)=\"toggleComboVisibility()\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onBlur()\"\n (keyup.enter)=\"searchOnEnter($event.target.value)\"\n (keydown)=\"onKeyDown($event)\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean *ngIf=\"clean && !disabled\" (p-change-event)=\"clear($event)\" [p-element-ref]=\"inputEl\"> </po-clean>\n <span\n #iconArrow\n class=\"po-icon po-field-icon {{ comboIcon }}\"\n [class.po-field-icon-disabled]=\"disabled\"\n [class.po-field-icon]=\"!disabled\"\n (click)=\"toggleComboVisibility()\"\n >\n </span>\n </div>\n </div>\n\n <div #containerElement class=\"po-combo-container\" [hidden]=\"!comboOpen && !isServerSearching\">\n <ng-container *ngIf=\"isServerSearching; then loadingTemplate; else optionsTemplate\"> </ng-container>\n </div>\n\n <po-field-container-bottom></po-field-container-bottom>\n</po-field-container>\n\n<ng-template #loadingTemplate>\n <div class=\"po-combo-container-loading\">\n <po-loading></po-loading>\n </div>\n</ng-template>\n\n<ng-template #optionsTemplate>\n <ng-container *ngIf=\"visibleOptions.length; then visibleOptionsTemplate; else noDataTemplate\"> </ng-container>\n</ng-template>\n\n<ng-template #visibleOptionsTemplate>\n <ul #contentElement class=\"po-combo-container-content\">\n <li\n *ngFor=\"let option of visibleOptions\"\n [class.po-combo-item-selected]=\"compareObjects(selectedView, option)\"\n (click)=\"option?.options ? undefined : onOptionClick(option, $event)\"\n >\n <ng-container *ngIf=\"comboOptionTemplate; then optionTemplate; else defaultOptionTemplate\"></ng-container>\n\n <ng-template #defaultOptionTemplate>\n <label *ngIf=\"option?.options; else optionLink\" class=\"po-combo-item-title\">{{ option.label }}</label>\n <ng-template #optionLink>\n <a class=\"po-combo-item\">\n <span style=\"pointer-events: none\" [innerHTML]=\"getLabelFormatted(option?.label)\"></span>\n </a>\n </ng-template>\n </ng-template>\n\n <ng-template #optionTemplate>\n <ng-container *ngIf=\"isOptionGroupList; then optionsGroupTemplate; else defaultOptionsTemplate\"></ng-container>\n\n <ng-template #optionsGroupTemplate>\n <ng-template\n [ngTemplateOutlet]=\"comboOptionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option, selected: compareObjects(selectedView, option) }\"\n >\n </ng-template>\n </ng-template>\n\n <ng-template #defaultOptionsTemplate>\n <a class=\"po-combo-item\">\n <ng-template\n [ngTemplateOutlet]=\"comboOptionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n >\n </ng-template>\n </a>\n </ng-template>\n </ng-template>\n </li>\n </ul>\n</ng-template>\n\n<ng-template #noDataTemplate>\n <div class=\"po-combo-container-no-data\">\n <div class=\"po-combo-no-data po-text-center\">\n <span>\n {{ literals.noData }}\n </span>\n </div>\n </div>\n</ng-template>\n" }]
723
723
  }], function () { return [{ type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: i1.PoComboFilterService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i2.PoControlPositionService }, { type: i3.DomSanitizer }, { type: i4.PoLanguageService }]; }, { comboOptionTemplate: [{
724
724
  type: ContentChild,
725
725
  args: [PoComboOptionTemplateDirective, { static: true }]
@@ -736,4 +736,4 @@ PoComboComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoComboCom
736
736
  type: ViewChild,
737
737
  args: ['inp', { read: ElementRef, static: true }]
738
738
  }] }); })();
739
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWNvbWJvL3BvLWNvbWJvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1jb21iby9wby1jb21iby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFNVixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHakUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDNUIzRywrQkFBdUQ7SUFDckQsOEJBQW1HO0lBQ3JHLGlCQUFNOzs7SUFEMkIsZUFBeUM7SUFBekMseURBQXlDO0lBQUMsb0NBQWU7Ozs7SUFzQnhGLG9DQUFnRztJQUEzRCw4TEFBa0IscUJBQWEsSUFBQztJQUE0QixpQkFBVzs7O0lBQXRDLDhDQUF5Qjs7O0lBYWpHLHdCQUFvRzs7O0lBT3RHLCtCQUF3QztJQUN0Qyw2QkFBeUI7SUFDM0IsaUJBQU07OztJQUlOLHdCQUE4Rzs7O0lBQTlHLG1HQUE4Rzs7Ozs7SUFBL0YsbURBQTZCLGtCQUFBLGtCQUFBOzs7SUFVeEMsd0JBQTBHOzs7SUFHeEcsaUNBQTRFO0lBQUEsWUFBa0I7SUFBQSxpQkFBUTs7O0lBQTFCLGVBQWtCO0lBQWxCLHNDQUFrQjs7O0lBRTVGLDZCQUF5QjtJQUN2QiwyQkFBNEQ7SUFDOUQsaUJBQUk7Ozs7SUFESSxlQUE4QztJQUE5QyxzSEFBOEM7OztJQUh4RCx3R0FBc0c7SUFDdEcscUpBSWM7Ozs7SUFMTixxRUFBdUIsa0JBQUE7OztJQVMvQix3QkFBK0c7Ozs7O0lBRzdHLGtJQUljOzs7O0lBSFosdUhBQXFELDZIQUFBOzs7OztJQU92RCw2QkFBeUI7SUFDdkIsa0lBSWM7SUFDaEIsaUJBQUk7Ozs7SUFKQSxlQUFxRDtJQUFyRCx1SEFBcUQsbUVBQUE7OztJQWIzRCxzSEFBK0c7SUFFL0cscUpBTWM7SUFFZCxxSkFRYzs7Ozs7SUFsQkMsZ0RBQXlCLGtCQUFBLGtCQUFBOzs7O0lBakI1Qyw2QkFJQztJQURDLGlTQUEyQixTQUFTLEdBQUcseUNBQTZCLElBQUM7SUFFckUsd0dBQTBHO0lBRTFHLHVJQU9jO0lBRWQsdUlBb0JjO0lBQ2hCLGlCQUFLOzs7Ozs7SUFuQ0gsa0dBQXFFO0lBR3RELGVBQTJCO0lBQTNCLGtEQUEyQixrQkFBQSxrQkFBQTs7O0lBTjlDLGtDQUF1RDtJQUNyRCwrRUFxQ0s7SUFDUCxpQkFBSzs7O0lBckNrQixlQUFpQjtJQUFqQixnREFBaUI7OztJQXlDeEMsK0JBQXdDLGNBQUEsV0FBQTtJQUdsQyxZQUNGO0lBQUEsaUJBQU8sRUFBQSxFQUFBOzs7SUFETCxlQUNGO0lBREUsd0RBQ0Y7O0FEdEVOLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLE1BQU0sK0JBQStCLEdBQUcsUUFBUSxDQUFDO0FBRWpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Q0c7QUFvQkgsTUFBTSxPQUFPLGdCQUFpQixTQUFRLG9CQUFvQjtJQXdCeEQsWUFDUyxPQUFtQixFQUNuQixPQUF3QixFQUN4QixjQUFvQyxFQUNwQyxRQUFtQixFQUNsQixjQUFpQyxFQUNqQyxlQUF5QyxFQUN6QyxTQUF1QixFQUMvQixlQUFrQztRQUVsQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFUaEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBQ3pDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUF2QmpDLGNBQVMsR0FBVyxvQkFBb0IsQ0FBQztRQUN6QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4QyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWQsc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBRTFCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQStmcEMsYUFBUSxHQUFHLEdBQVMsRUFBRTtZQUM1QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUM7UUE3ZUEsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxpQkFBaUIsQ0FBQyxLQUFjO1FBQ2xDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztZQUVoQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRXBDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO2FBQU07WUFDTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDeEIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7UUFFRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDekIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVc7UUFDbkIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUMxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUV0Qyx5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEdBQUcsS0FBSyxhQUFhLENBQUMsR0FBRyxJQUFJLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0RixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDMUM7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxHQUFHLEtBQUssYUFBYSxDQUFDLE9BQU8sSUFBSSxHQUFHLEtBQUssYUFBYSxDQUFDLFNBQVMsRUFBRTtZQUNwRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixJQUFJLEdBQUcsS0FBSyxhQUFhLENBQUMsT0FBTyxFQUFFO29CQUNqQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztpQkFDN0I7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7aUJBQ3pCO2FBQ0Y7WUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDakUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzdFLE9BQU87U0FDUjtRQUVELHdCQUF3QjtRQUN4QixJQUFJLEdBQUcsS0FBSyxhQUFhLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxhQUFhLENBQUMsR0FBRyxFQUFFO1lBQzFELElBQUksR0FBRyxLQUFLLGFBQWEsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDL0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDekI7WUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDakIsOEZBQThGO2dCQUM5RixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDL0Y7WUFDRCxPQUFPO1NBQ1I7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxHQUFHLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFFL0csSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRW5DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBRXpCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsT0FBTztTQUNSO1FBRUQsSUFBSSxHQUFHLEtBQUssYUFBYSxDQUFDLEtBQUssRUFBRTtZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVc7UUFDakIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRXRDLE1BQU0sVUFBVSxHQUFHLEdBQUcsS0FBSyxhQUFhLENBQUMsT0FBTyxJQUFJLEdBQUcsS0FBSyxhQUFhLENBQUMsU0FBUyxJQUFJLEdBQUcsS0FBSyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBRW5ILElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLFVBQVUsRUFBRTtvQkFDNUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztvQkFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3pFO2FBQ0Y7aUJBQU07Z0JBQ0wseUZBQXlGO2dCQUN6Riw4REFBOEQ7Z0JBQzlELE1BQU0sd0JBQXdCLEdBQzVCLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUM7Z0JBRS9GLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztpQkFDeEI7cUJBQU0sSUFBSSx3QkFBd0IsRUFBRTtvQkFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7aUJBQzlDO2dCQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2FBQzFCO1lBRUQsdUVBQXVFO1lBQ3ZFLElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLFVBQVUsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFFcEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1NBQ0Y7UUFFRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3pFLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUM1RCxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQ3RDLG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUNqQyxDQUFDLENBQUMsRUFDRixZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUNoQyxDQUFDO1lBRUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0RCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDbEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoQztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUU5QixNQUFNLEtBQUssR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBRW5ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FDeEYsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUNuRCxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQUssRUFBRSxLQUFLO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUVyQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFcEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUV6QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ3BCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7WUFFbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUN0RixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsRUFDOUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FDeEMsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELDJCQUEyQixDQUFDLElBQUk7UUFDOUIsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjthQUFNO1lBQ0wsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDdEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUV0RSxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVuRixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLFVBQVUsSUFBSSxVQUFVLENBQUMsS0FBSyxLQUFLLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2xIO2FBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRTtZQUNyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRTFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMxRztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFFdEUsSUFBSSxnQkFBZ0IsRUFBRTtZQUNwQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUU3RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLFVBQVUsSUFBSSxVQUFVLENBQUMsS0FBSyxLQUFLLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2xIO2FBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRTtZQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWpELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMxRztJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxNQUFlO1FBQ3BDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFvQyxFQUFFLEtBQVc7UUFDN0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sYUFBYSxHQUNqQixNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6RyxJQUFJLEtBQUssRUFBRTtZQUNULEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7U0FDcEQ7UUFFRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDckQsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLO1FBQ1osTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1RixNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUUxRixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDMUMsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDM0MsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWlCO1FBQ2xDLElBQ0UsSUFBSSxDQUFDLFNBQVM7WUFDZCxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2xELENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDdEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ25GO1lBQ0EsbURBQW1EO1lBQ25ELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVuQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUV6QixxRUFBcUU7WUFDckUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQy9GO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNoRSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3RCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBYTtRQUM3QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksTUFBTSxHQUFXLGNBQWMsQ0FBQztRQUVwQyxJQUNFLElBQUksQ0FBQyxXQUFXO1lBQ2hCLENBQUMsSUFBSSxDQUFDLE9BQU87Z0JBQ1gsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDcEIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQ3pCO1lBQ0EsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN2RixNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFcEQsTUFBTSxXQUFXLEdBQUcsd0NBQXdDLENBQUM7WUFDN0QsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO1lBRS9CLElBQUksV0FBVyxDQUFDO1lBQ2hCLElBQUksWUFBWSxDQUFDO1lBQ2pCLElBQUksU0FBUyxDQUFDO1lBRWQsUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUN2QixLQUFLLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztnQkFDbEMsS0FBSyxpQkFBaUIsQ0FBQyxRQUFRO29CQUM3QixNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBRTdELElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQzFCLFdBQVcsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO3dCQUU3RCxZQUFZLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2xHLFNBQVMsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFFNUUsTUFBTSxHQUFHLFdBQVcsR0FBRyxXQUFXLEdBQUcsWUFBWSxHQUFHLFlBQVksR0FBRyxTQUFTLENBQUM7cUJBQzlFO29CQUVELE1BQU07Z0JBQ1IsS0FBSyxpQkFBaUIsQ0FBQyxRQUFRO29CQUM3QixNQUFNLHFCQUFxQixHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBRXJFLElBQUkscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQzlCLFdBQVcsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO3dCQUNqRSxZQUFZLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO3dCQUUvRCxNQUFNLEdBQUcsV0FBVyxHQUFHLFdBQVcsR0FBRyxZQUFZLEdBQUcsWUFBWSxDQUFDO3FCQUNsRTtvQkFDRCxNQUFNO2FBQ1Q7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELHdCQUF3QixDQUFDLE9BQU87UUFDOUIsT0FBTyxDQUNMLE9BQU8sS0FBSyxDQUFDLElBQUksTUFBTTtZQUN2QixPQUFPLEtBQUssRUFBRSxJQUFJLFFBQVE7WUFDMUIsT0FBTyxLQUFLLEVBQUUsSUFBSSxRQUFRO1lBQzFCLE9BQU8sS0FBSyxFQUFFLElBQUksT0FBTztZQUN6QixPQUFPLEtBQUssRUFBRSxJQUFJLE1BQU07WUFDeEIsT0FBTyxLQUFLLEVBQUUsSUFBSSxXQUFXO1lBQzdCLE9BQU8sS0FBSyxFQUFFLElBQUksTUFBTTtZQUN4QixPQUFPLEtBQUssRUFBRSxJQUFJLE9BQU87WUFDekIsT0FBTyxLQUFLLEVBQUUsSUFBSSxPQUFPO1lBQ3pCLE9BQU8sS0FBSyxFQUFFLElBQUksT0FBTztZQUN6QixPQUFPLEtBQUssRUFBRSxJQUFJLE9BQU87WUFDekIsT0FBTyxLQUFLLEVBQUUsQ0FDZixDQUFDLENBQUMsZUFBZTtJQUNwQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDOUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxLQUFLO1FBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVwQyxJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDO1FBRXRDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUN0RixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDdkUsMkZBQTJGO1lBQzNGLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQU1PLElBQUk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXBDLElBQUksQ0FBQyxTQUFTLEdBQUcsa0JBQWtCLENBQUM7UUFFcEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7UUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxRQUFnQixFQUFFO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUM5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUNuQyxzQkFBc0IsRUFDdEIsSUFBSSxDQUFDLE9BQU8sRUFDWixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFDakIsSUFBSSxDQUNMLENBQUM7UUFFRixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQWlCO1FBQ3BDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQzs7Z0ZBbGtCVSxnQkFBZ0I7bUVBQWhCLGdCQUFnQjtvQ0FDYiw4QkFBOEI7Ozs7OytCQUVMLFVBQVU7K0JBQ1osVUFBVTsrQkFDZixVQUFVOytCQUNoQixVQUFVOzs7Ozs7OzBDQXJCekI7WUFDVCxvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQy9DLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDL0MsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGO1FDbEdILDZDQUEyRixhQUFBO1FBRXZGLGlFQUVNO1FBRU4sbUNBZ0JFO1FBTEEsNEZBQVMsMkJBQXVCLElBQUMscUZBQ3hCLG1CQUFlLElBRFMsNkVBRXpCLFlBQVEsSUFGaUIsaUdBR2xCLHNDQUFrQyxJQUhoQix5RkFJdEIscUJBQWlCLElBSks7UUFYbkMsaUJBZ0JFO1FBRUYsOEJBQTJDO1FBQ3pDLDJFQUE0RztRQUM1RyxrQ0FNQztRQURDLDJGQUFTLDJCQUF1QixJQUFDO1FBRW5DLGlCQUFPLEVBQUEsRUFBQTtRQUlYLGtDQUE4RjtRQUM1RixzRkFBb0c7UUFDdEcsaUJBQU07UUFFTiw2Q0FBdUQ7UUFDekQsaUJBQXFCO1FBRXJCLHFIQUljO1FBRWQscUhBRWM7UUFFZCxxSEF5Q2M7UUFFZCxxSEFRYzs7Ozs7UUF6R00sbUNBQWlCLG9CQUFBLDZDQUFBO1FBRTNCLGVBQVU7UUFBViwrQkFBVTtRQVFkLGVBQWlDO1FBQWpDLDhDQUFpQztRQURqQyx1R0FBcUYsMEJBQUEsZ0NBQUEsMEJBQUE7UUFJckYsZ0NBQWtCO1FBWVAsZUFBd0I7UUFBeEIsaURBQXdCO1FBR2pDLGVBQTZDO1FBQTdDLHNFQUE2QztRQUM3QyxzREFBeUMsZ0NBQUE7UUFRRyxlQUEyQztRQUEzQyxpRUFBMkM7UUFDNUUsZUFBeUI7UUFBekIsNENBQXlCLGlCQUFBLGlCQUFBOzt1RkQ4RC9CLGdCQUFnQjtjQW5CNUIsU0FBUzsyQkFDRSxVQUFVLG1CQUVILHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7b0JBQ1Qsb0JBQW9CO29CQUNwQix3QkFBd0I7b0JBQ3hCO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDO3dCQUMvQyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUM7d0JBQy9DLEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO3dSQUcrRCxtQkFBbUI7a0JBQWxGLFlBQVk7bUJBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBRVQsZ0JBQWdCO2tCQUFwRSxTQUFTO21CQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNBLGNBQWM7a0JBQWhFLFNBQVM7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ1csV0FBVztrQkFBdEUsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDSixPQUFPO2tCQUE1RCxTQUFTO21CQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1jb250cm9sLXBvc2l0aW9uL3BvLWNvbnRyb2wtcG9zaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb0tleUNvZGVFbnVtIH0gZnJvbSAnLi8uLi8uLi8uLi9lbnVtcy9wby1rZXktY29kZS5lbnVtJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7IFBvQ29tYm9CYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1jb21iby1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb0NvbWJvRmlsdGVyTW9kZSB9IGZyb20gJy4vcG8tY29tYm8tZmlsdGVyLW1vZGUuZW51bSc7XG5pbXBvcnQgeyBQb0NvbWJvRmlsdGVyU2VydmljZSB9IGZyb20gJy4vcG8tY29tYm8tZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Db21ib0dyb3VwIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWNvbWJvLWdyb3VwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0NvbWJvT3B0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWNvbWJvLW9wdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Db21ib09wdGlvblRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby1jb21iby1vcHRpb24tdGVtcGxhdGUvcG8tY29tYm8tb3B0aW9uLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IHBvQ29tYm9Db250YWluZXJPZmZzZXQgPSA4O1xuY29uc3QgcG9Db21ib0NvbnRhaW5lclBvc2l0aW9uRGVmYXVsdCA9ICdib3R0b20nO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0NvbWJvQmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVXRpbGl6YW5kbyBwby1jb21ibyBjb20gc2VydmnDp28sIMOpIHBvc3NpdmVsIGRpZ2l0YXIgdW0gdmFsb3Igbm8gY2FtcG8gZGUgZW50cmFkYSBlIHByZXNzaW9uYXIgYSB0ZWNsYSAndGFiJyBwYXJhIHF1ZSBvIGNvbXBvbmVudGVcbiAqIGZhw6dhIHVtYSByZXF1aXNpw6fDo28gw6AgVVJMIGluZm9ybWFkYSBwYXNzYW5kbyBvIHZhbG9yIGRpZ2l0YWRvIG5vIGNhbXBvLiBTZSBlbmNvbnRyYWRvIG8gdmFsb3IsIGVudMOjbyBvIG1lc21vIHNlcsOhIHNlbGVjaW9uYWRvLCBjYXNvXG4gKiBuw6NvIHNlamEgZW5jb250cmFkbywgZW50w6NvIGEgbGlzdGEgZGUgaXRlbnMgdm9sdGFyw6EgcGFyYSBvIGVzdGFkbyBpbmljaWFsLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvbWJvLWJhc2ljXCIgdGl0bGU9XCJQTyBDb21ibyBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWJhc2ljL3NhbXBsZS1wby1jb21iby1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tYmFzaWMvc2FtcGxlLXBvLWNvbWJvLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvbWJvLWxhYnNcIiB0aXRsZT1cIlBPIENvbWJvIExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1sYWJzL3NhbXBsZS1wby1jb21iby1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1sYWJzL3NhbXBsZS1wby1jb21iby1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvbWJvLXNjaGVkdWxpbmdcIiB0aXRsZT1cIlBPIENvbWJvIC0gU2NoZWR1bGluZ1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLXNjaGVkdWxpbmcvc2FtcGxlLXBvLWNvbWJvLXNjaGVkdWxpbmcuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLXNjaGVkdWxpbmcvc2FtcGxlLXBvLWNvbWJvLXNjaGVkdWxpbmcuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nL3NhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby10cmFuc2ZlclwiIHRpdGxlPVwiUE8gQ29tYm8gLSBCYW5raW5nIFRyYW5zZmVyXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tdHJhbnNmZXIvc2FtcGxlLXBvLWNvbWJvLXRyYW5zZmVyLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby10cmFuc2Zlci9zYW1wbGUtcG8tY29tYm8tdHJhbnNmZXIuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tY29tYm8taGVyb2VzXCIgdGl0bGU9XCJQTyBDb21ibyAtIEhlcm9lc1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWhlcm9lcy9zYW1wbGUtcG8tY29tYm8taGVyb2VzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1oZXJvZXMvc2FtcGxlLXBvLWNvbWJvLWhlcm9lcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby1oZXJvZXMtcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gQ29tYm8gLSBIZXJvZXMgUmVhY3RpdmUgRm9ybVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWhlcm9lcy1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1jb21iby1oZXJvZXMtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8taGVyb2VzLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWNvbWJvLWhlcm9lcy1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvbWJvLWhvdGVsc1wiIHRpdGxlPVwiUE8gQ29tYm8gLSBCb29raW5nIEhvdGVsXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8taG90ZWxzL3NhbXBsZS1wby1jb21iby1ob3RlbHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWhvdGVscy9zYW1wbGUtcG8tY29tYm8taG90ZWxzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWNvbWJvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWNvbWJvLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIFBvQ29udHJvbFBvc2l0aW9uU2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvQ29tYm9Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0NvbWJvQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFBvQ29tYm9Db21wb25lbnQgZXh0ZW5kcyBQb0NvbWJvQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQENvbnRlbnRDaGlsZChQb0NvbWJvT3B0aW9uVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGNvbWJvT3B0aW9uVGVtcGxhdGU6IFBvQ29tYm9PcHRpb25UZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXJFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbnRhaW5lckVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbnRlbnRFbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpY29uQXJyb3cnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpY29uRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbDogRWxlbWVudFJlZjtcblxuICBjb21ib0ljb246IHN0cmluZyA9ICdwby1pY29uLWFycm93LWRvd24nO1xuICBjb21ib09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGlmZmVyOiBhbnk7XG4gIGlzUHJvY2Vzc2luZ1ZhbHVlQnlUYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2Nyb2xsVG9wID0gMDtcbiAgc2VydmljZTogUG9Db21ib0ZpbHRlclNlcnZpY2U7XG4gIHNob3VsZE1hcmtMZXR0ZXJzOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcml2YXRlIF9pc1NlcnZlclNlYXJjaGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY2xpY2tvdXRMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBldmVudFJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgZmlsdGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZ2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICBwdWJsaWMgZGVmYXVsdFNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgY29udHJvbFBvc2l0aW9uOiBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZWQ6IERvbVNhbml0aXplcixcbiAgICBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGxhbmd1YWdlU2VydmljZSk7XG5cbiAgICB0aGlzLmRpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlKG51bGwpO1xuICB9XG5cbiAgc2V0IGlzU2VydmVyU2VhcmNoaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9pc1NlcnZlclNlYXJjaGluZyA9IHZhbHVlO1xuXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgdGhpcy5zZXRDb250YWluZXJQb3NpdGlvbigpO1xuICAgICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2lzU2VydmVyU2VhcmNoaW5nID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzU2VydmVyU2VhcmNoaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1NlcnZlclNlYXJjaGluZztcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuZGVib3VuY2VUaW1lKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlS2V5dXBPYnNlcnZhYmxlKCk7XG4gICAgICB0aGlzLmluaXRJbnB1dE9ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmNvbmZpZ0FmdGVyU2V0RmlsdGVyU2VydmljZSh0aGlzLmZpbHRlclNlcnZpY2UpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG5cbiAgICBpZiAodGhpcy5maWx0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmdldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9Db21ib0NvbXBvbmVudCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoUG9Db21ib0NvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgY29tYm86IFBvQ29tYm9Db21wb25lbnQ7XG4gICAqXG4gICAqIGZvY3VzQ29tYm8oKSB7XG4gICAqICAgdGhpcy5jb21iby5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkPy4oKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudD86IGFueSkge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcblxuICAgIC8vIGJ1c2NhIHVtIHJlZ2lzdHJvIHF1YW5kbyBhY2lvbmFyIG8gdGFiXG4gICAgaWYgKHRoaXMuc2VydmljZSAmJiBrZXkgPT09IFBvS2V5Q29kZUVudW0udGFiICYmIGlucHV0VmFsdWUgJiYgIXRoaXMuZGlzYWJsZWRUYWJGaWx0ZXIpIHtcbiAgICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RCeVZhbHVlKGlucHV0VmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFRlY2xhcyBcInVwXCIgZSBcImRvd25cIlxuICAgIGlmIChrZXkgPT09IFBvS2V5Q29kZUVudW0uYXJyb3dVcCB8fCBrZXkgPT09IFBvS2V5Q29kZUVudW0uYXJyb3dEb3duKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBpZiAodGhpcy5jb21ib09wZW4pIHtcbiAgICAgICAgaWYgKGtleSA9PT0gUG9LZXlDb2RlRW51bS5hcnJvd1VwKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RQcmV2aW91c09wdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dE9wdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eSh0cnVlKTtcbiAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSB0aGlzLmNoYW5nZU9uRW50ZXIgPyB0aGlzLmlzRmlsdGVyaW5nIDogZmFsc2U7XG4gICAgICB0aGlzLnNob3VsZE1hcmtMZXR0ZXJzID0gdGhpcy5jaGFuZ2VPbkVudGVyID8gdGhpcy5zaG91bGRNYXJrTGV0dGVycyA6IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRlY2xhcyBcInRhYlwiIG91IFwiZXNjXCJcbiAgICBpZiAoa2V5ID09PSBQb0tleUNvZGVFbnVtLnRhYiB8fCBrZXkgPT09IFBvS2V5Q29kZUVudW0uZXNjKSB7XG4gICAgICBpZiAoa2V5ID09PSBQb0tleUNvZGVFbnVtLmVzYyAmJiB0aGlzLmNvbWJvT3Blbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgIHRoaXMudmVyaWZ5VmFsaWRPcHRpb24oKTtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nVmFsdWVCeVRhYiA9IHRydWU7XG4gICAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgICAvLyBjYXNvIGZvciBjaGFuZ2VPbkVudGVyIGUgbmFvIHRlciBzZWxlY3RlZFZhbHVlIGRldmUgbGltcGFyIG8gc2VsZWN0ZWRWaWV3IHBhcmEgcmVpbmljaWEtbG8uXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5jaGFuZ2VPbkVudGVyICYmICF0aGlzLnNlbGVjdGVkVmFsdWUgPyB1bmRlZmluZWQgOiB0aGlzLnNlbGVjdGVkVmlldztcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUZWNsYSBcImVudGVyXCJcbiAgICBpZiAoa2V5ID09PSBQb0tleUNvZGVFbnVtLmVudGVyICYmIHRoaXMuc2VsZWN0ZWRWaWV3ICYmIHRoaXMuY29tYm9PcGVuKSB7XG4gICAgICBjb25zdCBpc1VwZGF0ZU1vZGVsID0gdGhpcy5zZWxlY3RlZFZpZXcudmFsdWUgIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSB8fCBpbnB1dFZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmlldy5sYWJlbDtcblxuICAgICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KGZhbHNlKTtcblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKHRoaXMuc2VsZWN0ZWRWaWV3LCBpc1VwZGF0ZU1vZGVsKTtcbiAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSBmYWxzZTtcblxuICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoWy4uLnRoaXMuY2FjaGVTdGF0aWNPcHRpb25zXSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gUG9LZXlDb2RlRW51bS5lbnRlcikge1xuICAgICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uS2V5VXAoZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXlDb2RlIHx8IGV2ZW50LndoaWNoO1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICBjb25zdCBpc1ZhbGlkS2V5ID0ga2V5ICE9PSBQb0tleUNvZGVFbnVtLmFycm93VXAgJiYga2V5ICE9PSBQb0tleUNvZGVFbnVtLmFycm93RG93biAmJiBrZXkgIT09IFBvS2V5Q29kZUVudW0uZW50ZXI7XG5cbiAgICBpZiAoaXNWYWxpZEtleSkge1xuICAgICAgaWYgKGlucHV0VmFsdWUpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UgJiYgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlICE9PSBpbnB1dFZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5zaG91bGRNYXJrTGV0dGVycyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc0ZpbHRlcmluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zZWFyY2hGb3JMYWJlbChpbnB1dFZhbHVlLCB0aGlzLmNvbWJvT3B0aW9uc0xpc3QsIHRoaXMuZmlsdGVyTW9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHF1YW5kbyBhcGFnYXIgcmFwaWRvIG8gY2FtcG8gZSBjb250ZXIgc2VydmnDp28sIHZhbG9yLCBuw6NvIGRpc3BhcmF2YSBvIGtleXVwIG9ic2VydmFibGVcbiAgICAgICAgLy8gbmVjZXNzYXJpbyBlc3RlIHRyYXRhbWVudG8gcGFyYSByZXRvcm5hciBhIGxpc3RhICdkZWZhdWx0Jy5cbiAgICAgICAgY29uc3QgdXNlRGVmYXVsdE9wdGlvbnNTZXJ2aWNlID1cbiAgICAgICAgICB0aGlzLnNlcnZpY2UgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24ubGFiZWwgPT09IHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUobnVsbCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHVzZURlZmF1bHRPcHRpb25zU2VydmljZSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFsuLi50aGlzLmNhY2hlT3B0aW9uc10pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0ZpbHRlcmluZyA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBjYXNvIG8gdmFsb3IgcGVzcXVpc2FkbyBmb3IgZGlmZXJlbnRlIGRvIGFudGVyaW9yIGRldmUgYWJyaXIgbyBjb21ib1xuICAgICAgaWYgKHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSAhPT0gaW5wdXRWYWx1ZSkge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkodHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gaW5wdXRWYWx1ZTtcbiAgfVxuXG4gIGluaXRJbnB1dE9ic2VydmFibGUoKSB7XG4gICAgaWYgKHRoaXMuc2VydmljZSkge1xuICAgICAgY29uc3Qga2V5dXBPYnNlcnZhYmxlID0gZnJvbUV2ZW50KHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LCAna2V5dXAnKS5waXBlKFxuICAgICAgICBmaWx0ZXIoKGU6IGFueSkgPT4gdGhpcy5pc1ZhbGlkQ2hhcmFjdGVyVG9TZWFyY2goZS5rZXlDb2RlKSksXG4gICAgICAgIG1hcCgoZTogYW55KSA9PiBlLmN1cnJlbnRUYXJnZXQudmFsdWUpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvdWxkTWFya0xldHRlcnMgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMua2V5dXBTdWJzY3JpYmUgPSBrZXl1cE9ic2VydmFibGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+PSB0aGlzLmZpbHRlck1pbmxlbmd0aCB8fCAhdmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmNvbnRyb2xBcHBseUZpbHRlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRyb2xBcHBseUZpbHRlcih2YWx1ZSkge1xuICAgIGlmICghdGhpcy5pc1Byb2Nlc3NpbmdWYWx1ZUJ5VGFiICYmICghdGhpcy5zZWxlY3RlZE9wdGlvbiB8fCB2YWx1ZSAhPT0gdGhpcy5zZWxlY3RlZE9wdGlvbi5sYWJlbCkpIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXIodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmlzUHJvY2Vzc2luZ1ZhbHVlQnlUYWIgPSBmYWxzZTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkoZmFsc2UpO1xuICAgIHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgcGFyYW0gPSB7IHByb3BlcnR5OiB0aGlzLmZpZWxkTGFiZWwsIHZhbHVlIH07XG5cbiAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuc2VydmljZS5nZXRGaWx0ZXJlZERhdGEocGFyYW0sIHRoaXMuZmlsdGVyUGFyYW1zKS5zdWJzY3JpYmUoXG4gICAgICBpdGVtcyA9PiB0aGlzLnNldE9wdGlvbnNCeUFwcGx5RmlsdGVyKHZhbHVlLCBpdGVtcyksXG4gICAgICBlcnJvciA9PiB0aGlzLm9uRXJyb3JGaWx0ZXJlZERhdGEoKVxuICAgICk7XG4gIH1cblxuICBzZXRPcHRpb25zQnlBcHBseUZpbHRlcih2YWx1ZSwgaXRlbXMpIHtcbiAgICB0aGlzLnNob3VsZE1hcmtMZXR0ZXJzID0gdHJ1ZTtcbiAgICB0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gZmFsc2U7XG4gICAgdGhpcy5vcHRpb25zID0gaXRlbXM7XG5cbiAgICB0aGlzLnNlYXJjaEZvckxhYmVsKHZhbHVlLCBpdGVtcywgdGhpcy5maWx0ZXJNb2RlKTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuaXNGaXJzdEZpbHRlcikge1xuICAgICAgdGhpcy5pc0ZpcnN0RmlsdGVyID0gIXRoaXMuaXNGaXJzdEZpbHRlcjtcblxuICAgICAgdGhpcy5jYWNoZU9wdGlvbnMgPSB0aGlzLmNvbWJvT3B0aW9uc0xpc3Q7XG4gICAgfVxuICB9XG5cbiAgZ2V0T2JqZWN0QnlWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgIT09IHZhbHVlICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24/LmxhYmVsICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdWYWx1ZUJ5VGFiID0gdHJ1ZTtcblxuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24gPSB0aGlzLnNlcnZpY2UuZ2V0T2JqZWN0QnlWYWx1ZSh2YWx1ZSwgdGhpcy5maWx0ZXJQYXJhbXMpLnN1YnNjcmliZShcbiAgICAgICAgaXRlbSA9PiB0aGlzLnVwZGF0ZU9wdGlvbkJ5RmlsdGVyZWRWYWx1ZShpdGVtKSxcbiAgICAgICAgZXJyb3IgPT4gdGhpcy5vbkVycm9yR2V0T2JqZWN0QnlWYWx1ZSgpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZU9wdGlvbkJ5RmlsdGVyZWRWYWx1ZShpdGVtKSB7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IFtpdGVtXTtcbiAgICAgIHRoaXMub25PcHRpb25DbGljayhpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG51bGwpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdWYWx1ZUJ5VGFiID0gZmFsc2U7XG4gICAgfSwgdGhpcy5kZWJvdW5jZVRpbWUpO1xuICB9XG5cbiAgc2VsZWN0UHJldmlvdXNPcHRpb24oKSB7XG4gICAgY29uc3QgY3VycmVudFZpZXdWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWaWV3ICYmIHRoaXMuc2VsZWN0ZWRWaWV3LnZhbHVlO1xuXG4gICAgaWYgKGN1cnJlbnRWaWV3VmFsdWUpIHtcbiAgICAgIGNvbnN0IG5leHRPcHRpb24gPSB0aGlzLmdldE5leHRPcHRpb24oY3VycmVudFZpZXdWYWx1ZSwgdGhpcy52aXNpYmxlT3B0aW9ucywgdHJ1ZSk7XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShuZXh0T3B0aW9uLCBuZXh0T3B0aW9uICYmIG5leHRPcHRpb24udmFsdWUgIT09IGN1cnJlbnRWaWV3VmFsdWUgJiYgIXRoaXMuY2hhbmdlT25FbnRlcik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgdmlzaWJsZU9wdGlvbiA9IHRoaXMudmlzaWJsZU9wdGlvbnNbdGhpcy52aXNpYmxlT3B0aW9ucy5sZW5ndGggLSAxXTtcblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKHZpc2libGVPcHRpb24sIHZpc2libGVPcHRpb24udmFsdWUgIT09IGN1cnJlbnRWaWV3VmFsdWUgJiYgIXRoaXMuY2hhbmdlT25FbnRlcik7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0TmV4dE9wdGlvbigpIHtcbiAgICBjb25zdCBjdXJyZW50Vmlld1ZhbHVlID0gdGhpcy5zZWxlY3RlZFZpZXcgJiYgdGhpcy5zZWxlY3RlZFZpZXcudmFsdWU7XG5cbiAgICBpZiAoY3VycmVudFZpZXdWYWx1ZSkge1xuICAgICAgY29uc3QgbmV4dE9wdGlvbiA9IHRoaXMuZ2V0TmV4dE9wdGlvbihjdXJyZW50Vmlld1ZhbHVlLCB0aGlzLnZpc2libGVPcHRpb25zKTtcblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG5leHRPcHRpb24sIG5leHRPcHRpb24gJiYgbmV4dE9wdGlvbi52YWx1ZSAhPT0gY3VycmVudFZpZXdWYWx1ZSAmJiAhdGhpcy5jaGFuZ2VPbkVudGVyKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hhbmdlT25FbnRlciA/IDEgOiAwO1xuXG4gICAgICBjb25zdCB2aXNpYmxlT3B0aW9uID0gdGhpcy52aXNpYmxlT3B0aW9uc1tpbmRleF07XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSh2aXNpYmxlT3B0aW9uLCB2aXNpYmxlT3B0aW9uLnZhbHVlICE9PSBjdXJyZW50Vmlld1ZhbHVlICYmICF0aGlzLmNoYW5nZU9uRW50ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUNvbWJvVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYgIXRoaXMuZGlzYWJsZWRJbml0RmlsdGVyKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVySW5GaXJzdENsaWNrKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KCF0aGlzLmNvbWJvT3Blbik7XG4gIH1cblxuICBhcHBseUZpbHRlckluRmlyc3RDbGljaygpIHtcbiAgICBpZiAodGhpcy5pc0ZpcnN0RmlsdGVyICYmICF0aGlzLnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoJycpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRyb2xDb21ib1Zpc2liaWxpdHkodG9PcGVuOiBib29sZWFuKSB7XG4gICAgdG9PcGVuID8gdGhpcy5vcGVuKCkgOiB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBvbk9wdGlvbkNsaWNrKG9wdGlvbjogUG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cCwgZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gdGhpcy5nZXRJbnB1dFZhbHVlKCk7XG4gICAgY29uc3QgaXNVcGRhdGVNb2RlbCA9XG4gICAgICBvcHRpb24udmFsdWUgIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSB8fCAhISh0aGlzLnNlbGVjdGVkVmlldyAmJiBpbnB1dFZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmlldy5sYWJlbCk7XG5cbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShvcHRpb24sIGlzVXBkYXRlTW9kZWwpO1xuICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFsuLi50aGlzLmNhY2hlU3RhdGljT3B0aW9uc10pO1xuICAgIH1cblxuICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWaWV3LmxhYmVsO1xuICB9XG5cbiAgc2Nyb2xsVG8oaW5kZXgpIHtcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucG8tY29tYm8taXRlbS1zZWxlY3RlZCcpO1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9ICFzZWxlY3RlZEl0ZW0ubGVuZ3RoIHx8IGluZGV4IDw9IDEgPyAwIDogc2VsZWN0ZWRJdGVtWzBdLm9mZnNldFRvcCAtIDg4O1xuXG4gICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wKTtcbiAgfVxuXG4gIGdldElucHV0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgc2V0SW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHdhc0NsaWNrZWRPblRvZ2dsZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29tYm9PcGVuICYmXG4gICAgICAhdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMuaWNvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAoIXRoaXMuY29udGVudEVsZW1lbnQgfHwgIXRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICkge1xuICAgICAgLy8gRXNjb25kZSBDb250ZW50IGRvIENvbWJvIHF1YW5kbyBmb3IgY2xpY2FkbyBmb3JhXG4gICAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkoZmFsc2UpO1xuXG4gICAgICB0aGlzLnZlcmlmeVZhbGlkT3B0aW9uKCk7XG5cbiAgICAgIC8vIGNhc28gZm9yIGNoYW5nZU9uRW50ZXIgZGV2ZSBsaW1wYXIgbyBzZWxlY3RlZFZpZXcgcGFyYSByZWluaWNpYS1sb1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSB0aGlzLmNoYW5nZU9uRW50ZXIgJiYgIXRoaXMuc2VsZWN0ZWRWYWx1ZSA/IHVuZGVmaW5lZCA6IHRoaXMuc2VsZWN0ZWRWaWV3O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZXJ2aWNlICYmICF0aGlzLmdldElucHV0VmFsdWUoKSAmJiAhdGhpcy5pc0ZpcnN0RmlsdGVyKSB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoJycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldExhYmVsRm9ybWF0dGVkKGxhYmVsOiBzdHJpbmcpOiBTYWZlSHRtbCB7XG4gICAgY29uc3Qgc2FuaXRpemVkTGFiZWwgPSB0aGlzLnNhbml0aXplVGFnSFRNTChsYWJlbCk7XG4gICAgbGV0IGZvcm1hdDogc3RyaW5nID0gc2FuaXRpemVkTGFiZWw7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmlzRmlsdGVyaW5nIHx8XG4gICAgICAodGhpcy5zZXJ2aWNlICYmXG4gICAgICAgIHRoaXMuZ2V0SW5wdXRWYWx1ZSgpICYmXG4gICAgICAgICF0aGlzLmNvbXBhcmVPYmplY3RzKHRoaXMuY2FjaGVPcHRpb25zLCB0aGlzLnZpc2libGVPcHRpb25zKSAmJlxuICAgICAgICB0aGlzLnNob3VsZE1hcmtMZXR0ZXJzKVxuICAgICkge1xuICAgICAgY29uc3QgbGFiZWxJbnB1dCA9IHRoaXMuc2FuaXRpemVUYWdIVE1MKHRoaXMuZ2V0SW5wdXRWYWx1ZSgpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSk7XG4gICAgICBjb25zdCBsYWJlbExvd2VyQ2FzZSA9IHNhbml0aXplZExhYmVsLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIGNvbnN0IG9wZW5UYWdCb2xkID0gJzxzcGFuIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlLWJvbGRcIj4nO1xuICAgICAgY29uc3QgY2xvc2VUYWdCb2xkID0gJzwvc3Bhbj4nO1xuXG4gICAgICBsZXQgc3RhcnRTdHJpbmc7XG4gICAgICBsZXQgbWlkZGxlU3RyaW5nO1xuICAgICAgbGV0IGVuZFN0cmluZztcblxuICAgICAgc3dpdGNoICh0aGlzLmZpbHRlck1vZGUpIHtcbiAgICAgICAgY2FzZSBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoOlxuICAgICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLmNvbnRhaW5zOlxuICAgICAgICAgIGNvbnN0IGluZGV4T2ZMYWJlbElucHV0ID0gbGFiZWxMb3dlckNhc2UuaW5kZXhPZihsYWJlbElucHV0KTtcblxuICAgICAgICAgIGlmIChpbmRleE9mTGFiZWxJbnB1dCA+IC0xKSB7XG4gICAgICAgICAgICBzdGFydFN0cmluZyA9IHNhbml0aXplZExhYmVsLnN1YnN0cmluZygwLCBpbmRleE9mTGFiZWxJbnB1dCk7XG5cbiAgICAgICAgICAgIG1pZGRsZVN0cmluZyA9IHNhbml0aXplZExhYmVsLnN1YnN0cmluZyhpbmRleE9mTGFiZWxJbnB1dCwgaW5kZXhPZkxhYmVsSW5wdXQgKyBsYWJlbElucHV0Lmxlbmd0aCk7XG4gICAgICAgICAgICBlbmRTdHJpbmcgPSBzYW5pdGl6ZWRMYWJlbC5zdWJzdHJpbmcoaW5kZXhPZkxhYmVsSW5wdXQgKyBsYWJlbElucHV0Lmxlbmd0aCk7XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IHN0YXJ0U3RyaW5nICsgb3BlblRhZ0JvbGQgKyBtaWRkbGVTdHJpbmcgKyBjbG9zZVRhZ0JvbGQgKyBlbmRTdHJpbmc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuZW5kc1dpdGg6XG4gICAgICAgICAgY29uc3QgbGFzdEluZGV4T2ZMYWJlbElucHV0ID0gbGFiZWxMb3dlckNhc2UubGFzdEluZGV4T2YobGFiZWxJbnB1dCk7XG5cbiAgICAgICAgICBpZiAobGFzdEluZGV4T2ZMYWJlbElucHV0ID4gLTEpIHtcbiAgICAgICAgICAgIHN0YXJ0U3RyaW5nID0gc2FuaXRpemVkTGFiZWwuc3Vic3RyaW5nKDAsIGxhc3RJbmRleE9mTGFiZWxJbnB1dCk7XG4gICAgICAgICAgICBtaWRkbGVTdHJpbmcgPSBzYW5pdGl6ZWRMYWJlbC5zdWJzdHJpbmcobGFzdEluZGV4T2ZMYWJlbElucHV0KTtcblxuICAgICAgICAgICAgZm9ybWF0ID0gc3RhcnRTdHJpbmcgKyBvcGVuVGFnQm9sZCArIG1pZGRsZVN0cmluZyArIGNsb3NlVGFnQm9sZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2FmZUh0bWwoZm9ybWF0KTtcbiAgfVxuXG4gIHNhZmVIdG1sKHZhbHVlKTogU2FmZUh0bWwge1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplZC5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWx1ZSk7XG4gIH1cblxuICBpc1ZhbGlkQ2hhcmFjdGVyVG9TZWFyY2goa2V5Q29kZSkge1xuICAgIHJldHVybiAoXG4gICAgICBrZXlDb2RlICE9PSA5ICYmIC8vIHRhYlxuICAgICAga2V5Q29kZSAhPT0gMTMgJiYgLy8gZW50ZXRcbiAgICAgIGtleUNvZGUgIT09IDE2ICYmIC8vIHNoaWZ0XG4gICAgICBrZXlDb2RlICE9PSAxNyAmJiAvLyBjdHJsXG4gICAgICBrZXlDb2RlICE9PSAxOCAmJiAvLyBhbHRcbiAgICAgIGtleUNvZGUgIT09IDIwICYmIC8vIGNhcHNsb2NrXG4gICAgICBrZXlDb2RlICE9PSAyNyAmJiAvLyBlc2NcbiAgICAgIGtleUNvZGUgIT09IDM3ICYmIC8vIHNldGFcbiAgICAgIGtleUNvZGUgIT09IDM4ICYmIC8vIHNldGFcbiAgICAgIGtleUNvZGUgIT09IDM5ICYmIC8vIHNldGFcbiAgICAgIGtleUNvZGUgIT09IDQwICYmIC8vIHNldGFcbiAgICAgIGtleUNvZGUgIT09IDkzXG4gICAgKTsgLy8gd2luZG93cyBtZW51XG4gIH1cblxuICBzZWFyY2hPbkVudGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zZXJ2aWNlICYmICF0aGlzLnNlbGVjdGVkVmlldyAmJiB2YWx1ZS5sZW5ndGggPj0gdGhpcy5maWx0ZXJNaW5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY29udHJvbEFwcGx5RmlsdGVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkanVzdENvbnRhaW5lclBvc2l0aW9uKCkge1xuICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLmFkanVzdFBvc2l0aW9uKHBvQ29tYm9Db250YWluZXJQb3NpdGlvbkRlZmF1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZSgpIHtcbiAgICB0aGlzLmNvbWJvT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmNvbWJvSWNvbiA9ICdwby1pY29uLWFycm93LWRvd24nO1xuXG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxpc3RlbmVycygpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuXG4gICAgdGhpcy5jbGlja291dExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLndhc0NsaWNrZWRPblRvZ2dsZShldmVudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50UmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIC8vIHRpbWVvdXQgbmVjZXNzYXJpbyBwb2lzIGEgYW5pbWHDp8OjbyBkbyBwby1tZW51IGltcGFjdGEgbm8gYWp1c3RlIGRhIHBvc2nDp8OjbyBkbyBjb250YWluZXIuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKSwgMjUwKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25FcnJvckdldE9iamVjdEJ5VmFsdWUoKSB7XG4gICAgdGhpcy51cGRhdGVPcHRpb25CeUZpbHRlcmVkVmFsdWUobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIG9uRXJyb3JGaWx0ZXJlZERhdGEoKSB7XG4gICAgdGhpcy5pc1NlcnZlclNlYXJjaGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy51cGRhdGVDb21ib0xpc3QoW10pO1xuXG4gICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBvcGVuKCkge1xuICAgIHRoaXMuY29tYm9PcGVuID0gdHJ1ZTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5jb21ib0ljb24gPSAncG8taWNvbi1hcnJvdy11cCc7XG5cbiAgICB0aGlzLmluaXRpYWxpemVMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5zY3JvbGxUbyh0aGlzLmdldEluZGV4U2VsZWN0ZWRWaWV3KCkpO1xuXG4gICAgdGhpcy5zZXRDb250YWluZXJQb3NpdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMuY2xpY2tvdXRMaXN0ZW5lcikge1xuICAgICAgdGhpcy5jbGlja291dExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXZlbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5ldmVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYW5pdGl6ZVRhZ0hUTUwodmFsdWU6IHN0cmluZyA9ICcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1xcPC9nbSwgJyZsdDsnKS5yZXBsYWNlKC9cXD4vZywgJyZndDsnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udGFpbmVyUG9zaXRpb24oKSB7XG4gICAgdGhpcy5jb250cm9sUG9zaXRpb24uc2V0RWxlbWVudHMoXG4gICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHBvQ29tYm9Db250YWluZXJPZmZzZXQsXG4gICAgICB0aGlzLmlucHV0RWwsXG4gICAgICBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5jb250ZW50RWxlbWVudCkge1xuICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICB9XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXIgW3AtbGFiZWxdPVwibGFiZWxcIiBbcC1oZWxwXT1cImhlbHBcIiBbcC1vcHRpb25hbF09XCIhcmVxdWlyZWQgJiYgb3B0aW9uYWxcIj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgPGRpdiAqbmdJZj1cImljb25cIiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLWxlZnRcIj5cbiAgICAgIDxwby1pY29uIGNsYXNzPVwicG8tZmllbGQtaWNvblwiIFtjbGFzcy5wby1maWVsZC1pY29uLWRpc2FibGVkXT1cImRpc2FibGVkXCIgW3AtaWNvbl09XCJpY29uXCI+PC9wby1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGlucHV0XG4gICAgICAjaW5wXG4gICAgICBjbGFzcz1cInBvLWlucHV0IHBvLWNvbWJvLWlucHV0XCJcbiAgICAgIFtuZ0NsYXNzXT1cImNsZWFuICYmIGlucC52YWx1ZSA/ICdwby1pbnB1dC1kb3VibGUtaWNvbi1yaWdodCcgOiAncG8taW5wdXQtaWNvbi1yaWdodCdcIlxuICAgICAgW2NsYXNzLnBvLWlucHV0LWljb24tbGVmdF09XCJpY29uXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbWJvVmlzaWJpbGl0eSgpXCJcbiAgICAgIChrZXl1cCk9XCJvbktleVVwKCRldmVudClcIlxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cInNlYXJjaE9uRW50ZXIoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgIDxwby1jbGVhbiAqbmdJZj1cImNsZWFuICYmICFkaXNhYmxlZFwiIChwLWNoYW5nZS1ldmVudCk9XCJjbGVhcigkZXZlbnQpXCIgW3AtZWxlbWVudC1yZWZdPVwiaW5wdXRFbFwiPiA8L3BvLWNsZWFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgI2ljb25BcnJvd1xuICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiB7eyBjb21ib0ljb24gfX1cIlxuICAgICAgICBbY2xhc3MucG8tZmllbGQtaWNvbi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzcy5wby1maWVsZC1pY29uXT1cIiFkaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVDb21ib1Zpc2liaWxpdHkoKVwiXG4gICAgICA+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgI2NvbnRhaW5lckVsZW1lbnQgY2xhc3M9XCJwby1jb21iby1jb250YWluZXJcIiBbaGlkZGVuXT1cIiFjb21ib09wZW4gJiYgIWlzU2VydmVyU2VhcmNoaW5nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2VydmVyU2VhcmNoaW5nOyB0aGVuIGxvYWRpbmdUZW1wbGF0ZTsgZWxzZSBvcHRpb25zVGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxwby1maWVsZC1jb250YWluZXItYm90dG9tPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmdUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInBvLWNvbWJvLWNvbnRhaW5lci1sb2FkaW5nXCI+XG4gICAgPHBvLWxvYWRpbmc+PC9wby1sb2FkaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjb3B0aW9uc1RlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlzaWJsZU9wdGlvbnMubGVuZ3RoOyB0aGVuIHZpc2libGVPcHRpb25zVGVtcGxhdGU7IGVsc2Ugbm9EYXRhVGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Zpc2libGVPcHRpb25zVGVtcGxhdGU+XG4gIDx1bCAjY29udGVudEVsZW1lbnQgY2xhc3M9XCJwby1jb21iby1jb250YWluZXItY29udGVudFwiPlxuICAgIDxsaVxuICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB2aXNpYmxlT3B0aW9uc1wiXG4gICAgICBbY2xhc3MucG8tY29tYm8taXRlbS1zZWxlY3RlZF09XCJjb21wYXJlT2JqZWN0cyhzZWxlY3RlZFZpZXcsIG9wdGlvbilcIlxuICAgICAgKGNsaWNrKT1cIm9wdGlvbj8ub3B0aW9ucyA/IHVuZGVmaW5lZCA6IG9uT3B0aW9uQ2xpY2sob3B0aW9uLCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9PcHRpb25UZW1wbGF0ZTsgdGhlbiBvcHRpb25UZW1wbGF0ZTsgZWxzZSBkZWZhdWx0T3B0aW9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0T3B0aW9uVGVtcGxhdGU+XG4gICAgICAgIDxsYWJlbCAqbmdJZj1cIm9wdGlvbj8ub3B0aW9uczsgZWxzZSBvcHRpb25MaW5rXCIgY2xhc3M9XCJwby1jb21iby1pdGVtLXRpdGxlXCI+e3sgb3B0aW9uLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNvcHRpb25MaW5rPlxuICAgICAgICAgIDxhIGNsYXNzPVwicG8tY29tYm8taXRlbVwiPlxuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJnZXRMYWJlbEZvcm1hdHRlZChvcHRpb24/LmxhYmVsKVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI29wdGlvblRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPcHRpb25Hcm91cExpc3Q7IHRoZW4gb3B0aW9uc0dyb3VwVGVtcGxhdGU7IGVsc2UgZGVmYXVsdE9wdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uc0dyb3VwVGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb21ib09wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiwgc2VsZWN0ZWQ6IGNvbXBhcmVPYmplY3RzKHNlbGVjdGVkVmlldywgb3B0aW9uKSB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRPcHRpb25zVGVtcGxhdGU+XG4gICAgICAgICAgPGEgY2xhc3M9XCJwby1jb21iby1pdGVtXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29tYm9PcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0RhdGFUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInBvLWNvbWJvLWNvbnRhaW5lci1uby1kYXRhXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvLWNvbWJvLW5vLWRhdGEgcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgIDxzcGFuPlxuICAgICAgICB7eyBsaXRlcmFscy5ub0RhdGEgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
739
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWNvbWJvL3BvLWNvbWJvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1jb21iby9wby1jb21iby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFNVixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHakUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDNUIzRywrQkFBdUQ7SUFDckQsOEJBQW1HO0lBQ3JHLGlCQUFNOzs7SUFEMkIsZUFBeUM7SUFB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bUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ0osT0FBTztrQkFBNUQsU0FBUzttQkFBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tY29udHJvbC1wb3NpdGlvbi9wby1jb250cm9sLXBvc2l0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9LZXlDb2RlRW51bSB9IGZyb20gJy4vLi4vLi4vLi4vZW51bXMvcG8ta2V5LWNvZGUuZW51bSc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQb0NvbWJvQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tY29tYm8tYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9Db21ib0ZpbHRlck1vZGUgfSBmcm9tICcuL3BvLWNvbWJvLWZpbHRlci1tb2RlLmVudW0nO1xuaW1wb3J0IHsgUG9Db21ib0ZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3BvLWNvbWJvLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvQ29tYm9Hcm91cCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Db21ib09wdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9PcHRpb25UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tY29tYm8tb3B0aW9uLXRlbXBsYXRlL3BvLWNvbWJvLW9wdGlvbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuXG5jb25zdCBwb0NvbWJvQ29udGFpbmVyT2Zmc2V0ID0gODtcbmNvbnN0IHBvQ29tYm9Db250YWluZXJQb3NpdGlvbkRlZmF1bHQgPSAnYm90dG9tJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9Db21ib0Jhc2VDb21wb25lbnRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFV0aWxpemFuZG8gcG8tY29tYm8gY29tIHNlcnZpw6dvLCDDqSBwb3NzaXZlbCBkaWdpdGFyIHVtIHZhbG9yIG5vIGNhbXBvIGRlIGVudHJhZGEgZSBwcmVzc2lvbmFyIGEgdGVjbGEgJ3RhYicgcGFyYSBxdWUgbyBjb21wb25lbnRlXG4gKiBmYcOnYSB1bWEgcmVxdWlzacOnw6NvIMOgIFVSTCBpbmZvcm1hZGEgcGFzc2FuZG8gbyB2YWxvciBkaWdpdGFkbyBubyBjYW1wby4gU2UgZW5jb250cmFkbyBvIHZhbG9yLCBlbnTDo28gbyBtZXNtbyBzZXLDoSBzZWxlY2lvbmFkbywgY2Fzb1xuICogbsOjbyBzZWphIGVuY29udHJhZG8sIGVudMOjbyBhIGxpc3RhIGRlIGl0ZW5zIHZvbHRhcsOhIHBhcmEgbyBlc3RhZG8gaW5pY2lhbC5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby1iYXNpY1wiIHRpdGxlPVwiUE8gQ29tYm8gQmFzaWNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1iYXNpYy9zYW1wbGUtcG8tY29tYm8tYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWJhc2ljL3NhbXBsZS1wby1jb21iby1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby1sYWJzXCIgdGl0bGU9XCJQTyBDb21ibyBMYWJzXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tbGFicy9zYW1wbGUtcG8tY29tYm8tbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tbGFicy9zYW1wbGUtcG8tY29tYm8tbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby1zY2hlZHVsaW5nXCIgdGl0bGU9XCJQTyBDb21ibyAtIFNjaGVkdWxpbmdcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nL3NhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nL3NhbXBsZS1wby1jb21iby1zY2hlZHVsaW5nLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tc2NoZWR1bGluZy9zYW1wbGUtcG8tY29tYm8tc2NoZWR1bGluZy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tY29tYm8tdHJhbnNmZXJcIiB0aXRsZT1cIlBPIENvbWJvIC0gQmFua2luZyBUcmFuc2ZlclwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLXRyYW5zZmVyL3NhbXBsZS1wby1jb21iby10cmFuc2Zlci5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8tdHJhbnNmZXIvc2FtcGxlLXBvLWNvbWJvLXRyYW5zZmVyLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWNvbWJvLWhlcm9lc1wiIHRpdGxlPVwiUE8gQ29tYm8gLSBIZXJvZXNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1oZXJvZXMvc2FtcGxlLXBvLWNvbWJvLWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tY29tYm8taGVyb2VzL3NhbXBsZS1wby1jb21iby1oZXJvZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tY29tYm8taGVyb2VzLXJlYWN0aXZlLWZvcm1cIiB0aXRsZT1cIlBPIENvbWJvIC0gSGVyb2VzIFJlYWN0aXZlIEZvcm1cIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1oZXJvZXMtcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tY29tYm8taGVyb2VzLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWhlcm9lcy1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1jb21iby1oZXJvZXMtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1jb21iby1ob3RlbHNcIiB0aXRsZT1cIlBPIENvbWJvIC0gQm9va2luZyBIb3RlbFwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWNvbWJvLWhvdGVscy9zYW1wbGUtcG8tY29tYm8taG90ZWxzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1jb21iby1ob3RlbHMvc2FtcGxlLXBvLWNvbWJvLWhvdGVscy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1jb21ibycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1jb21iby5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBQb0NvbWJvRmlsdGVyU2VydmljZSxcbiAgICBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0NvbWJvQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Db21ib0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQb0NvbWJvQ29tcG9uZW50IGV4dGVuZHMgUG9Db21ib0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGQoUG9Db21ib09wdGlvblRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb21ib09wdGlvblRlbXBsYXRlOiBQb0NvbWJvT3B0aW9uVGVtcGxhdGVEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb250YWluZXJFbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdjb250ZW50RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb250ZW50RWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaWNvbkFycm93JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaWNvbkVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2lucCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGlucHV0RWw6IEVsZW1lbnRSZWY7XG5cbiAgY29tYm9JY29uOiBzdHJpbmcgPSAncG8taWNvbi1hcnJvdy1kb3duJztcbiAgY29tYm9PcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIGRpZmZlcjogYW55O1xuICBpc1Byb2Nlc3NpbmdWYWx1ZUJ5VGFiOiBib29sZWFuID0gZmFsc2U7XG4gIHNjcm9sbFRvcCA9IDA7XG4gIHNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlO1xuICBzaG91bGRNYXJrTGV0dGVyczogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfaXNTZXJ2ZXJTZWFyY2hpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGNsaWNrb3V0TGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgZXZlbnRSZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIGZpbHRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGdldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgcHVibGljIGRlZmF1bHRTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyU2VydmljZSxcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNvbnRyb2xQb3NpdGlvbjogUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVkOiBEb21TYW5pdGl6ZXIsXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihsYW5ndWFnZVNlcnZpY2UpO1xuXG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcbiAgfVxuXG4gIHNldCBpc1NlcnZlclNlYXJjaGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5faXNTZXJ2ZXJTZWFyY2hpbmcgPSB2YWx1ZTtcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgIHRoaXMuc2V0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUxpc3RlbmVycygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pc1NlcnZlclNlYXJjaGluZyA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc1NlcnZlclNlYXJjaGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTZXJ2ZXJTZWFyY2hpbmc7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmRlYm91bmNlVGltZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZUtleXVwT2JzZXJ2YWJsZSgpO1xuICAgICAgdGhpcy5pbml0SW5wdXRPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5jb25maWdBZnRlclNldEZpbHRlclNlcnZpY2UodGhpcy5maWx0ZXJTZXJ2aWNlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuXG4gICAgaWYgKHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRnVuw6fDo28gcXVlIGF0cmlidWkgZm9jbyBhbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBQYXJhIHV0aWxpesOhLWxhIMOpIG5lY2Vzc8OhcmlvIHRlciBhIGluc3TDom5jaWEgZG8gY29tcG9uZW50ZSBubyBET00sIHBvZGVuZG8gc2VyIHV0aWxpemFkbyBvIFZpZXdDaGlsZCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIGltcG9ydCB7IFBvQ29tYm9Db21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvQ29tYm9Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGNvbWJvOiBQb0NvbWJvQ29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c0NvbWJvKCkge1xuICAgKiAgIHRoaXMuY29tYm8uZm9jdXMoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZD8uKCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ/OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICAvLyBidXNjYSB1bSByZWdpc3RybyBxdWFuZG8gYWNpb25hciBvIHRhYlxuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYga2V5ID09PSBQb0tleUNvZGVFbnVtLnRhYiAmJiBpbnB1dFZhbHVlICYmICF0aGlzLmRpc2FibGVkVGFiRmlsdGVyKSB7XG4gICAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkoZmFsc2UpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlWYWx1ZShpbnB1dFZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBUZWNsYXMgXCJ1cFwiIGUgXCJkb3duXCJcbiAgICBpZiAoa2V5ID09PSBQb0tleUNvZGVFbnVtLmFycm93VXAgfHwga2V5ID09PSBQb0tleUNvZGVFbnVtLmFycm93RG93bikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgaWYgKHRoaXMuY29tYm9PcGVuKSB7XG4gICAgICAgIGlmIChrZXkgPT09IFBvS2V5Q29kZUVudW0uYXJyb3dVcCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0UHJldmlvdXNPcHRpb24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdE5leHRPcHRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkodHJ1ZSk7XG4gICAgICB0aGlzLmlzRmlsdGVyaW5nID0gdGhpcy5jaGFuZ2VPbkVudGVyID8gdGhpcy5pc0ZpbHRlcmluZyA6IGZhbHNlO1xuICAgICAgdGhpcy5zaG91bGRNYXJrTGV0dGVycyA9IHRoaXMuY2hhbmdlT25FbnRlciA/IHRoaXMuc2hvdWxkTWFya0xldHRlcnMgOiBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUZWNsYXMgXCJ0YWJcIiBvdSBcImVzY1wiXG4gICAgaWYgKGtleSA9PT0gUG9LZXlDb2RlRW51bS50YWIgfHwga2V5ID09PSBQb0tleUNvZGVFbnVtLmVzYykge1xuICAgICAgaWYgKGtleSA9PT0gUG9LZXlDb2RlRW51bS5lc2MgJiYgdGhpcy5jb21ib09wZW4pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICB0aGlzLnZlcmlmeVZhbGlkT3B0aW9uKCk7XG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZ1ZhbHVlQnlUYWIgPSB0cnVlO1xuICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgLy8gY2FzbyBmb3IgY2hhbmdlT25FbnRlciBlIG5hbyB0ZXIgc2VsZWN0ZWRWYWx1ZSBkZXZlIGxpbXBhciBvIHNlbGVjdGVkVmlldyBwYXJhIHJlaW5pY2lhLWxvLlxuICAgICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IHRoaXMuY2hhbmdlT25FbnRlciAmJiAhdGhpcy5zZWxlY3RlZFZhbHVlID8gdW5kZWZpbmVkIDogdGhpcy5zZWxlY3RlZFZpZXc7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVGVjbGEgXCJlbnRlclwiXG4gICAgaWYgKGtleSA9PT0gUG9LZXlDb2RlRW51bS5lbnRlciAmJiB0aGlzLnNlbGVjdGVkVmlldyAmJiB0aGlzLmNvbWJvT3Blbikge1xuICAgICAgY29uc3QgaXNVcGRhdGVNb2RlbCA9IHRoaXMuc2VsZWN0ZWRWaWV3LnZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmFsdWUgfHwgaW5wdXRWYWx1ZSAhPT0gdGhpcy5zZWxlY3RlZFZpZXcubGFiZWw7XG5cbiAgICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eShmYWxzZSk7XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSh0aGlzLnNlbGVjdGVkVmlldywgaXNVcGRhdGVNb2RlbCk7XG4gICAgICB0aGlzLmlzRmlsdGVyaW5nID0gZmFsc2U7XG5cbiAgICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFsuLi50aGlzLmNhY2hlU3RhdGljT3B0aW9uc10pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChrZXkgPT09IFBvS2V5Q29kZUVudW0uZW50ZXIpIHtcbiAgICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBvbktleVVwKGV2ZW50PzogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaDtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuXG4gICAgY29uc3QgaXNWYWxpZEtleSA9IGtleSAhPT0gUG9LZXlDb2RlRW51bS5hcnJvd1VwICYmIGtleSAhPT0gUG9LZXlDb2RlRW51bS5hcnJvd0Rvd24gJiYga2V5ICE9PSBQb0tleUNvZGVFbnVtLmVudGVyO1xuXG4gICAgaWYgKGlzVmFsaWRLZXkpIHtcbiAgICAgIGlmIChpbnB1dFZhbHVlKSB7XG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlICYmIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSAhPT0gaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2hvdWxkTWFya0xldHRlcnMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2VhcmNoRm9yTGFiZWwoaW5wdXRWYWx1ZSwgdGhpcy5jb21ib09wdGlvbnNMaXN0LCB0aGlzLmZpbHRlck1vZGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBxdWFuZG8gYXBhZ2FyIHJhcGlkbyBvIGNhbXBvIGUgY29udGVyIHNlcnZpw6dvLCB2YWxvciwgbsOjbyBkaXNwYXJhdmEgbyBrZXl1cCBvYnNlcnZhYmxlXG4gICAgICAgIC8vIG5lY2Vzc2FyaW8gZXN0ZSB0cmF0YW1lbnRvIHBhcmEgcmV0b3JuYXIgYSBsaXN0YSAnZGVmYXVsdCcuXG4gICAgICAgIGNvbnN0IHVzZURlZmF1bHRPcHRpb25zU2VydmljZSA9XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZSAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uLmxhYmVsID09PSB0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWU7XG5cbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG51bGwpO1xuXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1c2VEZWZhdWx0T3B0aW9uc1NlcnZpY2UpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdChbLi4udGhpcy5jYWNoZU9wdGlvbnNdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gY2FzbyBvIHZhbG9yIHBlc3F1aXNhZG8gZm9yIGRpZmVyZW50ZSBkbyBhbnRlcmlvciBkZXZlIGFicmlyIG8gY29tYm9cbiAgICAgIGlmICh0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWUgIT09IGlucHV0VmFsdWUpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9IGlucHV0VmFsdWU7XG4gIH1cblxuICBpbml0SW5wdXRPYnNlcnZhYmxlKCkge1xuICAgIGlmICh0aGlzLnNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IGtleXVwT2JzZXJ2YWJsZSA9IGZyb21FdmVudCh0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudCwgJ2tleXVwJykucGlwZShcbiAgICAgICAgZmlsdGVyKChlOiBhbnkpID0+IHRoaXMuaXNWYWxpZENoYXJhY3RlclRvU2VhcmNoKGUua2V5Q29kZSkpLFxuICAgICAgICBtYXAoKGU6IGFueSkgPT4gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3VsZE1hcmtMZXR0ZXJzID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmtleXVwU3Vic2NyaWJlID0ga2V5dXBPYnNlcnZhYmxlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPj0gdGhpcy5maWx0ZXJNaW5sZW5ndGggfHwgIXZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5jb250cm9sQXBwbHlGaWx0ZXIodmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb250cm9sQXBwbHlGaWx0ZXIodmFsdWUpIHtcbiAgICBpZiAoIXRoaXMuaXNQcm9jZXNzaW5nVmFsdWVCeVRhYiAmJiAoIXRoaXMuc2VsZWN0ZWRPcHRpb24gfHwgdmFsdWUgIT09IHRoaXMuc2VsZWN0ZWRPcHRpb24ubGFiZWwpKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVyKHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5pc1Byb2Nlc3NpbmdWYWx1ZUJ5VGFiID0gZmFsc2U7XG4gIH1cblxuICBhcHBseUZpbHRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KGZhbHNlKTtcbiAgICB0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IHBhcmFtID0geyBwcm9wZXJ0eTogdGhpcy5maWVsZExhYmVsLCB2YWx1ZSB9O1xuXG4gICAgdGhpcy5maWx0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnNlcnZpY2UuZ2V0RmlsdGVyZWREYXRhKHBhcmFtLCB0aGlzLmZpbHRlclBhcmFtcykuc3Vic2NyaWJlKFxuICAgICAgaXRlbXMgPT4gdGhpcy5zZXRPcHRpb25zQnlBcHBseUZpbHRlcih2YWx1ZSwgaXRlbXMpLFxuICAgICAgZXJyb3IgPT4gdGhpcy5vbkVycm9yRmlsdGVyZWREYXRhKClcbiAgICApO1xuICB9XG5cbiAgc2V0T3B0aW9uc0J5QXBwbHlGaWx0ZXIodmFsdWUsIGl0ZW1zKSB7XG4gICAgdGhpcy5zaG91bGRNYXJrTGV0dGVycyA9IHRydWU7XG4gICAgdGhpcy5pc1NlcnZlclNlYXJjaGluZyA9IGZhbHNlO1xuICAgIHRoaXMub3B0aW9ucyA9IGl0ZW1zO1xuXG4gICAgdGhpcy5zZWFyY2hGb3JMYWJlbCh2YWx1ZSwgaXRlbXMsIHRoaXMuZmlsdGVyTW9kZSk7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eSh0cnVlKTtcblxuICAgIGlmICh0aGlzLmlzRmlyc3RGaWx0ZXIpIHtcbiAgICAgIHRoaXMuaXNGaXJzdEZpbHRlciA9ICF0aGlzLmlzRmlyc3RGaWx0ZXI7XG5cbiAgICAgIHRoaXMuY2FjaGVPcHRpb25zID0gdGhpcy5jb21ib09wdGlvbnNMaXN0O1xuICAgIH1cbiAgfVxuXG4gIGdldE9iamVjdEJ5VmFsdWUodmFsdWUpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlICE9PSB2YWx1ZSAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uPy5sYWJlbCAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nVmFsdWVCeVRhYiA9IHRydWU7XG5cbiAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uID0gdGhpcy5zZXJ2aWNlLmdldE9iamVjdEJ5VmFsdWUodmFsdWUsIHRoaXMuZmlsdGVyUGFyYW1zKS5zdWJzY3JpYmUoXG4gICAgICAgIGl0ZW0gPT4gdGhpcy51cGRhdGVPcHRpb25CeUZpbHRlcmVkVmFsdWUoaXRlbSksXG4gICAgICAgIGVycm9yID0+IHRoaXMub25FcnJvckdldE9iamVjdEJ5VmFsdWUoKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVPcHRpb25CeUZpbHRlcmVkVmFsdWUoaXRlbSkge1xuICAgIGlmIChpdGVtKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbaXRlbV07XG4gICAgICB0aGlzLm9uT3B0aW9uQ2xpY2soaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShudWxsKTtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nVmFsdWVCeVRhYiA9IGZhbHNlO1xuICAgIH0sIHRoaXMuZGVib3VuY2VUaW1lKTtcbiAgfVxuXG4gIHNlbGVjdFByZXZpb3VzT3B0aW9uKCkge1xuICAgIGNvbnN0IGN1cnJlbnRWaWV3VmFsdWUgPSB0aGlzLnNlbGVjdGVkVmlldyAmJiB0aGlzLnNlbGVjdGVkVmlldy52YWx1ZTtcblxuICAgIGlmIChjdXJyZW50Vmlld1ZhbHVlKSB7XG4gICAgICBjb25zdCBuZXh0T3B0aW9uID0gdGhpcy5nZXROZXh0T3B0aW9uKGN1cnJlbnRWaWV3VmFsdWUsIHRoaXMudmlzaWJsZU9wdGlvbnMsIHRydWUpO1xuXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUobmV4dE9wdGlvbiwgbmV4dE9wdGlvbiAmJiBuZXh0T3B0aW9uLnZhbHVlICE9PSBjdXJyZW50Vmlld1ZhbHVlICYmICF0aGlzLmNoYW5nZU9uRW50ZXIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy52aXNpYmxlT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHZpc2libGVPcHRpb24gPSB0aGlzLnZpc2libGVPcHRpb25zW3RoaXMudmlzaWJsZU9wdGlvbnMubGVuZ3RoIC0gMV07XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZSh2aXNpYmxlT3B0aW9uLCB2aXNpYmxlT3B0aW9uLnZhbHVlICE9PSBjdXJyZW50Vmlld1ZhbHVlICYmICF0aGlzLmNoYW5nZU9uRW50ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdE5leHRPcHRpb24oKSB7XG4gICAgY29uc3QgY3VycmVudFZpZXdWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWaWV3ICYmIHRoaXMuc2VsZWN0ZWRWaWV3LnZhbHVlO1xuXG4gICAgaWYgKGN1cnJlbnRWaWV3VmFsdWUpIHtcbiAgICAgIGNvbnN0IG5leHRPcHRpb24gPSB0aGlzLmdldE5leHRPcHRpb24oY3VycmVudFZpZXdWYWx1ZSwgdGhpcy52aXNpYmxlT3B0aW9ucyk7XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShuZXh0T3B0aW9uLCBuZXh0T3B0aW9uICYmIG5leHRPcHRpb24udmFsdWUgIT09IGN1cnJlbnRWaWV3VmFsdWUgJiYgIXRoaXMuY2hhbmdlT25FbnRlcik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoYW5nZU9uRW50ZXIgPyAxIDogMDtcblxuICAgICAgY29uc3QgdmlzaWJsZU9wdGlvbiA9IHRoaXMudmlzaWJsZU9wdGlvbnNbaW5kZXhdO1xuXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUodmlzaWJsZU9wdGlvbiwgdmlzaWJsZU9wdGlvbi52YWx1ZSAhPT0gY3VycmVudFZpZXdWYWx1ZSAmJiAhdGhpcy5jaGFuZ2VPbkVudGVyKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVDb21ib1Zpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZXJ2aWNlICYmICF0aGlzLmRpc2FibGVkSW5pdEZpbHRlcikge1xuICAgICAgdGhpcy5hcHBseUZpbHRlckluRmlyc3RDbGljaygpO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eSghdGhpcy5jb21ib09wZW4pO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJJbkZpcnN0Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMuaXNGaXJzdEZpbHRlciAmJiAhdGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVyKCcnKTtcbiAgICB9XG4gIH1cblxuICBjb250cm9sQ29tYm9WaXNpYmlsaXR5KHRvT3BlbjogYm9vbGVhbikge1xuICAgIHRvT3BlbiA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgb25PcHRpb25DbGljayhvcHRpb246IFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXAsIGV2ZW50PzogYW55KSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgpO1xuICAgIGNvbnN0IGlzVXBkYXRlTW9kZWwgPVxuICAgICAgb3B0aW9uLnZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmFsdWUgfHwgISEodGhpcy5zZWxlY3RlZFZpZXcgJiYgaW5wdXRWYWx1ZSAhPT0gdGhpcy5zZWxlY3RlZFZpZXcubGFiZWwpO1xuXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUob3B0aW9uLCBpc1VwZGF0ZU1vZGVsKTtcbiAgICB0aGlzLmNvbnRyb2xDb21ib1Zpc2liaWxpdHkoZmFsc2UpO1xuICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdChbLi4udGhpcy5jYWNoZVN0YXRpY09wdGlvbnNdKTtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmlldy5sYWJlbDtcbiAgfVxuXG4gIHNjcm9sbFRvKGluZGV4KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBvLWNvbWJvLWl0ZW0tc2VsZWN0ZWQnKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSAhc2VsZWN0ZWRJdGVtLmxlbmd0aCB8fCBpbmRleCA8PSAxID8gMCA6IHNlbGVjdGVkSXRlbVswXS5vZmZzZXRUb3AgLSA4ODtcblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gIH1cblxuICBnZXRJbnB1dFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIHNldElucHV0VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICB3YXNDbGlja2VkT25Ub2dnbGUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbWJvT3BlbiAmJlxuICAgICAgIXRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLmljb25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgKCF0aGlzLmNvbnRlbnRFbGVtZW50IHx8ICF0aGlzLmNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICApIHtcbiAgICAgIC8vIEVzY29uZGUgQ29udGVudCBkbyBDb21ibyBxdWFuZG8gZm9yIGNsaWNhZG8gZm9yYVxuICAgICAgdGhpcy5jb250cm9sQ29tYm9WaXNpYmlsaXR5KGZhbHNlKTtcblxuICAgICAgdGhpcy52ZXJpZnlWYWxpZE9wdGlvbigpO1xuXG4gICAgICAvLyBjYXNvIGZvciBjaGFuZ2VPbkVudGVyIGRldmUgbGltcGFyIG8gc2VsZWN0ZWRWaWV3IHBhcmEgcmVpbmljaWEtbG9cbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdGhpcy5jaGFuZ2VPbkVudGVyICYmICF0aGlzLnNlbGVjdGVkVmFsdWUgPyB1bmRlZmluZWQgOiB0aGlzLnNlbGVjdGVkVmlldztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2VydmljZSAmJiAhdGhpcy5nZXRJbnB1dFZhbHVlKCkgJiYgIXRoaXMuaXNGaXJzdEZpbHRlcikge1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVyKCcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRMYWJlbEZvcm1hdHRlZChsYWJlbDogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIGNvbnN0IHNhbml0aXplZExhYmVsID0gdGhpcy5zYW5pdGl6ZVRhZ0hUTUwobGFiZWwpO1xuICAgIGxldCBmb3JtYXQ6IHN0cmluZyA9IHNhbml0aXplZExhYmVsO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5pc0ZpbHRlcmluZyB8fFxuICAgICAgKHRoaXMuc2VydmljZSAmJlxuICAgICAgICB0aGlzLmdldElucHV0VmFsdWUoKSAmJlxuICAgICAgICAhdGhpcy5jb21wYXJlT2JqZWN0cyh0aGlzLmNhY2hlT3B0aW9ucywgdGhpcy52aXNpYmxlT3B0aW9ucykgJiZcbiAgICAgICAgdGhpcy5zaG91bGRNYXJrTGV0dGVycylcbiAgICApIHtcbiAgICAgIGNvbnN0IGxhYmVsSW5wdXQgPSB0aGlzLnNhbml0aXplVGFnSFRNTCh0aGlzLmdldElucHV0VmFsdWUoKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgY29uc3QgbGFiZWxMb3dlckNhc2UgPSBzYW5pdGl6ZWRMYWJlbC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBjb25zdCBvcGVuVGFnQm9sZCA9ICc8c3BhbiBjbGFzcz1cInBvLWZvbnQtdGV4dC1sYXJnZS1ib2xkXCI+JztcbiAgICAgIGNvbnN0IGNsb3NlVGFnQm9sZCA9ICc8L3NwYW4+JztcblxuICAgICAgbGV0IHN0YXJ0U3RyaW5nO1xuICAgICAgbGV0IG1pZGRsZVN0cmluZztcbiAgICAgIGxldCBlbmRTdHJpbmc7XG5cbiAgICAgIHN3aXRjaCAodGhpcy5maWx0ZXJNb2RlKSB7XG4gICAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuc3RhcnRzV2l0aDpcbiAgICAgICAgY2FzZSBQb0NvbWJvRmlsdGVyTW9kZS5jb250YWluczpcbiAgICAgICAgICBjb25zdCBpbmRleE9mTGFiZWxJbnB1dCA9IGxhYmVsTG93ZXJDYXNlLmluZGV4T2YobGFiZWxJbnB1dCk7XG5cbiAgICAgICAgICBpZiAoaW5kZXhPZkxhYmVsSW5wdXQgPiAtMSkge1xuICAgICAgICAgICAgc3RhcnRTdHJpbmcgPSBzYW5pdGl6ZWRMYWJlbC5zdWJzdHJpbmcoMCwgaW5kZXhPZkxhYmVsSW5wdXQpO1xuXG4gICAgICAgICAgICBtaWRkbGVTdHJpbmcgPSBzYW5pdGl6ZWRMYWJlbC5zdWJzdHJpbmcoaW5kZXhPZkxhYmVsSW5wdXQsIGluZGV4T2ZMYWJlbElucHV0ICsgbGFiZWxJbnB1dC5sZW5ndGgpO1xuICAgICAgICAgICAgZW5kU3RyaW5nID0gc2FuaXRpemVkTGFiZWwuc3Vic3RyaW5nKGluZGV4T2ZMYWJlbElucHV0ICsgbGFiZWxJbnB1dC5sZW5ndGgpO1xuXG4gICAgICAgICAgICBmb3JtYXQgPSBzdGFydFN0cmluZyArIG9wZW5UYWdCb2xkICsgbWlkZGxlU3RyaW5nICsgY2xvc2VUYWdCb2xkICsgZW5kU3RyaW5nO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFBvQ29tYm9GaWx0ZXJNb2RlLmVuZHNXaXRoOlxuICAgICAgICAgIGNvbnN0IGxhc3RJbmRleE9mTGFiZWxJbnB1dCA9IGxhYmVsTG93ZXJDYXNlLmxhc3RJbmRleE9mKGxhYmVsSW5wdXQpO1xuXG4gICAgICAgICAgaWYgKGxhc3RJbmRleE9mTGFiZWxJbnB1dCA+IC0xKSB7XG4gICAgICAgICAgICBzdGFydFN0cmluZyA9IHNhbml0aXplZExhYmVsLnN1YnN0cmluZygwLCBsYXN0SW5kZXhPZkxhYmVsSW5wdXQpO1xuICAgICAgICAgICAgbWlkZGxlU3RyaW5nID0gc2FuaXRpemVkTGFiZWwuc3Vic3RyaW5nKGxhc3RJbmRleE9mTGFiZWxJbnB1dCk7XG5cbiAgICAgICAgICAgIGZvcm1hdCA9IHN0YXJ0U3RyaW5nICsgb3BlblRhZ0JvbGQgKyBtaWRkbGVTdHJpbmcgKyBjbG9zZVRhZ0JvbGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNhZmVIdG1sKGZvcm1hdCk7XG4gIH1cblxuICBzYWZlSHRtbCh2YWx1ZSk6IFNhZmVIdG1sIHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZWQuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodmFsdWUpO1xuICB9XG5cbiAgaXNWYWxpZENoYXJhY3RlclRvU2VhcmNoKGtleUNvZGUpIHtcbiAgICByZXR1cm4gKFxuICAgICAga2V5Q29kZSAhPT0gOSAmJiAvLyB0YWJcbiAgICAgIGtleUNvZGUgIT09IDEzICYmIC8vIGVudGV0XG4gICAgICBrZXlDb2RlICE9PSAxNiAmJiAvLyBzaGlmdFxuICAgICAga2V5Q29kZSAhPT0gMTcgJiYgLy8gY3RybFxuICAgICAga2V5Q29kZSAhPT0gMTggJiYgLy8gYWx0XG4gICAgICBrZXlDb2RlICE9PSAyMCAmJiAvLyBjYXBzbG9ja1xuICAgICAga2V5Q29kZSAhPT0gMjcgJiYgLy8gZXNjXG4gICAgICBrZXlDb2RlICE9PSAzNyAmJiAvLyBzZXRhXG4gICAgICBrZXlDb2RlICE9PSAzOCAmJiAvLyBzZXRhXG4gICAgICBrZXlDb2RlICE9PSAzOSAmJiAvLyBzZXRhXG4gICAgICBrZXlDb2RlICE9PSA0MCAmJiAvLyBzZXRhXG4gICAgICBrZXlDb2RlICE9PSA5M1xuICAgICk7IC8vIHdpbmRvd3MgbWVudVxuICB9XG5cbiAgc2VhcmNoT25FbnRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc2VydmljZSAmJiAhdGhpcy5zZWxlY3RlZFZpZXcgJiYgdmFsdWUubGVuZ3RoID49IHRoaXMuZmlsdGVyTWlubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNvbnRyb2xBcHBseUZpbHRlcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RDb250YWluZXJQb3NpdGlvbigpIHtcbiAgICB0aGlzLmNvbnRyb2xQb3NpdGlvbi5hZGp1c3RQb3NpdGlvbihwb0NvbWJvQ29udGFpbmVyUG9zaXRpb25EZWZhdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKSB7XG4gICAgdGhpcy5jb21ib09wZW4gPSBmYWxzZTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5jb21ib0ljb24gPSAncG8taWNvbi1hcnJvdy1kb3duJztcblxuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLmlzRmlsdGVyaW5nID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuY2xpY2tvdXRMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgdGhpcy53YXNDbGlja2VkT25Ub2dnbGUoZXZlbnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoKSA9PiB7XG4gICAgICAvLyB0aW1lb3V0IG5lY2Vzc2FyaW8gcG9pcyBhIGFuaW1hw6fDo28gZG8gcG8tbWVudSBpbXBhY3RhIG5vIGFqdXN0ZSBkYSBwb3Npw6fDo28gZG8gY29udGFpbmVyLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFkanVzdENvbnRhaW5lclBvc2l0aW9uKCksIDI1MCk7XG4gICAgfSk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uRXJyb3JHZXRPYmplY3RCeVZhbHVlKCkge1xuICAgIHRoaXMudXBkYXRlT3B0aW9uQnlGaWx0ZXJlZFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkVycm9yRmlsdGVyZWREYXRhKCkge1xuICAgIHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFtdKTtcblxuICAgIHRoaXMuY29udHJvbENvbWJvVmlzaWJpbGl0eSh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5hZGp1c3RDb250YWluZXJQb3NpdGlvbigpO1xuICB9O1xuXG4gIHByaXZhdGUgb3BlbigpIHtcbiAgICB0aGlzLmNvbWJvT3BlbiA9IHRydWU7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMuY29tYm9JY29uID0gJ3BvLWljb24tYXJyb3ctdXAnO1xuXG4gICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMuc2Nyb2xsVG8odGhpcy5nZXRJbmRleFNlbGVjdGVkVmlldygpKTtcblxuICAgIHRoaXMuc2V0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTGlzdGVuZXJzKCkge1xuICAgIGlmICh0aGlzLmNsaWNrb3V0TGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2xpY2tvdXRMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV2ZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZXZlbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FuaXRpemVUYWdIVE1MKHZhbHVlOiBzdHJpbmcgPSAnJykge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXDwvZ20sICcmbHQ7JykucmVwbGFjZSgvXFw+L2csICcmZ3Q7Jyk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRhaW5lclBvc2l0aW9uKCkge1xuICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLnNldEVsZW1lbnRzKFxuICAgICAgdGhpcy5jb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICBwb0NvbWJvQ29udGFpbmVyT2Zmc2V0LFxuICAgICAgdGhpcy5pbnB1dEVsLFxuICAgICAgWyd0b3AnLCAnYm90dG9tJ10sXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIHRoaXMuYWRqdXN0Q29udGFpbmVyUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29udGVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgfVxuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyIFtwLWxhYmVsXT1cImxhYmVsXCIgW3AtaGVscF09XCJoZWxwXCIgW3Atb3B0aW9uYWxdPVwiIXJlcXVpcmVkICYmIG9wdGlvbmFsXCI+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1sZWZ0XCI+XG4gICAgICA8cG8taWNvbiBjbGFzcz1cInBvLWZpZWxkLWljb25cIiBbY2xhc3MucG8tZmllbGQtaWNvbi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtwLWljb25dPVwiaWNvblwiPjwvcG8taWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxpbnB1dFxuICAgICAgI2lucFxuICAgICAgY2xhc3M9XCJwby1pbnB1dCBwby1jb21iby1pbnB1dFwiXG4gICAgICBbbmdDbGFzc109XCJjbGVhbiAmJiBpbnAudmFsdWUgPyAncG8taW5wdXQtZG91YmxlLWljb24tcmlnaHQnIDogJ3BvLWlucHV0LWljb24tcmlnaHQnXCJcbiAgICAgIFtjbGFzcy5wby1pbnB1dC1pY29uLWxlZnRdPVwiaWNvblwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVDb21ib1Zpc2liaWxpdHkoKVwiXG4gICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJzZWFyY2hPbkVudGVyKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICA8cG8tY2xlYW4gKm5nSWY9XCJjbGVhbiAmJiAhZGlzYWJsZWRcIiAocC1jaGFuZ2UtZXZlbnQpPVwiY2xlYXIoJGV2ZW50KVwiIFtwLWVsZW1lbnQtcmVmXT1cImlucHV0RWxcIj4gPC9wby1jbGVhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgICNpY29uQXJyb3dcbiAgICAgICAgY2xhc3M9XCJwby1pY29uIHBvLWZpZWxkLWljb24ge3sgY29tYm9JY29uIH19XCJcbiAgICAgICAgW2NsYXNzLnBvLWZpZWxkLWljb24tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MucG8tZmllbGQtaWNvbl09XCIhZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29tYm9WaXNpYmlsaXR5KClcIlxuICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICNjb250YWluZXJFbGVtZW50IGNsYXNzPVwicG8tY29tYm8tY29udGFpbmVyXCIgW2hpZGRlbl09XCIhY29tYm9PcGVuICYmICFpc1NlcnZlclNlYXJjaGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlcnZlclNlYXJjaGluZzsgdGhlbiBsb2FkaW5nVGVtcGxhdGU7IGVsc2Ugb3B0aW9uc1RlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT48L3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20+XG48L3BvLWZpZWxkLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJwby1jb21iby1jb250YWluZXItbG9hZGluZ1wiPlxuICAgIDxwby1sb2FkaW5nPjwvcG8tbG9hZGluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI29wdGlvbnNUZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpc2libGVPcHRpb25zLmxlbmd0aDsgdGhlbiB2aXNpYmxlT3B0aW9uc1RlbXBsYXRlOyBlbHNlIG5vRGF0YVRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN2aXNpYmxlT3B0aW9uc1RlbXBsYXRlPlxuICA8dWwgI2NvbnRlbnRFbGVtZW50IGNsYXNzPVwicG8tY29tYm8tY29udGFpbmVyLWNvbnRlbnRcIj5cbiAgICA8bGlcbiAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnNcIlxuICAgICAgW2NsYXNzLnBvLWNvbWJvLWl0ZW0tc2VsZWN0ZWRdPVwiY29tcGFyZU9iamVjdHMoc2VsZWN0ZWRWaWV3LCBvcHRpb24pXCJcbiAgICAgIChjbGljayk9XCJvcHRpb24/Lm9wdGlvbnMgPyB1bmRlZmluZWQgOiBvbk9wdGlvbkNsaWNrKG9wdGlvbiwgJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvT3B0aW9uVGVtcGxhdGU7IHRoZW4gb3B0aW9uVGVtcGxhdGU7IGVsc2UgZGVmYXVsdE9wdGlvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE9wdGlvblRlbXBsYXRlPlxuICAgICAgICA8bGFiZWwgKm5nSWY9XCJvcHRpb24/Lm9wdGlvbnM7IGVsc2Ugb3B0aW9uTGlua1wiIGNsYXNzPVwicG8tY29tYm8taXRlbS10aXRsZVwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uTGluaz5cbiAgICAgICAgICA8YSBjbGFzcz1cInBvLWNvbWJvLWl0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmVcIiBbaW5uZXJIVE1MXT1cImdldExhYmVsRm9ybWF0dGVkKG9wdGlvbj8ubGFiZWwpXCI+PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uVGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wdGlvbkdyb3VwTGlzdDsgdGhlbiBvcHRpb25zR3JvdXBUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0T3B0aW9uc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNvcHRpb25zR3JvdXBUZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbWJvT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uLCBzZWxlY3RlZDogY29tcGFyZU9iamVjdHMoc2VsZWN0ZWRWaWV3LCBvcHRpb24pIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE9wdGlvbnNUZW1wbGF0ZT5cbiAgICAgICAgICA8YSBjbGFzcz1cInBvLWNvbWJvLWl0ZW1cIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb21ib09wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vRGF0YVRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwicG8tY29tYm8tY29udGFpbmVyLW5vLWRhdGFcIj5cbiAgICA8ZGl2IGNsYXNzPVwicG8tY29tYm8tbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgPHNwYW4+XG4gICAgICAgIHt7IGxpdGVyYWxzLm5vRGF0YSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -21,8 +21,10 @@ function PoRichTextToolbarComponent_div_4_Template(rf, ctx) { if (rf & 1) {
21
21
  const ctx_r1 = i0.ɵɵnextContext();
22
22
  i0.ɵɵadvance(2);
23
23
  i0.ɵɵproperty("disabled", ctx_r1.readonly)("p-tooltip", ctx_r1.literals.textColor);
24
+ i0.ɵɵattribute("aria-label", ctx_r1.literals.textColor);
24
25
  i0.ɵɵadvance(1);
25
26
  i0.ɵɵproperty("disabled", ctx_r1.readonly);
27
+ i0.ɵɵattribute("aria-label", ctx_r1.literals.textColor);
26
28
  } }
27
29
  const poRichTextDefaultColor = '#000000';
28
30
  export class PoRichTextToolbarComponent {
@@ -182,7 +184,7 @@ PoRichTextToolbarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
182
184
  i0.ɵɵelementStart(0, "div", 0, 1)(2, "div", 2);
183
185
  i0.ɵɵelement(3, "po-button-group", 3);
184
186
  i0.ɵɵelementEnd();
185
- i0.ɵɵtemplate(4, PoRichTextToolbarComponent_div_4_Template, 5, 3, "div", 4);
187
+ i0.ɵɵtemplate(4, PoRichTextToolbarComponent_div_4_Template, 5, 5, "div", 4);
186
188
  i0.ɵɵelementStart(5, "div", 2);
187
189
  i0.ɵɵelement(6, "po-button-group", 5);
188
190
  i0.ɵɵelementEnd();
@@ -217,7 +219,7 @@ PoRichTextToolbarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
217
219
  } }, directives: [i2.PoButtonGroupComponent, i3.NgIf, i4.PoTooltipDirective, i5.PoRichTextImageModalComponent, i6.PoRichTextLinkModalComponent], encapsulation: 2 });
218
220
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoRichTextToolbarComponent, [{
219
221
  type: Component,
220
- args: [{ selector: 'po-rich-text-toolbar', template: "<div class=\"po-rich-text-toolbar\" #toolbarElement>\n <div class=\"po-rich-text-toolbar-button-align\">\n <po-button-group p-toggle=\"multiple\" [p-buttons]=\"formatButtons\"> </po-button-group>\n </div>\n\n <div *ngIf=\"!isInternetExplorer\" class=\"po-rich-text-toolbar-button-align\">\n <div class=\"po-rich-text-toolbar-color-picker-container\">\n <button\n class=\"po-button po-text-ellipsis po-rich-text-toolbar-color-picker-button\"\n [disabled]=\"readonly\"\n [p-tooltip]=\"literals.textColor\"\n >\n <input\n #colorPickerInput\n class=\"po-rich-text-toolbar-color-picker-input\"\n type=\"color\"\n [disabled]=\"readonly\"\n (change)=\"changeTextColor($event.target.value)\"\n />\n </button>\n </div>\n </div>\n\n <div class=\"po-rich-text-toolbar-button-align\">\n <po-button-group p-toggle=\"single\" [p-buttons]=\"alignButtons\"> </po-button-group>\n </div>\n\n <div class=\"po-rich-text-toolbar-button-align\">\n <po-button-group p-toggle=\"single\" [p-buttons]=\"listButtons\"> </po-button-group>\n </div>\n\n <div class=\"po-rich-text-toolbar-button-align\">\n <po-button-group [p-buttons]=\"linkButtons\"> </po-button-group>\n </div>\n\n <div class=\"po-rich-text-toolbar-button-align\">\n <po-button-group [p-buttons]=\"mediaButtons\"> </po-button-group>\n </div>\n</div>\n\n<po-rich-text-image-modal #richTextImageModal (p-command)=\"emitCommand($event)\"> </po-rich-text-image-modal>\n\n<po-rich-text-link-modal\n #richTextLinkModal\n (p-command)=\"emitCommand($event)\"\n (p-link-editing)=\"emitLinkEditing($event)\"\n>\n</po-rich-text-link-modal>\n" }]
222
+ args: [{ selector: 'po-rich-text-toolbar', template: "<div class=\"po-rich-text-toolbar\" #toolbarElement>\n <div class=\"po-rich-text-toolbar-button-align\">\n <po-button-group p-toggle=\"multiple\" [p-buttons]=\"formatButtons\"> </po-button-group>\n </div>\n\n <div *ngIf=\"!isInternetExplorer\" class=\"po-rich-text-toolbar-button-align\">\n <div class=\"po-rich-text-toolbar-color-picker-container\">\n <button\n class=\"po-button po-text-ellipsis po-rich-text-toolbar-color-picker-button\"\n [disabled]=\"readonly\"\n [p-tooltip]=\"literals.textColor\"\n [attr.aria-label]=\"literals.textColor\"\n >\n <input\n #colorPickerInput\n class=\"po-rich-text-toolbar-color-picker-input\"\n type=\"color\"\n [disabled]=\"readonly\"\n (change)=\"changeTextColor($event.target.value)\"\n [attr.aria-label]=\"literals.textColor\"\n />\n </button>\n </div>\n </div>\n\n <div class=\"po-rich-text-toolbar-button-align\">\n <po-button-group p-toggle=\"single\" [p-buttons]=\"alignButtons\"> </po-button-group>\n </div>\n\n <div class=\"po-rich-text-toolbar-button-align\">\n <po-button-group p-toggle=\"single\" [p-buttons]=\"listButtons\"> </po-button-group>\n </div>\n\n <div class=\"po-rich-text-toolbar-button-align\">\n <po-button-group [p-buttons]=\"linkButtons\"> </po-button-group>\n </div>\n\n <div class=\"po-rich-text-toolbar-button-align\">\n <po-button-group [p-buttons]=\"mediaButtons\"> </po-button-group>\n </div>\n</div>\n\n<po-rich-text-image-modal #richTextImageModal (p-command)=\"emitCommand($event)\"> </po-rich-text-image-modal>\n\n<po-rich-text-link-modal\n #richTextLinkModal\n (p-command)=\"emitCommand($event)\"\n (p-link-editing)=\"emitLinkEditing($event)\"\n>\n</po-rich-text-link-modal>\n" }]
221
223
  }], function () { return [{ type: i1.PoLanguageService }]; }, { colorPickerInput: [{
222
224
  type: ViewChild,
223
225
  args: ['colorPickerInput', { read: ElementRef }]
@@ -243,4 +245,4 @@ PoRichTextToolbarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
243
245
  type: Input,
244
246
  args: ['p-readonly']
245
247
  }] }); })();
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcmljaC10ZXh0LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLXJpY2gtdGV4dC9wby1yaWNoLXRleHQtdG9vbGJhci9wby1yaWNoLXRleHQtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tcmljaC10ZXh0L3BvLXJpY2gtdGV4dC10b29sYmFyL3BvLXJpY2gtdGV4dC10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0csT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTlDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7Ozs7Ozs7SUNKMUcsOEJBQTJFLGNBQUEsaUJBQUEsb0JBQUE7SUFZbkUsOEtBQVUsMkNBQW9DLElBQUM7SUFMakQsaUJBTUUsRUFBQSxFQUFBLEVBQUE7OztJQVRGLGVBQXFCO0lBQXJCLDBDQUFxQix3Q0FBQTtJQU9uQixlQUFxQjtJQUFyQiwwQ0FBcUI7O0FETC9CLE1BQU0sc0JBQXNCLEdBQUcsU0FBUyxDQUFDO0FBTXpDLE1BQU0sT0FBTywwQkFBMEI7SUE4R3JDLFlBQW9CLGVBQWtDO1FBQWxDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtR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QU07bUJBQUMsV0FBVztZQUVBLEtBQUs7a0JBQXZCLE1BQU07bUJBQUMsU0FBUztZQUVTLFdBQVc7a0JBQXBDLE1BQU07bUJBQUMsZ0JBQWdCO1lBb0ZDLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgaXNJRSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUG9CdXR0b25Hcm91cEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9wby1idXR0b24tZ3JvdXAnO1xuaW1wb3J0IHsgcG9SaWNoVGV4dExpdGVyYWxzRGVmYXVsdCB9IGZyb20gJy4uL3BvLXJpY2gtdGV4dC1saXRlcmFscyc7XG5pbXBvcnQgeyBQb1JpY2hUZXh0VG9vbGJhckJ1dHRvbkdyb3VwSXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG8tcmljaC10ZXh0LXRvb2xiYXItYnV0dG9uLWdyb3VwLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUmljaFRleHRJbWFnZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tcmljaC10ZXh0LWltYWdlLW1vZGFsL3BvLXJpY2gtdGV4dC1pbWFnZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9SaWNoVGV4dExpbmtNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3BvLXJpY2gtdGV4dC1saW5rLW1vZGFsL3BvLXJpY2gtdGV4dC1saW5rLW1vZGFsLmNvbXBvbmVudCc7XG5cbmNvbnN0IHBvUmljaFRleHREZWZhdWx0Q29sb3IgPSAnIzAwMDAwMCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLXJpY2gtdGV4dC10b29sYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLXJpY2gtdGV4dC10b29sYmFyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb1JpY2hUZXh0VG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdjb2xvclBpY2tlcklucHV0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbG9yUGlja2VySW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgndG9vbGJhckVsZW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0b29sYmFyRWxlbWVudDogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKFBvUmljaFRleHRJbWFnZU1vZGFsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSByaWNoVGV4dEltYWdlTW9kYWw6IFBvUmljaFRleHRJbWFnZU1vZGFsQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoUG9SaWNoVGV4dExpbmtNb2RhbENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgcmljaFRleHRMaW5rTW9kYWw6IFBvUmljaFRleHRMaW5rTW9kYWxDb21wb25lbnQ7XG5cbiAgQE91dHB1dCgncC1jb21tYW5kJykgY29tbWFuZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgeyBjb21tYW5kOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4oKTtcblxuICBAT3V0cHV0KCdwLW1vZGFsJykgbW9kYWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdwLWxpbmstZWRpdGluZycpIGxpbmtFZGl0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcmVhZG9ubHkgbGl0ZXJhbHMgPSB7XG4gICAgLi4ucG9SaWNoVGV4dExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCldXG4gIH07XG5cbiAgYWxpZ25CdXR0b25zOiBBcnJheTxQb1JpY2hUZXh0VG9vbGJhckJ1dHRvbkdyb3VwSXRlbT4gPSBbXG4gICAge1xuICAgICAgY29tbWFuZDogJ2p1c3RpZnlsZWZ0JyxcbiAgICAgIGljb246ICdwby1pY29uLWFsaWduLWxlZnQnLFxuICAgICAgdG9vbHRpcDogdGhpcy5saXRlcmFscy5sZWZ0LFxuICAgICAgYWN0aW9uOiB0aGlzLmVtaXRBbGlnbkNvbW1hbmQuYmluZCh0aGlzLCAnanVzdGlmeWxlZnQnKSxcbiAgICAgIHNlbGVjdGVkOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBjb21tYW5kOiAnanVzdGlmeWNlbnRlcicsXG4gICAgICBpY29uOiAncG8taWNvbi1hbGlnbi1jZW50ZXInLFxuICAgICAgdG9vbHRpcDogdGhpcy5saXRlcmFscy5jZW50ZXIsXG4gICAgICBhY3Rpb246IHRoaXMuZW1pdEFsaWduQ29tbWFuZC5iaW5kKHRoaXMsICdqdXN0aWZ5Y2VudGVyJylcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvbW1hbmQ6ICdqdXN0aWZ5cmlnaHQnLFxuICAgICAgaWNvbjogJ3BvLWljb24tYWxpZ24tcmlnaHQnLFxuICAgICAgdG9vbHRpcDogdGhpcy5saXRlcmFscy5yaWdodCxcbiAgICAgIGFjdGlvbjogdGhpcy5lbWl0QWxpZ25Db21tYW5kLmJpbmQodGhpcywgJ2p1c3RpZnlyaWdodCcpXG4gICAgfSxcbiAgICB7XG4gICAgICBjb21tYW5kOiAnanVzdGlmeWZ1bGwnLFxuICAgICAgaWNvbjogJ3BvLWljb24tYWxpZ24tanVzdGlmeScsXG4gICAgICB0b29sdGlwOiB0aGlzLmxpdGVyYWxzLmp1c3RpZnksXG4gICAgICBhY3Rpb246IHRoaXMuZW1pdEFsaWduQ29tbWFuZC5iaW5kKHRoaXMsICdqdXN0aWZ5ZnVsbCcpXG4gICAgfVxuICBdO1xuXG4gIGZvcm1hdEJ1dHRvbnM6IEFycmF5PFBvUmljaFRleHRUb29sYmFyQnV0dG9uR3JvdXBJdGVtPiA9IFtcbiAgICB7XG4gICAgICBjb21tYW5kOiAnYm9sZCcsXG4gICAgICBpY29uOiAncG8taWNvbi10ZXh0LWJvbGQnLFxuICAgICAgdG9vbHRpcDogdGhpcy5saXRlcmFscy5ib2xkLFxuICAgICAgYWN0aW9uOiB0aGlzLmVtaXRDb21tYW5kLmJpbmQodGhpcywgJ2JvbGQnKVxuICAgIH0sXG4gICAge1xuICAgICAgY29tbWFuZDogJ2l0YWxpYycsXG4gICAgICBpY29uOiAncG8taWNvbi10ZXh0LWl0YWxpYycsXG4gICAgICB0b29sdGlwOiB0aGlzLmxpdGVyYWxzLml0YWxpYyxcbiAgICAgIGFjdGlvbjogdGhpcy5lbWl0Q29tbWFuZC5iaW5kKHRoaXMsICdpdGFsaWMnKVxuICAgIH0sXG4gICAge1xuICAgICAgY29tbWFuZDogJ3VuZGVybGluZScsXG4gICAgICBpY29uOiAncG8taWNvbi10ZXh0LXVuZGVybGluZScsXG4gICAgICB0b29sdGlwOiB0aGlzLmxpdGVyYWxzLnVuZGVybGluZSxcbiAgICAgIGFjdGlvbjogdGhpcy5lbWl0Q29tbWFuZC5iaW5kKHRoaXMsICd1bmRlcmxpbmUnKVxuICAgIH1cbiAgXTtcblxuICBsaXN0QnV0dG9uczogQXJyYXk8UG9SaWNoVGV4dFRvb2xiYXJCdXR0b25Hcm91cEl0ZW0+ID0gW1xuICAgIHtcbiAgICAgIGNvbW1hbmQ6ICdpbnNlcnRVbm9yZGVyZWRMaXN0JyxcbiAgICAgIGljb246ICdwby1pY29uLWxpc3QnLFxuICAgICAgdG9vbHRpcDogdGhpcy5saXRlcmFscy51bm9yZGVyZWRMaXN0LFxuICAgICAgYWN0aW9uOiB0aGlzLmVtaXRDb21tYW5kLmJpbmQodGhpcywgJ2luc2VydFVub3JkZXJlZExpc3QnKVxuICAgIH1cbiAgXTtcblxuICBsaW5rQnV0dG9uczogQXJyYXk8UG9SaWNoVGV4dFRvb2xiYXJCdXR0b25Hcm91cEl0ZW0+ID0gW1xuICAgIHtcbiAgICAgIGNvbW1hbmQ6ICdDcmVhdGVsaW5rJyxcbiAgICAgIGljb246ICdwby1pY29uLWxpbmsnLFxuICAgICAgdG9vbHRpcDogYCR7dGhpcy5saXRlcmFscy5pbnNlcnRMaW5rfSAoQ3RybCArIEspYCxcbiAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5yaWNoVGV4dExpbmtNb2RhbC5vcGVuTW9kYWwodGhpcy5zZWxlY3RlZExpbmtFbGVtZW50KVxuICAgIH1cbiAgXTtcblxuICBtZWRpYUJ1dHRvbnM6IEFycmF5PFBvQnV0dG9uR3JvdXBJdGVtPiA9IFtcbiAgICB7XG4gICAgICB0b29sdGlwOiB0aGlzLmxpdGVyYWxzLmluc2VydEltYWdlLFxuICAgICAgaWNvbjogJ3BvLWljb24tcGljdHVyZScsXG4gICAgICBhY3Rpb246ICgpID0+IHRoaXMucmljaFRleHRJbWFnZU1vZGFsLm9wZW5Nb2RhbCgpXG4gICAgfVxuICBdO1xuXG4gIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuO1xuICBwcml2YXRlIHNlbGVjdGVkTGlua0VsZW1lbnQ7XG5cbiAgQElucHV0KCdwLXJlYWRvbmx5Jykgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZG9ubHkgPSB2YWx1ZTtcbiAgICB0aGlzLnRvZ2dsZURpc2FibGVCdXR0b25zKHRoaXMuX3JlYWRvbmx5KTtcbiAgfVxuXG4gIGdldCByZWFkb25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gIH1cblxuICBnZXQgaXNJbnRlcm5ldEV4cGxvcmVyKCkge1xuICAgIHJldHVybiBpc0lFKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucmVtb3ZlQnV0dG9uRm9jdXMoKTtcbiAgICB0aGlzLnNldENvbG9ySW5Db2xvclBpY2tlcihwb1JpY2hUZXh0RGVmYXVsdENvbG9yKTtcbiAgfVxuXG4gIGNoYW5nZVRleHRDb2xvcih2YWx1ZSkge1xuICAgIGNvbnN0IGNvbW1hbmQgPSAnZm9yZUNvbG9yJztcblxuICAgIHRoaXMuY29tbWFuZC5lbWl0KHsgY29tbWFuZCwgdmFsdWUgfSk7XG4gIH1cblxuICBlbWl0TGlua0VkaXRpbmcoaXNMaW5rRWRpdDogYm9vbGVhbikge1xuICAgIHRoaXMubGlua0VkaXRpbmcuZW1pdChpc0xpbmtFZGl0KTtcbiAgfVxuXG4gIHNlbGVjdGVkTGluayhzZWxlY3RlZExpbmtFbGVtZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZExpbmtFbGVtZW50ID0gc2VsZWN0ZWRMaW5rRWxlbWVudDtcbiAgfVxuXG4gIHNldEJ1dHRvbnNTdGF0ZXMob2JqOiB7IGNvbW1hbmRzOiBBcnJheTxzdHJpbmc+OyBoZXhDb2xvcjogc3RyaW5nIH0pIHtcbiAgICBpZiAoIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMuYWxpZ25CdXR0b25zLmZvckVhY2goYnV0dG9uID0+IChidXR0b24uc2VsZWN0ZWQgPSBvYmouY29tbWFuZHMuaW5jbHVkZXMoYnV0dG9uLmNvbW1hbmQpKSk7XG4gICAgICB0aGlzLmZvcm1hdEJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gKGJ1dHRvbi5zZWxlY3RlZCA9IG9iai5jb21tYW5kcy5pbmNsdWRlcyhidXR0b24uY29tbWFuZCkpKTtcbiAgICAgIHRoaXMubGlzdEJ1dHRvbnNbMF0uc2VsZWN0ZWQgPSBvYmouY29tbWFuZHMuaW5jbHVkZXModGhpcy5saXN0QnV0dG9uc1swXS5jb21tYW5kKTtcbiAgICAgIHRoaXMubGlua0J1dHRvbnNbMF0uc2VsZWN0ZWQgPSBvYmouY29tbWFuZHMuaW5jbHVkZXModGhpcy5saW5rQnV0dG9uc1swXS5jb21tYW5kKTtcbiAgICAgIHRoaXMuc2V0Q29sb3JJbkNvbG9yUGlja2VyKG9iai5oZXhDb2xvcik7XG4gICAgfVxuICB9XG5cbiAgc2hvcnRjdXRUcmlnZ2VyKCkge1xuICAgIHRoaXMucmljaFRleHRMaW5rTW9kYWwub3Blbk1vZGFsKHRoaXMuc2VsZWN0ZWRMaW5rRWxlbWVudCk7XG4gIH1cblxuICBlbWl0Q29tbWFuZChjb21tYW5kOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbW1hbmQuZW1pdChjb21tYW5kKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEFsaWduQ29tbWFuZChjb21tYW5kOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWxpZ25CdXR0b25zLmZpbmRJbmRleChidG4gPT4gYnRuLmNvbW1hbmQgPT09IGNvbW1hbmQpO1xuXG4gICAgaWYgKHRoaXMuYWxpZ25CdXR0b25zW2luZGV4XS5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5hbGlnbkJ1dHRvbnNbaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5jb21tYW5kLmVtaXQoY29tbWFuZCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUJ1dHRvbkZvY3VzKCkge1xuICAgIGNvbnN0IGJ1dHRvbnMgPSB0aGlzLnRvb2xiYXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uJyk7XG5cbiAgICBidXR0b25zLmZvckVhY2goYnV0dG9uID0+IGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb2xvckluQ29sb3JQaWNrZXIoY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY29sb3JQaWNrZXJJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gY29sb3I7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZURpc2FibGVCdXR0b25zKHN0YXRlOiBib29sZWFuKSB7XG4gICAgdGhpcy5hbGlnbkJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gKGJ1dHRvbi5kaXNhYmxlZCA9IHN0YXRlKSk7XG4gICAgdGhpcy5mb3JtYXRCdXR0b25zLmZvckVhY2goYnV0dG9uID0+IChidXR0b24uZGlzYWJsZWQgPSBzdGF0ZSkpO1xuICAgIHRoaXMubGlzdEJ1dHRvbnNbMF0uZGlzYWJsZWQgPSBzdGF0ZTtcbiAgICB0aGlzLmxpbmtCdXR0b25zWzBdLmRpc2FibGVkID0gc3RhdGU7XG4gICAgdGhpcy5tZWRpYUJ1dHRvbnNbMF0uZGlzYWJsZWQgPSBzdGF0ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXJpY2gtdGV4dC10b29sYmFyXCIgI3Rvb2xiYXJFbGVtZW50PlxuICA8ZGl2IGNsYXNzPVwicG8tcmljaC10ZXh0LXRvb2xiYXItYnV0dG9uLWFsaWduXCI+XG4gICAgPHBvLWJ1dHRvbi1ncm91cCBwLXRvZ2dsZT1cIm11bHRpcGxlXCIgW3AtYnV0dG9uc109XCJmb3JtYXRCdXR0b25zXCI+IDwvcG8tYnV0dG9uLWdyb3VwPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiIWlzSW50ZXJuZXRFeHBsb3JlclwiIGNsYXNzPVwicG8tcmljaC10ZXh0LXRvb2xiYXItYnV0dG9uLWFsaWduXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvLXJpY2gtdGV4dC10b29sYmFyLWNvbG9yLXBpY2tlci1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJwby1idXR0b24gcG8tdGV4dC1lbGxpcHNpcyBwby1yaWNoLXRleHQtdG9vbGJhci1jb2xvci1waWNrZXItYnV0dG9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAgICAgW3AtdG9vbHRpcF09XCJsaXRlcmFscy50ZXh0Q29sb3JcIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjY29sb3JQaWNrZXJJbnB1dFxuICAgICAgICAgIGNsYXNzPVwicG8tcmljaC10ZXh0LXRvb2xiYXItY29sb3ItcGlja2VyLWlucHV0XCJcbiAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUZXh0Q29sb3IoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwby1yaWNoLXRleHQtdG9vbGJhci1idXR0b24tYWxpZ25cIj5cbiAgICA8cG8tYnV0dG9uLWdyb3VwIHAtdG9nZ2xlPVwic2luZ2xlXCIgW3AtYnV0dG9uc109XCJhbGlnbkJ1dHRvbnNcIj4gPC9wby1idXR0b24tZ3JvdXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwby1yaWNoLXRleHQtdG9vbGJhci1idXR0b24tYWxpZ25cIj5cbiAgICA8cG8tYnV0dG9uLWdyb3VwIHAtdG9nZ2xlPVwic2luZ2xlXCIgW3AtYnV0dG9uc109XCJsaXN0QnV0dG9uc1wiPiA8L3BvLWJ1dHRvbi1ncm91cD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLXJpY2gtdGV4dC10b29sYmFyLWJ1dHRvbi1hbGlnblwiPlxuICAgIDxwby1idXR0b24tZ3JvdXAgW3AtYnV0dG9uc109XCJsaW5rQnV0dG9uc1wiPiA8L3BvLWJ1dHRvbi1ncm91cD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLXJpY2gtdGV4dC10b29sYmFyLWJ1dHRvbi1hbGlnblwiPlxuICAgIDxwby1idXR0b24tZ3JvdXAgW3AtYnV0dG9uc109XCJtZWRpYUJ1dHRvbnNcIj4gPC9wby1idXR0b24tZ3JvdXA+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxwby1yaWNoLXRleHQtaW1hZ2UtbW9kYWwgI3JpY2hUZXh0SW1hZ2VNb2RhbCAocC1jb21tYW5kKT1cImVtaXRDb21tYW5kKCRldmVudClcIj4gPC9wby1yaWNoLXRleHQtaW1hZ2UtbW9kYWw+XG5cbjxwby1yaWNoLXRleHQtbGluay1tb2RhbFxuICAjcmljaFRleHRMaW5rTW9kYWxcbiAgKHAtY29tbWFuZCk9XCJlbWl0Q29tbWFuZCgkZXZlbnQpXCJcbiAgKHAtbGluay1lZGl0aW5nKT1cImVtaXRMaW5rRWRpdGluZygkZXZlbnQpXCJcbj5cbjwvcG8tcmljaC10ZXh0LWxpbmstbW9kYWw+XG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcmljaC10ZXh0LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLXJpY2gtdGV4dC9wby1yaWNoLXRleHQtdG9vbGJhci9wby1yaWNoLXRleHQtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tcmljaC10ZXh0L3BvLXJpY2gtdGV4dC10b29sYmFyL3BvLXJpY2gtdGV4dC10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0csT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTlDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7Ozs7Ozs7SUNKMUcsOEJBQTJFLGNBQUEsaUJBQUEsb0JBQUE7SUFhbkUsOEtBQVUsMkNBQW9DLElBQUM7SUFMakQsaUJBT0UsRUFBQSxFQUFBLEVBQUE7OztJQVhGLGVBQXFCO0lBQXJCLDBDQUFxQix3Q0FBQTtJQUVyQix1REFBc0M7SUFNcEMsZUFBcUI7SUFBckIsMENBQXFCO0lBRXJCLHVEQUFzQzs7QURSaEQsTUFBTSxzQkFBc0IsR0FBRyxTQUFTLENBQUM7QUFNekMsTUFBTSxPQUFPLDBCQUEwQjtJQThHckMsWUFBb0IsZUFBa0M7UUFB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LEVBQUU7WUFFcEMsT0FBTztrQkFBM0IsTUFBTTttQkFBQyxXQUFXO1lBRUEsS0FBSztrQkFBdkIsTUFBTTttQkFBQyxTQUFTO1lBRVMsV0FBVztrQkFBcEMsTUFBTTttQkFBQyxnQkFBZ0I7WUFvRkMsUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBpc0lFIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQb0J1dHRvbkdyb3VwSXRlbSB9IGZyb20gJy4uLy4uLy4uL3BvLWJ1dHRvbi1ncm91cCc7XG5pbXBvcnQgeyBwb1JpY2hUZXh0TGl0ZXJhbHNEZWZhdWx0IH0gZnJvbSAnLi4vcG8tcmljaC10ZXh0LWxpdGVyYWxzJztcbmltcG9ydCB7IFBvUmljaFRleHRUb29sYmFyQnV0dG9uR3JvdXBJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wby1yaWNoLXRleHQtdG9vbGJhci1idXR0b24tZ3JvdXAtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9SaWNoVGV4dEltYWdlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9wby1yaWNoLXRleHQtaW1hZ2UtbW9kYWwvcG8tcmljaC10ZXh0LWltYWdlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1JpY2hUZXh0TGlua01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tcmljaC10ZXh0LWxpbmstbW9kYWwvcG8tcmljaC10ZXh0LWxpbmstbW9kYWwuY29tcG9uZW50JztcblxuY29uc3QgcG9SaWNoVGV4dERlZmF1bHRDb2xvciA9ICcjMDAwMDAwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tcmljaC10ZXh0LXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tcmljaC10ZXh0LXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBvUmljaFRleHRUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2NvbG9yUGlja2VySW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY29sb3JQaWNrZXJJbnB1dDogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd0b29sYmFyRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHRvb2xiYXJFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoUG9SaWNoVGV4dEltYWdlTW9kYWxDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHJpY2hUZXh0SW1hZ2VNb2RhbDogUG9SaWNoVGV4dEltYWdlTW9kYWxDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZChQb1JpY2hUZXh0TGlua01vZGFsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSByaWNoVGV4dExpbmtNb2RhbDogUG9SaWNoVGV4dExpbmtNb2RhbENvbXBvbmVudDtcblxuICBAT3V0cHV0KCdwLWNvbW1hbmQnKSBjb21tYW5kID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCB7IGNvbW1hbmQ6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PigpO1xuXG4gIEBPdXRwdXQoJ3AtbW9kYWwnKSBtb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoJ3AtbGluay1lZGl0aW5nJykgbGlua0VkaXRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICByZWFkb25seSBsaXRlcmFscyA9IHtcbiAgICAuLi5wb1JpY2hUZXh0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKV1cbiAgfTtcblxuICBhbGlnbkJ1dHRvbnM6IEFycmF5PFBvUmljaFRleHRUb29sYmFyQnV0dG9uR3JvdXBJdGVtPiA9IFtcbiAgICB7XG4gICAgICBjb21tYW5kOiAnanVzdGlmeWxlZnQnLFxuICAgICAgaWNvbjogJ3BvLWljb24tYWxpZ24tbGVmdCcsXG4gICAgICB0b29sdGlwOiB0aGlzLmxpdGVyYWxzLmxlZnQsXG4gICAgICBhY3Rpb246IHRoaXMuZW1pdEFsaWduQ29tbWFuZC5iaW5kKHRoaXMsICdqdXN0aWZ5bGVmdCcpLFxuICAgICAgc2VsZWN0ZWQ6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvbW1hbmQ6ICdqdXN0aWZ5Y2VudGVyJyxcbiAgICAgIGljb246ICdwby1pY29uLWFsaWduLWNlbnRlcicsXG4gICAgICB0b29sdGlwOiB0aGlzLmxpdGVyYWxzLmNlbnRlcixcbiAgICAgIGFjdGlvbjogdGhpcy5lbWl0QWxpZ25Db21tYW5kLmJpbmQodGhpcywgJ2p1c3RpZnljZW50ZXInKVxuICAgIH0sXG4gICAge1xuICAgICAgY29tbWFuZDogJ2p1c3RpZnlyaWdodCcsXG4gICAgICBpY29uOiAncG8taWNvbi1hbGlnbi1yaWdodCcsXG4gICAgICB0b29sdGlwOiB0aGlzLmxpdGVyYWxzLnJpZ2h0LFxuICAgICAgYWN0aW9uOiB0aGlzLmVtaXRBbGlnbkNvbW1hbmQuYmluZCh0aGlzLCAnanVzdGlmeXJpZ2h0JylcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvbW1hbmQ6ICdqdXN0aWZ5ZnVsbCcsXG4gICAgICBpY29uOiAncG8taWNvbi1hbGlnbi1qdXN0aWZ5JyxcbiAgICAgIHRvb2x0aXA6IHRoaXMubGl0ZXJhbHMuanVzdGlmeSxcbiAgICAgIGFjdGlvbjogdGhpcy5lbWl0QWxpZ25Db21tYW5kLmJpbmQodGhpcywgJ2p1c3RpZnlmdWxsJylcbiAgICB9XG4gIF07XG5cbiAgZm9ybWF0QnV0dG9uczogQXJyYXk8UG9SaWNoVGV4dFRvb2xiYXJCdXR0b25Hcm91cEl0ZW0+ID0gW1xuICAgIHtcbiAgICAgIGNvbW1hbmQ6ICdib2xkJyxcbiAgICAgIGljb246ICdwby1pY29uLXRleHQtYm9sZCcsXG4gICAgICB0b29sdGlwOiB0aGlzLmxpdGVyYWxzLmJvbGQsXG4gICAgICBhY3Rpb246IHRoaXMuZW1pdENvbW1hbmQuYmluZCh0aGlzLCAnYm9sZCcpXG4gICAgfSxcbiAgICB7XG4gICAgICBjb21tYW5kOiAnaXRhbGljJyxcbiAgICAgIGljb246ICdwby1pY29uLXRleHQtaXRhbGljJyxcbiAgICAgIHRvb2x0aXA6IHRoaXMubGl0ZXJhbHMuaXRhbGljLFxuICAgICAgYWN0aW9uOiB0aGlzLmVtaXRDb21tYW5kLmJpbmQodGhpcywgJ2l0YWxpYycpXG4gICAgfSxcbiAgICB7XG4gICAgICBjb21tYW5kOiAndW5kZXJsaW5lJyxcbiAgICAgIGljb246ICdwby1pY29uLXRleHQtdW5kZXJsaW5lJyxcbiAgICAgIHRvb2x0aXA6IHRoaXMubGl0ZXJhbHMudW5kZXJsaW5lLFxuICAgICAgYWN0aW9uOiB0aGlzLmVtaXRDb21tYW5kLmJpbmQodGhpcywgJ3VuZGVybGluZScpXG4gICAgfVxuICBdO1xuXG4gIGxpc3RCdXR0b25zOiBBcnJheTxQb1JpY2hUZXh0VG9vbGJhckJ1dHRvbkdyb3VwSXRlbT4gPSBbXG4gICAge1xuICAgICAgY29tbWFuZDogJ2luc2VydFVub3JkZXJlZExpc3QnLFxuICAgICAgaWNvbjogJ3BvLWljb24tbGlzdCcsXG4gICAgICB0b29sdGlwOiB0aGlzLmxpdGVyYWxzLnVub3JkZXJlZExpc3QsXG4gICAgICBhY3Rpb246IHRoaXMuZW1pdENvbW1hbmQuYmluZCh0aGlzLCAnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpXG4gICAgfVxuICBdO1xuXG4gIGxpbmtCdXR0b25zOiBBcnJheTxQb1JpY2hUZXh0VG9vbGJhckJ1dHRvbkdyb3VwSXRlbT4gPSBbXG4gICAge1xuICAgICAgY29tbWFuZDogJ0NyZWF0ZWxpbmsnLFxuICAgICAgaWNvbjogJ3BvLWljb24tbGluaycsXG4gICAgICB0b29sdGlwOiBgJHt0aGlzLmxpdGVyYWxzLmluc2VydExpbmt9IChDdHJsICsgSylgLFxuICAgICAgYWN0aW9uOiAoKSA9PiB0aGlzLnJpY2hUZXh0TGlua01vZGFsLm9wZW5Nb2RhbCh0aGlzLnNlbGVjdGVkTGlua0VsZW1lbnQpXG4gICAgfVxuICBdO1xuXG4gIG1lZGlhQnV0dG9uczogQXJyYXk8UG9CdXR0b25Hcm91cEl0ZW0+ID0gW1xuICAgIHtcbiAgICAgIHRvb2x0aXA6IHRoaXMubGl0ZXJhbHMuaW5zZXJ0SW1hZ2UsXG4gICAgICBpY29uOiAncG8taWNvbi1waWN0dXJlJyxcbiAgICAgIGFjdGlvbjogKCkgPT4gdGhpcy5yaWNoVGV4dEltYWdlTW9kYWwub3Blbk1vZGFsKClcbiAgICB9XG4gIF07XG5cbiAgcHJpdmF0ZSBfcmVhZG9ubHk6IGJvb2xlYW47XG4gIHByaXZhdGUgc2VsZWN0ZWRMaW5rRWxlbWVudDtcblxuICBASW5wdXQoJ3AtcmVhZG9ubHknKSBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZWFkb25seSA9IHZhbHVlO1xuICAgIHRoaXMudG9nZ2xlRGlzYWJsZUJ1dHRvbnModGhpcy5fcmVhZG9ubHkpO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuXG4gIGdldCBpc0ludGVybmV0RXhwbG9yZXIoKSB7XG4gICAgcmV0dXJuIGlzSUUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZW1vdmVCdXR0b25Gb2N1cygpO1xuICAgIHRoaXMuc2V0Q29sb3JJbkNvbG9yUGlja2VyKHBvUmljaFRleHREZWZhdWx0Q29sb3IpO1xuICB9XG5cbiAgY2hhbmdlVGV4dENvbG9yKHZhbHVlKSB7XG4gICAgY29uc3QgY29tbWFuZCA9ICdmb3JlQ29sb3InO1xuXG4gICAgdGhpcy5jb21tYW5kLmVtaXQoeyBjb21tYW5kLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIGVtaXRMaW5rRWRpdGluZyhpc0xpbmtFZGl0OiBib29sZWFuKSB7XG4gICAgdGhpcy5saW5rRWRpdGluZy5lbWl0KGlzTGlua0VkaXQpO1xuICB9XG5cbiAgc2VsZWN0ZWRMaW5rKHNlbGVjdGVkTGlua0VsZW1lbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkTGlua0VsZW1lbnQgPSBzZWxlY3RlZExpbmtFbGVtZW50O1xuICB9XG5cbiAgc2V0QnV0dG9uc1N0YXRlcyhvYmo6IHsgY29tbWFuZHM6IEFycmF5PHN0cmluZz47IGhleENvbG9yOiBzdHJpbmcgfSkge1xuICAgIGlmICghdGhpcy5yZWFkb25seSkge1xuICAgICAgdGhpcy5hbGlnbkJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gKGJ1dHRvbi5zZWxlY3RlZCA9IG9iai5jb21tYW5kcy5pbmNsdWRlcyhidXR0b24uY29tbWFuZCkpKTtcbiAgICAgIHRoaXMuZm9ybWF0QnV0dG9ucy5mb3JFYWNoKGJ1dHRvbiA9PiAoYnV0dG9uLnNlbGVjdGVkID0gb2JqLmNvbW1hbmRzLmluY2x1ZGVzKGJ1dHRvbi5jb21tYW5kKSkpO1xuICAgICAgdGhpcy5saXN0QnV0dG9uc1swXS5zZWxlY3RlZCA9IG9iai5jb21tYW5kcy5pbmNsdWRlcyh0aGlzLmxpc3RCdXR0b25zWzBdLmNvbW1hbmQpO1xuICAgICAgdGhpcy5saW5rQnV0dG9uc1swXS5zZWxlY3RlZCA9IG9iai5jb21tYW5kcy5pbmNsdWRlcyh0aGlzLmxpbmtCdXR0b25zWzBdLmNvbW1hbmQpO1xuICAgICAgdGhpcy5zZXRDb2xvckluQ29sb3JQaWNrZXIob2JqLmhleENvbG9yKTtcbiAgICB9XG4gIH1cblxuICBzaG9ydGN1dFRyaWdnZXIoKSB7XG4gICAgdGhpcy5yaWNoVGV4dExpbmtNb2RhbC5vcGVuTW9kYWwodGhpcy5zZWxlY3RlZExpbmtFbGVtZW50KTtcbiAgfVxuXG4gIGVtaXRDb21tYW5kKGNvbW1hbmQ6IHN0cmluZykge1xuICAgIHRoaXMuY29tbWFuZC5lbWl0KGNvbW1hbmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0QWxpZ25Db21tYW5kKGNvbW1hbmQ6IHN0cmluZykge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hbGlnbkJ1dHRvbnMuZmluZEluZGV4KGJ0biA9PiBidG4uY29tbWFuZCA9PT0gY29tbWFuZCk7XG5cbiAgICBpZiAodGhpcy5hbGlnbkJ1dHRvbnNbaW5kZXhdLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLmFsaWduQnV0dG9uc1tpbmRleF0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbW1hbmQuZW1pdChjb21tYW5kKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQnV0dG9uRm9jdXMoKSB7XG4gICAgY29uc3QgYnV0dG9ucyA9IHRoaXMudG9vbGJhckVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKTtcblxuICAgIGJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gYnV0dG9uLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKSk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbG9ySW5Db2xvclBpY2tlcihjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb2xvclBpY2tlcklucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBjb2xvcjtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRGlzYWJsZUJ1dHRvbnMoc3RhdGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFsaWduQnV0dG9ucy5mb3JFYWNoKGJ1dHRvbiA9PiAoYnV0dG9uLmRpc2FibGVkID0gc3RhdGUpKTtcbiAgICB0aGlzLmZvcm1hdEJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gKGJ1dHRvbi5kaXNhYmxlZCA9IHN0YXRlKSk7XG4gICAgdGhpcy5saXN0QnV0dG9uc1swXS5kaXNhYmxlZCA9IHN0YXRlO1xuICAgIHRoaXMubGlua0J1dHRvbnNbMF0uZGlzYWJsZWQgPSBzdGF0ZTtcbiAgICB0aGlzLm1lZGlhQnV0dG9uc1swXS5kaXNhYmxlZCA9IHN0YXRlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicG8tcmljaC10ZXh0LXRvb2xiYXJcIiAjdG9vbGJhckVsZW1lbnQ+XG4gIDxkaXYgY2xhc3M9XCJwby1yaWNoLXRleHQtdG9vbGJhci1idXR0b24tYWxpZ25cIj5cbiAgICA8cG8tYnV0dG9uLWdyb3VwIHAtdG9nZ2xlPVwibXVsdGlwbGVcIiBbcC1idXR0b25zXT1cImZvcm1hdEJ1dHRvbnNcIj4gPC9wby1idXR0b24tZ3JvdXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCIhaXNJbnRlcm5ldEV4cGxvcmVyXCIgY2xhc3M9XCJwby1yaWNoLXRleHQtdG9vbGJhci1idXR0b24tYWxpZ25cIj5cbiAgICA8ZGl2IGNsYXNzPVwicG8tcmljaC10ZXh0LXRvb2xiYXItY29sb3ItcGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInBvLWJ1dHRvbiBwby10ZXh0LWVsbGlwc2lzIHBvLXJpY2gtdGV4dC10b29sYmFyLWNvbG9yLXBpY2tlci1idXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgICAgICBbcC10b29sdGlwXT1cImxpdGVyYWxzLnRleHRDb2xvclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGl0ZXJhbHMudGV4dENvbG9yXCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgI2NvbG9yUGlja2VySW5wdXRcbiAgICAgICAgICBjbGFzcz1cInBvLXJpY2gtdGV4dC10b29sYmFyLWNvbG9yLXBpY2tlci1pbnB1dFwiXG4gICAgICAgICAgdHlwZT1cImNvbG9yXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGV4dENvbG9yKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxpdGVyYWxzLnRleHRDb2xvclwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLXJpY2gtdGV4dC10b29sYmFyLWJ1dHRvbi1hbGlnblwiPlxuICAgIDxwby1idXR0b24tZ3JvdXAgcC10b2dnbGU9XCJzaW5nbGVcIiBbcC1idXR0b25zXT1cImFsaWduQnV0dG9uc1wiPiA8L3BvLWJ1dHRvbi1ncm91cD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInBvLXJpY2gtdGV4dC10b29sYmFyLWJ1dHRvbi1hbGlnblwiPlxuICAgIDxwby1idXR0b24tZ3JvdXAgcC10b2dnbGU9XCJzaW5nbGVcIiBbcC1idXR0b25zXT1cImxpc3RCdXR0b25zXCI+IDwvcG8tYnV0dG9uLWdyb3VwPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicG8tcmljaC10ZXh0LXRvb2xiYXItYnV0dG9uLWFsaWduXCI+XG4gICAgPHBvLWJ1dHRvbi1ncm91cCBbcC1idXR0b25zXT1cImxpbmtCdXR0b25zXCI+IDwvcG8tYnV0dG9uLWdyb3VwPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicG8tcmljaC10ZXh0LXRvb2xiYXItYnV0dG9uLWFsaWduXCI+XG4gICAgPHBvLWJ1dHRvbi1ncm91cCBbcC1idXR0b25zXT1cIm1lZGlhQnV0dG9uc1wiPiA8L3BvLWJ1dHRvbi1ncm91cD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPHBvLXJpY2gtdGV4dC1pbWFnZS1tb2RhbCAjcmljaFRleHRJbWFnZU1vZGFsIChwLWNvbW1hbmQpPVwiZW1pdENvbW1hbmQoJGV2ZW50KVwiPiA8L3BvLXJpY2gtdGV4dC1pbWFnZS1tb2RhbD5cblxuPHBvLXJpY2gtdGV4dC1saW5rLW1vZGFsXG4gICNyaWNoVGV4dExpbmtNb2RhbFxuICAocC1jb21tYW5kKT1cImVtaXRDb21tYW5kKCRldmVudClcIlxuICAocC1saW5rLWVkaXRpbmcpPVwiZW1pdExpbmtFZGl0aW5nKCRldmVudClcIlxuPlxuPC9wby1yaWNoLXRleHQtbGluay1tb2RhbD5cbiJdfQ==
@@ -6,6 +6,7 @@ const poColorPalette = Object.values(PoColorPaletteEnum);
6
6
  export class PoColorService {
7
7
  constructor() {
8
8
  this.defaultColors = [];
9
+ this.colorBlack = '#000000';
9
10
  }
10
11
  /**
11
12
  * Avalia a propriedade `color` na lista de items passada. Caso sim, trata se é decimal ou string `po-color`. Caso não haja, retorna a cor default.
@@ -19,7 +20,7 @@ export class PoColorService {
19
20
  dataItem.color = this.verifyIfIsPoColorPalette(dataItem.color);
20
21
  return dataItem;
21
22
  }
22
- const color = this.defaultColors[index];
23
+ const color = this.defaultColors[index] === undefined ? this.colorBlack : this.defaultColors[index];
23
24
  return { ...dataItem, color };
24
25
  });
25
26
  }
@@ -59,4 +60,4 @@ PoColorService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PoColorSe
59
60
  providedIn: 'root'
60
61
  }]
61
62
  }], null, null); })();
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29sb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc2VydmljZXMvcG8tY29sb3IvcG8tY29sb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFdkQsTUFBTSxjQUFjLEdBQVMsTUFBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBU2hFLE1BQU0sT0FBTyxjQUFjO0lBSDNCO1FBSUUsa0JBQWEsR0FBa0IsRUFBRSxDQUFDO0tBd0RuQztJQXREQzs7OztPQUlHO0lBQ0gsU0FBUyxDQUF3QixJQUFjO1FBQzdDLElBQUksQ0FBQyx3QkFBd0IsQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUV2QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFO2dCQUNsQixRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRS9ELE9BQU8sUUFBUSxDQUFDO2FBQ2pCO1lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxPQUFPLEVBQUUsR0FBRyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sd0JBQXdCLENBQXdCLElBQWM7UUFDcEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEtBQWE7UUFDNUMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU8sTUFBTSxLQUFLLEVBQUUsQ0FBQztTQUN0QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQWM7UUFDckMsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNCO1FBRUQsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztRQUU1QyxJQUFJLE1BQU0sR0FBRyxZQUFZLEVBQUU7WUFDekIsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLEdBQUcsWUFBWSxDQUFDO1lBQ2pELElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM1QyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUN2RDtZQUVELE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFFRCxPQUFPLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7NEVBeERVLGNBQWM7b0VBQWQsY0FBYyxXQUFkLGNBQWMsbUJBRmIsTUFBTTt1RkFFUCxjQUFjO2NBSDFCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9Db2xvclBhbGV0dGVFbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMvcG8tY29sb3ItcGFsZXR0ZS5lbnVtJztcbmltcG9ydCB7IFBvRGVmYXVsdENvbG9ycyB9IGZyb20gJy4vcG8tY29sb3JzLmNvbnN0YW50JztcblxuY29uc3QgcG9Db2xvclBhbGV0dGUgPSAoPGFueT5PYmplY3QpLnZhbHVlcyhQb0NvbG9yUGFsZXR0ZUVudW0pO1xuXG5pbnRlcmZhY2UgUG9Db2xvckFyZ3Mge1xuICBjb2xvcj86IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUG9Db2xvclNlcnZpY2Uge1xuICBkZWZhdWx0Q29sb3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgLyoqXG4gICAqIEF2YWxpYSBhIHByb3ByaWVkYWRlIGBjb2xvcmAgbmEgbGlzdGEgZGUgaXRlbXMgcGFzc2FkYS4gQ2FzbyBzaW0sIHRyYXRhIHNlIMOpIGRlY2ltYWwgb3Ugc3RyaW5nIGBwby1jb2xvcmAuIENhc28gbsOjbyBoYWphLCByZXRvcm5hIGEgY29yIGRlZmF1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBnZXRDb2xvcnM8VCBleHRlbmRzIFBvQ29sb3JBcmdzPihkYXRhOiBBcnJheTxUPik6IEFycmF5PFQ+IHtcbiAgICB0aGlzLnZlcmlmeUlmSGFzQ29sb3JQcm9wZXJ0eTxUPihkYXRhKTtcblxuICAgIHJldHVybiBkYXRhLm1hcCgoZGF0YUl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBpZiAoZGF0YUl0ZW0uY29sb3IpIHtcbiAgICAgICAgZGF0YUl0ZW0uY29sb3IgPSB0aGlzLnZlcmlmeUlmSXNQb0NvbG9yUGFsZXR0ZShkYXRhSXRlbS5jb2xvcik7XG5cbiAgICAgICAgcmV0dXJuIGRhdGFJdGVtO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb2xvciA9IHRoaXMuZGVmYXVsdENvbG9yc1tpbmRleF07XG4gICAgICByZXR1cm4geyAuLi5kYXRhSXRlbSwgY29sb3IgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5SWZIYXNDb2xvclByb3BlcnR5PFQgZXh0ZW5kcyBQb0NvbG9yQXJncz4oZGF0YTogQXJyYXk8VD4pOiB2b2lkIHtcbiAgICBjb25zdCBoYXNDb2xvclByb3BlcnR5ID0gZGF0YS5ldmVyeShkYXRhSXRlbSA9PiBkYXRhSXRlbS5oYXNPd25Qcm9wZXJ0eSgnY29sb3InKSAmJiBkYXRhSXRlbS5jb2xvcj8ubGVuZ3RoID4gMCk7XG4gICAgaWYgKCFoYXNDb2xvclByb3BlcnR5KSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb2xvcnMgPSB0aGlzLmdldERlZmF1bHRDb2xvcnMoZGF0YS5sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5SWZJc1BvQ29sb3JQYWxldHRlKGNvbG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChwb0NvbG9yUGFsZXR0ZS5pbmNsdWRlcyhjb2xvcikpIHtcbiAgICAgIHJldHVybiBgcG8tJHtjb2xvcn1gO1xuICAgIH1cbiAgICByZXR1cm4gY29sb3I7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRDb2xvcnMobGVuZ3RoOiBudW1iZXIpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBpZiAobGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gUG9EZWZhdWx0Q29sb3JzWzBdO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbG9yc0xlbmd0aCA9IFBvRGVmYXVsdENvbG9ycy5sZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID4gY29sb3JzTGVuZ3RoKSB7XG4gICAgICBjb25zdCBxdWFudGl0eUR1cGxpY2F0ZXMgPSBsZW5ndGggLyBjb2xvcnNMZW5ndGg7XG4gICAgICBsZXQgY29sb3JzID0gUG9EZWZhdWx0Q29sb3JzW2NvbG9yc0xlbmd0aCAtIDFdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBxdWFudGl0eUR1cGxpY2F0ZXM7IGkrKykge1xuICAgICAgICBjb2xvcnMgPSBjb2xvcnMuY29uY2F0KFBvRGVmYXVsdENvbG9yc1tjb2xvcnNMZW5ndGhdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbG9ycztcbiAgICB9XG5cbiAgICByZXR1cm4gUG9EZWZhdWx0Q29sb3JzW2xlbmd0aCAtIDFdO1xuICB9XG59XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29sb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc2VydmljZXMvcG8tY29sb3IvcG8tY29sb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFdkQsTUFBTSxjQUFjLEdBQVMsTUFBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBU2hFLE1BQU0sT0FBTyxjQUFjO0lBSDNCO1FBSUUsa0JBQWEsR0FBa0IsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxTQUFTLENBQUM7S0F3RHpDO0lBdERDOzs7O09BSUc7SUFDSCxTQUFTLENBQXdCLElBQWM7UUFDN0MsSUFBSSxDQUFDLHdCQUF3QixDQUFJLElBQUksQ0FBQyxDQUFDO1FBRXZDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xCLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFL0QsT0FBTyxRQUFRLENBQUM7YUFDakI7WUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRyxPQUFPLEVBQUUsR0FBRyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sd0JBQXdCLENBQXdCLElBQWM7UUFDcEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEtBQWE7UUFDNUMsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU8sTUFBTSxLQUFLLEVBQUUsQ0FBQztTQUN0QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQWM7UUFDckMsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNCO1FBRUQsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztRQUU1QyxJQUFJLE1BQU0sR0FBRyxZQUFZLEVBQUU7WUFDekIsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLEdBQUcsWUFBWSxDQUFDO1lBQ2pELElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM1QyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUN2RDtZQUVELE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFFRCxPQUFPLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7NEVBekRVLGNBQWM7b0VBQWQsY0FBYyxXQUFkLGNBQWMsbUJBRmIsTUFBTTt1RkFFUCxjQUFjO2NBSDFCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9Db2xvclBhbGV0dGVFbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMvcG8tY29sb3ItcGFsZXR0ZS5lbnVtJztcbmltcG9ydCB7IFBvRGVmYXVsdENvbG9ycyB9IGZyb20gJy4vcG8tY29sb3JzLmNvbnN0YW50JztcblxuY29uc3QgcG9Db2xvclBhbGV0dGUgPSAoPGFueT5PYmplY3QpLnZhbHVlcyhQb0NvbG9yUGFsZXR0ZUVudW0pO1xuXG5pbnRlcmZhY2UgUG9Db2xvckFyZ3Mge1xuICBjb2xvcj86IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUG9Db2xvclNlcnZpY2Uge1xuICBkZWZhdWx0Q29sb3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgY29sb3JCbGFjayA9ICcjMDAwMDAwJztcblxuICAvKipcbiAgICogQXZhbGlhIGEgcHJvcHJpZWRhZGUgYGNvbG9yYCBuYSBsaXN0YSBkZSBpdGVtcyBwYXNzYWRhLiBDYXNvIHNpbSwgdHJhdGEgc2Ugw6kgZGVjaW1hbCBvdSBzdHJpbmcgYHBvLWNvbG9yYC4gQ2FzbyBuw6NvIGhhamEsIHJldG9ybmEgYSBjb3IgZGVmYXVsdC5cbiAgICpcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIGdldENvbG9yczxUIGV4dGVuZHMgUG9Db2xvckFyZ3M+KGRhdGE6IEFycmF5PFQ+KTogQXJyYXk8VD4ge1xuICAgIHRoaXMudmVyaWZ5SWZIYXNDb2xvclByb3BlcnR5PFQ+KGRhdGEpO1xuXG4gICAgcmV0dXJuIGRhdGEubWFwKChkYXRhSXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChkYXRhSXRlbS5jb2xvcikge1xuICAgICAgICBkYXRhSXRlbS5jb2xvciA9IHRoaXMudmVyaWZ5SWZJc1BvQ29sb3JQYWxldHRlKGRhdGFJdGVtLmNvbG9yKTtcblxuICAgICAgICByZXR1cm4gZGF0YUl0ZW07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5kZWZhdWx0Q29sb3JzW2luZGV4XSA9PT0gdW5kZWZpbmVkID8gdGhpcy5jb2xvckJsYWNrIDogdGhpcy5kZWZhdWx0Q29sb3JzW2luZGV4XTtcbiAgICAgIHJldHVybiB7IC4uLmRhdGFJdGVtLCBjb2xvciB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlJZkhhc0NvbG9yUHJvcGVydHk8VCBleHRlbmRzIFBvQ29sb3JBcmdzPihkYXRhOiBBcnJheTxUPik6IHZvaWQge1xuICAgIGNvbnN0IGhhc0NvbG9yUHJvcGVydHkgPSBkYXRhLmV2ZXJ5KGRhdGFJdGVtID0+IGRhdGFJdGVtLmhhc093blByb3BlcnR5KCdjb2xvcicpICYmIGRhdGFJdGVtLmNvbG9yPy5sZW5ndGggPiAwKTtcbiAgICBpZiAoIWhhc0NvbG9yUHJvcGVydHkpIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbG9ycyA9IHRoaXMuZ2V0RGVmYXVsdENvbG9ycyhkYXRhLmxlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlJZklzUG9Db2xvclBhbGV0dGUoY29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHBvQ29sb3JQYWxldHRlLmluY2x1ZGVzKGNvbG9yKSkge1xuICAgICAgcmV0dXJuIGBwby0ke2NvbG9yfWA7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdENvbG9ycyhsZW5ndGg6IG51bWJlcik6IEFycmF5PHN0cmluZz4ge1xuICAgIGlmIChsZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBQb0RlZmF1bHRDb2xvcnNbMF07XG4gICAgfVxuXG4gICAgY29uc3QgY29sb3JzTGVuZ3RoID0gUG9EZWZhdWx0Q29sb3JzLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPiBjb2xvcnNMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHF1YW50aXR5RHVwbGljYXRlcyA9IGxlbmd0aCAvIGNvbG9yc0xlbmd0aDtcbiAgICAgIGxldCBjb2xvcnMgPSBQb0RlZmF1bHRDb2xvcnNbY29sb3JzTGVuZ3RoIC0gMV07XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHF1YW50aXR5RHVwbGljYXRlczsgaSsrKSB7XG4gICAgICAgIGNvbG9ycyA9IGNvbG9ycy5jb25jYXQoUG9EZWZhdWx0Q29sb3JzW2NvbG9yc0xlbmd0aF0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29sb3JzO1xuICAgIH1cblxuICAgIHJldHVybiBQb0RlZmF1bHRDb2xvcnNbbGVuZ3RoIC0gMV07XG4gIH1cbn1cbiJdfQ==