@decaf-ts/for-nano 0.1.3 → 0.1.4

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.
package/dist/for-nano.cjs CHANGED
@@ -845,7 +845,7 @@
845
845
  * @const VERSION
846
846
  * @memberOf module:for-nano
847
847
  */
848
- const VERSION = "0.1.3";
848
+ const VERSION = "0.1.4";
849
849
 
850
850
  exports.NanoAdapter = NanoAdapter;
851
851
  exports.NanoFlavour = NanoFlavour;
@@ -846,7 +846,7 @@ NanoAdapter.decoration();
846
846
  * @const VERSION
847
847
  * @memberOf module:for-nano
848
848
  */
849
- const VERSION = "0.1.3";
849
+ const VERSION = "0.1.4";
850
850
 
851
851
  export { NanoAdapter, NanoFlavour, VERSION, createdByOnNanoCreateUpdate };
852
852
  //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLW5hbm8uZXNtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyIsIi4uL3NyYy9OYW5vRGlzcGF0Y2gudHMiLCIuLi9zcmMvYWRhcHRlci50cyIsIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWVyIGZvciB0aGUgTmFubyBkYXRhYmFzZSBmbGF2b3JcbiAqIEBzdW1tYXJ5IENvbnN0YW50IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIGRhdGFiYXNlIHR5cGUgYXMgXCJuYW5vXCIgZm9yIHVzZSBpbiBhZGFwdGVyIHNlbGVjdGlvbiBhbmQgY29uZmlndXJhdGlvblxuICogQGNvbnN0IE5hbm9GbGF2b3VyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1uYW5vXG4gKi9cbmV4cG9ydCBjb25zdCBOYW5vRmxhdm91ciA9IFwibmFub1wiO1xuIiwiaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7XG4gIERhdGFiYXNlQ2hhbmdlc1Jlc3BvbnNlLFxuICBEYXRhYmFzZUNoYW5nZXNSZXN1bHRJdGVtLFxuICBEb2N1bWVudFNjb3BlLFxuICBSZXF1ZXN0RXJyb3IsXG59IGZyb20gXCJuYW5vXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBPcGVyYXRpb25LZXlzIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb3VjaERCS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGlzcGF0Y2hlciBmb3IgTmFubyBkYXRhYmFzZSBjaGFuZ2UgZXZlbnRzXG4gKiBAc3VtbWFyeSBIYW5kbGVzIHRoZSBzdWJzY3JpcHRpb24gdG8gYW5kIHByb2Nlc3Npbmcgb2YgZGF0YWJhc2UgY2hhbmdlIGV2ZW50cyBmcm9tIGEgTmFubyBkYXRhYmFzZSxcbiAqIG5vdGlmeWluZyBvYnNlcnZlcnMgd2hlbiBkb2N1bWVudHMgYXJlIGNyZWF0ZWQsIHVwZGF0ZWQsIG9yIGRlbGV0ZWRcbiAqIEB0ZW1wbGF0ZSBEb2N1bWVudFNjb3BlIC0gVGhlIE5hbm8gZG9jdW1lbnQgc2NvcGUgdHlwZVxuICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIC0gVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGNoYW5nZSBmZWVkIHJlcXVlc3RzXG4gKiBAY2xhc3MgTmFub0Rpc3BhdGNoXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgZGlzcGF0Y2hlciBmb3IgYSBOYW5vIGRhdGFiYXNlXG4gKiBjb25zdCBkYiA9IHNlcnZlci5kYi51c2UoJ215X2RhdGFiYXNlJyk7XG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IE5hbm9BZGFwdGVyKGRiKTtcbiAqIGNvbnN0IGRpc3BhdGNoID0gbmV3IE5hbm9EaXNwYXRjaCgpO1xuICpcbiAqIC8vIFRoZSBkaXNwYXRjaGVyIHdpbGwgYXV0b21hdGljYWxseSBzdWJzY3JpYmUgdG8gY2hhbmdlc1xuICogLy8gYW5kIG5vdGlmeSBvYnNlcnZlcnMgd2hlbiBkb2N1bWVudHMgY2hhbmdlXG4gKiBgYGBcbiAqIEBtZXJtYWlkXG4gKiBjbGFzc0RpYWdyYW1cbiAqICAgY2xhc3MgRGlzcGF0Y2gge1xuICogICAgICtpbml0aWFsaXplKClcbiAqICAgICArdXBkYXRlT2JzZXJ2ZXJzKClcbiAqICAgfVxuICogICBjbGFzcyBOYW5vRGlzcGF0Y2gge1xuICogICAgIC1vYnNlcnZlckxhc3RVcGRhdGU/OiBzdHJpbmdcbiAqICAgICAtYXR0ZW1wdENvdW50ZXI6IG51bWJlclxuICogICAgIC10aW1lb3V0OiBudW1iZXJcbiAqICAgICArY29uc3RydWN0b3IodGltZW91dClcbiAqICAgICAjY2hhbmdlSGFuZGxlcigpXG4gKiAgICAgI2luaXRpYWxpemUoKVxuICogICB9XG4gKiAgIERpc3BhdGNoIDx8LS0gTmFub0Rpc3BhdGNoXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW5vRGlzcGF0Y2ggZXh0ZW5kcyBEaXNwYXRjaDxEb2N1bWVudFNjb3BlPGFueT4+IHtcbiAgcHJpdmF0ZSBvYnNlcnZlckxhc3RVcGRhdGU/OiBzdHJpbmc7XG4gIHByaXZhdGUgYXR0ZW1wdENvdW50ZXI6IG51bWJlciA9IDA7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGltZW91dCA9IDUwMDApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcm9jZXNzZXMgZGF0YWJhc2UgY2hhbmdlIGV2ZW50c1xuICAgKiBAc3VtbWFyeSBIYW5kbGVzIHRoZSByZXNwb25zZSBmcm9tIHRoZSBOYW5vIGNoYW5nZXMgZmVlZCwgcHJvY2Vzc2VzIHRoZSBjaGFuZ2VzLFxuICAgKiBhbmQgbm90aWZpZXMgb2JzZXJ2ZXJzIGFib3V0IGRvY3VtZW50IGNoYW5nZXNcbiAgICogQHBhcmFtIHtSZXF1ZXN0RXJyb3IgfCBudWxsfSBlcnJvciAtIEVycm9yIG9iamVjdCBpZiB0aGUgcmVxdWVzdCBmYWlsZWRcbiAgICogQHBhcmFtIHJlc3BvbnNlIC0gVGhlIGNoYW5nZXMgcmVzcG9uc2UgZnJvbSBOYW5vXG4gICAqIEBwYXJhbSB7YW55fSBbaGVhZGVyc10gLSBSZXNwb25zZSBoZWFkZXJzICh1bnVzZWQpXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIGNoYW5nZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZFxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBEIGFzIE5hbm9EaXNwYXRjaFxuICAgKiAgIHBhcnRpY2lwYW50IEwgYXMgTG9nZ2VyXG4gICAqICAgcGFydGljaXBhbnQgTyBhcyBPYnNlcnZlcnNcbiAgICogICBOb3RlIG92ZXIgRDogUmVjZWl2ZSBjaGFuZ2VzIGZyb20gTmFub1xuICAgKiAgIGFsdCBFcnJvciBpbiByZXNwb25zZVxuICAgKiAgICAgRC0+Pkw6IExvZyBlcnJvclxuICAgKiAgICAgRC0tPj5EOiBSZXR1cm4gZWFybHlcbiAgICogICBlbmRcbiAgICogICBhbHQgUmVzcG9uc2UgaXMgc3RyaW5nXG4gICAqICAgICBELT4+RDogUGFyc2UgSlNPTiBmcm9tIHN0cmluZ1xuICAgKiAgIGVuZFxuICAgKiAgIEQtPj5EOiBQcm9jZXNzIGNoYW5nZXNcbiAgICogICBELT4+RDogR3JvdXAgY2hhbmdlcyBieSB0YWJsZSBhbmQgb3BlcmF0aW9uXG4gICAqICAgbG9vcCBGb3IgZWFjaCB0YWJsZVxuICAgKiAgICAgbG9vcCBGb3IgZWFjaCBvcGVyYXRpb25cbiAgICogICAgICAgRC0+Pk86IHVwZGF0ZU9ic2VydmVycyh0YWJsZSwgb3BlcmF0aW9uLCBpZHMpXG4gICAqICAgICAgIEQtPj5EOiBVcGRhdGUgb2JzZXJ2ZXJMYXN0VXBkYXRlXG4gICAqICAgICAgIEQtPj5MOiBMb2cgc3VjY2Vzc2Z1bCBkaXNwYXRjaFxuICAgKiAgICAgZW5kXG4gICAqICAgZW5kXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY2hhbmdlSGFuZGxlcihcbiAgICBlcnJvcjogUmVxdWVzdEVycm9yIHwgbnVsbCxcbiAgICByZXNwb25zZTogKERhdGFiYXNlQ2hhbmdlc1Jlc3BvbnNlIHwgRGF0YWJhc2VDaGFuZ2VzUmVzdWx0SXRlbSlbXSB8IHN0cmluZyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgaGVhZGVycz86IGFueVxuICApIHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5jaGFuZ2VIYW5kbGVyKTtcbiAgICBpZiAoZXJyb3IpIHJldHVybiBsb2cuZXJyb3IoYEVycm9yIGluIGNoYW5nZSByZXF1ZXN0OiAke2Vycm9yfWApO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IChcbiAgICAgICAgdHlwZW9mIHJlc3BvbnNlID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyByZXNwb25zZVxuICAgICAgICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgICAgICAgLmZpbHRlcigocikgPT4gISFyKVxuICAgICAgICAgICAgICAubWFwKChyKSA9PiBKU09OLnBhcnNlKHIpKVxuICAgICAgICAgIDogcmVzcG9uc2VcbiAgICAgICkgYXMgRGF0YWJhc2VDaGFuZ2VzUmVzcG9uc2VbXTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICByZXR1cm4gbG9nLmVycm9yKGBFcnJvciBwYXJzaW5nIGNvdWNoZGIgY2hhbmdlIGZlZWQ6ICR7ZX1gKTtcbiAgICB9XG4gICAgY29uc3QgY291bnQgPSByZXNwb25zZS5sZW5ndGg7XG4gICAgaWYgKGNvdW50ID4gMCkge1xuICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCAke2NvdW50fSBjaGFuZ2VzLiBwcm9jZXNzaW5nLi4uYCk7XG4gICAgICBjb25zdCBjaGFuZ2VzID0gcmVzcG9uc2VcbiAgICAgICAgLm1hcCgocmVjLCBpKSA9PiB7XG4gICAgICAgICAgaWYgKGkgPT09IGNvdW50IC0gMSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyTGFzdFVwZGF0ZSA9PT1cbiAgICAgICAgICAgICAgKHJlYyBhcyBEYXRhYmFzZUNoYW5nZXNSZXNwb25zZSkubGFzdF9zZXFcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICAgICAgIGBJbnZhbGlkIGxhc3QgdXBkYXRlIGNoZWNrOiAke3RoaXMub2JzZXJ2ZXJMYXN0VXBkYXRlfSAhPT0gJHsocmVjIGFzIERhdGFiYXNlQ2hhbmdlc1Jlc3BvbnNlKS5sYXN0X3NlcX1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHIgPSByZWMgYXMgRGF0YWJhc2VDaGFuZ2VzUmVzdWx0SXRlbTtcbiAgICAgICAgICBjb25zdCBbdGFibGUsIGlkXSA9IHIuaWQuc3BsaXQoQ291Y2hEQktleXMuU0VQQVJBVE9SKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGFibGU6IHRhYmxlLFxuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgb3BlcmF0aW9uOiByLmRlbGV0ZWRcbiAgICAgICAgICAgICAgPyBPcGVyYXRpb25LZXlzLkRFTEVURVxuICAgICAgICAgICAgICA6IHIuY2hhbmdlc1tyLmNoYW5nZXMubGVuZ3RoIC0gMV0ucmV2LnNwbGl0KFwiLVwiKVswXSA9PT0gXCIxXCJcbiAgICAgICAgICAgICAgICA/IE9wZXJhdGlvbktleXMuQ1JFQVRFXG4gICAgICAgICAgICAgICAgOiBPcGVyYXRpb25LZXlzLlVQREFURSxcbiAgICAgICAgICAgIHN0ZXA6IHIuY2hhbmdlc1tyLmNoYW5nZXMubGVuZ3RoIC0gMV0ucmV2LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKFxuICAgICAgICAgICAgYWNjdW06IFJlY29yZDxcbiAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICBSZWNvcmQ8XG4gICAgICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGlkczogU2V0PGFueT47XG4gICAgICAgICAgICAgICAgICBzdGVwOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA+LFxuICAgICAgICAgICAgclxuICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgaWYgKCFyKSByZXR1cm4gYWNjdW07XG4gICAgICAgICAgICBjb25zdCB7IHRhYmxlLCBpZCwgb3BlcmF0aW9uLCBzdGVwIH0gPSByIGFzIHtcbiAgICAgICAgICAgICAgdGFibGU6IHN0cmluZztcbiAgICAgICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAgICAgb3BlcmF0aW9uOiBPcGVyYXRpb25LZXlzO1xuICAgICAgICAgICAgICBzdGVwOiBzdHJpbmc7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCFhY2N1bVt0YWJsZV0pIGFjY3VtW3RhYmxlXSA9IHt9O1xuICAgICAgICAgICAgaWYgKCFhY2N1bVt0YWJsZV1bb3BlcmF0aW9uXSlcbiAgICAgICAgICAgICAgYWNjdW1bdGFibGVdW29wZXJhdGlvbl0gPSB7IGlkczogbmV3IFNldCgpLCBzdGVwOiBzdGVwIH07XG4gICAgICAgICAgICBhY2N1bVt0YWJsZV1bb3BlcmF0aW9uXS5pZHMuYWRkKGlkKTtcbiAgICAgICAgICAgIGFjY3VtW3RhYmxlXVtvcGVyYXRpb25dLnN0ZXAgPSBzdGVwO1xuICAgICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICAgIH0sXG4gICAgICAgICAge31cbiAgICAgICAgKTtcblxuICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiBPYmplY3Qua2V5cyhjaGFuZ2VzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IG9wIG9mIE9iamVjdC5rZXlzKGNoYW5nZXNbdGFibGVdKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZU9ic2VydmVycyh0YWJsZSwgb3AsIFtcbiAgICAgICAgICAgICAgLi4uY2hhbmdlc1t0YWJsZV1bb3BdLmlkcy52YWx1ZXMoKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlckxhc3RVcGRhdGUgPSBjaGFuZ2VzW3RhYmxlXVtvcF0uc3RlcDtcbiAgICAgICAgICAgIGxvZy52ZXJib3NlKGBPYnNlcnZlciByZWZyZXNoIGRpc3BhdGNoZWQgYnkgJHtvcH0gZm9yICR7dGFibGV9YCk7XG4gICAgICAgICAgICBsb2cuZGVidWcoYHBrczogJHtBcnJheS5mcm9tKGNoYW5nZXNbdGFibGVdW29wXS5pZHMudmFsdWVzKCkpfWApO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICAgICAgYEZhaWxlZCB0byBkaXNwYXRjaCBvYnNlcnZlciByZWZyZXNoIGZvciAke3RhYmxlfSwgb3AgJHtvcH06ICR7ZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgdGhlIGRpc3BhdGNoZXIgYW5kIHN1YnNjcmliZXMgdG8gZGF0YWJhc2UgY2hhbmdlc1xuICAgKiBAc3VtbWFyeSBTZXRzIHVwIHRoZSBjb250aW51b3VzIGNoYW5nZXMgZmVlZCBzdWJzY3JpcHRpb24gdG8gdGhlIE5hbm8gZGF0YWJhc2VcbiAgICogYW5kIGhhbmRsZXMgcmVjb25uZWN0aW9uIGF0dGVtcHRzIGlmIHRoZSBjb25uZWN0aW9uIGZhaWxzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHN1YnNjcmlwdGlvbiBpcyBlc3RhYmxpc2hlZFxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBEIGFzIE5hbm9EaXNwYXRjaFxuICAgKiAgIHBhcnRpY2lwYW50IFMgYXMgc3Vic2NyaWJlVG9Db3VjaFxuICAgKiAgIHBhcnRpY2lwYW50IERCIGFzIE5hbm8gRGF0YWJhc2VcbiAgICogICBwYXJ0aWNpcGFudCBMIGFzIExvZ2dlclxuICAgKiAgIEQtPj5TOiBDYWxsIHN1YnNjcmliZVRvQ291Y2hcbiAgICogICBTLT4+UzogQ2hlY2sgYWRhcHRlciBhbmQgbmF0aXZlXG4gICAqICAgYWx0IE5vIGFkYXB0ZXIgb3IgbmF0aXZlXG4gICAqICAgICBTLS0+PlM6IHRocm93IEludGVybmFsRXJyb3JcbiAgICogICBlbmRcbiAgICogICBTLT4+REI6IGNoYW5nZXMob3B0aW9ucywgY2hhbmdlSGFuZGxlcilcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgREItLT4+UzogU3Vic2NyaXB0aW9uIGVzdGFibGlzaGVkXG4gICAqICAgICBTLS0+PkQ6IFByb21pc2UgcmVzb2x2ZXNcbiAgICogICAgIEQtPj5MOiBMb2cgc3VjY2Vzc2Z1bCBzdWJzY3JpcHRpb25cbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBEQi0tPj5TOiBFcnJvclxuICAgKiAgICAgUy0+PlM6IEluY3JlbWVudCBhdHRlbXB0Q291bnRlclxuICAgKiAgICAgYWx0IGF0dGVtcHRDb3VudGVyID4gM1xuICAgKiAgICAgICBTLT4+TDogTG9nIGVycm9yXG4gICAqICAgICAgIFMtLT4+RDogUHJvbWlzZSByZWplY3RzXG4gICAqICAgICBlbHNlIGF0dGVtcHRDb3VudGVyIDw9IDNcbiAgICogICAgICAgUy0+Pkw6IExvZyByZXRyeVxuICAgKiAgICAgICBTLT4+UzogV2FpdCB0aW1lb3V0XG4gICAqICAgICAgIFMtPj5TOiBSZWN1cnNpdmUgY2FsbCB0byBzdWJzY3JpYmVUb0NvdWNoXG4gICAqICAgICBlbmRcbiAgICogICBlbmRcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmluaXRpYWxpemUpO1xuICAgIGNvbnN0IHN1YkxvZyA9IGxvZy5mb3Ioc3Vic2NyaWJlVG9Db3VjaCk7XG4gICAgYXN5bmMgZnVuY3Rpb24gc3Vic2NyaWJlVG9Db3VjaCh0aGlzOiBOYW5vRGlzcGF0Y2gpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGlmICghdGhpcy5hZGFwdGVyIHx8ICF0aGlzLm5hdGl2ZSlcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE5vIGFkYXB0ZXIvbmF0aXZlIG9ic2VydmVkIGZvciBkaXNwYXRjaGApO1xuXG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLm5hdGl2ZS5jaGFuZ2VzKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZlZWQ6IFwiY29udGludW91c1wiLFxuICAgICAgICAgICAgaW5jbHVkZV9kb2NzOiBmYWxzZSxcbiAgICAgICAgICAgIHNpbmNlOiB0aGlzLm9ic2VydmVyTGFzdFVwZGF0ZSB8fCBcIm5vd1wiLFxuICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGhpcy5jaGFuZ2VIYW5kbGVyLmJpbmQodGhpcykgYXMgYW55XG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIGlmICgrK3RoaXMuYXR0ZW1wdENvdW50ZXIgPiAzKVxuICAgICAgICAgIHJldHVybiBzdWJMb2cuZXJyb3IoYEZhaWxlZCB0byBzdWJzY3JpYmUgdG8gY291Y2hkYiBjaGFuZ2VzOiAke2V9YCk7XG4gICAgICAgIHN1YkxvZy5pbmZvKFxuICAgICAgICAgIGBGYWlsZWQgdG8gc3Vic2NyaWJlIHRvIGNvdWNoZGIgY2hhbmdlczogJHtlfS4gUmV0cnlpbmcgaW4gNSBzZWNvbmRzLi4uYFxuICAgICAgICApO1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aGlzLnRpbWVvdXQpKTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmliZVRvQ291Y2guY2FsbCh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdWJzY3JpYmVUb0NvdWNoXG4gICAgICAuY2FsbCh0aGlzKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBTdWJzY3JpYmVkIHRvIGNvdWNoZGIgY2hhbmdlc2ApO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZTogdW5rbm93bikgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIHN1YnNjcmliZSB0byBjb3VjaGRiIGNoYW5nZXM6ICR7ZX1gKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBDb25mbGljdEVycm9yLFxuICBDb250ZXh0LFxuICBJbnRlcm5hbEVycm9yLFxuICBvbkNyZWF0ZSxcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5pbXBvcnQge1xuICBDb3VjaERCQWRhcHRlcixcbiAgQ291Y2hEQktleXMsXG4gIENyZWF0ZUluZGV4UmVxdWVzdCxcbiAgZ2VuZXJhdGVJbmRleGVzLFxuICBNYW5nb1F1ZXJ5LFxuICBNYW5nb1Jlc3BvbnNlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1jb3VjaGRiXCI7XG5pbXBvcnQgTmFubyBmcm9tIFwibmFub1wiO1xuaW1wb3J0IHtcbiAgRG9jdW1lbnRCdWxrUmVzcG9uc2UsXG4gIERvY3VtZW50R2V0UmVzcG9uc2UsXG4gIERvY3VtZW50SW5zZXJ0UmVzcG9uc2UsXG4gIERvY3VtZW50U2NvcGUsXG4gIE1heWJlRG9jdW1lbnQsXG4gIFNlcnZlclNjb3BlLFxufSBmcm9tIFwibmFub1wiO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0b3IsXG4gIERlY29yYXRpb24sXG4gIE1vZGVsLFxuICBwcm9wTWV0YWRhdGEsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE5hbm9GbGFncyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQge1xuICBQZXJzaXN0ZW5jZUtleXMsXG4gIFJlbGF0aW9uc01ldGFkYXRhLFxuICBSZXBvc2l0b3J5LFxuICBVbnN1cHBvcnRlZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE5hbm9GbGF2b3VyIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBOYW5vUmVwb3NpdG9yeSB9IGZyb20gXCIuL05hbm9SZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBOYW5vRGlzcGF0Y2ggfSBmcm9tIFwiLi9OYW5vRGlzcGF0Y2hcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU2V0cyB0aGUgY3JlYXRvciBvciB1cGRhdGVyIGZpZWxkIGluIGEgbW9kZWwgYmFzZWQgb24gdGhlIHVzZXIgaW4gdGhlIGNvbnRleHRcbiAqIEBzdW1tYXJ5IENhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgaW4gZGVjb3JhdG9ycyB0byBhdXRvbWF0aWNhbGx5IHNldCB0aGUgY3JlYXRlZF9ieSBvciB1cGRhdGVkX2J5IGZpZWxkc1xuICogd2l0aCB0aGUgdXNlcm5hbWUgZnJvbSB0aGUgY29udGV4dCB3aGVuIGEgZG9jdW1lbnQgaXMgY3JlYXRlZCBvciB1cGRhdGVkXG4gKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gKiBAdGVtcGxhdGUgUiAtIFR5cGUgZXh0ZW5kaW5nIE5hbm9SZXBvc2l0b3J5PE0+XG4gKiBAdGVtcGxhdGUgViAtIFR5cGUgZXh0ZW5kaW5nIFJlbGF0aW9uc01ldGFkYXRhXG4gKiBAcGFyYW0ge1J9IHRoaXMgLSBUaGUgcmVwb3NpdG9yeSBpbnN0YW5jZVxuICogQHBhcmFtIHtDb250ZXh0PE5hbm9GbGFncz59IGNvbnRleHQgLSBUaGUgb3BlcmF0aW9uIGNvbnRleHQgY29udGFpbmluZyB1c2VyIGluZm9ybWF0aW9uXG4gKiBAcGFyYW0ge1Z9IGRhdGEgLSBUaGUgcmVsYXRpb24gbWV0YWRhdGFcbiAqIEBwYXJhbSBrZXkgLSBUaGUgcHJvcGVydHkga2V5IHRvIHNldCB3aXRoIHRoZSB1c2VybmFtZVxuICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSBiZWluZyBjcmVhdGVkIG9yIHVwZGF0ZWRcbiAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZVxuICogQGZ1bmN0aW9uIGNyZWF0ZWRCeU9uTmFub0NyZWF0ZVVwZGF0ZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItbmFub1xuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBGIGFzIGNyZWF0ZWRCeU9uTmFub0NyZWF0ZVVwZGF0ZVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENvbnRleHRcbiAqICAgcGFydGljaXBhbnQgTSBhcyBNb2RlbFxuICogICBGLT4+QzogZ2V0KFwidXNlclwiKVxuICogICBDLS0+PkY6IHVzZXIgb2JqZWN0XG4gKiAgIEYtPj5NOiBzZXQga2V5IHRvIHVzZXIubmFtZVxuICogICBOb3RlIG92ZXIgRjogSWYgbm8gdXNlciBpbiBjb250ZXh0XG4gKiAgIEYtLT4+RjogdGhyb3cgVW5zdXBwb3J0ZWRFcnJvclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlZEJ5T25OYW5vQ3JlYXRlVXBkYXRlPFxuICBNIGV4dGVuZHMgTW9kZWwsXG4gIFIgZXh0ZW5kcyBOYW5vUmVwb3NpdG9yeTxNPixcbiAgViBleHRlbmRzIFJlbGF0aW9uc01ldGFkYXRhLFxuPihcbiAgdGhpczogUixcbiAgY29udGV4dDogQ29udGV4dDxOYW5vRmxhZ3M+LFxuICBkYXRhOiBWLFxuICBrZXk6IGtleW9mIE0sXG4gIG1vZGVsOiBNXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB1c2VyID0gY29udGV4dC5nZXQoXCJ1c2VyXCIpO1xuICAgIG1vZGVsW2tleV0gPSB1c2VyLm5hbWUgYXMgTVt0eXBlb2Yga2V5XTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgIFwiTm8gVXNlciBmb3VuZCBpbiBjb250ZXh0LiBQbGVhc2UgcHJvdmlkZSBhIHVzZXIgaW4gdGhlIGNvbnRleHRcIlxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQWRhcHRlciBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBOYW5vIGRhdGFiYXNlc1xuICogQHN1bW1hcnkgUHJvdmlkZXMgYSBzdGFuZGFyZGl6ZWQgaW50ZXJmYWNlIGZvciBwZXJmb3JtaW5nIENSVUQgb3BlcmF0aW9ucyBvbiBOYW5vIGRhdGFiYXNlcyxcbiAqIGV4dGVuZGluZyB0aGUgQ291Y2hEQiBhZGFwdGVyIHdpdGggTmFuby1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LiBUaGlzIGFkYXB0ZXIgaGFuZGxlcyBkb2N1bWVudFxuICogY3JlYXRpb24sIHJlYWRpbmcsIHVwZGF0aW5nLCBhbmQgZGVsZXRpb24sIGFzIHdlbGwgYXMgYnVsayBvcGVyYXRpb25zIGFuZCBpbmRleCBtYW5hZ2VtZW50LlxuICogQHRlbXBsYXRlIERvY3VtZW50U2NvcGUgLSBUaGUgTmFubyBkb2N1bWVudCBzY29wZSB0eXBlXG4gKiBAdGVtcGxhdGUgTmFub0ZsYWdzIC0gQ29uZmlndXJhdGlvbiBmbGFncyBmb3IgTmFubyBvcGVyYXRpb25zXG4gKiBAdGVtcGxhdGUgQ29udGV4dCAtIENvbnRleHQgdHlwZSBmb3Igb3BlcmF0aW9uc1xuICogQHBhcmFtIHtEb2N1bWVudFNjb3BlPGFueT59IHNjb3BlIC0gVGhlIE5hbm8gZG9jdW1lbnQgc2NvcGUgdG8gdXNlIGZvciBkYXRhYmFzZSBvcGVyYXRpb25zXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FsaWFzXSAtIE9wdGlvbmFsIGFsaWFzIGZvciB0aGUgYWRhcHRlclxuICogQGNsYXNzIE5hbm9BZGFwdGVyXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ29ubmVjdCB0byBhIE5hbm8gZGF0YWJhc2VcbiAqIGNvbnN0IHNlcnZlciA9IE5hbm9BZGFwdGVyLmNvbm5lY3QoJ2FkbWluJywgJ3Bhc3N3b3JkJywgJ2xvY2FsaG9zdDo1OTg0Jyk7XG4gKiBjb25zdCBkYiA9IHNlcnZlci5kYi51c2UoJ215X2RhdGFiYXNlJyk7XG4gKlxuICogLy8gQ3JlYXRlIGFuIGFkYXB0ZXIgaW5zdGFuY2VcbiAqIGNvbnN0IGFkYXB0ZXIgPSBuZXcgTmFub0FkYXB0ZXIoZGIpO1xuICpcbiAqIC8vIFVzZSB0aGUgYWRhcHRlciBmb3IgZGF0YWJhc2Ugb3BlcmF0aW9uc1xuICogY29uc3QgZG9jdW1lbnQgPSBhd2FpdCBhZGFwdGVyLnJlYWQoJ3VzZXJzJywgJzEyMycpO1xuICogYGBgXG4gKiBAbWVybWFpZFxuICogY2xhc3NEaWFncmFtXG4gKiAgIGNsYXNzIENvdWNoREJBZGFwdGVyIHtcbiAqICAgICArZmxhZ3MoKVxuICogICAgICtEaXNwYXRjaCgpXG4gKiAgICAgK2luZGV4KClcbiAqICAgICArY3JlYXRlKClcbiAqICAgICArcmVhZCgpXG4gKiAgICAgK3VwZGF0ZSgpXG4gKiAgICAgK2RlbGV0ZSgpXG4gKiAgIH1cbiAqICAgY2xhc3MgTmFub0FkYXB0ZXIge1xuICogICAgICtmbGFncygpXG4gKiAgICAgK0Rpc3BhdGNoKClcbiAqICAgICAraW5kZXgoKVxuICogICAgICtjcmVhdGUoKVxuICogICAgICtjcmVhdGVBbGwoKVxuICogICAgICtyZWFkKClcbiAqICAgICArcmVhZEFsbCgpXG4gKiAgICAgK3VwZGF0ZSgpXG4gKiAgICAgK3VwZGF0ZUFsbCgpXG4gKiAgICAgK2RlbGV0ZSgpXG4gKiAgICAgK2RlbGV0ZUFsbCgpXG4gKiAgICAgK3JhdygpXG4gKiAgICAgK3N0YXRpYyBjb25uZWN0KClcbiAqICAgICArc3RhdGljIGNyZWF0ZURhdGFiYXNlKClcbiAqICAgICArc3RhdGljIGRlbGV0ZURhdGFiYXNlKClcbiAqICAgICArc3RhdGljIGNyZWF0ZVVzZXIoKVxuICogICAgICtzdGF0aWMgZGVsZXRlVXNlcigpXG4gKiAgICAgK3N0YXRpYyBkZWNvcmF0aW9uKClcbiAqICAgfVxuICogICBDb3VjaERCQWRhcHRlciA8fC0tIE5hbm9BZGFwdGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW5vQWRhcHRlciBleHRlbmRzIENvdWNoREJBZGFwdGVyPFxuICBEb2N1bWVudFNjb3BlPGFueT4sXG4gIE5hbm9GbGFncyxcbiAgQ29udGV4dDxOYW5vRmxhZ3M+XG4+IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IERvY3VtZW50U2NvcGU8YW55PiwgYWxpYXM/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgTmFub0ZsYXZvdXIsIGFsaWFzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIGZsYWdzIGZvciBkYXRhYmFzZSBvcGVyYXRpb25zXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBzZXQgb2YgZmxhZ3MgZm9yIGEgc3BlY2lmaWMgb3BlcmF0aW9uLCBpbmNsdWRpbmcgdXNlciBpbmZvcm1hdGlvblxuICAgKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAqIEBwYXJhbSB7T3BlcmF0aW9uS2V5c30gb3BlcmF0aW9uIC0gVGhlIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQgKGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBkZWxldGUpXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IG1vZGVsIC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UGFydGlhbDxOYW5vRmxhZ3M+fSBmbGFncyAtIFBhcnRpYWwgZmxhZ3MgdG8gYmUgbWVyZ2VkXG4gICAqIEByZXR1cm4ge1Byb21pc2U8TmFub0ZsYWdzPn0gQ29tcGxldGUgZmxhZ3MgZm9yIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBmbGFnczxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG9wZXJhdGlvbjogT3BlcmF0aW9uS2V5cyxcbiAgICBtb2RlbDogQ29uc3RydWN0b3I8TT4sXG4gICAgZmxhZ3M6IFBhcnRpYWw8TmFub0ZsYWdzPlxuICApOiBQcm9taXNlPE5hbm9GbGFncz4ge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGF3YWl0IHN1cGVyLmZsYWdzKG9wZXJhdGlvbiwgbW9kZWwsIGZsYWdzKSwge1xuICAgICAgdXNlcjoge1xuICAgICAgICBuYW1lOiB0aGlzLm5hdGl2ZS5jb25maWcudXJsLnNwbGl0KFwiQFwiKVswXS5zcGxpdChcIjpcIilbMF0sXG4gICAgICB9LFxuICAgIH0pIGFzIE5hbm9GbGFncztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBOYW5vRGlzcGF0Y2ggaW5zdGFuY2VcbiAgICogQHN1bW1hcnkgUmV0dXJucyBhIGRpc3BhdGNoZXIgZm9yIGhhbmRsaW5nIE5hbm8tc3BlY2lmaWMgb3BlcmF0aW9uc1xuICAgKiBAcmV0dXJuIHtOYW5vRGlzcGF0Y2h9IEEgbmV3IE5hbm9EaXNwYXRjaCBpbnN0YW5jZVxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIERpc3BhdGNoKCk6IE5hbm9EaXNwYXRjaCB7XG4gICAgcmV0dXJuIG5ldyBOYW5vRGlzcGF0Y2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBkYXRhYmFzZSBpbmRleGVzIGZvciBtb2RlbHNcbiAgICogQHN1bW1hcnkgR2VuZXJhdGVzIGFuZCBjcmVhdGVzIGluZGV4ZXMgaW4gdGhlIE5hbm8gZGF0YWJhc2UgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG1vZGVsc1xuICAgKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAqIEBwYXJhbSBtb2RlbHMgLSBNb2RlbCBjb25zdHJ1Y3RvcnMgdG8gY3JlYXRlIGluZGV4ZXMgZm9yXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIGluZGV4ZXMgYXJlIGNyZWF0ZWRcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBOYW5vQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IEcgYXMgZ2VuZXJhdGVJbmRleGVzXG4gICAqICAgcGFydGljaXBhbnQgREIgYXMgTmFubyBEYXRhYmFzZVxuICAgKiAgIEEtPj5HOiBnZW5lcmF0ZUluZGV4ZXMobW9kZWxzKVxuICAgKiAgIEctLT4+QTogaW5kZXhlc1xuICAgKiAgIGxvb3AgRm9yIGVhY2ggaW5kZXhcbiAgICogICAgIEEtPj5EQjogY3JlYXRlSW5kZXgoaW5kZXgpXG4gICAqICAgICBEQi0tPj5BOiByZXNwb25zZVxuICAgKiAgICAgTm90ZSBvdmVyIEE6IENoZWNrIGlmIGluZGV4IGFscmVhZHkgZXhpc3RzXG4gICAqICAgICBhbHQgSW5kZXggZXhpc3RzXG4gICAqICAgICAgIEEtLT4+QTogdGhyb3cgQ29uZmxpY3RFcnJvclxuICAgKiAgICAgZW5kXG4gICAqICAgZW5kXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgaW5kZXg8TSBleHRlbmRzIE1vZGVsPihcbiAgICAuLi5tb2RlbHM6IENvbnN0cnVjdG9yPE0+W11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5kZXhlczogQ3JlYXRlSW5kZXhSZXF1ZXN0W10gPSBnZW5lcmF0ZUluZGV4ZXMobW9kZWxzKTtcbiAgICBmb3IgKGNvbnN0IGluZGV4IG9mIGluZGV4ZXMpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMubmF0aXZlLmNyZWF0ZUluZGV4KGluZGV4KTtcbiAgICAgIGNvbnN0IHsgcmVzdWx0LCBpZCwgbmFtZSB9ID0gcmVzO1xuICAgICAgaWYgKHJlc3VsdCA9PT0gXCJleGlzdGluZ1wiKVxuICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RFcnJvcihgSW5kZXggZm9yIHRhYmxlICR7bmFtZX0gd2l0aCBpZCAke2lkfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBkb2N1bWVudCBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgSW5zZXJ0cyBhIG5ldyBkb2N1bWVudCBpbnRvIHRoZSBOYW5vIGRhdGFiYXNlIHdpdGggdGhlIHByb3ZpZGVkIGRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBpZCAtIFRoZSBkb2N1bWVudCBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gbW9kZWwgLSBUaGUgZG9jdW1lbnQgZGF0YSB0byBpbnNlcnRcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNyZWF0ZWQgZG9jdW1lbnQgd2l0aCBtZXRhZGF0YVxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBBIGFzIE5hbm9BZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgREIgYXMgTmFubyBEYXRhYmFzZVxuICAgKiAgIEEtPj5EQjogaW5zZXJ0KG1vZGVsKVxuICAgKiAgIGFsdCBTdWNjZXNzXG4gICAqICAgICBEQi0tPj5BOiByZXNwb25zZSB3aXRoIG9rPXRydWVcbiAgICogICAgIEEtPj5BOiBhc3NpZ25NZXRhZGF0YShtb2RlbCwgcmVzcG9uc2UucmV2KVxuICAgKiAgICAgQS0tPj5BOiByZXR1cm4gZG9jdW1lbnQgd2l0aCBtZXRhZGF0YVxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIERCLS0+PkE6IGVycm9yXG4gICAqICAgICBBLS0+PkE6IHRocm93IHBhcnNlRXJyb3IoZSlcbiAgICogICBlbHNlIE5vdCBPS1xuICAgKiAgICAgREItLT4+QTogcmVzcG9uc2Ugd2l0aCBvaz1mYWxzZVxuICAgKiAgICAgQS0tPj5BOiB0aHJvdyBJbnRlcm5hbEVycm9yXG4gICAqICAgZW5kXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBjcmVhdGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBsZXQgcmVzcG9uc2U6IERvY3VtZW50SW5zZXJ0UmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5uYXRpdmUuaW5zZXJ0KG1vZGVsKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gaW5zZXJ0IGRvYyBpZDogJHtpZH0gaW4gdGFibGUgJHt0YWJsZU5hbWV9YFxuICAgICAgKTtcbiAgICByZXR1cm4gdGhpcy5hc3NpZ25NZXRhZGF0YShtb2RlbCwgcmVzcG9uc2UucmV2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBtdWx0aXBsZSBkb2N1bWVudHMgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IEluc2VydHMgbXVsdGlwbGUgZG9jdW1lbnRzIGludG8gdGhlIE5hbm8gZGF0YWJhc2UgaW4gYSBzaW5nbGUgYnVsayBvcGVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS9jb2xsZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nW10gfCBudW1iZXJbXX0gaWRzIC0gQXJyYXkgb2YgZG9jdW1lbnQgaWRlbnRpZmllcnNcbiAgICogQHBhcmFtIG1vZGVscyAtIEFycmF5IG9mIGRvY3VtZW50IGRhdGEgdG8gaW5zZXJ0XG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2YgY3JlYXRlZCBkb2N1bWVudHMgd2l0aCBtZXRhZGF0YVxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBBIGFzIE5hbm9BZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgREIgYXMgTmFubyBEYXRhYmFzZVxuICAgKiAgIEEtPj5EQjogYnVsayh7ZG9jczogbW9kZWxzfSlcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgREItLT4+QTogcmVzcG9uc2UgYXJyYXlcbiAgICogICAgIEEtPj5BOiBDaGVjayBpZiBhbGwgcmVzcG9uc2VzIGhhdmUgbm8gZXJyb3JzXG4gICAqICAgICBhbHQgQWxsIE9LXG4gICAqICAgICAgIEEtPj5BOiBhc3NpZ25NdWx0aXBsZU1ldGFkYXRhKG1vZGVscywgcmV2cylcbiAgICogICAgICAgQS0tPj5BOiByZXR1cm4gZG9jdW1lbnRzIHdpdGggbWV0YWRhdGFcbiAgICogICAgIGVsc2UgU29tZSBlcnJvcnNcbiAgICogICAgICAgQS0+PkE6IENvbGxlY3QgZXJyb3IgbWVzc2FnZXNcbiAgICogICAgICAgQS0tPj5BOiB0aHJvdyBJbnRlcm5hbEVycm9yIHdpdGggY29sbGVjdGVkIG1lc3NhZ2VzXG4gICAqICAgICBlbmRcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBEQi0tPj5BOiBlcnJvclxuICAgKiAgICAgQS0tPj5BOiB0aHJvdyBwYXJzZUVycm9yKGUpXG4gICAqICAgZW5kXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBjcmVhdGVBbGwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWRzOiBzdHJpbmdbXSB8IG51bWJlcltdLFxuICAgIG1vZGVsczogUmVjb3JkPHN0cmluZywgYW55PltdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgbGV0IHJlc3BvbnNlOiBEb2N1bWVudEJ1bGtSZXNwb25zZVtdO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMubmF0aXZlLmJ1bGsoeyBkb2NzOiBtb2RlbHMgfSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyB0aGlzLnBhcnNlRXJyb3IoZSk7XG4gICAgfVxuICAgIGlmICghcmVzcG9uc2UuZXZlcnkoKHIpID0+ICFyLmVycm9yKSkge1xuICAgICAgY29uc3QgZXJyb3JzID0gcmVzcG9uc2UucmVkdWNlKChhY2N1bTogc3RyaW5nW10sIGVsLCBpKSA9PiB7XG4gICAgICAgIGlmIChlbC5lcnJvcilcbiAgICAgICAgICBhY2N1bS5wdXNoKFxuICAgICAgICAgICAgYGVsICR7aX06ICR7ZWwuZXJyb3J9JHtlbC5yZWFzb24gPyBgIC0gJHtlbC5yZWFzb259YCA6IFwiXCJ9YFxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgIH0sIFtdKTtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGVycm9ycy5qb2luKFwiXFxuXCIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hc3NpZ25NdWx0aXBsZU1ldGFkYXRhKFxuICAgICAgbW9kZWxzLFxuICAgICAgcmVzcG9uc2UubWFwKChyKSA9PiByLnJldiBhcyBzdHJpbmcpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGEgZG9jdW1lbnQgZnJvbSB0aGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgRmV0Y2hlcyBhIHNpbmdsZSBkb2N1bWVudCBmcm9tIHRoZSBOYW5vIGRhdGFiYXNlIGJ5IGl0cyBJRFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRhYmxlL2NvbGxlY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IGlkIC0gVGhlIGRvY3VtZW50IGlkZW50aWZpZXJcbiAgICogQHJldHVybiB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJldHJpZXZlZCBkb2N1bWVudCB3aXRoIG1ldGFkYXRhXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgTmFub0FkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBEQiBhcyBOYW5vIERhdGFiYXNlXG4gICAqICAgQS0+PkE6IGdlbmVyYXRlSWQodGFibGVOYW1lLCBpZClcbiAgICogICBBLT4+REI6IGdldChfaWQpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIERCLS0+PkE6IHJlY29yZFxuICAgKiAgICAgQS0+PkE6IGFzc2lnbk1ldGFkYXRhKHJlY29yZCwgcmVjb3JkLl9yZXYpXG4gICAqICAgICBBLS0+PkE6IHJldHVybiBkb2N1bWVudCB3aXRoIG1ldGFkYXRhXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgREItLT4+QTogZXJyb3JcbiAgICogICAgIEEtLT4+QTogdGhyb3cgcGFyc2VFcnJvcihlKVxuICAgKiAgIGVuZFxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgcmVhZChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGNvbnN0IF9pZCA9IHRoaXMuZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkKTtcbiAgICBsZXQgcmVjb3JkOiBEb2N1bWVudEdldFJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZWNvcmQgPSBhd2FpdCB0aGlzLm5hdGl2ZS5nZXQoX2lkKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IHRoaXMucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXNzaWduTWV0YWRhdGEocmVjb3JkLCByZWNvcmQuX3Jldik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBtdWx0aXBsZSBkb2N1bWVudHMgZnJvbSB0aGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgRmV0Y2hlcyBtdWx0aXBsZSBkb2N1bWVudHMgZnJvbSB0aGUgTmFubyBkYXRhYmFzZSBieSB0aGVpciBJRHMgaW4gYSBzaW5nbGUgb3BlcmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD59IGlkcyAtIEFycmF5IG9mIGRvY3VtZW50IGlkZW50aWZpZXJzXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2YgcmV0cmlldmVkIGRvY3VtZW50cyB3aXRoIG1ldGFkYXRhXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgTmFub0FkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBEQiBhcyBOYW5vIERhdGFiYXNlXG4gICAqICAgQS0+PkE6IE1hcCBpZHMgdG8gZ2VuZXJhdGVJZCh0YWJsZU5hbWUsIGlkKVxuICAgKiAgIEEtPj5EQjogZmV0Y2goe2tleXM6IG1hcHBlZElkc30sIHt9KVxuICAgKiAgIERCLS0+PkE6IHJlc3VsdHNcbiAgICogICBBLT4+QTogUHJvY2VzcyBlYWNoIHJlc3VsdCByb3dcbiAgICogICBsb29wIEZvciBlYWNoIHJvd1xuICAgKiAgICAgYWx0IFJvdyBoYXMgZXJyb3JcbiAgICogICAgICAgQS0tPj5BOiB0aHJvdyBJbnRlcm5hbEVycm9yXG4gICAqICAgICBlbHNlIFJvdyBoYXMgZG9jdW1lbnRcbiAgICogICAgICAgQS0+PkE6IGFzc2lnbk1ldGFkYXRhKGRvYywgZG9jLl9yZXYpXG4gICAqICAgICBlbHNlIE5vIGRvY3VtZW50XG4gICAqICAgICAgIEEtLT4+QTogdGhyb3cgSW50ZXJuYWxFcnJvclxuICAgKiAgICAgZW5kXG4gICAqICAgZW5kXG4gICAqICAgQS0tPj5BOiByZXR1cm4gZG9jdW1lbnRzIHdpdGggbWV0YWRhdGFcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHJlYWRBbGwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWRzOiAoc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMubmF0aXZlLmZldGNoKFxuICAgICAgeyBrZXlzOiBpZHMubWFwKChpZCkgPT4gdGhpcy5nZW5lcmF0ZUlkKHRhYmxlTmFtZSwgaWQgYXMgYW55KSkgfSxcbiAgICAgIHt9XG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0cy5yb3dzLm1hcCgocikgPT4ge1xuICAgICAgaWYgKChyIGFzIGFueSkuZXJyb3IpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKChyIGFzIGFueSkuZXJyb3IpO1xuICAgICAgaWYgKChyIGFzIGFueSkuZG9jKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IE9iamVjdC5hc3NpZ24oe30sIChyIGFzIGFueSkuZG9jKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzaWduTWV0YWRhdGEocmVzLCAociBhcyBhbnkpLmRvY1tDb3VjaERCS2V5cy5SRVZdKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiU2hvdWxkIGJlIGltcG9zc2libGVcIik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgYSBkb2N1bWVudCBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgVXBkYXRlcyBhbiBleGlzdGluZyBkb2N1bWVudCBpbiB0aGUgTmFubyBkYXRhYmFzZSB3aXRoIHRoZSBwcm92aWRlZCBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUvY29sbGVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gaWQgLSBUaGUgZG9jdW1lbnQgaWRlbnRpZmllclxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsIC0gVGhlIHVwZGF0ZWQgZG9jdW1lbnQgZGF0YVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgdXBkYXRlZCBkb2N1bWVudCB3aXRoIG1ldGFkYXRhXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgTmFub0FkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBEQiBhcyBOYW5vIERhdGFiYXNlXG4gICAqICAgQS0+PkRCOiBpbnNlcnQobW9kZWwpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIERCLS0+PkE6IHJlc3BvbnNlIHdpdGggb2s9dHJ1ZVxuICAgKiAgICAgQS0+PkE6IGFzc2lnbk1ldGFkYXRhKG1vZGVsLCByZXNwb25zZS5yZXYpXG4gICAqICAgICBBLS0+PkE6IHJldHVybiBkb2N1bWVudCB3aXRoIG1ldGFkYXRhXG4gICAqICAgZWxzZSBFcnJvclxuICAgKiAgICAgREItLT4+QTogZXJyb3JcbiAgICogICAgIEEtLT4+QTogdGhyb3cgcGFyc2VFcnJvcihlKVxuICAgKiAgIGVsc2UgTm90IE9LXG4gICAqICAgICBEQi0tPj5BOiByZXNwb25zZSB3aXRoIG9rPWZhbHNlXG4gICAqICAgICBBLS0+PkE6IHRocm93IEludGVybmFsRXJyb3JcbiAgICogICBlbmRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIGxldCByZXNwb25zZTogRG9jdW1lbnRJbnNlcnRSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLm5hdGl2ZS5pbnNlcnQobW9kZWwpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2Uub2spXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byB1cGRhdGUgZG9jIGlkOiAke2lkfSBpbiB0YWJsZSAke3RhYmxlTmFtZX1gXG4gICAgICApO1xuICAgIHJldHVybiB0aGlzLmFzc2lnbk1ldGFkYXRhKG1vZGVsLCByZXNwb25zZS5yZXYpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgdXBkYXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkczogc3RyaW5nW10gfCBudW1iZXJbXSxcbiAgICBtb2RlbHM6IFJlY29yZDxzdHJpbmcsIGFueT5bXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGxldCByZXNwb25zZTogRG9jdW1lbnRCdWxrUmVzcG9uc2VbXTtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLm5hdGl2ZS5idWxrKHsgZG9jczogbW9kZWxzIH0pO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICBpZiAoIXJlc3BvbnNlLmV2ZXJ5KChyKSA9PiAhci5lcnJvcikpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3BvbnNlLnJlZHVjZSgoYWNjdW06IHN0cmluZ1tdLCBlbCwgaSkgPT4ge1xuICAgICAgICBpZiAoZWwuZXJyb3IpXG4gICAgICAgICAgYWNjdW0ucHVzaChcbiAgICAgICAgICAgIGBlbCAke2l9OiAke2VsLmVycm9yfSR7ZWwucmVhc29uID8gYCAtICR7ZWwucmVhc29ufWAgOiBcIlwifWBcbiAgICAgICAgICApO1xuICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICB9LCBbXSk7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlcnJvcnMuam9pbihcIlxcblwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXNzaWduTXVsdGlwbGVNZXRhZGF0YShcbiAgICAgIG1vZGVscyxcbiAgICAgIHJlc3BvbnNlLm1hcCgocikgPT4gci5yZXYgYXMgc3RyaW5nKVxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBkZWxldGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlclxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICBjb25zdCBfaWQgPSB0aGlzLmdlbmVyYXRlSWQodGFibGVOYW1lLCBpZCk7XG4gICAgbGV0IHJlY29yZDogRG9jdW1lbnRHZXRSZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgcmVjb3JkID0gYXdhaXQgdGhpcy5uYXRpdmUuZ2V0KF9pZCk7XG4gICAgICBhd2FpdCB0aGlzLm5hdGl2ZS5kZXN0cm95KF9pZCwgcmVjb3JkLl9yZXYpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hc3NpZ25NZXRhZGF0YShyZWNvcmQsIHJlY29yZC5fcmV2KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGRlbGV0ZUFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZHM6IChzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpW11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5uYXRpdmUuZmV0Y2goXG4gICAgICB7IGtleXM6IGlkcy5tYXAoKGlkKSA9PiB0aGlzLmdlbmVyYXRlSWQodGFibGVOYW1lLCBpZCBhcyBhbnkpKSB9LFxuICAgICAge31cbiAgICApO1xuICAgIGNvbnN0IGRlbGV0aW9uOiBEb2N1bWVudEJ1bGtSZXNwb25zZVtdID0gYXdhaXQgdGhpcy5uYXRpdmUuYnVsayh7XG4gICAgICBkb2NzOiByZXN1bHRzLnJvd3MubWFwKChyKSA9PiB7XG4gICAgICAgIChyIGFzIGFueSlbQ291Y2hEQktleXMuREVMRVRFRF0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIGRlbGV0aW9uLmZvckVhY2goKGQ6IERvY3VtZW50QnVsa1Jlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAoZC5lcnJvcikgY29uc29sZS5lcnJvcihkLmVycm9yKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0cy5yb3dzLm1hcCgocikgPT4ge1xuICAgICAgaWYgKChyIGFzIGFueSkuZXJyb3IpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKChyIGFzIGFueSkuZXJyb3IpO1xuICAgICAgaWYgKChyIGFzIGFueSkuZG9jKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IE9iamVjdC5hc3NpZ24oe30sIChyIGFzIGFueSkuZG9jKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNzaWduTWV0YWRhdGEocmVzLCAociBhcyBhbnkpLmRvY1tDb3VjaERCS2V5cy5SRVZdKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiU2hvdWxkIGJlIGltcG9zc2libGVcIik7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyByYXc8Uj4ocmF3SW5wdXQ6IE1hbmdvUXVlcnksIGRvY3NPbmx5ID0gdHJ1ZSk6IFByb21pc2U8Uj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZTogTWFuZ29SZXNwb25zZTxSPiA9IGF3YWl0IHRoaXMubmF0aXZlLmZpbmQocmF3SW5wdXQpO1xuICAgICAgaWYgKHJlc3BvbnNlLndhcm5pbmcpIGNvbnNvbGUud2FybihyZXNwb25zZS53YXJuaW5nKTtcbiAgICAgIGlmIChkb2NzT25seSkgcmV0dXJuIHJlc3BvbnNlLmRvY3MgYXMgUjtcbiAgICAgIHJldHVybiByZXNwb25zZSBhcyBSO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgdGhpcy5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb25uZWN0KFxuICAgIHVzZXI6IHN0cmluZyxcbiAgICBwYXNzOiBzdHJpbmcsXG4gICAgaG9zdCA9IFwibG9jYWxob3N0OjU5ODRcIixcbiAgICBwcm90b2NvbDogXCJodHRwXCIgfCBcImh0dHBzXCIgPSBcImh0dHBcIlxuICApOiBTZXJ2ZXJTY29wZSB7XG4gICAgcmV0dXJuIE5hbm8oYCR7cHJvdG9jb2x9Oi8vJHt1c2VyfToke3Bhc3N9QCR7aG9zdH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBkYXRhYmFzZSBvbiB0aGUgTmFubyBzZXJ2ZXJcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBvbiB0aGUgY29ubmVjdGVkIE5hbm8gc2VydmVyXG4gICAqIEBwYXJhbSB7U2VydmVyU2NvcGV9IGNvbiAtIFRoZSBOYW5vIHNlcnZlciBjb25uZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIHRvIGNyZWF0ZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBkYXRhYmFzZSBpcyBjcmVhdGVkXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgTmFub0FkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBEQiBhcyBOYW5vIFNlcnZlclxuICAgKiAgIEEtPj5EQjogZGIuY3JlYXRlKG5hbWUpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIERCLS0+PkE6IHJlc3VsdCB3aXRoIG9rPXRydWVcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBEQi0tPj5BOiBlcnJvclxuICAgKiAgICAgQS0tPj5BOiB0aHJvdyBwYXJzZUVycm9yKGUpXG4gICAqICAgZWxzZSBOb3QgT0tcbiAgICogICAgIERCLS0+PkE6IHJlc3VsdCB3aXRoIG9rPWZhbHNlXG4gICAqICAgICBBLS0+PkE6IHRocm93IHBhcnNlRXJyb3IoZXJyb3IsIHJlYXNvbilcbiAgICogICBlbmRcbiAgICovXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVEYXRhYmFzZShjb246IFNlcnZlclNjb3BlLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzdWx0OiBhbnk7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IGNvbi5kYi5jcmVhdGUobmFtZSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBDb3VjaERCQWRhcHRlci5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICBjb25zdCB7IG9rLCBlcnJvciwgcmVhc29uIH0gPSByZXN1bHQ7XG4gICAgaWYgKCFvaykgdGhyb3cgQ291Y2hEQkFkYXB0ZXIucGFyc2VFcnJvcihlcnJvciBhcyBzdHJpbmcsIHJlYXNvbik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgYSBkYXRhYmFzZSBmcm9tIHRoZSBOYW5vIHNlcnZlclxuICAgKiBAc3VtbWFyeSBSZW1vdmVzIGFuIGV4aXN0aW5nIGRhdGFiYXNlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGZyb20gdGhlIGNvbm5lY3RlZCBOYW5vIHNlcnZlclxuICAgKiBAcGFyYW0ge1NlcnZlclNjb3BlfSBjb24gLSBUaGUgTmFubyBzZXJ2ZXIgY29ubmVjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSB0byBkZWxldGVcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZGF0YWJhc2UgaXMgZGVsZXRlZFxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBBIGFzIE5hbm9BZGFwdGVyXG4gICAqICAgcGFydGljaXBhbnQgREIgYXMgTmFubyBTZXJ2ZXJcbiAgICogICBBLT4+REI6IGRiLmRlc3Ryb3kobmFtZSlcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgREItLT4+QTogcmVzdWx0IHdpdGggb2s9dHJ1ZVxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIERCLS0+PkE6IGVycm9yXG4gICAqICAgICBBLS0+PkE6IHRocm93IHBhcnNlRXJyb3IoZSlcbiAgICogICBlbHNlIE5vdCBPS1xuICAgKiAgICAgREItLT4+QTogcmVzdWx0IHdpdGggb2s9ZmFsc2VcbiAgICogICAgIEEtLT4+QTogdGhyb3cgSW50ZXJuYWxFcnJvclxuICAgKiAgIGVuZFxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZURhdGFiYXNlKGNvbjogU2VydmVyU2NvcGUsIG5hbWU6IHN0cmluZykge1xuICAgIGxldCByZXN1bHQ7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IGNvbi5kYi5kZXN0cm95KG5hbWUpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgQ291Y2hEQkFkYXB0ZXIucGFyc2VFcnJvcihlKTtcbiAgICB9XG4gICAgY29uc3QgeyBvayB9ID0gcmVzdWx0O1xuICAgIGlmICghb2spXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIGRlbGV0ZSBkYXRhYmFzZSB3aXRoIG5hbWUgJHtuYW1lfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IHVzZXIgYW5kIGdyYW50cyBhY2Nlc3MgdG8gYSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgbmV3IHVzZXIgaW4gdGhlIE5hbm8gc2VydmVyIGFuZCBjb25maWd1cmVzIHNlY3VyaXR5IHRvIGdyYW50IHRoZSB1c2VyIGFjY2VzcyB0byBhIHNwZWNpZmljIGRhdGFiYXNlXG4gICAqIEBwYXJhbSB7U2VydmVyU2NvcGV9IGNvbiAtIFRoZSBOYW5vIHNlcnZlciBjb25uZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYk5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgdG8gZ3JhbnQgYWNjZXNzIHRvXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyIC0gVGhlIHVzZXJuYW1lIHRvIGNyZWF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFzcyAtIFRoZSBwYXNzd29yZCBmb3IgdGhlIG5ldyB1c2VyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFtyb2xlcz1bXCJyZWFkZXJcIiwgXCJ3cml0ZXJcIl1dIC0gVGhlIHJvbGVzIHRvIGFzc2lnbiB0byB0aGUgdXNlclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB1c2VyIGlzIGNyZWF0ZWQgYW5kIGdyYW50ZWQgYWNjZXNzXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgTmFub0FkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBVIGFzIF91c2VycyBEYXRhYmFzZVxuICAgKiAgIHBhcnRpY2lwYW50IFMgYXMgU2VjdXJpdHkgQVBJXG4gICAqICAgQS0+PkE6IENyZWF0ZSB1c2VyIG9iamVjdFxuICAgKiAgIEEtPj5VOiBpbnNlcnQodXNlcilcbiAgICogICBhbHQgU3VjY2Vzc1xuICAgKiAgICAgVS0tPj5BOiByZXNwb25zZSB3aXRoIG9rPXRydWVcbiAgICogICAgIEEtPj5TOiBQVVQgX3NlY3VyaXR5IHdpdGggdXNlciBwZXJtaXNzaW9uc1xuICAgKiAgICAgYWx0IFNlY3VyaXR5IFN1Y2Nlc3NcbiAgICogICAgICAgUy0tPj5BOiBzZWN1cml0eSByZXNwb25zZSB3aXRoIG9rPXRydWVcbiAgICogICAgIGVsc2UgU2VjdXJpdHkgRmFpbHVyZVxuICAgKiAgICAgICBTLS0+PkE6IHNlY3VyaXR5IHJlc3BvbnNlIHdpdGggb2s9ZmFsc2VcbiAgICogICAgICAgQS0tPj5BOiB0aHJvdyBJbnRlcm5hbEVycm9yXG4gICAqICAgICBlbmRcbiAgICogICBlbHNlIEVycm9yXG4gICAqICAgICBVLS0+PkE6IGVycm9yXG4gICAqICAgICBBLS0+PkE6IHRocm93IHBhcnNlRXJyb3IoZSlcbiAgICogICBlbHNlIE5vdCBPS1xuICAgKiAgICAgVS0tPj5BOiByZXNwb25zZSB3aXRoIG9rPWZhbHNlXG4gICAqICAgICBBLS0+PkE6IHRocm93IEludGVybmFsRXJyb3JcbiAgICogICBlbmRcbiAgICovXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVVc2VyKFxuICAgIGNvbjogU2VydmVyU2NvcGUsXG4gICAgZGJOYW1lOiBzdHJpbmcsXG4gICAgdXNlcjogc3RyaW5nLFxuICAgIHBhc3M6IHN0cmluZyxcbiAgICByb2xlczogc3RyaW5nW10gPSBbXCJyZWFkZXJcIiwgXCJ3cml0ZXJcIl1cbiAgKSB7XG4gICAgY29uc3QgdXNlcnMgPSBjb24uZGIudXNlKFwiX3VzZXJzXCIpO1xuICAgIGNvbnN0IHVzciA9IHtcbiAgICAgIF9pZDogXCJvcmcuY291Y2hkYi51c2VyOlwiICsgdXNlcixcbiAgICAgIG5hbWU6IHVzZXIsXG4gICAgICBwYXNzd29yZDogcGFzcyxcbiAgICAgIHJvbGVzOiByb2xlcyxcbiAgICAgIHR5cGU6IFwidXNlclwiLFxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNyZWF0ZWQ6IERvY3VtZW50SW5zZXJ0UmVzcG9uc2UgPSBhd2FpdCB1c2Vycy5pbnNlcnQoXG4gICAgICAgIHVzciBhcyBNYXliZURvY3VtZW50XG4gICAgICApO1xuICAgICAgY29uc3QgeyBvayB9ID0gY3JlYXRlZDtcbiAgICAgIGlmICghb2spIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIHVzZXIgJHt1c2VyfWApO1xuICAgICAgY29uc3Qgc2VjdXJpdHk6IGFueSA9IGF3YWl0IGNvbi5yZXF1ZXN0KHtcbiAgICAgICAgZGI6IGRiTmFtZSxcbiAgICAgICAgbWV0aG9kOiBcInB1dFwiLFxuICAgICAgICBwYXRoOiBcIl9zZWN1cml0eVwiLFxuICAgICAgICAvLyBoZWFkZXJzOiB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIH0sXG4gICAgICAgIGJvZHk6IHtcbiAgICAgICAgICBhZG1pbnM6IHtcbiAgICAgICAgICAgIG5hbWVzOiBbdXNlcl0sXG4gICAgICAgICAgICByb2xlczogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZW1iZXJzOiB7XG4gICAgICAgICAgICBuYW1lczogW3VzZXJdLFxuICAgICAgICAgICAgcm9sZXM6IHJvbGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGlmICghc2VjdXJpdHkub2spXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gYXV0aG9yaXplIHVzZXIgJHt1c2VyfSB0byBkYiAke2RiTmFtZX1gXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBDb3VjaERCQWRhcHRlci5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlcyBhIHVzZXIgZnJvbSB0aGUgTmFubyBzZXJ2ZXJcbiAgICogQHN1bW1hcnkgUmVtb3ZlcyBhbiBleGlzdGluZyB1c2VyIGZyb20gdGhlIE5hbm8gc2VydmVyXG4gICAqIEBwYXJhbSB7U2VydmVyU2NvcGV9IGNvbiAtIFRoZSBOYW5vIHNlcnZlciBjb25uZWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYk5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgKHVzZWQgZm9yIGxvZ2dpbmcgcHVycG9zZXMpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyIC0gVGhlIHVzZXJuYW1lIHRvIGRlbGV0ZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB1c2VyIGlzIGRlbGV0ZWRcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgQSBhcyBOYW5vQWRhcHRlclxuICAgKiAgIHBhcnRpY2lwYW50IFUgYXMgX3VzZXJzIERhdGFiYXNlXG4gICAqICAgQS0+PkE6IEdlbmVyYXRlIHVzZXIgSURcbiAgICogICBBLT4+VTogZ2V0KGlkKVxuICAgKiAgIFUtLT4+QTogdXNlciBkb2N1bWVudFxuICAgKiAgIEEtPj5VOiBkZXN0cm95KGlkLCB1c2VyLl9yZXYpXG4gICAqICAgYWx0IFN1Y2Nlc3NcbiAgICogICAgIFUtLT4+QTogc3VjY2VzcyByZXNwb25zZVxuICAgKiAgIGVsc2UgRXJyb3JcbiAgICogICAgIFUtLT4+QTogZXJyb3JcbiAgICogICAgIEEtLT4+QTogdGhyb3cgcGFyc2VFcnJvcihlKVxuICAgKiAgIGVuZFxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoY29uOiBTZXJ2ZXJTY29wZSwgZGJOYW1lOiBzdHJpbmcsIHVzZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHVzZXJzID0gY29uLmRiLnVzZShcIl91c2Vyc1wiKTtcbiAgICBjb25zdCBpZCA9IFwib3JnLmNvdWNoZGIudXNlcjpcIiArIHVzZXI7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVzciA9IGF3YWl0IHVzZXJzLmdldChpZCk7XG4gICAgICBhd2FpdCB1c2Vycy5kZXN0cm95KGlkLCB1c3IuX3Jldik7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBDb3VjaERCQWRhcHRlci5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU2V0cyB1cCBkZWNvcmF0aW9ucyBmb3IgTmFuby1zcGVjaWZpYyBtb2RlbCBwcm9wZXJ0aWVzXG4gICAqIEBzdW1tYXJ5IENvbmZpZ3VyZXMgZGVjb3JhdG9ycyBmb3IgY3JlYXRlZF9ieSBhbmQgdXBkYXRlZF9ieSBmaWVsZHMgaW4gbW9kZWxzIHRvIGJlIGF1dG9tYXRpY2FsbHlcbiAgICogcG9wdWxhdGVkIHdpdGggdGhlIHVzZXIgZnJvbSB0aGUgY29udGV4dCB3aGVuIGRvY3VtZW50cyBhcmUgY3JlYXRlZCBvciB1cGRhdGVkXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IEEgYXMgTmFub0FkYXB0ZXJcbiAgICogICBwYXJ0aWNpcGFudCBEIGFzIERlY29yYXRpb25cbiAgICogICBwYXJ0aWNpcGFudCBSIGFzIFJlcG9zaXRvcnlcbiAgICogICBBLT4+Ujoga2V5KFBlcnNpc3RlbmNlS2V5cy5DUkVBVEVEX0JZKVxuICAgKiAgIFItLT4+QTogY3JlYXRlZEJ5S2V5XG4gICAqICAgQS0+PkQ6IGZsYXZvdXJlZEFzKFwibmFub1wiKVxuICAgKiAgIEEtPj5EOiBmb3IoY3JlYXRlZEJ5S2V5KVxuICAgKiAgIEEtPj5EOiBkZWZpbmUob25DcmVhdGUoY3JlYXRlZEJ5T25OYW5vQ3JlYXRlVXBkYXRlKSwgcHJvcE1ldGFkYXRhKVxuICAgKiAgIEEtPj5EOiBhcHBseSgpXG4gICAqICAgQS0+PlI6IGtleShQZXJzaXN0ZW5jZUtleXMuVVBEQVRFRF9CWSlcbiAgICogICBSLS0+PkE6IHVwZGF0ZWRCeUtleVxuICAgKiAgIEEtPj5EOiBmbGF2b3VyZWRBcyhcIm5hbm9cIilcbiAgICogICBBLT4+RDogZm9yKHVwZGF0ZWRCeUtleSlcbiAgICogICBBLT4+RDogZGVmaW5lKG9uQ3JlYXRlKGNyZWF0ZWRCeU9uTmFub0NyZWF0ZVVwZGF0ZSksIHByb3BNZXRhZGF0YSlcbiAgICogICBBLT4+RDogYXBwbHkoKVxuICAgKi9cbiAgc3RhdGljIGRlY29yYXRpb24oKSB7XG4gICAgY29uc3QgY3JlYXRlZEJ5S2V5ID0gUmVwb3NpdG9yeS5rZXkoUGVyc2lzdGVuY2VLZXlzLkNSRUFURURfQlkpO1xuICAgIGNvbnN0IHVwZGF0ZWRCeUtleSA9IFJlcG9zaXRvcnkua2V5KFBlcnNpc3RlbmNlS2V5cy5VUERBVEVEX0JZKTtcbiAgICBEZWNvcmF0aW9uLmZsYXZvdXJlZEFzKFwibmFub1wiKVxuICAgICAgLmZvcihjcmVhdGVkQnlLZXkpXG4gICAgICAuZGVmaW5lKFxuICAgICAgICBvbkNyZWF0ZShjcmVhdGVkQnlPbk5hbm9DcmVhdGVVcGRhdGUpLFxuICAgICAgICBwcm9wTWV0YWRhdGEoY3JlYXRlZEJ5S2V5LCB7fSlcbiAgICAgIClcbiAgICAgIC5hcHBseSgpO1xuXG4gICAgRGVjb3JhdGlvbi5mbGF2b3VyZWRBcyhcIm5hbm9cIilcbiAgICAgIC5mb3IodXBkYXRlZEJ5S2V5KVxuICAgICAgLmRlZmluZShcbiAgICAgICAgb25DcmVhdGUoY3JlYXRlZEJ5T25OYW5vQ3JlYXRlVXBkYXRlKSxcbiAgICAgICAgcHJvcE1ldGFkYXRhKHVwZGF0ZWRCeUtleSwge30pXG4gICAgICApXG4gICAgICAuYXBwbHkoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTmFub0FkYXB0ZXIgfSBmcm9tIFwiLi9hZGFwdGVyXCI7XG5cbi8vIEZvcmNlcyBvdmVycmlkZSBmb3IgTmFubyBEZWNvcmF0aW9uXG5OYW5vQWRhcHRlci5kZWNvcmF0aW9uKCk7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vTmFub1JlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG4vLyBMZWZ0IHRvIHRoZSBlbmQgb24gcHVycG9zZVxuZXhwb3J0ICogZnJvbSBcIi4vYWRhcHRlclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIFR5cGVTY3JpcHQgbW9kdWxlIGZvciBpbnRlcmFjdGluZyB3aXRoIE5hbm8gZGF0YWJhc2VzXG4gKiBAc3VtbWFyeSBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNldCBvZiB1dGlsaXRpZXMsIGNsYXNzZXMsIGFuZCB0eXBlcyBmb3Igd29ya2luZyB3aXRoIE5hbm8gZGF0YWJhc2VzLiBJdCBpbmNsdWRlcyByZXBvc2l0b3J5IHBhdHRlcm5zLCBhZGFwdGVycywgYW5kIHR5cGUgZGVmaW5pdGlvbnMgdG8gc2ltcGxpZnkgZGF0YWJhc2Ugb3BlcmF0aW9ucy5cbiAqIEBtb2R1bGUgZm9yLW5hbm9cbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQYWNrYWdlIHZlcnNpb24gaWRlbnRpZmllclxuICogQHN1bW1hcnkgU3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBmb3ItbmFubyBtb2R1bGVcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1uYW5vXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7QUFLRztBQUNJLE1BQU0sV0FBVyxHQUFHOztBQ0kzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQ0c7QUFDRyxNQUFPLFlBQWEsU0FBUSxRQUE0QixDQUFBO0FBRzVELElBQUEsV0FBQSxDQUFvQixVQUFVLElBQUksRUFBQTtBQUNoQyxRQUFBLEtBQUssRUFBRTtRQURXLElBQU8sQ0FBQSxPQUFBLEdBQVAsT0FBTztRQURuQixJQUFjLENBQUEsY0FBQSxHQUFXLENBQUM7O0FBS2xDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4Qkc7QUFDTyxJQUFBLE1BQU0sYUFBYSxDQUMzQixLQUEwQixFQUMxQixRQUEw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
@@ -13,4 +13,4 @@ export * from "./adapter";
13
13
  * @const VERSION
14
14
  * @memberOf module:for-nano
15
15
  */
16
- export declare const VERSION = "0.1.3";
16
+ export declare const VERSION = "0.1.4";
package/lib/esm/index.js CHANGED
@@ -17,5 +17,5 @@ export * from "./adapter.js";
17
17
  * @const VERSION
18
18
  * @memberOf module:for-nano
19
19
  */
20
- export const VERSION = "0.1.3";
20
+ export const VERSION = "0.1.4";
21
21
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxxQkFBa0I7QUFFeEMsc0NBQXNDO0FBQ3RDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUV6QiwrQkFBNEI7QUFDNUIsb0NBQWlDO0FBQ2pDLDJCQUF3QjtBQUN4Qiw2QkFBNkI7QUFDN0IsNkJBQTBCO0FBRTFCOzs7O0dBSUc7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYW5vQWRhcHRlciB9IGZyb20gXCIuL2FkYXB0ZXJcIjtcblxuLy8gRm9yY2VzIG92ZXJyaWRlIGZvciBOYW5vIERlY29yYXRpb25cbk5hbm9BZGFwdGVyLmRlY29yYXRpb24oKTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9OYW5vUmVwb3NpdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbi8vIExlZnQgdG8gdGhlIGVuZCBvbiBwdXJwb3NlXG5leHBvcnQgKiBmcm9tIFwiLi9hZGFwdGVyXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgVHlwZVNjcmlwdCBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdpdGggTmFubyBkYXRhYmFzZXNcbiAqIEBzdW1tYXJ5IFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdGllcywgY2xhc3NlcywgYW5kIHR5cGVzIGZvciB3b3JraW5nIHdpdGggTmFubyBkYXRhYmFzZXMuIEl0IGluY2x1ZGVzIHJlcG9zaXRvcnkgcGF0dGVybnMsIGFkYXB0ZXJzLCBhbmQgdHlwZSBkZWZpbml0aW9ucyB0byBzaW1wbGlmeSBkYXRhYmFzZSBvcGVyYXRpb25zLlxuICogQG1vZHVsZSBmb3ItbmFub1xuICovXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhY2thZ2UgdmVyc2lvbiBpZGVudGlmaWVyXG4gKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uIHN0cmluZyBmb3IgdGhlIGZvci1uYW5vIG1vZHVsZVxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLW5hbm9cbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
package/lib/index.cjs CHANGED
@@ -34,5 +34,5 @@ __exportStar(require("./adapter.cjs"), exports);
34
34
  * @const VERSION
35
35
  * @memberOf module:for-nano
36
36
  */
37
- exports.VERSION = "0.1.3";
37
+ exports.VERSION = "0.1.4";
38
38
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBd0M7QUFFeEMsc0NBQXNDO0FBQ3RDLHFCQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7QUFFekIsa0RBQTRCO0FBQzVCLHVEQUFpQztBQUNqQyw4Q0FBd0I7QUFDeEIsNkJBQTZCO0FBQzdCLGdEQUEwQjtBQUUxQjs7OztHQUlHO0FBRUg7Ozs7O0dBS0c7QUFDVSxRQUFBLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYW5vQWRhcHRlciB9IGZyb20gXCIuL2FkYXB0ZXJcIjtcblxuLy8gRm9yY2VzIG92ZXJyaWRlIGZvciBOYW5vIERlY29yYXRpb25cbk5hbm9BZGFwdGVyLmRlY29yYXRpb24oKTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9OYW5vUmVwb3NpdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbi8vIExlZnQgdG8gdGhlIGVuZCBvbiBwdXJwb3NlXG5leHBvcnQgKiBmcm9tIFwiLi9hZGFwdGVyXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgVHlwZVNjcmlwdCBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdpdGggTmFubyBkYXRhYmFzZXNcbiAqIEBzdW1tYXJ5IFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2V0IG9mIHV0aWxpdGllcywgY2xhc3NlcywgYW5kIHR5cGVzIGZvciB3b3JraW5nIHdpdGggTmFubyBkYXRhYmFzZXMuIEl0IGluY2x1ZGVzIHJlcG9zaXRvcnkgcGF0dGVybnMsIGFkYXB0ZXJzLCBhbmQgdHlwZSBkZWZpbml0aW9ucyB0byBzaW1wbGlmeSBkYXRhYmFzZSBvcGVyYXRpb25zLlxuICogQG1vZHVsZSBmb3ItbmFub1xuICovXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBhY2thZ2UgdmVyc2lvbiBpZGVudGlmaWVyXG4gKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uIHN0cmluZyBmb3IgdGhlIGZvci1uYW5vIG1vZHVsZVxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLW5hbm9cbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -13,4 +13,4 @@ export * from "./adapter";
13
13
  * @const VERSION
14
14
  * @memberOf module:for-nano
15
15
  */
16
- export declare const VERSION = "0.1.3";
16
+ export declare const VERSION = "0.1.4";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/for-nano",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "decaf-ts persistence adapter for CouchDB via nano",
5
5
  "type": "module",
6
6
  "exports": {