@vtj/pro 0.8.10 → 0.8.12
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/@vtj/materials/assets/antdv/index.umd.js +2 -2
- package/dist/@vtj/materials/assets/charts/index.umd.js +2 -2
- package/dist/@vtj/materials/assets/element/index.umd.js +2 -2
- package/dist/@vtj/materials/assets/ui/index.umd.js +2 -2
- package/dist/@vtj/materials/deps/@vtj/charts/index.umd.js +2 -2
- package/dist/@vtj/materials/deps/@vtj/icons/index.umd.js +2 -2
- package/dist/@vtj/materials/deps/@vtj/ui/index.umd.js +2 -2
- package/dist/@vtj/materials/deps/@vtj/ui/style.css +1 -1
- package/dist/@vtj/materials/deps/@vtj/utils/index.umd.js +2 -2
- package/dist/assets/Editor-bVAaI2zL-DDqBmTNk.js +1 -0
- package/dist/assets/css.worker-BG3X4ypZ-CNHOSdx3.js +1 -0
- package/dist/assets/editor.worker-CdJourTJ-oopVnKOQ.js +1 -0
- package/dist/assets/html.worker-BCBdCLMV-DrDNRdSI.js +1 -0
- package/dist/assets/{index-BTmaTkWx.js → index-BmowuNkt.js} +57 -57
- package/dist/assets/{index-0CxTi-rJ.js → index-DE2ryrxm.js} +2 -2
- package/dist/assets/index-DJaFRQEA.js +1 -0
- package/dist/assets/index-UUuuteXI.css +1 -0
- package/dist/assets/json.worker-BhNp9C2F-DNr6b4pw.js +1 -0
- package/dist/assets/{monaco-editor-C8KYOXSh.js → monaco-editor-B9w0R7jm.js} +2 -2
- package/dist/assets/{preview-ve71HYTB.js → preview-D1qpTio1.js} +1 -1
- package/dist/assets/ts.worker-yjAiJiOi-CF5yv0EK.js +1 -0
- package/dist/index.html +2 -2
- package/package.json +11 -11
- package/dist/assets/css.worker-CilUBJBN.js +0 -84
- package/dist/assets/editor.worker-BJZ5cnST.js +0 -11
- package/dist/assets/html.worker-CNHktepm.js +0 -458
- package/dist/assets/index-DmZaHsx9.css +0 -1
- package/dist/assets/index-DxDFGgvB.js +0 -1
- package/dist/assets/json.worker-CV0MTB3L.js +0 -42
- package/dist/assets/ts.worker-mZI20X7J.js +0 -37021
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const W="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NsYXNzIGRje2NvbnN0cnVjdG9yKCl7dGhpcy5saXN0ZW5lcnM9W10sdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyPWZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoKCk9Pnt0aHJvdyBlLnN0YWNrP050LmlzRXJyb3JOb1RlbGVtZXRyeShlKT9uZXcgTnQoZS5tZXNzYWdlK2AKCmArZS5zdGFjayk6bmV3IEVycm9yKGUubWVzc2FnZStgCgpgK2Uuc3RhY2spOmV9LDApfX1lbWl0KGUpe3RoaXMubGlzdGVuZXJzLmZvckVhY2gobj0+e24oZSl9KX1vblVuZXhwZWN0ZWRFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSksdGhpcy5lbWl0KGUpfW9uVW5leHBlY3RlZEV4dGVybmFsRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpfX1jb25zdCB1Yz1uZXcgZGM7ZnVuY3Rpb24gbHModCl7cGModCl8fHVjLm9uVW5leHBlY3RlZEVycm9yKHQpfWZ1bmN0aW9uIGNzKHQpe2lmKHQgaW5zdGFuY2VvZiBFcnJvcil7Y29uc3R7bmFtZTplLG1lc3NhZ2U6bn09dCxyPXQuc3RhY2t0cmFjZXx8dC5zdGFjaztyZXR1cm57JGlzRXJyb3I6ITAsbmFtZTplLG1lc3NhZ2U6bixzdGFjazpyLG5vVGVsZW1ldHJ5Ok50LmlzRXJyb3JOb1RlbGVtZXRyeSh0KX19cmV0dXJuIHR9Y29uc3Qga3I9IkNhbmNlbGVkIjtmdW5jdGlvbiBwYyh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGZjPyEwOnQgaW5zdGFuY2VvZiBFcnJvciYmdC5uYW1lPT09a3ImJnQubWVzc2FnZT09PWtyfWNsYXNzIGZjIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcihrciksdGhpcy5uYW1lPXRoaXMubWVzc2FnZX19Y2xhc3MgTnQgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLm5hbWU9IkNvZGVFeHBlY3RlZEVycm9yIn1zdGF0aWMgZnJvbUVycm9yKGUpe2lmKGUgaW5zdGFuY2VvZiBOdClyZXR1cm4gZTtjb25zdCBuPW5ldyBOdDtyZXR1cm4gbi5tZXNzYWdlPWUubWVzc2FnZSxuLnN0YWNrPWUuc3RhY2ssbn1zdGF0aWMgaXNFcnJvck5vVGVsZW1ldHJ5KGUpe3JldHVybiBlLm5hbWU9PT0iQ29kZUV4cGVjdGVkRXJyb3IifX1jbGFzcyB0dCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGV8fCJBbiB1bmV4cGVjdGVkIGJ1ZyBvY2N1cnJlZC4iKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyx0dC5wcm90b3R5cGUpfX1mdW5jdGlvbiBtYyh0LGUpe2NvbnN0IG49dGhpcztsZXQgcj0hMSxpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByfHwocj0hMCxpPXQuYXBwbHkobixhcmd1bWVudHMpKSxpfX12YXIgVG47KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodyl7cmV0dXJuIHcmJnR5cGVvZiB3PT0ib2JqZWN0IiYmdHlwZW9mIHdbU3ltYm9sLml0ZXJhdG9yXT09ImZ1bmN0aW9uIn10LmlzPWU7Y29uc3Qgbj1PYmplY3QuZnJlZXplKFtdKTtmdW5jdGlvbiByKCl7cmV0dXJuIG59dC5lbXB0eT1yO2Z1bmN0aW9uKmkodyl7eWllbGQgd310LnNpbmdsZT1pO2Z1bmN0aW9uIHModyl7cmV0dXJuIGUodyk/dzppKHcpfXQud3JhcD1zO2Z1bmN0aW9uIGEodyl7cmV0dXJuIHd8fG59dC5mcm9tPWE7ZnVuY3Rpb24qbyh3KXtmb3IobGV0IEY9dy5sZW5ndGgtMTtGPj0wO0YtLSl5aWVsZCB3W0ZdfXQucmV2ZXJzZT1vO2Z1bmN0aW9uIGwodyl7cmV0dXJuIXd8fHdbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS5kb25lPT09ITB9dC5pc0VtcHR5PWw7ZnVuY3Rpb24gYyh3KXtyZXR1cm4gd1tTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLnZhbHVlfXQuZmlyc3Q9YztmdW5jdGlvbiBoKHcsRil7Zm9yKGNvbnN0IF8gb2YgdylpZihGKF8pKXJldHVybiEwO3JldHVybiExfXQuc29tZT1oO2Z1bmN0aW9uIHUodyxGKXtmb3IoY29uc3QgXyBvZiB3KWlmKEYoXykpcmV0dXJuIF99dC5maW5kPXU7ZnVuY3Rpb24qZih3LEYpe2Zvcihjb25zdCBfIG9mIHcpRihfKSYmKHlpZWxkIF8pfXQuZmlsdGVyPWY7ZnVuY3Rpb24qbSh3LEYpe2xldCBfPTA7Zm9yKGNvbnN0IFAgb2Ygdyl5aWVsZCBGKFAsXysrKX10Lm1hcD1tO2Z1bmN0aW9uKmcoLi4udyl7Zm9yKGNvbnN0IEYgb2Ygdyl5aWVsZCpGfXQuY29uY2F0PWc7ZnVuY3Rpb24gYih3LEYsXyl7bGV0IFA9Xztmb3IoY29uc3QgVyBvZiB3KVA9RihQLFcpO3JldHVybiBQfXQucmVkdWNlPWI7ZnVuY3Rpb24qeSh3LEYsXz13Lmxlbmd0aCl7Zm9yKEY8MCYmKEYrPXcubGVuZ3RoKSxfPDA/Xys9dy5sZW5ndGg6Xz53Lmxlbmd0aCYmKF89dy5sZW5ndGgpO0Y8XztGKyspeWllbGQgd1tGXX10LnNsaWNlPXk7ZnVuY3Rpb24gQyh3LEY9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtjb25zdCBfPVtdO2lmKEY9PT0wKXJldHVybltfLHddO2NvbnN0IFA9d1tTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKGxldCBXPTA7VzxGO1crKyl7Y29uc3QgVD1QLm5leHQoKTtpZihULmRvbmUpcmV0dXJuW18sdC5lbXB0eSgpXTtfLnB1c2goVC52YWx1ZSl9cmV0dXJuW18se1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIFB9fV19dC5jb25zdW1lPUM7YXN5bmMgZnVuY3Rpb24gayh3KXtjb25zdCBGPVtdO2ZvciBhd2FpdChjb25zdCBfIG9mIHcpRi5wdXNoKF8pO3JldHVybiBQcm9taXNlLnJlc29sdmUoRil9dC5hc3luY1RvQXJyYXk9a30pKFRufHwoVG49e30pKTtmdW5jdGlvbiBGZih0KXtyZXR1cm4gdH1mdW5jdGlvbiBEZih0LGUpe31mdW5jdGlvbiBocyh0KXtpZihUbi5pcyh0KSl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBvZiB0KWlmKG4pdHJ5e24uZGlzcG9zZSgpfWNhdGNoKHIpe2UucHVzaChyKX1pZihlLmxlbmd0aD09PTEpdGhyb3cgZVswXTtpZihlLmxlbmd0aD4xKXRocm93IG5ldyBBZ2dyZWdhdGVFcnJvcihlLCJFbmNvdW50ZXJlZCBlcnJvcnMgd2hpbGUgZGlzcG9zaW5nIG9mIHN0b3JlIik7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/W106dH1lbHNlIGlmKHQpcmV0dXJuIHQuZGlzcG9zZSgpLHR9ZnVuY3Rpb24gZ2MoLi4udCl7cmV0dXJuIFduKCgpPT5ocyh0KSl9ZnVuY3Rpb24gV24odCl7cmV0dXJue2Rpc3Bvc2U6bWMoKCk9Pnt0KCl9KX19Y2xhc3MgTXR7Y29uc3RydWN0b3IoKXt0aGlzLl90b0Rpc3Bvc2U9bmV3IFNldCx0aGlzLl9pc0Rpc3Bvc2VkPSExfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkfHwodGhpcy5faXNEaXNwb3NlZD0hMCx0aGlzLmNsZWFyKCkpfWdldCBpc0Rpc3Bvc2VkKCl7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWR9Y2xlYXIoKXtpZih0aGlzLl90b0Rpc3Bvc2Uuc2l6ZSE9PTApdHJ5e2hzKHRoaXMuX3RvRGlzcG9zZSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKGUpe2lmKCFlKXJldHVybiBlO2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/TXQuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HfHxjb25zb2xlLndhcm4obmV3IEVycm9yKCJUcnlpbmcgdG8gYWRkIGEgZGlzcG9zYWJsZSB0byBhIERpc3Bvc2FibGVTdG9yZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGlzcG9zZWQgb2YuIFRoZSBhZGRlZCBvYmplY3Qgd2lsbCBiZSBsZWFrZWQhIikuc3RhY2spOnRoaXMuX3RvRGlzcG9zZS5hZGQoZSksZX1kZWxldGVBbmRMZWFrKGUpe2UmJnRoaXMuX3RvRGlzcG9zZS5oYXMoZSkmJnRoaXMuX3RvRGlzcG9zZS5kZWxldGUoZSl9fU10LkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyBybntjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0b3JlPW5ldyBNdCx0aGlzLl9zdG9yZX1kaXNwb3NlKCl7dGhpcy5fc3RvcmUuZGlzcG9zZSgpfV9yZWdpc3RlcihlKXtpZihlPT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9zdG9yZS5hZGQoZSl9fXJuLk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtsZXQgbGU9Y2xhc3MgYXN7Y29uc3RydWN0b3IoZSl7dGhpcy5lbGVtZW50PWUsdGhpcy5uZXh0PWFzLlVuZGVmaW5lZCx0aGlzLnByZXY9YXMuVW5kZWZpbmVkfX07bGUuVW5kZWZpbmVkPW5ldyBsZSh2b2lkIDApO2NsYXNzIGJje2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9bGUuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9bGUuVW5kZWZpbmVkLHRoaXMuX3NpemU9MH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5fZmlyc3Q9PT1sZS5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1sZS5VbmRlZmluZWQ7KXtjb25zdCBuPWUubmV4dDtlLnByZXY9bGUuVW5kZWZpbmVkLGUubmV4dD1sZS5VbmRlZmluZWQsZT1ufXRoaXMuX2ZpcnN0PWxlLlVuZGVmaW5lZCx0aGlzLl9sYXN0PWxlLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9dW5zaGlmdChlKXtyZXR1cm4gdGhpcy5faW5zZXJ0KGUsITEpfXB1c2goZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCEwKX1faW5zZXJ0KGUsbil7Y29uc3Qgcj1uZXcgbGUoZSk7aWYodGhpcy5fZmlyc3Q9PT1sZS5VbmRlZmluZWQpdGhpcy5fZmlyc3Q9cix0aGlzLl9sYXN0PXI7ZWxzZSBpZihuKXtjb25zdCBzPXRoaXMuX2xhc3Q7dGhpcy5fbGFzdD1yLHIucHJldj1zLHMubmV4dD1yfWVsc2V7Y29uc3Qgcz10aGlzLl9maXJzdDt0aGlzLl9maXJzdD1yLHIubmV4dD1zLHMucHJldj1yfXRoaXMuX3NpemUrPTE7bGV0IGk9ITE7cmV0dXJuKCk9PntpfHwoaT0hMCx0aGlzLl9yZW1vdmUocikpfX1zaGlmdCgpe2lmKHRoaXMuX2ZpcnN0IT09bGUuVW5kZWZpbmVkKXtjb25zdCBlPXRoaXMuX2ZpcnN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9maXJzdCksZX19cG9wKCl7aWYodGhpcy5fbGFzdCE9PWxlLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSxlfX1fcmVtb3ZlKGUpe2lmKGUucHJldiE9PWxlLlVuZGVmaW5lZCYmZS5uZXh0IT09bGUuVW5kZWZpbmVkKXtjb25zdCBuPWUucHJldjtuLm5leHQ9ZS5uZXh0LGUubmV4dC5wcmV2PW59ZWxzZSBlLnByZXY9PT1sZS5VbmRlZmluZWQmJmUubmV4dD09PWxlLlVuZGVmaW5lZD8odGhpcy5fZmlyc3Q9bGUuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9bGUuVW5kZWZpbmVkKTplLm5leHQ9PT1sZS5VbmRlZmluZWQ/KHRoaXMuX2xhc3Q9dGhpcy5fbGFzdC5wcmV2LHRoaXMuX2xhc3QubmV4dD1sZS5VbmRlZmluZWQpOmUucHJldj09PWxlLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1sZS5VbmRlZmluZWQpO3RoaXMuX3NpemUtPTF9KltTeW1ib2wuaXRlcmF0b3JdKCl7bGV0IGU9dGhpcy5fZmlyc3Q7Zm9yKDtlIT09bGUuVW5kZWZpbmVkOyl5aWVsZCBlLmVsZW1lbnQsZT1lLm5leHR9fWNvbnN0IHZjPWdsb2JhbFRoaXMucGVyZm9ybWFuY2UmJnR5cGVvZiBnbG9iYWxUaGlzLnBlcmZvcm1hbmNlLm5vdz09ImZ1bmN0aW9uIjtjbGFzcyBPbntzdGF0aWMgY3JlYXRlKGUpe3JldHVybiBuZXcgT24oZSl9Y29uc3RydWN0b3IoZSl7dGhpcy5fbm93PXZjJiZlPT09ITE/RGF0ZS5ub3c6Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZS5ub3cuYmluZChnbG9iYWxUaGlzLnBlcmZvcm1hbmNlKSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfXJlc2V0KCl7dGhpcy5fc3RhcnRUaW1lPXRoaXMuX25vdygpLHRoaXMuX3N0b3BUaW1lPS0xfWVsYXBzZWQoKXtyZXR1cm4gdGhpcy5fc3RvcFRpbWUhPT0tMT90aGlzLl9zdG9wVGltZS10aGlzLl9zdGFydFRpbWU6dGhpcy5fbm93KCktdGhpcy5fc3RhcnRUaW1lfX12YXIgX3I7KGZ1bmN0aW9uKHQpe3QuTm9uZT0oKT0+cm4uTm9uZTtmdW5jdGlvbiBlKE4sUil7cmV0dXJuIHUoTiwoKT0+e30sMCx2b2lkIDAsITAsdm9pZCAwLFIpfXQuZGVmZXI9ZTtmdW5jdGlvbiBuKE4pe3JldHVybihSLEk9bnVsbCx6KT0+e2xldCBWPSExLGo7cmV0dXJuIGo9TihEPT57aWYoIVYpcmV0dXJuIGo/ai5kaXNwb3NlKCk6Vj0hMCxSLmNhbGwoSSxEKX0sbnVsbCx6KSxWJiZqLmRpc3Bvc2UoKSxqfX10Lm9uY2U9bjtmdW5jdGlvbiByKE4sUixJKXtyZXR1cm4gYygoeixWPW51bGwsaik9Pk4oRD0+ei5jYWxsKFYsUihEKSksbnVsbCxqKSxJKX10Lm1hcD1yO2Z1bmN0aW9uIGkoTixSLEkpe3JldHVybiBjKCh6LFY9bnVsbCxqKT0+TihEPT57UihEKSx6LmNhbGwoVixEKX0sbnVsbCxqKSxJKX10LmZvckVhY2g9aTtmdW5jdGlvbiBzKE4sUixJKXtyZXR1cm4gYygoeixWPW51bGwsaik9Pk4oRD0+UihEKSYmei5jYWxsKFYsRCksbnVsbCxqKSxJKX10LmZpbHRlcj1zO2Z1bmN0aW9uIGEoTil7cmV0dXJuIE59dC5zaWduYWw9YTtmdW5jdGlvbiBvKC4uLk4pe3JldHVybihSLEk9bnVsbCx6KT0+e2NvbnN0IFY9Z2MoLi4uTi5tYXAoaj0+aihEPT5SLmNhbGwoSSxEKSkpKTtyZXR1cm4gaChWLHopfX10LmFueT1vO2Z1bmN0aW9uIGwoTixSLEkseil7bGV0IFY9STtyZXR1cm4gcihOLGo9PihWPVIoVixqKSxWKSx6KX10LnJlZHVjZT1sO2Z1bmN0aW9uIGMoTixSKXtsZXQgSTtjb25zdCB6PXtvbldpbGxBZGRGaXJzdExpc3RlbmVyKCl7ST1OKFYuZmlyZSxWKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtJPy5kaXNwb3NlKCl9fSxWPW5ldyBxZSh6KTtyZXR1cm4gUj8uYWRkKFYpLFYuZXZlbnR9ZnVuY3Rpb24gaChOLFIpe3JldHVybiBSIGluc3RhbmNlb2YgQXJyYXk/Ui5wdXNoKE4pOlImJlIuYWRkKE4pLE59ZnVuY3Rpb24gdShOLFIsST0xMDAsej0hMSxWPSExLGosRCl7bGV0IHgsQSxMLFg9MCxHO2NvbnN0IG5lPXtsZWFrV2FybmluZ1RocmVzaG9sZDpqLG9uV2lsbEFkZEZpcnN0TGlzdGVuZXIoKXt4PU4oU2U9PntYKyssQT1SKEEsU2UpLHomJiFMJiYoRGUuZmlyZShBKSxBPXZvaWQgMCksRz0oKT0+e2NvbnN0IEFlPUE7QT12b2lkIDAsTD12b2lkIDAsKCF6fHxYPjEpJiZEZS5maXJlKEFlKSxYPTB9LHR5cGVvZiBJPT0ibnVtYmVyIj8oY2xlYXJUaW1lb3V0KEwpLEw9c2V0VGltZW91dChHLEkpKTpMPT09dm9pZCAwJiYoTD0wLHF1ZXVlTWljcm90YXNrKEcpKX0pfSxvbldpbGxSZW1vdmVMaXN0ZW5lcigpe1YmJlg+MCYmRz8uKCl9LG9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyKCl7Rz12b2lkIDAseC5kaXNwb3NlKCl9fSxEZT1uZXcgcWUobmUpO3JldHVybiBEPy5hZGQoRGUpLERlLmV2ZW50fXQuZGVib3VuY2U9dTtmdW5jdGlvbiBmKE4sUj0wLEkpe3JldHVybiB0LmRlYm91bmNlKE4sKHosVik9Pno/KHoucHVzaChWKSx6KTpbVl0sUix2b2lkIDAsITAsdm9pZCAwLEkpfXQuYWNjdW11bGF0ZT1mO2Z1bmN0aW9uIG0oTixSPSh6LFYpPT56PT09VixJKXtsZXQgej0hMCxWO3JldHVybiBzKE4saj0+e2NvbnN0IEQ9enx8IVIoaixWKTtyZXR1cm4gej0hMSxWPWosRH0sSSl9dC5sYXRjaD1tO2Z1bmN0aW9uIGcoTixSLEkpe3JldHVyblt0LmZpbHRlcihOLFIsSSksdC5maWx0ZXIoTix6PT4hUih6KSxJKV19dC5zcGxpdD1nO2Z1bmN0aW9uIGIoTixSPSExLEk9W10seil7bGV0IFY9SS5zbGljZSgpLGo9TihBPT57Vj9WLnB1c2goQSk6eC5maXJlKEEpfSk7eiYmei5hZGQoaik7Y29uc3QgRD0oKT0+e1Y/LmZvckVhY2goQT0+eC5maXJlKEEpKSxWPW51bGx9LHg9bmV3IHFlKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyKCl7anx8KGo9TihBPT54LmZpcmUoQSkpLHomJnouYWRkKGopKX0sb25EaWRBZGRGaXJzdExpc3RlbmVyKCl7ViYmKFI/c2V0VGltZW91dChEKTpEKCkpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpe2omJmouZGlzcG9zZSgpLGo9bnVsbH19KTtyZXR1cm4geiYmei5hZGQoeCkseC5ldmVudH10LmJ1ZmZlcj1iO2Z1bmN0aW9uIHkoTixSKXtyZXR1cm4oeixWLGopPT57Y29uc3QgRD1SKG5ldyBrKTtyZXR1cm4gTihmdW5jdGlvbih4KXtjb25zdCBBPUQuZXZhbHVhdGUoeCk7QSE9PUMmJnouY2FsbChWLEEpfSx2b2lkIDAsail9fXQuY2hhaW49eTtjb25zdCBDPVN5bWJvbCgiSGFsdENoYWluYWJsZSIpO2NsYXNzIGt7Y29uc3RydWN0b3IoKXt0aGlzLnN0ZXBzPVtdfW1hcChSKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKFIpLHRoaXN9Zm9yRWFjaChSKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKEk9PihSKEkpLEkpKSx0aGlzfWZpbHRlcihSKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKEk9PlIoSSk/STpDKSx0aGlzfXJlZHVjZShSLEkpe2xldCB6PUk7cmV0dXJuIHRoaXMuc3RlcHMucHVzaChWPT4oej1SKHosVikseikpLHRoaXN9bGF0Y2goUj0oSSx6KT0+ST09PXope2xldCBJPSEwLHo7cmV0dXJuIHRoaXMuc3RlcHMucHVzaChWPT57Y29uc3Qgaj1JfHwhUihWLHopO3JldHVybiBJPSExLHo9VixqP1Y6Q30pLHRoaXN9ZXZhbHVhdGUoUil7Zm9yKGNvbnN0IEkgb2YgdGhpcy5zdGVwcylpZihSPUkoUiksUj09PUMpYnJlYWs7cmV0dXJuIFJ9fWZ1bmN0aW9uIHcoTixSLEk9ej0+eil7Y29uc3Qgej0oLi4ueCk9PkQuZmlyZShJKC4uLngpKSxWPSgpPT5OLm9uKFIseiksaj0oKT0+Ti5yZW1vdmVMaXN0ZW5lcihSLHopLEQ9bmV3IHFlKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyOlYsb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6an0pO3JldHVybiBELmV2ZW50fXQuZnJvbU5vZGVFdmVudEVtaXR0ZXI9dztmdW5jdGlvbiBGKE4sUixJPXo9Pnope2NvbnN0IHo9KC4uLngpPT5ELmZpcmUoSSguLi54KSksVj0oKT0+Ti5hZGRFdmVudExpc3RlbmVyKFIseiksaj0oKT0+Ti5yZW1vdmVFdmVudExpc3RlbmVyKFIseiksRD1uZXcgcWUoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6VixvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjpqfSk7cmV0dXJuIEQuZXZlbnR9dC5mcm9tRE9NRXZlbnRFbWl0dGVyPUY7ZnVuY3Rpb24gXyhOKXtyZXR1cm4gbmV3IFByb21pc2UoUj0+bihOKShSKSl9dC50b1Byb21pc2U9XztmdW5jdGlvbiBQKE4pe2NvbnN0IFI9bmV3IHFlO3JldHVybiBOLnRoZW4oST0+e1IuZmlyZShJKX0sKCk9PntSLmZpcmUodm9pZCAwKX0pLmZpbmFsbHkoKCk9PntSLmRpc3Bvc2UoKX0pLFIuZXZlbnR9dC5mcm9tUHJvbWlzZT1QO2Z1bmN0aW9uIFcoTixSLEkpe3JldHVybiBSKEkpLE4oej0+Uih6KSl9dC5ydW5BbmRTdWJzY3JpYmU9VztjbGFzcyBUe2NvbnN0cnVjdG9yKFIsSSl7dGhpcy5fb2JzZXJ2YWJsZT1SLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9oYXNDaGFuZ2VkPSExO2NvbnN0IHo9e29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6KCk9PntSLmFkZE9ic2VydmVyKHRoaXMpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+e1IucmVtb3ZlT2JzZXJ2ZXIodGhpcyl9fTt0aGlzLmVtaXR0ZXI9bmV3IHFlKHopLEkmJkkuYWRkKHRoaXMuZW1pdHRlcil9YmVnaW5VcGRhdGUoUil7dGhpcy5fY291bnRlcisrfWhhbmRsZVBvc3NpYmxlQ2hhbmdlKFIpe31oYW5kbGVDaGFuZ2UoUixJKXt0aGlzLl9oYXNDaGFuZ2VkPSEwfWVuZFVwZGF0ZShSKXt0aGlzLl9jb3VudGVyLS0sdGhpcy5fY291bnRlcj09PTAmJih0aGlzLl9vYnNlcnZhYmxlLnJlcG9ydENoYW5nZXMoKSx0aGlzLl9oYXNDaGFuZ2VkJiYodGhpcy5faGFzQ2hhbmdlZD0hMSx0aGlzLmVtaXR0ZXIuZmlyZSh0aGlzLl9vYnNlcnZhYmxlLmdldCgpKSkpfX1mdW5jdGlvbiBKKE4sUil7cmV0dXJuIG5ldyBUKE4sUikuZW1pdHRlci5ldmVudH10LmZyb21PYnNlcnZhYmxlPUo7ZnVuY3Rpb24gcmUoTil7cmV0dXJuKFIsSSx6KT0+e2xldCBWPTAsaj0hMTtjb25zdCBEPXtiZWdpblVwZGF0ZSgpe1YrK30sZW5kVXBkYXRlKCl7Vi0tLFY9PT0wJiYoTi5yZXBvcnRDaGFuZ2VzKCksaiYmKGo9ITEsUi5jYWxsKEkpKSl9LGhhbmRsZVBvc3NpYmxlQ2hhbmdlKCl7fSxoYW5kbGVDaGFuZ2UoKXtqPSEwfX07Ti5hZGRPYnNlcnZlcihEKSxOLnJlcG9ydENoYW5nZXMoKTtjb25zdCB4PXtkaXNwb3NlKCl7Ti5yZW1vdmVPYnNlcnZlcihEKX19O3JldHVybiB6IGluc3RhbmNlb2YgTXQ/ei5hZGQoeCk6QXJyYXkuaXNBcnJheSh6KSYmei5wdXNoKHgpLHh9fXQuZnJvbU9ic2VydmFibGVMaWdodD1yZX0pKF9yfHwoX3I9e30pKTtjbGFzcyB6dHtjb25zdHJ1Y3RvcihlKXt0aGlzLmxpc3RlbmVyQ291bnQ9MCx0aGlzLmludm9jYXRpb25Db3VudD0wLHRoaXMuZWxhcHNlZE92ZXJhbGw9MCx0aGlzLmR1cmF0aW9ucz1bXSx0aGlzLm5hbWU9YCR7ZX1fJHt6dC5faWRQb29sKyt9YCx6dC5hbGwuYWRkKHRoaXMpfXN0YXJ0KGUpe3RoaXMuX3N0b3BXYXRjaD1uZXcgT24sdGhpcy5saXN0ZW5lckNvdW50PWV9c3RvcCgpe2lmKHRoaXMuX3N0b3BXYXRjaCl7Y29uc3QgZT10aGlzLl9zdG9wV2F0Y2guZWxhcHNlZCgpO3RoaXMuZHVyYXRpb25zLnB1c2goZSksdGhpcy5lbGFwc2VkT3ZlcmFsbCs9ZSx0aGlzLmludm9jYXRpb25Db3VudCs9MSx0aGlzLl9zdG9wV2F0Y2g9dm9pZCAwfX19enQuYWxsPW5ldyBTZXQsenQuX2lkUG9vbD0wO2xldCB5Yz0tMTtjbGFzcyB3Y3tjb25zdHJ1Y3RvcihlLG49TWF0aC5yYW5kb20oKS50b1N0cmluZygxOCkuc2xpY2UoMiw1KSl7dGhpcy50aHJlc2hvbGQ9ZSx0aGlzLm5hbWU9bix0aGlzLl93YXJuQ291bnRkb3duPTB9ZGlzcG9zZSgpe3ZhciBlOyhlPXRoaXMuX3N0YWNrcyk9PT1udWxsfHxlPT09dm9pZCAwfHxlLmNsZWFyKCl9Y2hlY2soZSxuKXtjb25zdCByPXRoaXMudGhyZXNob2xkO2lmKHI8PTB8fG48cilyZXR1cm47dGhpcy5fc3RhY2tzfHwodGhpcy5fc3RhY2tzPW5ldyBNYXApO2NvbnN0IGk9dGhpcy5fc3RhY2tzLmdldChlLnZhbHVlKXx8MDtpZih0aGlzLl9zdGFja3Muc2V0KGUudmFsdWUsaSsxKSx0aGlzLl93YXJuQ291bnRkb3duLT0xLHRoaXMuX3dhcm5Db3VudGRvd248PTApe3RoaXMuX3dhcm5Db3VudGRvd249ciouNTtsZXQgcyxhPTA7Zm9yKGNvbnN0W28sbF1vZiB0aGlzLl9zdGFja3MpKCFzfHxhPGwpJiYocz1vLGE9bCk7Y29uc29sZS53YXJuKGBbJHt0aGlzLm5hbWV9XSBwb3RlbnRpYWwgbGlzdGVuZXIgTEVBSyBkZXRlY3RlZCwgaGF2aW5nICR7bn0gbGlzdGVuZXJzIGFscmVhZHkuIE1PU1QgZnJlcXVlbnQgbGlzdGVuZXIgKCR7YX0pOmApLGNvbnNvbGUud2FybihzKX1yZXR1cm4oKT0+e2NvbnN0IHM9dGhpcy5fc3RhY2tzLmdldChlLnZhbHVlKXx8MDt0aGlzLl9zdGFja3Muc2V0KGUudmFsdWUscy0xKX19fWNsYXNzIEVye3N0YXRpYyBjcmVhdGUoKXt2YXIgZTtyZXR1cm4gbmV3IEVyKChlPW5ldyBFcnJvcigpLnN0YWNrKSE9PW51bGwmJmUhPT12b2lkIDA/ZToiIil9Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZT1lfXByaW50KCl7Y29uc29sZS53YXJuKHRoaXMudmFsdWUuc3BsaXQoYApgKS5zbGljZSgyKS5qb2luKGAKYCkpfX1jbGFzcyBScntjb25zdHJ1Y3RvcihlKXt0aGlzLnZhbHVlPWV9fWNvbnN0IHhjPTI7Y2xhc3MgcWV7Y29uc3RydWN0b3IoZSl7dmFyIG4scixpLHMsYTt0aGlzLl9zaXplPTAsdGhpcy5fb3B0aW9ucz1lLHRoaXMuX2xlYWthZ2VNb249ISgobj10aGlzLl9vcHRpb25zKT09PW51bGx8fG49PT12b2lkIDApJiZuLmxlYWtXYXJuaW5nVGhyZXNob2xkP25ldyB3YygoaT0ocj10aGlzLl9vcHRpb25zKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIubGVha1dhcm5pbmdUaHJlc2hvbGQpIT09bnVsbCYmaSE9PXZvaWQgMD9pOnljKTp2b2lkIDAsdGhpcy5fcGVyZk1vbj0hKChzPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8cz09PXZvaWQgMCkmJnMuX3Byb2ZOYW1lP25ldyB6dCh0aGlzLl9vcHRpb25zLl9wcm9mTmFtZSk6dm9pZCAwLHRoaXMuX2RlbGl2ZXJ5UXVldWU9KGE9dGhpcy5fb3B0aW9ucyk9PT1udWxsfHxhPT09dm9pZCAwP3ZvaWQgMDphLmRlbGl2ZXJ5UXVldWV9ZGlzcG9zZSgpe3ZhciBlLG4scixpO3RoaXMuX2Rpc3Bvc2VkfHwodGhpcy5fZGlzcG9zZWQ9ITAsKChlPXRoaXMuX2RlbGl2ZXJ5UXVldWUpPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5jdXJyZW50KT09PXRoaXMmJnRoaXMuX2RlbGl2ZXJ5UXVldWUucmVzZXQoKSx0aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnM9dm9pZCAwLHRoaXMuX3NpemU9MCksKHI9KG49dGhpcy5fb3B0aW9ucyk9PT1udWxsfHxuPT09dm9pZCAwP3ZvaWQgMDpuLm9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyKT09PW51bGx8fHI9PT12b2lkIDB8fHIuY2FsbChuKSwoaT10aGlzLl9sZWFrYWdlTW9uKT09PW51bGx8fGk9PT12b2lkIDB8fGkuZGlzcG9zZSgpKX1nZXQgZXZlbnQoKXt2YXIgZTtyZXR1cm4oZT10aGlzLl9ldmVudCkhPT1udWxsJiZlIT09dm9pZCAwfHwodGhpcy5fZXZlbnQ9KG4scixpKT0+e3ZhciBzLGEsbyxsLGM7aWYodGhpcy5fbGVha2FnZU1vbiYmdGhpcy5fc2l6ZT50aGlzLl9sZWFrYWdlTW9uLnRocmVzaG9sZCozKXJldHVybiBjb25zb2xlLndhcm4oYFske3RoaXMuX2xlYWthZ2VNb24ubmFtZX1dIFJFRlVTRVMgdG8gYWNjZXB0IG5ldyBsaXN0ZW5lcnMgYmVjYXVzZSBpdCBleGNlZWRlZCBpdHMgdGhyZXNob2xkIGJ5IGZhcmApLHJuLk5vbmU7aWYodGhpcy5fZGlzcG9zZWQpcmV0dXJuIHJuLk5vbmU7ciYmKG49bi5iaW5kKHIpKTtjb25zdCBoPW5ldyBScihuKTtsZXQgdTt0aGlzLl9sZWFrYWdlTW9uJiZ0aGlzLl9zaXplPj1NYXRoLmNlaWwodGhpcy5fbGVha2FnZU1vbi50aHJlc2hvbGQqLjIpJiYoaC5zdGFjaz1Fci5jcmVhdGUoKSx1PXRoaXMuX2xlYWthZ2VNb24uY2hlY2soaC5zdGFjayx0aGlzLl9zaXplKzEpKSx0aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzIGluc3RhbmNlb2YgUnI/KChjPXRoaXMuX2RlbGl2ZXJ5UXVldWUpIT09bnVsbCYmYyE9PXZvaWQgMHx8KHRoaXMuX2RlbGl2ZXJ5UXVldWU9bmV3IFNjKSx0aGlzLl9saXN0ZW5lcnM9W3RoaXMuX2xpc3RlbmVycyxoXSk6dGhpcy5fbGlzdGVuZXJzLnB1c2goaCk6KChhPShzPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8cz09PXZvaWQgMD92b2lkIDA6cy5vbldpbGxBZGRGaXJzdExpc3RlbmVyKT09PW51bGx8fGE9PT12b2lkIDB8fGEuY2FsbChzLHRoaXMpLHRoaXMuX2xpc3RlbmVycz1oLChsPShvPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8bz09PXZvaWQgMD92b2lkIDA6by5vbkRpZEFkZEZpcnN0TGlzdGVuZXIpPT09bnVsbHx8bD09PXZvaWQgMHx8bC5jYWxsKG8sdGhpcykpLHRoaXMuX3NpemUrKztjb25zdCBmPVduKCgpPT57dT8uKCksdGhpcy5fcmVtb3ZlTGlzdGVuZXIoaCl9KTtyZXR1cm4gaSBpbnN0YW5jZW9mIE10P2kuYWRkKGYpOkFycmF5LmlzQXJyYXkoaSkmJmkucHVzaChmKSxmfSksdGhpcy5fZXZlbnR9X3JlbW92ZUxpc3RlbmVyKGUpe3ZhciBuLHIsaSxzO2lmKChyPShuPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi5vbldpbGxSZW1vdmVMaXN0ZW5lcik9PT1udWxsfHxyPT09dm9pZCAwfHxyLmNhbGwobix0aGlzKSwhdGhpcy5fbGlzdGVuZXJzKXJldHVybjtpZih0aGlzLl9zaXplPT09MSl7dGhpcy5fbGlzdGVuZXJzPXZvaWQgMCwocz0oaT10aGlzLl9vcHRpb25zKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkub25EaWRSZW1vdmVMYXN0TGlzdGVuZXIpPT09bnVsbHx8cz09PXZvaWQgMHx8cy5jYWxsKGksdGhpcyksdGhpcy5fc2l6ZT0wO3JldHVybn1jb25zdCBhPXRoaXMuX2xpc3RlbmVycyxvPWEuaW5kZXhPZihlKTtpZihvPT09LTEpdGhyb3cgY29uc29sZS5sb2coImRpc3Bvc2VkPyIsdGhpcy5fZGlzcG9zZWQpLGNvbnNvbGUubG9nKCJzaXplPyIsdGhpcy5fc2l6ZSksY29uc29sZS5sb2coImFycj8iLEpTT04uc3RyaW5naWZ5KHRoaXMuX2xpc3RlbmVycykpLG5ldyBFcnJvcigiQXR0ZW1wdGVkIHRvIGRpc3Bvc2UgdW5rbm93biBsaXN0ZW5lciIpO3RoaXMuX3NpemUtLSxhW29dPXZvaWQgMDtjb25zdCBsPXRoaXMuX2RlbGl2ZXJ5UXVldWUuY3VycmVudD09PXRoaXM7aWYodGhpcy5fc2l6ZSp4Yzw9YS5sZW5ndGgpe2xldCBjPTA7Zm9yKGxldCBoPTA7aDxhLmxlbmd0aDtoKyspYVtoXT9hW2MrK109YVtoXTpsJiYodGhpcy5fZGVsaXZlcnlRdWV1ZS5lbmQtLSxjPHRoaXMuX2RlbGl2ZXJ5UXVldWUuaSYmdGhpcy5fZGVsaXZlcnlRdWV1ZS5pLS0pO2EubGVuZ3RoPWN9fV9kZWxpdmVyKGUsbil7dmFyIHI7aWYoIWUpcmV0dXJuO2NvbnN0IGk9KChyPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8cj09PXZvaWQgMD92b2lkIDA6ci5vbkxpc3RlbmVyRXJyb3IpfHxscztpZighaSl7ZS52YWx1ZShuKTtyZXR1cm59dHJ5e2UudmFsdWUobil9Y2F0Y2gocyl7aShzKX19X2RlbGl2ZXJRdWV1ZShlKXtjb25zdCBuPWUuY3VycmVudC5fbGlzdGVuZXJzO2Zvcig7ZS5pPGUuZW5kOyl0aGlzLl9kZWxpdmVyKG5bZS5pKytdLGUudmFsdWUpO2UucmVzZXQoKX1maXJlKGUpe3ZhciBuLHIsaSxzO2lmKCEoKG49dGhpcy5fZGVsaXZlcnlRdWV1ZSk9PT1udWxsfHxuPT09dm9pZCAwKSYmbi5jdXJyZW50JiYodGhpcy5fZGVsaXZlclF1ZXVlKHRoaXMuX2RlbGl2ZXJ5UXVldWUpLChyPXRoaXMuX3BlcmZNb24pPT09bnVsbHx8cj09PXZvaWQgMHx8ci5zdG9wKCkpLChpPXRoaXMuX3BlcmZNb24pPT09bnVsbHx8aT09PXZvaWQgMHx8aS5zdGFydCh0aGlzLl9zaXplKSx0aGlzLl9saXN0ZW5lcnMpaWYodGhpcy5fbGlzdGVuZXJzIGluc3RhbmNlb2YgUnIpdGhpcy5fZGVsaXZlcih0aGlzLl9saXN0ZW5lcnMsZSk7ZWxzZXtjb25zdCBhPXRoaXMuX2RlbGl2ZXJ5UXVldWU7YS5lbnF1ZXVlKHRoaXMsZSx0aGlzLl9saXN0ZW5lcnMubGVuZ3RoKSx0aGlzLl9kZWxpdmVyUXVldWUoYSl9KHM9dGhpcy5fcGVyZk1vbik9PT1udWxsfHxzPT09dm9pZCAwfHxzLnN0b3AoKX1oYXNMaXN0ZW5lcnMoKXtyZXR1cm4gdGhpcy5fc2l6ZT4wfX1jbGFzcyBTY3tjb25zdHJ1Y3Rvcigpe3RoaXMuaT0tMSx0aGlzLmVuZD0wfWVucXVldWUoZSxuLHIpe3RoaXMuaT0wLHRoaXMuZW5kPXIsdGhpcy5jdXJyZW50PWUsdGhpcy52YWx1ZT1ufXJlc2V0KCl7dGhpcy5pPXRoaXMuZW5kLHRoaXMuY3VycmVudD12b2lkIDAsdGhpcy52YWx1ZT12b2lkIDB9fWZ1bmN0aW9uIENjKHQpe3JldHVybiB0eXBlb2YgdD09InN0cmluZyJ9ZnVuY3Rpb24ga2ModCl7bGV0IGU9W107Zm9yKDtPYmplY3QucHJvdG90eXBlIT09dDspZT1lLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KSksdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7cmV0dXJuIGV9ZnVuY3Rpb24gRnIodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBvZiBrYyh0KSl0eXBlb2YgdFtuXT09ImZ1bmN0aW9uIiYmZS5wdXNoKG4pO3JldHVybiBlfWZ1bmN0aW9uIF9jKHQsZSl7Y29uc3Qgbj1pPT5mdW5jdGlvbigpe2NvbnN0IHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBlKGkscyl9LHI9e307Zm9yKGNvbnN0IGkgb2YgdClyW2ldPW4oaSk7cmV0dXJuIHJ9bGV0IEVjPXR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmxvY2F0aW9uJiZkb2N1bWVudC5sb2NhdGlvbi5oYXNoLmluZGV4T2YoInBzZXVkbz10cnVlIik+PTA7ZnVuY3Rpb24gUmModCxlKXtsZXQgbjtyZXR1cm4gZS5sZW5ndGg9PT0wP249dDpuPXQucmVwbGFjZSgvXHsoXGQrKVx9L2csKHIsaSk9Pntjb25zdCBzPWlbMF0sYT1lW3NdO2xldCBvPXI7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5nIj9vPWE6KHR5cGVvZiBhPT0ibnVtYmVyInx8dHlwZW9mIGE9PSJib29sZWFuInx8YT09PXZvaWQgMHx8YT09PW51bGwpJiYobz1TdHJpbmcoYSkpLG99KSxFYyYmKG49Iu+8uyIrbi5yZXBsYWNlKC9bYW91ZWldL2csIiQmJCYiKSsi77y9Iiksbn1mdW5jdGlvbiBhZSh0LGUsLi4ubil7cmV0dXJuIFJjKGUsbil9ZnVuY3Rpb24gQWYodCl7fXZhciBEcixBcjtjb25zdCBMdD0iZW4iO2xldCBOcj0hMSxNcj0hMSx6cj0hMSxVbixMcj1MdCxkcz1MdCxGYyxqZTtjb25zdCB4dD1nbG9iYWxUaGlzO2xldCBDZTt0eXBlb2YgeHQudnNjb2RlPCJ1IiYmdHlwZW9mIHh0LnZzY29kZS5wcm9jZXNzPCJ1Ij9DZT14dC52c2NvZGUucHJvY2Vzczp0eXBlb2YgcHJvY2VzczwidSImJnR5cGVvZigoRHI9cHJvY2Vzcz09bnVsbD92b2lkIDA6cHJvY2Vzcy52ZXJzaW9ucyk9PT1udWxsfHxEcj09PXZvaWQgMD92b2lkIDA6RHIubm9kZSk9PSJzdHJpbmciJiYoQ2U9cHJvY2Vzcyk7Y29uc3QgRGM9dHlwZW9mKChBcj1DZT8udmVyc2lvbnMpPT09bnVsbHx8QXI9PT12b2lkIDA/dm9pZCAwOkFyLmVsZWN0cm9uKT09InN0cmluZyImJkNlPy50eXBlPT09InJlbmRlcmVyIjtpZih0eXBlb2YgQ2U9PSJvYmplY3QiKXtOcj1DZS5wbGF0Zm9ybT09PSJ3aW4zMiIsTXI9Q2UucGxhdGZvcm09PT0iZGFyd2luIix6cj1DZS5wbGF0Zm9ybT09PSJsaW51eCIsenImJkNlLmVudi5TTkFQJiZDZS5lbnYuU05BUF9SRVZJU0lPTixDZS5lbnYuQ0l8fENlLmVudi5CVUlMRF9BUlRJRkFDVFNUQUdJTkdESVJFQ1RPUlksVW49THQsTHI9THQ7Y29uc3QgdD1DZS5lbnYuVlNDT0RFX05MU19DT05GSUc7aWYodCl0cnl7Y29uc3QgZT1KU09OLnBhcnNlKHQpLG49ZS5hdmFpbGFibGVMYW5ndWFnZXNbIioiXTtVbj1lLmxvY2FsZSxkcz1lLm9zTG9jYWxlLExyPW58fEx0LEZjPWUuX3RyYW5zbGF0aW9uc0NvbmZpZ0ZpbGV9Y2F0Y2h7fX1lbHNlIHR5cGVvZiBuYXZpZ2F0b3I9PSJvYmplY3QiJiYhRGM/KGplPW5hdmlnYXRvci51c2VyQWdlbnQsTnI9amUuaW5kZXhPZigiV2luZG93cyIpPj0wLE1yPWplLmluZGV4T2YoIk1hY2ludG9zaCIpPj0wLChqZS5pbmRleE9mKCJNYWNpbnRvc2giKT49MHx8amUuaW5kZXhPZigiaVBhZCIpPj0wfHxqZS5pbmRleE9mKCJpUGhvbmUiKT49MCkmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjAsenI9amUuaW5kZXhPZigiTGludXgiKT49MCxqZT8uaW5kZXhPZigiTW9iaSIpPj0wLGFlKHtrZXk6ImVuc3VyZUxvYWRlclBsdWdpbklzTG9hZGVkIixjb21tZW50Olsie0xvY2tlZH0iXX0sIl8iKSxVbj1MdCxMcj1Vbixkcz1uYXZpZ2F0b3IubGFuZ3VhZ2UpOmNvbnNvbGUuZXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIHBsYXRmb3JtLiIpO2NvbnN0IHNuPU5yLEFjPU1yLFhlPWplLE5jPXR5cGVvZiB4dC5wb3N0TWVzc2FnZT09ImZ1bmN0aW9uIiYmIXh0LmltcG9ydFNjcmlwdHM7KCgpPT57aWYoTmMpe2NvbnN0IHQ9W107eHQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbj0+e2lmKG4uZGF0YSYmbi5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKWZvcihsZXQgcj0wLGk9dC5sZW5ndGg7cjxpO3IrKyl7Y29uc3Qgcz10W3JdO2lmKHMuaWQ9PT1uLmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspe3Quc3BsaWNlKHIsMSkscy5jYWxsYmFjaygpO3JldHVybn19fSk7bGV0IGU9MDtyZXR1cm4gbj0+e2NvbnN0IHI9KytlO3QucHVzaCh7aWQ6cixjYWxsYmFjazpufSkseHQucG9zdE1lc3NhZ2Uoe3ZzY29kZVNjaGVkdWxlQXN5bmNXb3JrOnJ9LCIqIil9fXJldHVybiB0PT5zZXRUaW1lb3V0KHQpfSkoKTtjb25zdCBNYz0hIShYZSYmWGUuaW5kZXhPZigiQ2hyb21lIik+PTApO1hlJiZYZS5pbmRleE9mKCJGaXJlZm94Iik+PTAsIU1jJiZYZSYmWGUuaW5kZXhPZigiU2FmYXJpIik+PTAsWGUmJlhlLmluZGV4T2YoIkVkZy8iKT49MCxYZSYmWGUuaW5kZXhPZigiQW5kcm9pZCIpPj0wO2NsYXNzIHpje2NvbnN0cnVjdG9yKGUsbj1KU09OLnN0cmluZ2lmeSl7dGhpcy5mbj1lLHRoaXMuX2NvbXB1dGVLZXk9bix0aGlzLmxhc3RDYWNoZT12b2lkIDAsdGhpcy5sYXN0QXJnS2V5PXZvaWQgMH1nZXQoZSl7Y29uc3Qgbj10aGlzLl9jb21wdXRlS2V5KGUpO3JldHVybiB0aGlzLmxhc3RBcmdLZXkhPT1uJiYodGhpcy5sYXN0QXJnS2V5PW4sdGhpcy5sYXN0Q2FjaGU9dGhpcy5mbihlKSksdGhpcy5sYXN0Q2FjaGV9fWNsYXNzIHVze2NvbnN0cnVjdG9yKGUpe3RoaXMuZXhlY3V0b3I9ZSx0aGlzLl9kaWRSdW49ITF9Z2V0IHZhbHVlKCl7aWYoIXRoaXMuX2RpZFJ1bil0cnl7dGhpcy5fdmFsdWU9dGhpcy5leGVjdXRvcigpfWNhdGNoKGUpe3RoaXMuX2Vycm9yPWV9ZmluYWxseXt0aGlzLl9kaWRSdW49ITB9aWYodGhpcy5fZXJyb3IpdGhyb3cgdGhpcy5fZXJyb3I7cmV0dXJuIHRoaXMuX3ZhbHVlfWdldCByYXdWYWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX19dmFyIFB0O2Z1bmN0aW9uIExjKHQpe3JldHVybiB0LnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9ZnVuY3Rpb24gUGModCl7cmV0dXJuIHQuc3BsaXQoL1xyXG58XHJ8XG4vKX1mdW5jdGlvbiBJYyh0KXtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IHI9dC5jaGFyQ29kZUF0KGUpO2lmKHIhPT0zMiYmciE9PTkpcmV0dXJuIGV9cmV0dXJuLTF9ZnVuY3Rpb24gVGModCxlPXQubGVuZ3RoLTEpe2ZvcihsZXQgbj1lO24+PTA7bi0tKXtjb25zdCByPXQuY2hhckNvZGVBdChuKTtpZihyIT09MzImJnIhPT05KXJldHVybiBufXJldHVybi0xfWZ1bmN0aW9uIHBzKHQpe3JldHVybiB0Pj02NSYmdDw9OTB9ZnVuY3Rpb24gUHIodCl7cmV0dXJuIDU1Mjk2PD10JiZ0PD01NjMxOX1mdW5jdGlvbiBXYyh0KXtyZXR1cm4gNTYzMjA8PXQmJnQ8PTU3MzQzfWZ1bmN0aW9uIE9jKHQsZSl7cmV0dXJuKHQtNTUyOTY8PDEwKSsoZS01NjMyMCkrNjU1MzZ9ZnVuY3Rpb24gVWModCxlLG4pe2NvbnN0IHI9dC5jaGFyQ29kZUF0KG4pO2lmKFByKHIpJiZuKzE8ZSl7Y29uc3QgaT10LmNoYXJDb2RlQXQobisxKTtpZihXYyhpKSlyZXR1cm4gT2MocixpKX1yZXR1cm4gcn1jb25zdCBWYz0vXltcdFxuXHJceDIwLVx4N0VdKiQvO2Z1bmN0aW9uIEJjKHQpe3JldHVybiBWYy50ZXN0KHQpfWNsYXNzIFN0e3N0YXRpYyBnZXRJbnN0YW5jZShlKXtyZXR1cm4gUHQuY2FjaGUuZ2V0KEFycmF5LmZyb20oZSkpfXN0YXRpYyBnZXRMb2NhbGVzKCl7cmV0dXJuIFB0Ll9sb2NhbGVzLnZhbHVlfWNvbnN0cnVjdG9yKGUpe3RoaXMuY29uZnVzYWJsZURpY3Rpb25hcnk9ZX1pc0FtYmlndW91cyhlKXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5oYXMoZSl9Z2V0UHJpbWFyeUNvbmZ1c2FibGUoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuZ2V0KGUpfWdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCl7cmV0dXJuIG5ldyBTZXQodGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5rZXlzKCkpfX1QdD1TdCxTdC5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhPW5ldyB1cygoKT0+SlNPTi5wYXJzZSgneyJfY29tbW9uIjpbODIzMiwzMiw4MjMzLDMyLDU3NjAsMzIsODE5MiwzMiw4MTkzLDMyLDgxOTQsMzIsODE5NSwzMiw4MTk2LDMyLDgxOTcsMzIsODE5OCwzMiw4MjAwLDMyLDgyMDEsMzIsODIwMiwzMiw4Mjg3LDMyLDgxOTksMzIsODIzOSwzMiwyMDQyLDk1LDY1MTAxLDk1LDY1MTAyLDk1LDY1MTAzLDk1LDgyMDgsNDUsODIwOSw0NSw4MjEwLDQ1LDY1MTEyLDQ1LDE3NDgsNDUsODI1OSw0NSw3MjcsNDUsODcyMiw0NSwxMDEzNCw0NSwxMTQ1MCw0NSwxNTQ5LDQ0LDE2NDMsNDQsODIxOCw0NCwxODQsNDQsNDIyMzMsNDQsODk0LDU5LDIzMDcsNTgsMjY5MSw1OCwxNDE3LDU4LDE3OTUsNTgsMTc5Niw1OCw1ODY4LDU4LDY1MDcyLDU4LDYxNDcsNTgsNjE1Myw1OCw4MjgyLDU4LDE0NzUsNTgsNzYwLDU4LDQyODg5LDU4LDg3NTgsNTgsNzIwLDU4LDQyMjM3LDU4LDQ1MSwzMywxMTYwMSwzMyw2NjAsNjMsNTc3LDYzLDI0MjksNjMsNTAzOCw2Myw0MjczMSw2MywxMTkxNDksNDYsODIyOCw0NiwxNzkzLDQ2LDE3OTQsNDYsNDI1MTAsNDYsNjgxNzYsNDYsMTYzMiw0NiwxNzc2LDQ2LDQyMjMyLDQ2LDEzNzMsOTYsNjUyODcsOTYsODIxOSw5Niw4MjQyLDk2LDEzNzAsOTYsMTUyMyw5Niw4MTc1LDk2LDY1MzQ0LDk2LDkwMCw5Niw4MTg5LDk2LDgxMjUsOTYsODEyNyw5Niw4MTkwLDk2LDY5Nyw5Niw4ODQsOTYsNzEyLDk2LDcxNCw5Niw3MTUsOTYsNzU2LDk2LDY5OSw5Niw3MDEsOTYsNzAwLDk2LDcwMiw5Niw0Mjg5Miw5NiwxNDk3LDk2LDIwMzYsOTYsMjAzNyw5Niw1MTk0LDk2LDU4MzYsOTYsOTQwMzMsOTYsOTQwMzQsOTYsNjUzMzksOTEsMTAwODgsNDAsMTAwOTgsNDAsMTIzMDgsNDAsNjQ4MzAsNDAsNjUzNDEsOTMsMTAwODksNDEsMTAwOTksNDEsMTIzMDksNDEsNjQ4MzEsNDEsMTAxMDAsMTIzLDExOTA2MCwxMjMsMTAxMDEsMTI1LDY1MzQyLDk0LDgyNzAsNDIsMTY0NSw0Miw4NzI3LDQyLDY2MzM1LDQyLDU5NDEsNDcsODI1Nyw0Nyw4NzI1LDQ3LDgyNjAsNDcsOTU4NSw0NywxMDE4Nyw0NywxMDc0NCw0NywxMTkzNTQsNDcsMTI3NTUsNDcsMTIzMzksNDcsMTE0NjIsNDcsMjAwMzEsNDcsMTIwMzUsNDcsNjUzNDAsOTIsNjUxMjgsOTIsODcyNiw5MiwxMDE4OSw5MiwxMDc0MSw5MiwxMDc0NSw5MiwxMTkzMTEsOTIsMTE5MzU1LDkyLDEyNzU2LDkyLDIwMDIyLDkyLDEyMDM0LDkyLDQyODcyLDM4LDcwOCw5NCw3MTAsOTQsNTg2OSw0MywxMDEzMyw0Myw2NjIwMyw0Myw4MjQ5LDYwLDEwMDk0LDYwLDcwNiw2MCwxMTkzNTAsNjAsNTE3Niw2MCw1ODEwLDYwLDUxMjAsNjEsMTE4NDAsNjEsMTI0NDgsNjEsNDIyMzksNjEsODI1MCw2MiwxMDA5NSw2Miw3MDcsNjIsMTE5MzUxLDYyLDUxNzEsNjIsOTQwMTUsNjIsODI3NSwxMjYsNzMyLDEyNiw4MTI4LDEyNiw4NzY0LDEyNiw2NTM3MiwxMjQsNjUyOTMsNDUsMTIwNzg0LDUwLDEyMDc5NCw1MCwxMjA4MDQsNTAsMTIwODE0LDUwLDEyMDgyNCw1MCwxMzAwMzQsNTAsNDI4NDIsNTAsNDIzLDUwLDEwMDAsNTAsNDI1NjQsNTAsNTMxMSw1MCw0MjczNSw1MCwxMTkzMDIsNTEsMTIwNzg1LDUxLDEyMDc5NSw1MSwxMjA4MDUsNTEsMTIwODE1LDUxLDEyMDgyNSw1MSwxMzAwMzUsNTEsNDI5MjMsNTEsNTQwLDUxLDQzOSw1MSw0Mjg1OCw1MSwxMTQ2OCw1MSwxMjQ4LDUxLDk0MDExLDUxLDcxODgyLDUxLDEyMDc4Niw1MiwxMjA3OTYsNTIsMTIwODA2LDUyLDEyMDgxNiw1MiwxMjA4MjYsNTIsMTMwMDM2LDUyLDUwNzAsNTIsNzE4NTUsNTIsMTIwNzg3LDUzLDEyMDc5Nyw1MywxMjA4MDcsNTMsMTIwODE3LDUzLDEyMDgyNyw1MywxMzAwMzcsNTMsNDQ0LDUzLDcxODY3LDUzLDEyMDc4OCw1NCwxMjA3OTgsNTQsMTIwODA4LDU0LDEyMDgxOCw1NCwxMjA4MjgsNTQsMTMwMDM4LDU0LDExNDc0LDU0LDUxMDIsNTQsNzE4OTMsNTQsMTE5MzE0LDU1LDEyMDc4OSw1NSwxMjA3OTksNTUsMTIwODA5LDU1LDEyMDgxOSw1NSwxMjA4MjksNTUsMTMwMDM5LDU1LDY2NzcwLDU1LDcxODc4LDU1LDI4MTksNTYsMjUzOCw1NiwyNjY2LDU2LDEyNTEzMSw1NiwxMjA3OTAsNTYsMTIwODAwLDU2LDEyMDgxMCw1NiwxMjA4MjAsNTYsMTIwODMwLDU2LDEzMDA0MCw1Niw1NDcsNTYsNTQ2LDU2LDY2MzMwLDU2LDI2NjMsNTcsMjkyMCw1NywyNTQxLDU3LDM0MzcsNTcsMTIwNzkxLDU3LDEyMDgwMSw1NywxMjA4MTEsNTcsMTIwODIxLDU3LDEyMDgzMSw1NywxMzAwNDEsNTcsNDI4NjIsNTcsMTE0NjYsNTcsNzE4ODQsNTcsNzE4NTIsNTcsNzE4OTQsNTcsOTA4Miw5Nyw2NTM0NSw5NywxMTk4MzQsOTcsMTE5ODg2LDk3LDExOTkzOCw5NywxMTk5OTAsOTcsMTIwMDQyLDk3LDEyMDA5NCw5NywxMjAxNDYsOTcsMTIwMTk4LDk3LDEyMDI1MCw5NywxMjAzMDIsOTcsMTIwMzU0LDk3LDEyMDQwNiw5NywxMjA0NTgsOTcsNTkzLDk3LDk0NSw5NywxMjA1MTQsOTcsMTIwNTcyLDk3LDEyMDYzMCw5NywxMjA2ODgsOTcsMTIwNzQ2LDk3LDY1MzEzLDY1LDExOTgwOCw2NSwxMTk4NjAsNjUsMTE5OTEyLDY1LDExOTk2NCw2NSwxMjAwMTYsNjUsMTIwMDY4LDY1LDEyMDEyMCw2NSwxMjAxNzIsNjUsMTIwMjI0LDY1LDEyMDI3Niw2NSwxMjAzMjgsNjUsMTIwMzgwLDY1LDEyMDQzMiw2NSw5MTMsNjUsMTIwNDg4LDY1LDEyMDU0Niw2NSwxMjA2MDQsNjUsMTIwNjYyLDY1LDEyMDcyMCw2NSw1MDM0LDY1LDU1NzMsNjUsNDIyMjIsNjUsOTQwMTYsNjUsNjYyMDgsNjUsMTE5ODM1LDk4LDExOTg4Nyw5OCwxMTk5MzksOTgsMTE5OTkxLDk4LDEyMDA0Myw5OCwxMjAwOTUsOTgsMTIwMTQ3LDk4LDEyMDE5OSw5OCwxMjAyNTEsOTgsMTIwMzAzLDk4LDEyMDM1NSw5OCwxMjA0MDcsOTgsMTIwNDU5LDk4LDM4OCw5OCw1MDcxLDk4LDUyMzQsOTgsNTU1MSw5OCw2NTMxNCw2Niw4NDkyLDY2LDExOTgwOSw2NiwxMTk4NjEsNjYsMTE5OTEzLDY2LDEyMDAxNyw2NiwxMjAwNjksNjYsMTIwMTIxLDY2LDEyMDE3Myw2NiwxMjAyMjUsNjYsMTIwMjc3LDY2LDEyMDMyOSw2NiwxMjAzODEsNjYsMTIwNDMzLDY2LDQyOTMyLDY2LDkxNCw2NiwxMjA0ODksNjYsMTIwNTQ3LDY2LDEyMDYwNSw2NiwxMjA2NjMsNjYsMTIwNzIxLDY2LDUxMDgsNjYsNTYyMyw2Niw0MjE5Miw2Niw2NjE3OCw2Niw2NjIwOSw2Niw2NjMwNSw2Niw2NTM0Nyw5OSw4NTczLDk5LDExOTgzNiw5OSwxMTk4ODgsOTksMTE5OTQwLDk5LDExOTk5Miw5OSwxMjAwNDQsOTksMTIwMDk2LDk5LDEyMDE0OCw5OSwxMjAyMDAsOTksMTIwMjUyLDk5LDEyMDMwNCw5OSwxMjAzNTYsOTksMTIwNDA4LDk5LDEyMDQ2MCw5OSw3NDI4LDk5LDEwMTAsOTksMTE0MjksOTksNDM5NTEsOTksNjY2MjEsOTksMTI4ODQ0LDY3LDcxOTIyLDY3LDcxOTEzLDY3LDY1MzE1LDY3LDg1NTcsNjcsODQ1MCw2Nyw4NDkzLDY3LDExOTgxMCw2NywxMTk4NjIsNjcsMTE5OTE0LDY3LDExOTk2Niw2NywxMjAwMTgsNjcsMTIwMTc0LDY3LDEyMDIyNiw2NywxMjAyNzgsNjcsMTIwMzMwLDY3LDEyMDM4Miw2NywxMjA0MzQsNjcsMTAxNyw2NywxMTQyOCw2Nyw1MDg3LDY3LDQyMjAyLDY3LDY2MjEwLDY3LDY2MzA2LDY3LDY2NTgxLDY3LDY2ODQ0LDY3LDg1NzQsMTAwLDg1MTgsMTAwLDExOTgzNywxMDAsMTE5ODg5LDEwMCwxMTk5NDEsMTAwLDExOTk5MywxMDAsMTIwMDQ1LDEwMCwxMjAwOTcsMTAwLDEyMDE0OSwxMDAsMTIwMjAxLDEwMCwxMjAyNTMsMTAwLDEyMDMwNSwxMDAsMTIwMzU3LDEwMCwxMjA0MDksMTAwLDEyMDQ2MSwxMDAsMTI4MSwxMDAsNTA5NSwxMDAsNTIzMSwxMDAsNDIxOTQsMTAwLDg1NTgsNjgsODUxNyw2OCwxMTk4MTEsNjgsMTE5ODYzLDY4LDExOTkxNSw2OCwxMTk5NjcsNjgsMTIwMDE5LDY4LDEyMDA3MSw2OCwxMjAxMjMsNjgsMTIwMTc1LDY4LDEyMDIyNyw2OCwxMjAyNzksNjgsMTIwMzMxLDY4LDEyMDM4Myw2OCwxMjA0MzUsNjgsNTAyNCw2OCw1NTk4LDY4LDU2MTAsNjgsNDIxOTUsNjgsODQ5NCwxMDEsNjUzNDksMTAxLDg0OTUsMTAxLDg1MTksMTAxLDExOTgzOCwxMDEsMTE5ODkwLDEwMSwxMTk5NDIsMTAxLDEyMDA0NiwxMDEsMTIwMDk4LDEwMSwxMjAxNTAsMTAxLDEyMDIwMiwxMDEsMTIwMjU0LDEwMSwxMjAzMDYsMTAxLDEyMDM1OCwxMDEsMTIwNDEwLDEwMSwxMjA0NjIsMTAxLDQzODI2LDEwMSwxMjEzLDEwMSw4OTU5LDY5LDY1MzE3LDY5LDg0OTYsNjksMTE5ODEyLDY5LDExOTg2NCw2OSwxMTk5MTYsNjksMTIwMDIwLDY5LDEyMDA3Miw2OSwxMjAxMjQsNjksMTIwMTc2LDY5LDEyMDIyOCw2OSwxMjAyODAsNjksMTIwMzMyLDY5LDEyMDM4NCw2OSwxMjA0MzYsNjksOTE3LDY5LDEyMDQ5Miw2OSwxMjA1NTAsNjksMTIwNjA4LDY5LDEyMDY2Niw2OSwxMjA3MjQsNjksMTE1NzcsNjksNTAzNiw2OSw0MjIyNCw2OSw3MTg0Niw2OSw3MTg1NCw2OSw2NjE4Miw2OSwxMTk4MzksMTAyLDExOTg5MSwxMDIsMTE5OTQzLDEwMiwxMTk5OTUsMTAyLDEyMDA0NywxMDIsMTIwMDk5LDEwMiwxMjAxNTEsMTAyLDEyMDIwMywxMDIsMTIwMjU1LDEwMiwxMjAzMDcsMTAyLDEyMDM1OSwxMDIsMTIwNDExLDEwMiwxMjA0NjMsMTAyLDQzODI5LDEwMiw0MjkwNSwxMDIsMzgzLDEwMiw3ODM3LDEwMiwxNDEyLDEwMiwxMTkzMTUsNzAsODQ5Nyw3MCwxMTk4MTMsNzAsMTE5ODY1LDcwLDExOTkxNyw3MCwxMjAwMjEsNzAsMTIwMDczLDcwLDEyMDEyNSw3MCwxMjAxNzcsNzAsMTIwMjI5LDcwLDEyMDI4MSw3MCwxMjAzMzMsNzAsMTIwMzg1LDcwLDEyMDQzNyw3MCw0MjkwNCw3MCw5ODgsNzAsMTIwNzc4LDcwLDU1NTYsNzAsNDIyMDUsNzAsNzE4NzQsNzAsNzE4NDIsNzAsNjYxODMsNzAsNjYyMTMsNzAsNjY4NTMsNzAsNjUzNTEsMTAzLDg0NTgsMTAzLDExOTg0MCwxMDMsMTE5ODkyLDEwMywxMTk5NDQsMTAzLDEyMDA0OCwxMDMsMTIwMTAwLDEwMywxMjAxNTIsMTAzLDEyMDIwNCwxMDMsMTIwMjU2LDEwMywxMjAzMDgsMTAzLDEyMDM2MCwxMDMsMTIwNDEyLDEwMywxMjA0NjQsMTAzLDYwOSwxMDMsNzU1NSwxMDMsMzk3LDEwMywxNDA5LDEwMywxMTk4MTQsNzEsMTE5ODY2LDcxLDExOTkxOCw3MSwxMTk5NzAsNzEsMTIwMDIyLDcxLDEyMDA3NCw3MSwxMjAxMjYsNzEsMTIwMTc4LDcxLDEyMDIzMCw3MSwxMjAyODIsNzEsMTIwMzM0LDcxLDEyMDM4Niw3MSwxMjA0MzgsNzEsMTI5Miw3MSw1MDU2LDcxLDUxMDcsNzEsNDIxOTgsNzEsNjUzNTIsMTA0LDg0NjIsMTA0LDExOTg0MSwxMDQsMTE5OTQ1LDEwNCwxMTk5OTcsMTA0LDEyMDA0OSwxMDQsMTIwMTAxLDEwNCwxMjAxNTMsMTA0LDEyMDIwNSwxMDQsMTIwMjU3LDEwNCwxMjAzMDksMTA0LDEyMDM2MSwxMDQsMTIwNDEzLDEwNCwxMjA0NjUsMTA0LDEyMTEsMTA0LDEzOTIsMTA0LDUwNTgsMTA0LDY1MzIwLDcyLDg0NTksNzIsODQ2MCw3Miw4NDYxLDcyLDExOTgxNSw3MiwxMTk4NjcsNzIsMTE5OTE5LDcyLDEyMDAyMyw3MiwxMjAxNzksNzIsMTIwMjMxLDcyLDEyMDI4Myw3MiwxMjAzMzUsNzIsMTIwMzg3LDcyLDEyMDQzOSw3Miw5MTksNzIsMTIwNDk0LDcyLDEyMDU1Miw3MiwxMjA2MTAsNzIsMTIwNjY4LDcyLDEyMDcyNiw3MiwxMTQwNiw3Miw1MDUxLDcyLDU1MDAsNzIsNDIyMTUsNzIsNjYyNTUsNzIsNzMxLDEwNSw5MDc1LDEwNSw2NTM1MywxMDUsODU2MCwxMDUsODUwNSwxMDUsODUyMCwxMDUsMTE5ODQyLDEwNSwxMTk4OTQsMTA1LDExOTk0NiwxMDUsMTE5OTk4LDEwNSwxMjAwNTAsMTA1LDEyMDEwMiwxMDUsMTIwMTU0LDEwNSwxMjAyMDYsMTA1LDEyMDI1OCwxMDUsMTIwMzEwLDEwNSwxMjAzNjIsMTA1LDEyMDQxNCwxMDUsMTIwNDY2LDEwNSwxMjA0ODQsMTA1LDYxOCwxMDUsNjE3LDEwNSw5NTMsMTA1LDgxMjYsMTA1LDg5MCwxMDUsMTIwNTIyLDEwNSwxMjA1ODAsMTA1LDEyMDYzOCwxMDUsMTIwNjk2LDEwNSwxMjA3NTQsMTA1LDExMTAsMTA1LDQyNTY3LDEwNSwxMjMxLDEwNSw0Mzg5MywxMDUsNTAyOSwxMDUsNzE4NzUsMTA1LDY1MzU0LDEwNiw4NTIxLDEwNiwxMTk4NDMsMTA2LDExOTg5NSwxMDYsMTE5OTQ3LDEwNiwxMTk5OTksMTA2LDEyMDA1MSwxMDYsMTIwMTAzLDEwNiwxMjAxNTUsMTA2LDEyMDIwNywxMDYsMTIwMjU5LDEwNiwxMjAzMTEsMTA2LDEyMDM2MywxMDYsMTIwNDE1LDEwNiwxMjA0NjcsMTA2LDEwMTEsMTA2LDExMTIsMTA2LDY1MzIyLDc0LDExOTgxNyw3NCwxMTk4NjksNzQsMTE5OTIxLDc0LDExOTk3Myw3NCwxMjAwMjUsNzQsMTIwMDc3LDc0LDEyMDEyOSw3NCwxMjAxODEsNzQsMTIwMjMzLDc0LDEyMDI4NSw3NCwxMjAzMzcsNzQsMTIwMzg5LDc0LDEyMDQ0MSw3NCw0MjkzMCw3NCw4OTUsNzQsMTAzMiw3NCw1MDM1LDc0LDUyNjEsNzQsNDIyMDEsNzQsMTE5ODQ0LDEwNywxMTk4OTYsMTA3LDExOTk0OCwxMDcsMTIwMDAwLDEwNywxMjAwNTIsMTA3LDEyMDEwNCwxMDcsMTIwMTU2LDEwNywxMjAyMDgsMTA3LDEyMDI2MCwxMDcsMTIwMzEyLDEwNywxMjAzNjQsMTA3LDEyMDQxNiwxMDcsMTIwNDY4LDEwNyw4NDkwLDc1LDY1MzIzLDc1LDExOTgxOCw3NSwxMTk4NzAsNzUsMTE5OTIyLDc1LDExOTk3NCw3NSwxMjAwMjYsNzUsMTIwMDc4LDc1LDEyMDEzMCw3NSwxMjAxODIsNzUsMTIwMjM0LDc1LDEyMDI4Niw3NSwxMjAzMzgsNzUsMTIwMzkwLDc1LDEyMDQ0Miw3NSw5MjIsNzUsMTIwNDk3LDc1LDEyMDU1NSw3NSwxMjA2MTMsNzUsMTIwNjcxLDc1LDEyMDcyOSw3NSwxMTQxMiw3NSw1MDk0LDc1LDU4NDUsNzUsNDIxOTksNzUsNjY4NDAsNzUsMTQ3MiwxMDgsODczOSw3Myw5MjEzLDczLDY1NTEyLDczLDE2MzMsMTA4LDE3NzcsNzMsNjYzMzYsMTA4LDEyNTEyNywxMDgsMTIwNzgzLDczLDEyMDc5Myw3MywxMjA4MDMsNzMsMTIwODEzLDczLDEyMDgyMyw3MywxMzAwMzMsNzMsNjUzMjEsNzMsODU0NCw3Myw4NDY0LDczLDg0NjUsNzMsMTE5ODE2LDczLDExOTg2OCw3MywxMTk5MjAsNzMsMTIwMDI0LDczLDEyMDEyOCw3MywxMjAxODAsNzMsMTIwMjMyLDczLDEyMDI4NCw3MywxMjAzMzYsNzMsMTIwMzg4LDczLDEyMDQ0MCw3Myw2NTM1NiwxMDgsODU3Miw3Myw4NDY3LDEwOCwxMTk4NDUsMTA4LDExOTg5NywxMDgsMTE5OTQ5LDEwOCwxMjAwMDEsMTA4LDEyMDA1MywxMDgsMTIwMTA1LDczLDEyMDE1Nyw3MywxMjAyMDksNzMsMTIwMjYxLDczLDEyMDMxMyw3MywxMjAzNjUsNzMsMTIwNDE3LDczLDEyMDQ2OSw3Myw0NDgsNzMsMTIwNDk2LDczLDEyMDU1NCw3MywxMjA2MTIsNzMsMTIwNjcwLDczLDEyMDcyOCw3MywxMTQxMCw3MywxMDMwLDczLDEyMTYsNzMsMTQ5MywxMDgsMTUwMywxMDgsMTU3NSwxMDgsMTI2NDY0LDEwOCwxMjY1OTIsMTA4LDY1MTY2LDEwOCw2NTE2NSwxMDgsMTk5NCwxMDgsMTE1OTksNzMsNTgyNSw3Myw0MjIyNiw3Myw5Mzk5Miw3Myw2NjE4NiwxMjQsNjYzMTMsMTI0LDExOTMzOCw3Niw4NTU2LDc2LDg0NjYsNzYsMTE5ODE5LDc2LDExOTg3MSw3NiwxMTk5MjMsNzYsMTIwMDI3LDc2LDEyMDA3OSw3NiwxMjAxMzEsNzYsMTIwMTgzLDc2LDEyMDIzNSw3NiwxMjAyODcsNzYsMTIwMzM5LDc2LDEyMDM5MSw3NiwxMjA0NDMsNzYsMTE0NzIsNzYsNTA4Niw3Niw1MjkwLDc2LDQyMjA5LDc2LDkzOTc0LDc2LDcxODQzLDc2LDcxODU4LDc2LDY2NTg3LDc2LDY2ODU0LDc2LDY1MzI1LDc3LDg1NTksNzcsODQ5OSw3NywxMTk4MjAsNzcsMTE5ODcyLDc3LDExOTkyNCw3NywxMjAwMjgsNzcsMTIwMDgwLDc3LDEyMDEzMiw3NywxMjAxODQsNzcsMTIwMjM2LDc3LDEyMDI4OCw3NywxMjAzNDAsNzcsMTIwMzkyLDc3LDEyMDQ0NCw3Nyw5MjQsNzcsMTIwNDk5LDc3LDEyMDU1Nyw3NywxMjA2MTUsNzcsMTIwNjczLDc3LDEyMDczMSw3NywxMDE4LDc3LDExNDE2LDc3LDUwNDcsNzcsNTYxNiw3Nyw1ODQ2LDc3LDQyMjA3LDc3LDY2MjI0LDc3LDY2MzIxLDc3LDExOTg0NywxMTAsMTE5ODk5LDExMCwxMTk5NTEsMTEwLDEyMDAwMywxMTAsMTIwMDU1LDExMCwxMjAxMDcsMTEwLDEyMDE1OSwxMTAsMTIwMjExLDExMCwxMjAyNjMsMTEwLDEyMDMxNSwxMTAsMTIwMzY3LDExMCwxMjA0MTksMTEwLDEyMDQ3MSwxMTAsMTQwMCwxMTAsMTQwNCwxMTAsNjUzMjYsNzgsODQ2OSw3OCwxMTk4MjEsNzgsMTE5ODczLDc4LDExOTkyNSw3OCwxMTk5NzcsNzgsMTIwMDI5LDc4LDEyMDA4MSw3OCwxMjAxODUsNzgsMTIwMjM3LDc4LDEyMDI4OSw3OCwxMjAzNDEsNzgsMTIwMzkzLDc4LDEyMDQ0NSw3OCw5MjUsNzgsMTIwNTAwLDc4LDEyMDU1OCw3OCwxMjA2MTYsNzgsMTIwNjc0LDc4LDEyMDczMiw3OCwxMTQxOCw3OCw0MjIwOCw3OCw2NjgzNSw3OCwzMDc0LDExMSwzMjAyLDExMSwzMzMwLDExMSwzNDU4LDExMSwyNDA2LDExMSwyNjYyLDExMSwyNzkwLDExMSwzMDQ2LDExMSwzMTc0LDExMSwzMzAyLDExMSwzNDMwLDExMSwzNjY0LDExMSwzNzkyLDExMSw0MTYwLDExMSwxNjM3LDExMSwxNzgxLDExMSw2NTM1OSwxMTEsODUwMCwxMTEsMTE5ODQ4LDExMSwxMTk5MDAsMTExLDExOTk1MiwxMTEsMTIwMDU2LDExMSwxMjAxMDgsMTExLDEyMDE2MCwxMTEsMTIwMjEyLDExMSwxMjAyNjQsMTExLDEyMDMxNiwxMTEsMTIwMzY4LDExMSwxMjA0MjAsMTExLDEyMDQ3MiwxMTEsNzQzOSwxMTEsNzQ0MSwxMTEsNDM4MzcsMTExLDk1OSwxMTEsMTIwNTI4LDExMSwxMjA1ODYsMTExLDEyMDY0NCwxMTEsMTIwNzAyLDExMSwxMjA3NjAsMTExLDk2MywxMTEsMTIwNTMyLDExMSwxMjA1OTAsMTExLDEyMDY0OCwxMTEsMTIwNzA2LDExMSwxMjA3NjQsMTExLDExNDIzLDExMSw0MzUxLDExMSwxNDEzLDExMSwxNTA1LDExMSwxNjA3LDExMSwxMjY1MDAsMTExLDEyNjU2NCwxMTEsMTI2NTk2LDExMSw2NTI1OSwxMTEsNjUyNjAsMTExLDY1MjU4LDExMSw2NTI1NywxMTEsMTcyNiwxMTEsNjQ0MjgsMTExLDY0NDI5LDExMSw2NDQyNywxMTEsNjQ0MjYsMTExLDE3MjksMTExLDY0NDI0LDExMSw2NDQyNSwxMTEsNjQ0MjMsMTExLDY0NDIyLDExMSwxNzQ5LDExMSwzMzYwLDExMSw0MTI1LDExMSw2Njc5NCwxMTEsNzE4ODAsMTExLDcxODk1LDExMSw2NjYwNCwxMTEsMTk4NCw3OSwyNTM0LDc5LDI5MTgsNzksMTIyOTUsNzksNzA4NjQsNzksNzE5MDQsNzksMTIwNzgyLDc5LDEyMDc5Miw3OSwxMjA4MDIsNzksMTIwODEyLDc5LDEyMDgyMiw3OSwxMzAwMzIsNzksNjUzMjcsNzksMTE5ODIyLDc5LDExOTg3NCw3OSwxMTk5MjYsNzksMTE5OTc4LDc5LDEyMDAzMCw3OSwxMjAwODIsNzksMTIwMTM0LDc5LDEyMDE4Niw3OSwxMjAyMzgsNzksMTIwMjkwLDc5LDEyMDM0Miw3OSwxMjAzOTQsNzksMTIwNDQ2LDc5LDkyNyw3OSwxMjA1MDIsNzksMTIwNTYwLDc5LDEyMDYxOCw3OSwxMjA2NzYsNzksMTIwNzM0LDc5LDExNDIyLDc5LDEzNjUsNzksMTE2MDQsNzksNDgxNiw3OSwyODQ4LDc5LDY2NzU0LDc5LDQyMjI3LDc5LDcxODYxLDc5LDY2MTk0LDc5LDY2MjE5LDc5LDY2NTY0LDc5LDY2ODM4LDc5LDkwNzYsMTEyLDY1MzYwLDExMiwxMTk4NDksMTEyLDExOTkwMSwxMTIsMTE5OTUzLDExMiwxMjAwMDUsMTEyLDEyMDA1NywxMTIsMTIwMTA5LDExMiwxMjAxNjEsMTEyLDEyMDIxMywxMTIsMTIwMjY1LDExMiwxMjAzMTcsMTEyLDEyMDM2OSwxMTIsMTIwNDIxLDExMiwxMjA0NzMsMTEyLDk2MSwxMTIsMTIwNTMwLDExMiwxMjA1NDQsMTEyLDEyMDU4OCwxMTIsMTIwNjAyLDExMiwxMjA2NDYsMTEyLDEyMDY2MCwxMTIsMTIwNzA0LDExMiwxMjA3MTgsMTEyLDEyMDc2MiwxMTIsMTIwNzc2LDExMiwxMTQyNywxMTIsNjUzMjgsODAsODQ3Myw4MCwxMTk4MjMsODAsMTE5ODc1LDgwLDExOTkyNyw4MCwxMTk5NzksODAsMTIwMDMxLDgwLDEyMDA4Myw4MCwxMjAxODcsODAsMTIwMjM5LDgwLDEyMDI5MSw4MCwxMjAzNDMsODAsMTIwMzk1LDgwLDEyMDQ0Nyw4MCw5MjksODAsMTIwNTA0LDgwLDEyMDU2Miw4MCwxMjA2MjAsODAsMTIwNjc4LDgwLDEyMDczNiw4MCwxMTQyNiw4MCw1MDkwLDgwLDUyMjksODAsNDIxOTMsODAsNjYxOTcsODAsMTE5ODUwLDExMywxMTk5MDIsMTEzLDExOTk1NCwxMTMsMTIwMDA2LDExMywxMjAwNTgsMTEzLDEyMDExMCwxMTMsMTIwMTYyLDExMywxMjAyMTQsMTEzLDEyMDI2NiwxMTMsMTIwMzE4LDExMywxMjAzNzAsMTEzLDEyMDQyMiwxMTMsMTIwNDc0LDExMywxMzA3LDExMywxMzc5LDExMywxMzgyLDExMyw4NDc0LDgxLDExOTgyNCw4MSwxMTk4NzYsODEsMTE5OTI4LDgxLDExOTk4MCw4MSwxMjAwMzIsODEsMTIwMDg0LDgxLDEyMDE4OCw4MSwxMjAyNDAsODEsMTIwMjkyLDgxLDEyMDM0NCw4MSwxMjAzOTYsODEsMTIwNDQ4LDgxLDExNjA1LDgxLDExOTg1MSwxMTQsMTE5OTAzLDExNCwxMTk5NTUsMTE0LDEyMDAwNywxMTQsMTIwMDU5LDExNCwxMjAxMTEsMTE0LDEyMDE2MywxMTQsMTIwMjE1LDExNCwxMjAyNjcsMTE0LDEyMDMxOSwxMTQsMTIwMzcxLDExNCwxMjA0MjMsMTE0LDEyMDQ3NSwxMTQsNDM4NDcsMTE0LDQzODQ4LDExNCw3NDYyLDExNCwxMTM5NywxMTQsNDM5MDUsMTE0LDExOTMxOCw4Miw4NDc1LDgyLDg0NzYsODIsODQ3Nyw4MiwxMTk4MjUsODIsMTE5ODc3LDgyLDExOTkyOSw4MiwxMjAwMzMsODIsMTIwMTg5LDgyLDEyMDI0MSw4MiwxMjAyOTMsODIsMTIwMzQ1LDgyLDEyMDM5Nyw4MiwxMjA0NDksODIsNDIyLDgyLDUwMjUsODIsNTA3NCw4Miw2Njc0MCw4Miw1NTExLDgyLDQyMjExLDgyLDk0MDA1LDgyLDY1MzYzLDExNSwxMTk4NTIsMTE1LDExOTkwNCwxMTUsMTE5OTU2LDExNSwxMjAwMDgsMTE1LDEyMDA2MCwxMTUsMTIwMTEyLDExNSwxMjAxNjQsMTE1LDEyMDIxNiwxMTUsMTIwMjY4LDExNSwxMjAzMjAsMTE1LDEyMDM3MiwxMTUsMTIwNDI0LDExNSwxMjA0NzYsMTE1LDQyODAxLDExNSw0NDUsMTE1LDExMDksMTE1LDQzOTQ2LDExNSw3MTg3MywxMTUsNjY2MzIsMTE1LDY1MzMxLDgzLDExOTgyNiw4MywxMTk4NzgsODMsMTE5OTMwLDgzLDExOTk4Miw4MywxMjAwMzQsODMsMTIwMDg2LDgzLDEyMDEzOCw4MywxMjAxOTAsODMsMTIwMjQyLDgzLDEyMDI5NCw4MywxMjAzNDYsODMsMTIwMzk4LDgzLDEyMDQ1MCw4MywxMDI5LDgzLDEzNTksODMsNTA3Nyw4Myw1MDgyLDgzLDQyMjEwLDgzLDk0MDEwLDgzLDY2MTk4LDgzLDY2NTkyLDgzLDExOTg1MywxMTYsMTE5OTA1LDExNiwxMTk5NTcsMTE2LDEyMDAwOSwxMTYsMTIwMDYxLDExNiwxMjAxMTMsMTE2LDEyMDE2NSwxMTYsMTIwMjE3LDExNiwxMjAyNjksMTE2LDEyMDMyMSwxMTYsMTIwMzczLDExNiwxMjA0MjUsMTE2LDEyMDQ3NywxMTYsODg2OCw4NCwxMDIwMSw4NCwxMjg4NzIsODQsNjUzMzIsODQsMTE5ODI3LDg0LDExOTg3OSw4NCwxMTk5MzEsODQsMTE5OTgzLDg0LDEyMDAzNSw4NCwxMjAwODcsODQsMTIwMTM5LDg0LDEyMDE5MSw4NCwxMjAyNDMsODQsMTIwMjk1LDg0LDEyMDM0Nyw4NCwxMjAzOTksODQsMTIwNDUxLDg0LDkzMiw4NCwxMjA1MDcsODQsMTIwNTY1LDg0LDEyMDYyMyw4NCwxMjA2ODEsODQsMTIwNzM5LDg0LDExNDMwLDg0LDUwMjYsODQsNDIxOTYsODQsOTM5NjIsODQsNzE4NjgsODQsNjYxOTksODQsNjYyMjUsODQsNjYzMjUsODQsMTE5ODU0LDExNywxMTk5MDYsMTE3LDExOTk1OCwxMTcsMTIwMDEwLDExNywxMjAwNjIsMTE3LDEyMDExNCwxMTcsMTIwMTY2LDExNywxMjAyMTgsMTE3LDEyMDI3MCwxMTcsMTIwMzIyLDExNywxMjAzNzQsMTE3LDEyMDQyNiwxMTcsMTIwNDc4LDExNyw0MjkxMSwxMTcsNzQ1MiwxMTcsNDM4NTQsMTE3LDQzODU4LDExNyw2NTEsMTE3LDk2NSwxMTcsMTIwNTM0LDExNywxMjA1OTIsMTE3LDEyMDY1MCwxMTcsMTIwNzA4LDExNywxMjA3NjYsMTE3LDE0MDUsMTE3LDY2ODA2LDExNyw3MTg5NiwxMTcsODc0Niw4NSw4ODk5LDg1LDExOTgyOCw4NSwxMTk4ODAsODUsMTE5OTMyLDg1LDExOTk4NCw4NSwxMjAwMzYsODUsMTIwMDg4LDg1LDEyMDE0MCw4NSwxMjAxOTIsODUsMTIwMjQ0LDg1LDEyMDI5Niw4NSwxMjAzNDgsODUsMTIwNDAwLDg1LDEyMDQ1Miw4NSwxMzU3LDg1LDQ2MDgsODUsNjY3NjYsODUsNTE5Niw4NSw0MjIyOCw4NSw5NDAxOCw4NSw3MTg2NCw4NSw4NzQ0LDExOCw4ODk3LDExOCw2NTM2NiwxMTgsODU2NCwxMTgsMTE5ODU1LDExOCwxMTk5MDcsMTE4LDExOTk1OSwxMTgsMTIwMDExLDExOCwxMjAwNjMsMTE4LDEyMDExNSwxMTgsMTIwMTY3LDExOCwxMjAyMTksMTE4LDEyMDI3MSwxMTgsMTIwMzIzLDExOCwxMjAzNzUsMTE4LDEyMDQyNywxMTgsMTIwNDc5LDExOCw3NDU2LDExOCw5NTcsMTE4LDEyMDUyNiwxMTgsMTIwNTg0LDExOCwxMjA2NDIsMTE4LDEyMDcwMCwxMTgsMTIwNzU4LDExOCwxMTQxLDExOCwxNDk2LDExOCw3MTQzMCwxMTgsNDM5NDUsMTE4LDcxODcyLDExOCwxMTkzMDksODYsMTYzOSw4NiwxNzgzLDg2LDg1NDgsODYsMTE5ODI5LDg2LDExOTg4MSw4NiwxMTk5MzMsODYsMTE5OTg1LDg2LDEyMDAzNyw4NiwxMjAwODksODYsMTIwMTQxLDg2LDEyMDE5Myw4NiwxMjAyNDUsODYsMTIwMjk3LDg2LDEyMDM0OSw4NiwxMjA0MDEsODYsMTIwNDUzLDg2LDExNDAsODYsMTE1NzYsODYsNTA4MSw4Niw1MTY3LDg2LDQyNzE5LDg2LDQyMjE0LDg2LDkzOTYwLDg2LDcxODQwLDg2LDY2ODQ1LDg2LDYyMywxMTksMTE5ODU2LDExOSwxMTk5MDgsMTE5LDExOTk2MCwxMTksMTIwMDEyLDExOSwxMjAwNjQsMTE5LDEyMDExNiwxMTksMTIwMTY4LDExOSwxMjAyMjAsMTE5LDEyMDI3MiwxMTksMTIwMzI0LDExOSwxMjAzNzYsMTE5LDEyMDQyOCwxMTksMTIwNDgwLDExOSw3NDU3LDExOSwxMTIxLDExOSwxMzA5LDExOSwxMzc3LDExOSw3MTQzNCwxMTksNzE0MzgsMTE5LDcxNDM5LDExOSw0MzkwNywxMTksNzE5MTksODcsNzE5MTAsODcsMTE5ODMwLDg3LDExOTg4Miw4NywxMTk5MzQsODcsMTE5OTg2LDg3LDEyMDAzOCw4NywxMjAwOTAsODcsMTIwMTQyLDg3LDEyMDE5NCw4NywxMjAyNDYsODcsMTIwMjk4LDg3LDEyMDM1MCw4NywxMjA0MDIsODcsMTIwNDU0LDg3LDEzMDgsODcsNTA0Myw4Nyw1MDc2LDg3LDQyMjE4LDg3LDU3NDIsMTIwLDEwNTM5LDEyMCwxMDU0MCwxMjAsMTA3OTksMTIwLDY1MzY4LDEyMCw4NTY5LDEyMCwxMTk4NTcsMTIwLDExOTkwOSwxMjAsMTE5OTYxLDEyMCwxMjAwMTMsMTIwLDEyMDA2NSwxMjAsMTIwMTE3LDEyMCwxMjAxNjksMTIwLDEyMDIyMSwxMjAsMTIwMjczLDEyMCwxMjAzMjUsMTIwLDEyMDM3NywxMjAsMTIwNDI5LDEyMCwxMjA0ODEsMTIwLDU0NDEsMTIwLDU1MDEsMTIwLDU3NDEsODgsOTU4Nyw4OCw2NjMzOCw4OCw3MTkxNiw4OCw2NTMzNiw4OCw4NTUzLDg4LDExOTgzMSw4OCwxMTk4ODMsODgsMTE5OTM1LDg4LDExOTk4Nyw4OCwxMjAwMzksODgsMTIwMDkxLDg4LDEyMDE0Myw4OCwxMjAxOTUsODgsMTIwMjQ3LDg4LDEyMDI5OSw4OCwxMjAzNTEsODgsMTIwNDAzLDg4LDEyMDQ1NSw4OCw0MjkzMSw4OCw5MzUsODgsMTIwNTEwLDg4LDEyMDU2OCw4OCwxMjA2MjYsODgsMTIwNjg0LDg4LDEyMDc0Miw4OCwxMTQzNiw4OCwxMTYxMyw4OCw1ODE1LDg4LDQyMjE5LDg4LDY2MTkyLDg4LDY2MjI4LDg4LDY2MzI3LDg4LDY2ODU1LDg4LDYxMSwxMjEsNzU2NCwxMjEsNjUzNjksMTIxLDExOTg1OCwxMjEsMTE5OTEwLDEyMSwxMTk5NjIsMTIxLDEyMDAxNCwxMjEsMTIwMDY2LDEyMSwxMjAxMTgsMTIxLDEyMDE3MCwxMjEsMTIwMjIyLDEyMSwxMjAyNzQsMTIxLDEyMDMyNiwxMjEsMTIwMzc4LDEyMSwxMjA0MzAsMTIxLDEyMDQ4MiwxMjEsNjU1LDEyMSw3OTM1LDEyMSw0Mzg2NiwxMjEsOTQ3LDEyMSw4NTA5LDEyMSwxMjA1MTYsMTIxLDEyMDU3NCwxMjEsMTIwNjMyLDEyMSwxMjA2OTAsMTIxLDEyMDc0OCwxMjEsMTE5OSwxMjEsNDMyNywxMjEsNzE5MDAsMTIxLDY1MzM3LDg5LDExOTgzMiw4OSwxMTk4ODQsODksMTE5OTM2LDg5LDExOTk4OCw4OSwxMjAwNDAsODksMTIwMDkyLDg5LDEyMDE0NCw4OSwxMjAxOTYsODksMTIwMjQ4LDg5LDEyMDMwMCw4OSwxMjAzNTIsODksMTIwNDA0LDg5LDEyMDQ1Niw4OSw5MzMsODksOTc4LDg5LDEyMDUwOCw4OSwxMjA1NjYsODksMTIwNjI0LDg5LDEyMDY4Miw4OSwxMjA3NDAsODksMTE0MzIsODksMTE5OCw4OSw1MDMzLDg5LDUwNTMsODksNDIyMjAsODksOTQwMTksODksNzE4NDQsODksNjYyMjYsODksMTE5ODU5LDEyMiwxMTk5MTEsMTIyLDExOTk2MywxMjIsMTIwMDE1LDEyMiwxMjAwNjcsMTIyLDEyMDExOSwxMjIsMTIwMTcxLDEyMiwxMjAyMjMsMTIyLDEyMDI3NSwxMjIsMTIwMzI3LDEyMiwxMjAzNzksMTIyLDEyMDQzMSwxMjIsMTIwNDgzLDEyMiw3NDU4LDEyMiw0MzkyMywxMjIsNzE4NzYsMTIyLDY2MjkzLDkwLDcxOTA5LDkwLDY1MzM4LDkwLDg0ODQsOTAsODQ4OCw5MCwxMTk4MzMsOTAsMTE5ODg1LDkwLDExOTkzNyw5MCwxMTk5ODksOTAsMTIwMDQxLDkwLDEyMDE5Nyw5MCwxMjAyNDksOTAsMTIwMzAxLDkwLDEyMDM1Myw5MCwxMjA0MDUsOTAsMTIwNDU3LDkwLDkxOCw5MCwxMjA0OTMsOTAsMTIwNTUxLDkwLDEyMDYwOSw5MCwxMjA2NjcsOTAsMTIwNzI1LDkwLDUwNTksOTAsNDIyMDQsOTAsNzE4NDksOTAsNjUyODIsMzQsNjUyODQsMzYsNjUyODUsMzcsNjUyODYsMzgsNjUyOTAsNDIsNjUyOTEsNDMsNjUyOTQsNDYsNjUyOTUsNDcsNjUyOTYsNDgsNjUyOTcsNDksNjUyOTgsNTAsNjUyOTksNTEsNjUzMDAsNTIsNjUzMDEsNTMsNjUzMDIsNTQsNjUzMDMsNTUsNjUzMDQsNTYsNjUzMDUsNTcsNjUzMDgsNjAsNjUzMDksNjEsNjUzMTAsNjIsNjUzMTIsNjQsNjUzMTYsNjgsNjUzMTgsNzAsNjUzMTksNzEsNjUzMjQsNzYsNjUzMjksODEsNjUzMzAsODIsNjUzMzMsODUsNjUzMzQsODYsNjUzMzUsODcsNjUzNDMsOTUsNjUzNDYsOTgsNjUzNDgsMTAwLDY1MzUwLDEwMiw2NTM1NSwxMDcsNjUzNTcsMTA5LDY1MzU4LDExMCw2NTM2MSwxMTMsNjUzNjIsMTE0LDY1MzY0LDExNiw2NTM2NSwxMTcsNjUzNjcsMTE5LDY1MzcwLDEyMiw2NTM3MSwxMjMsNjUzNzMsMTI1LDExOTg0NiwxMDldLCJfZGVmYXVsdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJjcyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZGUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImVzIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImZyIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sIml0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJqYSI6WzgyMTEsNDUsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MjkyLDQ0LDY1MzA3LDU5XSwia28iOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInBsIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInB0LUJSIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInFwcy1wbG9jIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInJ1IjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywzMDUsMTA1LDkyMSw3MywxMDA5LDExMiwyMTUsMTIwLDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwidHIiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiemgtaGFucyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4OCw0MCw2NTI4OSw0MV0sInpoLWhhbnQiOls4MjExLDQ1LDY1Mzc0LDEyNiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUzMDcsNTldfScpKSxTdC5jYWNoZT1uZXcgemModD0+e2Z1bmN0aW9uIGUoYyl7Y29uc3QgaD1uZXcgTWFwO2ZvcihsZXQgdT0wO3U8Yy5sZW5ndGg7dSs9MiloLnNldChjW3VdLGNbdSsxXSk7cmV0dXJuIGh9ZnVuY3Rpb24gbihjLGgpe2NvbnN0IHU9bmV3IE1hcChjKTtmb3IoY29uc3RbZixtXW9mIGgpdS5zZXQoZixtKTtyZXR1cm4gdX1mdW5jdGlvbiByKGMsaCl7aWYoIWMpcmV0dXJuIGg7Y29uc3QgdT1uZXcgTWFwO2Zvcihjb25zdFtmLG1db2YgYyloLmhhcyhmKSYmdS5zZXQoZixtKTtyZXR1cm4gdX1jb25zdCBpPVB0LmFtYmlndW91c0NoYXJhY3RlckRhdGEudmFsdWU7bGV0IHM9dC5maWx0ZXIoYz0+IWMuc3RhcnRzV2l0aCgiXyIpJiZjIGluIGkpO3MubGVuZ3RoPT09MCYmKHM9WyJfZGVmYXVsdCJdKTtsZXQgYTtmb3IoY29uc3QgYyBvZiBzKXtjb25zdCBoPWUoaVtjXSk7YT1yKGEsaCl9Y29uc3Qgbz1lKGkuX2NvbW1vbiksbD1uKG8sYSk7cmV0dXJuIG5ldyBQdChsKX0pLFN0Ll9sb2NhbGVzPW5ldyB1cygoKT0+T2JqZWN0LmtleXMoUHQuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS52YWx1ZSkuZmlsdGVyKHQ9PiF0LnN0YXJ0c1dpdGgoIl8iKSkpO2NsYXNzIGh0e3N0YXRpYyBnZXRSYXdEYXRhKCl7cmV0dXJuIEpTT04ucGFyc2UoIls5LDEwLDExLDEyLDEzLDMyLDEyNywxNjAsMTczLDg0NywxNTY0LDQ0NDcsNDQ0OCw2MDY4LDYwNjksNjE1NSw2MTU2LDYxNTcsNjE1OCw3MzU1LDczNTYsODE5Miw4MTkzLDgxOTQsODE5NSw4MTk2LDgxOTcsODE5OCw4MTk5LDgyMDAsODIwMSw4MjAyLDgyMDMsODIwNCw4MjA1LDgyMDYsODIwNyw4MjM0LDgyMzUsODIzNiw4MjM3LDgyMzgsODIzOSw4Mjg3LDgyODgsODI4OSw4MjkwLDgyOTEsODI5Miw4MjkzLDgyOTQsODI5NSw4Mjk2LDgyOTcsODI5OCw4Mjk5LDgzMDAsODMwMSw4MzAyLDgzMDMsMTAyNDAsMTIyODgsMTI2NDQsNjUwMjQsNjUwMjUsNjUwMjYsNjUwMjcsNjUwMjgsNjUwMjksNjUwMzAsNjUwMzEsNjUwMzIsNjUwMzMsNjUwMzQsNjUwMzUsNjUwMzYsNjUwMzcsNjUwMzgsNjUwMzksNjUyNzksNjU0NDAsNjU1MjAsNjU1MjEsNjU1MjIsNjU1MjMsNjU1MjQsNjU1MjUsNjU1MjYsNjU1MjcsNjU1MjgsNjU1MzIsNzg4NDQsMTE5MTU1LDExOTE1NiwxMTkxNTcsMTE5MTU4LDExOTE1OSwxMTkxNjAsMTE5MTYxLDExOTE2Miw5MTc1MDQsOTE3NTA1LDkxNzUwNiw5MTc1MDcsOTE3NTA4LDkxNzUwOSw5MTc1MTAsOTE3NTExLDkxNzUxMiw5MTc1MTMsOTE3NTE0LDkxNzUxNSw5MTc1MTYsOTE3NTE3LDkxNzUxOCw5MTc1MTksOTE3NTIwLDkxNzUyMSw5MTc1MjIsOTE3NTIzLDkxNzUyNCw5MTc1MjUsOTE3NTI2LDkxNzUyNyw5MTc1MjgsOTE3NTI5LDkxNzUzMCw5MTc1MzEsOTE3NTMyLDkxNzUzMyw5MTc1MzQsOTE3NTM1LDkxNzUzNiw5MTc1MzcsOTE3NTM4LDkxNzUzOSw5MTc1NDAsOTE3NTQxLDkxNzU0Miw5MTc1NDMsOTE3NTQ0LDkxNzU0NSw5MTc1NDYsOTE3NTQ3LDkxNzU0OCw5MTc1NDksOTE3NTUwLDkxNzU1MSw5MTc1NTIsOTE3NTUzLDkxNzU1NCw5MTc1NTUsOTE3NTU2LDkxNzU1Nyw5MTc1NTgsOTE3NTU5LDkxNzU2MCw5MTc1NjEsOTE3NTYyLDkxNzU2Myw5MTc1NjQsOTE3NTY1LDkxNzU2Niw5MTc1NjcsOTE3NTY4LDkxNzU2OSw5MTc1NzAsOTE3NTcxLDkxNzU3Miw5MTc1NzMsOTE3NTc0LDkxNzU3NSw5MTc1NzYsOTE3NTc3LDkxNzU3OCw5MTc1NzksOTE3NTgwLDkxNzU4MSw5MTc1ODIsOTE3NTgzLDkxNzU4NCw5MTc1ODUsOTE3NTg2LDkxNzU4Nyw5MTc1ODgsOTE3NTg5LDkxNzU5MCw5MTc1OTEsOTE3NTkyLDkxNzU5Myw5MTc1OTQsOTE3NTk1LDkxNzU5Niw5MTc1OTcsOTE3NTk4LDkxNzU5OSw5MTc2MDAsOTE3NjAxLDkxNzYwMiw5MTc2MDMsOTE3NjA0LDkxNzYwNSw5MTc2MDYsOTE3NjA3LDkxNzYwOCw5MTc2MDksOTE3NjEwLDkxNzYxMSw5MTc2MTIsOTE3NjEzLDkxNzYxNCw5MTc2MTUsOTE3NjE2LDkxNzYxNyw5MTc2MTgsOTE3NjE5LDkxNzYyMCw5MTc2MjEsOTE3NjIyLDkxNzYyMyw5MTc2MjQsOTE3NjI1LDkxNzYyNiw5MTc2MjcsOTE3NjI4LDkxNzYyOSw5MTc2MzAsOTE3NjMxLDkxNzc2MCw5MTc3NjEsOTE3NzYyLDkxNzc2Myw5MTc3NjQsOTE3NzY1LDkxNzc2Niw5MTc3NjcsOTE3NzY4LDkxNzc2OSw5MTc3NzAsOTE3NzcxLDkxNzc3Miw5MTc3NzMsOTE3Nzc0LDkxNzc3NSw5MTc3NzYsOTE3Nzc3LDkxNzc3OCw5MTc3NzksOTE3NzgwLDkxNzc4MSw5MTc3ODIsOTE3NzgzLDkxNzc4NCw5MTc3ODUsOTE3Nzg2LDkxNzc4Nyw5MTc3ODgsOTE3Nzg5LDkxNzc5MCw5MTc3OTEsOTE3NzkyLDkxNzc5Myw5MTc3OTQsOTE3Nzk1LDkxNzc5Niw5MTc3OTcsOTE3Nzk4LDkxNzc5OSw5MTc4MDAsOTE3ODAxLDkxNzgwMiw5MTc4MDMsOTE3ODA0LDkxNzgwNSw5MTc4MDYsOTE3ODA3LDkxNzgwOCw5MTc4MDksOTE3ODEwLDkxNzgxMSw5MTc4MTIsOTE3ODEzLDkxNzgxNCw5MTc4MTUsOTE3ODE2LDkxNzgxNyw5MTc4MTgsOTE3ODE5LDkxNzgyMCw5MTc4MjEsOTE3ODIyLDkxNzgyMyw5MTc4MjQsOTE3ODI1LDkxNzgyNiw5MTc4MjcsOTE3ODI4LDkxNzgyOSw5MTc4MzAsOTE3ODMxLDkxNzgzMiw5MTc4MzMsOTE3ODM0LDkxNzgzNSw5MTc4MzYsOTE3ODM3LDkxNzgzOCw5MTc4MzksOTE3ODQwLDkxNzg0MSw5MTc4NDIsOTE3ODQzLDkxNzg0NCw5MTc4NDUsOTE3ODQ2LDkxNzg0Nyw5MTc4NDgsOTE3ODQ5LDkxNzg1MCw5MTc4NTEsOTE3ODUyLDkxNzg1Myw5MTc4NTQsOTE3ODU1LDkxNzg1Niw5MTc4NTcsOTE3ODU4LDkxNzg1OSw5MTc4NjAsOTE3ODYxLDkxNzg2Miw5MTc4NjMsOTE3ODY0LDkxNzg2NSw5MTc4NjYsOTE3ODY3LDkxNzg2OCw5MTc4NjksOTE3ODcwLDkxNzg3MSw5MTc4NzIsOTE3ODczLDkxNzg3NCw5MTc4NzUsOTE3ODc2LDkxNzg3Nyw5MTc4NzgsOTE3ODc5LDkxNzg4MCw5MTc4ODEsOTE3ODgyLDkxNzg4Myw5MTc4ODQsOTE3ODg1LDkxNzg4Niw5MTc4ODcsOTE3ODg4LDkxNzg4OSw5MTc4OTAsOTE3ODkxLDkxNzg5Miw5MTc4OTMsOTE3ODk0LDkxNzg5NSw5MTc4OTYsOTE3ODk3LDkxNzg5OCw5MTc4OTksOTE3OTAwLDkxNzkwMSw5MTc5MDIsOTE3OTAzLDkxNzkwNCw5MTc5MDUsOTE3OTA2LDkxNzkwNyw5MTc5MDgsOTE3OTA5LDkxNzkxMCw5MTc5MTEsOTE3OTEyLDkxNzkxMyw5MTc5MTQsOTE3OTE1LDkxNzkxNiw5MTc5MTcsOTE3OTE4LDkxNzkxOSw5MTc5MjAsOTE3OTIxLDkxNzkyMiw5MTc5MjMsOTE3OTI0LDkxNzkyNSw5MTc5MjYsOTE3OTI3LDkxNzkyOCw5MTc5MjksOTE3OTMwLDkxNzkzMSw5MTc5MzIsOTE3OTMzLDkxNzkzNCw5MTc5MzUsOTE3OTM2LDkxNzkzNyw5MTc5MzgsOTE3OTM5LDkxNzk0MCw5MTc5NDEsOTE3OTQyLDkxNzk0Myw5MTc5NDQsOTE3OTQ1LDkxNzk0Niw5MTc5NDcsOTE3OTQ4LDkxNzk0OSw5MTc5NTAsOTE3OTUxLDkxNzk1Miw5MTc5NTMsOTE3OTU0LDkxNzk1NSw5MTc5NTYsOTE3OTU3LDkxNzk1OCw5MTc5NTksOTE3OTYwLDkxNzk2MSw5MTc5NjIsOTE3OTYzLDkxNzk2NCw5MTc5NjUsOTE3OTY2LDkxNzk2Nyw5MTc5NjgsOTE3OTY5LDkxNzk3MCw5MTc5NzEsOTE3OTcyLDkxNzk3Myw5MTc5NzQsOTE3OTc1LDkxNzk3Niw5MTc5NzcsOTE3OTc4LDkxNzk3OSw5MTc5ODAsOTE3OTgxLDkxNzk4Miw5MTc5ODMsOTE3OTg0LDkxNzk4NSw5MTc5ODYsOTE3OTg3LDkxNzk4OCw5MTc5ODksOTE3OTkwLDkxNzk5MSw5MTc5OTIsOTE3OTkzLDkxNzk5NCw5MTc5OTUsOTE3OTk2LDkxNzk5Nyw5MTc5OTgsOTE3OTk5XSIpfXN0YXRpYyBnZXREYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGF8fCh0aGlzLl9kYXRhPW5ldyBTZXQoaHQuZ2V0UmF3RGF0YSgpKSksdGhpcy5fZGF0YX1zdGF0aWMgaXNJbnZpc2libGVDaGFyYWN0ZXIoZSl7cmV0dXJuIGh0LmdldERhdGEoKS5oYXMoZSl9c3RhdGljIGdldCBjb2RlUG9pbnRzKCl7cmV0dXJuIGh0LmdldERhdGEoKX19aHQuX2RhdGE9dm9pZCAwO2NvbnN0IHFjPSIkaW5pdGlhbGl6ZSI7Y2xhc3MgamN7Y29uc3RydWN0b3IoZSxuLHIsaSl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPW4sdGhpcy5tZXRob2Q9cix0aGlzLmFyZ3M9aSx0aGlzLnR5cGU9MH19Y2xhc3MgZnN7Y29uc3RydWN0b3IoZSxuLHIsaSl7dGhpcy52c1dvcmtlcj1lLHRoaXMuc2VxPW4sdGhpcy5yZXM9cix0aGlzLmVycj1pLHRoaXMudHlwZT0xfX1jbGFzcyAkY3tjb25zdHJ1Y3RvcihlLG4scixpKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9bix0aGlzLmV2ZW50TmFtZT1yLHRoaXMuYXJnPWksdGhpcy50eXBlPTJ9fWNsYXNzIEhje2NvbnN0cnVjdG9yKGUsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9bix0aGlzLmV2ZW50PXIsdGhpcy50eXBlPTN9fWNsYXNzIEdje2NvbnN0cnVjdG9yKGUsbil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPW4sdGhpcy50eXBlPTR9fWNsYXNzIEpje2NvbnN0cnVjdG9yKGUpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9ZSx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKGUpe3RoaXMuX3dvcmtlcklkPWV9c2VuZE1lc3NhZ2UoZSxuKXtjb25zdCByPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKGkscyk9Pnt0aGlzLl9wZW5kaW5nUmVwbGllc1tyXT17cmVzb2x2ZTppLHJlamVjdDpzfSx0aGlzLl9zZW5kKG5ldyBqYyh0aGlzLl93b3JrZXJJZCxyLGUsbikpfSl9bGlzdGVuKGUsbil7bGV0IHI9bnVsbDtjb25zdCBpPW5ldyBxZSh7b25XaWxsQWRkRmlyc3RMaXN0ZW5lcjooKT0+e3I9U3RyaW5nKCsrdGhpcy5fbGFzdFNlbnRSZXEpLHRoaXMuX3BlbmRpbmdFbWl0dGVycy5zZXQocixpKSx0aGlzLl9zZW5kKG5ldyAkYyh0aGlzLl93b3JrZXJJZCxyLGUsbikpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+e3RoaXMuX3BlbmRpbmdFbWl0dGVycy5kZWxldGUociksdGhpcy5fc2VuZChuZXcgR2ModGhpcy5fd29ya2VySWQscikpLHI9bnVsbH19KTtyZXR1cm4gaS5ldmVudH1oYW5kbGVNZXNzYWdlKGUpeyFlfHwhZS52c1dvcmtlcnx8dGhpcy5fd29ya2VySWQhPT0tMSYmZS52c1dvcmtlciE9PXRoaXMuX3dvcmtlcklkfHx0aGlzLl9oYW5kbGVNZXNzYWdlKGUpfV9oYW5kbGVNZXNzYWdlKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgMTpyZXR1cm4gdGhpcy5faGFuZGxlUmVwbHlNZXNzYWdlKGUpO2Nhc2UgMDpyZXR1cm4gdGhpcy5faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSk7Y2FzZSAyOnJldHVybiB0aGlzLl9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSk7Y2FzZSAzOnJldHVybiB0aGlzLl9oYW5kbGVFdmVudE1lc3NhZ2UoZSk7Y2FzZSA0OnJldHVybiB0aGlzLl9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKX19X2hhbmRsZVJlcGx5TWVzc2FnZShlKXtpZighdGhpcy5fcGVuZGluZ1JlcGxpZXNbZS5zZXFdKXtjb25zb2xlLndhcm4oIkdvdCByZXBseSB0byB1bmtub3duIHNlcSIpO3JldHVybn1jb25zdCBuPXRoaXMuX3BlbmRpbmdSZXBsaWVzW2Uuc2VxXTtpZihkZWxldGUgdGhpcy5fcGVuZGluZ1JlcGxpZXNbZS5zZXFdLGUuZXJyKXtsZXQgcj1lLmVycjtlLmVyci4kaXNFcnJvciYmKHI9bmV3IEVycm9yLHIubmFtZT1lLmVyci5uYW1lLHIubWVzc2FnZT1lLmVyci5tZXNzYWdlLHIuc3RhY2s9ZS5lcnIuc3RhY2spLG4ucmVqZWN0KHIpO3JldHVybn1uLnJlc29sdmUoZS5yZXMpfV9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKXtjb25zdCBuPWUucmVxO3RoaXMuX2hhbmRsZXIuaGFuZGxlTWVzc2FnZShlLm1ldGhvZCxlLmFyZ3MpLnRoZW4oaT0+e3RoaXMuX3NlbmQobmV3IGZzKHRoaXMuX3dvcmtlcklkLG4saSx2b2lkIDApKX0saT0+e2kuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihpLmRldGFpbD1jcyhpLmRldGFpbCkpLHRoaXMuX3NlbmQobmV3IGZzKHRoaXMuX3dvcmtlcklkLG4sdm9pZCAwLGNzKGkpKSl9KX1faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe2NvbnN0IG49ZS5yZXEscj10aGlzLl9oYW5kbGVyLmhhbmRsZUV2ZW50KGUuZXZlbnROYW1lLGUuYXJnKShpPT57dGhpcy5fc2VuZChuZXcgSGModGhpcy5fd29ya2VySWQsbixpKSl9KTt0aGlzLl9wZW5kaW5nRXZlbnRzLnNldChuLHIpfV9oYW5kbGVFdmVudE1lc3NhZ2UoZSl7aWYoIXRoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXMoZS5yZXEpKXtjb25zb2xlLndhcm4oIkdvdCBldmVudCBmb3IgdW5rbm93biByZXEiKTtyZXR1cm59dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmdldChlLnJlcSkuZmlyZShlLmV2ZW50KX1faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl7aWYoIXRoaXMuX3BlbmRpbmdFdmVudHMuaGFzKGUucmVxKSl7Y29uc29sZS53YXJuKCJHb3QgdW5zdWJzY3JpYmUgZm9yIHVua25vd24gcmVxIik7cmV0dXJufXRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KGUucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUoZS5yZXEpfV9zZW5kKGUpe2NvbnN0IG49W107aWYoZS50eXBlPT09MClmb3IobGV0IHI9MDtyPGUuYXJncy5sZW5ndGg7cisrKWUuYXJnc1tyXWluc3RhbmNlb2YgQXJyYXlCdWZmZXImJm4ucHVzaChlLmFyZ3Nbcl0pO2Vsc2UgZS50eXBlPT09MSYmZS5yZXMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmbi5wdXNoKGUucmVzKTt0aGlzLl9oYW5kbGVyLnNlbmRNZXNzYWdlKGUsbil9fWZ1bmN0aW9uIG1zKHQpe3JldHVybiB0WzBdPT09Im8iJiZ0WzFdPT09Im4iJiZwcyh0LmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIGdzKHQpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KHQpJiZwcyh0LmNoYXJDb2RlQXQoOSkpfWZ1bmN0aW9uIFhjKHQsZSxuKXtjb25zdCByPWE9PmZ1bmN0aW9uKCl7Y29uc3Qgbz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIGUoYSxvKX0saT1hPT5mdW5jdGlvbihvKXtyZXR1cm4gbihhLG8pfSxzPXt9O2Zvcihjb25zdCBhIG9mIHQpe2lmKGdzKGEpKXtzW2FdPWkoYSk7Y29udGludWV9aWYobXMoYSkpe3NbYV09bihhLHZvaWQgMCk7Y29udGludWV9c1thXT1yKGEpfXJldHVybiBzfWNsYXNzIFlje2NvbnN0cnVjdG9yKGUsbil7dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5PW4sdGhpcy5fcmVxdWVzdEhhbmRsZXI9bnVsbCx0aGlzLl9wcm90b2NvbD1uZXcgSmMoe3NlbmRNZXNzYWdlOihyLGkpPT57ZShyLGkpfSxoYW5kbGVNZXNzYWdlOihyLGkpPT50aGlzLl9oYW5kbGVNZXNzYWdlKHIsaSksaGFuZGxlRXZlbnQ6KHIsaSk9PnRoaXMuX2hhbmRsZUV2ZW50KHIsaSl9KX1vbm1lc3NhZ2UoZSl7dGhpcy5fcHJvdG9jb2wuaGFuZGxlTWVzc2FnZShlKX1faGFuZGxlTWVzc2FnZShlLG4pe2lmKGU9PT1xYylyZXR1cm4gdGhpcy5pbml0aWFsaXplKG5bMF0sblsxXSxuWzJdLG5bM10pO2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcnx8dHlwZW9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdIT0iZnVuY3Rpb24iKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5hcHBseSh0aGlzLl9yZXF1ZXN0SGFuZGxlcixuKSl9Y2F0Y2gocil7cmV0dXJuIFByb21pc2UucmVqZWN0KHIpfX1faGFuZGxlRXZlbnQoZSxuKXtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIik7aWYoZ3MoZSkpe2NvbnN0IHI9dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uY2FsbCh0aGlzLl9yZXF1ZXN0SGFuZGxlcixuKTtpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZHluYW1pYyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gcn1pZihtcyhlKSl7Y29uc3Qgcj10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXTtpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHJ9dGhyb3cgbmV3IEVycm9yKGBNYWxmb3JtZWQgZXZlbnQgbmFtZSAke2V9YCl9aW5pdGlhbGl6ZShlLG4scixpKXt0aGlzLl9wcm90b2NvbC5zZXRXb3JrZXJJZChlKTtjb25zdCBvPVhjKGksKGwsYyk9PnRoaXMuX3Byb3RvY29sLnNlbmRNZXNzYWdlKGwsYyksKGwsYyk9PnRoaXMuX3Byb3RvY29sLmxpc3RlbihsLGMpKTtyZXR1cm4gdGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5Pyh0aGlzLl9yZXF1ZXN0SGFuZGxlcj10aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3RvcnkobyksUHJvbWlzZS5yZXNvbHZlKEZyKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSkpOihuJiYodHlwZW9mIG4uYmFzZVVybDwidSImJmRlbGV0ZSBuLmJhc2VVcmwsdHlwZW9mIG4ucGF0aHM8InUiJiZ0eXBlb2Ygbi5wYXRocy52czwidSImJmRlbGV0ZSBuLnBhdGhzLnZzLHR5cGVvZiBuLnRydXN0ZWRUeXBlc1BvbGljeTwidSImJmRlbGV0ZSBuLnRydXN0ZWRUeXBlc1BvbGljeSxuLmNhdGNoRXJyb3I9ITAsZ2xvYmFsVGhpcy5yZXF1aXJlLmNvbmZpZyhuKSksbmV3IFByb21pc2UoKGwsYyk9Pntjb25zdCBoPWdsb2JhbFRoaXMucmVxdWlyZTtoKFtyXSx1PT57aWYodGhpcy5fcmVxdWVzdEhhbmRsZXI9dS5jcmVhdGUobyksIXRoaXMuX3JlcXVlc3RIYW5kbGVyKXtjKG5ldyBFcnJvcigiTm8gUmVxdWVzdEhhbmRsZXIhIikpO3JldHVybn1sKEZyKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSl9LGMpfSkpfX1jbGFzcyBkdHtjb25zdHJ1Y3RvcihlLG4scixpKXt0aGlzLm9yaWdpbmFsU3RhcnQ9ZSx0aGlzLm9yaWdpbmFsTGVuZ3RoPW4sdGhpcy5tb2RpZmllZFN0YXJ0PXIsdGhpcy5tb2RpZmllZExlbmd0aD1pfWdldE9yaWdpbmFsRW5kKCl7cmV0dXJuIHRoaXMub3JpZ2luYWxTdGFydCt0aGlzLm9yaWdpbmFsTGVuZ3RofWdldE1vZGlmaWVkRW5kKCl7cmV0dXJuIHRoaXMubW9kaWZpZWRTdGFydCt0aGlzLm1vZGlmaWVkTGVuZ3RofX1mdW5jdGlvbiBicyh0LGUpe3JldHVybihlPDw1KS1lK3R8MH1mdW5jdGlvbiBLYyh0LGUpe2U9YnMoMTQ5NDE3LGUpO2ZvcihsZXQgbj0wLHI9dC5sZW5ndGg7bjxyO24rKyllPWJzKHQuY2hhckNvZGVBdChuKSxlKTtyZXR1cm4gZX1jbGFzcyB2c3tjb25zdHJ1Y3RvcihlKXt0aGlzLnNvdXJjZT1lfWdldEVsZW1lbnRzKCl7Y29uc3QgZT10aGlzLnNvdXJjZSxuPW5ldyBJbnQzMkFycmF5KGUubGVuZ3RoKTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspbltyXT1lLmNoYXJDb2RlQXQocik7cmV0dXJuIG59fWZ1bmN0aW9uIFFjKHQsZSxuKXtyZXR1cm4gbmV3IHV0KG5ldyB2cyh0KSxuZXcgdnMoZSkpLkNvbXB1dGVEaWZmKG4pLmNoYW5nZXN9Y2xhc3MgSXR7c3RhdGljIEFzc2VydChlLG4pe2lmKCFlKXRocm93IG5ldyBFcnJvcihuKX19Y2xhc3MgVHR7c3RhdGljIENvcHkoZSxuLHIsaSxzKXtmb3IobGV0IGE9MDthPHM7YSsrKXJbaSthXT1lW24rYV19c3RhdGljIENvcHkyKGUsbixyLGkscyl7Zm9yKGxldCBhPTA7YTxzO2ErKylyW2krYV09ZVtuK2FdfX1jbGFzcyB5c3tjb25zdHJ1Y3Rvcigpe3RoaXMubV9jaGFuZ2VzPVtdLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTB9TWFya05leHRDaGFuZ2UoKXsodGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMubV9jaGFuZ2VzLnB1c2gobmV3IGR0KHRoaXMubV9vcmlnaW5hbFN0YXJ0LHRoaXMubV9vcmlnaW5hbENvdW50LHRoaXMubV9tb2RpZmllZFN0YXJ0LHRoaXMubV9tb2RpZmllZENvdW50KSksdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNH1BZGRPcmlnaW5hbEVsZW1lbnQoZSxuKXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCxlKSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCxuKSx0aGlzLm1fb3JpZ2luYWxDb3VudCsrfUFkZE1vZGlmaWVkRWxlbWVudChlLG4pe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LG4pLHRoaXMubV9tb2RpZmllZENvdW50Kyt9Z2V0Q2hhbmdlcygpe3JldHVybih0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzfWdldFJldmVyc2VDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXMucmV2ZXJzZSgpLHRoaXMubV9jaGFuZ2VzfX1jbGFzcyB1dHtjb25zdHJ1Y3RvcihlLG4scj1udWxsKXt0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZT1yLHRoaXMuX29yaWdpbmFsU2VxdWVuY2U9ZSx0aGlzLl9tb2RpZmllZFNlcXVlbmNlPW47Y29uc3RbaSxzLGFdPXV0Ll9nZXRFbGVtZW50cyhlKSxbbyxsLGNdPXV0Ll9nZXRFbGVtZW50cyhuKTt0aGlzLl9oYXNTdHJpbmdzPWEmJmMsdGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50cz1pLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2g9cyx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzPW8sdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaD1sLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W119c3RhdGljIF9pc1N0cmluZ0FycmF5KGUpe3JldHVybiBlLmxlbmd0aD4wJiZ0eXBlb2YgZVswXT09InN0cmluZyJ9c3RhdGljIF9nZXRFbGVtZW50cyhlKXtjb25zdCBuPWUuZ2V0RWxlbWVudHMoKTtpZih1dC5faXNTdHJpbmdBcnJheShuKSl7Y29uc3Qgcj1uZXcgSW50MzJBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBpPTAscz1uLmxlbmd0aDtpPHM7aSsrKXJbaV09S2MobltpXSwwKTtyZXR1cm5bbixyLCEwXX1yZXR1cm4gbiBpbnN0YW5jZW9mIEludDMyQXJyYXk/W1tdLG4sITFdOltbXSxuZXcgSW50MzJBcnJheShuKSwhMV19RWxlbWVudHNBcmVFcXVhbChlLG4pe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdIT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFtuXT8hMTp0aGlzLl9oYXNTdHJpbmdzP3RoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW25dOiEwfUVsZW1lbnRzQXJlU3RyaWN0RXF1YWwoZSxuKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUsbikpcmV0dXJuITE7Y29uc3Qgcj11dC5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9vcmlnaW5hbFNlcXVlbmNlLGUpLGk9dXQuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fbW9kaWZpZWRTZXF1ZW5jZSxuKTtyZXR1cm4gcj09PWl9c3RhdGljIF9nZXRTdHJpY3RFbGVtZW50KGUsbil7cmV0dXJuIHR5cGVvZiBlLmdldFN0cmljdEVsZW1lbnQ9PSJmdW5jdGlvbiI/ZS5nZXRTdHJpY3RFbGVtZW50KG4pOm51bGx9T3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKGUsbil7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV0hPT10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW25dPyExOnRoaXMuX2hhc1N0cmluZ3M/dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbbl06ITB9TW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGUsbil7cmV0dXJuIHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbZV0hPT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW25dPyExOnRoaXMuX2hhc1N0cmluZ3M/dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXT09PXRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbbl06ITB9Q29tcHV0ZURpZmYoZSl7cmV0dXJuIHRoaXMuX0NvbXB1dGVEaWZmKDAsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMSwwLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsZSl9X0NvbXB1dGVEaWZmKGUsbixyLGkscyl7Y29uc3QgYT1bITFdO2xldCBvPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUoZSxuLHIsaSxhKTtyZXR1cm4gcyYmKG89dGhpcy5QcmV0dGlmeUNoYW5nZXMobykpLHtxdWl0RWFybHk6YVswXSxjaGFuZ2VzOm99fUNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsbixyLGkscyl7Zm9yKHNbMF09ITE7ZTw9biYmcjw9aSYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUscik7KWUrKyxyKys7Zm9yKDtuPj1lJiZpPj1yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobixpKTspbi0tLGktLTtpZihlPm58fHI+aSl7bGV0IHU7cmV0dXJuIHI8PWk/KEl0LkFzc2VydChlPT09bisxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSx1PVtuZXcgZHQoZSwwLHIsaS1yKzEpXSk6ZTw9bj8oSXQuQXNzZXJ0KHI9PT1pKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLHU9W25ldyBkdChlLG4tZSsxLHIsMCldKTooSXQuQXNzZXJ0KGU9PT1uKzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLEl0LkFzc2VydChyPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSx1PVtdKSx1fWNvbnN0IGE9WzBdLG89WzBdLGw9dGhpcy5Db21wdXRlUmVjdXJzaW9uUG9pbnQoZSxuLHIsaSxhLG8scyksYz1hWzBdLGg9b1swXTtpZihsIT09bnVsbClyZXR1cm4gbDtpZighc1swXSl7Y29uc3QgdT10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKGUsYyxyLGgscyk7bGV0IGY9W107cmV0dXJuIHNbMF0/Zj1bbmV3IGR0KGMrMSxuLShjKzEpKzEsaCsxLGktKGgrMSkrMSldOmY9dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShjKzEsbixoKzEsaSxzKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyh1LGYpfXJldHVybltuZXcgZHQoZSxuLWUrMSxyLGktcisxKV19V0FMS1RSQUNFKGUsbixyLGkscyxhLG8sbCxjLGgsdSxmLG0sZyxiLHksQyxrKXtsZXQgdz1udWxsLEY9bnVsbCxfPW5ldyB5cyxQPW4sVz1yLFQ9bVswXS15WzBdLWksSj0tMTA3Mzc0MTgyNCxyZT10aGlzLm1fZm9yd2FyZEhpc3RvcnkubGVuZ3RoLTE7ZG97Y29uc3QgTj1UK2U7Tj09PVB8fE48VyYmY1tOLTFdPGNbTisxXT8odT1jW04rMV0sZz11LVQtaSx1PEomJl8uTWFya05leHRDaGFuZ2UoKSxKPXUsXy5BZGRNb2RpZmllZEVsZW1lbnQodSsxLGcpLFQ9TisxLWUpOih1PWNbTi0xXSsxLGc9dS1ULWksdTxKJiZfLk1hcmtOZXh0Q2hhbmdlKCksSj11LTEsXy5BZGRPcmlnaW5hbEVsZW1lbnQodSxnKzEpLFQ9Ti0xLWUpLHJlPj0wJiYoYz10aGlzLm1fZm9yd2FyZEhpc3RvcnlbcmVdLGU9Y1swXSxQPTEsVz1jLmxlbmd0aC0xKX13aGlsZSgtLXJlPj0tMSk7aWYodz1fLmdldFJldmVyc2VDaGFuZ2VzKCksa1swXSl7bGV0IE49bVswXSsxLFI9eVswXSsxO2lmKHchPT1udWxsJiZ3Lmxlbmd0aD4wKXtjb25zdCBJPXdbdy5sZW5ndGgtMV07Tj1NYXRoLm1heChOLEkuZ2V0T3JpZ2luYWxFbmQoKSksUj1NYXRoLm1heChSLEkuZ2V0TW9kaWZpZWRFbmQoKSl9Rj1bbmV3IGR0KE4sZi1OKzEsUixiLVIrMSldfWVsc2V7Xz1uZXcgeXMsUD1hLFc9byxUPW1bMF0teVswXS1sLEo9MTA3Mzc0MTgyNCxyZT1DP3RoaXMubV9yZXZlcnNlSGlzdG9yeS5sZW5ndGgtMTp0aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTI7ZG97Y29uc3QgTj1UK3M7Tj09PVB8fE48VyYmaFtOLTFdPj1oW04rMV0/KHU9aFtOKzFdLTEsZz11LVQtbCx1PkomJl8uTWFya05leHRDaGFuZ2UoKSxKPXUrMSxfLkFkZE9yaWdpbmFsRWxlbWVudCh1KzEsZysxKSxUPU4rMS1zKToodT1oW04tMV0sZz11LVQtbCx1PkomJl8uTWFya05leHRDaGFuZ2UoKSxKPXUsXy5BZGRNb2RpZmllZEVsZW1lbnQodSsxLGcrMSksVD1OLTEtcykscmU+PTAmJihoPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtyZV0scz1oWzBdLFA9MSxXPWgubGVuZ3RoLTEpfXdoaWxlKC0tcmU+PS0xKTtGPV8uZ2V0Q2hhbmdlcygpfXJldHVybiB0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyh3LEYpfUNvbXB1dGVSZWN1cnNpb25Qb2ludChlLG4scixpLHMsYSxvKXtsZXQgbD0wLGM9MCxoPTAsdT0wLGY9MCxtPTA7ZS0tLHItLSxzWzBdPTAsYVswXT0wLHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W107Y29uc3QgZz1uLWUrKGktciksYj1nKzEseT1uZXcgSW50MzJBcnJheShiKSxDPW5ldyBJbnQzMkFycmF5KGIpLGs9aS1yLHc9bi1lLEY9ZS1yLF89bi1pLFc9KHctayklMj09PTA7eVtrXT1lLENbd109bixvWzBdPSExO2ZvcihsZXQgVD0xO1Q8PWcvMisxO1QrKyl7bGV0IEo9MCxyZT0wO2g9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChrLVQsVCxrLGIpLHU9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChrK1QsVCxrLGIpO2ZvcihsZXQgUj1oO1I8PXU7Uis9Mil7Uj09PWh8fFI8dSYmeVtSLTFdPHlbUisxXT9sPXlbUisxXTpsPXlbUi0xXSsxLGM9bC0oUi1rKS1GO2NvbnN0IEk9bDtmb3IoO2w8biYmYzxpJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobCsxLGMrMSk7KWwrKyxjKys7aWYoeVtSXT1sLGwrYz5KK3JlJiYoSj1sLHJlPWMpLCFXJiZNYXRoLmFicyhSLXcpPD1ULTEmJmw+PUNbUl0pcmV0dXJuIHNbMF09bCxhWzBdPWMsSTw9Q1tSXSYmVDw9MTQ0OD90aGlzLldBTEtUUkFDRShrLGgsdSxGLHcsZixtLF8seSxDLGwsbixzLGMsaSxhLFcsbyk6bnVsbH1jb25zdCBOPShKLWUrKHJlLXIpLVQpLzI7aWYodGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUhPT1udWxsJiYhdGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUoSixOKSlyZXR1cm4gb1swXT0hMCxzWzBdPUosYVswXT1yZSxOPjAmJlQ8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoayxoLHUsRix3LGYsbSxfLHksQyxsLG4scyxjLGksYSxXLG8pOihlKysscisrLFtuZXcgZHQoZSxuLWUrMSxyLGktcisxKV0pO2Y9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZCh3LVQsVCx3LGIpLG09dGhpcy5DbGlwRGlhZ29uYWxCb3VuZCh3K1QsVCx3LGIpO2ZvcihsZXQgUj1mO1I8PW07Uis9Mil7Uj09PWZ8fFI8bSYmQ1tSLTFdPj1DW1IrMV0/bD1DW1IrMV0tMTpsPUNbUi0xXSxjPWwtKFItdyktXztjb25zdCBJPWw7Zm9yKDtsPmUmJmM+ciYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKGwsYyk7KWwtLSxjLS07aWYoQ1tSXT1sLFcmJk1hdGguYWJzKFItayk8PVQmJmw8PXlbUl0pcmV0dXJuIHNbMF09bCxhWzBdPWMsST49eVtSXSYmVDw9MTQ0OD90aGlzLldBTEtUUkFDRShrLGgsdSxGLHcsZixtLF8seSxDLGwsbixzLGMsaSxhLFcsbyk6bnVsbH1pZihUPD0xNDQ3KXtsZXQgUj1uZXcgSW50MzJBcnJheSh1LWgrMik7UlswXT1rLWgrMSxUdC5Db3B5Mih5LGgsUiwxLHUtaCsxKSx0aGlzLm1fZm9yd2FyZEhpc3RvcnkucHVzaChSKSxSPW5ldyBJbnQzMkFycmF5KG0tZisyKSxSWzBdPXctZisxLFR0LkNvcHkyKEMsZixSLDEsbS1mKzEpLHRoaXMubV9yZXZlcnNlSGlzdG9yeS5wdXNoKFIpfX1yZXR1cm4gdGhpcy5XQUxLVFJBQ0UoayxoLHUsRix3LGYsbSxfLHksQyxsLG4scyxjLGksYSxXLG8pfVByZXR0aWZ5Q2hhbmdlcyhlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcj1lW25dLGk9bjxlLmxlbmd0aC0xP2VbbisxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLHM9bjxlLmxlbmd0aC0xP2VbbisxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLGE9ci5vcmlnaW5hbExlbmd0aD4wLG89ci5tb2RpZmllZExlbmd0aD4wO2Zvcig7ci5vcmlnaW5hbFN0YXJ0K3Iub3JpZ2luYWxMZW5ndGg8aSYmci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGg8cyYmKCFhfHx0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChyLm9yaWdpbmFsU3RhcnQsci5vcmlnaW5hbFN0YXJ0K3Iub3JpZ2luYWxMZW5ndGgpKSYmKCFvfHx0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChyLm1vZGlmaWVkU3RhcnQsci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGgpKTspe2NvbnN0IGM9dGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHIub3JpZ2luYWxTdGFydCxyLm1vZGlmaWVkU3RhcnQpO2lmKHRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChyLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aCxyLm1vZGlmaWVkU3RhcnQrci5tb2RpZmllZExlbmd0aCkmJiFjKWJyZWFrO3Iub3JpZ2luYWxTdGFydCsrLHIubW9kaWZpZWRTdGFydCsrfWNvbnN0IGw9W251bGxdO2lmKG48ZS5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChlW25dLGVbbisxXSxsKSl7ZVtuXT1sWzBdLGUuc3BsaWNlKG4rMSwxKSxuLS07Y29udGludWV9fWZvcihsZXQgbj1lLmxlbmd0aC0xO24+PTA7bi0tKXtjb25zdCByPWVbbl07bGV0IGk9MCxzPTA7aWYobj4wKXtjb25zdCB1PWVbbi0xXTtpPXUub3JpZ2luYWxTdGFydCt1Lm9yaWdpbmFsTGVuZ3RoLHM9dS5tb2RpZmllZFN0YXJ0K3UubW9kaWZpZWRMZW5ndGh9Y29uc3QgYT1yLm9yaWdpbmFsTGVuZ3RoPjAsbz1yLm1vZGlmaWVkTGVuZ3RoPjA7bGV0IGw9MCxjPXRoaXMuX2JvdW5kYXJ5U2NvcmUoci5vcmlnaW5hbFN0YXJ0LHIub3JpZ2luYWxMZW5ndGgsci5tb2RpZmllZFN0YXJ0LHIubW9kaWZpZWRMZW5ndGgpO2ZvcihsZXQgdT0xOzt1Kyspe2NvbnN0IGY9ci5vcmlnaW5hbFN0YXJ0LXUsbT1yLm1vZGlmaWVkU3RhcnQtdTtpZihmPGl8fG08c3x8YSYmIXRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKGYsZityLm9yaWdpbmFsTGVuZ3RoKXx8byYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKG0sbStyLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztjb25zdCBiPShmPT09aSYmbT09PXM/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKGYsci5vcmlnaW5hbExlbmd0aCxtLHIubW9kaWZpZWRMZW5ndGgpO2I+YyYmKGM9YixsPXUpfXIub3JpZ2luYWxTdGFydC09bCxyLm1vZGlmaWVkU3RhcnQtPWw7Y29uc3QgaD1bbnVsbF07aWYobj4wJiZ0aGlzLkNoYW5nZXNPdmVybGFwKGVbbi0xXSxlW25dLGgpKXtlW24tMV09aFswXSxlLnNwbGljZShuLDEpLG4rKztjb250aW51ZX19aWYodGhpcy5faGFzU3RyaW5ncylmb3IobGV0IG49MSxyPWUubGVuZ3RoO248cjtuKyspe2NvbnN0IGk9ZVtuLTFdLHM9ZVtuXSxhPXMub3JpZ2luYWxTdGFydC1pLm9yaWdpbmFsU3RhcnQtaS5vcmlnaW5hbExlbmd0aCxvPWkub3JpZ2luYWxTdGFydCxsPXMub3JpZ2luYWxTdGFydCtzLm9yaWdpbmFsTGVuZ3RoLGM9bC1vLGg9aS5tb2RpZmllZFN0YXJ0LHU9cy5tb2RpZmllZFN0YXJ0K3MubW9kaWZpZWRMZW5ndGgsZj11LWg7aWYoYTw1JiZjPDIwJiZmPDIwKXtjb25zdCBtPXRoaXMuX2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UobyxjLGgsZixhKTtpZihtKXtjb25zdFtnLGJdPW07KGchPT1pLm9yaWdpbmFsU3RhcnQraS5vcmlnaW5hbExlbmd0aHx8YiE9PWkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RoKSYmKGkub3JpZ2luYWxMZW5ndGg9Zy1pLm9yaWdpbmFsU3RhcnQsaS5tb2RpZmllZExlbmd0aD1iLWkubW9kaWZpZWRTdGFydCxzLm9yaWdpbmFsU3RhcnQ9ZythLHMubW9kaWZpZWRTdGFydD1iK2Escy5vcmlnaW5hbExlbmd0aD1sLXMub3JpZ2luYWxTdGFydCxzLm1vZGlmaWVkTGVuZ3RoPXUtcy5tb2RpZmllZFN0YXJ0KX19fXJldHVybiBlfV9maW5kQmV0dGVyQ29udGlndW91c1NlcXVlbmNlKGUsbixyLGkscyl7aWYobjxzfHxpPHMpcmV0dXJuIG51bGw7Y29uc3QgYT1lK24tcysxLG89citpLXMrMTtsZXQgbD0wLGM9MCxoPTA7Zm9yKGxldCB1PWU7dTxhO3UrKylmb3IobGV0IGY9cjtmPG87ZisrKXtjb25zdCBtPXRoaXMuX2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKHUsZixzKTttPjAmJm0+bCYmKGw9bSxjPXUsaD1mKX1yZXR1cm4gbD4wP1tjLGhdOm51bGx9X2NvbnRpZ3VvdXNTZXF1ZW5jZVNjb3JlKGUsbixyKXtsZXQgaT0wO2ZvcihsZXQgcz0wO3M8cjtzKyspe2lmKCF0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZStzLG4rcykpcmV0dXJuIDA7aSs9dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1tlK3NdLmxlbmd0aH1yZXR1cm4gaX1fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xPyEwOnRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdKX1fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KGUsbil7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZihuPjApe2NvbnN0IHI9ZStuO2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShyLTEpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkocikpcmV0dXJuITB9cmV0dXJuITF9X01vZGlmaWVkSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMT8hMDp0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXSl9X01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShlLG4pe2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYobj4wKXtjb25zdCByPWUrbjtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoci0xKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KHIpKXJldHVybiEwfXJldHVybiExfV9ib3VuZGFyeVNjb3JlKGUsbixyLGkpe2NvbnN0IHM9dGhpcy5fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KGUsbik/MTowLGE9dGhpcy5fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KHIsaSk/MTowO3JldHVybiBzK2F9Q29uY2F0ZW5hdGVDaGFuZ2VzKGUsbil7Y29uc3Qgcj1bXTtpZihlLmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MClyZXR1cm4gbi5sZW5ndGg+MD9uOmU7aWYodGhpcy5DaGFuZ2VzT3ZlcmxhcChlW2UubGVuZ3RoLTFdLG5bMF0scikpe2NvbnN0IGk9bmV3IEFycmF5KGUubGVuZ3RoK24ubGVuZ3RoLTEpO3JldHVybiBUdC5Db3B5KGUsMCxpLDAsZS5sZW5ndGgtMSksaVtlLmxlbmd0aC0xXT1yWzBdLFR0LkNvcHkobiwxLGksZS5sZW5ndGgsbi5sZW5ndGgtMSksaX1lbHNle2NvbnN0IGk9bmV3IEFycmF5KGUubGVuZ3RoK24ubGVuZ3RoKTtyZXR1cm4gVHQuQ29weShlLDAsaSwwLGUubGVuZ3RoKSxUdC5Db3B5KG4sMCxpLGUubGVuZ3RoLG4ubGVuZ3RoKSxpfX1DaGFuZ2VzT3ZlcmxhcChlLG4scil7aWYoSXQuQXNzZXJ0KGUub3JpZ2luYWxTdGFydDw9bi5vcmlnaW5hbFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLEl0LkFzc2VydChlLm1vZGlmaWVkU3RhcnQ8PW4ubW9kaWZpZWRTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aD49bi5vcmlnaW5hbFN0YXJ0fHxlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aD49bi5tb2RpZmllZFN0YXJ0KXtjb25zdCBpPWUub3JpZ2luYWxTdGFydDtsZXQgcz1lLm9yaWdpbmFsTGVuZ3RoO2NvbnN0IGE9ZS5tb2RpZmllZFN0YXJ0O2xldCBvPWUubW9kaWZpZWRMZW5ndGg7cmV0dXJuIGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoPj1uLm9yaWdpbmFsU3RhcnQmJihzPW4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoLWUub3JpZ2luYWxTdGFydCksZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGg+PW4ubW9kaWZpZWRTdGFydCYmKG89bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgtZS5tb2RpZmllZFN0YXJ0KSxyWzBdPW5ldyBkdChpLHMsYSxvKSwhMH1lbHNlIHJldHVybiByWzBdPW51bGwsITF9Q2xpcERpYWdvbmFsQm91bmQoZSxuLHIsaSl7aWYoZT49MCYmZTxpKXJldHVybiBlO2NvbnN0IHM9cixhPWktci0xLG89biUyPT09MDtpZihlPDApe2NvbnN0IGw9cyUyPT09MDtyZXR1cm4gbz09PWw/MDoxfWVsc2V7Y29uc3QgbD1hJTI9PT0wO3JldHVybiBvPT09bD9pLTE6aS0yfX19dmFyIHdzPXtFTlZfVFlQRToibG9jYWwiLE5PREVfRU5WOiJwcm9kdWN0aW9uIn07bGV0IFd0O2NvbnN0IElyPWdsb2JhbFRoaXMudnNjb2RlO2lmKHR5cGVvZiBJcjwidSImJnR5cGVvZiBJci5wcm9jZXNzPCJ1Iil7Y29uc3QgdD1Jci5wcm9jZXNzO1d0PXtnZXQgcGxhdGZvcm0oKXtyZXR1cm4gdC5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gdC5hcmNofSxnZXQgZW52KCl7cmV0dXJuIHQuZW52fSxjd2QoKXtyZXR1cm4gdC5jd2QoKX19fWVsc2UgdHlwZW9mIHByb2Nlc3M8InUiP1d0PXtnZXQgcGxhdGZvcm0oKXtyZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybX0sZ2V0IGFyY2goKXtyZXR1cm4gcHJvY2Vzcy5hcmNofSxnZXQgZW52KCl7cmV0dXJuIHdzfSxjd2QoKXtyZXR1cm4gd3MuVlNDT0RFX0NXRHx8cHJvY2Vzcy5jd2QoKX19Old0PXtnZXQgcGxhdGZvcm0oKXtyZXR1cm4gc24/IndpbjMyIjpBYz8iZGFyd2luIjoibGludXgifSxnZXQgYXJjaCgpe30sZ2V0IGVudigpe3JldHVybnt9fSxjd2QoKXtyZXR1cm4iLyJ9fTtjb25zdCBWbj1XdC5jd2QsWmM9V3QuZW52LGVoPVd0LnBsYXRmb3JtLHRoPTY1LG5oPTk3LHJoPTkwLGloPTEyMixwdD00Nix4ZT00NyxOZT05MixmdD01OCxzaD02MztjbGFzcyB4cyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsbixyKXtsZXQgaTt0eXBlb2Ygbj09InN0cmluZyImJm4uaW5kZXhPZigibm90ICIpPT09MD8oaT0ibXVzdCBub3QgYmUiLG49bi5yZXBsYWNlKC9ebm90IC8sIiIpKTppPSJtdXN0IGJlIjtjb25zdCBzPWUuaW5kZXhPZigiLiIpIT09LTE/InByb3BlcnR5IjoiYXJndW1lbnQiO2xldCBhPWBUaGUgIiR7ZX0iICR7c30gJHtpfSBvZiB0eXBlICR7bn1gO2ErPWAuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2Ygcn1gLHN1cGVyKGEpLHRoaXMuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUifX1mdW5jdGlvbiBhaCh0LGUpe2lmKHQ9PT1udWxsfHx0eXBlb2YgdCE9Im9iamVjdCIpdGhyb3cgbmV3IHhzKGUsIk9iamVjdCIsdCl9ZnVuY3Rpb24gZGUodCxlKXtpZih0eXBlb2YgdCE9InN0cmluZyIpdGhyb3cgbmV3IHhzKGUsInN0cmluZyIsdCl9Y29uc3QgbXQ9ZWg9PT0id2luMzIiO2Z1bmN0aW9uIFkodCl7cmV0dXJuIHQ9PT14ZXx8dD09PU5lfWZ1bmN0aW9uIFRyKHQpe3JldHVybiB0PT09eGV9ZnVuY3Rpb24gZ3QodCl7cmV0dXJuIHQ+PXRoJiZ0PD1yaHx8dD49bmgmJnQ8PWlofWZ1bmN0aW9uIEJuKHQsZSxuLHIpe2xldCBpPSIiLHM9MCxhPS0xLG89MCxsPTA7Zm9yKGxldCBjPTA7Yzw9dC5sZW5ndGg7KytjKXtpZihjPHQubGVuZ3RoKWw9dC5jaGFyQ29kZUF0KGMpO2Vsc2V7aWYocihsKSlicmVhaztsPXhlfWlmKHIobCkpe2lmKCEoYT09PWMtMXx8bz09PTEpKWlmKG89PT0yKXtpZihpLmxlbmd0aDwyfHxzIT09Mnx8aS5jaGFyQ29kZUF0KGkubGVuZ3RoLTEpIT09cHR8fGkuY2hhckNvZGVBdChpLmxlbmd0aC0yKSE9PXB0KXtpZihpLmxlbmd0aD4yKXtjb25zdCBoPWkubGFzdEluZGV4T2Yobik7aD09PS0xPyhpPSIiLHM9MCk6KGk9aS5zbGljZSgwLGgpLHM9aS5sZW5ndGgtMS1pLmxhc3RJbmRleE9mKG4pKSxhPWMsbz0wO2NvbnRpbnVlfWVsc2UgaWYoaS5sZW5ndGghPT0wKXtpPSIiLHM9MCxhPWMsbz0wO2NvbnRpbnVlfX1lJiYoaSs9aS5sZW5ndGg+MD9gJHtufS4uYDoiLi4iLHM9Mil9ZWxzZSBpLmxlbmd0aD4wP2krPWAke259JHt0LnNsaWNlKGErMSxjKX1gOmk9dC5zbGljZShhKzEsYykscz1jLWEtMTthPWMsbz0wfWVsc2UgbD09PXB0JiZvIT09LTE/KytvOm89LTF9cmV0dXJuIGl9ZnVuY3Rpb24gU3ModCxlKXthaChlLCJwYXRoT2JqZWN0Iik7Y29uc3Qgbj1lLmRpcnx8ZS5yb290LHI9ZS5iYXNlfHxgJHtlLm5hbWV8fCIifSR7ZS5leHR8fCIifWA7cmV0dXJuIG4/bj09PWUucm9vdD9gJHtufSR7cn1gOmAke259JHt0fSR7cn1gOnJ9Y29uc3QgUmU9e3Jlc29sdmUoLi4udCl7bGV0IGU9IiIsbj0iIixyPSExO2ZvcihsZXQgaT10Lmxlbmd0aC0xO2k+PS0xO2ktLSl7bGV0IHM7aWYoaT49MCl7aWYocz10W2ldLGRlKHMsInBhdGgiKSxzLmxlbmd0aD09PTApY29udGludWV9ZWxzZSBlLmxlbmd0aD09PTA/cz1WbigpOihzPVpjW2A9JHtlfWBdfHxWbigpLChzPT09dm9pZCAwfHxzLnNsaWNlKDAsMikudG9Mb3dlckNhc2UoKSE9PWUudG9Mb3dlckNhc2UoKSYmcy5jaGFyQ29kZUF0KDIpPT09TmUpJiYocz1gJHtlfVxcYCkpO2NvbnN0IGE9cy5sZW5ndGg7bGV0IG89MCxsPSIiLGM9ITE7Y29uc3QgaD1zLmNoYXJDb2RlQXQoMCk7aWYoYT09PTEpWShoKSYmKG89MSxjPSEwKTtlbHNlIGlmKFkoaCkpaWYoYz0hMCxZKHMuY2hhckNvZGVBdCgxKSkpe2xldCB1PTIsZj11O2Zvcig7dTxhJiYhWShzLmNoYXJDb2RlQXQodSkpOyl1Kys7aWYodTxhJiZ1IT09Zil7Y29uc3QgbT1zLnNsaWNlKGYsdSk7Zm9yKGY9dTt1PGEmJlkocy5jaGFyQ29kZUF0KHUpKTspdSsrO2lmKHU8YSYmdSE9PWYpe2ZvcihmPXU7dTxhJiYhWShzLmNoYXJDb2RlQXQodSkpOyl1Kys7KHU9PT1hfHx1IT09ZikmJihsPWBcXFxcJHttfVxcJHtzLnNsaWNlKGYsdSl9YCxvPXUpfX19ZWxzZSBvPTE7ZWxzZSBndChoKSYmcy5jaGFyQ29kZUF0KDEpPT09ZnQmJihsPXMuc2xpY2UoMCwyKSxvPTIsYT4yJiZZKHMuY2hhckNvZGVBdCgyKSkmJihjPSEwLG89MykpO2lmKGwubGVuZ3RoPjApaWYoZS5sZW5ndGg+MCl7aWYobC50b0xvd2VyQ2FzZSgpIT09ZS50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlfWVsc2UgZT1sO2lmKHIpe2lmKGUubGVuZ3RoPjApYnJlYWt9ZWxzZSBpZihuPWAke3Muc2xpY2Uobyl9XFwke259YCxyPWMsYyYmZS5sZW5ndGg+MClicmVha31yZXR1cm4gbj1CbihuLCFyLCJcXCIsWSkscj9gJHtlfVxcJHtufWA6YCR7ZX0ke259YHx8Ii4ifSxub3JtYWxpemUodCl7ZGUodCwicGF0aCIpO2NvbnN0IGU9dC5sZW5ndGg7aWYoZT09PTApcmV0dXJuIi4iO2xldCBuPTAscixpPSExO2NvbnN0IHM9dC5jaGFyQ29kZUF0KDApO2lmKGU9PT0xKXJldHVybiBUcihzKT8iXFwiOnQ7aWYoWShzKSlpZihpPSEwLFkodC5jaGFyQ29kZUF0KDEpKSl7bGV0IG89MixsPW87Zm9yKDtvPGUmJiFZKHQuY2hhckNvZGVBdChvKSk7KW8rKztpZihvPGUmJm8hPT1sKXtjb25zdCBjPXQuc2xpY2UobCxvKTtmb3IobD1vO288ZSYmWSh0LmNoYXJDb2RlQXQobykpOylvKys7aWYobzxlJiZvIT09bCl7Zm9yKGw9bztvPGUmJiFZKHQuY2hhckNvZGVBdChvKSk7KW8rKztpZihvPT09ZSlyZXR1cm5gXFxcXCR7Y31cXCR7dC5zbGljZShsKX1cXGA7byE9PWwmJihyPWBcXFxcJHtjfVxcJHt0LnNsaWNlKGwsbyl9YCxuPW8pfX19ZWxzZSBuPTE7ZWxzZSBndChzKSYmdC5jaGFyQ29kZUF0KDEpPT09ZnQmJihyPXQuc2xpY2UoMCwyKSxuPTIsZT4yJiZZKHQuY2hhckNvZGVBdCgyKSkmJihpPSEwLG49MykpO2xldCBhPW48ZT9Cbih0LnNsaWNlKG4pLCFpLCJcXCIsWSk6IiI7cmV0dXJuIGEubGVuZ3RoPT09MCYmIWkmJihhPSIuIiksYS5sZW5ndGg+MCYmWSh0LmNoYXJDb2RlQXQoZS0xKSkmJihhKz0iXFwiKSxyPT09dm9pZCAwP2k/YFxcJHthfWA6YTppP2Ake3J9XFwke2F9YDpgJHtyfSR7YX1gfSxpc0Fic29sdXRlKHQpe2RlKHQsInBhdGgiKTtjb25zdCBlPXQubGVuZ3RoO2lmKGU9PT0wKXJldHVybiExO2NvbnN0IG49dC5jaGFyQ29kZUF0KDApO3JldHVybiBZKG4pfHxlPjImJmd0KG4pJiZ0LmNoYXJDb2RlQXQoMSk9PT1mdCYmWSh0LmNoYXJDb2RlQXQoMikpfSxqb2luKC4uLnQpe2lmKHQubGVuZ3RoPT09MClyZXR1cm4iLiI7bGV0IGUsbjtmb3IobGV0IHM9MDtzPHQubGVuZ3RoOysrcyl7Y29uc3QgYT10W3NdO2RlKGEsInBhdGgiKSxhLmxlbmd0aD4wJiYoZT09PXZvaWQgMD9lPW49YTplKz1gXFwke2F9YCl9aWYoZT09PXZvaWQgMClyZXR1cm4iLiI7bGV0IHI9ITAsaT0wO2lmKHR5cGVvZiBuPT0ic3RyaW5nIiYmWShuLmNoYXJDb2RlQXQoMCkpKXsrK2k7Y29uc3Qgcz1uLmxlbmd0aDtzPjEmJlkobi5jaGFyQ29kZUF0KDEpKSYmKCsraSxzPjImJihZKG4uY2hhckNvZGVBdCgyKSk/KytpOnI9ITEpKX1pZihyKXtmb3IoO2k8ZS5sZW5ndGgmJlkoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2k+PTImJihlPWBcXCR7ZS5zbGljZShpKX1gKX1yZXR1cm4gUmUubm9ybWFsaXplKGUpfSxyZWxhdGl2ZSh0LGUpe2lmKGRlKHQsImZyb20iKSxkZShlLCJ0byIpLHQ9PT1lKXJldHVybiIiO2NvbnN0IG49UmUucmVzb2x2ZSh0KSxyPVJlLnJlc29sdmUoZSk7aWYobj09PXJ8fCh0PW4udG9Mb3dlckNhc2UoKSxlPXIudG9Mb3dlckNhc2UoKSx0PT09ZSkpcmV0dXJuIiI7bGV0IGk9MDtmb3IoO2k8dC5sZW5ndGgmJnQuY2hhckNvZGVBdChpKT09PU5lOylpKys7bGV0IHM9dC5sZW5ndGg7Zm9yKDtzLTE+aSYmdC5jaGFyQ29kZUF0KHMtMSk9PT1OZTspcy0tO2NvbnN0IGE9cy1pO2xldCBvPTA7Zm9yKDtvPGUubGVuZ3RoJiZlLmNoYXJDb2RlQXQobyk9PT1OZTspbysrO2xldCBsPWUubGVuZ3RoO2Zvcig7bC0xPm8mJmUuY2hhckNvZGVBdChsLTEpPT09TmU7KWwtLTtjb25zdCBjPWwtbyxoPWE8Yz9hOmM7bGV0IHU9LTEsZj0wO2Zvcig7ZjxoO2YrKyl7Y29uc3QgZz10LmNoYXJDb2RlQXQoaStmKTtpZihnIT09ZS5jaGFyQ29kZUF0KG8rZikpYnJlYWs7Zz09PU5lJiYodT1mKX1pZihmIT09aCl7aWYodT09PS0xKXJldHVybiByfWVsc2V7aWYoYz5oKXtpZihlLmNoYXJDb2RlQXQobytmKT09PU5lKXJldHVybiByLnNsaWNlKG8rZisxKTtpZihmPT09MilyZXR1cm4gci5zbGljZShvK2YpfWE+aCYmKHQuY2hhckNvZGVBdChpK2YpPT09TmU/dT1mOmY9PT0yJiYodT0zKSksdT09PS0xJiYodT0wKX1sZXQgbT0iIjtmb3IoZj1pK3UrMTtmPD1zOysrZikoZj09PXN8fHQuY2hhckNvZGVBdChmKT09PU5lKSYmKG0rPW0ubGVuZ3RoPT09MD8iLi4iOiJcXC4uIik7cmV0dXJuIG8rPXUsbS5sZW5ndGg+MD9gJHttfSR7ci5zbGljZShvLGwpfWA6KHIuY2hhckNvZGVBdChvKT09PU5lJiYrK28sci5zbGljZShvLGwpKX0sdG9OYW1lc3BhY2VkUGF0aCh0KXtpZih0eXBlb2YgdCE9InN0cmluZyJ8fHQubGVuZ3RoPT09MClyZXR1cm4gdDtjb25zdCBlPVJlLnJlc29sdmUodCk7aWYoZS5sZW5ndGg8PTIpcmV0dXJuIHQ7aWYoZS5jaGFyQ29kZUF0KDApPT09TmUpe2lmKGUuY2hhckNvZGVBdCgxKT09PU5lKXtjb25zdCBuPWUuY2hhckNvZGVBdCgyKTtpZihuIT09c2gmJm4hPT1wdClyZXR1cm5gXFxcXD9cXFVOQ1xcJHtlLnNsaWNlKDIpfWB9fWVsc2UgaWYoZ3QoZS5jaGFyQ29kZUF0KDApKSYmZS5jaGFyQ29kZUF0KDEpPT09ZnQmJmUuY2hhckNvZGVBdCgyKT09PU5lKXJldHVybmBcXFxcP1xcJHtlfWA7cmV0dXJuIHR9LGRpcm5hbWUodCl7ZGUodCwicGF0aCIpO2NvbnN0IGU9dC5sZW5ndGg7aWYoZT09PTApcmV0dXJuIi4iO2xldCBuPS0xLHI9MDtjb25zdCBpPXQuY2hhckNvZGVBdCgwKTtpZihlPT09MSlyZXR1cm4gWShpKT90OiIuIjtpZihZKGkpKXtpZihuPXI9MSxZKHQuY2hhckNvZGVBdCgxKSkpe2xldCBvPTIsbD1vO2Zvcig7bzxlJiYhWSh0LmNoYXJDb2RlQXQobykpOylvKys7aWYobzxlJiZvIT09bCl7Zm9yKGw9bztvPGUmJlkodC5jaGFyQ29kZUF0KG8pKTspbysrO2lmKG88ZSYmbyE9PWwpe2ZvcihsPW87bzxlJiYhWSh0LmNoYXJDb2RlQXQobykpOylvKys7aWYobz09PWUpcmV0dXJuIHQ7byE9PWwmJihuPXI9bysxKX19fX1lbHNlIGd0KGkpJiZ0LmNoYXJDb2RlQXQoMSk9PT1mdCYmKG49ZT4yJiZZKHQuY2hhckNvZGVBdCgyKSk/MzoyLHI9bik7bGV0IHM9LTEsYT0hMDtmb3IobGV0IG89ZS0xO28+PXI7LS1vKWlmKFkodC5jaGFyQ29kZUF0KG8pKSl7aWYoIWEpe3M9bzticmVha319ZWxzZSBhPSExO2lmKHM9PT0tMSl7aWYobj09PS0xKXJldHVybiIuIjtzPW59cmV0dXJuIHQuc2xpY2UoMCxzKX0sYmFzZW5hbWUodCxlKXtlIT09dm9pZCAwJiZkZShlLCJleHQiKSxkZSh0LCJwYXRoIik7bGV0IG49MCxyPS0xLGk9ITAscztpZih0Lmxlbmd0aD49MiYmZ3QodC5jaGFyQ29kZUF0KDApKSYmdC5jaGFyQ29kZUF0KDEpPT09ZnQmJihuPTIpLGUhPT12b2lkIDAmJmUubGVuZ3RoPjAmJmUubGVuZ3RoPD10Lmxlbmd0aCl7aWYoZT09PXQpcmV0dXJuIiI7bGV0IGE9ZS5sZW5ndGgtMSxvPS0xO2ZvcihzPXQubGVuZ3RoLTE7cz49bjstLXMpe2NvbnN0IGw9dC5jaGFyQ29kZUF0KHMpO2lmKFkobCkpe2lmKCFpKXtuPXMrMTticmVha319ZWxzZSBvPT09LTEmJihpPSExLG89cysxKSxhPj0wJiYobD09PWUuY2hhckNvZGVBdChhKT8tLWE9PT0tMSYmKHI9cyk6KGE9LTEscj1vKSl9cmV0dXJuIG49PT1yP3I9bzpyPT09LTEmJihyPXQubGVuZ3RoKSx0LnNsaWNlKG4scil9Zm9yKHM9dC5sZW5ndGgtMTtzPj1uOy0tcylpZihZKHQuY2hhckNvZGVBdChzKSkpe2lmKCFpKXtuPXMrMTticmVha319ZWxzZSByPT09LTEmJihpPSExLHI9cysxKTtyZXR1cm4gcj09PS0xPyIiOnQuc2xpY2UobixyKX0sZXh0bmFtZSh0KXtkZSh0LCJwYXRoIik7bGV0IGU9MCxuPS0xLHI9MCxpPS0xLHM9ITAsYT0wO3QubGVuZ3RoPj0yJiZ0LmNoYXJDb2RlQXQoMSk9PT1mdCYmZ3QodC5jaGFyQ29kZUF0KDApKSYmKGU9cj0yKTtmb3IobGV0IG89dC5sZW5ndGgtMTtvPj1lOy0tbyl7Y29uc3QgbD10LmNoYXJDb2RlQXQobyk7aWYoWShsKSl7aWYoIXMpe3I9bysxO2JyZWFrfWNvbnRpbnVlfWk9PT0tMSYmKHM9ITEsaT1vKzEpLGw9PT1wdD9uPT09LTE/bj1vOmEhPT0xJiYoYT0xKTpuIT09LTEmJihhPS0xKX1yZXR1cm4gbj09PS0xfHxpPT09LTF8fGE9PT0wfHxhPT09MSYmbj09PWktMSYmbj09PXIrMT8iIjp0LnNsaWNlKG4saSl9LGZvcm1hdDpTcy5iaW5kKG51bGwsIlxcIikscGFyc2UodCl7ZGUodCwicGF0aCIpO2NvbnN0IGU9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKHQubGVuZ3RoPT09MClyZXR1cm4gZTtjb25zdCBuPXQubGVuZ3RoO2xldCByPTAsaT10LmNoYXJDb2RlQXQoMCk7aWYobj09PTEpcmV0dXJuIFkoaSk/KGUucm9vdD1lLmRpcj10LGUpOihlLmJhc2U9ZS5uYW1lPXQsZSk7aWYoWShpKSl7aWYocj0xLFkodC5jaGFyQ29kZUF0KDEpKSl7bGV0IHU9MixmPXU7Zm9yKDt1PG4mJiFZKHQuY2hhckNvZGVBdCh1KSk7KXUrKztpZih1PG4mJnUhPT1mKXtmb3IoZj11O3U8biYmWSh0LmNoYXJDb2RlQXQodSkpOyl1Kys7aWYodTxuJiZ1IT09Zil7Zm9yKGY9dTt1PG4mJiFZKHQuY2hhckNvZGVBdCh1KSk7KXUrKzt1PT09bj9yPXU6dSE9PWYmJihyPXUrMSl9fX19ZWxzZSBpZihndChpKSYmdC5jaGFyQ29kZUF0KDEpPT09ZnQpe2lmKG48PTIpcmV0dXJuIGUucm9vdD1lLmRpcj10LGU7aWYocj0yLFkodC5jaGFyQ29kZUF0KDIpKSl7aWYobj09PTMpcmV0dXJuIGUucm9vdD1lLmRpcj10LGU7cj0zfX1yPjAmJihlLnJvb3Q9dC5zbGljZSgwLHIpKTtsZXQgcz0tMSxhPXIsbz0tMSxsPSEwLGM9dC5sZW5ndGgtMSxoPTA7Zm9yKDtjPj1yOy0tYyl7aWYoaT10LmNoYXJDb2RlQXQoYyksWShpKSl7aWYoIWwpe2E9YysxO2JyZWFrfWNvbnRpbnVlfW89PT0tMSYmKGw9ITEsbz1jKzEpLGk9PT1wdD9zPT09LTE/cz1jOmghPT0xJiYoaD0xKTpzIT09LTEmJihoPS0xKX1yZXR1cm4gbyE9PS0xJiYocz09PS0xfHxoPT09MHx8aD09PTEmJnM9PT1vLTEmJnM9PT1hKzE/ZS5iYXNlPWUubmFtZT10LnNsaWNlKGEsbyk6KGUubmFtZT10LnNsaWNlKGEscyksZS5iYXNlPXQuc2xpY2UoYSxvKSxlLmV4dD10LnNsaWNlKHMsbykpKSxhPjAmJmEhPT1yP2UuZGlyPXQuc2xpY2UoMCxhLTEpOmUuZGlyPWUucm9vdCxlfSxzZXA6IlxcIixkZWxpbWl0ZXI6IjsiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0sb2g9KCgpPT57aWYobXQpe2NvbnN0IHQ9L1xcL2c7cmV0dXJuKCk9Pntjb25zdCBlPVZuKCkucmVwbGFjZSh0LCIvIik7cmV0dXJuIGUuc2xpY2UoZS5pbmRleE9mKCIvIikpfX1yZXR1cm4oKT0+Vm4oKX0pKCksTWU9e3Jlc29sdmUoLi4udCl7bGV0IGU9IiIsbj0hMTtmb3IobGV0IHI9dC5sZW5ndGgtMTtyPj0tMSYmIW47ci0tKXtjb25zdCBpPXI+PTA/dFtyXTpvaCgpO2RlKGksInBhdGgiKSxpLmxlbmd0aCE9PTAmJihlPWAke2l9LyR7ZX1gLG49aS5jaGFyQ29kZUF0KDApPT09eGUpfXJldHVybiBlPUJuKGUsIW4sIi8iLFRyKSxuP2AvJHtlfWA6ZS5sZW5ndGg+MD9lOiIuIn0sbm9ybWFsaXplKHQpe2lmKGRlKHQsInBhdGgiKSx0Lmxlbmd0aD09PTApcmV0dXJuIi4iO2NvbnN0IGU9dC5jaGFyQ29kZUF0KDApPT09eGUsbj10LmNoYXJDb2RlQXQodC5sZW5ndGgtMSk9PT14ZTtyZXR1cm4gdD1Cbih0LCFlLCIvIixUciksdC5sZW5ndGg9PT0wP2U/Ii8iOm4/Ii4vIjoiLiI6KG4mJih0Kz0iLyIpLGU/YC8ke3R9YDp0KX0saXNBYnNvbHV0ZSh0KXtyZXR1cm4gZGUodCwicGF0aCIpLHQubGVuZ3RoPjAmJnQuY2hhckNvZGVBdCgwKT09PXhlfSxqb2luKC4uLnQpe2lmKHQubGVuZ3RoPT09MClyZXR1cm4iLiI7bGV0IGU7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDsrK24pe2NvbnN0IHI9dFtuXTtkZShyLCJwYXRoIiksci5sZW5ndGg+MCYmKGU9PT12b2lkIDA/ZT1yOmUrPWAvJHtyfWApfXJldHVybiBlPT09dm9pZCAwPyIuIjpNZS5ub3JtYWxpemUoZSl9LHJlbGF0aXZlKHQsZSl7aWYoZGUodCwiZnJvbSIpLGRlKGUsInRvIiksdD09PWV8fCh0PU1lLnJlc29sdmUodCksZT1NZS5yZXNvbHZlKGUpLHQ9PT1lKSlyZXR1cm4iIjtjb25zdCBuPTEscj10Lmxlbmd0aCxpPXItbixzPTEsYT1lLmxlbmd0aC1zLG89aTxhP2k6YTtsZXQgbD0tMSxjPTA7Zm9yKDtjPG87YysrKXtjb25zdCB1PXQuY2hhckNvZGVBdChuK2MpO2lmKHUhPT1lLmNoYXJDb2RlQXQocytjKSlicmVhazt1PT09eGUmJihsPWMpfWlmKGM9PT1vKWlmKGE+byl7aWYoZS5jaGFyQ29kZUF0KHMrYyk9PT14ZSlyZXR1cm4gZS5zbGljZShzK2MrMSk7aWYoYz09PTApcmV0dXJuIGUuc2xpY2UocytjKX1lbHNlIGk+byYmKHQuY2hhckNvZGVBdChuK2MpPT09eGU/bD1jOmM9PT0wJiYobD0wKSk7bGV0IGg9IiI7Zm9yKGM9bitsKzE7Yzw9cjsrK2MpKGM9PT1yfHx0LmNoYXJDb2RlQXQoYyk9PT14ZSkmJihoKz1oLmxlbmd0aD09PTA/Ii4uIjoiLy4uIik7cmV0dXJuYCR7aH0ke2Uuc2xpY2UocytsKX1gfSx0b05hbWVzcGFjZWRQYXRoKHQpe3JldHVybiB0fSxkaXJuYW1lKHQpe2lmKGRlKHQsInBhdGgiKSx0Lmxlbmd0aD09PTApcmV0dXJuIi4iO2NvbnN0IGU9dC5jaGFyQ29kZUF0KDApPT09eGU7bGV0IG49LTEscj0hMDtmb3IobGV0IGk9dC5sZW5ndGgtMTtpPj0xOy0taSlpZih0LmNoYXJDb2RlQXQoaSk9PT14ZSl7aWYoIXIpe249aTticmVha319ZWxzZSByPSExO3JldHVybiBuPT09LTE/ZT8iLyI6Ii4iOmUmJm49PT0xPyIvLyI6dC5zbGljZSgwLG4pfSxiYXNlbmFtZSh0LGUpe2UhPT12b2lkIDAmJmRlKGUsImV4dCIpLGRlKHQsInBhdGgiKTtsZXQgbj0wLHI9LTEsaT0hMCxzO2lmKGUhPT12b2lkIDAmJmUubGVuZ3RoPjAmJmUubGVuZ3RoPD10Lmxlbmd0aCl7aWYoZT09PXQpcmV0dXJuIiI7bGV0IGE9ZS5sZW5ndGgtMSxvPS0xO2ZvcihzPXQubGVuZ3RoLTE7cz49MDstLXMpe2NvbnN0IGw9dC5jaGFyQ29kZUF0KHMpO2lmKGw9PT14ZSl7aWYoIWkpe249cysxO2JyZWFrfX1lbHNlIG89PT0tMSYmKGk9ITEsbz1zKzEpLGE+PTAmJihsPT09ZS5jaGFyQ29kZUF0KGEpPy0tYT09PS0xJiYocj1zKTooYT0tMSxyPW8pKX1yZXR1cm4gbj09PXI/cj1vOnI9PT0tMSYmKHI9dC5sZW5ndGgpLHQuc2xpY2UobixyKX1mb3Iocz10Lmxlbmd0aC0xO3M+PTA7LS1zKWlmKHQuY2hhckNvZGVBdChzKT09PXhlKXtpZighaSl7bj1zKzE7YnJlYWt9fWVsc2Ugcj09PS0xJiYoaT0hMSxyPXMrMSk7cmV0dXJuIHI9PT0tMT8iIjp0LnNsaWNlKG4scil9LGV4dG5hbWUodCl7ZGUodCwicGF0aCIpO2xldCBlPS0xLG49MCxyPS0xLGk9ITAscz0wO2ZvcihsZXQgYT10Lmxlbmd0aC0xO2E+PTA7LS1hKXtjb25zdCBvPXQuY2hhckNvZGVBdChhKTtpZihvPT09eGUpe2lmKCFpKXtuPWErMTticmVha31jb250aW51ZX1yPT09LTEmJihpPSExLHI9YSsxKSxvPT09cHQ/ZT09PS0xP2U9YTpzIT09MSYmKHM9MSk6ZSE9PS0xJiYocz0tMSl9cmV0dXJuIGU9PT0tMXx8cj09PS0xfHxzPT09MHx8cz09PTEmJmU9PT1yLTEmJmU9PT1uKzE/IiI6dC5zbGljZShlLHIpfSxmb3JtYXQ6U3MuYmluZChudWxsLCIvIikscGFyc2UodCl7ZGUodCwicGF0aCIpO2NvbnN0IGU9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKHQubGVuZ3RoPT09MClyZXR1cm4gZTtjb25zdCBuPXQuY2hhckNvZGVBdCgwKT09PXhlO2xldCByO24/KGUucm9vdD0iLyIscj0xKTpyPTA7bGV0IGk9LTEscz0wLGE9LTEsbz0hMCxsPXQubGVuZ3RoLTEsYz0wO2Zvcig7bD49cjstLWwpe2NvbnN0IGg9dC5jaGFyQ29kZUF0KGwpO2lmKGg9PT14ZSl7aWYoIW8pe3M9bCsxO2JyZWFrfWNvbnRpbnVlfWE9PT0tMSYmKG89ITEsYT1sKzEpLGg9PT1wdD9pPT09LTE/aT1sOmMhPT0xJiYoYz0xKTppIT09LTEmJihjPS0xKX1pZihhIT09LTEpe2NvbnN0IGg9cz09PTAmJm4/MTpzO2k9PT0tMXx8Yz09PTB8fGM9PT0xJiZpPT09YS0xJiZpPT09cysxP2UuYmFzZT1lLm5hbWU9dC5zbGljZShoLGEpOihlLm5hbWU9dC5zbGljZShoLGkpLGUuYmFzZT10LnNsaWNlKGgsYSksZS5leHQ9dC5zbGljZShpLGEpKX1yZXR1cm4gcz4wP2UuZGlyPXQuc2xpY2UoMCxzLTEpOm4mJihlLmRpcj0iLyIpLGV9LHNlcDoiLyIsZGVsaW1pdGVyOiI6Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9O01lLndpbjMyPVJlLndpbjMyPVJlLE1lLnBvc2l4PVJlLnBvc2l4PU1lLG10P1JlLm5vcm1hbGl6ZTpNZS5ub3JtYWxpemUsbXQ/UmUucmVzb2x2ZTpNZS5yZXNvbHZlLG10P1JlLnJlbGF0aXZlOk1lLnJlbGF0aXZlLG10P1JlLmRpcm5hbWU6TWUuZGlybmFtZSxtdD9SZS5iYXNlbmFtZTpNZS5iYXNlbmFtZSxtdD9SZS5leHRuYW1lOk1lLmV4dG5hbWUsbXQ/UmUuc2VwOk1lLnNlcDtjb25zdCBsaD0vXlx3W1x3XGQrLi1dKiQvLGNoPS9eXC8vLGhoPS9eXC9cLy87ZnVuY3Rpb24gZGgodCxlKXtpZighdC5zY2hlbWUmJmUpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7dC5hdXRob3JpdHl9IiwgcGF0aDogIiR7dC5wYXRofSIsIHF1ZXJ5OiAiJHt0LnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHt0LmZyYWdtZW50fSJ9YCk7aWYodC5zY2hlbWUmJiFsaC50ZXN0KHQuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYodC5wYXRoKXtpZih0LmF1dGhvcml0eSl7aWYoIWNoLnRlc3QodC5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGNvbnRhaW5zIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY29tcG9uZW50IG11c3QgZWl0aGVyIGJlIGVtcHR5IG9yIGJlZ2luIHdpdGggYSBzbGFzaCAoIi8iKSBjaGFyYWN0ZXInKX1lbHNlIGlmKGhoLnRlc3QodC5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGRvZXMgbm90IGNvbnRhaW4gYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjYW5ub3QgYmVnaW4gd2l0aCB0d28gc2xhc2ggY2hhcmFjdGVycyAoIi8vIiknKX19ZnVuY3Rpb24gdWgodCxlKXtyZXR1cm4hdCYmIWU/ImZpbGUiOnR9ZnVuY3Rpb24gcGgodCxlKXtzd2l0Y2godCl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOmU/ZVswXSE9PSRlJiYoZT0kZStlKTplPSRlO2JyZWFrfXJldHVybiBlfWNvbnN0IG9lPSIiLCRlPSIvIixmaD0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztsZXQgV3I9Y2xhc3MgQ3J7c3RhdGljIGlzVXJpKGUpe3JldHVybiBlIGluc3RhbmNlb2YgQ3I/ITA6ZT90eXBlb2YgZS5hdXRob3JpdHk9PSJzdHJpbmciJiZ0eXBlb2YgZS5mcmFnbWVudD09InN0cmluZyImJnR5cGVvZiBlLnBhdGg9PSJzdHJpbmciJiZ0eXBlb2YgZS5xdWVyeT09InN0cmluZyImJnR5cGVvZiBlLnNjaGVtZT09InN0cmluZyImJnR5cGVvZiBlLmZzUGF0aD09InN0cmluZyImJnR5cGVvZiBlLndpdGg9PSJmdW5jdGlvbiImJnR5cGVvZiBlLnRvU3RyaW5nPT0iZnVuY3Rpb24iOiExfWNvbnN0cnVjdG9yKGUsbixyLGkscyxhPSExKXt0eXBlb2YgZT09Im9iamVjdCI/KHRoaXMuc2NoZW1lPWUuc2NoZW1lfHxvZSx0aGlzLmF1dGhvcml0eT1lLmF1dGhvcml0eXx8b2UsdGhpcy5wYXRoPWUucGF0aHx8b2UsdGhpcy5xdWVyeT1lLnF1ZXJ5fHxvZSx0aGlzLmZyYWdtZW50PWUuZnJhZ21lbnR8fG9lKToodGhpcy5zY2hlbWU9dWgoZSxhKSx0aGlzLmF1dGhvcml0eT1ufHxvZSx0aGlzLnBhdGg9cGgodGhpcy5zY2hlbWUscnx8b2UpLHRoaXMucXVlcnk9aXx8b2UsdGhpcy5mcmFnbWVudD1zfHxvZSxkaCh0aGlzLGEpKX1nZXQgZnNQYXRoKCl7cmV0dXJuIE9yKHRoaXMsITEpfXdpdGgoZSl7aWYoIWUpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTpuLGF1dGhvcml0eTpyLHBhdGg6aSxxdWVyeTpzLGZyYWdtZW50OmF9PWU7cmV0dXJuIG49PT12b2lkIDA/bj10aGlzLnNjaGVtZTpuPT09bnVsbCYmKG49b2UpLHI9PT12b2lkIDA/cj10aGlzLmF1dGhvcml0eTpyPT09bnVsbCYmKHI9b2UpLGk9PT12b2lkIDA/aT10aGlzLnBhdGg6aT09PW51bGwmJihpPW9lKSxzPT09dm9pZCAwP3M9dGhpcy5xdWVyeTpzPT09bnVsbCYmKHM9b2UpLGE9PT12b2lkIDA/YT10aGlzLmZyYWdtZW50OmE9PT1udWxsJiYoYT1vZSksbj09PXRoaXMuc2NoZW1lJiZyPT09dGhpcy5hdXRob3JpdHkmJmk9PT10aGlzLnBhdGgmJnM9PT10aGlzLnF1ZXJ5JiZhPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBPdChuLHIsaSxzLGEpfXN0YXRpYyBwYXJzZShlLG49ITEpe2NvbnN0IHI9ZmguZXhlYyhlKTtyZXR1cm4gcj9uZXcgT3QoclsyXXx8b2UscW4ocls0XXx8b2UpLHFuKHJbNV18fG9lKSxxbihyWzddfHxvZSkscW4ocls5XXx8b2UpLG4pOm5ldyBPdChvZSxvZSxvZSxvZSxvZSl9c3RhdGljIGZpbGUoZSl7bGV0IG49b2U7aWYoc24mJihlPWUucmVwbGFjZSgvXFwvZywkZSkpLGVbMF09PT0kZSYmZVsxXT09PSRlKXtjb25zdCByPWUuaW5kZXhPZigkZSwyKTtyPT09LTE/KG49ZS5zdWJzdHJpbmcoMiksZT0kZSk6KG49ZS5zdWJzdHJpbmcoMixyKSxlPWUuc3Vic3RyaW5nKHIpfHwkZSl9cmV0dXJuIG5ldyBPdCgiZmlsZSIsbixlLG9lLG9lKX1zdGF0aWMgZnJvbShlLG4pe3JldHVybiBuZXcgT3QoZS5zY2hlbWUsZS5hdXRob3JpdHksZS5wYXRoLGUucXVlcnksZS5mcmFnbWVudCxuKX1zdGF0aWMgam9pblBhdGgoZSwuLi5uKXtpZighZS5wYXRoKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogY2Fubm90IGNhbGwgam9pblBhdGggb24gVVJJIHdpdGhvdXQgcGF0aCIpO2xldCByO3JldHVybiBzbiYmZS5zY2hlbWU9PT0iZmlsZSI/cj1Dci5maWxlKFJlLmpvaW4oT3IoZSwhMCksLi4ubikpLnBhdGg6cj1NZS5qb2luKGUucGF0aCwuLi5uKSxlLndpdGgoe3BhdGg6cn0pfXRvU3RyaW5nKGU9ITEpe3JldHVybiBVcih0aGlzLGUpfXRvSlNPTigpe3JldHVybiB0aGlzfXN0YXRpYyByZXZpdmUoZSl7dmFyIG4scjtpZihlKXtpZihlIGluc3RhbmNlb2YgQ3IpcmV0dXJuIGU7e2NvbnN0IGk9bmV3IE90KGUpO3JldHVybiBpLl9mb3JtYXR0ZWQ9KG49ZS5leHRlcm5hbCkhPT1udWxsJiZuIT09dm9pZCAwP246bnVsbCxpLl9mc1BhdGg9ZS5fc2VwPT09Q3MmJihyPWUuZnNQYXRoKSE9PW51bGwmJnIhPT12b2lkIDA/cjpudWxsLGl9fWVsc2UgcmV0dXJuIGV9fTtjb25zdCBDcz1zbj8xOnZvaWQgMDtjbGFzcyBPdCBleHRlbmRzIFdye2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb3JtYXR0ZWQ9bnVsbCx0aGlzLl9mc1BhdGg9bnVsbH1nZXQgZnNQYXRoKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1Pcih0aGlzLCExKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKGU9ITEpe3JldHVybiBlP1VyKHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9VXIodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9dG9KU09OKCl7Y29uc3QgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1DcyksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9fWNvbnN0IGtzPXs1ODoiJTNBIiw0NzoiJTJGIiw2MzoiJTNGIiwzNToiJTIzIiw5MToiJTVCIiw5MzoiJTVEIiw2NDoiJTQwIiwzMzoiJTIxIiwzNjoiJTI0IiwzODoiJTI2IiwzOToiJTI3Iiw0MDoiJTI4Iiw0MToiJTI5Iiw0MjoiJTJBIiw0MzoiJTJCIiw0NDoiJTJDIiw1OToiJTNCIiw2MToiJTNEIiwzMjoiJTIwIn07ZnVuY3Rpb24gX3ModCxlLG4pe2xldCByLGk9LTE7Zm9yKGxldCBzPTA7czx0Lmxlbmd0aDtzKyspe2NvbnN0IGE9dC5jaGFyQ29kZUF0KHMpO2lmKGE+PTk3JiZhPD0xMjJ8fGE+PTY1JiZhPD05MHx8YT49NDgmJmE8PTU3fHxhPT09NDV8fGE9PT00Nnx8YT09PTk1fHxhPT09MTI2fHxlJiZhPT09NDd8fG4mJmE9PT05MXx8biYmYT09PTkzfHxuJiZhPT09NTgpaSE9PS0xJiYocis9ZW5jb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKGkscykpLGk9LTEpLHIhPT12b2lkIDAmJihyKz10LmNoYXJBdChzKSk7ZWxzZXtyPT09dm9pZCAwJiYocj10LnN1YnN0cigwLHMpKTtjb25zdCBvPWtzW2FdO28hPT12b2lkIDA/KGkhPT0tMSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhpLHMpKSxpPS0xKSxyKz1vKTppPT09LTEmJihpPXMpfX1yZXR1cm4gaSE9PS0xJiYocis9ZW5jb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKGkpKSksciE9PXZvaWQgMD9yOnR9ZnVuY3Rpb24gbWgodCl7bGV0IGU7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IHI9dC5jaGFyQ29kZUF0KG4pO3I9PT0zNXx8cj09PTYzPyhlPT09dm9pZCAwJiYoZT10LnN1YnN0cigwLG4pKSxlKz1rc1tyXSk6ZSE9PXZvaWQgMCYmKGUrPXRbbl0pfXJldHVybiBlIT09dm9pZCAwP2U6dH1mdW5jdGlvbiBPcih0LGUpe2xldCBuO3JldHVybiB0LmF1dGhvcml0eSYmdC5wYXRoLmxlbmd0aD4xJiZ0LnNjaGVtZT09PSJmaWxlIj9uPWAvLyR7dC5hdXRob3JpdHl9JHt0LnBhdGh9YDp0LnBhdGguY2hhckNvZGVBdCgwKT09PTQ3JiYodC5wYXRoLmNoYXJDb2RlQXQoMSk+PTY1JiZ0LnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fHQucGF0aC5jaGFyQ29kZUF0KDEpPj05NyYmdC5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJnQucGF0aC5jaGFyQ29kZUF0KDIpPT09NTg/ZT9uPXQucGF0aC5zdWJzdHIoMSk6bj10LnBhdGhbMV0udG9Mb3dlckNhc2UoKSt0LnBhdGguc3Vic3RyKDIpOm49dC5wYXRoLHNuJiYobj1uLnJlcGxhY2UoL1wvL2csIlxcIikpLG59ZnVuY3Rpb24gVXIodCxlKXtjb25zdCBuPWU/bWg6X3M7bGV0IHI9IiIse3NjaGVtZTppLGF1dGhvcml0eTpzLHBhdGg6YSxxdWVyeTpvLGZyYWdtZW50Omx9PXQ7aWYoaSYmKHIrPWkscis9IjoiKSwoc3x8aT09PSJmaWxlIikmJihyKz0kZSxyKz0kZSkscyl7bGV0IGM9cy5pbmRleE9mKCJAIik7aWYoYyE9PS0xKXtjb25zdCBoPXMuc3Vic3RyKDAsYyk7cz1zLnN1YnN0cihjKzEpLGM9aC5sYXN0SW5kZXhPZigiOiIpLGM9PT0tMT9yKz1uKGgsITEsITEpOihyKz1uKGguc3Vic3RyKDAsYyksITEsITEpLHIrPSI6IixyKz1uKGguc3Vic3RyKGMrMSksITEsITApKSxyKz0iQCJ9cz1zLnRvTG93ZXJDYXNlKCksYz1zLmxhc3RJbmRleE9mKCI6IiksYz09PS0xP3IrPW4ocywhMSwhMCk6KHIrPW4ocy5zdWJzdHIoMCxjKSwhMSwhMCkscis9cy5zdWJzdHIoYykpfWlmKGEpe2lmKGEubGVuZ3RoPj0zJiZhLmNoYXJDb2RlQXQoMCk9PT00NyYmYS5jaGFyQ29kZUF0KDIpPT09NTgpe2NvbnN0IGM9YS5jaGFyQ29kZUF0KDEpO2M+PTY1JiZjPD05MCYmKGE9YC8ke1N0cmluZy5mcm9tQ2hhckNvZGUoYyszMil9OiR7YS5zdWJzdHIoMyl9YCl9ZWxzZSBpZihhLmxlbmd0aD49MiYmYS5jaGFyQ29kZUF0KDEpPT09NTgpe2NvbnN0IGM9YS5jaGFyQ29kZUF0KDApO2M+PTY1JiZjPD05MCYmKGE9YCR7U3RyaW5nLmZyb21DaGFyQ29kZShjKzMyKX06JHthLnN1YnN0cigyKX1gKX1yKz1uKGEsITAsITEpfXJldHVybiBvJiYocis9Ij8iLHIrPW4obywhMSwhMSkpLGwmJihyKz0iIyIscis9ZT9sOl9zKGwsITEsITEpKSxyfWZ1bmN0aW9uIEVzKHQpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQpfWNhdGNoe3JldHVybiB0Lmxlbmd0aD4zP3Quc3Vic3RyKDAsMykrRXModC5zdWJzdHIoMykpOnR9fWNvbnN0IFJzPS8oJVswLTlBLVphLXpdWzAtOUEtWmEtel0pKy9nO2Z1bmN0aW9uIHFuKHQpe3JldHVybiB0Lm1hdGNoKFJzKT90LnJlcGxhY2UoUnMsZT0+RXMoZSkpOnR9bGV0IFllPWNsYXNzIEF0e2NvbnN0cnVjdG9yKGUsbil7dGhpcy5saW5lTnVtYmVyPWUsdGhpcy5jb2x1bW49bn13aXRoKGU9dGhpcy5saW5lTnVtYmVyLG49dGhpcy5jb2x1bW4pe3JldHVybiBlPT09dGhpcy5saW5lTnVtYmVyJiZuPT09dGhpcy5jb2x1bW4/dGhpczpuZXcgQXQoZSxuKX1kZWx0YShlPTAsbj0wKXtyZXR1cm4gdGhpcy53aXRoKHRoaXMubGluZU51bWJlcitlLHRoaXMuY29sdW1uK24pfWVxdWFscyhlKXtyZXR1cm4gQXQuZXF1YWxzKHRoaXMsZSl9c3RhdGljIGVxdWFscyhlLG4pe3JldHVybiFlJiYhbj8hMDohIWUmJiEhbiYmZS5saW5lTnVtYmVyPT09bi5saW5lTnVtYmVyJiZlLmNvbHVtbj09PW4uY29sdW1ufWlzQmVmb3JlKGUpe3JldHVybiBBdC5pc0JlZm9yZSh0aGlzLGUpfXN0YXRpYyBpc0JlZm9yZShlLG4pe3JldHVybiBlLmxpbmVOdW1iZXI8bi5saW5lTnVtYmVyPyEwOm4ubGluZU51bWJlcjxlLmxpbmVOdW1iZXI/ITE6ZS5jb2x1bW48bi5jb2x1bW59aXNCZWZvcmVPckVxdWFsKGUpe3JldHVybiBBdC5pc0JlZm9yZU9yRXF1YWwodGhpcyxlKX1zdGF0aWMgaXNCZWZvcmVPckVxdWFsKGUsbil7cmV0dXJuIGUubGluZU51bWJlcjxuLmxpbmVOdW1iZXI/ITA6bi5saW5lTnVtYmVyPGUubGluZU51bWJlcj8hMTplLmNvbHVtbjw9bi5jb2x1bW59c3RhdGljIGNvbXBhcmUoZSxuKXtjb25zdCByPWUubGluZU51bWJlcnwwLGk9bi5saW5lTnVtYmVyfDA7aWYocj09PWkpe2NvbnN0IHM9ZS5jb2x1bW58MCxhPW4uY29sdW1ufDA7cmV0dXJuIHMtYX1yZXR1cm4gci1pfWNsb25lKCl7cmV0dXJuIG5ldyBBdCh0aGlzLmxpbmVOdW1iZXIsdGhpcy5jb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMubGluZU51bWJlcisiLCIrdGhpcy5jb2x1bW4rIikifXN0YXRpYyBsaWZ0KGUpe3JldHVybiBuZXcgQXQoZS5saW5lTnVtYmVyLGUuY29sdW1uKX1zdGF0aWMgaXNJUG9zaXRpb24oZSl7cmV0dXJuIGUmJnR5cGVvZiBlLmxpbmVOdW1iZXI9PSJudW1iZXIiJiZ0eXBlb2YgZS5jb2x1bW49PSJudW1iZXIifXRvSlNPTigpe3JldHVybntsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW46dGhpcy5jb2x1bW59fX0sdmU9Y2xhc3MgcGV7Y29uc3RydWN0b3IoZSxuLHIsaSl7ZT5yfHxlPT09ciYmbj5pPyh0aGlzLnN0YXJ0TGluZU51bWJlcj1yLHRoaXMuc3RhcnRDb2x1bW49aSx0aGlzLmVuZExpbmVOdW1iZXI9ZSx0aGlzLmVuZENvbHVtbj1uKToodGhpcy5zdGFydExpbmVOdW1iZXI9ZSx0aGlzLnN0YXJ0Q29sdW1uPW4sdGhpcy5lbmRMaW5lTnVtYmVyPXIsdGhpcy5lbmRDb2x1bW49aSl9aXNFbXB0eSgpe3JldHVybiBwZS5pc0VtcHR5KHRoaXMpfXN0YXRpYyBpc0VtcHR5KGUpe3JldHVybiBlLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PWUuZW5kQ29sdW1ufWNvbnRhaW5zUG9zaXRpb24oZSl7cmV0dXJuIHBlLmNvbnRhaW5zUG9zaXRpb24odGhpcyxlKX1zdGF0aWMgY29udGFpbnNQb3NpdGlvbihlLG4pe3JldHVybiEobi5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHxuLmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHxuLmxpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmbi5jb2x1bW48ZS5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZuLmNvbHVtbj5lLmVuZENvbHVtbil9c3RhdGljIHN0cmljdENvbnRhaW5zUG9zaXRpb24oZSxuKXtyZXR1cm4hKG4ubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8bi5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcnx8bi5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJm4uY29sdW1uPD1lLnN0YXJ0Q29sdW1ufHxuLmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJm4uY29sdW1uPj1lLmVuZENvbHVtbil9Y29udGFpbnNSYW5nZShlKXtyZXR1cm4gcGUuY29udGFpbnNSYW5nZSh0aGlzLGUpfXN0YXRpYyBjb250YWluc1JhbmdlKGUsbil7cmV0dXJuIShuLnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHxuLnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fG4uZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fG4uc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJm4uc3RhcnRDb2x1bW48ZS5zdGFydENvbHVtbnx8bi5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZuLmVuZENvbHVtbj5lLmVuZENvbHVtbil9c3RyaWN0Q29udGFpbnNSYW5nZShlKXtyZXR1cm4gcGUuc3RyaWN0Q29udGFpbnNSYW5nZSh0aGlzLGUpfXN0YXRpYyBzdHJpY3RDb250YWluc1JhbmdlKGUsbil7cmV0dXJuIShuLnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHxuLnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fG4uZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fG4uc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJm4uc3RhcnRDb2x1bW48PWUuc3RhcnRDb2x1bW58fG4uZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmbi5lbmRDb2x1bW4+PWUuZW5kQ29sdW1uKX1wbHVzUmFuZ2UoZSl7cmV0dXJuIHBlLnBsdXNSYW5nZSh0aGlzLGUpfXN0YXRpYyBwbHVzUmFuZ2UoZSxuKXtsZXQgcixpLHMsYTtyZXR1cm4gbi5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXI/KHI9bi5zdGFydExpbmVOdW1iZXIsaT1uLnN0YXJ0Q29sdW1uKTpuLnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyPyhyPW4uc3RhcnRMaW5lTnVtYmVyLGk9TWF0aC5taW4obi5zdGFydENvbHVtbixlLnN0YXJ0Q29sdW1uKSk6KHI9ZS5zdGFydExpbmVOdW1iZXIsaT1lLnN0YXJ0Q29sdW1uKSxuLmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyPyhzPW4uZW5kTGluZU51bWJlcixhPW4uZW5kQ29sdW1uKTpuLmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXI/KHM9bi5lbmRMaW5lTnVtYmVyLGE9TWF0aC5tYXgobi5lbmRDb2x1bW4sZS5lbmRDb2x1bW4pKToocz1lLmVuZExpbmVOdW1iZXIsYT1lLmVuZENvbHVtbiksbmV3IHBlKHIsaSxzLGEpfWludGVyc2VjdFJhbmdlcyhlKXtyZXR1cm4gcGUuaW50ZXJzZWN0UmFuZ2VzKHRoaXMsZSl9c3RhdGljIGludGVyc2VjdFJhbmdlcyhlLG4pe2xldCByPWUuc3RhcnRMaW5lTnVtYmVyLGk9ZS5zdGFydENvbHVtbixzPWUuZW5kTGluZU51bWJlcixhPWUuZW5kQ29sdW1uO2NvbnN0IG89bi5zdGFydExpbmVOdW1iZXIsbD1uLnN0YXJ0Q29sdW1uLGM9bi5lbmRMaW5lTnVtYmVyLGg9bi5lbmRDb2x1bW47cmV0dXJuIHI8bz8ocj1vLGk9bCk6cj09PW8mJihpPU1hdGgubWF4KGksbCkpLHM+Yz8ocz1jLGE9aCk6cz09PWMmJihhPU1hdGgubWluKGEsaCkpLHI+c3x8cj09PXMmJmk+YT9udWxsOm5ldyBwZShyLGkscyxhKX1lcXVhbHNSYW5nZShlKXtyZXR1cm4gcGUuZXF1YWxzUmFuZ2UodGhpcyxlKX1zdGF0aWMgZXF1YWxzUmFuZ2UoZSxuKXtyZXR1cm4hZSYmIW4/ITA6ISFlJiYhIW4mJmUuc3RhcnRMaW5lTnVtYmVyPT09bi5zdGFydExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT1uLnN0YXJ0Q29sdW1uJiZlLmVuZExpbmVOdW1iZXI9PT1uLmVuZExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPT09bi5lbmRDb2x1bW59Z2V0RW5kUG9zaXRpb24oKXtyZXR1cm4gcGUuZ2V0RW5kUG9zaXRpb24odGhpcyl9c3RhdGljIGdldEVuZFBvc2l0aW9uKGUpe3JldHVybiBuZXcgWWUoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKX1nZXRTdGFydFBvc2l0aW9uKCl7cmV0dXJuIHBlLmdldFN0YXJ0UG9zaXRpb24odGhpcyl9c3RhdGljIGdldFN0YXJ0UG9zaXRpb24oZSl7cmV0dXJuIG5ldyBZZShlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zdGFydENvbHVtbisiIC0+ICIrdGhpcy5lbmRMaW5lTnVtYmVyKyIsIit0aGlzLmVuZENvbHVtbisiXSJ9c2V0RW5kUG9zaXRpb24oZSxuKXtyZXR1cm4gbmV3IHBlKHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4sZSxuKX1zZXRTdGFydFBvc2l0aW9uKGUsbil7cmV0dXJuIG5ldyBwZShlLG4sdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKX1jb2xsYXBzZVRvU3RhcnQoKXtyZXR1cm4gcGUuY29sbGFwc2VUb1N0YXJ0KHRoaXMpfXN0YXRpYyBjb2xsYXBzZVRvU3RhcnQoZSl7cmV0dXJuIG5ldyBwZShlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfWNvbGxhcHNlVG9FbmQoKXtyZXR1cm4gcGUuY29sbGFwc2VUb0VuZCh0aGlzKX1zdGF0aWMgY29sbGFwc2VUb0VuZChlKXtyZXR1cm4gbmV3IHBlKGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pfWRlbHRhKGUpe3JldHVybiBuZXcgcGUodGhpcy5zdGFydExpbmVOdW1iZXIrZSx0aGlzLnN0YXJ0Q29sdW1uLHRoaXMuZW5kTGluZU51bWJlcitlLHRoaXMuZW5kQ29sdW1uKX1zdGF0aWMgZnJvbVBvc2l0aW9ucyhlLG49ZSl7cmV0dXJuIG5ldyBwZShlLmxpbmVOdW1iZXIsZS5jb2x1bW4sbi5saW5lTnVtYmVyLG4uY29sdW1uKX1zdGF0aWMgbGlmdChlKXtyZXR1cm4gZT9uZXcgcGUoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pOm51bGx9c3RhdGljIGlzSVJhbmdlKGUpe3JldHVybiBlJiZ0eXBlb2YgZS5zdGFydExpbmVOdW1iZXI9PSJudW1iZXIiJiZ0eXBlb2YgZS5zdGFydENvbHVtbj09Im51bWJlciImJnR5cGVvZiBlLmVuZExpbmVOdW1iZXI9PSJudW1iZXIiJiZ0eXBlb2YgZS5lbmRDb2x1bW49PSJudW1iZXIifXN0YXRpYyBhcmVJbnRlcnNlY3RpbmdPclRvdWNoaW5nKGUsbil7cmV0dXJuIShlLmVuZExpbmVOdW1iZXI8bi5zdGFydExpbmVOdW1iZXJ8fGUuZW5kTGluZU51bWJlcj09PW4uc3RhcnRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbjxuLnN0YXJ0Q29sdW1ufHxuLmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fG4uZW5kTGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZuLmVuZENvbHVtbjxlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nKGUsbil7cmV0dXJuIShlLmVuZExpbmVOdW1iZXI8bi5zdGFydExpbmVOdW1iZXJ8fGUuZW5kTGluZU51bWJlcj09PW4uc3RhcnRMaW5lTnVtYmVyJiZlLmVuZENvbHVtbjw9bi5zdGFydENvbHVtbnx8bi5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHxuLmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmbi5lbmRDb2x1bW48PWUuc3RhcnRDb2x1bW4pfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoZSxuKXtpZihlJiZuKXtjb25zdCBzPWUuc3RhcnRMaW5lTnVtYmVyfDAsYT1uLnN0YXJ0TGluZU51bWJlcnwwO2lmKHM9PT1hKXtjb25zdCBvPWUuc3RhcnRDb2x1bW58MCxsPW4uc3RhcnRDb2x1bW58MDtpZihvPT09bCl7Y29uc3QgYz1lLmVuZExpbmVOdW1iZXJ8MCxoPW4uZW5kTGluZU51bWJlcnwwO2lmKGM9PT1oKXtjb25zdCB1PWUuZW5kQ29sdW1ufDAsZj1uLmVuZENvbHVtbnwwO3JldHVybiB1LWZ9cmV0dXJuIGMtaH1yZXR1cm4gby1sfXJldHVybiBzLWF9cmV0dXJuKGU/MTowKS0obj8xOjApfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdFbmRzKGUsbil7cmV0dXJuIGUuZW5kTGluZU51bWJlcj09PW4uZW5kTGluZU51bWJlcj9lLmVuZENvbHVtbj09PW4uZW5kQ29sdW1uP2Uuc3RhcnRMaW5lTnVtYmVyPT09bi5zdGFydExpbmVOdW1iZXI/ZS5zdGFydENvbHVtbi1uLnN0YXJ0Q29sdW1uOmUuc3RhcnRMaW5lTnVtYmVyLW4uc3RhcnRMaW5lTnVtYmVyOmUuZW5kQ29sdW1uLW4uZW5kQ29sdW1uOmUuZW5kTGluZU51bWJlci1uLmVuZExpbmVOdW1iZXJ9c3RhdGljIHNwYW5zTXVsdGlwbGVMaW5lcyhlKXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPmUuc3RhcnRMaW5lTnVtYmVyfXRvSlNPTigpe3JldHVybiB0aGlzfX07ZnVuY3Rpb24gZ2godCxlLG49KHIsaSk9PnI9PT1pKXtpZih0PT09ZSlyZXR1cm4hMDtpZighdHx8IWV8fHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCByPTAsaT10Lmxlbmd0aDtyPGk7cisrKWlmKCFuKHRbcl0sZVtyXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24qYmgodCxlKXtsZXQgbixyO2Zvcihjb25zdCBpIG9mIHQpciE9PXZvaWQgMCYmZShyLGkpP24ucHVzaChpKToobiYmKHlpZWxkIG4pLG49W2ldKSxyPWk7biYmKHlpZWxkIG4pfWZ1bmN0aW9uIHZoKHQsZSl7Zm9yKGxldCBuPTA7bjw9dC5sZW5ndGg7bisrKWUobj09PTA/dm9pZCAwOnRbbi0xXSxuPT09dC5sZW5ndGg/dm9pZCAwOnRbbl0pfWZ1bmN0aW9uIHloKHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspZShuPT09MD92b2lkIDA6dFtuLTFdLHRbbl0sbisxPT09dC5sZW5ndGg/dm9pZCAwOnRbbisxXSl9ZnVuY3Rpb24gd2godCxlKXtmb3IoY29uc3QgbiBvZiBlKXQucHVzaChuKX12YXIgRnM7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUocyl7cmV0dXJuIHM8MH10LmlzTGVzc1RoYW49ZTtmdW5jdGlvbiBuKHMpe3JldHVybiBzPD0wfXQuaXNMZXNzVGhhbk9yRXF1YWw9bjtmdW5jdGlvbiByKHMpe3JldHVybiBzPjB9dC5pc0dyZWF0ZXJUaGFuPXI7ZnVuY3Rpb24gaShzKXtyZXR1cm4gcz09PTB9dC5pc05laXRoZXJMZXNzT3JHcmVhdGVyVGhhbj1pLHQuZ3JlYXRlclRoYW49MSx0Lmxlc3NUaGFuPS0xLHQubmVpdGhlckxlc3NPckdyZWF0ZXJUaGFuPTB9KShGc3x8KEZzPXt9KSk7ZnVuY3Rpb24gam4odCxlKXtyZXR1cm4obixyKT0+ZSh0KG4pLHQocikpfWNvbnN0ICRuPSh0LGUpPT50LWU7ZnVuY3Rpb24geGgodCl7cmV0dXJuKGUsbik9Pi10KGUsbil9ZnVuY3Rpb24gRHModCl7cmV0dXJuIHQ8MD8wOnQ+MjU1PzI1NTp0fDB9ZnVuY3Rpb24gVXQodCl7cmV0dXJuIHQ8MD8wOnQ+NDI5NDk2NzI5NT80Mjk0OTY3Mjk1OnR8MH1jbGFzcyBTaHtjb25zdHJ1Y3RvcihlKXt0aGlzLnZhbHVlcz1lLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheShlLmxlbmd0aCksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4PW5ldyBJbnQzMkFycmF5KDEpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT0tMX1pbnNlcnRWYWx1ZXMoZSxuKXtlPVV0KGUpO2NvbnN0IHI9dGhpcy52YWx1ZXMsaT10aGlzLnByZWZpeFN1bSxzPW4ubGVuZ3RoO3JldHVybiBzPT09MD8hMToodGhpcy52YWx1ZXM9bmV3IFVpbnQzMkFycmF5KHIubGVuZ3RoK3MpLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KDAsZSksMCksdGhpcy52YWx1ZXMuc2V0KHIuc3ViYXJyYXkoZSksZStzKSx0aGlzLnZhbHVlcy5zZXQobixlKSxlLTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPWUtMSksdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHRoaXMudmFsdWVzLmxlbmd0aCksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPj0wJiZ0aGlzLnByZWZpeFN1bS5zZXQoaS5zdWJhcnJheSgwLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxKSksITApfXNldFZhbHVlKGUsbil7cmV0dXJuIGU9VXQoZSksbj1VdChuKSx0aGlzLnZhbHVlc1tlXT09PW4/ITE6KHRoaXMudmFsdWVzW2VdPW4sZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLCEwKX1yZW1vdmVWYWx1ZXMoZSxuKXtlPVV0KGUpLG49VXQobik7Y29uc3Qgcj10aGlzLnZhbHVlcyxpPXRoaXMucHJlZml4U3VtO2lmKGU+PXIubGVuZ3RoKXJldHVybiExO2NvbnN0IHM9ci5sZW5ndGgtZTtyZXR1cm4gbj49cyYmKG49cyksbj09PTA/ITE6KHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aC1uKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSgwLGUpLDApLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KGUrbiksZSksdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHRoaXMudmFsdWVzLmxlbmd0aCksZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT49MCYmdGhpcy5wcmVmaXhTdW0uc2V0KGkuc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1nZXRUb3RhbFN1bSgpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGg9PT0wPzA6dGhpcy5fZ2V0UHJlZml4U3VtKHRoaXMudmFsdWVzLmxlbmd0aC0xKX1nZXRQcmVmaXhTdW0oZSl7cmV0dXJuIGU8MD8wOihlPVV0KGUpLHRoaXMuX2dldFByZWZpeFN1bShlKSl9X2dldFByZWZpeFN1bShlKXtpZihlPD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0pcmV0dXJuIHRoaXMucHJlZml4U3VtW2VdO2xldCBuPXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxO249PT0wJiYodGhpcy5wcmVmaXhTdW1bMF09dGhpcy52YWx1ZXNbMF0sbisrKSxlPj10aGlzLnZhbHVlcy5sZW5ndGgmJihlPXRoaXMudmFsdWVzLmxlbmd0aC0xKTtmb3IobGV0IHI9bjtyPD1lO3IrKyl0aGlzLnByZWZpeFN1bVtyXT10aGlzLnByZWZpeFN1bVtyLTFdK3RoaXMudmFsdWVzW3JdO3JldHVybiB0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09TWF0aC5tYXgodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdLGUpLHRoaXMucHJlZml4U3VtW2VdfWdldEluZGV4T2YoZSl7ZT1NYXRoLmZsb29yKGUpLHRoaXMuZ2V0VG90YWxTdW0oKTtsZXQgbj0wLHI9dGhpcy52YWx1ZXMubGVuZ3RoLTEsaT0wLHM9MCxhPTA7Zm9yKDtuPD1yOylpZihpPW4rKHItbikvMnwwLHM9dGhpcy5wcmVmaXhTdW1baV0sYT1zLXRoaXMudmFsdWVzW2ldLGU8YSlyPWktMTtlbHNlIGlmKGU+PXMpbj1pKzE7ZWxzZSBicmVhaztyZXR1cm4gbmV3IENoKGksZS1hKX19Y2xhc3MgQ2h7Y29uc3RydWN0b3IoZSxuKXt0aGlzLmluZGV4PWUsdGhpcy5yZW1haW5kZXI9bix0aGlzLl9wcmVmaXhTdW1JbmRleE9mUmVzdWx0QnJhbmQ9dm9pZCAwLHRoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj1ufX1jbGFzcyBraHtjb25zdHJ1Y3RvcihlLG4scixpKXt0aGlzLl91cmk9ZSx0aGlzLl9saW5lcz1uLHRoaXMuX2VvbD1yLHRoaXMuX3ZlcnNpb25JZD1pLHRoaXMuX2xpbmVTdGFydHM9bnVsbCx0aGlzLl9jYWNoZWRUZXh0VmFsdWU9bnVsbH1kaXNwb3NlKCl7dGhpcy5fbGluZXMubGVuZ3RoPTB9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbklkfWdldFRleHQoKXtyZXR1cm4gdGhpcy5fY2FjaGVkVGV4dFZhbHVlPT09bnVsbCYmKHRoaXMuX2NhY2hlZFRleHRWYWx1ZT10aGlzLl9saW5lcy5qb2luKHRoaXMuX2VvbCkpLHRoaXMuX2NhY2hlZFRleHRWYWx1ZX1vbkV2ZW50cyhlKXtlLmVvbCYmZS5lb2whPT10aGlzLl9lb2wmJih0aGlzLl9lb2w9ZS5lb2wsdGhpcy5fbGluZVN0YXJ0cz1udWxsKTtjb25zdCBuPWUuY2hhbmdlcztmb3IoY29uc3QgciBvZiBuKXRoaXMuX2FjY2VwdERlbGV0ZVJhbmdlKHIucmFuZ2UpLHRoaXMuX2FjY2VwdEluc2VydFRleHQobmV3IFllKHIucmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLHIucmFuZ2Uuc3RhcnRDb2x1bW4pLHIudGV4dCk7dGhpcy5fdmVyc2lvbklkPWUudmVyc2lvbklkLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfV9lbnN1cmVMaW5lU3RhcnRzKCl7aWYoIXRoaXMuX2xpbmVTdGFydHMpe2NvbnN0IGU9dGhpcy5fZW9sLmxlbmd0aCxuPXRoaXMuX2xpbmVzLmxlbmd0aCxyPW5ldyBVaW50MzJBcnJheShuKTtmb3IobGV0IGk9MDtpPG47aSsrKXJbaV09dGhpcy5fbGluZXNbaV0ubGVuZ3RoK2U7dGhpcy5fbGluZVN0YXJ0cz1uZXcgU2gocil9fV9zZXRMaW5lVGV4dChlLG4pe3RoaXMuX2xpbmVzW2VdPW4sdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5zZXRWYWx1ZShlLHRoaXMuX2xpbmVzW2VdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoKX1fYWNjZXB0RGVsZXRlUmFuZ2UoZSl7aWYoZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXIpe2lmKGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbilyZXR1cm47dGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSk7cmV0dXJufXRoaXMuX3NldExpbmVUZXh0KGUuc3RhcnRMaW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5zdGFydENvbHVtbi0xKSt0aGlzLl9saW5lc1tlLmVuZExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuZW5kQ29sdW1uLTEpKSx0aGlzLl9saW5lcy5zcGxpY2UoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKSx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnJlbW92ZVZhbHVlcyhlLnN0YXJ0TGluZU51bWJlcixlLmVuZExpbmVOdW1iZXItZS5zdGFydExpbmVOdW1iZXIpfV9hY2NlcHRJbnNlcnRUZXh0KGUsbil7aWYobi5sZW5ndGg9PT0wKXJldHVybjtjb25zdCByPVBjKG4pO2lmKHIubGVuZ3RoPT09MSl7dGhpcy5fc2V0TGluZVRleHQoZS5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuY29sdW1uLTEpK3JbMF0rdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSk7cmV0dXJufXJbci5sZW5ndGgtMV0rPXRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXS5zdWJzdHJpbmcoZS5jb2x1bW4tMSksdGhpcy5fc2V0TGluZVRleHQoZS5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuY29sdW1uLTEpK3JbMF0pO2NvbnN0IGk9bmV3IFVpbnQzMkFycmF5KHIubGVuZ3RoLTEpO2ZvcihsZXQgcz0xO3M8ci5sZW5ndGg7cysrKXRoaXMuX2xpbmVzLnNwbGljZShlLmxpbmVOdW1iZXIrcy0xLDAscltzXSksaVtzLTFdPXJbc10ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGg7dGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5pbnNlcnRWYWx1ZXMoZS5saW5lTnVtYmVyLGkpfX1jb25zdCBfaD0iYH4hQCMkJV4mKigpLT0rW3tdfVxcfDs6J1wiLC48Pi8/IjtmdW5jdGlvbiBFaCh0PSIiKXtsZXQgZT0iKC0/XFxkKlxcLlxcZFxcdyopfChbXiI7Zm9yKGNvbnN0IG4gb2YgX2gpdC5pbmRleE9mKG4pPj0wfHwoZSs9IlxcIituKTtyZXR1cm4gZSs9Ilxcc10rKSIsbmV3IFJlZ0V4cChlLCJnIil9Y29uc3QgQXM9RWgoKTtmdW5jdGlvbiBOcyh0KXtsZXQgZT1BcztpZih0JiZ0IGluc3RhbmNlb2YgUmVnRXhwKWlmKHQuZ2xvYmFsKWU9dDtlbHNle2xldCBuPSJnIjt0Lmlnbm9yZUNhc2UmJihuKz0iaSIpLHQubXVsdGlsaW5lJiYobis9Im0iKSx0LnVuaWNvZGUmJihuKz0idSIpLGU9bmV3IFJlZ0V4cCh0LnNvdXJjZSxuKX1yZXR1cm4gZS5sYXN0SW5kZXg9MCxlfWNvbnN0IE1zPW5ldyBiYztNcy51bnNoaWZ0KHttYXhMZW46MWUzLHdpbmRvd1NpemU6MTUsdGltZUJ1ZGdldDoxNTB9KTtmdW5jdGlvbiBWcih0LGUsbixyLGkpe2lmKGU9TnMoZSksaXx8KGk9VG4uZmlyc3QoTXMpKSxuLmxlbmd0aD5pLm1heExlbil7bGV0IGM9dC1pLm1heExlbi8yO3JldHVybiBjPDA/Yz0wOnIrPWMsbj1uLnN1YnN0cmluZyhjLHQraS5tYXhMZW4vMiksVnIodCxlLG4scixpKX1jb25zdCBzPURhdGUubm93KCksYT10LTEtcjtsZXQgbz0tMSxsPW51bGw7Zm9yKGxldCBjPTE7IShEYXRlLm5vdygpLXM+PWkudGltZUJ1ZGdldCk7YysrKXtjb25zdCBoPWEtaS53aW5kb3dTaXplKmM7ZS5sYXN0SW5kZXg9TWF0aC5tYXgoMCxoKTtjb25zdCB1PVJoKGUsbixhLG8pO2lmKCF1JiZsfHwobD11LGg8PTApKWJyZWFrO289aH1pZihsKXtjb25zdCBjPXt3b3JkOmxbMF0sc3RhcnRDb2x1bW46cisxK2wuaW5kZXgsZW5kQ29sdW1uOnIrMStsLmluZGV4K2xbMF0ubGVuZ3RofTtyZXR1cm4gZS5sYXN0SW5kZXg9MCxjfXJldHVybiBudWxsfWZ1bmN0aW9uIFJoKHQsZSxuLHIpe2xldCBpO2Zvcig7aT10LmV4ZWMoZSk7KXtjb25zdCBzPWkuaW5kZXh8fDA7aWYoczw9biYmdC5sYXN0SW5kZXg+PW4pcmV0dXJuIGk7aWYocj4wJiZzPnIpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9Y2xhc3MgQnJ7Y29uc3RydWN0b3IoZSl7Y29uc3Qgbj1EcyhlKTt0aGlzLl9kZWZhdWx0VmFsdWU9bix0aGlzLl9hc2NpaU1hcD1Cci5fY3JlYXRlQXNjaWlNYXAobiksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcChlKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KDI1Nik7cmV0dXJuIG4uZmlsbChlKSxufXNldChlLG4pe2NvbnN0IHI9RHMobik7ZT49MCYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV09cjp0aGlzLl9tYXAuc2V0KGUscil9Z2V0KGUpe3JldHVybiBlPj0wJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXTp0aGlzLl9tYXAuZ2V0KGUpfHx0aGlzLl9kZWZhdWx0VmFsdWV9Y2xlYXIoKXt0aGlzLl9hc2NpaU1hcC5maWxsKHRoaXMuX2RlZmF1bHRWYWx1ZSksdGhpcy5fbWFwLmNsZWFyKCl9fWNsYXNzIEZoe2NvbnN0cnVjdG9yKGUsbixyKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUqbik7Zm9yKGxldCBzPTAsYT1lKm47czxhO3MrKylpW3NdPXI7dGhpcy5fZGF0YT1pLHRoaXMucm93cz1lLHRoaXMuY29scz1ufWdldChlLG4pe3JldHVybiB0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK25dfXNldChlLG4scil7dGhpcy5fZGF0YVtlKnRoaXMuY29scytuXT1yfX1jbGFzcyBEaHtjb25zdHJ1Y3RvcihlKXtsZXQgbj0wLHI9MDtmb3IobGV0IHM9MCxhPWUubGVuZ3RoO3M8YTtzKyspe2NvbnN0W28sbCxjXT1lW3NdO2w+biYmKG49bCksbz5yJiYocj1vKSxjPnImJihyPWMpfW4rKyxyKys7Y29uc3QgaT1uZXcgRmgocixuLDApO2ZvcihsZXQgcz0wLGE9ZS5sZW5ndGg7czxhO3MrKyl7Y29uc3RbbyxsLGNdPWVbc107aS5zZXQobyxsLGMpfXRoaXMuX3N0YXRlcz1pLHRoaXMuX21heENoYXJDb2RlPW59bmV4dFN0YXRlKGUsbil7cmV0dXJuIG48MHx8bj49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KGUsbil9fWxldCBxcj1udWxsO2Z1bmN0aW9uIEFoKCl7cmV0dXJuIHFyPT09bnVsbCYmKHFyPW5ldyBEaChbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKSkscXJ9bGV0IGFuPW51bGw7ZnVuY3Rpb24gTmgoKXtpZihhbj09PW51bGwpe2FuPW5ldyBCcigwKTtjb25zdCB0PWAgCTw+JyLjgIHjgILvvaHvvaTvvIzvvI7vvJrvvJvigJjjgIjjgIzjgI7jgJTvvIjvvLvvvZvvvaLvvaPvvZ3vvL3vvInjgJXjgI/jgI3jgInigJnvvYDvvZ7igKZgO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWFuLnNldCh0LmNoYXJDb2RlQXQobiksMSk7Y29uc3QgZT0iLiw7OiI7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspYW4uc2V0KGUuY2hhckNvZGVBdChuKSwyKX1yZXR1cm4gYW59Y2xhc3MgSG57c3RhdGljIF9jcmVhdGVMaW5rKGUsbixyLGkscyl7bGV0IGE9cy0xO2Rve2NvbnN0IG89bi5jaGFyQ29kZUF0KGEpO2lmKGUuZ2V0KG8pIT09MilicmVhazthLS19d2hpbGUoYT5pKTtpZihpPjApe2NvbnN0IG89bi5jaGFyQ29kZUF0KGktMSksbD1uLmNoYXJDb2RlQXQoYSk7KG89PT00MCYmbD09PTQxfHxvPT09OTEmJmw9PT05M3x8bz09PTEyMyYmbD09PTEyNSkmJmEtLX1yZXR1cm57cmFuZ2U6e3N0YXJ0TGluZU51bWJlcjpyLHN0YXJ0Q29sdW1uOmkrMSxlbmRMaW5lTnVtYmVyOnIsZW5kQ29sdW1uOmErMn0sdXJsOm4uc3Vic3RyaW5nKGksYSsxKX19c3RhdGljIGNvbXB1dGVMaW5rcyhlLG49QWgoKSl7Y29uc3Qgcj1OaCgpLGk9W107Zm9yKGxldCBzPTEsYT1lLmdldExpbmVDb3VudCgpO3M8PWE7cysrKXtjb25zdCBvPWUuZ2V0TGluZUNvbnRlbnQocyksbD1vLmxlbmd0aDtsZXQgYz0wLGg9MCx1PTAsZj0xLG09ITEsZz0hMSxiPSExLHk9ITE7Zm9yKDtjPGw7KXtsZXQgQz0hMTtjb25zdCBrPW8uY2hhckNvZGVBdChjKTtpZihmPT09MTMpe2xldCB3O3N3aXRjaChrKXtjYXNlIDQwOm09ITAsdz0wO2JyZWFrO2Nhc2UgNDE6dz1tPzA6MTticmVhaztjYXNlIDkxOmI9ITAsZz0hMCx3PTA7YnJlYWs7Y2FzZSA5MzpiPSExLHc9Zz8wOjE7YnJlYWs7Y2FzZSAxMjM6eT0hMCx3PTA7YnJlYWs7Y2FzZSAxMjU6dz15PzA6MTticmVhaztjYXNlIDM5OmNhc2UgMzQ6Y2FzZSA5Njp1PT09az93PTE6dT09PTM5fHx1PT09MzR8fHU9PT05Nj93PTA6dz0xO2JyZWFrO2Nhc2UgNDI6dz11PT09NDI/MTowO2JyZWFrO2Nhc2UgMTI0Onc9dT09PTEyND8xOjA7YnJlYWs7Y2FzZSAzMjp3PWI/MDoxO2JyZWFrO2RlZmF1bHQ6dz1yLmdldChrKX13PT09MSYmKGkucHVzaChIbi5fY3JlYXRlTGluayhyLG8scyxoLGMpKSxDPSEwKX1lbHNlIGlmKGY9PT0xMil7bGV0IHc7az09PTkxPyhnPSEwLHc9MCk6dz1yLmdldChrKSx3PT09MT9DPSEwOmY9MTN9ZWxzZSBmPW4ubmV4dFN0YXRlKGYsayksZj09PTAmJihDPSEwKTtDJiYoZj0xLG09ITEsZz0hMSx5PSExLGg9YysxLHU9ayksYysrfWY9PT0xMyYmaS5wdXNoKEhuLl9jcmVhdGVMaW5rKHIsbyxzLGgsbCkpfXJldHVybiBpfX1mdW5jdGlvbiBNaCh0KXtyZXR1cm4hdHx8dHlwZW9mIHQuZ2V0TGluZUNvdW50IT0iZnVuY3Rpb24ifHx0eXBlb2YgdC5nZXRMaW5lQ29udGVudCE9ImZ1bmN0aW9uIj9bXTpIbi5jb21wdXRlTGlua3ModCl9Y2xhc3MganJ7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VmFsdWVTZXQ9W1sidHJ1ZSIsImZhbHNlIl0sWyJUcnVlIiwiRmFsc2UiXSxbIlByaXZhdGUiLCJQdWJsaWMiLCJGcmllbmQiLCJSZWFkT25seSIsIlBhcnRpYWwiLCJQcm90ZWN0ZWQiLCJXcml0ZU9ubHkiXSxbInB1YmxpYyIsInByb3RlY3RlZCIsInByaXZhdGUiXV19bmF2aWdhdGVWYWx1ZVNldChlLG4scixpLHMpe2lmKGUmJm4pe2NvbnN0IGE9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQobixzKTtpZihhKXJldHVybntyYW5nZTplLHZhbHVlOmF9fWlmKHImJmkpe2NvbnN0IGE9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQoaSxzKTtpZihhKXJldHVybntyYW5nZTpyLHZhbHVlOmF9fXJldHVybiBudWxsfWRvTmF2aWdhdGVWYWx1ZVNldChlLG4pe2NvbnN0IHI9dGhpcy5udW1iZXJSZXBsYWNlKGUsbik7cmV0dXJuIHIhPT1udWxsP3I6dGhpcy50ZXh0UmVwbGFjZShlLG4pfW51bWJlclJlcGxhY2UoZSxuKXtjb25zdCByPU1hdGgucG93KDEwLGUubGVuZ3RoLShlLmxhc3RJbmRleE9mKCIuIikrMSkpO2xldCBpPU51bWJlcihlKTtjb25zdCBzPXBhcnNlRmxvYXQoZSk7cmV0dXJuIWlzTmFOKGkpJiYhaXNOYU4ocykmJmk9PT1zP2k9PT0wJiYhbj9udWxsOihpPU1hdGguZmxvb3IoaSpyKSxpKz1uP3I6LXIsU3RyaW5nKGkvcikpOm51bGx9dGV4dFJlcGxhY2UoZSxuKXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCxlLG4pfXZhbHVlU2V0c1JlcGxhY2UoZSxuLHIpe2xldCBpPW51bGw7Zm9yKGxldCBzPTAsYT1lLmxlbmd0aDtpPT09bnVsbCYmczxhO3MrKylpPXRoaXMudmFsdWVTZXRSZXBsYWNlKGVbc10sbixyKTtyZXR1cm4gaX12YWx1ZVNldFJlcGxhY2UoZSxuLHIpe2xldCBpPWUuaW5kZXhPZihuKTtyZXR1cm4gaT49MD8oaSs9cj8xOi0xLGk8MD9pPWUubGVuZ3RoLTE6aSU9ZS5sZW5ndGgsZVtpXSk6bnVsbH19anIuSU5TVEFOQ0U9bmV3IGpyO2NvbnN0IHpzPU9iamVjdC5mcmVlemUoZnVuY3Rpb24odCxlKXtjb25zdCBuPXNldFRpbWVvdXQodC5iaW5kKGUpLDApO3JldHVybntkaXNwb3NlKCl7Y2xlYXJUaW1lb3V0KG4pfX19KTt2YXIgR247KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7cmV0dXJuIG49PT10Lk5vbmV8fG49PT10LkNhbmNlbGxlZHx8biBpbnN0YW5jZW9mIEpuPyEwOiFufHx0eXBlb2YgbiE9Im9iamVjdCI/ITE6dHlwZW9mIG4uaXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ9PSJib29sZWFuIiYmdHlwZW9mIG4ub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ9PSJmdW5jdGlvbiJ9dC5pc0NhbmNlbGxhdGlvblRva2VuPWUsdC5Ob25lPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiExLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOl9yLk5vbmV9KSx0LkNhbmNlbGxlZD1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMCxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDp6c30pfSkoR258fChHbj17fSkpO2NsYXNzIEpue2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD96czoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IHFlKSx0aGlzLl9lbWl0dGVyLmV2ZW50KX1kaXNwb3NlKCl7dGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZGlzcG9zZSgpLHRoaXMuX2VtaXR0ZXI9bnVsbCl9fWNsYXNzIHpoe2NvbnN0cnVjdG9yKGUpe3RoaXMuX3Rva2VuPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9ZSYmZS5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCh0aGlzLmNhbmNlbCx0aGlzKX1nZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy5fdG9rZW58fCh0aGlzLl90b2tlbj1uZXcgSm4pLHRoaXMuX3Rva2VufWNhbmNlbCgpe3RoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgSm4mJnRoaXMuX3Rva2VuLmNhbmNlbCgpOnRoaXMuX3Rva2VuPUduLkNhbmNlbGxlZH1kaXNwb3NlKGU9ITEpe3ZhciBuO2UmJnRoaXMuY2FuY2VsKCksKG49dGhpcy5fcGFyZW50TGlzdGVuZXIpPT09bnVsbHx8bj09PXZvaWQgMHx8bi5kaXNwb3NlKCksdGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBKbiYmdGhpcy5fdG9rZW4uZGlzcG9zZSgpOnRoaXMuX3Rva2VuPUduLk5vbmV9fWNsYXNzICRye2NvbnN0cnVjdG9yKCl7dGhpcy5fa2V5Q29kZVRvU3RyPVtdLHRoaXMuX3N0clRvS2V5Q29kZT1PYmplY3QuY3JlYXRlKG51bGwpfWRlZmluZShlLG4pe3RoaXMuX2tleUNvZGVUb1N0cltlXT1uLHRoaXMuX3N0clRvS2V5Q29kZVtuLnRvTG93ZXJDYXNlKCldPWV9a2V5Q29kZVRvU3RyKGUpe3JldHVybiB0aGlzLl9rZXlDb2RlVG9TdHJbZV19c3RyVG9LZXlDb2RlKGUpe3JldHVybiB0aGlzLl9zdHJUb0tleUNvZGVbZS50b0xvd2VyQ2FzZSgpXXx8MH19Y29uc3QgWG49bmV3ICRyLEhyPW5ldyAkcixHcj1uZXcgJHIsTGg9bmV3IEFycmF5KDIzMCksUGg9T2JqZWN0LmNyZWF0ZShudWxsKSxJaD1PYmplY3QuY3JlYXRlKG51bGwpOyhmdW5jdGlvbigpe2NvbnN0IHQ9IiIsZT1bWzEsMCwiTm9uZSIsMCwidW5rbm93biIsMCwiVktfVU5LTk9XTiIsdCx0XSxbMSwxLCJIeXBlciIsMCx0LDAsdCx0LHRdLFsxLDIsIlN1cGVyIiwwLHQsMCx0LHQsdF0sWzEsMywiRm4iLDAsdCwwLHQsdCx0XSxbMSw0LCJGbkxvY2siLDAsdCwwLHQsdCx0XSxbMSw1LCJTdXNwZW5kIiwwLHQsMCx0LHQsdF0sWzEsNiwiUmVzdW1lIiwwLHQsMCx0LHQsdF0sWzEsNywiVHVyYm8iLDAsdCwwLHQsdCx0XSxbMSw4LCJTbGVlcCIsMCx0LDAsIlZLX1NMRUVQIix0LHRdLFsxLDksIldha2VVcCIsMCx0LDAsdCx0LHRdLFswLDEwLCJLZXlBIiwzMSwiQSIsNjUsIlZLX0EiLHQsdF0sWzAsMTEsIktleUIiLDMyLCJCIiw2NiwiVktfQiIsdCx0XSxbMCwxMiwiS2V5QyIsMzMsIkMiLDY3LCJWS19DIix0LHRdLFswLDEzLCJLZXlEIiwzNCwiRCIsNjgsIlZLX0QiLHQsdF0sWzAsMTQsIktleUUiLDM1LCJFIiw2OSwiVktfRSIsdCx0XSxbMCwxNSwiS2V5RiIsMzYsIkYiLDcwLCJWS19GIix0LHRdLFswLDE2LCJLZXlHIiwzNywiRyIsNzEsIlZLX0ciLHQsdF0sWzAsMTcsIktleUgiLDM4LCJIIiw3MiwiVktfSCIsdCx0XSxbMCwxOCwiS2V5SSIsMzksIkkiLDczLCJWS19JIix0LHRdLFswLDE5LCJLZXlKIiw0MCwiSiIsNzQsIlZLX0oiLHQsdF0sWzAsMjAsIktleUsiLDQxLCJLIiw3NSwiVktfSyIsdCx0XSxbMCwyMSwiS2V5TCIsNDIsIkwiLDc2LCJWS19MIix0LHRdLFswLDIyLCJLZXlNIiw0MywiTSIsNzcsIlZLX00iLHQsdF0sWzAsMjMsIktleU4iLDQ0LCJOIiw3OCwiVktfTiIsdCx0XSxbMCwyNCwiS2V5TyIsNDUsIk8iLDc5LCJWS19PIix0LHRdLFswLDI1LCJLZXlQIiw0NiwiUCIsODAsIlZLX1AiLHQsdF0sWzAsMjYsIktleVEiLDQ3LCJRIiw4MSwiVktfUSIsdCx0XSxbMCwyNywiS2V5UiIsNDgsIlIiLDgyLCJWS19SIix0LHRdLFswLDI4LCJLZXlTIiw0OSwiUyIsODMsIlZLX1MiLHQsdF0sWzAsMjksIktleVQiLDUwLCJUIiw4NCwiVktfVCIsdCx0XSxbMCwzMCwiS2V5VSIsNTEsIlUiLDg1LCJWS19VIix0LHRdLFswLDMxLCJLZXlWIiw1MiwiViIsODYsIlZLX1YiLHQsdF0sWzAsMzIsIktleVciLDUzLCJXIiw4NywiVktfVyIsdCx0XSxbMCwzMywiS2V5WCIsNTQsIlgiLDg4LCJWS19YIix0LHRdLFswLDM0LCJLZXlZIiw1NSwiWSIsODksIlZLX1kiLHQsdF0sWzAsMzUsIktleVoiLDU2LCJaIiw5MCwiVktfWiIsdCx0XSxbMCwzNiwiRGlnaXQxIiwyMiwiMSIsNDksIlZLXzEiLHQsdF0sWzAsMzcsIkRpZ2l0MiIsMjMsIjIiLDUwLCJWS18yIix0LHRdLFswLDM4LCJEaWdpdDMiLDI0LCIzIiw1MSwiVktfMyIsdCx0XSxbMCwzOSwiRGlnaXQ0IiwyNSwiNCIsNTIsIlZLXzQiLHQsdF0sWzAsNDAsIkRpZ2l0NSIsMjYsIjUiLDUzLCJWS181Iix0LHRdLFswLDQxLCJEaWdpdDYiLDI3LCI2Iiw1NCwiVktfNiIsdCx0XSxbMCw0MiwiRGlnaXQ3IiwyOCwiNyIsNTUsIlZLXzciLHQsdF0sWzAsNDMsIkRpZ2l0OCIsMjksIjgiLDU2LCJWS184Iix0LHRdLFswLDQ0LCJEaWdpdDkiLDMwLCI5Iiw1NywiVktfOSIsdCx0XSxbMCw0NSwiRGlnaXQwIiwyMSwiMCIsNDgsIlZLXzAiLHQsdF0sWzEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsdCx0XSxbMSw0NywiRXNjYXBlIiw5LCJFc2NhcGUiLDI3LCJWS19FU0NBUEUiLHQsdF0sWzEsNDgsIkJhY2tzcGFjZSIsMSwiQmFja3NwYWNlIiw4LCJWS19CQUNLIix0LHRdLFsxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIix0LHRdLFsxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLHQsdF0sWzAsNTEsIk1pbnVzIiw4OCwiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzAsNTIsIkVxdWFsIiw4NiwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFswLDUzLCJCcmFja2V0TGVmdCIsOTIsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbMCw1NCwiQnJhY2tldFJpZ2h0Iiw5NCwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFswLDU1LCJCYWNrc2xhc2giLDkzLCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCw1NiwiSW50bEhhc2giLDAsdCwwLHQsdCx0XSxbMCw1NywiU2VtaWNvbG9uIiw4NSwiOyIsMTg2LCJWS19PRU1fMSIsIjsiLCJPRU1fMSJdLFswLDU4LCJRdW90ZSIsOTUsIiciLDIyMiwiVktfT0VNXzciLCInIiwiT0VNXzciXSxbMCw1OSwiQmFja3F1b3RlIiw5MSwiYCIsMTkyLCJWS19PRU1fMyIsImAiLCJPRU1fMyJdLFswLDYwLCJDb21tYSIsODcsIiwiLDE4OCwiVktfT0VNX0NPTU1BIiwiLCIsIk9FTV9DT01NQSJdLFswLDYxLCJQZXJpb2QiLDg5LCIuIiwxOTAsIlZLX09FTV9QRVJJT0QiLCIuIiwiT0VNX1BFUklPRCJdLFswLDYyLCJTbGFzaCIsOTAsIi8iLDE5MSwiVktfT0VNXzIiLCIvIiwiT0VNXzIiXSxbMSw2MywiQ2Fwc0xvY2siLDgsIkNhcHNMb2NrIiwyMCwiVktfQ0FQSVRBTCIsdCx0XSxbMSw2NCwiRjEiLDU5LCJGMSIsMTEyLCJWS19GMSIsdCx0XSxbMSw2NSwiRjIiLDYwLCJGMiIsMTEzLCJWS19GMiIsdCx0XSxbMSw2NiwiRjMiLDYxLCJGMyIsMTE0LCJWS19GMyIsdCx0XSxbMSw2NywiRjQiLDYyLCJGNCIsMTE1LCJWS19GNCIsdCx0XSxbMSw2OCwiRjUiLDYzLCJGNSIsMTE2LCJWS19GNSIsdCx0XSxbMSw2OSwiRjYiLDY0LCJGNiIsMTE3LCJWS19GNiIsdCx0XSxbMSw3MCwiRjciLDY1LCJGNyIsMTE4LCJWS19GNyIsdCx0XSxbMSw3MSwiRjgiLDY2LCJGOCIsMTE5LCJWS19GOCIsdCx0XSxbMSw3MiwiRjkiLDY3LCJGOSIsMTIwLCJWS19GOSIsdCx0XSxbMSw3MywiRjEwIiw2OCwiRjEwIiwxMjEsIlZLX0YxMCIsdCx0XSxbMSw3NCwiRjExIiw2OSwiRjExIiwxMjIsIlZLX0YxMSIsdCx0XSxbMSw3NSwiRjEyIiw3MCwiRjEyIiwxMjMsIlZLX0YxMiIsdCx0XSxbMSw3NiwiUHJpbnRTY3JlZW4iLDAsdCwwLHQsdCx0XSxbMSw3NywiU2Nyb2xsTG9jayIsODQsIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIix0LHRdLFsxLDc4LCJQYXVzZSIsNywiUGF1c2VCcmVhayIsMTksIlZLX1BBVVNFIix0LHRdLFsxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLHQsdF0sWzEsODAsIkhvbWUiLDE0LCJIb21lIiwzNiwiVktfSE9NRSIsdCx0XSxbMSw4MSwiUGFnZVVwIiwxMSwiUGFnZVVwIiwzMywiVktfUFJJT1IiLHQsdF0sWzEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsdCx0XSxbMSw4MywiRW5kIiwxMywiRW5kIiwzNSwiVktfRU5EIix0LHRdLFsxLDg0LCJQYWdlRG93biIsMTIsIlBhZ2VEb3duIiwzNCwiVktfTkVYVCIsdCx0XSxbMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0Iix0XSxbMSw4NiwiQXJyb3dMZWZ0IiwxNSwiTGVmdEFycm93IiwzNywiVktfTEVGVCIsIkxlZnQiLHRdLFsxLDg3LCJBcnJvd0Rvd24iLDE4LCJEb3duQXJyb3ciLDQwLCJWS19ET1dOIiwiRG93biIsdF0sWzEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsdF0sWzEsODksIk51bUxvY2siLDgzLCJOdW1Mb2NrIiwxNDQsIlZLX05VTUxPQ0siLHQsdF0sWzEsOTAsIk51bXBhZERpdmlkZSIsMTEzLCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsdCx0XSxbMSw5MSwiTnVtcGFkTXVsdGlwbHkiLDEwOCwiTnVtUGFkX011bHRpcGx5IiwxMDYsIlZLX01VTFRJUExZIix0LHRdLFsxLDkyLCJOdW1wYWRTdWJ0cmFjdCIsMTExLCJOdW1QYWRfU3VidHJhY3QiLDEwOSwiVktfU1VCVFJBQ1QiLHQsdF0sWzEsOTMsIk51bXBhZEFkZCIsMTA5LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsdCx0XSxbMSw5NCwiTnVtcGFkRW50ZXIiLDMsdCwwLHQsdCx0XSxbMSw5NSwiTnVtcGFkMSIsOTksIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIix0LHRdLFsxLDk2LCJOdW1wYWQyIiwxMDAsIk51bVBhZDIiLDk4LCJWS19OVU1QQUQyIix0LHRdLFsxLDk3LCJOdW1wYWQzIiwxMDEsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIix0LHRdLFsxLDk4LCJOdW1wYWQ0IiwxMDIsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsdCx0XSxbMSw5OSwiTnVtcGFkNSIsMTAzLCJOdW1QYWQ1IiwxMDEsIlZLX05VTVBBRDUiLHQsdF0sWzEsMTAwLCJOdW1wYWQ2IiwxMDQsIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsdCx0XSxbMSwxMDEsIk51bXBhZDciLDEwNSwiTnVtUGFkNyIsMTAzLCJWS19OVU1QQUQ3Iix0LHRdLFsxLDEwMiwiTnVtcGFkOCIsMTA2LCJOdW1QYWQ4IiwxMDQsIlZLX05VTVBBRDgiLHQsdF0sWzEsMTAzLCJOdW1wYWQ5IiwxMDcsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsdCx0XSxbMSwxMDQsIk51bXBhZDAiLDk4LCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsdCx0XSxbMSwxMDUsIk51bXBhZERlY2ltYWwiLDExMiwiTnVtUGFkX0RlY2ltYWwiLDExMCwiVktfREVDSU1BTCIsdCx0XSxbMCwxMDYsIkludGxCYWNrc2xhc2giLDk3LCJPRU1fMTAyIiwyMjYsIlZLX09FTV8xMDIiLHQsdF0sWzEsMTA3LCJDb250ZXh0TWVudSIsNTgsIkNvbnRleHRNZW51Iiw5Myx0LHQsdF0sWzEsMTA4LCJQb3dlciIsMCx0LDAsdCx0LHRdLFsxLDEwOSwiTnVtcGFkRXF1YWwiLDAsdCwwLHQsdCx0XSxbMSwxMTAsIkYxMyIsNzEsIkYxMyIsMTI0LCJWS19GMTMiLHQsdF0sWzEsMTExLCJGMTQiLDcyLCJGMTQiLDEyNSwiVktfRjE0Iix0LHRdLFsxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsdCx0XSxbMSwxMTMsIkYxNiIsNzQsIkYxNiIsMTI3LCJWS19GMTYiLHQsdF0sWzEsMTE0LCJGMTciLDc1LCJGMTciLDEyOCwiVktfRjE3Iix0LHRdLFsxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsdCx0XSxbMSwxMTYsIkYxOSIsNzcsIkYxOSIsMTMwLCJWS19GMTkiLHQsdF0sWzEsMTE3LCJGMjAiLDc4LCJGMjAiLDEzMSwiVktfRjIwIix0LHRdLFsxLDExOCwiRjIxIiw3OSwiRjIxIiwxMzIsIlZLX0YyMSIsdCx0XSxbMSwxMTksIkYyMiIsODAsIkYyMiIsMTMzLCJWS19GMjIiLHQsdF0sWzEsMTIwLCJGMjMiLDgxLCJGMjMiLDEzNCwiVktfRjIzIix0LHRdLFsxLDEyMSwiRjI0Iiw4MiwiRjI0IiwxMzUsIlZLX0YyNCIsdCx0XSxbMSwxMjIsIk9wZW4iLDAsdCwwLHQsdCx0XSxbMSwxMjMsIkhlbHAiLDAsdCwwLHQsdCx0XSxbMSwxMjQsIlNlbGVjdCIsMCx0LDAsdCx0LHRdLFsxLDEyNSwiQWdhaW4iLDAsdCwwLHQsdCx0XSxbMSwxMjYsIlVuZG8iLDAsdCwwLHQsdCx0XSxbMSwxMjcsIkN1dCIsMCx0LDAsdCx0LHRdLFsxLDEyOCwiQ29weSIsMCx0LDAsdCx0LHRdLFsxLDEyOSwiUGFzdGUiLDAsdCwwLHQsdCx0XSxbMSwxMzAsIkZpbmQiLDAsdCwwLHQsdCx0XSxbMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTE3LCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLHQsdF0sWzEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTgsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIix0LHRdLFsxLDEzMywiQXVkaW9Wb2x1bWVEb3duIiwxMTksIkF1ZGlvVm9sdW1lRG93biIsMTc0LCJWS19WT0xVTUVfRE9XTiIsdCx0XSxbMSwxMzQsIk51bXBhZENvbW1hIiwxMTAsIk51bVBhZF9TZXBhcmF0b3IiLDEwOCwiVktfU0VQQVJBVE9SIix0LHRdLFswLDEzNSwiSW50bFJvIiwxMTUsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsdCx0XSxbMSwxMzYsIkthbmFNb2RlIiwwLHQsMCx0LHQsdF0sWzAsMTM3LCJJbnRsWWVuIiwwLHQsMCx0LHQsdF0sWzEsMTM4LCJDb252ZXJ0IiwwLHQsMCx0LHQsdF0sWzEsMTM5LCJOb25Db252ZXJ0IiwwLHQsMCx0LHQsdF0sWzEsMTQwLCJMYW5nMSIsMCx0LDAsdCx0LHRdLFsxLDE0MSwiTGFuZzIiLDAsdCwwLHQsdCx0XSxbMSwxNDIsIkxhbmczIiwwLHQsMCx0LHQsdF0sWzEsMTQzLCJMYW5nNCIsMCx0LDAsdCx0LHRdLFsxLDE0NCwiTGFuZzUiLDAsdCwwLHQsdCx0XSxbMSwxNDUsIkFib3J0IiwwLHQsMCx0LHQsdF0sWzEsMTQ2LCJQcm9wcyIsMCx0LDAsdCx0LHRdLFsxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLHQsMCx0LHQsdF0sWzEsMTQ4LCJOdW1wYWRQYXJlblJpZ2h0IiwwLHQsMCx0LHQsdF0sWzEsMTQ5LCJOdW1wYWRCYWNrc3BhY2UiLDAsdCwwLHQsdCx0XSxbMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLHQsMCx0LHQsdF0sWzEsMTUxLCJOdW1wYWRNZW1vcnlSZWNhbGwiLDAsdCwwLHQsdCx0XSxbMSwxNTIsIk51bXBhZE1lbW9yeUNsZWFyIiwwLHQsMCx0LHQsdF0sWzEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsdCwwLHQsdCx0XSxbMSwxNTQsIk51bXBhZE1lbW9yeVN1YnRyYWN0IiwwLHQsMCx0LHQsdF0sWzEsMTU1LCJOdW1wYWRDbGVhciIsMTMxLCJDbGVhciIsMTIsIlZLX0NMRUFSIix0LHRdLFsxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCx0LDAsdCx0LHRdLFsxLDAsdCw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsdCx0XSxbMSwwLHQsNCwiU2hpZnQiLDE2LCJWS19TSElGVCIsdCx0XSxbMSwwLHQsNiwiQWx0IiwxOCwiVktfTUVOVSIsdCx0XSxbMSwwLHQsNTcsIk1ldGEiLDkxLCJWS19DT01NQU5EIix0LHRdLFsxLDE1NywiQ29udHJvbExlZnQiLDUsdCwwLCJWS19MQ09OVFJPTCIsdCx0XSxbMSwxNTgsIlNoaWZ0TGVmdCIsNCx0LDAsIlZLX0xTSElGVCIsdCx0XSxbMSwxNTksIkFsdExlZnQiLDYsdCwwLCJWS19MTUVOVSIsdCx0XSxbMSwxNjAsIk1ldGFMZWZ0Iiw1Nyx0LDAsIlZLX0xXSU4iLHQsdF0sWzEsMTYxLCJDb250cm9sUmlnaHQiLDUsdCwwLCJWS19SQ09OVFJPTCIsdCx0XSxbMSwxNjIsIlNoaWZ0UmlnaHQiLDQsdCwwLCJWS19SU0hJRlQiLHQsdF0sWzEsMTYzLCJBbHRSaWdodCIsNix0LDAsIlZLX1JNRU5VIix0LHRdLFsxLDE2NCwiTWV0YVJpZ2h0Iiw1Nyx0LDAsIlZLX1JXSU4iLHQsdF0sWzEsMTY1LCJCcmlnaHRuZXNzVXAiLDAsdCwwLHQsdCx0XSxbMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLHQsMCx0LHQsdF0sWzEsMTY3LCJNZWRpYVBsYXkiLDAsdCwwLHQsdCx0XSxbMSwxNjgsIk1lZGlhUmVjb3JkIiwwLHQsMCx0LHQsdF0sWzEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLHQsMCx0LHQsdF0sWzEsMTcwLCJNZWRpYVJld2luZCIsMCx0LDAsdCx0LHRdLFsxLDE3MSwiTWVkaWFUcmFja05leHQiLDEyNCwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsdCx0XSxbMSwxNzIsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTI1LCJNZWRpYVRyYWNrUHJldmlvdXMiLDE3NywiVktfTUVESUFfUFJFVl9UUkFDSyIsdCx0XSxbMSwxNzMsIk1lZGlhU3RvcCIsMTI2LCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsdCx0XSxbMSwxNzQsIkVqZWN0IiwwLHQsMCx0LHQsdF0sWzEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTI3LCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIix0LHRdLFsxLDE3NiwiTWVkaWFTZWxlY3QiLDEyOCwiTGF1bmNoTWVkaWFQbGF5ZXIiLDE4MSwiVktfTUVESUFfTEFVTkNIX01FRElBX1NFTEVDVCIsdCx0XSxbMSwxNzcsIkxhdW5jaE1haWwiLDEyOSwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsdCx0XSxbMSwxNzgsIkxhdW5jaEFwcDIiLDEzMCwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsdCx0XSxbMSwxNzksIkxhdW5jaEFwcDEiLDAsdCwwLCJWS19NRURJQV9MQVVOQ0hfQVBQMSIsdCx0XSxbMSwxODAsIlNlbGVjdFRhc2siLDAsdCwwLHQsdCx0XSxbMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLHQsMCx0LHQsdF0sWzEsMTgyLCJCcm93c2VyU2VhcmNoIiwxMjAsIkJyb3dzZXJTZWFyY2giLDE3MCwiVktfQlJPV1NFUl9TRUFSQ0giLHQsdF0sWzEsMTgzLCJCcm93c2VySG9tZSIsMTIxLCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLHQsdF0sWzEsMTg0LCJCcm93c2VyQmFjayIsMTIyLCJCcm93c2VyQmFjayIsMTY2LCJWS19CUk9XU0VSX0JBQ0siLHQsdF0sWzEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTIzLCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLHQsdF0sWzEsMTg2LCJCcm93c2VyU3RvcCIsMCx0LDAsIlZLX0JST1dTRVJfU1RPUCIsdCx0XSxbMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLHQsMCwiVktfQlJPV1NFUl9SRUZSRVNIIix0LHRdLFsxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCx0LDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIix0LHRdLFsxLDE4OSwiWm9vbVRvZ2dsZSIsMCx0LDAsdCx0LHRdLFsxLDE5MCwiTWFpbFJlcGx5IiwwLHQsMCx0LHQsdF0sWzEsMTkxLCJNYWlsRm9yd2FyZCIsMCx0LDAsdCx0LHRdLFsxLDE5MiwiTWFpbFNlbmQiLDAsdCwwLHQsdCx0XSxbMSwwLHQsMTE0LCJLZXlJbkNvbXBvc2l0aW9uIiwyMjksdCx0LHRdLFsxLDAsdCwxMTYsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsdCx0XSxbMSwwLHQsOTYsIk9FTV84IiwyMjMsIlZLX09FTV84Iix0LHRdLFsxLDAsdCwwLHQsMCwiVktfS0FOQSIsdCx0XSxbMSwwLHQsMCx0LDAsIlZLX0hBTkdVTCIsdCx0XSxbMSwwLHQsMCx0LDAsIlZLX0pVTkpBIix0LHRdLFsxLDAsdCwwLHQsMCwiVktfRklOQUwiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19IQU5KQSIsdCx0XSxbMSwwLHQsMCx0LDAsIlZLX0tBTkpJIix0LHRdLFsxLDAsdCwwLHQsMCwiVktfQ09OVkVSVCIsdCx0XSxbMSwwLHQsMCx0LDAsIlZLX05PTkNPTlZFUlQiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19BQ0NFUFQiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19NT0RFQ0hBTkdFIix0LHRdLFsxLDAsdCwwLHQsMCwiVktfU0VMRUNUIix0LHRdLFsxLDAsdCwwLHQsMCwiVktfUFJJTlQiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19FWEVDVVRFIix0LHRdLFsxLDAsdCwwLHQsMCwiVktfU05BUFNIT1QiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19IRUxQIix0LHRdLFsxLDAsdCwwLHQsMCwiVktfQVBQUyIsdCx0XSxbMSwwLHQsMCx0LDAsIlZLX1BST0NFU1NLRVkiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19QQUNLRVQiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19EQkVfU0JDU0NIQVIiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19EQkVfREJDU0NIQVIiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19BVFROIix0LHRdLFsxLDAsdCwwLHQsMCwiVktfQ1JTRUwiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19FWFNFTCIsdCx0XSxbMSwwLHQsMCx0LDAsIlZLX0VSRU9GIix0LHRdLFsxLDAsdCwwLHQsMCwiVktfUExBWSIsdCx0XSxbMSwwLHQsMCx0LDAsIlZLX1pPT00iLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19OT05BTUUiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19QQTEiLHQsdF0sWzEsMCx0LDAsdCwwLCJWS19PRU1fQ0xFQVIiLHQsdF1dLG49W10scj1bXTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdFtzLGEsbyxsLGMsaCx1LGYsbV09aTtpZihyW2FdfHwoclthXT0hMCxQaFtvXT1hLEloW28udG9Mb3dlckNhc2UoKV09YSksIW5bbF0pe2lmKG5bbF09ITAsIWMpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHtsfSBhcm91bmQgc2NhbiBjb2RlICR7b31gKTtYbi5kZWZpbmUobCxjKSxIci5kZWZpbmUobCxmfHxjKSxHci5kZWZpbmUobCxtfHxmfHxjKX1oJiYoTGhbaF09bCl9fSkoKTt2YXIgTHM7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobyl7cmV0dXJuIFhuLmtleUNvZGVUb1N0cihvKX10LnRvU3RyaW5nPWU7ZnVuY3Rpb24gbihvKXtyZXR1cm4gWG4uc3RyVG9LZXlDb2RlKG8pfXQuZnJvbVN0cmluZz1uO2Z1bmN0aW9uIHIobyl7cmV0dXJuIEhyLmtleUNvZGVUb1N0cihvKX10LnRvVXNlclNldHRpbmdzVVM9cjtmdW5jdGlvbiBpKG8pe3JldHVybiBHci5rZXlDb2RlVG9TdHIobyl9dC50b1VzZXJTZXR0aW5nc0dlbmVyYWw9aTtmdW5jdGlvbiBzKG8pe3JldHVybiBIci5zdHJUb0tleUNvZGUobyl8fEdyLnN0clRvS2V5Q29kZShvKX10LmZyb21Vc2VyU2V0dGluZ3M9cztmdW5jdGlvbiBhKG8pe2lmKG8+PTk4JiZvPD0xMTMpcmV0dXJuIG51bGw7c3dpdGNoKG8pe2Nhc2UgMTY6cmV0dXJuIlVwIjtjYXNlIDE4OnJldHVybiJEb3duIjtjYXNlIDE1OnJldHVybiJMZWZ0IjtjYXNlIDE3OnJldHVybiJSaWdodCJ9cmV0dXJuIFhuLmtleUNvZGVUb1N0cihvKX10LnRvRWxlY3Ryb25BY2NlbGVyYXRvcj1hfSkoTHN8fChMcz17fSkpO2Z1bmN0aW9uIFRoKHQsZSl7Y29uc3Qgbj0oZSY2NTUzNSk8PDE2Pj4+MDtyZXR1cm4odHxuKT4+PjB9Y2xhc3MgemUgZXh0ZW5kcyB2ZXtjb25zdHJ1Y3RvcihlLG4scixpKXtzdXBlcihlLG4scixpKSx0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj1lLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49bix0aGlzLnBvc2l0aW9uTGluZU51bWJlcj1yLHRoaXMucG9zaXRpb25Db2x1bW49aX10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbisiIC0+ICIrdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIrIiwiK3RoaXMucG9zaXRpb25Db2x1bW4rIl0ifWVxdWFsc1NlbGVjdGlvbihlKXtyZXR1cm4gemUuc2VsZWN0aW9uc0VxdWFsKHRoaXMsZSl9c3RhdGljIHNlbGVjdGlvbnNFcXVhbChlLG4pe3JldHVybiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PW4uc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiZlLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09bi5zZWxlY3Rpb25TdGFydENvbHVtbiYmZS5wb3NpdGlvbkxpbmVOdW1iZXI9PT1uLnBvc2l0aW9uTGluZU51bWJlciYmZS5wb3NpdGlvbkNvbHVtbj09PW4ucG9zaXRpb25Db2x1bW59Z2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dGhpcy5zdGFydExpbmVOdW1iZXImJnRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10aGlzLnN0YXJ0Q29sdW1uPzA6MX1zZXRFbmRQb3NpdGlvbihlLG4pe3JldHVybiB0aGlzLmdldERpcmVjdGlvbigpPT09MD9uZXcgemUodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLG4pOm5ldyB6ZShlLG4sdGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbil9Z2V0UG9zaXRpb24oKXtyZXR1cm4gbmV3IFllKHRoaXMucG9zaXRpb25MaW5lTnVtYmVyLHRoaXMucG9zaXRpb25Db2x1bW4pfWdldFNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIG5ldyBZZSh0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKX1zZXRTdGFydFBvc2l0aW9uKGUsbil7cmV0dXJuIHRoaXMuZ2V0RGlyZWN0aW9uKCk9PT0wP25ldyB6ZShlLG4sdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKTpuZXcgemUodGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uLGUsbil9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSxuPWUpe3JldHVybiBuZXcgemUoZS5saW5lTnVtYmVyLGUuY29sdW1uLG4ubGluZU51bWJlcixuLmNvbHVtbil9c3RhdGljIGZyb21SYW5nZShlLG4pe3JldHVybiBuPT09MD9uZXcgemUoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pOm5ldyB6ZShlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGxpZnRTZWxlY3Rpb24oZSl7cmV0dXJuIG5ldyB6ZShlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcixlLnNlbGVjdGlvblN0YXJ0Q29sdW1uLGUucG9zaXRpb25MaW5lTnVtYmVyLGUucG9zaXRpb25Db2x1bW4pfXN0YXRpYyBzZWxlY3Rpb25zQXJyRXF1YWwoZSxuKXtpZihlJiYhbnx8IWUmJm4pcmV0dXJuITE7aWYoIWUmJiFuKXJldHVybiEwO2lmKGUubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKWlmKCF0aGlzLnNlbGVjdGlvbnNFcXVhbChlW3JdLG5bcl0pKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBpc0lTZWxlY3Rpb24oZSl7cmV0dXJuIGUmJnR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT0ibnVtYmVyIiYmdHlwZW9mIGUucG9zaXRpb25MaW5lTnVtYmVyPT0ibnVtYmVyIiYmdHlwZW9mIGUucG9zaXRpb25Db2x1bW49PSJudW1iZXIifXN0YXRpYyBjcmVhdGVXaXRoRGlyZWN0aW9uKGUsbixyLGkscyl7cmV0dXJuIHM9PT0wP25ldyB6ZShlLG4scixpKTpuZXcgemUocixpLGUsbil9fWNvbnN0IFBzPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gZCh0LGUpe2lmKENjKGUpKXtjb25zdCBuPVBzW2VdO2lmKG49PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGAke3R9IHJlZmVyZW5jZXMgYW4gdW5rbm93biBjb2RpY29uOiAke2V9YCk7ZT1ufXJldHVybiBQc1t0XT1lLHtpZDp0fX1jb25zdCBXaD17YWRkOmQoImFkZCIsNmU0KSxwbHVzOmQoInBsdXMiLDZlNCksZ2lzdE5ldzpkKCJnaXN0LW5ldyIsNmU0KSxyZXBvQ3JlYXRlOmQoInJlcG8tY3JlYXRlIiw2ZTQpLGxpZ2h0YnVsYjpkKCJsaWdodGJ1bGIiLDYwMDAxKSxsaWdodEJ1bGI6ZCgibGlnaHQtYnVsYiIsNjAwMDEpLHJlcG86ZCgicmVwbyIsNjAwMDIpLHJlcG9EZWxldGU6ZCgicmVwby1kZWxldGUiLDYwMDAyKSxnaXN0Rm9yazpkKCJnaXN0LWZvcmsiLDYwMDAzKSxyZXBvRm9ya2VkOmQoInJlcG8tZm9ya2VkIiw2MDAwMyksZ2l0UHVsbFJlcXVlc3Q6ZCgiZ2l0LXB1bGwtcmVxdWVzdCIsNjAwMDQpLGdpdFB1bGxSZXF1ZXN0QWJhbmRvbmVkOmQoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIiw2MDAwNCkscmVjb3JkS2V5czpkKCJyZWNvcmQta2V5cyIsNjAwMDUpLGtleWJvYXJkOmQoImtleWJvYXJkIiw2MDAwNSksdGFnOmQoInRhZyIsNjAwMDYpLGdpdFB1bGxSZXF1ZXN0TGFiZWw6ZCgiZ2l0LXB1bGwtcmVxdWVzdC1sYWJlbCIsNjAwMDYpLHRhZ0FkZDpkKCJ0YWctYWRkIiw2MDAwNiksdGFnUmVtb3ZlOmQoInRhZy1yZW1vdmUiLDYwMDA2KSxwZXJzb246ZCgicGVyc29uIiw2MDAwNykscGVyc29uRm9sbG93OmQoInBlcnNvbi1mb2xsb3ciLDYwMDA3KSxwZXJzb25PdXRsaW5lOmQoInBlcnNvbi1vdXRsaW5lIiw2MDAwNykscGVyc29uRmlsbGVkOmQoInBlcnNvbi1maWxsZWQiLDYwMDA3KSxnaXRCcmFuY2g6ZCgiZ2l0LWJyYW5jaCIsNjAwMDgpLGdpdEJyYW5jaENyZWF0ZTpkKCJnaXQtYnJhbmNoLWNyZWF0ZSIsNjAwMDgpLGdpdEJyYW5jaERlbGV0ZTpkKCJnaXQtYnJhbmNoLWRlbGV0ZSIsNjAwMDgpLHNvdXJjZUNvbnRyb2w6ZCgic291cmNlLWNvbnRyb2wiLDYwMDA4KSxtaXJyb3I6ZCgibWlycm9yIiw2MDAwOSksbWlycm9yUHVibGljOmQoIm1pcnJvci1wdWJsaWMiLDYwMDA5KSxzdGFyOmQoInN0YXIiLDYwMDEwKSxzdGFyQWRkOmQoInN0YXItYWRkIiw2MDAxMCksc3RhckRlbGV0ZTpkKCJzdGFyLWRlbGV0ZSIsNjAwMTApLHN0YXJFbXB0eTpkKCJzdGFyLWVtcHR5Iiw2MDAxMCksY29tbWVudDpkKCJjb21tZW50Iiw2MDAxMSksY29tbWVudEFkZDpkKCJjb21tZW50LWFkZCIsNjAwMTEpLGFsZXJ0OmQoImFsZXJ0Iiw2MDAxMiksd2FybmluZzpkKCJ3YXJuaW5nIiw2MDAxMiksc2VhcmNoOmQoInNlYXJjaCIsNjAwMTMpLHNlYXJjaFNhdmU6ZCgic2VhcmNoLXNhdmUiLDYwMDEzKSxsb2dPdXQ6ZCgibG9nLW91dCIsNjAwMTQpLHNpZ25PdXQ6ZCgic2lnbi1vdXQiLDYwMDE0KSxsb2dJbjpkKCJsb2ctaW4iLDYwMDE1KSxzaWduSW46ZCgic2lnbi1pbiIsNjAwMTUpLGV5ZTpkKCJleWUiLDYwMDE2KSxleWVVbndhdGNoOmQoImV5ZS11bndhdGNoIiw2MDAxNiksZXllV2F0Y2g6ZCgiZXllLXdhdGNoIiw2MDAxNiksY2lyY2xlRmlsbGVkOmQoImNpcmNsZS1maWxsZWQiLDYwMDE3KSxwcmltaXRpdmVEb3Q6ZCgicHJpbWl0aXZlLWRvdCIsNjAwMTcpLGNsb3NlRGlydHk6ZCgiY2xvc2UtZGlydHkiLDYwMDE3KSxkZWJ1Z0JyZWFrcG9pbnQ6ZCgiZGVidWctYnJlYWtwb2ludCIsNjAwMTcpLGRlYnVnQnJlYWtwb2ludERpc2FibGVkOmQoImRlYnVnLWJyZWFrcG9pbnQtZGlzYWJsZWQiLDYwMDE3KSxkZWJ1Z0hpbnQ6ZCgiZGVidWctaGludCIsNjAwMTcpLHRlcm1pbmFsRGVjb3JhdGlvblN1Y2Nlc3M6ZCgidGVybWluYWwtZGVjb3JhdGlvbi1zdWNjZXNzIiw2MDAxNykscHJpbWl0aXZlU3F1YXJlOmQoInByaW1pdGl2ZS1zcXVhcmUiLDYwMDE4KSxlZGl0OmQoImVkaXQiLDYwMDE5KSxwZW5jaWw6ZCgicGVuY2lsIiw2MDAxOSksaW5mbzpkKCJpbmZvIiw2MDAyMCksaXNzdWVPcGVuZWQ6ZCgiaXNzdWUtb3BlbmVkIiw2MDAyMCksZ2lzdFByaXZhdGU6ZCgiZ2lzdC1wcml2YXRlIiw2MDAyMSksZ2l0Rm9ya1ByaXZhdGU6ZCgiZ2l0LWZvcmstcHJpdmF0ZSIsNjAwMjEpLGxvY2s6ZCgibG9jayIsNjAwMjEpLG1pcnJvclByaXZhdGU6ZCgibWlycm9yLXByaXZhdGUiLDYwMDIxKSxjbG9zZTpkKCJjbG9zZSIsNjAwMjIpLHJlbW92ZUNsb3NlOmQoInJlbW92ZS1jbG9zZSIsNjAwMjIpLHg6ZCgieCIsNjAwMjIpLHJlcG9TeW5jOmQoInJlcG8tc3luYyIsNjAwMjMpLHN5bmM6ZCgic3luYyIsNjAwMjMpLGNsb25lOmQoImNsb25lIiw2MDAyNCksZGVza3RvcERvd25sb2FkOmQoImRlc2t0b3AtZG93bmxvYWQiLDYwMDI0KSxiZWFrZXI6ZCgiYmVha2VyIiw2MDAyNSksbWljcm9zY29wZTpkKCJtaWNyb3Njb3BlIiw2MDAyNSksdm06ZCgidm0iLDYwMDI2KSxkZXZpY2VEZXNrdG9wOmQoImRldmljZS1kZXNrdG9wIiw2MDAyNiksZmlsZTpkKCJmaWxlIiw2MDAyNyksZmlsZVRleHQ6ZCgiZmlsZS10ZXh0Iiw2MDAyNyksbW9yZTpkKCJtb3JlIiw2MDAyOCksZWxsaXBzaXM6ZCgiZWxsaXBzaXMiLDYwMDI4KSxrZWJhYkhvcml6b250YWw6ZCgia2ViYWItaG9yaXpvbnRhbCIsNjAwMjgpLG1haWxSZXBseTpkKCJtYWlsLXJlcGx5Iiw2MDAyOSkscmVwbHk6ZCgicmVwbHkiLDYwMDI5KSxvcmdhbml6YXRpb246ZCgib3JnYW5pemF0aW9uIiw2MDAzMCksb3JnYW5pemF0aW9uRmlsbGVkOmQoIm9yZ2FuaXphdGlvbi1maWxsZWQiLDYwMDMwKSxvcmdhbml6YXRpb25PdXRsaW5lOmQoIm9yZ2FuaXphdGlvbi1vdXRsaW5lIiw2MDAzMCksbmV3RmlsZTpkKCJuZXctZmlsZSIsNjAwMzEpLGZpbGVBZGQ6ZCgiZmlsZS1hZGQiLDYwMDMxKSxuZXdGb2xkZXI6ZCgibmV3LWZvbGRlciIsNjAwMzIpLGZpbGVEaXJlY3RvcnlDcmVhdGU6ZCgiZmlsZS1kaXJlY3RvcnktY3JlYXRlIiw2MDAzMiksdHJhc2g6ZCgidHJhc2giLDYwMDMzKSx0cmFzaGNhbjpkKCJ0cmFzaGNhbiIsNjAwMzMpLGhpc3Rvcnk6ZCgiaGlzdG9yeSIsNjAwMzQpLGNsb2NrOmQoImNsb2NrIiw2MDAzNCksZm9sZGVyOmQoImZvbGRlciIsNjAwMzUpLGZpbGVEaXJlY3Rvcnk6ZCgiZmlsZS1kaXJlY3RvcnkiLDYwMDM1KSxzeW1ib2xGb2xkZXI6ZCgic3ltYm9sLWZvbGRlciIsNjAwMzUpLGxvZ29HaXRodWI6ZCgibG9nby1naXRodWIiLDYwMDM2KSxtYXJrR2l0aHViOmQoIm1hcmstZ2l0aHViIiw2MDAzNiksZ2l0aHViOmQoImdpdGh1YiIsNjAwMzYpLHRlcm1pbmFsOmQoInRlcm1pbmFsIiw2MDAzNyksY29uc29sZTpkKCJjb25zb2xlIiw2MDAzNykscmVwbDpkKCJyZXBsIiw2MDAzNyksemFwOmQoInphcCIsNjAwMzgpLHN5bWJvbEV2ZW50OmQoInN5bWJvbC1ldmVudCIsNjAwMzgpLGVycm9yOmQoImVycm9yIiw2MDAzOSksc3RvcDpkKCJzdG9wIiw2MDAzOSksdmFyaWFibGU6ZCgidmFyaWFibGUiLDYwMDQwKSxzeW1ib2xWYXJpYWJsZTpkKCJzeW1ib2wtdmFyaWFibGUiLDYwMDQwKSxhcnJheTpkKCJhcnJheSIsNjAwNDIpLHN5bWJvbEFycmF5OmQoInN5bWJvbC1hcnJheSIsNjAwNDIpLHN5bWJvbE1vZHVsZTpkKCJzeW1ib2wtbW9kdWxlIiw2MDA0Myksc3ltYm9sUGFja2FnZTpkKCJzeW1ib2wtcGFja2FnZSIsNjAwNDMpLHN5bWJvbE5hbWVzcGFjZTpkKCJzeW1ib2wtbmFtZXNwYWNlIiw2MDA0Myksc3ltYm9sT2JqZWN0OmQoInN5bWJvbC1vYmplY3QiLDYwMDQzKSxzeW1ib2xNZXRob2Q6ZCgic3ltYm9sLW1ldGhvZCIsNjAwNDQpLHN5bWJvbEZ1bmN0aW9uOmQoInN5bWJvbC1mdW5jdGlvbiIsNjAwNDQpLHN5bWJvbENvbnN0cnVjdG9yOmQoInN5bWJvbC1jb25zdHJ1Y3RvciIsNjAwNDQpLHN5bWJvbEJvb2xlYW46ZCgic3ltYm9sLWJvb2xlYW4iLDYwMDQ3KSxzeW1ib2xOdWxsOmQoInN5bWJvbC1udWxsIiw2MDA0Nyksc3ltYm9sTnVtZXJpYzpkKCJzeW1ib2wtbnVtZXJpYyIsNjAwNDgpLHN5bWJvbE51bWJlcjpkKCJzeW1ib2wtbnVtYmVyIiw2MDA0OCksc3ltYm9sU3RydWN0dXJlOmQoInN5bWJvbC1zdHJ1Y3R1cmUiLDYwMDQ5KSxzeW1ib2xTdHJ1Y3Q6ZCgic3ltYm9sLXN0cnVjdCIsNjAwNDkpLHN5bWJvbFBhcmFtZXRlcjpkKCJzeW1ib2wtcGFyYW1ldGVyIiw2MDA1MCksc3ltYm9sVHlwZVBhcmFtZXRlcjpkKCJzeW1ib2wtdHlwZS1wYXJhbWV0ZXIiLDYwMDUwKSxzeW1ib2xLZXk6ZCgic3ltYm9sLWtleSIsNjAwNTEpLHN5bWJvbFRleHQ6ZCgic3ltYm9sLXRleHQiLDYwMDUxKSxzeW1ib2xSZWZlcmVuY2U6ZCgic3ltYm9sLXJlZmVyZW5jZSIsNjAwNTIpLGdvVG9GaWxlOmQoImdvLXRvLWZpbGUiLDYwMDUyKSxzeW1ib2xFbnVtOmQoInN5bWJvbC1lbnVtIiw2MDA1Myksc3ltYm9sVmFsdWU6ZCgic3ltYm9sLXZhbHVlIiw2MDA1Myksc3ltYm9sUnVsZXI6ZCgic3ltYm9sLXJ1bGVyIiw2MDA1NCksc3ltYm9sVW5pdDpkKCJzeW1ib2wtdW5pdCIsNjAwNTQpLGFjdGl2YXRlQnJlYWtwb2ludHM6ZCgiYWN0aXZhdGUtYnJlYWtwb2ludHMiLDYwMDU1KSxhcmNoaXZlOmQoImFyY2hpdmUiLDYwMDU2KSxhcnJvd0JvdGg6ZCgiYXJyb3ctYm90aCIsNjAwNTcpLGFycm93RG93bjpkKCJhcnJvdy1kb3duIiw2MDA1OCksYXJyb3dMZWZ0OmQoImFycm93LWxlZnQiLDYwMDU5KSxhcnJvd1JpZ2h0OmQoImFycm93LXJpZ2h0Iiw2MDA2MCksYXJyb3dTbWFsbERvd246ZCgiYXJyb3ctc21hbGwtZG93biIsNjAwNjEpLGFycm93U21hbGxMZWZ0OmQoImFycm93LXNtYWxsLWxlZnQiLDYwMDYyKSxhcnJvd1NtYWxsUmlnaHQ6ZCgiYXJyb3ctc21hbGwtcmlnaHQiLDYwMDYzKSxhcnJvd1NtYWxsVXA6ZCgiYXJyb3ctc21hbGwtdXAiLDYwMDY0KSxhcnJvd1VwOmQoImFycm93LXVwIiw2MDA2NSksYmVsbDpkKCJiZWxsIiw2MDA2NiksYm9sZDpkKCJib2xkIiw2MDA2NyksYm9vazpkKCJib29rIiw2MDA2OCksYm9va21hcms6ZCgiYm9va21hcmsiLDYwMDY5KSxkZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbFVudmVyaWZpZWQ6ZCgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC11bnZlcmlmaWVkIiw2MDA3MCksZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWw6ZCgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCIsNjAwNzEpLGRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsRGlzYWJsZWQ6ZCgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC1kaXNhYmxlZCIsNjAwNzEpLGRlYnVnQnJlYWtwb2ludERhdGFVbnZlcmlmaWVkOmQoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS11bnZlcmlmaWVkIiw2MDA3MiksZGVidWdCcmVha3BvaW50RGF0YTpkKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEiLDYwMDczKSxkZWJ1Z0JyZWFrcG9pbnREYXRhRGlzYWJsZWQ6ZCgiZGVidWctYnJlYWtwb2ludC1kYXRhLWRpc2FibGVkIiw2MDA3MyksZGVidWdCcmVha3BvaW50TG9nVW52ZXJpZmllZDpkKCJkZWJ1Zy1icmVha3BvaW50LWxvZy11bnZlcmlmaWVkIiw2MDA3NCksZGVidWdCcmVha3BvaW50TG9nOmQoImRlYnVnLWJyZWFrcG9pbnQtbG9nIiw2MDA3NSksZGVidWdCcmVha3BvaW50TG9nRGlzYWJsZWQ6ZCgiZGVidWctYnJlYWtwb2ludC1sb2ctZGlzYWJsZWQiLDYwMDc1KSxicmllZmNhc2U6ZCgiYnJpZWZjYXNlIiw2MDA3NiksYnJvYWRjYXN0OmQoImJyb2FkY2FzdCIsNjAwNzcpLGJyb3dzZXI6ZCgiYnJvd3NlciIsNjAwNzgpLGJ1ZzpkKCJidWciLDYwMDc5KSxjYWxlbmRhcjpkKCJjYWxlbmRhciIsNjAwODApLGNhc2VTZW5zaXRpdmU6ZCgiY2FzZS1zZW5zaXRpdmUiLDYwMDgxKSxjaGVjazpkKCJjaGVjayIsNjAwODIpLGNoZWNrbGlzdDpkKCJjaGVja2xpc3QiLDYwMDgzKSxjaGV2cm9uRG93bjpkKCJjaGV2cm9uLWRvd24iLDYwMDg0KSxjaGV2cm9uTGVmdDpkKCJjaGV2cm9uLWxlZnQiLDYwMDg1KSxjaGV2cm9uUmlnaHQ6ZCgiY2hldnJvbi1yaWdodCIsNjAwODYpLGNoZXZyb25VcDpkKCJjaGV2cm9uLXVwIiw2MDA4NyksY2hyb21lQ2xvc2U6ZCgiY2hyb21lLWNsb3NlIiw2MDA4OCksY2hyb21lTWF4aW1pemU6ZCgiY2hyb21lLW1heGltaXplIiw2MDA4OSksY2hyb21lTWluaW1pemU6ZCgiY2hyb21lLW1pbmltaXplIiw2MDA5MCksY2hyb21lUmVzdG9yZTpkKCJjaHJvbWUtcmVzdG9yZSIsNjAwOTEpLGNpcmNsZU91dGxpbmU6ZCgiY2lyY2xlLW91dGxpbmUiLDYwMDkyKSxjaXJjbGU6ZCgiY2lyY2xlIiw2MDA5MiksZGVidWdCcmVha3BvaW50VW52ZXJpZmllZDpkKCJkZWJ1Zy1icmVha3BvaW50LXVudmVyaWZpZWQiLDYwMDkyKSx0ZXJtaW5hbERlY29yYXRpb25JbmNvbXBsZXRlOmQoInRlcm1pbmFsLWRlY29yYXRpb24taW5jb21wbGV0ZSIsNjAwOTIpLGNpcmNsZVNsYXNoOmQoImNpcmNsZS1zbGFzaCIsNjAwOTMpLGNpcmN1aXRCb2FyZDpkKCJjaXJjdWl0LWJvYXJkIiw2MDA5NCksY2xlYXJBbGw6ZCgiY2xlYXItYWxsIiw2MDA5NSksY2xpcHB5OmQoImNsaXBweSIsNjAwOTYpLGNsb3NlQWxsOmQoImNsb3NlLWFsbCIsNjAwOTcpLGNsb3VkRG93bmxvYWQ6ZCgiY2xvdWQtZG93bmxvYWQiLDYwMDk4KSxjbG91ZFVwbG9hZDpkKCJjbG91ZC11cGxvYWQiLDYwMDk5KSxjb2RlOmQoImNvZGUiLDYwMTAwKSxjb2xsYXBzZUFsbDpkKCJjb2xsYXBzZS1hbGwiLDYwMTAxKSxjb2xvck1vZGU6ZCgiY29sb3ItbW9kZSIsNjAxMDIpLGNvbW1lbnREaXNjdXNzaW9uOmQoImNvbW1lbnQtZGlzY3Vzc2lvbiIsNjAxMDMpLGNyZWRpdENhcmQ6ZCgiY3JlZGl0LWNhcmQiLDYwMTA1KSxkYXNoOmQoImRhc2giLDYwMTA4KSxkYXNoYm9hcmQ6ZCgiZGFzaGJvYXJkIiw2MDEwOSksZGF0YWJhc2U6ZCgiZGF0YWJhc2UiLDYwMTEwKSxkZWJ1Z0NvbnRpbnVlOmQoImRlYnVnLWNvbnRpbnVlIiw2MDExMSksZGVidWdEaXNjb25uZWN0OmQoImRlYnVnLWRpc2Nvbm5lY3QiLDYwMTEyKSxkZWJ1Z1BhdXNlOmQoImRlYnVnLXBhdXNlIiw2MDExMyksZGVidWdSZXN0YXJ0OmQoImRlYnVnLXJlc3RhcnQiLDYwMTE0KSxkZWJ1Z1N0YXJ0OmQoImRlYnVnLXN0YXJ0Iiw2MDExNSksZGVidWdTdGVwSW50bzpkKCJkZWJ1Zy1zdGVwLWludG8iLDYwMTE2KSxkZWJ1Z1N0ZXBPdXQ6ZCgiZGVidWctc3RlcC1vdXQiLDYwMTE3KSxkZWJ1Z1N0ZXBPdmVyOmQoImRlYnVnLXN0ZXAtb3ZlciIsNjAxMTgpLGRlYnVnU3RvcDpkKCJkZWJ1Zy1zdG9wIiw2MDExOSksZGVidWc6ZCgiZGVidWciLDYwMTIwKSxkZXZpY2VDYW1lcmFWaWRlbzpkKCJkZXZpY2UtY2FtZXJhLXZpZGVvIiw2MDEyMSksZGV2aWNlQ2FtZXJhOmQoImRldmljZS1jYW1lcmEiLDYwMTIyKSxkZXZpY2VNb2JpbGU6ZCgiZGV2aWNlLW1vYmlsZSIsNjAxMjMpLGRpZmZBZGRlZDpkKCJkaWZmLWFkZGVkIiw2MDEyNCksZGlmZklnbm9yZWQ6ZCgiZGlmZi1pZ25vcmVkIiw2MDEyNSksZGlmZk1vZGlmaWVkOmQoImRpZmYtbW9kaWZpZWQiLDYwMTI2KSxkaWZmUmVtb3ZlZDpkKCJkaWZmLXJlbW92ZWQiLDYwMTI3KSxkaWZmUmVuYW1lZDpkKCJkaWZmLXJlbmFtZWQiLDYwMTI4KSxkaWZmOmQoImRpZmYiLDYwMTI5KSxkaWZmU2lkZWJ5c2lkZTpkKCJkaWZmLXNpZGVieXNpZGUiLDYwMTI5KSxkaXNjYXJkOmQoImRpc2NhcmQiLDYwMTMwKSxlZGl0b3JMYXlvdXQ6ZCgiZWRpdG9yLWxheW91dCIsNjAxMzEpLGVtcHR5V2luZG93OmQoImVtcHR5LXdpbmRvdyIsNjAxMzIpLGV4Y2x1ZGU6ZCgiZXhjbHVkZSIsNjAxMzMpLGV4dGVuc2lvbnM6ZCgiZXh0ZW5zaW9ucyIsNjAxMzQpLGV5ZUNsb3NlZDpkKCJleWUtY2xvc2VkIiw2MDEzNSksZmlsZUJpbmFyeTpkKCJmaWxlLWJpbmFyeSIsNjAxMzYpLGZpbGVDb2RlOmQoImZpbGUtY29kZSIsNjAxMzcpLGZpbGVNZWRpYTpkKCJmaWxlLW1lZGlhIiw2MDEzOCksZmlsZVBkZjpkKCJmaWxlLXBkZiIsNjAxMzkpLGZpbGVTdWJtb2R1bGU6ZCgiZmlsZS1zdWJtb2R1bGUiLDYwMTQwKSxmaWxlU3ltbGlua0RpcmVjdG9yeTpkKCJmaWxlLXN5bWxpbmstZGlyZWN0b3J5Iiw2MDE0MSksZmlsZVN5bWxpbmtGaWxlOmQoImZpbGUtc3ltbGluay1maWxlIiw2MDE0MiksZmlsZVppcDpkKCJmaWxlLXppcCIsNjAxNDMpLGZpbGVzOmQoImZpbGVzIiw2MDE0NCksZmlsdGVyOmQoImZpbHRlciIsNjAxNDUpLGZsYW1lOmQoImZsYW1lIiw2MDE0NiksZm9sZERvd246ZCgiZm9sZC1kb3duIiw2MDE0NyksZm9sZFVwOmQoImZvbGQtdXAiLDYwMTQ4KSxmb2xkOmQoImZvbGQiLDYwMTQ5KSxmb2xkZXJBY3RpdmU6ZCgiZm9sZGVyLWFjdGl2ZSIsNjAxNTApLGZvbGRlck9wZW5lZDpkKCJmb2xkZXItb3BlbmVkIiw2MDE1MSksZ2VhcjpkKCJnZWFyIiw2MDE1MiksZ2lmdDpkKCJnaWZ0Iiw2MDE1MyksZ2lzdFNlY3JldDpkKCJnaXN0LXNlY3JldCIsNjAxNTQpLGdpc3Q6ZCgiZ2lzdCIsNjAxNTUpLGdpdENvbW1pdDpkKCJnaXQtY29tbWl0Iiw2MDE1NiksZ2l0Q29tcGFyZTpkKCJnaXQtY29tcGFyZSIsNjAxNTcpLGNvbXBhcmVDaGFuZ2VzOmQoImNvbXBhcmUtY2hhbmdlcyIsNjAxNTcpLGdpdE1lcmdlOmQoImdpdC1tZXJnZSIsNjAxNTgpLGdpdGh1YkFjdGlvbjpkKCJnaXRodWItYWN0aW9uIiw2MDE1OSksZ2l0aHViQWx0OmQoImdpdGh1Yi1hbHQiLDYwMTYwKSxnbG9iZTpkKCJnbG9iZSIsNjAxNjEpLGdyYWJiZXI6ZCgiZ3JhYmJlciIsNjAxNjIpLGdyYXBoOmQoImdyYXBoIiw2MDE2MyksZ3JpcHBlcjpkKCJncmlwcGVyIiw2MDE2NCksaGVhcnQ6ZCgiaGVhcnQiLDYwMTY1KSxob21lOmQoImhvbWUiLDYwMTY2KSxob3Jpem9udGFsUnVsZTpkKCJob3Jpem9udGFsLXJ1bGUiLDYwMTY3KSxodWJvdDpkKCJodWJvdCIsNjAxNjgpLGluYm94OmQoImluYm94Iiw2MDE2OSksaXNzdWVSZW9wZW5lZDpkKCJpc3N1ZS1yZW9wZW5lZCIsNjAxNzEpLGlzc3VlczpkKCJpc3N1ZXMiLDYwMTcyKSxpdGFsaWM6ZCgiaXRhbGljIiw2MDE3MyksamVyc2V5OmQoImplcnNleSIsNjAxNzQpLGpzb246ZCgianNvbiIsNjAxNzUpLGtlYmFiVmVydGljYWw6ZCgia2ViYWItdmVydGljYWwiLDYwMTc2KSxrZXk6ZCgia2V5Iiw2MDE3NyksbGF3OmQoImxhdyIsNjAxNzgpLGxpZ2h0YnVsYkF1dG9maXg6ZCgibGlnaHRidWxiLWF1dG9maXgiLDYwMTc5KSxsaW5rRXh0ZXJuYWw6ZCgibGluay1leHRlcm5hbCIsNjAxODApLGxpbms6ZCgibGluayIsNjAxODEpLGxpc3RPcmRlcmVkOmQoImxpc3Qtb3JkZXJlZCIsNjAxODIpLGxpc3RVbm9yZGVyZWQ6ZCgibGlzdC11bm9yZGVyZWQiLDYwMTgzKSxsaXZlU2hhcmU6ZCgibGl2ZS1zaGFyZSIsNjAxODQpLGxvYWRpbmc6ZCgibG9hZGluZyIsNjAxODUpLGxvY2F0aW9uOmQoImxvY2F0aW9uIiw2MDE4NiksbWFpbFJlYWQ6ZCgibWFpbC1yZWFkIiw2MDE4NyksbWFpbDpkKCJtYWlsIiw2MDE4OCksbWFya2Rvd246ZCgibWFya2Rvd24iLDYwMTg5KSxtZWdhcGhvbmU6ZCgibWVnYXBob25lIiw2MDE5MCksbWVudGlvbjpkKCJtZW50aW9uIiw2MDE5MSksbWlsZXN0b25lOmQoIm1pbGVzdG9uZSIsNjAxOTIpLGdpdFB1bGxSZXF1ZXN0TWlsZXN0b25lOmQoImdpdC1wdWxsLXJlcXVlc3QtbWlsZXN0b25lIiw2MDE5MiksbW9ydGFyQm9hcmQ6ZCgibW9ydGFyLWJvYXJkIiw2MDE5MyksbW92ZTpkKCJtb3ZlIiw2MDE5NCksbXVsdGlwbGVXaW5kb3dzOmQoIm11bHRpcGxlLXdpbmRvd3MiLDYwMTk1KSxtdXRlOmQoIm11dGUiLDYwMTk2KSxub05ld2xpbmU6ZCgibm8tbmV3bGluZSIsNjAxOTcpLG5vdGU6ZCgibm90ZSIsNjAxOTgpLG9jdG9mYWNlOmQoIm9jdG9mYWNlIiw2MDE5OSksb3BlblByZXZpZXc6ZCgib3Blbi1wcmV2aWV3Iiw2MDIwMCkscGFja2FnZTpkKCJwYWNrYWdlIiw2MDIwMSkscGFpbnRjYW46ZCgicGFpbnRjYW4iLDYwMjAyKSxwaW46ZCgicGluIiw2MDIwMykscGxheTpkKCJwbGF5Iiw2MDIwNCkscnVuOmQoInJ1biIsNjAyMDQpLHBsdWc6ZCgicGx1ZyIsNjAyMDUpLHByZXNlcnZlQ2FzZTpkKCJwcmVzZXJ2ZS1jYXNlIiw2MDIwNikscHJldmlldzpkKCJwcmV2aWV3Iiw2MDIwNykscHJvamVjdDpkKCJwcm9qZWN0Iiw2MDIwOCkscHVsc2U6ZCgicHVsc2UiLDYwMjA5KSxxdWVzdGlvbjpkKCJxdWVzdGlvbiIsNjAyMTApLHF1b3RlOmQoInF1b3RlIiw2MDIxMSkscmFkaW9Ub3dlcjpkKCJyYWRpby10b3dlciIsNjAyMTIpLHJlYWN0aW9uczpkKCJyZWFjdGlvbnMiLDYwMjEzKSxyZWZlcmVuY2VzOmQoInJlZmVyZW5jZXMiLDYwMjE0KSxyZWZyZXNoOmQoInJlZnJlc2giLDYwMjE1KSxyZWdleDpkKCJyZWdleCIsNjAyMTYpLHJlbW90ZUV4cGxvcmVyOmQoInJlbW90ZS1leHBsb3JlciIsNjAyMTcpLHJlbW90ZTpkKCJyZW1vdGUiLDYwMjE4KSxyZW1vdmU6ZCgicmVtb3ZlIiw2MDIxOSkscmVwbGFjZUFsbDpkKCJyZXBsYWNlLWFsbCIsNjAyMjApLHJlcGxhY2U6ZCgicmVwbGFjZSIsNjAyMjEpLHJlcG9DbG9uZTpkKCJyZXBvLWNsb25lIiw2MDIyMikscmVwb0ZvcmNlUHVzaDpkKCJyZXBvLWZvcmNlLXB1c2giLDYwMjIzKSxyZXBvUHVsbDpkKCJyZXBvLXB1bGwiLDYwMjI0KSxyZXBvUHVzaDpkKCJyZXBvLXB1c2giLDYwMjI1KSxyZXBvcnQ6ZCgicmVwb3J0Iiw2MDIyNikscmVxdWVzdENoYW5nZXM6ZCgicmVxdWVzdC1jaGFuZ2VzIiw2MDIyNykscm9ja2V0OmQoInJvY2tldCIsNjAyMjgpLHJvb3RGb2xkZXJPcGVuZWQ6ZCgicm9vdC1mb2xkZXItb3BlbmVkIiw2MDIyOSkscm9vdEZvbGRlcjpkKCJyb290LWZvbGRlciIsNjAyMzApLHJzczpkKCJyc3MiLDYwMjMxKSxydWJ5OmQoInJ1YnkiLDYwMjMyKSxzYXZlQWxsOmQoInNhdmUtYWxsIiw2MDIzMyksc2F2ZUFzOmQoInNhdmUtYXMiLDYwMjM0KSxzYXZlOmQoInNhdmUiLDYwMjM1KSxzY3JlZW5GdWxsOmQoInNjcmVlbi1mdWxsIiw2MDIzNiksc2NyZWVuTm9ybWFsOmQoInNjcmVlbi1ub3JtYWwiLDYwMjM3KSxzZWFyY2hTdG9wOmQoInNlYXJjaC1zdG9wIiw2MDIzOCksc2VydmVyOmQoInNlcnZlciIsNjAyNDApLHNldHRpbmdzR2VhcjpkKCJzZXR0aW5ncy1nZWFyIiw2MDI0MSksc2V0dGluZ3M6ZCgic2V0dGluZ3MiLDYwMjQyKSxzaGllbGQ6ZCgic2hpZWxkIiw2MDI0Myksc21pbGV5OmQoInNtaWxleSIsNjAyNDQpLHNvcnRQcmVjZWRlbmNlOmQoInNvcnQtcHJlY2VkZW5jZSIsNjAyNDUpLHNwbGl0SG9yaXpvbnRhbDpkKCJzcGxpdC1ob3Jpem9udGFsIiw2MDI0Niksc3BsaXRWZXJ0aWNhbDpkKCJzcGxpdC12ZXJ0aWNhbCIsNjAyNDcpLHNxdWlycmVsOmQoInNxdWlycmVsIiw2MDI0OCksc3RhckZ1bGw6ZCgic3Rhci1mdWxsIiw2MDI0OSksc3RhckhhbGY6ZCgic3Rhci1oYWxmIiw2MDI1MCksc3ltYm9sQ2xhc3M6ZCgic3ltYm9sLWNsYXNzIiw2MDI1MSksc3ltYm9sQ29sb3I6ZCgic3ltYm9sLWNvbG9yIiw2MDI1Miksc3ltYm9sQ29uc3RhbnQ6ZCgic3ltYm9sLWNvbnN0YW50Iiw2MDI1Myksc3ltYm9sRW51bU1lbWJlcjpkKCJzeW1ib2wtZW51bS1tZW1iZXIiLDYwMjU0KSxzeW1ib2xGaWVsZDpkKCJzeW1ib2wtZmllbGQiLDYwMjU1KSxzeW1ib2xGaWxlOmQoInN5bWJvbC1maWxlIiw2MDI1Niksc3ltYm9sSW50ZXJmYWNlOmQoInN5bWJvbC1pbnRlcmZhY2UiLDYwMjU3KSxzeW1ib2xLZXl3b3JkOmQoInN5bWJvbC1rZXl3b3JkIiw2MDI1OCksc3ltYm9sTWlzYzpkKCJzeW1ib2wtbWlzYyIsNjAyNTkpLHN5bWJvbE9wZXJhdG9yOmQoInN5bWJvbC1vcGVyYXRvciIsNjAyNjApLHN5bWJvbFByb3BlcnR5OmQoInN5bWJvbC1wcm9wZXJ0eSIsNjAyNjEpLHdyZW5jaDpkKCJ3cmVuY2giLDYwMjYxKSx3cmVuY2hTdWJhY3Rpb246ZCgid3JlbmNoLXN1YmFjdGlvbiIsNjAyNjEpLHN5bWJvbFNuaXBwZXQ6ZCgic3ltYm9sLXNuaXBwZXQiLDYwMjYyKSx0YXNrbGlzdDpkKCJ0YXNrbGlzdCIsNjAyNjMpLHRlbGVzY29wZTpkKCJ0ZWxlc2NvcGUiLDYwMjY0KSx0ZXh0U2l6ZTpkKCJ0ZXh0LXNpemUiLDYwMjY1KSx0aHJlZUJhcnM6ZCgidGhyZWUtYmFycyIsNjAyNjYpLHRodW1ic2Rvd246ZCgidGh1bWJzZG93biIsNjAyNjcpLHRodW1ic3VwOmQoInRodW1ic3VwIiw2MDI2OCksdG9vbHM6ZCgidG9vbHMiLDYwMjY5KSx0cmlhbmdsZURvd246ZCgidHJpYW5nbGUtZG93biIsNjAyNzApLHRyaWFuZ2xlTGVmdDpkKCJ0cmlhbmdsZS1sZWZ0Iiw2MDI3MSksdHJpYW5nbGVSaWdodDpkKCJ0cmlhbmdsZS1yaWdodCIsNjAyNzIpLHRyaWFuZ2xlVXA6ZCgidHJpYW5nbGUtdXAiLDYwMjczKSx0d2l0dGVyOmQoInR3aXR0ZXIiLDYwMjc0KSx1bmZvbGQ6ZCgidW5mb2xkIiw2MDI3NSksdW5sb2NrOmQoInVubG9jayIsNjAyNzYpLHVubXV0ZTpkKCJ1bm11dGUiLDYwMjc3KSx1bnZlcmlmaWVkOmQoInVudmVyaWZpZWQiLDYwMjc4KSx2ZXJpZmllZDpkKCJ2ZXJpZmllZCIsNjAyNzkpLHZlcnNpb25zOmQoInZlcnNpb25zIiw2MDI4MCksdm1BY3RpdmU6ZCgidm0tYWN0aXZlIiw2MDI4MSksdm1PdXRsaW5lOmQoInZtLW91dGxpbmUiLDYwMjgyKSx2bVJ1bm5pbmc6ZCgidm0tcnVubmluZyIsNjAyODMpLHdhdGNoOmQoIndhdGNoIiw2MDI4NCksd2hpdGVzcGFjZTpkKCJ3aGl0ZXNwYWNlIiw2MDI4NSksd2hvbGVXb3JkOmQoIndob2xlLXdvcmQiLDYwMjg2KSx3aW5kb3c6ZCgid2luZG93Iiw2MDI4Nyksd29yZFdyYXA6ZCgid29yZC13cmFwIiw2MDI4OCksem9vbUluOmQoInpvb20taW4iLDYwMjg5KSx6b29tT3V0OmQoInpvb20tb3V0Iiw2MDI5MCksbGlzdEZpbHRlcjpkKCJsaXN0LWZpbHRlciIsNjAyOTEpLGxpc3RGbGF0OmQoImxpc3QtZmxhdCIsNjAyOTIpLGxpc3RTZWxlY3Rpb246ZCgibGlzdC1zZWxlY3Rpb24iLDYwMjkzKSxzZWxlY3Rpb246ZCgic2VsZWN0aW9uIiw2MDI5MyksbGlzdFRyZWU6ZCgibGlzdC10cmVlIiw2MDI5NCksZGVidWdCcmVha3BvaW50RnVuY3Rpb25VbnZlcmlmaWVkOmQoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tdW52ZXJpZmllZCIsNjAyOTUpLGRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uOmQoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24iLDYwMjk2KSxkZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkOmQoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tZGlzYWJsZWQiLDYwMjk2KSxkZWJ1Z1N0YWNrZnJhbWVBY3RpdmU6ZCgiZGVidWctc3RhY2tmcmFtZS1hY3RpdmUiLDYwMjk3KSxjaXJjbGVTbWFsbEZpbGxlZDpkKCJjaXJjbGUtc21hbGwtZmlsbGVkIiw2MDI5OCksZGVidWdTdGFja2ZyYW1lRG90OmQoImRlYnVnLXN0YWNrZnJhbWUtZG90Iiw2MDI5OCksdGVybWluYWxEZWNvcmF0aW9uTWFyazpkKCJ0ZXJtaW5hbC1kZWNvcmF0aW9uLW1hcmsiLDYwMjk4KSxkZWJ1Z1N0YWNrZnJhbWU6ZCgiZGVidWctc3RhY2tmcmFtZSIsNjAyOTkpLGRlYnVnU3RhY2tmcmFtZUZvY3VzZWQ6ZCgiZGVidWctc3RhY2tmcmFtZS1mb2N1c2VkIiw2MDI5OSksZGVidWdCcmVha3BvaW50VW5zdXBwb3J0ZWQ6ZCgiZGVidWctYnJlYWtwb2ludC11bnN1cHBvcnRlZCIsNjAzMDApLHN5bWJvbFN0cmluZzpkKCJzeW1ib2wtc3RyaW5nIiw2MDMwMSksZGVidWdSZXZlcnNlQ29udGludWU6ZCgiZGVidWctcmV2ZXJzZS1jb250aW51ZSIsNjAzMDIpLGRlYnVnU3RlcEJhY2s6ZCgiZGVidWctc3RlcC1iYWNrIiw2MDMwMyksZGVidWdSZXN0YXJ0RnJhbWU6ZCgiZGVidWctcmVzdGFydC1mcmFtZSIsNjAzMDQpLGRlYnVnQWx0OmQoImRlYnVnLWFsdCIsNjAzMDUpLGNhbGxJbmNvbWluZzpkKCJjYWxsLWluY29taW5nIiw2MDMwNiksY2FsbE91dGdvaW5nOmQoImNhbGwtb3V0Z29pbmciLDYwMzA3KSxtZW51OmQoIm1lbnUiLDYwMzA4KSxleHBhbmRBbGw6ZCgiZXhwYW5kLWFsbCIsNjAzMDkpLGZlZWRiYWNrOmQoImZlZWRiYWNrIiw2MDMxMCksZ2l0UHVsbFJlcXVlc3RSZXZpZXdlcjpkKCJnaXQtcHVsbC1yZXF1ZXN0LXJldmlld2VyIiw2MDMxMCksZ3JvdXBCeVJlZlR5cGU6ZCgiZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzExKSx1bmdyb3VwQnlSZWZUeXBlOmQoInVuZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzEyKSxhY2NvdW50OmQoImFjY291bnQiLDYwMzEzKSxnaXRQdWxsUmVxdWVzdEFzc2lnbmVlOmQoImdpdC1wdWxsLXJlcXVlc3QtYXNzaWduZWUiLDYwMzEzKSxiZWxsRG90OmQoImJlbGwtZG90Iiw2MDMxNCksZGVidWdDb25zb2xlOmQoImRlYnVnLWNvbnNvbGUiLDYwMzE1KSxsaWJyYXJ5OmQoImxpYnJhcnkiLDYwMzE2KSxvdXRwdXQ6ZCgib3V0cHV0Iiw2MDMxNykscnVuQWxsOmQoInJ1bi1hbGwiLDYwMzE4KSxzeW5jSWdub3JlZDpkKCJzeW5jLWlnbm9yZWQiLDYwMzE5KSxwaW5uZWQ6ZCgicGlubmVkIiw2MDMyMCksZ2l0aHViSW52ZXJ0ZWQ6ZCgiZ2l0aHViLWludmVydGVkIiw2MDMyMSksc2VydmVyUHJvY2VzczpkKCJzZXJ2ZXItcHJvY2VzcyIsNjAzMjIpLHNlcnZlckVudmlyb25tZW50OmQoInNlcnZlci1lbnZpcm9ubWVudCIsNjAzMjMpLHBhc3M6ZCgicGFzcyIsNjAzMjQpLGlzc3VlQ2xvc2VkOmQoImlzc3VlLWNsb3NlZCIsNjAzMjQpLHN0b3BDaXJjbGU6ZCgic3RvcC1jaXJjbGUiLDYwMzI1KSxwbGF5Q2lyY2xlOmQoInBsYXktY2lyY2xlIiw2MDMyNikscmVjb3JkOmQoInJlY29yZCIsNjAzMjcpLGRlYnVnQWx0U21hbGw6ZCgiZGVidWctYWx0LXNtYWxsIiw2MDMyOCksdm1Db25uZWN0OmQoInZtLWNvbm5lY3QiLDYwMzI5KSxjbG91ZDpkKCJjbG91ZCIsNjAzMzApLG1lcmdlOmQoIm1lcmdlIiw2MDMzMSksZXhwb3J0OmQoImV4cG9ydCIsNjAzMzIpLGdyYXBoTGVmdDpkKCJncmFwaC1sZWZ0Iiw2MDMzMyksbWFnbmV0OmQoIm1hZ25ldCIsNjAzMzQpLG5vdGVib29rOmQoIm5vdGVib29rIiw2MDMzNSkscmVkbzpkKCJyZWRvIiw2MDMzNiksY2hlY2tBbGw6ZCgiY2hlY2stYWxsIiw2MDMzNykscGlubmVkRGlydHk6ZCgicGlubmVkLWRpcnR5Iiw2MDMzOCkscGFzc0ZpbGxlZDpkKCJwYXNzLWZpbGxlZCIsNjAzMzkpLGNpcmNsZUxhcmdlRmlsbGVkOmQoImNpcmNsZS1sYXJnZS1maWxsZWQiLDYwMzQwKSxjaXJjbGVMYXJnZTpkKCJjaXJjbGUtbGFyZ2UiLDYwMzQxKSxjaXJjbGVMYXJnZU91dGxpbmU6ZCgiY2lyY2xlLWxhcmdlLW91dGxpbmUiLDYwMzQxKSxjb21iaW5lOmQoImNvbWJpbmUiLDYwMzQyKSxnYXRoZXI6ZCgiZ2F0aGVyIiw2MDM0MiksdGFibGU6ZCgidGFibGUiLDYwMzQzKSx2YXJpYWJsZUdyb3VwOmQoInZhcmlhYmxlLWdyb3VwIiw2MDM0NCksdHlwZUhpZXJhcmNoeTpkKCJ0eXBlLWhpZXJhcmNoeSIsNjAzNDUpLHR5cGVIaWVyYXJjaHlTdWI6ZCgidHlwZS1oaWVyYXJjaHktc3ViIiw2MDM0NiksdHlwZUhpZXJhcmNoeVN1cGVyOmQoInR5cGUtaGllcmFyY2h5LXN1cGVyIiw2MDM0NyksZ2l0UHVsbFJlcXVlc3RDcmVhdGU6ZCgiZ2l0LXB1bGwtcmVxdWVzdC1jcmVhdGUiLDYwMzQ4KSxydW5BYm92ZTpkKCJydW4tYWJvdmUiLDYwMzQ5KSxydW5CZWxvdzpkKCJydW4tYmVsb3ciLDYwMzUwKSxub3RlYm9va1RlbXBsYXRlOmQoIm5vdGVib29rLXRlbXBsYXRlIiw2MDM1MSksZGVidWdSZXJ1bjpkKCJkZWJ1Zy1yZXJ1biIsNjAzNTIpLHdvcmtzcGFjZVRydXN0ZWQ6ZCgid29ya3NwYWNlLXRydXN0ZWQiLDYwMzUzKSx3b3Jrc3BhY2VVbnRydXN0ZWQ6ZCgid29ya3NwYWNlLXVudHJ1c3RlZCIsNjAzNTQpLHdvcmtzcGFjZVVua25vd246ZCgid29ya3NwYWNlLXVua25vd24iLDYwMzU1KSx0ZXJtaW5hbENtZDpkKCJ0ZXJtaW5hbC1jbWQiLDYwMzU2KSx0ZXJtaW5hbERlYmlhbjpkKCJ0ZXJtaW5hbC1kZWJpYW4iLDYwMzU3KSx0ZXJtaW5hbExpbnV4OmQoInRlcm1pbmFsLWxpbnV4Iiw2MDM1OCksdGVybWluYWxQb3dlcnNoZWxsOmQoInRlcm1pbmFsLXBvd2Vyc2hlbGwiLDYwMzU5KSx0ZXJtaW5hbFRtdXg6ZCgidGVybWluYWwtdG11eCIsNjAzNjApLHRlcm1pbmFsVWJ1bnR1OmQoInRlcm1pbmFsLXVidW50dSIsNjAzNjEpLHRlcm1pbmFsQmFzaDpkKCJ0ZXJtaW5hbC1iYXNoIiw2MDM2MiksYXJyb3dTd2FwOmQoImFycm93LXN3YXAiLDYwMzYzKSxjb3B5OmQoImNvcHkiLDYwMzY0KSxwZXJzb25BZGQ6ZCgicGVyc29uLWFkZCIsNjAzNjUpLGZpbHRlckZpbGxlZDpkKCJmaWx0ZXItZmlsbGVkIiw2MDM2Niksd2FuZDpkKCJ3YW5kIiw2MDM2NyksZGVidWdMaW5lQnlMaW5lOmQoImRlYnVnLWxpbmUtYnktbGluZSIsNjAzNjgpLGluc3BlY3Q6ZCgiaW5zcGVjdCIsNjAzNjkpLGxheWVyczpkKCJsYXllcnMiLDYwMzcwKSxsYXllcnNEb3Q6ZCgibGF5ZXJzLWRvdCIsNjAzNzEpLGxheWVyc0FjdGl2ZTpkKCJsYXllcnMtYWN0aXZlIiw2MDM3MiksY29tcGFzczpkKCJjb21wYXNzIiw2MDM3MyksY29tcGFzc0RvdDpkKCJjb21wYXNzLWRvdCIsNjAzNzQpLGNvbXBhc3NBY3RpdmU6ZCgiY29tcGFzcy1hY3RpdmUiLDYwMzc1KSxhenVyZTpkKCJhenVyZSIsNjAzNzYpLGlzc3VlRHJhZnQ6ZCgiaXNzdWUtZHJhZnQiLDYwMzc3KSxnaXRQdWxsUmVxdWVzdENsb3NlZDpkKCJnaXQtcHVsbC1yZXF1ZXN0LWNsb3NlZCIsNjAzNzgpLGdpdFB1bGxSZXF1ZXN0RHJhZnQ6ZCgiZ2l0LXB1bGwtcmVxdWVzdC1kcmFmdCIsNjAzNzkpLGRlYnVnQWxsOmQoImRlYnVnLWFsbCIsNjAzODApLGRlYnVnQ292ZXJhZ2U6ZCgiZGVidWctY292ZXJhZ2UiLDYwMzgxKSxydW5FcnJvcnM6ZCgicnVuLWVycm9ycyIsNjAzODIpLGZvbGRlckxpYnJhcnk6ZCgiZm9sZGVyLWxpYnJhcnkiLDYwMzgzKSxkZWJ1Z0NvbnRpbnVlU21hbGw6ZCgiZGVidWctY29udGludWUtc21hbGwiLDYwMzg0KSxiZWFrZXJTdG9wOmQoImJlYWtlci1zdG9wIiw2MDM4NSksZ3JhcGhMaW5lOmQoImdyYXBoLWxpbmUiLDYwMzg2KSxncmFwaFNjYXR0ZXI6ZCgiZ3JhcGgtc2NhdHRlciIsNjAzODcpLHBpZUNoYXJ0OmQoInBpZS1jaGFydCIsNjAzODgpLGJyYWNrZXQ6ZCgiYnJhY2tldCIsNjAxNzUpLGJyYWNrZXREb3Q6ZCgiYnJhY2tldC1kb3QiLDYwMzg5KSxicmFja2V0RXJyb3I6ZCgiYnJhY2tldC1lcnJvciIsNjAzOTApLGxvY2tTbWFsbDpkKCJsb2NrLXNtYWxsIiw2MDM5MSksYXp1cmVEZXZvcHM6ZCgiYXp1cmUtZGV2b3BzIiw2MDM5MiksdmVyaWZpZWRGaWxsZWQ6ZCgidmVyaWZpZWQtZmlsbGVkIiw2MDM5MyksbmV3bGluZTpkKCJuZXdsaW5lIiw2MDM5NCksbGF5b3V0OmQoImxheW91dCIsNjAzOTUpLGxheW91dEFjdGl2aXR5YmFyTGVmdDpkKCJsYXlvdXQtYWN0aXZpdHliYXItbGVmdCIsNjAzOTYpLGxheW91dEFjdGl2aXR5YmFyUmlnaHQ6ZCgibGF5b3V0LWFjdGl2aXR5YmFyLXJpZ2h0Iiw2MDM5NyksbGF5b3V0UGFuZWxMZWZ0OmQoImxheW91dC1wYW5lbC1sZWZ0Iiw2MDM5OCksbGF5b3V0UGFuZWxDZW50ZXI6ZCgibGF5b3V0LXBhbmVsLWNlbnRlciIsNjAzOTkpLGxheW91dFBhbmVsSnVzdGlmeTpkKCJsYXlvdXQtcGFuZWwtanVzdGlmeSIsNjA0MDApLGxheW91dFBhbmVsUmlnaHQ6ZCgibGF5b3V0LXBhbmVsLXJpZ2h0Iiw2MDQwMSksbGF5b3V0UGFuZWw6ZCgibGF5b3V0LXBhbmVsIiw2MDQwMiksbGF5b3V0U2lkZWJhckxlZnQ6ZCgibGF5b3V0LXNpZGViYXItbGVmdCIsNjA0MDMpLGxheW91dFNpZGViYXJSaWdodDpkKCJsYXlvdXQtc2lkZWJhci1yaWdodCIsNjA0MDQpLGxheW91dFN0YXR1c2JhcjpkKCJsYXlvdXQtc3RhdHVzYmFyIiw2MDQwNSksbGF5b3V0TWVudWJhcjpkKCJsYXlvdXQtbWVudWJhciIsNjA0MDYpLGxheW91dENlbnRlcmVkOmQoImxheW91dC1jZW50ZXJlZCIsNjA0MDcpLHRhcmdldDpkKCJ0YXJnZXQiLDYwNDA4KSxpbmRlbnQ6ZCgiaW5kZW50Iiw2MDQwOSkscmVjb3JkU21hbGw6ZCgicmVjb3JkLXNtYWxsIiw2MDQxMCksZXJyb3JTbWFsbDpkKCJlcnJvci1zbWFsbCIsNjA0MTEpLHRlcm1pbmFsRGVjb3JhdGlvbkVycm9yOmQoInRlcm1pbmFsLWRlY29yYXRpb24tZXJyb3IiLDYwNDExKSxhcnJvd0NpcmNsZURvd246ZCgiYXJyb3ctY2lyY2xlLWRvd24iLDYwNDEyKSxhcnJvd0NpcmNsZUxlZnQ6ZCgiYXJyb3ctY2lyY2xlLWxlZnQiLDYwNDEzKSxhcnJvd0NpcmNsZVJpZ2h0OmQoImFycm93LWNpcmNsZS1yaWdodCIsNjA0MTQpLGFycm93Q2lyY2xlVXA6ZCgiYXJyb3ctY2lyY2xlLXVwIiw2MDQxNSksbGF5b3V0U2lkZWJhclJpZ2h0T2ZmOmQoImxheW91dC1zaWRlYmFyLXJpZ2h0LW9mZiIsNjA0MTYpLGxheW91dFBhbmVsT2ZmOmQoImxheW91dC1wYW5lbC1vZmYiLDYwNDE3KSxsYXlvdXRTaWRlYmFyTGVmdE9mZjpkKCJsYXlvdXQtc2lkZWJhci1sZWZ0LW9mZiIsNjA0MTgpLGJsYW5rOmQoImJsYW5rIiw2MDQxOSksaGVhcnRGaWxsZWQ6ZCgiaGVhcnQtZmlsbGVkIiw2MDQyMCksbWFwOmQoIm1hcCIsNjA0MjEpLG1hcEhvcml6b250YWw6ZCgibWFwLWhvcml6b250YWwiLDYwNDIxKSxmb2xkSG9yaXpvbnRhbDpkKCJmb2xkLWhvcml6b250YWwiLDYwNDIxKSxtYXBGaWxsZWQ6ZCgibWFwLWZpbGxlZCIsNjA0MjIpLG1hcEhvcml6b250YWxGaWxsZWQ6ZCgibWFwLWhvcml6b250YWwtZmlsbGVkIiw2MDQyMiksZm9sZEhvcml6b250YWxGaWxsZWQ6ZCgiZm9sZC1ob3Jpem9udGFsLWZpbGxlZCIsNjA0MjIpLGNpcmNsZVNtYWxsOmQoImNpcmNsZS1zbWFsbCIsNjA0MjMpLGJlbGxTbGFzaDpkKCJiZWxsLXNsYXNoIiw2MDQyNCksYmVsbFNsYXNoRG90OmQoImJlbGwtc2xhc2gtZG90Iiw2MDQyNSksY29tbWVudFVucmVzb2x2ZWQ6ZCgiY29tbWVudC11bnJlc29sdmVkIiw2MDQyNiksZ2l0UHVsbFJlcXVlc3RHb1RvQ2hhbmdlczpkKCJnaXQtcHVsbC1yZXF1ZXN0LWdvLXRvLWNoYW5nZXMiLDYwNDI3KSxnaXRQdWxsUmVxdWVzdE5ld0NoYW5nZXM6ZCgiZ2l0LXB1bGwtcmVxdWVzdC1uZXctY2hhbmdlcyIsNjA0MjgpLHNlYXJjaEZ1enp5OmQoInNlYXJjaC1mdXp6eSIsNjA0MjkpLGNvbW1lbnREcmFmdDpkKCJjb21tZW50LWRyYWZ0Iiw2MDQzMCksc2VuZDpkKCJzZW5kIiw2MDQzMSksc3BhcmtsZTpkKCJzcGFya2xlIiw2MDQzMiksaW5zZXJ0OmQoImluc2VydCIsNjA0MzMpLG1pYzpkKCJtaWMiLDYwNDM0KSx0aHVtYnNkb3duRmlsbGVkOmQoInRodW1ic2Rvd24tZmlsbGVkIiw2MDQzNSksdGh1bWJzdXBGaWxsZWQ6ZCgidGh1bWJzdXAtZmlsbGVkIiw2MDQzNiksY29mZmVlOmQoImNvZmZlZSIsNjA0MzcpLHNuYWtlOmQoInNuYWtlIiw2MDQzOCksZ2FtZTpkKCJnYW1lIiw2MDQzOSksdnI6ZCgidnIiLDYwNDQwKSxjaGlwOmQoImNoaXAiLDYwNDQxKSxwaWFubzpkKCJwaWFubyIsNjA0NDIpLG11c2ljOmQoIm11c2ljIiw2MDQ0MyksbWljRmlsbGVkOmQoIm1pYy1maWxsZWQiLDYwNDQ0KSxyZXBvRmV0Y2g6ZCgicmVwby1mZXRjaCIsNjA0NDUpLGNvcGlsb3Q6ZCgiY29waWxvdCIsNjA0NDYpLGxpZ2h0YnVsYlNwYXJrbGU6ZCgibGlnaHRidWxiLXNwYXJrbGUiLDYwNDQ3KSxyb2JvdDpkKCJyb2JvdCIsNjA0NDgpLHNwYXJrbGVGaWxsZWQ6ZCgic3BhcmtsZS1maWxsZWQiLDYwNDQ5KSxkaWZmU2luZ2xlOmQoImRpZmYtc2luZ2xlIiw2MDQ1MCksZGlmZk11bHRpcGxlOmQoImRpZmYtbXVsdGlwbGUiLDYwNDUxKSxzdXJyb3VuZFdpdGg6ZCgic3Vycm91bmQtd2l0aCIsNjA0NTIpLHNoYXJlOmQoInNoYXJlIiw2MDQ1MyksZ2l0U3Rhc2g6ZCgiZ2l0LXN0YXNoIiw2MDQ1NCksZ2l0U3Rhc2hBcHBseTpkKCJnaXQtc3Rhc2gtYXBwbHkiLDYwNDU1KSxnaXRTdGFzaFBvcDpkKCJnaXQtc3Rhc2gtcG9wIiw2MDQ1NiksdnNjb2RlOmQoInZzY29kZSIsNjA0NTcpLHZzY29kZUluc2lkZXJzOmQoInZzY29kZS1pbnNpZGVycyIsNjA0NTgpLGNvZGVPc3M6ZCgiY29kZS1vc3MiLDYwNDU5KSxydW5Db3ZlcmFnZTpkKCJydW4tY292ZXJhZ2UiLDYwNDYwKSxydW5BbGxDb3ZlcmFnZTpkKCJydW4tYWxsLWNvdmVyYWdlIiw2MDQ2MSksY292ZXJhZ2U6ZCgiY292ZXJhZ2UiLDYwNDYyKSxnaXRodWJQcm9qZWN0OmQoImdpdGh1Yi1wcm9qZWN0Iiw2MDQ2MyksbWFwVmVydGljYWw6ZCgibWFwLXZlcnRpY2FsIiw2MDQ2NCksZm9sZFZlcnRpY2FsOmQoImZvbGQtdmVydGljYWwiLDYwNDY0KSxtYXBWZXJ0aWNhbEZpbGxlZDpkKCJtYXAtdmVydGljYWwtZmlsbGVkIiw2MDQ2NSksZm9sZFZlcnRpY2FsRmlsbGVkOmQoImZvbGQtdmVydGljYWwtZmlsbGVkIiw2MDQ2NSl9LE9oPXtkaWFsb2dFcnJvcjpkKCJkaWFsb2ctZXJyb3IiLCJlcnJvciIpLGRpYWxvZ1dhcm5pbmc6ZCgiZGlhbG9nLXdhcm5pbmciLCJ3YXJuaW5nIiksZGlhbG9nSW5mbzpkKCJkaWFsb2ctaW5mbyIsImluZm8iKSxkaWFsb2dDbG9zZTpkKCJkaWFsb2ctY2xvc2UiLCJjbG9zZSIpLHRyZWVJdGVtRXhwYW5kZWQ6ZCgidHJlZS1pdGVtLWV4cGFuZGVkIiwiY2hldnJvbi1kb3duIiksdHJlZUZpbHRlck9uVHlwZU9uOmQoInRyZWUtZmlsdGVyLW9uLXR5cGUtb24iLCJsaXN0LWZpbHRlciIpLHRyZWVGaWx0ZXJPblR5cGVPZmY6ZCgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLCJsaXN0LXNlbGVjdGlvbiIpLHRyZWVGaWx0ZXJDbGVhcjpkKCJ0cmVlLWZpbHRlci1jbGVhciIsImNsb3NlIiksdHJlZUl0ZW1Mb2FkaW5nOmQoInRyZWUtaXRlbS1sb2FkaW5nIiwibG9hZGluZyIpLG1lbnVTZWxlY3Rpb246ZCgibWVudS1zZWxlY3Rpb24iLCJjaGVjayIpLG1lbnVTdWJtZW51OmQoIm1lbnUtc3VibWVudSIsImNoZXZyb24tcmlnaHQiKSxtZW51QmFyTW9yZTpkKCJtZW51YmFyLW1vcmUiLCJtb3JlIiksc2Nyb2xsYmFyQnV0dG9uTGVmdDpkKCJzY3JvbGxiYXItYnV0dG9uLWxlZnQiLCJ0cmlhbmdsZS1sZWZ0Iiksc2Nyb2xsYmFyQnV0dG9uUmlnaHQ6ZCgic2Nyb2xsYmFyLWJ1dHRvbi1yaWdodCIsInRyaWFuZ2xlLXJpZ2h0Iiksc2Nyb2xsYmFyQnV0dG9uVXA6ZCgic2Nyb2xsYmFyLWJ1dHRvbi11cCIsInRyaWFuZ2xlLXVwIiksc2Nyb2xsYmFyQnV0dG9uRG93bjpkKCJzY3JvbGxiYXItYnV0dG9uLWRvd24iLCJ0cmlhbmdsZS1kb3duIiksdG9vbEJhck1vcmU6ZCgidG9vbGJhci1tb3JlIiwibW9yZSIpLHF1aWNrSW5wdXRCYWNrOmQoInF1aWNrLWlucHV0LWJhY2siLCJhcnJvdy1sZWZ0IiksZHJvcERvd25CdXR0b246ZCgiZHJvcC1kb3duLWJ1dHRvbiIsNjAwODQpLHN5bWJvbEN1c3RvbUNvbG9yOmQoInN5bWJvbC1jdXN0b21jb2xvciIsNjAyNTIpLGV4cG9ydEljb246ZCgiZXhwb3J0Iiw2MDMzMiksd29ya3NwYWNlVW5zcGVjaWZpZWQ6ZCgid29ya3NwYWNlLXVuc3BlY2lmaWVkIiw2MDM1NSksbmV3TGluZTpkKCJuZXdsaW5lIiw2MDM5NCksdGh1bWJzRG93bkZpbGxlZDpkKCJ0aHVtYnNkb3duLWZpbGxlZCIsNjA0MzUpLHRodW1ic1VwRmlsbGVkOmQoInRodW1ic3VwLWZpbGxlZCIsNjA0MzYpLGdpdEZldGNoOmQoImdpdC1mZXRjaCIsNjA0NDUpLGxpZ2h0YnVsYlNwYXJrbGVBdXRvZml4OmQoImxpZ2h0YnVsYi1zcGFya2xlLWF1dG9maXgiLDYwNDQ3KSxkZWJ1Z0JyZWFrcG9pbnRQZW5kaW5nOmQoImRlYnVnLWJyZWFrcG9pbnQtcGVuZGluZyIsNjAzNzcpfSxCPXsuLi5XaCwuLi5PaH07Y2xhc3MgVWh7Y29uc3RydWN0b3IoKXt0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cz1uZXcgTWFwLHRoaXMuX2ZhY3Rvcmllcz1uZXcgTWFwLHRoaXMuX29uRGlkQ2hhbmdlPW5ldyBxZSx0aGlzLm9uRGlkQ2hhbmdlPXRoaXMuX29uRGlkQ2hhbmdlLmV2ZW50LHRoaXMuX2NvbG9yTWFwPW51bGx9aGFuZGxlQ2hhbmdlKGUpe3RoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6ZSxjaGFuZ2VkQ29sb3JNYXA6ITF9KX1yZWdpc3RlcihlLG4pe3JldHVybiB0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5zZXQoZSxuKSx0aGlzLmhhbmRsZUNoYW5nZShbZV0pLFduKCgpPT57dGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZ2V0KGUpPT09biYmKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmRlbGV0ZShlKSx0aGlzLmhhbmRsZUNoYW5nZShbZV0pKX0pfWdldChlKXtyZXR1cm4gdGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZ2V0KGUpfHxudWxsfXJlZ2lzdGVyRmFjdG9yeShlLG4pe3ZhciByOyhyPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSkpPT09bnVsbHx8cj09PXZvaWQgMHx8ci5kaXNwb3NlKCk7Y29uc3QgaT1uZXcgVmgodGhpcyxlLG4pO3JldHVybiB0aGlzLl9mYWN0b3JpZXMuc2V0KGUsaSksV24oKCk9Pntjb25zdCBzPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7IXN8fHMhPT1pfHwodGhpcy5fZmFjdG9yaWVzLmRlbGV0ZShlKSxzLmRpc3Bvc2UoKSl9KX1hc3luYyBnZXRPckNyZWF0ZShlKXtjb25zdCBuPXRoaXMuZ2V0KGUpO2lmKG4pcmV0dXJuIG47Y29uc3Qgcj10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3JldHVybiFyfHxyLmlzUmVzb2x2ZWQ/bnVsbDooYXdhaXQgci5yZXNvbHZlKCksdGhpcy5nZXQoZSkpfWlzUmVzb2x2ZWQoZSl7aWYodGhpcy5nZXQoZSkpcmV0dXJuITA7Y29uc3Qgcj10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3JldHVybiEhKCFyfHxyLmlzUmVzb2x2ZWQpfXNldENvbG9yTWFwKGUpe3RoaXMuX2NvbG9yTWFwPWUsdGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczpBcnJheS5mcm9tKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fWNsYXNzIFZoIGV4dGVuZHMgcm57Z2V0IGlzUmVzb2x2ZWQoKXtyZXR1cm4gdGhpcy5faXNSZXNvbHZlZH1jb25zdHJ1Y3RvcihlLG4scil7c3VwZXIoKSx0aGlzLl9yZWdpc3RyeT1lLHRoaXMuX2xhbmd1YWdlSWQ9bix0aGlzLl9mYWN0b3J5PXIsdGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLl9yZXNvbHZlUHJvbWlzZT1udWxsLHRoaXMuX2lzUmVzb2x2ZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWQ9ITAsc3VwZXIuZGlzcG9zZSgpfWFzeW5jIHJlc29sdmUoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZVByb21pc2V8fCh0aGlzLl9yZXNvbHZlUHJvbWlzZT10aGlzLl9jcmVhdGUoKSksdGhpcy5fcmVzb2x2ZVByb21pc2V9YXN5bmMgX2NyZWF0ZSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5fZmFjdG9yeS50b2tlbml6YXRpb25TdXBwb3J0O3RoaXMuX2lzUmVzb2x2ZWQ9ITAsZSYmIXRoaXMuX2lzRGlzcG9zZWQmJnRoaXMuX3JlZ2lzdGVyKHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyKHRoaXMuX2xhbmd1YWdlSWQsZSkpfX1jbGFzcyBCaHtjb25zdHJ1Y3RvcihlLG4scil7dGhpcy5vZmZzZXQ9ZSx0aGlzLnR5cGU9bix0aGlzLmxhbmd1YWdlPXIsdGhpcy5fdG9rZW5CcmFuZD12b2lkIDB9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5vZmZzZXQrIiwgIit0aGlzLnR5cGUrIikifX12YXIgSXM7KGZ1bmN0aW9uKHQpe2NvbnN0IGU9bmV3IE1hcDtlLnNldCgwLEIuc3ltYm9sTWV0aG9kKSxlLnNldCgxLEIuc3ltYm9sRnVuY3Rpb24pLGUuc2V0KDIsQi5zeW1ib2xDb25zdHJ1Y3RvciksZS5zZXQoMyxCLnN5bWJvbEZpZWxkKSxlLnNldCg0LEIuc3ltYm9sVmFyaWFibGUpLGUuc2V0KDUsQi5zeW1ib2xDbGFzcyksZS5zZXQoNixCLnN5bWJvbFN0cnVjdCksZS5zZXQoNyxCLnN5bWJvbEludGVyZmFjZSksZS5zZXQoOCxCLnN5bWJvbE1vZHVsZSksZS5zZXQoOSxCLnN5bWJvbFByb3BlcnR5KSxlLnNldCgxMCxCLnN5bWJvbEV2ZW50KSxlLnNldCgxMSxCLnN5bWJvbE9wZXJhdG9yKSxlLnNldCgxMixCLnN5bWJvbFVuaXQpLGUuc2V0KDEzLEIuc3ltYm9sVmFsdWUpLGUuc2V0KDE1LEIuc3ltYm9sRW51bSksZS5zZXQoMTQsQi5zeW1ib2xDb25zdGFudCksZS5zZXQoMTUsQi5zeW1ib2xFbnVtKSxlLnNldCgxNixCLnN5bWJvbEVudW1NZW1iZXIpLGUuc2V0KDE3LEIuc3ltYm9sS2V5d29yZCksZS5zZXQoMjcsQi5zeW1ib2xTbmlwcGV0KSxlLnNldCgxOCxCLnN5bWJvbFRleHQpLGUuc2V0KDE5LEIuc3ltYm9sQ29sb3IpLGUuc2V0KDIwLEIuc3ltYm9sRmlsZSksZS5zZXQoMjEsQi5zeW1ib2xSZWZlcmVuY2UpLGUuc2V0KDIyLEIuc3ltYm9sQ3VzdG9tQ29sb3IpLGUuc2V0KDIzLEIuc3ltYm9sRm9sZGVyKSxlLnNldCgyNCxCLnN5bWJvbFR5cGVQYXJhbWV0ZXIpLGUuc2V0KDI1LEIuYWNjb3VudCksZS5zZXQoMjYsQi5pc3N1ZXMpO2Z1bmN0aW9uIG4ocyl7bGV0IGE9ZS5nZXQocyk7cmV0dXJuIGF8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIENvbXBsZXRpb25JdGVtS2luZCAiK3MpLGE9Qi5zeW1ib2xQcm9wZXJ0eSksYX10LnRvSWNvbj1uO2NvbnN0IHI9bmV3IE1hcDtyLnNldCgibWV0aG9kIiwwKSxyLnNldCgiZnVuY3Rpb24iLDEpLHIuc2V0KCJjb25zdHJ1Y3RvciIsMiksci5zZXQoImZpZWxkIiwzKSxyLnNldCgidmFyaWFibGUiLDQpLHIuc2V0KCJjbGFzcyIsNSksci5zZXQoInN0cnVjdCIsNiksci5zZXQoImludGVyZmFjZSIsNyksci5zZXQoIm1vZHVsZSIsOCksci5zZXQoInByb3BlcnR5Iiw5KSxyLnNldCgiZXZlbnQiLDEwKSxyLnNldCgib3BlcmF0b3IiLDExKSxyLnNldCgidW5pdCIsMTIpLHIuc2V0KCJ2YWx1ZSIsMTMpLHIuc2V0KCJjb25zdGFudCIsMTQpLHIuc2V0KCJlbnVtIiwxNSksci5zZXQoImVudW0tbWVtYmVyIiwxNiksci5zZXQoImVudW1NZW1iZXIiLDE2KSxyLnNldCgia2V5d29yZCIsMTcpLHIuc2V0KCJzbmlwcGV0IiwyNyksci5zZXQoInRleHQiLDE4KSxyLnNldCgiY29sb3IiLDE5KSxyLnNldCgiZmlsZSIsMjApLHIuc2V0KCJyZWZlcmVuY2UiLDIxKSxyLnNldCgiY3VzdG9tY29sb3IiLDIyKSxyLnNldCgiZm9sZGVyIiwyMyksci5zZXQoInR5cGUtcGFyYW1ldGVyIiwyNCksci5zZXQoInR5cGVQYXJhbWV0ZXIiLDI0KSxyLnNldCgiYWNjb3VudCIsMjUpLHIuc2V0KCJpc3N1ZSIsMjYpO2Z1bmN0aW9uIGkocyxhKXtsZXQgbz1yLmdldChzKTtyZXR1cm4gdHlwZW9mIG8+InUiJiYhYSYmKG89OSksb310LmZyb21TdHJpbmc9aX0pKElzfHwoSXM9e30pKTt2YXIgVHM7KGZ1bmN0aW9uKHQpe3RbdC5BdXRvbWF0aWM9MF09IkF1dG9tYXRpYyIsdFt0LkV4cGxpY2l0PTFdPSJFeHBsaWNpdCJ9KShUc3x8KFRzPXt9KSk7dmFyIFdzOyhmdW5jdGlvbih0KXt0W3QuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLHRbdC5QYXN0ZUFzPTFdPSJQYXN0ZUFzIn0pKFdzfHwoV3M9e30pKTt2YXIgT3M7KGZ1bmN0aW9uKHQpe3RbdC5JbnZva2U9MV09Ikludm9rZSIsdFt0LlRyaWdnZXJDaGFyYWN0ZXI9Ml09IlRyaWdnZXJDaGFyYWN0ZXIiLHRbdC5Db250ZW50Q2hhbmdlPTNdPSJDb250ZW50Q2hhbmdlIn0pKE9zfHwoT3M9e30pKTt2YXIgVXM7KGZ1bmN0aW9uKHQpe3RbdC5UZXh0PTBdPSJUZXh0Iix0W3QuUmVhZD0xXT0iUmVhZCIsdFt0LldyaXRlPTJdPSJXcml0ZSJ9KShVc3x8KFVzPXt9KSksYWUoIkFycmF5IiwiYXJyYXkiKSxhZSgiQm9vbGVhbiIsImJvb2xlYW4iKSxhZSgiQ2xhc3MiLCJjbGFzcyIpLGFlKCJDb25zdGFudCIsImNvbnN0YW50IiksYWUoIkNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3IiKSxhZSgiRW51bSIsImVudW1lcmF0aW9uIiksYWUoIkVudW1NZW1iZXIiLCJlbnVtZXJhdGlvbiBtZW1iZXIiKSxhZSgiRXZlbnQiLCJldmVudCIpLGFlKCJGaWVsZCIsImZpZWxkIiksYWUoIkZpbGUiLCJmaWxlIiksYWUoIkZ1bmN0aW9uIiwiZnVuY3Rpb24iKSxhZSgiSW50ZXJmYWNlIiwiaW50ZXJmYWNlIiksYWUoIktleSIsImtleSIpLGFlKCJNZXRob2QiLCJtZXRob2QiKSxhZSgiTW9kdWxlIiwibW9kdWxlIiksYWUoIk5hbWVzcGFjZSIsIm5hbWVzcGFjZSIpLGFlKCJOdWxsIiwibnVsbCIpLGFlKCJOdW1iZXIiLCJudW1iZXIiKSxhZSgiT2JqZWN0Iiwib2JqZWN0IiksYWUoIk9wZXJhdG9yIiwib3BlcmF0b3IiKSxhZSgiUGFja2FnZSIsInBhY2thZ2UiKSxhZSgiUHJvcGVydHkiLCJwcm9wZXJ0eSIpLGFlKCJTdHJpbmciLCJzdHJpbmciKSxhZSgiU3RydWN0Iiwic3RydWN0IiksYWUoIlR5cGVQYXJhbWV0ZXIiLCJ0eXBlIHBhcmFtZXRlciIpLGFlKCJWYXJpYWJsZSIsInZhcmlhYmxlIik7dmFyIFZzOyhmdW5jdGlvbih0KXtjb25zdCBlPW5ldyBNYXA7ZS5zZXQoMCxCLnN5bWJvbEZpbGUpLGUuc2V0KDEsQi5zeW1ib2xNb2R1bGUpLGUuc2V0KDIsQi5zeW1ib2xOYW1lc3BhY2UpLGUuc2V0KDMsQi5zeW1ib2xQYWNrYWdlKSxlLnNldCg0LEIuc3ltYm9sQ2xhc3MpLGUuc2V0KDUsQi5zeW1ib2xNZXRob2QpLGUuc2V0KDYsQi5zeW1ib2xQcm9wZXJ0eSksZS5zZXQoNyxCLnN5bWJvbEZpZWxkKSxlLnNldCg4LEIuc3ltYm9sQ29uc3RydWN0b3IpLGUuc2V0KDksQi5zeW1ib2xFbnVtKSxlLnNldCgxMCxCLnN5bWJvbEludGVyZmFjZSksZS5zZXQoMTEsQi5zeW1ib2xGdW5jdGlvbiksZS5zZXQoMTIsQi5zeW1ib2xWYXJpYWJsZSksZS5zZXQoMTMsQi5zeW1ib2xDb25zdGFudCksZS5zZXQoMTQsQi5zeW1ib2xTdHJpbmcpLGUuc2V0KDE1LEIuc3ltYm9sTnVtYmVyKSxlLnNldCgxNixCLnN5bWJvbEJvb2xlYW4pLGUuc2V0KDE3LEIuc3ltYm9sQXJyYXkpLGUuc2V0KDE4LEIuc3ltYm9sT2JqZWN0KSxlLnNldCgxOSxCLnN5bWJvbEtleSksZS5zZXQoMjAsQi5zeW1ib2xOdWxsKSxlLnNldCgyMSxCLnN5bWJvbEVudW1NZW1iZXIpLGUuc2V0KDIyLEIuc3ltYm9sU3RydWN0KSxlLnNldCgyMyxCLnN5bWJvbEV2ZW50KSxlLnNldCgyNCxCLnN5bWJvbE9wZXJhdG9yKSxlLnNldCgyNSxCLnN5bWJvbFR5cGVQYXJhbWV0ZXIpO2Z1bmN0aW9uIG4ocil7bGV0IGk9ZS5nZXQocik7cmV0dXJuIGl8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIFN5bWJvbEtpbmQgIityKSxpPUIuc3ltYm9sUHJvcGVydHkpLGl9dC50b0ljb249bn0pKFZzfHwoVnM9e30pKTt2YXIgQnM7KGZ1bmN0aW9uKHQpe3RbdC5BSUdlbmVyYXRlZD0xXT0iQUlHZW5lcmF0ZWQifSkoQnN8fChCcz17fSkpO3ZhciBxczsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXtyZXR1cm4hbnx8dHlwZW9mIG4hPSJvYmplY3QiPyExOnR5cGVvZiBuLmlkPT0ic3RyaW5nIiYmdHlwZW9mIG4udGl0bGU9PSJzdHJpbmcifXQuaXM9ZX0pKHFzfHwocXM9e30pKTt2YXIganM7KGZ1bmN0aW9uKHQpe3RbdC5UeXBlPTFdPSJUeXBlIix0W3QuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifSkoanN8fChqcz17fSkpLG5ldyBVaDt2YXIgJHM7KGZ1bmN0aW9uKHQpe3RbdC5JbnZva2U9MF09Ikludm9rZSIsdFt0LkF1dG9tYXRpYz0xXT0iQXV0b21hdGljIn0pKCRzfHwoJHM9e30pKTt2YXIgSHM7KGZ1bmN0aW9uKHQpe3RbdC5Vbmtub3duPTBdPSJVbmtub3duIix0W3QuRGlzYWJsZWQ9MV09IkRpc2FibGVkIix0W3QuRW5hYmxlZD0yXT0iRW5hYmxlZCJ9KShIc3x8KEhzPXt9KSk7dmFyIEdzOyhmdW5jdGlvbih0KXt0W3QuSW52b2tlPTFdPSJJbnZva2UiLHRbdC5BdXRvPTJdPSJBdXRvIn0pKEdzfHwoR3M9e30pKTt2YXIgSnM7KGZ1bmN0aW9uKHQpe3RbdC5Ob25lPTBdPSJOb25lIix0W3QuS2VlcFdoaXRlc3BhY2U9MV09IktlZXBXaGl0ZXNwYWNlIix0W3QuSW5zZXJ0QXNTbmlwcGV0PTRdPSJJbnNlcnRBc1NuaXBwZXQifSkoSnN8fChKcz17fSkpO3ZhciBYczsoZnVuY3Rpb24odCl7dFt0Lk1ldGhvZD0wXT0iTWV0aG9kIix0W3QuRnVuY3Rpb249MV09IkZ1bmN0aW9uIix0W3QuQ29uc3RydWN0b3I9Ml09IkNvbnN0cnVjdG9yIix0W3QuRmllbGQ9M109IkZpZWxkIix0W3QuVmFyaWFibGU9NF09IlZhcmlhYmxlIix0W3QuQ2xhc3M9NV09IkNsYXNzIix0W3QuU3RydWN0PTZdPSJTdHJ1Y3QiLHRbdC5JbnRlcmZhY2U9N109IkludGVyZmFjZSIsdFt0Lk1vZHVsZT04XT0iTW9kdWxlIix0W3QuUHJvcGVydHk9OV09IlByb3BlcnR5Iix0W3QuRXZlbnQ9MTBdPSJFdmVudCIsdFt0Lk9wZXJhdG9yPTExXT0iT3BlcmF0b3IiLHRbdC5Vbml0PTEyXT0iVW5pdCIsdFt0LlZhbHVlPTEzXT0iVmFsdWUiLHRbdC5Db25zdGFudD0xNF09IkNvbnN0YW50Iix0W3QuRW51bT0xNV09IkVudW0iLHRbdC5FbnVtTWVtYmVyPTE2XT0iRW51bU1lbWJlciIsdFt0LktleXdvcmQ9MTddPSJLZXl3b3JkIix0W3QuVGV4dD0xOF09IlRleHQiLHRbdC5Db2xvcj0xOV09IkNvbG9yIix0W3QuRmlsZT0yMF09IkZpbGUiLHRbdC5SZWZlcmVuY2U9MjFdPSJSZWZlcmVuY2UiLHRbdC5DdXN0b21jb2xvcj0yMl09IkN1c3RvbWNvbG9yIix0W3QuRm9sZGVyPTIzXT0iRm9sZGVyIix0W3QuVHlwZVBhcmFtZXRlcj0yNF09IlR5cGVQYXJhbWV0ZXIiLHRbdC5Vc2VyPTI1XT0iVXNlciIsdFt0Lklzc3VlPTI2XT0iSXNzdWUiLHRbdC5TbmlwcGV0PTI3XT0iU25pcHBldCJ9KShYc3x8KFhzPXt9KSk7dmFyIFlzOyhmdW5jdGlvbih0KXt0W3QuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KShZc3x8KFlzPXt9KSk7dmFyIEtzOyhmdW5jdGlvbih0KXt0W3QuSW52b2tlPTBdPSJJbnZva2UiLHRbdC5UcmlnZ2VyQ2hhcmFjdGVyPTFdPSJUcmlnZ2VyQ2hhcmFjdGVyIix0W3QuVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucz0yXT0iVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucyJ9KShLc3x8KEtzPXt9KSk7dmFyIFFzOyhmdW5jdGlvbih0KXt0W3QuRVhBQ1Q9MF09IkVYQUNUIix0W3QuQUJPVkU9MV09IkFCT1ZFIix0W3QuQkVMT1c9Ml09IkJFTE9XIn0pKFFzfHwoUXM9e30pKTt2YXIgWnM7KGZ1bmN0aW9uKHQpe3RbdC5Ob3RTZXQ9MF09Ik5vdFNldCIsdFt0LkNvbnRlbnRGbHVzaD0xXT0iQ29udGVudEZsdXNoIix0W3QuUmVjb3ZlckZyb21NYXJrZXJzPTJdPSJSZWNvdmVyRnJvbU1hcmtlcnMiLHRbdC5FeHBsaWNpdD0zXT0iRXhwbGljaXQiLHRbdC5QYXN0ZT00XT0iUGFzdGUiLHRbdC5VbmRvPTVdPSJVbmRvIix0W3QuUmVkbz02XT0iUmVkbyJ9KShac3x8KFpzPXt9KSk7dmFyIGVhOyhmdW5jdGlvbih0KXt0W3QuTEY9MV09IkxGIix0W3QuQ1JMRj0yXT0iQ1JMRiJ9KShlYXx8KGVhPXt9KSk7dmFyIHRhOyhmdW5jdGlvbih0KXt0W3QuVGV4dD0wXT0iVGV4dCIsdFt0LlJlYWQ9MV09IlJlYWQiLHRbdC5Xcml0ZT0yXT0iV3JpdGUifSkodGF8fCh0YT17fSkpO3ZhciBuYTsoZnVuY3Rpb24odCl7dFt0Lk5vbmU9MF09Ik5vbmUiLHRbdC5LZWVwPTFdPSJLZWVwIix0W3QuQnJhY2tldHM9Ml09IkJyYWNrZXRzIix0W3QuQWR2YW5jZWQ9M109IkFkdmFuY2VkIix0W3QuRnVsbD00XT0iRnVsbCJ9KShuYXx8KG5hPXt9KSk7dmFyIHJhOyhmdW5jdGlvbih0KXt0W3QuYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyPTBdPSJhY2NlcHRTdWdnZXN0aW9uT25Db21taXRDaGFyYWN0ZXIiLHRbdC5hY2NlcHRTdWdnZXN0aW9uT25FbnRlcj0xXT0iYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXIiLHRbdC5hY2Nlc3NpYmlsaXR5U3VwcG9ydD0yXT0iYWNjZXNzaWJpbGl0eVN1cHBvcnQiLHRbdC5hY2Nlc3NpYmlsaXR5UGFnZVNpemU9M109ImFjY2Vzc2liaWxpdHlQYWdlU2l6ZSIsdFt0LmFyaWFMYWJlbD00XT0iYXJpYUxhYmVsIix0W3QuYXJpYVJlcXVpcmVkPTVdPSJhcmlhUmVxdWlyZWQiLHRbdC5hdXRvQ2xvc2luZ0JyYWNrZXRzPTZdPSJhdXRvQ2xvc2luZ0JyYWNrZXRzIix0W3QuYXV0b0Nsb3NpbmdDb21tZW50cz03XT0iYXV0b0Nsb3NpbmdDb21tZW50cyIsdFt0LnNjcmVlblJlYWRlckFubm91bmNlSW5saW5lU3VnZ2VzdGlvbj04XT0ic2NyZWVuUmVhZGVyQW5ub3VuY2VJbmxpbmVTdWdnZXN0aW9uIix0W3QuYXV0b0Nsb3NpbmdEZWxldGU9OV09ImF1dG9DbG9zaW5nRGVsZXRlIix0W3QuYXV0b0Nsb3NpbmdPdmVydHlwZT0xMF09ImF1dG9DbG9zaW5nT3ZlcnR5cGUiLHRbdC5hdXRvQ2xvc2luZ1F1b3Rlcz0xMV09ImF1dG9DbG9zaW5nUXVvdGVzIix0W3QuYXV0b0luZGVudD0xMl09ImF1dG9JbmRlbnQiLHRbdC5hdXRvbWF0aWNMYXlvdXQ9MTNdPSJhdXRvbWF0aWNMYXlvdXQiLHRbdC5hdXRvU3Vycm91bmQ9MTRdPSJhdXRvU3Vycm91bmQiLHRbdC5icmFja2V0UGFpckNvbG9yaXphdGlvbj0xNV09ImJyYWNrZXRQYWlyQ29sb3JpemF0aW9uIix0W3QuZ3VpZGVzPTE2XT0iZ3VpZGVzIix0W3QuY29kZUxlbnM9MTddPSJjb2RlTGVucyIsdFt0LmNvZGVMZW5zRm9udEZhbWlseT0xOF09ImNvZGVMZW5zRm9udEZhbWlseSIsdFt0LmNvZGVMZW5zRm9udFNpemU9MTldPSJjb2RlTGVuc0ZvbnRTaXplIix0W3QuY29sb3JEZWNvcmF0b3JzPTIwXT0iY29sb3JEZWNvcmF0b3JzIix0W3QuY29sb3JEZWNvcmF0b3JzTGltaXQ9MjFdPSJjb2xvckRlY29yYXRvcnNMaW1pdCIsdFt0LmNvbHVtblNlbGVjdGlvbj0yMl09ImNvbHVtblNlbGVjdGlvbiIsdFt0LmNvbW1lbnRzPTIzXT0iY29tbWVudHMiLHRbdC5jb250ZXh0bWVudT0yNF09ImNvbnRleHRtZW51Iix0W3QuY29weVdpdGhTeW50YXhIaWdobGlnaHRpbmc9MjVdPSJjb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZyIsdFt0LmN1cnNvckJsaW5raW5nPTI2XT0iY3Vyc29yQmxpbmtpbmciLHRbdC5jdXJzb3JTbW9vdGhDYXJldEFuaW1hdGlvbj0yN109ImN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uIix0W3QuY3Vyc29yU3R5bGU9MjhdPSJjdXJzb3JTdHlsZSIsdFt0LmN1cnNvclN1cnJvdW5kaW5nTGluZXM9MjldPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzIix0W3QuY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlPTMwXT0iY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlIix0W3QuY3Vyc29yV2lkdGg9MzFdPSJjdXJzb3JXaWR0aCIsdFt0LmRpc2FibGVMYXllckhpbnRpbmc9MzJdPSJkaXNhYmxlTGF5ZXJIaW50aW5nIix0W3QuZGlzYWJsZU1vbm9zcGFjZU9wdGltaXphdGlvbnM9MzNdPSJkaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucyIsdFt0LmRvbVJlYWRPbmx5PTM0XT0iZG9tUmVhZE9ubHkiLHRbdC5kcmFnQW5kRHJvcD0zNV09ImRyYWdBbmREcm9wIix0W3QuZHJvcEludG9FZGl0b3I9MzZdPSJkcm9wSW50b0VkaXRvciIsdFt0LmVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkPTM3XT0iZW1wdHlTZWxlY3Rpb25DbGlwYm9hcmQiLHRbdC5leHBlcmltZW50YWxXaGl0ZXNwYWNlUmVuZGVyaW5nPTM4XT0iZXhwZXJpbWVudGFsV2hpdGVzcGFjZVJlbmRlcmluZyIsdFt0LmV4dHJhRWRpdG9yQ2xhc3NOYW1lPTM5XT0iZXh0cmFFZGl0b3JDbGFzc05hbWUiLHRbdC5mYXN0U2Nyb2xsU2Vuc2l0aXZpdHk9NDBdPSJmYXN0U2Nyb2xsU2Vuc2l0aXZpdHkiLHRbdC5maW5kPTQxXT0iZmluZCIsdFt0LmZpeGVkT3ZlcmZsb3dXaWRnZXRzPTQyXT0iZml4ZWRPdmVyZmxvd1dpZGdldHMiLHRbdC5mb2xkaW5nPTQzXT0iZm9sZGluZyIsdFt0LmZvbGRpbmdTdHJhdGVneT00NF09ImZvbGRpbmdTdHJhdGVneSIsdFt0LmZvbGRpbmdIaWdobGlnaHQ9NDVdPSJmb2xkaW5nSGlnaGxpZ2h0Iix0W3QuZm9sZGluZ0ltcG9ydHNCeURlZmF1bHQ9NDZdPSJmb2xkaW5nSW1wb3J0c0J5RGVmYXVsdCIsdFt0LmZvbGRpbmdNYXhpbXVtUmVnaW9ucz00N109ImZvbGRpbmdNYXhpbXVtUmVnaW9ucyIsdFt0LnVuZm9sZE9uQ2xpY2tBZnRlckVuZE9mTGluZT00OF09InVuZm9sZE9uQ2xpY2tBZnRlckVuZE9mTGluZSIsdFt0LmZvbnRGYW1pbHk9NDldPSJmb250RmFtaWx5Iix0W3QuZm9udEluZm89NTBdPSJmb250SW5mbyIsdFt0LmZvbnRMaWdhdHVyZXM9NTFdPSJmb250TGlnYXR1cmVzIix0W3QuZm9udFNpemU9NTJdPSJmb250U2l6ZSIsdFt0LmZvbnRXZWlnaHQ9NTNdPSJmb250V2VpZ2h0Iix0W3QuZm9udFZhcmlhdGlvbnM9NTRdPSJmb250VmFyaWF0aW9ucyIsdFt0LmZvcm1hdE9uUGFzdGU9NTVdPSJmb3JtYXRPblBhc3RlIix0W3QuZm9ybWF0T25UeXBlPTU2XT0iZm9ybWF0T25UeXBlIix0W3QuZ2x5cGhNYXJnaW49NTddPSJnbHlwaE1hcmdpbiIsdFt0LmdvdG9Mb2NhdGlvbj01OF09ImdvdG9Mb2NhdGlvbiIsdFt0LmhpZGVDdXJzb3JJbk92ZXJ2aWV3UnVsZXI9NTldPSJoaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyIix0W3QuaG92ZXI9NjBdPSJob3ZlciIsdFt0LmluRGlmZkVkaXRvcj02MV09ImluRGlmZkVkaXRvciIsdFt0LmlubGluZVN1Z2dlc3Q9NjJdPSJpbmxpbmVTdWdnZXN0Iix0W3QuaW5saW5lRWRpdD02M109ImlubGluZUVkaXQiLHRbdC5sZXR0ZXJTcGFjaW5nPTY0XT0ibGV0dGVyU3BhY2luZyIsdFt0LmxpZ2h0YnVsYj02NV09ImxpZ2h0YnVsYiIsdFt0LmxpbmVEZWNvcmF0aW9uc1dpZHRoPTY2XT0ibGluZURlY29yYXRpb25zV2lkdGgiLHRbdC5saW5lSGVpZ2h0PTY3XT0ibGluZUhlaWdodCIsdFt0LmxpbmVOdW1iZXJzPTY4XT0ibGluZU51bWJlcnMiLHRbdC5saW5lTnVtYmVyc01pbkNoYXJzPTY5XT0ibGluZU51bWJlcnNNaW5DaGFycyIsdFt0LmxpbmtlZEVkaXRpbmc9NzBdPSJsaW5rZWRFZGl0aW5nIix0W3QubGlua3M9NzFdPSJsaW5rcyIsdFt0Lm1hdGNoQnJhY2tldHM9NzJdPSJtYXRjaEJyYWNrZXRzIix0W3QubWluaW1hcD03M109Im1pbmltYXAiLHRbdC5tb3VzZVN0eWxlPTc0XT0ibW91c2VTdHlsZSIsdFt0Lm1vdXNlV2hlZWxTY3JvbGxTZW5zaXRpdml0eT03NV09Im1vdXNlV2hlZWxTY3JvbGxTZW5zaXRpdml0eSIsdFt0Lm1vdXNlV2hlZWxab29tPTc2XT0ibW91c2VXaGVlbFpvb20iLHRbdC5tdWx0aUN1cnNvck1lcmdlT3ZlcmxhcHBpbmc9NzddPSJtdWx0aUN1cnNvck1lcmdlT3ZlcmxhcHBpbmciLHRbdC5tdWx0aUN1cnNvck1vZGlmaWVyPTc4XT0ibXVsdGlDdXJzb3JNb2RpZmllciIsdFt0Lm11bHRpQ3Vyc29yUGFzdGU9NzldPSJtdWx0aUN1cnNvclBhc3RlIix0W3QubXVsdGlDdXJzb3JMaW1pdD04MF09Im11bHRpQ3Vyc29yTGltaXQiLHRbdC5vY2N1cnJlbmNlc0hpZ2hsaWdodD04MV09Im9jY3VycmVuY2VzSGlnaGxpZ2h0Iix0W3Qub3ZlcnZpZXdSdWxlckJvcmRlcj04Ml09Im92ZXJ2aWV3UnVsZXJCb3JkZXIiLHRbdC5vdmVydmlld1J1bGVyTGFuZXM9ODNdPSJvdmVydmlld1J1bGVyTGFuZXMiLHRbdC5wYWRkaW5nPTg0XT0icGFkZGluZyIsdFt0LnBhc3RlQXM9ODVdPSJwYXN0ZUFzIix0W3QucGFyYW1ldGVySGludHM9ODZdPSJwYXJhbWV0ZXJIaW50cyIsdFt0LnBlZWtXaWRnZXREZWZhdWx0Rm9jdXM9ODddPSJwZWVrV2lkZ2V0RGVmYXVsdEZvY3VzIix0W3QuZGVmaW5pdGlvbkxpbmtPcGVuc0luUGVlaz04OF09ImRlZmluaXRpb25MaW5rT3BlbnNJblBlZWsiLHRbdC5xdWlja1N1Z2dlc3Rpb25zPTg5XT0icXVpY2tTdWdnZXN0aW9ucyIsdFt0LnF1aWNrU3VnZ2VzdGlvbnNEZWxheT05MF09InF1aWNrU3VnZ2VzdGlvbnNEZWxheSIsdFt0LnJlYWRPbmx5PTkxXT0icmVhZE9ubHkiLHRbdC5yZWFkT25seU1lc3NhZ2U9OTJdPSJyZWFkT25seU1lc3NhZ2UiLHRbdC5yZW5hbWVPblR5cGU9OTNdPSJyZW5hbWVPblR5cGUiLHRbdC5yZW5kZXJDb250cm9sQ2hhcmFjdGVycz05NF09InJlbmRlckNvbnRyb2xDaGFyYWN0ZXJzIix0W3QucmVuZGVyRmluYWxOZXdsaW5lPTk1XT0icmVuZGVyRmluYWxOZXdsaW5lIix0W3QucmVuZGVyTGluZUhpZ2hsaWdodD05Nl09InJlbmRlckxpbmVIaWdobGlnaHQiLHRbdC5yZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cz05N109InJlbmRlckxpbmVIaWdobGlnaHRPbmx5V2hlbkZvY3VzIix0W3QucmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zPTk4XT0icmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zIix0W3QucmVuZGVyV2hpdGVzcGFjZT05OV09InJlbmRlcldoaXRlc3BhY2UiLHRbdC5yZXZlYWxIb3Jpem9udGFsUmlnaHRQYWRkaW5nPTEwMF09InJldmVhbEhvcml6b250YWxSaWdodFBhZGRpbmciLHRbdC5yb3VuZGVkU2VsZWN0aW9uPTEwMV09InJvdW5kZWRTZWxlY3Rpb24iLHRbdC5ydWxlcnM9MTAyXT0icnVsZXJzIix0W3Quc2Nyb2xsYmFyPTEwM109InNjcm9sbGJhciIsdFt0LnNjcm9sbEJleW9uZExhc3RDb2x1bW49MTA0XT0ic2Nyb2xsQmV5b25kTGFzdENvbHVtbiIsdFt0LnNjcm9sbEJleW9uZExhc3RMaW5lPTEwNV09InNjcm9sbEJleW9uZExhc3RMaW5lIix0W3Quc2Nyb2xsUHJlZG9taW5hbnRBeGlzPTEwNl09InNjcm9sbFByZWRvbWluYW50QXhpcyIsdFt0LnNlbGVjdGlvbkNsaXBib2FyZD0xMDddPSJzZWxlY3Rpb25DbGlwYm9hcmQiLHRbdC5zZWxlY3Rpb25IaWdobGlnaHQ9MTA4XT0ic2VsZWN0aW9uSGlnaGxpZ2h0Iix0W3Quc2VsZWN0T25MaW5lTnVtYmVycz0xMDldPSJzZWxlY3RPbkxpbmVOdW1iZXJzIix0W3Quc2hvd0ZvbGRpbmdDb250cm9scz0xMTBdPSJzaG93Rm9sZGluZ0NvbnRyb2xzIix0W3Quc2hvd1VudXNlZD0xMTFdPSJzaG93VW51c2VkIix0W3Quc25pcHBldFN1Z2dlc3Rpb25zPTExMl09InNuaXBwZXRTdWdnZXN0aW9ucyIsdFt0LnNtYXJ0U2VsZWN0PTExM109InNtYXJ0U2VsZWN0Iix0W3Quc21vb3RoU2Nyb2xsaW5nPTExNF09InNtb290aFNjcm9sbGluZyIsdFt0LnN0aWNreVNjcm9sbD0xMTVdPSJzdGlja3lTY3JvbGwiLHRbdC5zdGlja3lUYWJTdG9wcz0xMTZdPSJzdGlja3lUYWJTdG9wcyIsdFt0LnN0b3BSZW5kZXJpbmdMaW5lQWZ0ZXI9MTE3XT0ic3RvcFJlbmRlcmluZ0xpbmVBZnRlciIsdFt0LnN1Z2dlc3Q9MTE4XT0ic3VnZ2VzdCIsdFt0LnN1Z2dlc3RGb250U2l6ZT0xMTldPSJzdWdnZXN0Rm9udFNpemUiLHRbdC5zdWdnZXN0TGluZUhlaWdodD0xMjBdPSJzdWdnZXN0TGluZUhlaWdodCIsdFt0LnN1Z2dlc3RPblRyaWdnZXJDaGFyYWN0ZXJzPTEyMV09InN1Z2dlc3RPblRyaWdnZXJDaGFyYWN0ZXJzIix0W3Quc3VnZ2VzdFNlbGVjdGlvbj0xMjJdPSJzdWdnZXN0U2VsZWN0aW9uIix0W3QudGFiQ29tcGxldGlvbj0xMjNdPSJ0YWJDb21wbGV0aW9uIix0W3QudGFiSW5kZXg9MTI0XT0idGFiSW5kZXgiLHRbdC51bmljb2RlSGlnaGxpZ2h0aW5nPTEyNV09InVuaWNvZGVIaWdobGlnaHRpbmciLHRbdC51bnVzdWFsTGluZVRlcm1pbmF0b3JzPTEyNl09InVudXN1YWxMaW5lVGVybWluYXRvcnMiLHRbdC51c2VTaGFkb3dET009MTI3XT0idXNlU2hhZG93RE9NIix0W3QudXNlVGFiU3RvcHM9MTI4XT0idXNlVGFiU3RvcHMiLHRbdC53b3JkQnJlYWs9MTI5XT0id29yZEJyZWFrIix0W3Qud29yZFNlZ21lbnRlckxvY2FsZXM9MTMwXT0id29yZFNlZ21lbnRlckxvY2FsZXMiLHRbdC53b3JkU2VwYXJhdG9ycz0xMzFdPSJ3b3JkU2VwYXJhdG9ycyIsdFt0LndvcmRXcmFwPTEzMl09IndvcmRXcmFwIix0W3Qud29yZFdyYXBCcmVha0FmdGVyQ2hhcmFjdGVycz0xMzNdPSJ3b3JkV3JhcEJyZWFrQWZ0ZXJDaGFyYWN0ZXJzIix0W3Qud29yZFdyYXBCcmVha0JlZm9yZUNoYXJhY3RlcnM9MTM0XT0id29yZFdyYXBCcmVha0JlZm9yZUNoYXJhY3RlcnMiLHRbdC53b3JkV3JhcENvbHVtbj0xMzVdPSJ3b3JkV3JhcENvbHVtbiIsdFt0LndvcmRXcmFwT3ZlcnJpZGUxPTEzNl09IndvcmRXcmFwT3ZlcnJpZGUxIix0W3Qud29yZFdyYXBPdmVycmlkZTI9MTM3XT0id29yZFdyYXBPdmVycmlkZTIiLHRbdC53cmFwcGluZ0luZGVudD0xMzhdPSJ3cmFwcGluZ0luZGVudCIsdFt0LndyYXBwaW5nU3RyYXRlZ3k9MTM5XT0id3JhcHBpbmdTdHJhdGVneSIsdFt0LnNob3dEZXByZWNhdGVkPTE0MF09InNob3dEZXByZWNhdGVkIix0W3QuaW5sYXlIaW50cz0xNDFdPSJpbmxheUhpbnRzIix0W3QuZWRpdG9yQ2xhc3NOYW1lPTE0Ml09ImVkaXRvckNsYXNzTmFtZSIsdFt0LnBpeGVsUmF0aW89MTQzXT0icGl4ZWxSYXRpbyIsdFt0LnRhYkZvY3VzTW9kZT0xNDRdPSJ0YWJGb2N1c01vZGUiLHRbdC5sYXlvdXRJbmZvPTE0NV09ImxheW91dEluZm8iLHRbdC53cmFwcGluZ0luZm89MTQ2XT0id3JhcHBpbmdJbmZvIix0W3QuZGVmYXVsdENvbG9yRGVjb3JhdG9ycz0xNDddPSJkZWZhdWx0Q29sb3JEZWNvcmF0b3JzIix0W3QuY29sb3JEZWNvcmF0b3JzQWN0aXZhdGVkT249MTQ4XT0iY29sb3JEZWNvcmF0b3JzQWN0aXZhdGVkT24iLHRbdC5pbmxpbmVDb21wbGV0aW9uc0FjY2Vzc2liaWxpdHlWZXJib3NlPTE0OV09ImlubGluZUNvbXBsZXRpb25zQWNjZXNzaWJpbGl0eVZlcmJvc2UifSkocmF8fChyYT17fSkpO3ZhciBpYTsoZnVuY3Rpb24odCl7dFt0LlRleHREZWZpbmVkPTBdPSJUZXh0RGVmaW5lZCIsdFt0LkxGPTFdPSJMRiIsdFt0LkNSTEY9Ml09IkNSTEYifSkoaWF8fChpYT17fSkpO3ZhciBzYTsoZnVuY3Rpb24odCl7dFt0LkxGPTBdPSJMRiIsdFt0LkNSTEY9MV09IkNSTEYifSkoc2F8fChzYT17fSkpO3ZhciBhYTsoZnVuY3Rpb24odCl7dFt0LkxlZnQ9MV09IkxlZnQiLHRbdC5DZW50ZXI9Ml09IkNlbnRlciIsdFt0LlJpZ2h0PTNdPSJSaWdodCJ9KShhYXx8KGFhPXt9KSk7dmFyIG9hOyhmdW5jdGlvbih0KXt0W3QuTm9uZT0wXT0iTm9uZSIsdFt0LkluZGVudD0xXT0iSW5kZW50Iix0W3QuSW5kZW50T3V0ZGVudD0yXT0iSW5kZW50T3V0ZGVudCIsdFt0Lk91dGRlbnQ9M109Ik91dGRlbnQifSkob2F8fChvYT17fSkpO3ZhciBsYTsoZnVuY3Rpb24odCl7dFt0LkJvdGg9MF09IkJvdGgiLHRbdC5SaWdodD0xXT0iUmlnaHQiLHRbdC5MZWZ0PTJdPSJMZWZ0Iix0W3QuTm9uZT0zXT0iTm9uZSJ9KShsYXx8KGxhPXt9KSk7dmFyIGNhOyhmdW5jdGlvbih0KXt0W3QuVHlwZT0xXT0iVHlwZSIsdFt0LlBhcmFtZXRlcj0yXT0iUGFyYW1ldGVyIn0pKGNhfHwoY2E9e30pKTt2YXIgaGE7KGZ1bmN0aW9uKHQpe3RbdC5BdXRvbWF0aWM9MF09IkF1dG9tYXRpYyIsdFt0LkV4cGxpY2l0PTFdPSJFeHBsaWNpdCJ9KShoYXx8KGhhPXt9KSk7dmFyIGRhOyhmdW5jdGlvbih0KXt0W3QuSW52b2tlPTBdPSJJbnZva2UiLHRbdC5BdXRvbWF0aWM9MV09IkF1dG9tYXRpYyJ9KShkYXx8KGRhPXt9KSk7dmFyIEpyOyhmdW5jdGlvbih0KXt0W3QuRGVwZW5kc09uS2JMYXlvdXQ9LTFdPSJEZXBlbmRzT25LYkxheW91dCIsdFt0LlVua25vd249MF09IlVua25vd24iLHRbdC5CYWNrc3BhY2U9MV09IkJhY2tzcGFjZSIsdFt0LlRhYj0yXT0iVGFiIix0W3QuRW50ZXI9M109IkVudGVyIix0W3QuU2hpZnQ9NF09IlNoaWZ0Iix0W3QuQ3RybD01XT0iQ3RybCIsdFt0LkFsdD02XT0iQWx0Iix0W3QuUGF1c2VCcmVhaz03XT0iUGF1c2VCcmVhayIsdFt0LkNhcHNMb2NrPThdPSJDYXBzTG9jayIsdFt0LkVzY2FwZT05XT0iRXNjYXBlIix0W3QuU3BhY2U9MTBdPSJTcGFjZSIsdFt0LlBhZ2VVcD0xMV09IlBhZ2VVcCIsdFt0LlBhZ2VEb3duPTEyXT0iUGFnZURvd24iLHRbdC5FbmQ9MTNdPSJFbmQiLHRbdC5Ib21lPTE0XT0iSG9tZSIsdFt0LkxlZnRBcnJvdz0xNV09IkxlZnRBcnJvdyIsdFt0LlVwQXJyb3c9MTZdPSJVcEFycm93Iix0W3QuUmlnaHRBcnJvdz0xN109IlJpZ2h0QXJyb3ciLHRbdC5Eb3duQXJyb3c9MThdPSJEb3duQXJyb3ciLHRbdC5JbnNlcnQ9MTldPSJJbnNlcnQiLHRbdC5EZWxldGU9MjBdPSJEZWxldGUiLHRbdC5EaWdpdDA9MjFdPSJEaWdpdDAiLHRbdC5EaWdpdDE9MjJdPSJEaWdpdDEiLHRbdC5EaWdpdDI9MjNdPSJEaWdpdDIiLHRbdC5EaWdpdDM9MjRdPSJEaWdpdDMiLHRbdC5EaWdpdDQ9MjVdPSJEaWdpdDQiLHRbdC5EaWdpdDU9MjZdPSJEaWdpdDUiLHRbdC5EaWdpdDY9MjddPSJEaWdpdDYiLHRbdC5EaWdpdDc9MjhdPSJEaWdpdDciLHRbdC5EaWdpdDg9MjldPSJEaWdpdDgiLHRbdC5EaWdpdDk9MzBdPSJEaWdpdDkiLHRbdC5LZXlBPTMxXT0iS2V5QSIsdFt0LktleUI9MzJdPSJLZXlCIix0W3QuS2V5Qz0zM109IktleUMiLHRbdC5LZXlEPTM0XT0iS2V5RCIsdFt0LktleUU9MzVdPSJLZXlFIix0W3QuS2V5Rj0zNl09IktleUYiLHRbdC5LZXlHPTM3XT0iS2V5RyIsdFt0LktleUg9MzhdPSJLZXlIIix0W3QuS2V5ST0zOV09IktleUkiLHRbdC5LZXlKPTQwXT0iS2V5SiIsdFt0LktleUs9NDFdPSJLZXlLIix0W3QuS2V5TD00Ml09IktleUwiLHRbdC5LZXlNPTQzXT0iS2V5TSIsdFt0LktleU49NDRdPSJLZXlOIix0W3QuS2V5Tz00NV09IktleU8iLHRbdC5LZXlQPTQ2XT0iS2V5UCIsdFt0LktleVE9NDddPSJLZXlRIix0W3QuS2V5Uj00OF09IktleVIiLHRbdC5LZXlTPTQ5XT0iS2V5UyIsdFt0LktleVQ9NTBdPSJLZXlUIix0W3QuS2V5VT01MV09IktleVUiLHRbdC5LZXlWPTUyXT0iS2V5ViIsdFt0LktleVc9NTNdPSJLZXlXIix0W3QuS2V5WD01NF09IktleVgiLHRbdC5LZXlZPTU1XT0iS2V5WSIsdFt0LktleVo9NTZdPSJLZXlaIix0W3QuTWV0YT01N109Ik1ldGEiLHRbdC5Db250ZXh0TWVudT01OF09IkNvbnRleHRNZW51Iix0W3QuRjE9NTldPSJGMSIsdFt0LkYyPTYwXT0iRjIiLHRbdC5GMz02MV09IkYzIix0W3QuRjQ9NjJdPSJGNCIsdFt0LkY1PTYzXT0iRjUiLHRbdC5GNj02NF09IkY2Iix0W3QuRjc9NjVdPSJGNyIsdFt0LkY4PTY2XT0iRjgiLHRbdC5GOT02N109IkY5Iix0W3QuRjEwPTY4XT0iRjEwIix0W3QuRjExPTY5XT0iRjExIix0W3QuRjEyPTcwXT0iRjEyIix0W3QuRjEzPTcxXT0iRjEzIix0W3QuRjE0PTcyXT0iRjE0Iix0W3QuRjE1PTczXT0iRjE1Iix0W3QuRjE2PTc0XT0iRjE2Iix0W3QuRjE3PTc1XT0iRjE3Iix0W3QuRjE4PTc2XT0iRjE4Iix0W3QuRjE5PTc3XT0iRjE5Iix0W3QuRjIwPTc4XT0iRjIwIix0W3QuRjIxPTc5XT0iRjIxIix0W3QuRjIyPTgwXT0iRjIyIix0W3QuRjIzPTgxXT0iRjIzIix0W3QuRjI0PTgyXT0iRjI0Iix0W3QuTnVtTG9jaz04M109Ik51bUxvY2siLHRbdC5TY3JvbGxMb2NrPTg0XT0iU2Nyb2xsTG9jayIsdFt0LlNlbWljb2xvbj04NV09IlNlbWljb2xvbiIsdFt0LkVxdWFsPTg2XT0iRXF1YWwiLHRbdC5Db21tYT04N109IkNvbW1hIix0W3QuTWludXM9ODhdPSJNaW51cyIsdFt0LlBlcmlvZD04OV09IlBlcmlvZCIsdFt0LlNsYXNoPTkwXT0iU2xhc2giLHRbdC5CYWNrcXVvdGU9OTFdPSJCYWNrcXVvdGUiLHRbdC5CcmFja2V0TGVmdD05Ml09IkJyYWNrZXRMZWZ0Iix0W3QuQmFja3NsYXNoPTkzXT0iQmFja3NsYXNoIix0W3QuQnJhY2tldFJpZ2h0PTk0XT0iQnJhY2tldFJpZ2h0Iix0W3QuUXVvdGU9OTVdPSJRdW90ZSIsdFt0Lk9FTV84PTk2XT0iT0VNXzgiLHRbdC5JbnRsQmFja3NsYXNoPTk3XT0iSW50bEJhY2tzbGFzaCIsdFt0Lk51bXBhZDA9OThdPSJOdW1wYWQwIix0W3QuTnVtcGFkMT05OV09Ik51bXBhZDEiLHRbdC5OdW1wYWQyPTEwMF09Ik51bXBhZDIiLHRbdC5OdW1wYWQzPTEwMV09Ik51bXBhZDMiLHRbdC5OdW1wYWQ0PTEwMl09Ik51bXBhZDQiLHRbdC5OdW1wYWQ1PTEwM109Ik51bXBhZDUiLHRbdC5OdW1wYWQ2PTEwNF09Ik51bXBhZDYiLHRbdC5OdW1wYWQ3PTEwNV09Ik51bXBhZDciLHRbdC5OdW1wYWQ4PTEwNl09Ik51bXBhZDgiLHRbdC5OdW1wYWQ5PTEwN109Ik51bXBhZDkiLHRbdC5OdW1wYWRNdWx0aXBseT0xMDhdPSJOdW1wYWRNdWx0aXBseSIsdFt0Lk51bXBhZEFkZD0xMDldPSJOdW1wYWRBZGQiLHRbdC5OVU1QQURfU0VQQVJBVE9SPTExMF09Ik5VTVBBRF9TRVBBUkFUT1IiLHRbdC5OdW1wYWRTdWJ0cmFjdD0xMTFdPSJOdW1wYWRTdWJ0cmFjdCIsdFt0Lk51bXBhZERlY2ltYWw9MTEyXT0iTnVtcGFkRGVjaW1hbCIsdFt0Lk51bXBhZERpdmlkZT0xMTNdPSJOdW1wYWREaXZpZGUiLHRbdC5LRVlfSU5fQ09NUE9TSVRJT049MTE0XT0iS0VZX0lOX0NPTVBPU0lUSU9OIix0W3QuQUJOVF9DMT0xMTVdPSJBQk5UX0MxIix0W3QuQUJOVF9DMj0xMTZdPSJBQk5UX0MyIix0W3QuQXVkaW9Wb2x1bWVNdXRlPTExN109IkF1ZGlvVm9sdW1lTXV0ZSIsdFt0LkF1ZGlvVm9sdW1lVXA9MTE4XT0iQXVkaW9Wb2x1bWVVcCIsdFt0LkF1ZGlvVm9sdW1lRG93bj0xMTldPSJBdWRpb1ZvbHVtZURvd24iLHRbdC5Ccm93c2VyU2VhcmNoPTEyMF09IkJyb3dzZXJTZWFyY2giLHRbdC5Ccm93c2VySG9tZT0xMjFdPSJCcm93c2VySG9tZSIsdFt0LkJyb3dzZXJCYWNrPTEyMl09IkJyb3dzZXJCYWNrIix0W3QuQnJvd3NlckZvcndhcmQ9MTIzXT0iQnJvd3NlckZvcndhcmQiLHRbdC5NZWRpYVRyYWNrTmV4dD0xMjRdPSJNZWRpYVRyYWNrTmV4dCIsdFt0Lk1lZGlhVHJhY2tQcmV2aW91cz0xMjVdPSJNZWRpYVRyYWNrUHJldmlvdXMiLHRbdC5NZWRpYVN0b3A9MTI2XT0iTWVkaWFTdG9wIix0W3QuTWVkaWFQbGF5UGF1c2U9MTI3XT0iTWVkaWFQbGF5UGF1c2UiLHRbdC5MYXVuY2hNZWRpYVBsYXllcj0xMjhdPSJMYXVuY2hNZWRpYVBsYXllciIsdFt0LkxhdW5jaE1haWw9MTI5XT0iTGF1bmNoTWFpbCIsdFt0LkxhdW5jaEFwcDI9MTMwXT0iTGF1bmNoQXBwMiIsdFt0LkNsZWFyPTEzMV09IkNsZWFyIix0W3QuTUFYX1ZBTFVFPTEzMl09Ik1BWF9WQUxVRSJ9KShKcnx8KEpyPXt9KSk7dmFyIFhyOyhmdW5jdGlvbih0KXt0W3QuSGludD0xXT0iSGludCIsdFt0LkluZm89Ml09IkluZm8iLHRbdC5XYXJuaW5nPTRdPSJXYXJuaW5nIix0W3QuRXJyb3I9OF09IkVycm9yIn0pKFhyfHwoWHI9e30pKTt2YXIgWXI7KGZ1bmN0aW9uKHQpe3RbdC5Vbm5lY2Vzc2FyeT0xXT0iVW5uZWNlc3NhcnkiLHRbdC5EZXByZWNhdGVkPTJdPSJEZXByZWNhdGVkIn0pKFlyfHwoWXI9e30pKTt2YXIgdWE7KGZ1bmN0aW9uKHQpe3RbdC5JbmxpbmU9MV09IklubGluZSIsdFt0Lkd1dHRlcj0yXT0iR3V0dGVyIn0pKHVhfHwodWE9e30pKTt2YXIgcGE7KGZ1bmN0aW9uKHQpe3RbdC5Ob3JtYWw9MV09Ik5vcm1hbCIsdFt0LlVuZGVybGluZWQ9Ml09IlVuZGVybGluZWQifSkocGF8fChwYT17fSkpO3ZhciBmYTsoZnVuY3Rpb24odCl7dFt0LlVOS05PV049MF09IlVOS05PV04iLHRbdC5URVhUQVJFQT0xXT0iVEVYVEFSRUEiLHRbdC5HVVRURVJfR0xZUEhfTUFSR0lOPTJdPSJHVVRURVJfR0xZUEhfTUFSR0lOIix0W3QuR1VUVEVSX0xJTkVfTlVNQkVSUz0zXT0iR1VUVEVSX0xJTkVfTlVNQkVSUyIsdFt0LkdVVFRFUl9MSU5FX0RFQ09SQVRJT05TPTRdPSJHVVRURVJfTElORV9ERUNPUkFUSU9OUyIsdFt0LkdVVFRFUl9WSUVXX1pPTkU9NV09IkdVVFRFUl9WSUVXX1pPTkUiLHRbdC5DT05URU5UX1RFWFQ9Nl09IkNPTlRFTlRfVEVYVCIsdFt0LkNPTlRFTlRfRU1QVFk9N109IkNPTlRFTlRfRU1QVFkiLHRbdC5DT05URU5UX1ZJRVdfWk9ORT04XT0iQ09OVEVOVF9WSUVXX1pPTkUiLHRbdC5DT05URU5UX1dJREdFVD05XT0iQ09OVEVOVF9XSURHRVQiLHRbdC5PVkVSVklFV19SVUxFUj0xMF09Ik9WRVJWSUVXX1JVTEVSIix0W3QuU0NST0xMQkFSPTExXT0iU0NST0xMQkFSIix0W3QuT1ZFUkxBWV9XSURHRVQ9MTJdPSJPVkVSTEFZX1dJREdFVCIsdFt0Lk9VVFNJREVfRURJVE9SPTEzXT0iT1VUU0lERV9FRElUT1IifSkoZmF8fChmYT17fSkpO3ZhciBtYTsoZnVuY3Rpb24odCl7dFt0LkFJR2VuZXJhdGVkPTFdPSJBSUdlbmVyYXRlZCJ9KShtYXx8KG1hPXt9KSk7dmFyIGdhOyhmdW5jdGlvbih0KXt0W3QuVE9QX1JJR0hUX0NPUk5FUj0wXT0iVE9QX1JJR0hUX0NPUk5FUiIsdFt0LkJPVFRPTV9SSUdIVF9DT1JORVI9MV09IkJPVFRPTV9SSUdIVF9DT1JORVIiLHRbdC5UT1BfQ0VOVEVSPTJdPSJUT1BfQ0VOVEVSIn0pKGdhfHwoZ2E9e30pKTt2YXIgYmE7KGZ1bmN0aW9uKHQpe3RbdC5MZWZ0PTFdPSJMZWZ0Iix0W3QuQ2VudGVyPTJdPSJDZW50ZXIiLHRbdC5SaWdodD00XT0iUmlnaHQiLHRbdC5GdWxsPTddPSJGdWxsIn0pKGJhfHwoYmE9e30pKTt2YXIgdmE7KGZ1bmN0aW9uKHQpe3RbdC5Xb3JkPTBdPSJXb3JkIix0W3QuTGluZT0xXT0iTGluZSIsdFt0LlN1Z2dlc3Q9Ml09IlN1Z2dlc3QifSkodmF8fCh2YT17fSkpO3ZhciB5YTsoZnVuY3Rpb24odCl7dFt0LkxlZnQ9MF09IkxlZnQiLHRbdC5SaWdodD0xXT0iUmlnaHQiLHRbdC5Ob25lPTJdPSJOb25lIix0W3QuTGVmdE9mSW5qZWN0ZWRUZXh0PTNdPSJMZWZ0T2ZJbmplY3RlZFRleHQiLHRbdC5SaWdodE9mSW5qZWN0ZWRUZXh0PTRdPSJSaWdodE9mSW5qZWN0ZWRUZXh0In0pKHlhfHwoeWE9e30pKTt2YXIgd2E7KGZ1bmN0aW9uKHQpe3RbdC5PZmY9MF09Ik9mZiIsdFt0Lk9uPTFdPSJPbiIsdFt0LlJlbGF0aXZlPTJdPSJSZWxhdGl2ZSIsdFt0LkludGVydmFsPTNdPSJJbnRlcnZhbCIsdFt0LkN1c3RvbT00XT0iQ3VzdG9tIn0pKHdhfHwod2E9e30pKTt2YXIgeGE7KGZ1bmN0aW9uKHQpe3RbdC5Ob25lPTBdPSJOb25lIix0W3QuVGV4dD0xXT0iVGV4dCIsdFt0LkJsb2Nrcz0yXT0iQmxvY2tzIn0pKHhhfHwoeGE9e30pKTt2YXIgU2E7KGZ1bmN0aW9uKHQpe3RbdC5TbW9vdGg9MF09IlNtb290aCIsdFt0LkltbWVkaWF0ZT0xXT0iSW1tZWRpYXRlIn0pKFNhfHwoU2E9e30pKTt2YXIgQ2E7KGZ1bmN0aW9uKHQpe3RbdC5BdXRvPTFdPSJBdXRvIix0W3QuSGlkZGVuPTJdPSJIaWRkZW4iLHRbdC5WaXNpYmxlPTNdPSJWaXNpYmxlIn0pKENhfHwoQ2E9e30pKTt2YXIgS3I7KGZ1bmN0aW9uKHQpe3RbdC5MVFI9MF09IkxUUiIsdFt0LlJUTD0xXT0iUlRMIn0pKEtyfHwoS3I9e30pKTt2YXIga2E7KGZ1bmN0aW9uKHQpe3QuT2ZmPSJvZmYiLHQuT25Db2RlPSJvbkNvZGUiLHQuT249Im9uIn0pKGthfHwoa2E9e30pKTt2YXIgX2E7KGZ1bmN0aW9uKHQpe3RbdC5JbnZva2U9MV09Ikludm9rZSIsdFt0LlRyaWdnZXJDaGFyYWN0ZXI9Ml09IlRyaWdnZXJDaGFyYWN0ZXIiLHRbdC5Db250ZW50Q2hhbmdlPTNdPSJDb250ZW50Q2hhbmdlIn0pKF9hfHwoX2E9e30pKTt2YXIgRWE7KGZ1bmN0aW9uKHQpe3RbdC5GaWxlPTBdPSJGaWxlIix0W3QuTW9kdWxlPTFdPSJNb2R1bGUiLHRbdC5OYW1lc3BhY2U9Ml09Ik5hbWVzcGFjZSIsdFt0LlBhY2thZ2U9M109IlBhY2thZ2UiLHRbdC5DbGFzcz00XT0iQ2xhc3MiLHRbdC5NZXRob2Q9NV09Ik1ldGhvZCIsdFt0LlByb3BlcnR5PTZdPSJQcm9wZXJ0eSIsdFt0LkZpZWxkPTddPSJGaWVsZCIsdFt0LkNvbnN0cnVjdG9yPThdPSJDb25zdHJ1Y3RvciIsdFt0LkVudW09OV09IkVudW0iLHRbdC5JbnRlcmZhY2U9MTBdPSJJbnRlcmZhY2UiLHRbdC5GdW5jdGlvbj0xMV09IkZ1bmN0aW9uIix0W3QuVmFyaWFibGU9MTJdPSJWYXJpYWJsZSIsdFt0LkNvbnN0YW50PTEzXT0iQ29uc3RhbnQiLHRbdC5TdHJpbmc9MTRdPSJTdHJpbmciLHRbdC5OdW1iZXI9MTVdPSJOdW1iZXIiLHRbdC5Cb29sZWFuPTE2XT0iQm9vbGVhbiIsdFt0LkFycmF5PTE3XT0iQXJyYXkiLHRbdC5PYmplY3Q9MThdPSJPYmplY3QiLHRbdC5LZXk9MTldPSJLZXkiLHRbdC5OdWxsPTIwXT0iTnVsbCIsdFt0LkVudW1NZW1iZXI9MjFdPSJFbnVtTWVtYmVyIix0W3QuU3RydWN0PTIyXT0iU3RydWN0Iix0W3QuRXZlbnQ9MjNdPSJFdmVudCIsdFt0Lk9wZXJhdG9yPTI0XT0iT3BlcmF0b3IiLHRbdC5UeXBlUGFyYW1ldGVyPTI1XT0iVHlwZVBhcmFtZXRlciJ9KShFYXx8KEVhPXt9KSk7dmFyIFJhOyhmdW5jdGlvbih0KXt0W3QuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KShSYXx8KFJhPXt9KSk7dmFyIEZhOyhmdW5jdGlvbih0KXt0W3QuSGlkZGVuPTBdPSJIaWRkZW4iLHRbdC5CbGluaz0xXT0iQmxpbmsiLHRbdC5TbW9vdGg9Ml09IlNtb290aCIsdFt0LlBoYXNlPTNdPSJQaGFzZSIsdFt0LkV4cGFuZD00XT0iRXhwYW5kIix0W3QuU29saWQ9NV09IlNvbGlkIn0pKEZhfHwoRmE9e30pKTt2YXIgRGE7KGZ1bmN0aW9uKHQpe3RbdC5MaW5lPTFdPSJMaW5lIix0W3QuQmxvY2s9Ml09IkJsb2NrIix0W3QuVW5kZXJsaW5lPTNdPSJVbmRlcmxpbmUiLHRbdC5MaW5lVGhpbj00XT0iTGluZVRoaW4iLHRbdC5CbG9ja091dGxpbmU9NV09IkJsb2NrT3V0bGluZSIsdFt0LlVuZGVybGluZVRoaW49Nl09IlVuZGVybGluZVRoaW4ifSkoRGF8fChEYT17fSkpO3ZhciBBYTsoZnVuY3Rpb24odCl7dFt0LkFsd2F5c0dyb3dzV2hlblR5cGluZ0F0RWRnZXM9MF09IkFsd2F5c0dyb3dzV2hlblR5cGluZ0F0RWRnZXMiLHRbdC5OZXZlckdyb3dzV2hlblR5cGluZ0F0RWRnZXM9MV09Ik5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsdFt0Lkdyb3dzT25seVdoZW5UeXBpbmdCZWZvcmU9Ml09Ikdyb3dzT25seVdoZW5UeXBpbmdCZWZvcmUiLHRbdC5Hcm93c09ubHlXaGVuVHlwaW5nQWZ0ZXI9M109Ikdyb3dzT25seVdoZW5UeXBpbmdBZnRlciJ9KShBYXx8KEFhPXt9KSk7dmFyIE5hOyhmdW5jdGlvbih0KXt0W3QuTm9uZT0wXT0iTm9uZSIsdFt0LlNhbWU9MV09IlNhbWUiLHRbdC5JbmRlbnQ9Ml09IkluZGVudCIsdFt0LkRlZXBJbmRlbnQ9M109IkRlZXBJbmRlbnQifSkoTmF8fChOYT17fSkpO2NsYXNzIG9ue3N0YXRpYyBjaG9yZChlLG4pe3JldHVybiBUaChlLG4pfX1vbi5DdHJsQ21kPTIwNDgsb24uU2hpZnQ9MTAyNCxvbi5BbHQ9NTEyLG9uLldpbkN0cmw9MjU2O2Z1bmN0aW9uIHFoKCl7cmV0dXJue2VkaXRvcjp2b2lkIDAsbGFuZ3VhZ2VzOnZvaWQgMCxDYW5jZWxsYXRpb25Ub2tlblNvdXJjZTp6aCxFbWl0dGVyOnFlLEtleUNvZGU6SnIsS2V5TW9kOm9uLFBvc2l0aW9uOlllLFJhbmdlOnZlLFNlbGVjdGlvbjp6ZSxTZWxlY3Rpb25EaXJlY3Rpb246S3IsTWFya2VyU2V2ZXJpdHk6WHIsTWFya2VyVGFnOllyLFVyaTpXcixUb2tlbjpCaH19dmFyIE1hO2NsYXNzIGpoe2NvbnN0cnVjdG9yKCl7dGhpc1tNYV09IkxpbmtlZE1hcCIsdGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDAsdGhpcy5fc2l6ZT0wLHRoaXMuX3N0YXRlPTB9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKSx0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMCx0aGlzLl9zaXplPTAsdGhpcy5fc3RhdGUrK31pc0VtcHR5KCl7cmV0dXJuIXRoaXMuX2hlYWQmJiF0aGlzLl90YWlsfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3NpemV9Z2V0IGZpcnN0KCl7dmFyIGU7cmV0dXJuKGU9dGhpcy5faGVhZCk9PT1udWxsfHxlPT09dm9pZCAwP3ZvaWQgMDplLnZhbHVlfWdldCBsYXN0KCl7dmFyIGU7cmV0dXJuKGU9dGhpcy5fdGFpbCk9PT1udWxsfHxlPT09dm9pZCAwP3ZvaWQgMDplLnZhbHVlfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX1nZXQoZSxuPTApe2NvbnN0IHI9dGhpcy5fbWFwLmdldChlKTtpZihyKXJldHVybiBuIT09MCYmdGhpcy50b3VjaChyLG4pLHIudmFsdWV9c2V0KGUsbixyPTApe2xldCBpPXRoaXMuX21hcC5nZXQoZSk7aWYoaSlpLnZhbHVlPW4sciE9PTAmJnRoaXMudG91Y2goaSxyKTtlbHNle3N3aXRjaChpPXtrZXk6ZSx2YWx1ZTpuLG5leHQ6dm9pZCAwLHByZXZpb3VzOnZvaWQgMH0scil7Y2FzZSAwOnRoaXMuYWRkSXRlbUxhc3QoaSk7YnJlYWs7Y2FzZSAxOnRoaXMuYWRkSXRlbUZpcnN0KGkpO2JyZWFrO2Nhc2UgMjp0aGlzLmFkZEl0ZW1MYXN0KGkpO2JyZWFrO2RlZmF1bHQ6dGhpcy5hZGRJdGVtTGFzdChpKTticmVha310aGlzLl9tYXAuc2V0KGUsaSksdGhpcy5fc2l6ZSsrfXJldHVybiB0aGlzfWRlbGV0ZShlKXtyZXR1cm4hIXRoaXMucmVtb3ZlKGUpfXJlbW92ZShlKXtjb25zdCBuPXRoaXMuX21hcC5nZXQoZSk7aWYobilyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLnJlbW92ZUl0ZW0obiksdGhpcy5fc2l6ZS0tLG4udmFsdWV9c2hpZnQoKXtpZighdGhpcy5faGVhZCYmIXRoaXMuX3RhaWwpcmV0dXJuO2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2NvbnN0IGU9dGhpcy5faGVhZDtyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZShlLmtleSksdGhpcy5yZW1vdmVJdGVtKGUpLHRoaXMuX3NpemUtLSxlLnZhbHVlfWZvckVhY2goZSxuKXtjb25zdCByPXRoaXMuX3N0YXRlO2xldCBpPXRoaXMuX2hlYWQ7Zm9yKDtpOyl7aWYobj9lLmJpbmQobikoaS52YWx1ZSxpLmtleSx0aGlzKTplKGkudmFsdWUsaS5rZXksdGhpcyksdGhpcy5fc3RhdGUhPT1yKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2k9aS5uZXh0fX1rZXlzKCl7Y29uc3QgZT10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBpPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBpfSxuZXh0KCl7aWYoZS5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2lmKHIpe2NvbnN0IHM9e3ZhbHVlOnIua2V5LGRvbmU6ITF9O3JldHVybiByPXIubmV4dCxzfWVsc2UgcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBpfXZhbHVlcygpe2NvbnN0IGU9dGhpcyxuPXRoaXMuX3N0YXRlO2xldCByPXRoaXMuX2hlYWQ7Y29uc3QgaT17W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gaX0sbmV4dCgpe2lmKGUuX3N0YXRlIT09bil0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTtpZihyKXtjb25zdCBzPXt2YWx1ZTpyLnZhbHVlLGRvbmU6ITF9O3JldHVybiByPXIubmV4dCxzfWVsc2UgcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBpfWVudHJpZXMoKXtjb25zdCBlPXRoaXMsbj10aGlzLl9zdGF0ZTtsZXQgcj10aGlzLl9oZWFkO2NvbnN0IGk9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGl9LG5leHQoKXtpZihlLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7aWYocil7Y29uc3Qgcz17dmFsdWU6W3Iua2V5LHIudmFsdWVdLGRvbmU6ITF9O3JldHVybiByPXIubmV4dCxzfWVsc2UgcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBpfVsoTWE9U3ltYm9sLnRvU3RyaW5nVGFnLFN5bWJvbC5pdGVyYXRvcildKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfXRyaW1PbGQoZSl7aWYoZT49dGhpcy5zaXplKXJldHVybjtpZihlPT09MCl7dGhpcy5jbGVhcigpO3JldHVybn1sZXQgbj10aGlzLl9oZWFkLHI9dGhpcy5zaXplO2Zvcig7biYmcj5lOyl0aGlzLl9tYXAuZGVsZXRlKG4ua2V5KSxuPW4ubmV4dCxyLS07dGhpcy5faGVhZD1uLHRoaXMuX3NpemU9cixuJiYobi5wcmV2aW91cz12b2lkIDApLHRoaXMuX3N0YXRlKyt9YWRkSXRlbUZpcnN0KGUpe2lmKCF0aGlzLl9oZWFkJiYhdGhpcy5fdGFpbCl0aGlzLl90YWlsPWU7ZWxzZSBpZih0aGlzLl9oZWFkKWUubmV4dD10aGlzLl9oZWFkLHRoaXMuX2hlYWQucHJldmlvdXM9ZTtlbHNlIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dGhpcy5faGVhZD1lLHRoaXMuX3N0YXRlKyt9YWRkSXRlbUxhc3QoZSl7aWYoIXRoaXMuX2hlYWQmJiF0aGlzLl90YWlsKXRoaXMuX2hlYWQ9ZTtlbHNlIGlmKHRoaXMuX3RhaWwpZS5wcmV2aW91cz10aGlzLl90YWlsLHRoaXMuX3RhaWwubmV4dD1lO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTt0aGlzLl90YWlsPWUsdGhpcy5fc3RhdGUrK31yZW1vdmVJdGVtKGUpe2lmKGU9PT10aGlzLl9oZWFkJiZlPT09dGhpcy5fdGFpbCl0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMDtlbHNlIGlmKGU9PT10aGlzLl9oZWFkKXtpZighZS5uZXh0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5uZXh0LnByZXZpb3VzPXZvaWQgMCx0aGlzLl9oZWFkPWUubmV4dH1lbHNlIGlmKGU9PT10aGlzLl90YWlsKXtpZighZS5wcmV2aW91cyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2UucHJldmlvdXMubmV4dD12b2lkIDAsdGhpcy5fdGFpbD1lLnByZXZpb3VzfWVsc2V7Y29uc3Qgbj1lLm5leHQscj1lLnByZXZpb3VzO2lmKCFufHwhcil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO24ucHJldmlvdXM9cixyLm5leHQ9bn1lLm5leHQ9dm9pZCAwLGUucHJldmlvdXM9dm9pZCAwLHRoaXMuX3N0YXRlKyt9dG91Y2goZSxuKXtpZighdGhpcy5faGVhZHx8IXRoaXMuX3RhaWwpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtpZighKG4hPT0xJiZuIT09Mikpe2lmKG49PT0xKXtpZihlPT09dGhpcy5faGVhZClyZXR1cm47Y29uc3Qgcj1lLm5leHQsaT1lLnByZXZpb3VzO2U9PT10aGlzLl90YWlsPyhpLm5leHQ9dm9pZCAwLHRoaXMuX3RhaWw9aSk6KHIucHJldmlvdXM9aSxpLm5leHQ9ciksZS5wcmV2aW91cz12b2lkIDAsZS5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz1lLHRoaXMuX2hlYWQ9ZSx0aGlzLl9zdGF0ZSsrfWVsc2UgaWYobj09PTIpe2lmKGU9PT10aGlzLl90YWlsKXJldHVybjtjb25zdCByPWUubmV4dCxpPWUucHJldmlvdXM7ZT09PXRoaXMuX2hlYWQ/KHIucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9cik6KHIucHJldmlvdXM9aSxpLm5leHQ9ciksZS5uZXh0PXZvaWQgMCxlLnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PWUsdGhpcy5fdGFpbD1lLHRoaXMuX3N0YXRlKyt9fX10b0pTT04oKXtjb25zdCBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goKG4scik9PntlLnB1c2goW3Isbl0pfSksZX1mcm9tSlNPTihlKXt0aGlzLmNsZWFyKCk7Zm9yKGNvbnN0W24scl1vZiBlKXRoaXMuc2V0KG4scil9fWNsYXNzICRoIGV4dGVuZHMgamh7Y29uc3RydWN0b3IoZSxuPTEpe3N1cGVyKCksdGhpcy5fbGltaXQ9ZSx0aGlzLl9yYXRpbz1NYXRoLm1pbihNYXRoLm1heCgwLG4pLDEpfWdldCBsaW1pdCgpe3JldHVybiB0aGlzLl9saW1pdH1zZXQgbGltaXQoZSl7dGhpcy5fbGltaXQ9ZSx0aGlzLmNoZWNrVHJpbSgpfWdldChlLG49Mil7cmV0dXJuIHN1cGVyLmdldChlLG4pfXBlZWsoZSl7cmV0dXJuIHN1cGVyLmdldChlLDApfXNldChlLG4pe3JldHVybiBzdXBlci5zZXQoZSxuLDIpLHRoaXMuY2hlY2tUcmltKCksdGhpc31jaGVja1RyaW0oKXt0aGlzLnNpemU+dGhpcy5fbGltaXQmJnRoaXMudHJpbU9sZChNYXRoLnJvdW5kKHRoaXMuX2xpbWl0KnRoaXMuX3JhdGlvKSl9fWNsYXNzIEhoe2NvbnN0cnVjdG9yKCl7dGhpcy5tYXA9bmV3IE1hcH1hZGQoZSxuKXtsZXQgcj10aGlzLm1hcC5nZXQoZSk7cnx8KHI9bmV3IFNldCx0aGlzLm1hcC5zZXQoZSxyKSksci5hZGQobil9ZGVsZXRlKGUsbil7Y29uc3Qgcj10aGlzLm1hcC5nZXQoZSk7ciYmKHIuZGVsZXRlKG4pLHIuc2l6ZT09PTAmJnRoaXMubWFwLmRlbGV0ZShlKSl9Zm9yRWFjaChlLG4pe2NvbnN0IHI9dGhpcy5tYXAuZ2V0KGUpO3ImJnIuZm9yRWFjaChuKX1nZXQoZSl7Y29uc3Qgbj10aGlzLm1hcC5nZXQoZSk7cmV0dXJuIG58fG5ldyBTZXR9fW5ldyAkaCgxMCk7dmFyIHphOyhmdW5jdGlvbih0KXt0W3QuTGVmdD0xXT0iTGVmdCIsdFt0LkNlbnRlcj0yXT0iQ2VudGVyIix0W3QuUmlnaHQ9NF09IlJpZ2h0Iix0W3QuRnVsbD03XT0iRnVsbCJ9KSh6YXx8KHphPXt9KSk7dmFyIExhOyhmdW5jdGlvbih0KXt0W3QuTGVmdD0xXT0iTGVmdCIsdFt0LkNlbnRlcj0yXT0iQ2VudGVyIix0W3QuUmlnaHQ9M109IlJpZ2h0In0pKExhfHwoTGE9e30pKTt2YXIgUGE7KGZ1bmN0aW9uKHQpe3RbdC5Cb3RoPTBdPSJCb3RoIix0W3QuUmlnaHQ9MV09IlJpZ2h0Iix0W3QuTGVmdD0yXT0iTGVmdCIsdFt0Lk5vbmU9M109Ik5vbmUifSkoUGF8fChQYT17fSkpO2Z1bmN0aW9uIEdoKHQsZSxuLHIsaSl7aWYocj09PTApcmV0dXJuITA7Y29uc3Qgcz1lLmNoYXJDb2RlQXQoci0xKTtpZih0LmdldChzKSE9PTB8fHM9PT0xM3x8cz09PTEwKXJldHVybiEwO2lmKGk+MCl7Y29uc3QgYT1lLmNoYXJDb2RlQXQocik7aWYodC5nZXQoYSkhPT0wKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIEpoKHQsZSxuLHIsaSl7aWYocitpPT09bilyZXR1cm4hMDtjb25zdCBzPWUuY2hhckNvZGVBdChyK2kpO2lmKHQuZ2V0KHMpIT09MHx8cz09PTEzfHxzPT09MTApcmV0dXJuITA7aWYoaT4wKXtjb25zdCBhPWUuY2hhckNvZGVBdChyK2ktMSk7aWYodC5nZXQoYSkhPT0wKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIFhoKHQsZSxuLHIsaSl7cmV0dXJuIEdoKHQsZSxuLHIsaSkmJkpoKHQsZSxuLHIsaSl9Y2xhc3MgWWh7Y29uc3RydWN0b3IoZSxuKXt0aGlzLl93b3JkU2VwYXJhdG9ycz1lLHRoaXMuX3NlYXJjaFJlZ2V4PW4sdGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD0tMSx0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9MH1yZXNldChlKXt0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXg9ZSx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfW5leHQoZSl7Y29uc3Qgbj1lLmxlbmd0aDtsZXQgcjtkb3tpZih0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4K3RoaXMuX3ByZXZNYXRjaExlbmd0aD09PW58fChyPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSksIXIpKXJldHVybiBudWxsO2NvbnN0IGk9ci5pbmRleCxzPXJbMF0ubGVuZ3RoO2lmKGk9PT10aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4JiZzPT09dGhpcy5fcHJldk1hdGNoTGVuZ3RoKXtpZihzPT09MCl7VWMoZSxuLHRoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCk+NjU1MzU/dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0yOnRoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9MTtjb250aW51ZX1yZXR1cm4gbnVsbH1pZih0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PWksdGhpcy5fcHJldk1hdGNoTGVuZ3RoPXMsIXRoaXMuX3dvcmRTZXBhcmF0b3JzfHxYaCh0aGlzLl93b3JkU2VwYXJhdG9ycyxlLG4saSxzKSlyZXR1cm4gcn13aGlsZShyKTtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gS2godCxlPSJVbnJlYWNoYWJsZSIpe3Rocm93IG5ldyBFcnJvcihlKX1mdW5jdGlvbiBZbih0KXtpZighdCgpKXtkZWJ1Z2dlcjt0KCksbHMobmV3IHR0KCJBc3NlcnRpb24gRmFpbGVkIikpfX1mdW5jdGlvbiBJYSh0LGUpe2xldCBuPTA7Zm9yKDtuPHQubGVuZ3RoLTE7KXtjb25zdCByPXRbbl0saT10W24rMV07aWYoIWUocixpKSlyZXR1cm4hMTtuKyt9cmV0dXJuITB9Y2xhc3MgUWh7c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhlLG4scil7Y29uc3QgaT1yP3Iuc3RhcnRMaW5lTnVtYmVyOjEscz1yP3IuZW5kTGluZU51bWJlcjplLmdldExpbmVDb3VudCgpLGE9bmV3IFRhKG4pLG89YS5nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCk7bGV0IGw7bz09PSJhbGxOb25CYXNpY0FzY2lpIj9sPW5ldyBSZWdFeHAoIlteXFx0XFxuXFxyXFx4MjAtXFx4N0VdIiwiZyIpOmw9bmV3IFJlZ0V4cChgJHtaaChBcnJheS5mcm9tKG8pKX1gLCJnIik7Y29uc3QgYz1uZXcgWWgobnVsbCxsKSxoPVtdO2xldCB1PSExLGYsbT0wLGc9MCxiPTA7ZTpmb3IobGV0IHk9aSxDPXM7eTw9Qzt5Kyspe2NvbnN0IGs9ZS5nZXRMaW5lQ29udGVudCh5KSx3PWsubGVuZ3RoO2MucmVzZXQoMCk7ZG8gaWYoZj1jLm5leHQoayksZil7bGV0IEY9Zi5pbmRleCxfPWYuaW5kZXgrZlswXS5sZW5ndGg7aWYoRj4wKXtjb25zdCBKPWsuY2hhckNvZGVBdChGLTEpO1ByKEopJiZGLS19aWYoXysxPHcpe2NvbnN0IEo9ay5jaGFyQ29kZUF0KF8tMSk7UHIoSikmJl8rK31jb25zdCBQPWsuc3Vic3RyaW5nKEYsXyk7bGV0IFc9VnIoRisxLEFzLGssMCk7VyYmVy5lbmRDb2x1bW48PUYrMSYmKFc9bnVsbCk7Y29uc3QgVD1hLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoUCxXP1cud29yZDpudWxsKTtpZihUIT09MCl7aWYoVD09PTM/bSsrOlQ9PT0yP2crKzpUPT09MT9iKys6S2goKSxoLmxlbmd0aD49MWUzKXt1PSEwO2JyZWFrIGV9aC5wdXNoKG5ldyB2ZSh5LEYrMSx5LF8rMSkpfX13aGlsZShmKX1yZXR1cm57cmFuZ2VzOmgsaGFzTW9yZTp1LGFtYmlndW91c0NoYXJhY3RlckNvdW50Om0saW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6Zyxub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6Yn19c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0UmVhc29uKGUsbil7Y29uc3Qgcj1uZXcgVGEobik7c3dpdGNoKHIuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlLG51bGwpKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAyOnJldHVybntraW5kOjF9O2Nhc2UgMzp7Y29uc3Qgcz1lLmNvZGVQb2ludEF0KDApLGE9ci5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldFByaW1hcnlDb25mdXNhYmxlKHMpLG89U3QuZ2V0TG9jYWxlcygpLmZpbHRlcihsPT4hU3QuZ2V0SW5zdGFuY2UobmV3IFNldChbLi4ubi5hbGxvd2VkTG9jYWxlcyxsXSkpLmlzQW1iaWd1b3VzKHMpKTtyZXR1cm57a2luZDowLGNvbmZ1c2FibGVXaXRoOlN0cmluZy5mcm9tQ29kZVBvaW50KGEpLG5vdEFtYmlndW91c0luTG9jYWxlczpvfX1jYXNlIDE6cmV0dXJue2tpbmQ6Mn19fX1mdW5jdGlvbiBaaCh0LGUpe3JldHVybmBbJHtMYyh0Lm1hcChyPT5TdHJpbmcuZnJvbUNvZGVQb2ludChyKSkuam9pbigiIikpfV1gfWNsYXNzIFRhe2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuYWxsb3dlZENvZGVQb2ludHM9bmV3IFNldChlLmFsbG93ZWRDb2RlUG9pbnRzKSx0aGlzLmFtYmlndW91c0NoYXJhY3RlcnM9U3QuZ2V0SW5zdGFuY2UobmV3IFNldChlLmFsbG93ZWRMb2NhbGVzKSl9Z2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpe2lmKHRoaXMub3B0aW9ucy5ub25CYXNpY0FTQ0lJKXJldHVybiJhbGxOb25CYXNpY0FzY2lpIjtjb25zdCBlPW5ldyBTZXQ7aWYodGhpcy5vcHRpb25zLmludmlzaWJsZUNoYXJhY3RlcnMpZm9yKGNvbnN0IG4gb2YgaHQuY29kZVBvaW50cylXYShTdHJpbmcuZnJvbUNvZGVQb2ludChuKSl8fGUuYWRkKG4pO2lmKHRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzKWZvcihjb25zdCBuIG9mIHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpKWUuYWRkKG4pO2Zvcihjb25zdCBuIG9mIHRoaXMuYWxsb3dlZENvZGVQb2ludHMpZS5kZWxldGUobik7cmV0dXJuIGV9c2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlLG4pe2NvbnN0IHI9ZS5jb2RlUG9pbnRBdCgwKTtpZih0aGlzLmFsbG93ZWRDb2RlUG9pbnRzLmhhcyhyKSlyZXR1cm4gMDtpZih0aGlzLm9wdGlvbnMubm9uQmFzaWNBU0NJSSlyZXR1cm4gMTtsZXQgaT0hMSxzPSExO2lmKG4pZm9yKGNvbnN0IGEgb2Ygbil7Y29uc3Qgbz1hLmNvZGVQb2ludEF0KDApLGw9QmMoYSk7aT1pfHxsLCFsJiYhdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmlzQW1iaWd1b3VzKG8pJiYhaHQuaXNJbnZpc2libGVDaGFyYWN0ZXIobykmJihzPSEwKX1yZXR1cm4haSYmcz8wOnRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzJiYhV2EoZSkmJmh0LmlzSW52aXNpYmxlQ2hhcmFjdGVyKHIpPzI6dGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMmJnRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhyKT8zOjB9fWZ1bmN0aW9uIFdhKHQpe3JldHVybiB0PT09IiAifHx0PT09YApgfHx0PT09IgkifWNsYXNzIEtue2NvbnN0cnVjdG9yKGUsbixyKXt0aGlzLmNoYW5nZXM9ZSx0aGlzLm1vdmVzPW4sdGhpcy5oaXRUaW1lb3V0PXJ9fWNsYXNzIGVke2NvbnN0cnVjdG9yKGUsbil7dGhpcy5saW5lUmFuZ2VNYXBwaW5nPWUsdGhpcy5jaGFuZ2VzPW59fWNsYXNzIFF7c3RhdGljIGFkZFJhbmdlKGUsbil7bGV0IHI9MDtmb3IoO3I8bi5sZW5ndGgmJm5bcl0uZW5kRXhjbHVzaXZlPGUuc3RhcnQ7KXIrKztsZXQgaT1yO2Zvcig7aTxuLmxlbmd0aCYmbltpXS5zdGFydDw9ZS5lbmRFeGNsdXNpdmU7KWkrKztpZihyPT09aSluLnNwbGljZShyLDAsZSk7ZWxzZXtjb25zdCBzPU1hdGgubWluKGUuc3RhcnQsbltyXS5zdGFydCksYT1NYXRoLm1heChlLmVuZEV4Y2x1c2l2ZSxuW2ktMV0uZW5kRXhjbHVzaXZlKTtuLnNwbGljZShyLGktcixuZXcgUShzLGEpKX19c3RhdGljIHRyeUNyZWF0ZShlLG4pe2lmKCEoZT5uKSlyZXR1cm4gbmV3IFEoZSxuKX1zdGF0aWMgb2ZMZW5ndGgoZSl7cmV0dXJuIG5ldyBRKDAsZSl9c3RhdGljIG9mU3RhcnRBbmRMZW5ndGgoZSxuKXtyZXR1cm4gbmV3IFEoZSxlK24pfWNvbnN0cnVjdG9yKGUsbil7aWYodGhpcy5zdGFydD1lLHRoaXMuZW5kRXhjbHVzaXZlPW4sZT5uKXRocm93IG5ldyB0dChgSW52YWxpZCByYW5nZTogJHt0aGlzLnRvU3RyaW5nKCl9YCl9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gdGhpcy5zdGFydD09PXRoaXMuZW5kRXhjbHVzaXZlfWRlbHRhKGUpe3JldHVybiBuZXcgUSh0aGlzLnN0YXJ0K2UsdGhpcy5lbmRFeGNsdXNpdmUrZSl9ZGVsdGFTdGFydChlKXtyZXR1cm4gbmV3IFEodGhpcy5zdGFydCtlLHRoaXMuZW5kRXhjbHVzaXZlKX1kZWx0YUVuZChlKXtyZXR1cm4gbmV3IFEodGhpcy5zdGFydCx0aGlzLmVuZEV4Y2x1c2l2ZStlKX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kRXhjbHVzaXZlLXRoaXMuc3RhcnR9dG9TdHJpbmcoKXtyZXR1cm5gWyR7dGhpcy5zdGFydH0sICR7dGhpcy5lbmRFeGNsdXNpdmV9KWB9Y29udGFpbnMoZSl7cmV0dXJuIHRoaXMuc3RhcnQ8PWUmJmU8dGhpcy5lbmRFeGNsdXNpdmV9am9pbihlKXtyZXR1cm4gbmV3IFEoTWF0aC5taW4odGhpcy5zdGFydCxlLnN0YXJ0KSxNYXRoLm1heCh0aGlzLmVuZEV4Y2x1c2l2ZSxlLmVuZEV4Y2x1c2l2ZSkpfWludGVyc2VjdChlKXtjb25zdCBuPU1hdGgubWF4KHRoaXMuc3RhcnQsZS5zdGFydCkscj1NYXRoLm1pbih0aGlzLmVuZEV4Y2x1c2l2ZSxlLmVuZEV4Y2x1c2l2ZSk7aWYobjw9cilyZXR1cm4gbmV3IFEobixyKX1pbnRlcnNlY3RzKGUpe2NvbnN0IG49TWF0aC5tYXgodGhpcy5zdGFydCxlLnN0YXJ0KSxyPU1hdGgubWluKHRoaXMuZW5kRXhjbHVzaXZlLGUuZW5kRXhjbHVzaXZlKTtyZXR1cm4gbjxyfWlzQmVmb3JlKGUpe3JldHVybiB0aGlzLmVuZEV4Y2x1c2l2ZTw9ZS5zdGFydH1pc0FmdGVyKGUpe3JldHVybiB0aGlzLnN0YXJ0Pj1lLmVuZEV4Y2x1c2l2ZX1zbGljZShlKXtyZXR1cm4gZS5zbGljZSh0aGlzLnN0YXJ0LHRoaXMuZW5kRXhjbHVzaXZlKX1zdWJzdHJpbmcoZSl7cmV0dXJuIGUuc3Vic3RyaW5nKHRoaXMuc3RhcnQsdGhpcy5lbmRFeGNsdXNpdmUpfWNsaXAoZSl7aWYodGhpcy5pc0VtcHR5KXRocm93IG5ldyB0dChgSW52YWxpZCBjbGlwcGluZyByYW5nZTogJHt0aGlzLnRvU3RyaW5nKCl9YCk7cmV0dXJuIE1hdGgubWF4KHRoaXMuc3RhcnQsTWF0aC5taW4odGhpcy5lbmRFeGNsdXNpdmUtMSxlKSl9Y2xpcEN5Y2xpYyhlKXtpZih0aGlzLmlzRW1wdHkpdGhyb3cgbmV3IHR0KGBJbnZhbGlkIGNsaXBwaW5nIHJhbmdlOiAke3RoaXMudG9TdHJpbmcoKX1gKTtyZXR1cm4gZTx0aGlzLnN0YXJ0P3RoaXMuZW5kRXhjbHVzaXZlLSh0aGlzLnN0YXJ0LWUpJXRoaXMubGVuZ3RoOmU+PXRoaXMuZW5kRXhjbHVzaXZlP3RoaXMuc3RhcnQrKGUtdGhpcy5zdGFydCkldGhpcy5sZW5ndGg6ZX1mb3JFYWNoKGUpe2ZvcihsZXQgbj10aGlzLnN0YXJ0O248dGhpcy5lbmRFeGNsdXNpdmU7bisrKWUobil9fWZ1bmN0aW9uIFZ0KHQsZSl7Y29uc3Qgbj1sbih0LGUpO3JldHVybiBuPT09LTE/dm9pZCAwOnRbbl19ZnVuY3Rpb24gbG4odCxlLG49MCxyPXQubGVuZ3RoKXtsZXQgaT1uLHM9cjtmb3IoO2k8czspe2NvbnN0IGE9TWF0aC5mbG9vcigoaStzKS8yKTtlKHRbYV0pP2k9YSsxOnM9YX1yZXR1cm4gaS0xfWZ1bmN0aW9uIHRkKHQsZSl7Y29uc3Qgbj1Rcih0LGUpO3JldHVybiBuPT09dC5sZW5ndGg/dm9pZCAwOnRbbl19ZnVuY3Rpb24gUXIodCxlLG49MCxyPXQubGVuZ3RoKXtsZXQgaT1uLHM9cjtmb3IoO2k8czspe2NvbnN0IGE9TWF0aC5mbG9vcigoaStzKS8yKTtlKHRbYV0pP3M9YTppPWErMX1yZXR1cm4gaX1jbGFzcyBjbntjb25zdHJ1Y3RvcihlKXt0aGlzLl9hcnJheT1lLHRoaXMuX2ZpbmRMYXN0TW9ub3Rvbm91c0xhc3RJZHg9MH1maW5kTGFzdE1vbm90b25vdXMoZSl7aWYoY24uYXNzZXJ0SW52YXJpYW50cyl7aWYodGhpcy5fcHJldkZpbmRMYXN0UHJlZGljYXRlKXtmb3IoY29uc3QgciBvZiB0aGlzLl9hcnJheSlpZih0aGlzLl9wcmV2RmluZExhc3RQcmVkaWNhdGUocikmJiFlKHIpKXRocm93IG5ldyBFcnJvcigiTW9ub3Rvbm91c0FycmF5OiBjdXJyZW50IHByZWRpY2F0ZSBtdXN0IGJlIHdlYWtlciB0aGFuIChvciBlcXVhbCB0bykgdGhlIHByZXZpb3VzIHByZWRpY2F0ZS4iKX10aGlzLl9wcmV2RmluZExhc3RQcmVkaWNhdGU9ZX1jb25zdCBuPWxuKHRoaXMuX2FycmF5LGUsdGhpcy5fZmluZExhc3RNb25vdG9ub3VzTGFzdElkeCk7cmV0dXJuIHRoaXMuX2ZpbmRMYXN0TW9ub3Rvbm91c0xhc3RJZHg9bisxLG49PT0tMT92b2lkIDA6dGhpcy5fYXJyYXlbbl19fWNuLmFzc2VydEludmFyaWFudHM9ITE7Y2xhc3MgS3tzdGF0aWMgZnJvbVJhbmdlSW5jbHVzaXZlKGUpe3JldHVybiBuZXcgSyhlLnN0YXJ0TGluZU51bWJlcixlLmVuZExpbmVOdW1iZXIrMSl9c3RhdGljIGpvaW5NYW55KGUpe2lmKGUubGVuZ3RoPT09MClyZXR1cm5bXTtsZXQgbj1uZXcgS2UoZVswXS5zbGljZSgpKTtmb3IobGV0IHI9MTtyPGUubGVuZ3RoO3IrKyluPW4uZ2V0VW5pb24obmV3IEtlKGVbcl0uc2xpY2UoKSkpO3JldHVybiBuLnJhbmdlc31zdGF0aWMgam9pbihlKXtpZihlLmxlbmd0aD09PTApdGhyb3cgbmV3IHR0KCJsaW5lUmFuZ2VzIGNhbm5vdCBiZSBlbXB0eSIpO2xldCBuPWVbMF0uc3RhcnRMaW5lTnVtYmVyLHI9ZVswXS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlO2ZvcihsZXQgaT0xO2k8ZS5sZW5ndGg7aSsrKW49TWF0aC5taW4obixlW2ldLnN0YXJ0TGluZU51bWJlcikscj1NYXRoLm1heChyLGVbaV0uZW5kTGluZU51bWJlckV4Y2x1c2l2ZSk7cmV0dXJuIG5ldyBLKG4scil9c3RhdGljIG9mTGVuZ3RoKGUsbil7cmV0dXJuIG5ldyBLKGUsZStuKX1zdGF0aWMgZGVzZXJpYWxpemUoZSl7cmV0dXJuIG5ldyBLKGVbMF0sZVsxXSl9Y29uc3RydWN0b3IoZSxuKXtpZihlPm4pdGhyb3cgbmV3IHR0KGBzdGFydExpbmVOdW1iZXIgJHtlfSBjYW5ub3QgYmUgYWZ0ZXIgZW5kTGluZU51bWJlckV4Y2x1c2l2ZSAke259YCk7dGhpcy5zdGFydExpbmVOdW1iZXI9ZSx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU9bn1jb250YWlucyhlKXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI8PWUmJmU8dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWdldCBpc0VtcHR5KCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPT09dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWRlbHRhKGUpe3JldHVybiBuZXcgSyh0aGlzLnN0YXJ0TGluZU51bWJlcitlLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStlKX1kZWx0YUxlbmd0aChlKXtyZXR1cm4gbmV3IEsodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK2UpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLXRoaXMuc3RhcnRMaW5lTnVtYmVyfWpvaW4oZSl7cmV0dXJuIG5ldyBLKE1hdGgubWluKHRoaXMuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRMaW5lTnVtYmVyKSxNYXRoLm1heCh0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSl9dG9TdHJpbmcoKXtyZXR1cm5gWyR7dGhpcy5zdGFydExpbmVOdW1iZXJ9LCR7dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfSlgfWludGVyc2VjdChlKXtjb25zdCBuPU1hdGgubWF4KHRoaXMuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRMaW5lTnVtYmVyKSxyPU1hdGgubWluKHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO2lmKG48PXIpcmV0dXJuIG5ldyBLKG4scil9aW50ZXJzZWN0c1N0cmljdChlKXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI8ZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZlLnN0YXJ0TGluZU51bWJlcjx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9b3ZlcmxhcE9yVG91Y2goZSl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPD1lLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUmJmUuc3RhcnRMaW5lTnVtYmVyPD10aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9ZXF1YWxzKGUpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU9PT1lLmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9dG9JbmNsdXNpdmVSYW5nZSgpe3JldHVybiB0aGlzLmlzRW1wdHk/bnVsbDpuZXcgdmUodGhpcy5zdGFydExpbmVOdW1iZXIsMSx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUil9dG9FeGNsdXNpdmVSYW5nZSgpe3JldHVybiBuZXcgdmUodGhpcy5zdGFydExpbmVOdW1iZXIsMSx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsMSl9bWFwVG9MaW5lQXJyYXkoZSl7Y29uc3Qgbj1bXTtmb3IobGV0IHI9dGhpcy5zdGFydExpbmVOdW1iZXI7cjx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU7cisrKW4ucHVzaChlKHIpKTtyZXR1cm4gbn1mb3JFYWNoKGUpe2ZvcihsZXQgbj10aGlzLnN0YXJ0TGluZU51bWJlcjtuPHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTtuKyspZShuKX1zZXJpYWxpemUoKXtyZXR1cm5bdGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlXX1pbmNsdWRlcyhlKXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI8PWUmJmU8dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfXRvT2Zmc2V0UmFuZ2UoKXtyZXR1cm4gbmV3IFEodGhpcy5zdGFydExpbmVOdW1iZXItMSx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtMSl9fWNsYXNzIEtle2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuX25vcm1hbGl6ZWRSYW5nZXM9ZX1nZXQgcmFuZ2VzKCl7cmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRSYW5nZXN9YWRkUmFuZ2UoZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybjtjb25zdCBuPVFyKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMsaT0+aS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPj1lLnN0YXJ0TGluZU51bWJlcikscj1sbih0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLGk9Pmkuc3RhcnRMaW5lTnVtYmVyPD1lLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpKzE7aWYobj09PXIpdGhpcy5fbm9ybWFsaXplZFJhbmdlcy5zcGxpY2UobiwwLGUpO2Vsc2UgaWYobj09PXItMSl7Y29uc3QgaT10aGlzLl9ub3JtYWxpemVkUmFuZ2VzW25dO3RoaXMuX25vcm1hbGl6ZWRSYW5nZXNbbl09aS5qb2luKGUpfWVsc2V7Y29uc3QgaT10aGlzLl9ub3JtYWxpemVkUmFuZ2VzW25dLmpvaW4odGhpcy5fbm9ybWFsaXplZFJhbmdlc1tyLTFdKS5qb2luKGUpO3RoaXMuX25vcm1hbGl6ZWRSYW5nZXMuc3BsaWNlKG4sci1uLGkpfX1jb250YWlucyhlKXtjb25zdCBuPVZ0KHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMscj0+ci5zdGFydExpbmVOdW1iZXI8PWUpO3JldHVybiEhbiYmbi5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPmV9aW50ZXJzZWN0cyhlKXtjb25zdCBuPVZ0KHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMscj0+ci5zdGFydExpbmVOdW1iZXI8ZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKTtyZXR1cm4hIW4mJm4uZW5kTGluZU51bWJlckV4Y2x1c2l2ZT5lLnN0YXJ0TGluZU51bWJlcn1nZXRVbmlvbihlKXtpZih0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aD09PTApcmV0dXJuIGU7aWYoZS5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGg9PT0wKXJldHVybiB0aGlzO2NvbnN0IG49W107bGV0IHI9MCxpPTAscz1udWxsO2Zvcig7cjx0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aHx8aTxlLl9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aDspe2xldCBhPW51bGw7aWYocjx0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aCYmaTxlLl9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aCl7Y29uc3Qgbz10aGlzLl9ub3JtYWxpemVkUmFuZ2VzW3JdLGw9ZS5fbm9ybWFsaXplZFJhbmdlc1tpXTtvLnN0YXJ0TGluZU51bWJlcjxsLnN0YXJ0TGluZU51bWJlcj8oYT1vLHIrKyk6KGE9bCxpKyspfWVsc2Ugcjx0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aD8oYT10aGlzLl9ub3JtYWxpemVkUmFuZ2VzW3JdLHIrKyk6KGE9ZS5fbm9ybWFsaXplZFJhbmdlc1tpXSxpKyspO3M9PT1udWxsP3M9YTpzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+PWEuc3RhcnRMaW5lTnVtYmVyP3M9bmV3IEsocy5zdGFydExpbmVOdW1iZXIsTWF0aC5tYXgocy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGEuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkpOihuLnB1c2gocykscz1hKX1yZXR1cm4gcyE9PW51bGwmJm4ucHVzaChzKSxuZXcgS2Uobil9c3VidHJhY3RGcm9tKGUpe2NvbnN0IG49UXIodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxhPT5hLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+PWUuc3RhcnRMaW5lTnVtYmVyKSxyPWxuKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMsYT0+YS5zdGFydExpbmVOdW1iZXI8PWUuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkrMTtpZihuPT09cilyZXR1cm4gbmV3IEtlKFtlXSk7Y29uc3QgaT1bXTtsZXQgcz1lLnN0YXJ0TGluZU51bWJlcjtmb3IobGV0IGE9bjthPHI7YSsrKXtjb25zdCBvPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbYV07by5zdGFydExpbmVOdW1iZXI+cyYmaS5wdXNoKG5ldyBLKHMsby5zdGFydExpbmVOdW1iZXIpKSxzPW8uZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1yZXR1cm4gczxlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUmJmkucHVzaChuZXcgSyhzLGUuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkpLG5ldyBLZShpKX10b1N0cmluZygpe3JldHVybiB0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLm1hcChlPT5lLnRvU3RyaW5nKCkpLmpvaW4oIiwgIil9Z2V0SW50ZXJzZWN0aW9uKGUpe2NvbnN0IG49W107bGV0IHI9MCxpPTA7Zm9yKDtyPHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoJiZpPGUuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoOyl7Y29uc3Qgcz10aGlzLl9ub3JtYWxpemVkUmFuZ2VzW3JdLGE9ZS5fbm9ybWFsaXplZFJhbmdlc1tpXSxvPXMuaW50ZXJzZWN0KGEpO28mJiFvLmlzRW1wdHkmJm4ucHVzaChvKSxzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU8YS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlP3IrKzppKyt9cmV0dXJuIG5ldyBLZShuKX1nZXRXaXRoRGVsdGEoZSl7cmV0dXJuIG5ldyBLZSh0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLm1hcChuPT5uLmRlbHRhKGUpKSl9fWNsYXNzIEhle3N0YXRpYyBpbnZlcnNlKGUsbixyKXtjb25zdCBpPVtdO2xldCBzPTEsYT0xO2Zvcihjb25zdCBsIG9mIGUpe2NvbnN0IGM9bmV3IEhlKG5ldyBLKHMsbC5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIpLG5ldyBLKGEsbC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIpKTtjLm1vZGlmaWVkLmlzRW1wdHl8fGkucHVzaChjKSxzPWwub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxhPWwubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1jb25zdCBvPW5ldyBIZShuZXcgSyhzLG4rMSksbmV3IEsoYSxyKzEpKTtyZXR1cm4gby5tb2RpZmllZC5pc0VtcHR5fHxpLnB1c2gobyksaX1zdGF0aWMgY2xpcChlLG4scil7Y29uc3QgaT1bXTtmb3IoY29uc3QgcyBvZiBlKXtjb25zdCBhPXMub3JpZ2luYWwuaW50ZXJzZWN0KG4pLG89cy5tb2RpZmllZC5pbnRlcnNlY3Qocik7YSYmIWEuaXNFbXB0eSYmbyYmIW8uaXNFbXB0eSYmaS5wdXNoKG5ldyBIZShhLG8pKX1yZXR1cm4gaX1jb25zdHJ1Y3RvcihlLG4pe3RoaXMub3JpZ2luYWw9ZSx0aGlzLm1vZGlmaWVkPW59dG9TdHJpbmcoKXtyZXR1cm5geyR7dGhpcy5vcmlnaW5hbC50b1N0cmluZygpfS0+JHt0aGlzLm1vZGlmaWVkLnRvU3RyaW5nKCl9fWB9ZmxpcCgpe3JldHVybiBuZXcgSGUodGhpcy5tb2RpZmllZCx0aGlzLm9yaWdpbmFsKX1qb2luKGUpe3JldHVybiBuZXcgSGUodGhpcy5vcmlnaW5hbC5qb2luKGUub3JpZ2luYWwpLHRoaXMubW9kaWZpZWQuam9pbihlLm1vZGlmaWVkKSl9fWNsYXNzIG50IGV4dGVuZHMgSGV7c3RhdGljIGZyb21SYW5nZU1hcHBpbmdzKGUpe2NvbnN0IG49Sy5qb2luKGUubWFwKGk9PksuZnJvbVJhbmdlSW5jbHVzaXZlKGkub3JpZ2luYWxSYW5nZSkpKSxyPUsuam9pbihlLm1hcChpPT5LLmZyb21SYW5nZUluY2x1c2l2ZShpLm1vZGlmaWVkUmFuZ2UpKSk7cmV0dXJuIG5ldyBudChuLHIsZSl9Y29uc3RydWN0b3IoZSxuLHIpe3N1cGVyKGUsbiksdGhpcy5pbm5lckNoYW5nZXM9cn1mbGlwKCl7dmFyIGU7cmV0dXJuIG5ldyBudCh0aGlzLm1vZGlmaWVkLHRoaXMub3JpZ2luYWwsKGU9dGhpcy5pbm5lckNoYW5nZXMpPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5tYXAobj0+bi5mbGlwKCkpKX13aXRoSW5uZXJDaGFuZ2VzRnJvbUxpbmVSYW5nZXMoKXtyZXR1cm4gbmV3IG50KHRoaXMub3JpZ2luYWwsdGhpcy5tb2RpZmllZCxbbmV3IEJ0KHRoaXMub3JpZ2luYWwudG9FeGNsdXNpdmVSYW5nZSgpLHRoaXMubW9kaWZpZWQudG9FeGNsdXNpdmVSYW5nZSgpKV0pfX1jbGFzcyBCdHtjb25zdHJ1Y3RvcihlLG4pe3RoaXMub3JpZ2luYWxSYW5nZT1lLHRoaXMubW9kaWZpZWRSYW5nZT1ufXRvU3RyaW5nKCl7cmV0dXJuYHske3RoaXMub3JpZ2luYWxSYW5nZS50b1N0cmluZygpfS0+JHt0aGlzLm1vZGlmaWVkUmFuZ2UudG9TdHJpbmcoKX19YH1mbGlwKCl7cmV0dXJuIG5ldyBCdCh0aGlzLm1vZGlmaWVkUmFuZ2UsdGhpcy5vcmlnaW5hbFJhbmdlKX19Y29uc3QgbmQ9MztjbGFzcyByZHtjb21wdXRlRGlmZihlLG4scil7dmFyIGk7Y29uc3QgYT1uZXcgYWQoZSxuLHttYXhDb21wdXRhdGlvblRpbWU6ci5tYXhDb21wdXRhdGlvblRpbWVNcyxzaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZTpyLmlnbm9yZVRyaW1XaGl0ZXNwYWNlLHNob3VsZENvbXB1dGVDaGFyQ2hhbmdlczohMCxzaG91bGRNYWtlUHJldHR5RGlmZjohMCxzaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzOiEwfSkuY29tcHV0ZURpZmYoKSxvPVtdO2xldCBsPW51bGw7Zm9yKGNvbnN0IGMgb2YgYS5jaGFuZ2VzKXtsZXQgaDtjLm9yaWdpbmFsRW5kTGluZU51bWJlcj09PTA/aD1uZXcgSyhjLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyKzEsYy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcisxKTpoPW5ldyBLKGMub3JpZ2luYWxTdGFydExpbmVOdW1iZXIsYy5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMSk7bGV0IHU7Yy5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT0wP3U9bmV3IEsoYy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcisxLGMubW9kaWZpZWRTdGFydExpbmVOdW1iZXIrMSk6dT1uZXcgSyhjLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyLGMubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzEpO2xldCBmPW5ldyBudChoLHUsKGk9Yy5jaGFyQ2hhbmdlcyk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLm1hcChtPT5uZXcgQnQobmV3IHZlKG0ub3JpZ2luYWxTdGFydExpbmVOdW1iZXIsbS5vcmlnaW5hbFN0YXJ0Q29sdW1uLG0ub3JpZ2luYWxFbmRMaW5lTnVtYmVyLG0ub3JpZ2luYWxFbmRDb2x1bW4pLG5ldyB2ZShtLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyLG0ubW9kaWZpZWRTdGFydENvbHVtbixtLm1vZGlmaWVkRW5kTGluZU51bWJlcixtLm1vZGlmaWVkRW5kQ29sdW1uKSkpKTtsJiYobC5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09Zi5tb2RpZmllZC5zdGFydExpbmVOdW1iZXJ8fGwub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT09PWYub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSYmKGY9bmV3IG50KGwub3JpZ2luYWwuam9pbihmLm9yaWdpbmFsKSxsLm1vZGlmaWVkLmpvaW4oZi5tb2RpZmllZCksbC5pbm5lckNoYW5nZXMmJmYuaW5uZXJDaGFuZ2VzP2wuaW5uZXJDaGFuZ2VzLmNvbmNhdChmLmlubmVyQ2hhbmdlcyk6dm9pZCAwKSxvLnBvcCgpKSxvLnB1c2goZiksbD1mfXJldHVybiBZbigoKT0+SWEobywoYyxoKT0+aC5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItYy5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09aC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItYy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZjLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU8aC5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXImJmMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTxoLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcikpLG5ldyBLbihvLFtdLGEucXVpdEVhcmx5KX19ZnVuY3Rpb24gT2EodCxlLG4scil7cmV0dXJuIG5ldyB1dCh0LGUsbikuQ29tcHV0ZURpZmYocil9bGV0IFVhPWNsYXNze2NvbnN0cnVjdG9yKGUpe2NvbnN0IG49W10scj1bXTtmb3IobGV0IGk9MCxzPWUubGVuZ3RoO2k8cztpKyspbltpXT1acihlW2ldLDEpLHJbaV09ZWkoZVtpXSwxKTt0aGlzLmxpbmVzPWUsdGhpcy5fc3RhcnRDb2x1bW5zPW4sdGhpcy5fZW5kQ29sdW1ucz1yfWdldEVsZW1lbnRzKCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxyPXRoaXMubGluZXMubGVuZ3RoO248cjtuKyspZVtuXT10aGlzLmxpbmVzW25dLnN1YnN0cmluZyh0aGlzLl9zdGFydENvbHVtbnNbbl0tMSx0aGlzLl9lbmRDb2x1bW5zW25dLTEpO3JldHVybiBlfWdldFN0cmljdEVsZW1lbnQoZSl7cmV0dXJuIHRoaXMubGluZXNbZV19Z2V0U3RhcnRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWNyZWF0ZUNoYXJTZXF1ZW5jZShlLG4scil7Y29uc3QgaT1bXSxzPVtdLGE9W107bGV0IG89MDtmb3IobGV0IGw9bjtsPD1yO2wrKyl7Y29uc3QgYz10aGlzLmxpbmVzW2xdLGg9ZT90aGlzLl9zdGFydENvbHVtbnNbbF06MSx1PWU/dGhpcy5fZW5kQ29sdW1uc1tsXTpjLmxlbmd0aCsxO2ZvcihsZXQgZj1oO2Y8dTtmKyspaVtvXT1jLmNoYXJDb2RlQXQoZi0xKSxzW29dPWwrMSxhW29dPWYsbysrOyFlJiZsPHImJihpW29dPTEwLHNbb109bCsxLGFbb109Yy5sZW5ndGgrMSxvKyspfXJldHVybiBuZXcgaWQoaSxzLGEpfX07Y2xhc3MgaWR7Y29uc3RydWN0b3IoZSxuLHIpe3RoaXMuX2NoYXJDb2Rlcz1lLHRoaXMuX2xpbmVOdW1iZXJzPW4sdGhpcy5fY29sdW1ucz1yfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuX2NoYXJDb2Rlcy5tYXAoKGUsbik9PihlPT09MTA/IlxcbiI6U3RyaW5nLmZyb21DaGFyQ29kZShlKSkrYC0oJHt0aGlzLl9saW5lTnVtYmVyc1tuXX0sJHt0aGlzLl9jb2x1bW5zW25dfSlgKS5qb2luKCIsICIpKyJdIn1fYXNzZXJ0SW5kZXgoZSxuKXtpZihlPDB8fGU+PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBpbmRleCIpfWdldEVsZW1lbnRzKCl7cmV0dXJuIHRoaXMuX2NoYXJDb2Rlc31nZXRTdGFydExpbmVOdW1iZXIoZSl7cmV0dXJuIGU+MCYmZT09PXRoaXMuX2xpbmVOdW1iZXJzLmxlbmd0aD90aGlzLmdldEVuZExpbmVOdW1iZXIoZS0xKToodGhpcy5fYXNzZXJ0SW5kZXgoZSx0aGlzLl9saW5lTnVtYmVycyksdGhpcy5fbGluZU51bWJlcnNbZV0pfWdldEVuZExpbmVOdW1iZXIoZSl7cmV0dXJuIGU9PT0tMT90aGlzLmdldFN0YXJ0TGluZU51bWJlcihlKzEpOih0aGlzLl9hc3NlcnRJbmRleChlLHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9jaGFyQ29kZXNbZV09PT0xMD90aGlzLl9saW5lTnVtYmVyc1tlXSsxOnRoaXMuX2xpbmVOdW1iZXJzW2VdKX1nZXRTdGFydENvbHVtbihlKXtyZXR1cm4gZT4wJiZlPT09dGhpcy5fY29sdW1ucy5sZW5ndGg/dGhpcy5nZXRFbmRDb2x1bW4oZS0xKToodGhpcy5fYXNzZXJ0SW5kZXgoZSx0aGlzLl9jb2x1bW5zKSx0aGlzLl9jb2x1bW5zW2VdKX1nZXRFbmRDb2x1bW4oZSl7cmV0dXJuIGU9PT0tMT90aGlzLmdldFN0YXJ0Q29sdW1uKGUrMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksdGhpcy5fY2hhckNvZGVzW2VdPT09MTA/MTp0aGlzLl9jb2x1bW5zW2VdKzEpfX1jbGFzcyBxdHtjb25zdHJ1Y3RvcihlLG4scixpLHMsYSxvLGwpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9ZSx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49bix0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1yLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49aSx0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPXMsdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPWEsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9byx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPWx9c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKGUsbixyKXtjb25zdCBpPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCkscz1uLmdldFN0YXJ0Q29sdW1uKGUub3JpZ2luYWxTdGFydCksYT1uLmdldEVuZExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSksbz1uLmdldEVuZENvbHVtbihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSxsPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKGUubW9kaWZpZWRTdGFydCksYz1yLmdldFN0YXJ0Q29sdW1uKGUubW9kaWZpZWRTdGFydCksaD1yLmdldEVuZExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGgtMSksdT1yLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKTtyZXR1cm4gbmV3IHF0KGkscyxhLG8sbCxjLGgsdSl9fWZ1bmN0aW9uIHNkKHQpe2lmKHQubGVuZ3RoPD0xKXJldHVybiB0O2NvbnN0IGU9W3RbMF1dO2xldCBuPWVbMF07Zm9yKGxldCByPTEsaT10Lmxlbmd0aDtyPGk7cisrKXtjb25zdCBzPXRbcl0sYT1zLm9yaWdpbmFsU3RhcnQtKG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoKSxvPXMubW9kaWZpZWRTdGFydC0obi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKGEsbyk8bmQ/KG4ub3JpZ2luYWxMZW5ndGg9cy5vcmlnaW5hbFN0YXJ0K3Mub3JpZ2luYWxMZW5ndGgtbi5vcmlnaW5hbFN0YXJ0LG4ubW9kaWZpZWRMZW5ndGg9cy5tb2RpZmllZFN0YXJ0K3MubW9kaWZpZWRMZW5ndGgtbi5tb2RpZmllZFN0YXJ0KTooZS5wdXNoKHMpLG49cyl9cmV0dXJuIGV9Y2xhc3MgaG57Y29uc3RydWN0b3IoZSxuLHIsaSxzKXt0aGlzLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9bix0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPXIsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9aSx0aGlzLmNoYXJDaGFuZ2VzPXN9c3RhdGljIGNyZWF0ZUZyb21EaWZmUmVzdWx0KGUsbixyLGkscyxhLG8pe2xldCBsLGMsaCx1LGY7aWYobi5vcmlnaW5hbExlbmd0aD09PTA/KGw9ci5nZXRTdGFydExpbmVOdW1iZXIobi5vcmlnaW5hbFN0YXJ0KS0xLGM9MCk6KGw9ci5nZXRTdGFydExpbmVOdW1iZXIobi5vcmlnaW5hbFN0YXJ0KSxjPXIuZ2V0RW5kTGluZU51bWJlcihuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC0xKSksbi5tb2RpZmllZExlbmd0aD09PTA/KGg9aS5nZXRTdGFydExpbmVOdW1iZXIobi5tb2RpZmllZFN0YXJ0KS0xLHU9MCk6KGg9aS5nZXRTdGFydExpbmVOdW1iZXIobi5tb2RpZmllZFN0YXJ0KSx1PWkuZ2V0RW5kTGluZU51bWJlcihuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aC0xKSksYSYmbi5vcmlnaW5hbExlbmd0aD4wJiZuLm9yaWdpbmFsTGVuZ3RoPDIwJiZuLm1vZGlmaWVkTGVuZ3RoPjAmJm4ubW9kaWZpZWRMZW5ndGg8MjAmJnMoKSl7Y29uc3QgbT1yLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLG4ub3JpZ2luYWxTdGFydCxuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC0xKSxnPWkuY3JlYXRlQ2hhclNlcXVlbmNlKGUsbi5tb2RpZmllZFN0YXJ0LG4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoLTEpO2lmKG0uZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCYmZy5nZXRFbGVtZW50cygpLmxlbmd0aD4wKXtsZXQgYj1PYShtLGcscywhMCkuY2hhbmdlcztvJiYoYj1zZChiKSksZj1bXTtmb3IobGV0IHk9MCxDPWIubGVuZ3RoO3k8Qzt5KyspZi5wdXNoKHF0LmNyZWF0ZUZyb21EaWZmQ2hhbmdlKGJbeV0sbSxnKSl9fXJldHVybiBuZXcgaG4obCxjLGgsdSxmKX19Y2xhc3MgYWR7Y29uc3RydWN0b3IoZSxuLHIpe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPXIuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1yLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1yLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9ci5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9bix0aGlzLm9yaWdpbmFsPW5ldyBVYShlKSx0aGlzLm1vZGlmaWVkPW5ldyBVYShuKSx0aGlzLmNvbnRpbnVlTGluZURpZmY9VmEoci5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1WYShyLm1heENvbXB1dGF0aW9uVGltZT09PTA/MDpNYXRoLm1pbihyLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKHRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoPT09MSYmdGhpcy5vcmlnaW5hbC5saW5lc1swXS5sZW5ndGg9PT0wKXJldHVybiB0aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aD09PTEmJnRoaXMubW9kaWZpZWQubGluZXNbMF0ubGVuZ3RoPT09MD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6dm9pZCAwfV19O2lmKHRoaXMubW9kaWZpZWQubGluZXMubGVuZ3RoPT09MSYmdGhpcy5tb2RpZmllZC5saW5lc1swXS5sZW5ndGg9PT0wKXJldHVybntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOnRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoLG1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyOjEsbW9kaWZpZWRFbmRMaW5lTnVtYmVyOjEsY2hhckNoYW5nZXM6dm9pZCAwfV19O2NvbnN0IGU9T2EodGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSxuPWUuY2hhbmdlcyxyPWUucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IG89W107Zm9yKGxldCBsPTAsYz1uLmxlbmd0aDtsPGM7bCsrKW8ucHVzaChobi5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG5bbF0sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5OnIsY2hhbmdlczpvfX1jb25zdCBpPVtdO2xldCBzPTAsYT0wO2ZvcihsZXQgbz0tMSxsPW4ubGVuZ3RoO288bDtvKyspe2NvbnN0IGM9bysxPGw/bltvKzFdOm51bGwsaD1jP2Mub3JpZ2luYWxTdGFydDp0aGlzLm9yaWdpbmFsTGluZXMubGVuZ3RoLHU9Yz9jLm1vZGlmaWVkU3RhcnQ6dGhpcy5tb2RpZmllZExpbmVzLmxlbmd0aDtmb3IoO3M8aCYmYTx1Oyl7Y29uc3QgZj10aGlzLm9yaWdpbmFsTGluZXNbc10sbT10aGlzLm1vZGlmaWVkTGluZXNbYV07aWYoZiE9PW0pe3tsZXQgZz1acihmLDEpLGI9WnIobSwxKTtmb3IoO2c+MSYmYj4xOyl7Y29uc3QgeT1mLmNoYXJDb2RlQXQoZy0yKSxDPW0uY2hhckNvZGVBdChiLTIpO2lmKHkhPT1DKWJyZWFrO2ctLSxiLS19KGc+MXx8Yj4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShpLHMrMSwxLGcsYSsxLDEsYil9e2xldCBnPWVpKGYsMSksYj1laShtLDEpO2NvbnN0IHk9Zi5sZW5ndGgrMSxDPW0ubGVuZ3RoKzE7Zm9yKDtnPHkmJmI8Qzspe2NvbnN0IGs9Zi5jaGFyQ29kZUF0KGctMSksdz1mLmNoYXJDb2RlQXQoYi0xKTtpZihrIT09dylicmVhaztnKyssYisrfShnPHl8fGI8QykmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoaSxzKzEsZyx5LGErMSxiLEMpfX1zKyssYSsrfWMmJihpLnB1c2goaG4uY3JlYXRlRnJvbURpZmZSZXN1bHQodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSxjLHRoaXMub3JpZ2luYWwsdGhpcy5tb2RpZmllZCx0aGlzLmNvbnRpbnVlQ2hhckRpZmYsdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzKSkscys9Yy5vcmlnaW5hbExlbmd0aCxhKz1jLm1vZGlmaWVkTGVuZ3RoKX1yZXR1cm57cXVpdEVhcmx5OnIsY2hhbmdlczppfX1fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShlLG4scixpLHMsYSxvKXtpZih0aGlzLl9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShlLG4scixpLHMsYSxvKSlyZXR1cm47bGV0IGw7dGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJihsPVtuZXcgcXQobixyLG4saSxzLGEscyxvKV0pLGUucHVzaChuZXcgaG4obixuLHMscyxsKSl9X21lcmdlVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKGUsbixyLGkscyxhLG8pe2NvbnN0IGw9ZS5sZW5ndGg7aWYobD09PTApcmV0dXJuITE7Y29uc3QgYz1lW2wtMV07cmV0dXJuIGMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09MHx8Yy5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT0wPyExOmMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09biYmYy5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT1zPyh0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmYy5jaGFyQ2hhbmdlcyYmYy5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBxdChuLHIsbixpLHMsYSxzLG8pKSwhMCk6Yy5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMT09PW4mJmMubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzE9PT1zPyhjLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLGMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPXMsdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJmMuY2hhckNoYW5nZXMmJmMuY2hhckNoYW5nZXMucHVzaChuZXcgcXQobixyLG4saSxzLGEscyxvKSksITApOiExfX1mdW5jdGlvbiBacih0LGUpe2NvbnN0IG49SWModCk7cmV0dXJuIG49PT0tMT9lOm4rMX1mdW5jdGlvbiBlaSh0LGUpe2NvbnN0IG49VGModCk7cmV0dXJuIG49PT0tMT9lOm4rMn1mdW5jdGlvbiBWYSh0KXtpZih0PT09MClyZXR1cm4oKT0+ITA7Y29uc3QgZT1EYXRlLm5vdygpO3JldHVybigpPT5EYXRlLm5vdygpLWU8dH1jbGFzcyBydHtzdGF0aWMgdHJpdmlhbChlLG4pe3JldHVybiBuZXcgcnQoW25ldyBjZShRLm9mTGVuZ3RoKGUubGVuZ3RoKSxRLm9mTGVuZ3RoKG4ubGVuZ3RoKSldLCExKX1zdGF0aWMgdHJpdmlhbFRpbWVkT3V0KGUsbil7cmV0dXJuIG5ldyBydChbbmV3IGNlKFEub2ZMZW5ndGgoZS5sZW5ndGgpLFEub2ZMZW5ndGgobi5sZW5ndGgpKV0sITApfWNvbnN0cnVjdG9yKGUsbil7dGhpcy5kaWZmcz1lLHRoaXMuaGl0VGltZW91dD1ufX1jbGFzcyBjZXtzdGF0aWMgaW52ZXJ0KGUsbil7Y29uc3Qgcj1bXTtyZXR1cm4gdmgoZSwoaSxzKT0+e3IucHVzaChjZS5mcm9tT2Zmc2V0UGFpcnMoaT9pLmdldEVuZEV4Y2x1c2l2ZXMoKTpMZS56ZXJvLHM/cy5nZXRTdGFydHMoKTpuZXcgTGUobiwoaT9pLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUtaS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlOjApK24pKSl9KSxyfXN0YXRpYyBmcm9tT2Zmc2V0UGFpcnMoZSxuKXtyZXR1cm4gbmV3IGNlKG5ldyBRKGUub2Zmc2V0MSxuLm9mZnNldDEpLG5ldyBRKGUub2Zmc2V0MixuLm9mZnNldDIpKX1jb25zdHJ1Y3RvcihlLG4pe3RoaXMuc2VxMVJhbmdlPWUsdGhpcy5zZXEyUmFuZ2U9bn1zd2FwKCl7cmV0dXJuIG5ldyBjZSh0aGlzLnNlcTJSYW5nZSx0aGlzLnNlcTFSYW5nZSl9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLnNlcTFSYW5nZX0gPC0+ICR7dGhpcy5zZXEyUmFuZ2V9YH1qb2luKGUpe3JldHVybiBuZXcgY2UodGhpcy5zZXExUmFuZ2Uuam9pbihlLnNlcTFSYW5nZSksdGhpcy5zZXEyUmFuZ2Uuam9pbihlLnNlcTJSYW5nZSkpfWRlbHRhKGUpe3JldHVybiBlPT09MD90aGlzOm5ldyBjZSh0aGlzLnNlcTFSYW5nZS5kZWx0YShlKSx0aGlzLnNlcTJSYW5nZS5kZWx0YShlKSl9ZGVsdGFTdGFydChlKXtyZXR1cm4gZT09PTA/dGhpczpuZXcgY2UodGhpcy5zZXExUmFuZ2UuZGVsdGFTdGFydChlKSx0aGlzLnNlcTJSYW5nZS5kZWx0YVN0YXJ0KGUpKX1kZWx0YUVuZChlKXtyZXR1cm4gZT09PTA/dGhpczpuZXcgY2UodGhpcy5zZXExUmFuZ2UuZGVsdGFFbmQoZSksdGhpcy5zZXEyUmFuZ2UuZGVsdGFFbmQoZSkpfWludGVyc2VjdChlKXtjb25zdCBuPXRoaXMuc2VxMVJhbmdlLmludGVyc2VjdChlLnNlcTFSYW5nZSkscj10aGlzLnNlcTJSYW5nZS5pbnRlcnNlY3QoZS5zZXEyUmFuZ2UpO2lmKCEoIW58fCFyKSlyZXR1cm4gbmV3IGNlKG4scil9Z2V0U3RhcnRzKCl7cmV0dXJuIG5ldyBMZSh0aGlzLnNlcTFSYW5nZS5zdGFydCx0aGlzLnNlcTJSYW5nZS5zdGFydCl9Z2V0RW5kRXhjbHVzaXZlcygpe3JldHVybiBuZXcgTGUodGhpcy5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLHRoaXMuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZSl9fWNsYXNzIExle2NvbnN0cnVjdG9yKGUsbil7dGhpcy5vZmZzZXQxPWUsdGhpcy5vZmZzZXQyPW59dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLm9mZnNldDF9IDwtPiAke3RoaXMub2Zmc2V0Mn1gfWRlbHRhKGUpe3JldHVybiBlPT09MD90aGlzOm5ldyBMZSh0aGlzLm9mZnNldDErZSx0aGlzLm9mZnNldDIrZSl9ZXF1YWxzKGUpe3JldHVybiB0aGlzLm9mZnNldDE9PT1lLm9mZnNldDEmJnRoaXMub2Zmc2V0Mj09PWUub2Zmc2V0Mn19TGUuemVybz1uZXcgTGUoMCwwKSxMZS5tYXg9bmV3IExlKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKTtjbGFzcyBkbntpc1ZhbGlkKCl7cmV0dXJuITB9fWRuLmluc3RhbmNlPW5ldyBkbjtjbGFzcyBvZHtjb25zdHJ1Y3RvcihlKXtpZih0aGlzLnRpbWVvdXQ9ZSx0aGlzLnN0YXJ0VGltZT1EYXRlLm5vdygpLHRoaXMudmFsaWQ9ITAsZTw9MCl0aHJvdyBuZXcgdHQoInRpbWVvdXQgbXVzdCBiZSBwb3NpdGl2ZSIpfWlzVmFsaWQoKXtpZighKERhdGUubm93KCktdGhpcy5zdGFydFRpbWU8dGhpcy50aW1lb3V0KSYmdGhpcy52YWxpZCl7dGhpcy52YWxpZD0hMTtkZWJ1Z2dlcn1yZXR1cm4gdGhpcy52YWxpZH19Y2xhc3MgdGl7Y29uc3RydWN0b3IoZSxuKXt0aGlzLndpZHRoPWUsdGhpcy5oZWlnaHQ9bix0aGlzLmFycmF5PVtdLHRoaXMuYXJyYXk9bmV3IEFycmF5KGUqbil9Z2V0KGUsbil7cmV0dXJuIHRoaXMuYXJyYXlbZStuKnRoaXMud2lkdGhdfXNldChlLG4scil7dGhpcy5hcnJheVtlK24qdGhpcy53aWR0aF09cn19ZnVuY3Rpb24gbmkodCl7cmV0dXJuIHQ9PT0zMnx8dD09PTl9Y2xhc3MganR7c3RhdGljIGdldEtleShlKXtsZXQgbj10aGlzLmNocktleXMuZ2V0KGUpO3JldHVybiBuPT09dm9pZCAwJiYobj10aGlzLmNocktleXMuc2l6ZSx0aGlzLmNocktleXMuc2V0KGUsbikpLG59Y29uc3RydWN0b3IoZSxuLHIpe3RoaXMucmFuZ2U9ZSx0aGlzLmxpbmVzPW4sdGhpcy5zb3VyY2U9cix0aGlzLmhpc3RvZ3JhbT1bXTtsZXQgaT0wO2ZvcihsZXQgcz1lLnN0YXJ0TGluZU51bWJlci0xO3M8ZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTE7cysrKXtjb25zdCBhPW5bc107Zm9yKGxldCBsPTA7bDxhLmxlbmd0aDtsKyspe2krKztjb25zdCBjPWFbbF0saD1qdC5nZXRLZXkoYyk7dGhpcy5oaXN0b2dyYW1baF09KHRoaXMuaGlzdG9ncmFtW2hdfHwwKSsxfWkrKztjb25zdCBvPWp0LmdldEtleShgCmApO3RoaXMuaGlzdG9ncmFtW29dPSh0aGlzLmhpc3RvZ3JhbVtvXXx8MCkrMX10aGlzLnRvdGFsQ291bnQ9aX1jb21wdXRlU2ltaWxhcml0eShlKXt2YXIgbixyO2xldCBpPTA7Y29uc3Qgcz1NYXRoLm1heCh0aGlzLmhpc3RvZ3JhbS5sZW5ndGgsZS5oaXN0b2dyYW0ubGVuZ3RoKTtmb3IobGV0IGE9MDthPHM7YSsrKWkrPU1hdGguYWJzKCgobj10aGlzLmhpc3RvZ3JhbVthXSkhPT1udWxsJiZuIT09dm9pZCAwP246MCktKChyPWUuaGlzdG9ncmFtW2FdKSE9PW51bGwmJnIhPT12b2lkIDA/cjowKSk7cmV0dXJuIDEtaS8odGhpcy50b3RhbENvdW50K2UudG90YWxDb3VudCl9fWp0LmNocktleXM9bmV3IE1hcDtjbGFzcyBsZHtjb21wdXRlKGUsbixyPWRuLmluc3RhbmNlLGkpe2lmKGUubGVuZ3RoPT09MHx8bi5sZW5ndGg9PT0wKXJldHVybiBydC50cml2aWFsKGUsbik7Y29uc3Qgcz1uZXcgdGkoZS5sZW5ndGgsbi5sZW5ndGgpLGE9bmV3IHRpKGUubGVuZ3RoLG4ubGVuZ3RoKSxvPW5ldyB0aShlLmxlbmd0aCxuLmxlbmd0aCk7Zm9yKGxldCBnPTA7ZzxlLmxlbmd0aDtnKyspZm9yKGxldCBiPTA7YjxuLmxlbmd0aDtiKyspe2lmKCFyLmlzVmFsaWQoKSlyZXR1cm4gcnQudHJpdmlhbFRpbWVkT3V0KGUsbik7Y29uc3QgeT1nPT09MD8wOnMuZ2V0KGctMSxiKSxDPWI9PT0wPzA6cy5nZXQoZyxiLTEpO2xldCBrO2UuZ2V0RWxlbWVudChnKT09PW4uZ2V0RWxlbWVudChiKT8oZz09PTB8fGI9PT0wP2s9MDprPXMuZ2V0KGctMSxiLTEpLGc+MCYmYj4wJiZhLmdldChnLTEsYi0xKT09PTMmJihrKz1vLmdldChnLTEsYi0xKSksays9aT9pKGcsYik6MSk6az0tMTtjb25zdCB3PU1hdGgubWF4KHksQyxrKTtpZih3PT09ayl7Y29uc3QgRj1nPjAmJmI+MD9vLmdldChnLTEsYi0xKTowO28uc2V0KGcsYixGKzEpLGEuc2V0KGcsYiwzKX1lbHNlIHc9PT15PyhvLnNldChnLGIsMCksYS5zZXQoZyxiLDEpKTp3PT09QyYmKG8uc2V0KGcsYiwwKSxhLnNldChnLGIsMikpO3Muc2V0KGcsYix3KX1jb25zdCBsPVtdO2xldCBjPWUubGVuZ3RoLGg9bi5sZW5ndGg7ZnVuY3Rpb24gdShnLGIpeyhnKzEhPT1jfHxiKzEhPT1oKSYmbC5wdXNoKG5ldyBjZShuZXcgUShnKzEsYyksbmV3IFEoYisxLGgpKSksYz1nLGg9Yn1sZXQgZj1lLmxlbmd0aC0xLG09bi5sZW5ndGgtMTtmb3IoO2Y+PTAmJm0+PTA7KWEuZ2V0KGYsbSk9PT0zPyh1KGYsbSksZi0tLG0tLSk6YS5nZXQoZixtKT09PTE/Zi0tOm0tLTtyZXR1cm4gdSgtMSwtMSksbC5yZXZlcnNlKCksbmV3IHJ0KGwsITEpfX1jbGFzcyBCYXtjb21wdXRlKGUsbixyPWRuLmluc3RhbmNlKXtpZihlLmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MClyZXR1cm4gcnQudHJpdmlhbChlLG4pO2NvbnN0IGk9ZSxzPW47ZnVuY3Rpb24gYShiLHkpe2Zvcig7YjxpLmxlbmd0aCYmeTxzLmxlbmd0aCYmaS5nZXRFbGVtZW50KGIpPT09cy5nZXRFbGVtZW50KHkpOyliKysseSsrO3JldHVybiBifWxldCBvPTA7Y29uc3QgbD1uZXcgY2Q7bC5zZXQoMCxhKDAsMCkpO2NvbnN0IGM9bmV3IGhkO2Muc2V0KDAsbC5nZXQoMCk9PT0wP251bGw6bmV3IHFhKG51bGwsMCwwLGwuZ2V0KDApKSk7bGV0IGg9MDtlOmZvcig7Oyl7aWYobysrLCFyLmlzVmFsaWQoKSlyZXR1cm4gcnQudHJpdmlhbFRpbWVkT3V0KGkscyk7Y29uc3QgYj0tTWF0aC5taW4obyxzLmxlbmd0aCtvJTIpLHk9TWF0aC5taW4obyxpLmxlbmd0aCtvJTIpO2ZvcihoPWI7aDw9eTtoKz0yKXtjb25zdCBDPWg9PT15Py0xOmwuZ2V0KGgrMSksaz1oPT09Yj8tMTpsLmdldChoLTEpKzEsdz1NYXRoLm1pbihNYXRoLm1heChDLGspLGkubGVuZ3RoKSxGPXctaDtpZih3PmkubGVuZ3RofHxGPnMubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IF89YSh3LEYpO2wuc2V0KGgsXyk7Y29uc3QgUD13PT09Qz9jLmdldChoKzEpOmMuZ2V0KGgtMSk7aWYoYy5zZXQoaCxfIT09dz9uZXcgcWEoUCx3LEYsXy13KTpQKSxsLmdldChoKT09PWkubGVuZ3RoJiZsLmdldChoKS1oPT09cy5sZW5ndGgpYnJlYWsgZX19bGV0IHU9Yy5nZXQoaCk7Y29uc3QgZj1bXTtsZXQgbT1pLmxlbmd0aCxnPXMubGVuZ3RoO2Zvcig7Oyl7Y29uc3QgYj11P3UueCt1Lmxlbmd0aDowLHk9dT91LnkrdS5sZW5ndGg6MDtpZigoYiE9PW18fHkhPT1nKSYmZi5wdXNoKG5ldyBjZShuZXcgUShiLG0pLG5ldyBRKHksZykpKSwhdSlicmVhazttPXUueCxnPXUueSx1PXUucHJldn1yZXR1cm4gZi5yZXZlcnNlKCksbmV3IHJ0KGYsITEpfX1jbGFzcyBxYXtjb25zdHJ1Y3RvcihlLG4scixpKXt0aGlzLnByZXY9ZSx0aGlzLng9bix0aGlzLnk9cix0aGlzLmxlbmd0aD1pfX1jbGFzcyBjZHtjb25zdHJ1Y3Rvcigpe3RoaXMucG9zaXRpdmVBcnI9bmV3IEludDMyQXJyYXkoMTApLHRoaXMubmVnYXRpdmVBcnI9bmV3IEludDMyQXJyYXkoMTApfWdldChlKXtyZXR1cm4gZTwwPyhlPS1lLTEsdGhpcy5uZWdhdGl2ZUFycltlXSk6dGhpcy5wb3NpdGl2ZUFycltlXX1zZXQoZSxuKXtpZihlPDApe2lmKGU9LWUtMSxlPj10aGlzLm5lZ2F0aXZlQXJyLmxlbmd0aCl7Y29uc3Qgcj10aGlzLm5lZ2F0aXZlQXJyO3RoaXMubmVnYXRpdmVBcnI9bmV3IEludDMyQXJyYXkoci5sZW5ndGgqMiksdGhpcy5uZWdhdGl2ZUFyci5zZXQocil9dGhpcy5uZWdhdGl2ZUFycltlXT1ufWVsc2V7aWYoZT49dGhpcy5wb3NpdGl2ZUFyci5sZW5ndGgpe2NvbnN0IHI9dGhpcy5wb3NpdGl2ZUFycjt0aGlzLnBvc2l0aXZlQXJyPW5ldyBJbnQzMkFycmF5KHIubGVuZ3RoKjIpLHRoaXMucG9zaXRpdmVBcnIuc2V0KHIpfXRoaXMucG9zaXRpdmVBcnJbZV09bn19fWNsYXNzIGhke2NvbnN0cnVjdG9yKCl7dGhpcy5wb3NpdGl2ZUFycj1bXSx0aGlzLm5lZ2F0aXZlQXJyPVtdfWdldChlKXtyZXR1cm4gZTwwPyhlPS1lLTEsdGhpcy5uZWdhdGl2ZUFycltlXSk6dGhpcy5wb3NpdGl2ZUFycltlXX1zZXQoZSxuKXtlPDA/KGU9LWUtMSx0aGlzLm5lZ2F0aXZlQXJyW2VdPW4pOnRoaXMucG9zaXRpdmVBcnJbZV09bn19Y2xhc3MgUW57Y29uc3RydWN0b3IoZSxuLHIpe3RoaXMubGluZXM9ZSx0aGlzLmNvbnNpZGVyV2hpdGVzcGFjZUNoYW5nZXM9cix0aGlzLmVsZW1lbnRzPVtdLHRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lPVtdLHRoaXMuYWRkaXRpb25hbE9mZnNldEJ5TGluZT1bXTtsZXQgaT0hMTtuLnN0YXJ0PjAmJm4uZW5kRXhjbHVzaXZlPj1lLmxlbmd0aCYmKG49bmV3IFEobi5zdGFydC0xLG4uZW5kRXhjbHVzaXZlKSxpPSEwKSx0aGlzLmxpbmVSYW5nZT1uLHRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lWzBdPTA7Zm9yKGxldCBzPXRoaXMubGluZVJhbmdlLnN0YXJ0O3M8dGhpcy5saW5lUmFuZ2UuZW5kRXhjbHVzaXZlO3MrKyl7bGV0IGE9ZVtzXSxvPTA7aWYoaSlvPWEubGVuZ3RoLGE9IiIsaT0hMTtlbHNlIGlmKCFyKXtjb25zdCBsPWEudHJpbVN0YXJ0KCk7bz1hLmxlbmd0aC1sLmxlbmd0aCxhPWwudHJpbUVuZCgpfXRoaXMuYWRkaXRpb25hbE9mZnNldEJ5TGluZS5wdXNoKG8pO2ZvcihsZXQgbD0wO2w8YS5sZW5ndGg7bCsrKXRoaXMuZWxlbWVudHMucHVzaChhLmNoYXJDb2RlQXQobCkpO3M8ZS5sZW5ndGgtMSYmKHRoaXMuZWxlbWVudHMucHVzaCgxMCksdGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmVbcy10aGlzLmxpbmVSYW5nZS5zdGFydCsxXT10aGlzLmVsZW1lbnRzLmxlbmd0aCl9dGhpcy5hZGRpdGlvbmFsT2Zmc2V0QnlMaW5lLnB1c2goMCl9dG9TdHJpbmcoKXtyZXR1cm5gU2xpY2U6ICIke3RoaXMudGV4dH0iYH1nZXQgdGV4dCgpe3JldHVybiB0aGlzLmdldFRleHQobmV3IFEoMCx0aGlzLmxlbmd0aCkpfWdldFRleHQoZSl7cmV0dXJuIHRoaXMuZWxlbWVudHMuc2xpY2UoZS5zdGFydCxlLmVuZEV4Y2x1c2l2ZSkubWFwKG49PlN0cmluZy5mcm9tQ2hhckNvZGUobikpLmpvaW4oIiIpfWdldEVsZW1lbnQoZSl7cmV0dXJuIHRoaXMuZWxlbWVudHNbZV19Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVsZW1lbnRzLmxlbmd0aH1nZXRCb3VuZGFyeVNjb3JlKGUpe2NvbnN0IG49JGEoZT4wP3RoaXMuZWxlbWVudHNbZS0xXTotMSkscj0kYShlPHRoaXMuZWxlbWVudHMubGVuZ3RoP3RoaXMuZWxlbWVudHNbZV06LTEpO2lmKG49PT03JiZyPT09OClyZXR1cm4gMDtpZihuPT09OClyZXR1cm4gMTUwO2xldCBpPTA7cmV0dXJuIG4hPT1yJiYoaSs9MTAsbj09PTAmJnI9PT0xJiYoaSs9MSkpLGkrPWphKG4pLGkrPWphKHIpLGl9dHJhbnNsYXRlT2Zmc2V0KGUpe2lmKHRoaXMubGluZVJhbmdlLmlzRW1wdHkpcmV0dXJuIG5ldyBZZSh0aGlzLmxpbmVSYW5nZS5zdGFydCsxLDEpO2NvbnN0IG49bG4odGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmUscj0+cjw9ZSk7cmV0dXJuIG5ldyBZZSh0aGlzLmxpbmVSYW5nZS5zdGFydCtuKzEsZS10aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZVtuXSt0aGlzLmFkZGl0aW9uYWxPZmZzZXRCeUxpbmVbbl0rMSl9dHJhbnNsYXRlUmFuZ2UoZSl7cmV0dXJuIHZlLmZyb21Qb3NpdGlvbnModGhpcy50cmFuc2xhdGVPZmZzZXQoZS5zdGFydCksdGhpcy50cmFuc2xhdGVPZmZzZXQoZS5lbmRFeGNsdXNpdmUpKX1maW5kV29yZENvbnRhaW5pbmcoZSl7aWYoZTwwfHxlPj10aGlzLmVsZW1lbnRzLmxlbmd0aHx8IXJpKHRoaXMuZWxlbWVudHNbZV0pKXJldHVybjtsZXQgbj1lO2Zvcig7bj4wJiZyaSh0aGlzLmVsZW1lbnRzW24tMV0pOyluLS07bGV0IHI9ZTtmb3IoO3I8dGhpcy5lbGVtZW50cy5sZW5ndGgmJnJpKHRoaXMuZWxlbWVudHNbcl0pOylyKys7cmV0dXJuIG5ldyBRKG4scil9Y291bnRMaW5lc0luKGUpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9mZnNldChlLmVuZEV4Y2x1c2l2ZSkubGluZU51bWJlci10aGlzLnRyYW5zbGF0ZU9mZnNldChlLnN0YXJ0KS5saW5lTnVtYmVyfWlzU3Ryb25nbHlFcXVhbChlLG4pe3JldHVybiB0aGlzLmVsZW1lbnRzW2VdPT09dGhpcy5lbGVtZW50c1tuXX1leHRlbmRUb0Z1bGxMaW5lcyhlKXt2YXIgbixyO2NvbnN0IGk9KG49VnQodGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmUsYT0+YTw9ZS5zdGFydCkpIT09bnVsbCYmbiE9PXZvaWQgMD9uOjAscz0ocj10ZCh0aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZSxhPT5lLmVuZEV4Y2x1c2l2ZTw9YSkpIT09bnVsbCYmciE9PXZvaWQgMD9yOnRoaXMuZWxlbWVudHMubGVuZ3RoO3JldHVybiBuZXcgUShpLHMpfX1mdW5jdGlvbiByaSh0KXtyZXR1cm4gdD49OTcmJnQ8PTEyMnx8dD49NjUmJnQ8PTkwfHx0Pj00OCYmdDw9NTd9Y29uc3QgZGQ9ezA6MCwxOjAsMjowLDM6MTAsNDoyLDU6MzAsNjozLDc6MTAsODoxMH07ZnVuY3Rpb24gamEodCl7cmV0dXJuIGRkW3RdfWZ1bmN0aW9uICRhKHQpe3JldHVybiB0PT09MTA/ODp0PT09MTM/NzpuaSh0KT82OnQ+PTk3JiZ0PD0xMjI/MDp0Pj02NSYmdDw9OTA/MTp0Pj00OCYmdDw9NTc/Mjp0PT09LTE/Mzp0PT09NDR8fHQ9PT01OT81OjR9ZnVuY3Rpb24gdWQodCxlLG4scixpLHMpe2xldHttb3ZlczphLGV4Y2x1ZGVkQ2hhbmdlczpvfT1mZCh0LGUsbixzKTtpZighcy5pc1ZhbGlkKCkpcmV0dXJuW107Y29uc3QgbD10LmZpbHRlcihoPT4hby5oYXMoaCkpLGM9bWQobCxyLGksZSxuLHMpO3JldHVybiB3aChhLGMpLGE9Z2QoYSksYT1hLmZpbHRlcihoPT57Y29uc3QgdT1oLm9yaWdpbmFsLnRvT2Zmc2V0UmFuZ2UoKS5zbGljZShlKS5tYXAobT0+bS50cmltKCkpO3JldHVybiB1LmpvaW4oYApgKS5sZW5ndGg+PTE1JiZwZCh1LG09Pm0ubGVuZ3RoPj0yKT49Mn0pLGE9YmQodCxhKSxhfWZ1bmN0aW9uIHBkKHQsZSl7bGV0IG49MDtmb3IoY29uc3QgciBvZiB0KWUocikmJm4rKztyZXR1cm4gbn1mdW5jdGlvbiBmZCh0LGUsbixyKXtjb25zdCBpPVtdLHM9dC5maWx0ZXIobD0+bC5tb2RpZmllZC5pc0VtcHR5JiZsLm9yaWdpbmFsLmxlbmd0aD49MykubWFwKGw9Pm5ldyBqdChsLm9yaWdpbmFsLGUsbCkpLGE9bmV3IFNldCh0LmZpbHRlcihsPT5sLm9yaWdpbmFsLmlzRW1wdHkmJmwubW9kaWZpZWQubGVuZ3RoPj0zKS5tYXAobD0+bmV3IGp0KGwubW9kaWZpZWQsbixsKSkpLG89bmV3IFNldDtmb3IoY29uc3QgbCBvZiBzKXtsZXQgYz0tMSxoO2Zvcihjb25zdCB1IG9mIGEpe2NvbnN0IGY9bC5jb21wdXRlU2ltaWxhcml0eSh1KTtmPmMmJihjPWYsaD11KX1pZihjPi45JiZoJiYoYS5kZWxldGUoaCksaS5wdXNoKG5ldyBIZShsLnJhbmdlLGgucmFuZ2UpKSxvLmFkZChsLnNvdXJjZSksby5hZGQoaC5zb3VyY2UpKSwhci5pc1ZhbGlkKCkpcmV0dXJue21vdmVzOmksZXhjbHVkZWRDaGFuZ2VzOm99fXJldHVybnttb3ZlczppLGV4Y2x1ZGVkQ2hhbmdlczpvfX1mdW5jdGlvbiBtZCh0LGUsbixyLGkscyl7Y29uc3QgYT1bXSxvPW5ldyBIaDtmb3IoY29uc3QgZiBvZiB0KWZvcihsZXQgbT1mLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcjttPGYub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0yO20rKyl7Y29uc3QgZz1gJHtlW20tMV19OiR7ZVttKzEtMV19OiR7ZVttKzItMV19YDtvLmFkZChnLHtyYW5nZTpuZXcgSyhtLG0rMyl9KX1jb25zdCBsPVtdO3Quc29ydChqbihmPT5mLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlciwkbikpO2Zvcihjb25zdCBmIG9mIHQpe2xldCBtPVtdO2ZvcihsZXQgZz1mLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcjtnPGYubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0yO2crKyl7Y29uc3QgYj1gJHtuW2ctMV19OiR7bltnKzEtMV19OiR7bltnKzItMV19YCx5PW5ldyBLKGcsZyszKSxDPVtdO28uZm9yRWFjaChiLCh7cmFuZ2U6a30pPT57Zm9yKGNvbnN0IEYgb2YgbSlpZihGLm9yaWdpbmFsTGluZVJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrMT09PWsuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmRi5tb2RpZmllZExpbmVSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKzE9PT15LmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpe0Yub3JpZ2luYWxMaW5lUmFuZ2U9bmV3IEsoRi5vcmlnaW5hbExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXIsay5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSxGLm1vZGlmaWVkTGluZVJhbmdlPW5ldyBLKEYubW9kaWZpZWRMaW5lUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLHkuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSksQy5wdXNoKEYpO3JldHVybn1jb25zdCB3PXttb2RpZmllZExpbmVSYW5nZTp5LG9yaWdpbmFsTGluZVJhbmdlOmt9O2wucHVzaCh3KSxDLnB1c2godyl9KSxtPUN9aWYoIXMuaXNWYWxpZCgpKXJldHVybltdfWwuc29ydCh4aChqbihmPT5mLm1vZGlmaWVkTGluZVJhbmdlLmxlbmd0aCwkbikpKTtjb25zdCBjPW5ldyBLZSxoPW5ldyBLZTtmb3IoY29uc3QgZiBvZiBsKXtjb25zdCBtPWYubW9kaWZpZWRMaW5lUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLWYub3JpZ2luYWxMaW5lUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGc9Yy5zdWJ0cmFjdEZyb20oZi5tb2RpZmllZExpbmVSYW5nZSksYj1oLnN1YnRyYWN0RnJvbShmLm9yaWdpbmFsTGluZVJhbmdlKS5nZXRXaXRoRGVsdGEobSkseT1nLmdldEludGVyc2VjdGlvbihiKTtmb3IoY29uc3QgQyBvZiB5LnJhbmdlcyl7aWYoQy5sZW5ndGg8Myljb250aW51ZTtjb25zdCBrPUMsdz1DLmRlbHRhKC1tKTthLnB1c2gobmV3IEhlKHcsaykpLGMuYWRkUmFuZ2UoayksaC5hZGRSYW5nZSh3KX19YS5zb3J0KGpuKGY9PmYub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLCRuKSk7Y29uc3QgdT1uZXcgY24odCk7Zm9yKGxldCBmPTA7ZjxhLmxlbmd0aDtmKyspe2NvbnN0IG09YVtmXSxnPXUuZmluZExhc3RNb25vdG9ub3VzKFA9PlAub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyPD1tLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlciksYj1WdCh0LFA9PlAubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyPD1tLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcikseT1NYXRoLm1heChtLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1nLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixtLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1iLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlciksQz11LmZpbmRMYXN0TW9ub3Rvbm91cyhQPT5QLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcjxtLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpLGs9VnQodCxQPT5QLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcjxtLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpLHc9TWF0aC5tYXgoQy5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLW0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxrLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtbS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKTtsZXQgRjtmb3IoRj0wO0Y8eTtGKyspe2NvbnN0IFA9bS5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItRi0xLFc9bS5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItRi0xO2lmKFA+ci5sZW5ndGh8fFc+aS5sZW5ndGh8fGMuY29udGFpbnMoVyl8fGguY29udGFpbnMoUCl8fCFIYShyW1AtMV0saVtXLTFdLHMpKWJyZWFrfUY+MCYmKGguYWRkUmFuZ2UobmV3IEsobS5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItRixtLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcikpLGMuYWRkUmFuZ2UobmV3IEsobS5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItRixtLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcikpKTtsZXQgXztmb3IoXz0wO188dztfKyspe2NvbnN0IFA9bS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK18sVz1tLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrXztpZihQPnIubGVuZ3RofHxXPmkubGVuZ3RofHxjLmNvbnRhaW5zKFcpfHxoLmNvbnRhaW5zKFApfHwhSGEocltQLTFdLGlbVy0xXSxzKSlicmVha31fPjAmJihoLmFkZFJhbmdlKG5ldyBLKG0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxtLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrXykpLGMuYWRkUmFuZ2UobmV3IEsobS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLG0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStfKSkpLChGPjB8fF8+MCkmJihhW2ZdPW5ldyBIZShuZXcgSyhtLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1GLG0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStfKSxuZXcgSyhtLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1GLG0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStfKSkpfXJldHVybiBhfWZ1bmN0aW9uIEhhKHQsZSxuKXtpZih0LnRyaW0oKT09PWUudHJpbSgpKXJldHVybiEwO2lmKHQubGVuZ3RoPjMwMCYmZS5sZW5ndGg+MzAwKXJldHVybiExO2NvbnN0IGk9bmV3IEJhKCkuY29tcHV0ZShuZXcgUW4oW3RdLG5ldyBRKDAsMSksITEpLG5ldyBRbihbZV0sbmV3IFEoMCwxKSwhMSksbik7bGV0IHM9MDtjb25zdCBhPWNlLmludmVydChpLmRpZmZzLHQubGVuZ3RoKTtmb3IoY29uc3QgaCBvZiBhKWguc2VxMVJhbmdlLmZvckVhY2godT0+e25pKHQuY2hhckNvZGVBdCh1KSl8fHMrK30pO2Z1bmN0aW9uIG8oaCl7bGV0IHU9MDtmb3IobGV0IGY9MDtmPHQubGVuZ3RoO2YrKyluaShoLmNoYXJDb2RlQXQoZikpfHx1Kys7cmV0dXJuIHV9Y29uc3QgbD1vKHQubGVuZ3RoPmUubGVuZ3RoP3Q6ZSk7cmV0dXJuIHMvbD4uNiYmbD4xMH1mdW5jdGlvbiBnZCh0KXtpZih0Lmxlbmd0aD09PTApcmV0dXJuIHQ7dC5zb3J0KGpuKG49Pm4ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLCRuKSk7Y29uc3QgZT1bdFswXV07Zm9yKGxldCBuPTE7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IHI9ZVtlLmxlbmd0aC0xXSxpPXRbbl0scz1pLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1yLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsYT1pLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1yLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU7aWYocz49MCYmYT49MCYmcythPD0yKXtlW2UubGVuZ3RoLTFdPXIuam9pbihpKTtjb250aW51ZX1lLnB1c2goaSl9cmV0dXJuIGV9ZnVuY3Rpb24gYmQodCxlKXtjb25zdCBuPW5ldyBjbih0KTtyZXR1cm4gZT1lLmZpbHRlcihyPT57Y29uc3QgaT1uLmZpbmRMYXN0TW9ub3Rvbm91cyhvPT5vLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcjxyLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpfHxuZXcgSGUobmV3IEsoMSwxKSxuZXcgSygxLDEpKSxzPVZ0KHQsbz0+by5tb2RpZmllZC5zdGFydExpbmVOdW1iZXI8ci5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKTtyZXR1cm4gaSE9PXN9KSxlfWZ1bmN0aW9uIEdhKHQsZSxuKXtsZXQgcj1uO3JldHVybiByPUphKHQsZSxyKSxyPUphKHQsZSxyKSxyPXZkKHQsZSxyKSxyfWZ1bmN0aW9uIEphKHQsZSxuKXtpZihuLmxlbmd0aD09PTApcmV0dXJuIG47Y29uc3Qgcj1bXTtyLnB1c2goblswXSk7Zm9yKGxldCBzPTE7czxuLmxlbmd0aDtzKyspe2NvbnN0IGE9cltyLmxlbmd0aC0xXTtsZXQgbz1uW3NdO2lmKG8uc2VxMVJhbmdlLmlzRW1wdHl8fG8uc2VxMlJhbmdlLmlzRW1wdHkpe2NvbnN0IGw9by5zZXExUmFuZ2Uuc3RhcnQtYS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlO2xldCBjO2ZvcihjPTE7Yzw9bCYmISh0LmdldEVsZW1lbnQoby5zZXExUmFuZ2Uuc3RhcnQtYykhPT10LmdldEVsZW1lbnQoby5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLWMpfHxlLmdldEVsZW1lbnQoby5zZXEyUmFuZ2Uuc3RhcnQtYykhPT1lLmdldEVsZW1lbnQoby5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlLWMpKTtjKyspO2lmKGMtLSxjPT09bCl7cltyLmxlbmd0aC0xXT1uZXcgY2UobmV3IFEoYS5zZXExUmFuZ2Uuc3RhcnQsby5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLWwpLG5ldyBRKGEuc2VxMlJhbmdlLnN0YXJ0LG8uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1sKSk7Y29udGludWV9bz1vLmRlbHRhKC1jKX1yLnB1c2gobyl9Y29uc3QgaT1bXTtmb3IobGV0IHM9MDtzPHIubGVuZ3RoLTE7cysrKXtjb25zdCBhPXJbcysxXTtsZXQgbz1yW3NdO2lmKG8uc2VxMVJhbmdlLmlzRW1wdHl8fG8uc2VxMlJhbmdlLmlzRW1wdHkpe2NvbnN0IGw9YS5zZXExUmFuZ2Uuc3RhcnQtby5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlO2xldCBjO2ZvcihjPTA7YzxsJiYhKCF0LmlzU3Ryb25nbHlFcXVhbChvLnNlcTFSYW5nZS5zdGFydCtjLG8uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZStjKXx8IWUuaXNTdHJvbmdseUVxdWFsKG8uc2VxMlJhbmdlLnN0YXJ0K2Msby5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK2MpKTtjKyspO2lmKGM9PT1sKXtyW3MrMV09bmV3IGNlKG5ldyBRKG8uc2VxMVJhbmdlLnN0YXJ0K2wsYS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlKSxuZXcgUShvLnNlcTJSYW5nZS5zdGFydCtsLGEuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZSkpO2NvbnRpbnVlfWM+MCYmKG89by5kZWx0YShjKSl9aS5wdXNoKG8pfXJldHVybiByLmxlbmd0aD4wJiZpLnB1c2gocltyLmxlbmd0aC0xXSksaX1mdW5jdGlvbiB2ZCh0LGUsbil7aWYoIXQuZ2V0Qm91bmRhcnlTY29yZXx8IWUuZ2V0Qm91bmRhcnlTY29yZSlyZXR1cm4gbjtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7Y29uc3QgaT1yPjA/bltyLTFdOnZvaWQgMCxzPW5bcl0sYT1yKzE8bi5sZW5ndGg/bltyKzFdOnZvaWQgMCxvPW5ldyBRKGk/aS5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlKzE6MCxhP2Euc2VxMVJhbmdlLnN0YXJ0LTE6dC5sZW5ndGgpLGw9bmV3IFEoaT9pLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUrMTowLGE/YS5zZXEyUmFuZ2Uuc3RhcnQtMTplLmxlbmd0aCk7cy5zZXExUmFuZ2UuaXNFbXB0eT9uW3JdPVhhKHMsdCxlLG8sbCk6cy5zZXEyUmFuZ2UuaXNFbXB0eSYmKG5bcl09WGEocy5zd2FwKCksZSx0LGwsbykuc3dhcCgpKX1yZXR1cm4gbn1mdW5jdGlvbiBYYSh0LGUsbixyLGkpe2xldCBhPTE7Zm9yKDt0LnNlcTFSYW5nZS5zdGFydC1hPj1yLnN0YXJ0JiZ0LnNlcTJSYW5nZS5zdGFydC1hPj1pLnN0YXJ0JiZuLmlzU3Ryb25nbHlFcXVhbCh0LnNlcTJSYW5nZS5zdGFydC1hLHQuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1hKSYmYTwxMDA7KWErKzthLS07bGV0IG89MDtmb3IoO3Quc2VxMVJhbmdlLnN0YXJ0K288ci5lbmRFeGNsdXNpdmUmJnQuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZStvPGkuZW5kRXhjbHVzaXZlJiZuLmlzU3Ryb25nbHlFcXVhbCh0LnNlcTJSYW5nZS5zdGFydCtvLHQuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZStvKSYmbzwxMDA7KW8rKztpZihhPT09MCYmbz09PTApcmV0dXJuIHQ7bGV0IGw9MCxjPS0xO2ZvcihsZXQgaD0tYTtoPD1vO2grKyl7Y29uc3QgdT10LnNlcTJSYW5nZS5zdGFydCtoLGY9dC5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK2gsbT10LnNlcTFSYW5nZS5zdGFydCtoLGc9ZS5nZXRCb3VuZGFyeVNjb3JlKG0pK24uZ2V0Qm91bmRhcnlTY29yZSh1KStuLmdldEJvdW5kYXJ5U2NvcmUoZik7Zz5jJiYoYz1nLGw9aCl9cmV0dXJuIHQuZGVsdGEobCl9ZnVuY3Rpb24geWQodCxlLG4pe2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2Ygbil7Y29uc3Qgcz1yW3IubGVuZ3RoLTFdO2lmKCFzKXtyLnB1c2goaSk7Y29udGludWV9aS5zZXExUmFuZ2Uuc3RhcnQtcy5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlPD0yfHxpLnNlcTJSYW5nZS5zdGFydC1zLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmU8PTI/cltyLmxlbmd0aC0xXT1uZXcgY2Uocy5zZXExUmFuZ2Uuam9pbihpLnNlcTFSYW5nZSkscy5zZXEyUmFuZ2Uuam9pbihpLnNlcTJSYW5nZSkpOnIucHVzaChpKX1yZXR1cm4gcn1mdW5jdGlvbiB3ZCh0LGUsbil7Y29uc3Qgcj1jZS5pbnZlcnQobix0Lmxlbmd0aCksaT1bXTtsZXQgcz1uZXcgTGUoMCwwKTtmdW5jdGlvbiBhKGwsYyl7aWYobC5vZmZzZXQxPHMub2Zmc2V0MXx8bC5vZmZzZXQyPHMub2Zmc2V0MilyZXR1cm47Y29uc3QgaD10LmZpbmRXb3JkQ29udGFpbmluZyhsLm9mZnNldDEpLHU9ZS5maW5kV29yZENvbnRhaW5pbmcobC5vZmZzZXQyKTtpZighaHx8IXUpcmV0dXJuO2xldCBmPW5ldyBjZShoLHUpO2NvbnN0IG09Zi5pbnRlcnNlY3QoYyk7bGV0IGc9bS5zZXExUmFuZ2UubGVuZ3RoLGI9bS5zZXEyUmFuZ2UubGVuZ3RoO2Zvcig7ci5sZW5ndGg+MDspe2NvbnN0IHk9clswXTtpZighKHkuc2VxMVJhbmdlLmludGVyc2VjdHMoZi5zZXExUmFuZ2UpfHx5LnNlcTJSYW5nZS5pbnRlcnNlY3RzKGYuc2VxMlJhbmdlKSkpYnJlYWs7Y29uc3Qgaz10LmZpbmRXb3JkQ29udGFpbmluZyh5LnNlcTFSYW5nZS5zdGFydCksdz1lLmZpbmRXb3JkQ29udGFpbmluZyh5LnNlcTJSYW5nZS5zdGFydCksRj1uZXcgY2Uoayx3KSxfPUYuaW50ZXJzZWN0KHkpO2lmKGcrPV8uc2VxMVJhbmdlLmxlbmd0aCxiKz1fLnNlcTJSYW5nZS5sZW5ndGgsZj1mLmpvaW4oRiksZi5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlPj15LnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUpci5zaGlmdCgpO2Vsc2UgYnJlYWt9ZytiPChmLnNlcTFSYW5nZS5sZW5ndGgrZi5zZXEyUmFuZ2UubGVuZ3RoKSoyLzMmJmkucHVzaChmKSxzPWYuZ2V0RW5kRXhjbHVzaXZlcygpfWZvcig7ci5sZW5ndGg+MDspe2NvbnN0IGw9ci5zaGlmdCgpO2wuc2VxMVJhbmdlLmlzRW1wdHl8fChhKGwuZ2V0U3RhcnRzKCksbCksYShsLmdldEVuZEV4Y2x1c2l2ZXMoKS5kZWx0YSgtMSksbCkpfXJldHVybiB4ZChuLGkpfWZ1bmN0aW9uIHhkKHQsZSl7Y29uc3Qgbj1bXTtmb3IoO3QubGVuZ3RoPjB8fGUubGVuZ3RoPjA7KXtjb25zdCByPXRbMF0saT1lWzBdO2xldCBzO3ImJighaXx8ci5zZXExUmFuZ2Uuc3RhcnQ8aS5zZXExUmFuZ2Uuc3RhcnQpP3M9dC5zaGlmdCgpOnM9ZS5zaGlmdCgpLG4ubGVuZ3RoPjAmJm5bbi5sZW5ndGgtMV0uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZT49cy5zZXExUmFuZ2Uuc3RhcnQ/bltuLmxlbmd0aC0xXT1uW24ubGVuZ3RoLTFdLmpvaW4ocyk6bi5wdXNoKHMpfXJldHVybiBufWZ1bmN0aW9uIFNkKHQsZSxuKXtsZXQgcj1uO2lmKHIubGVuZ3RoPT09MClyZXR1cm4gcjtsZXQgaT0wLHM7ZG97cz0hMTtjb25zdCBhPVtyWzBdXTtmb3IobGV0IG89MTtvPHIubGVuZ3RoO28rKyl7bGV0IGg9ZnVuY3Rpb24oZixtKXtjb25zdCBnPW5ldyBRKGMuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxsLnNlcTFSYW5nZS5zdGFydCk7cmV0dXJuIHQuZ2V0VGV4dChnKS5yZXBsYWNlKC9ccy9nLCIiKS5sZW5ndGg8PTQmJihmLnNlcTFSYW5nZS5sZW5ndGgrZi5zZXEyUmFuZ2UubGVuZ3RoPjV8fG0uc2VxMVJhbmdlLmxlbmd0aCttLnNlcTJSYW5nZS5sZW5ndGg+NSl9O2NvbnN0IGw9cltvXSxjPWFbYS5sZW5ndGgtMV07aChjLGwpPyhzPSEwLGFbYS5sZW5ndGgtMV09YVthLmxlbmd0aC0xXS5qb2luKGwpKTphLnB1c2gobCl9cj1hfXdoaWxlKGkrKzwxMCYmcyk7cmV0dXJuIHJ9ZnVuY3Rpb24gQ2QodCxlLG4pe2xldCByPW47aWYoci5sZW5ndGg9PT0wKXJldHVybiByO2xldCBpPTAscztkb3tzPSExO2NvbnN0IG89W3JbMF1dO2ZvcihsZXQgbD0xO2w8ci5sZW5ndGg7bCsrKXtsZXQgdT1mdW5jdGlvbihtLGcpe2NvbnN0IGI9bmV3IFEoaC5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLGMuc2VxMVJhbmdlLnN0YXJ0KTtpZih0LmNvdW50TGluZXNJbihiKT41fHxiLmxlbmd0aD41MDApcmV0dXJuITE7Y29uc3QgQz10LmdldFRleHQoYikudHJpbSgpO2lmKEMubGVuZ3RoPjIwfHxDLnNwbGl0KC9cclxufFxyfFxuLykubGVuZ3RoPjEpcmV0dXJuITE7Y29uc3Qgaz10LmNvdW50TGluZXNJbihtLnNlcTFSYW5nZSksdz1tLnNlcTFSYW5nZS5sZW5ndGgsRj1lLmNvdW50TGluZXNJbihtLnNlcTJSYW5nZSksXz1tLnNlcTJSYW5nZS5sZW5ndGgsUD10LmNvdW50TGluZXNJbihnLnNlcTFSYW5nZSksVz1nLnNlcTFSYW5nZS5sZW5ndGgsVD1lLmNvdW50TGluZXNJbihnLnNlcTJSYW5nZSksSj1nLnNlcTJSYW5nZS5sZW5ndGgscmU9Mio0MCs1MDtmdW5jdGlvbiBOKFIpe3JldHVybiBNYXRoLm1pbihSLHJlKX1yZXR1cm4gTWF0aC5wb3coTWF0aC5wb3coTihrKjQwK3cpLDEuNSkrTWF0aC5wb3coTihGKjQwK18pLDEuNSksMS41KStNYXRoLnBvdyhNYXRoLnBvdyhOKFAqNDArVyksMS41KStNYXRoLnBvdyhOKFQqNDArSiksMS41KSwxLjUpPihyZSoqMS41KSoqMS41KjEuM307Y29uc3QgYz1yW2xdLGg9b1tvLmxlbmd0aC0xXTt1KGgsYyk/KHM9ITAsb1tvLmxlbmd0aC0xXT1vW28ubGVuZ3RoLTFdLmpvaW4oYykpOm8ucHVzaChjKX1yPW99d2hpbGUoaSsrPDEwJiZzKTtjb25zdCBhPVtdO3JldHVybiB5aChyLChvLGwsYyk9PntsZXQgaD1sO2Z1bmN0aW9uIHUoQyl7cmV0dXJuIEMubGVuZ3RoPjAmJkMudHJpbSgpLmxlbmd0aDw9MyYmbC5zZXExUmFuZ2UubGVuZ3RoK2wuc2VxMlJhbmdlLmxlbmd0aD4xMDB9Y29uc3QgZj10LmV4dGVuZFRvRnVsbExpbmVzKGwuc2VxMVJhbmdlKSxtPXQuZ2V0VGV4dChuZXcgUShmLnN0YXJ0LGwuc2VxMVJhbmdlLnN0YXJ0KSk7dShtKSYmKGg9aC5kZWx0YVN0YXJ0KC1tLmxlbmd0aCkpO2NvbnN0IGc9dC5nZXRUZXh0KG5ldyBRKGwuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxmLmVuZEV4Y2x1c2l2ZSkpO3UoZykmJihoPWguZGVsdGFFbmQoZy5sZW5ndGgpKTtjb25zdCBiPWNlLmZyb21PZmZzZXRQYWlycyhvP28uZ2V0RW5kRXhjbHVzaXZlcygpOkxlLnplcm8sYz9jLmdldFN0YXJ0cygpOkxlLm1heCkseT1oLmludGVyc2VjdChiKTthLmxlbmd0aD4wJiZ5LmdldFN0YXJ0cygpLmVxdWFscyhhW2EubGVuZ3RoLTFdLmdldEVuZEV4Y2x1c2l2ZXMoKSk/YVthLmxlbmd0aC0xXT1hW2EubGVuZ3RoLTFdLmpvaW4oeSk6YS5wdXNoKHkpfSksYX1jbGFzcyBZYXtjb25zdHJ1Y3RvcihlLG4pe3RoaXMudHJpbW1lZEhhc2g9ZSx0aGlzLmxpbmVzPW59Z2V0RWxlbWVudChlKXtyZXR1cm4gdGhpcy50cmltbWVkSGFzaFtlXX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMudHJpbW1lZEhhc2gubGVuZ3RofWdldEJvdW5kYXJ5U2NvcmUoZSl7Y29uc3Qgbj1lPT09MD8wOkthKHRoaXMubGluZXNbZS0xXSkscj1lPT09dGhpcy5saW5lcy5sZW5ndGg/MDpLYSh0aGlzLmxpbmVzW2VdKTtyZXR1cm4gMWUzLShuK3IpfWdldFRleHQoZSl7cmV0dXJuIHRoaXMubGluZXMuc2xpY2UoZS5zdGFydCxlLmVuZEV4Y2x1c2l2ZSkuam9pbihgCmApfWlzU3Ryb25nbHlFcXVhbChlLG4pe3JldHVybiB0aGlzLmxpbmVzW2VdPT09dGhpcy5saW5lc1tuXX19ZnVuY3Rpb24gS2EodCl7bGV0IGU9MDtmb3IoO2U8dC5sZW5ndGgmJih0LmNoYXJDb2RlQXQoZSk9PT0zMnx8dC5jaGFyQ29kZUF0KGUpPT09OSk7KWUrKztyZXR1cm4gZX1jbGFzcyBrZHtjb25zdHJ1Y3Rvcigpe3RoaXMuZHluYW1pY1Byb2dyYW1taW5nRGlmZmluZz1uZXcgbGQsdGhpcy5teWVyc0RpZmZpbmdBbGdvcml0aG09bmV3IEJhfWNvbXB1dGVEaWZmKGUsbixyKXtpZihlLmxlbmd0aDw9MSYmZ2goZSxuLChfLFApPT5fPT09UCkpcmV0dXJuIG5ldyBLbihbXSxbXSwhMSk7aWYoZS5sZW5ndGg9PT0xJiZlWzBdLmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MSYmblswXS5sZW5ndGg9PT0wKXJldHVybiBuZXcgS24oW25ldyBudChuZXcgSygxLGUubGVuZ3RoKzEpLG5ldyBLKDEsbi5sZW5ndGgrMSksW25ldyBCdChuZXcgdmUoMSwxLGUubGVuZ3RoLGVbMF0ubGVuZ3RoKzEpLG5ldyB2ZSgxLDEsbi5sZW5ndGgsblswXS5sZW5ndGgrMSkpXSldLFtdLCExKTtjb25zdCBpPXIubWF4Q29tcHV0YXRpb25UaW1lTXM9PT0wP2RuLmluc3RhbmNlOm5ldyBvZChyLm1heENvbXB1dGF0aW9uVGltZU1zKSxzPSFyLmlnbm9yZVRyaW1XaGl0ZXNwYWNlLGE9bmV3IE1hcDtmdW5jdGlvbiBvKF8pe2xldCBQPWEuZ2V0KF8pO3JldHVybiBQPT09dm9pZCAwJiYoUD1hLnNpemUsYS5zZXQoXyxQKSksUH1jb25zdCBsPWUubWFwKF89Pm8oXy50cmltKCkpKSxjPW4ubWFwKF89Pm8oXy50cmltKCkpKSxoPW5ldyBZYShsLGUpLHU9bmV3IFlhKGMsbiksZj1oLmxlbmd0aCt1Lmxlbmd0aDwxNzAwP3RoaXMuZHluYW1pY1Byb2dyYW1taW5nRGlmZmluZy5jb21wdXRlKGgsdSxpLChfLFApPT5lW19dPT09bltQXT9uW1BdLmxlbmd0aD09PTA/LjE6MStNYXRoLmxvZygxK25bUF0ubGVuZ3RoKTouOTkpOnRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtLmNvbXB1dGUoaCx1KTtsZXQgbT1mLmRpZmZzLGc9Zi5oaXRUaW1lb3V0O209R2EoaCx1LG0pLG09U2QoaCx1LG0pO2NvbnN0IGI9W10seT1fPT57aWYocylmb3IobGV0IFA9MDtQPF87UCsrKXtjb25zdCBXPUMrUCxUPWsrUDtpZihlW1ddIT09bltUXSl7Y29uc3QgSj10aGlzLnJlZmluZURpZmYoZSxuLG5ldyBjZShuZXcgUShXLFcrMSksbmV3IFEoVCxUKzEpKSxpLHMpO2Zvcihjb25zdCByZSBvZiBKLm1hcHBpbmdzKWIucHVzaChyZSk7Si5oaXRUaW1lb3V0JiYoZz0hMCl9fX07bGV0IEM9MCxrPTA7Zm9yKGNvbnN0IF8gb2YgbSl7WW4oKCk9Pl8uc2VxMVJhbmdlLnN0YXJ0LUM9PT1fLnNlcTJSYW5nZS5zdGFydC1rKTtjb25zdCBQPV8uc2VxMVJhbmdlLnN0YXJ0LUM7eShQKSxDPV8uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxrPV8uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZTtjb25zdCBXPXRoaXMucmVmaW5lRGlmZihlLG4sXyxpLHMpO1cuaGl0VGltZW91dCYmKGc9ITApO2Zvcihjb25zdCBUIG9mIFcubWFwcGluZ3MpYi5wdXNoKFQpfXkoZS5sZW5ndGgtQyk7Y29uc3Qgdz1RYShiLGUsbik7bGV0IEY9W107cmV0dXJuIHIuY29tcHV0ZU1vdmVzJiYoRj10aGlzLmNvbXB1dGVNb3Zlcyh3LGUsbixsLGMsaSxzKSksWW4oKCk9PntmdW5jdGlvbiBfKFcsVCl7aWYoVy5saW5lTnVtYmVyPDF8fFcubGluZU51bWJlcj5ULmxlbmd0aClyZXR1cm4hMTtjb25zdCBKPVRbVy5saW5lTnVtYmVyLTFdO3JldHVybiEoVy5jb2x1bW48MXx8Vy5jb2x1bW4+Si5sZW5ndGgrMSl9ZnVuY3Rpb24gUChXLFQpe3JldHVybiEoVy5zdGFydExpbmVOdW1iZXI8MXx8Vy5zdGFydExpbmVOdW1iZXI+VC5sZW5ndGgrMXx8Vy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPDF8fFcuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT5ULmxlbmd0aCsxKX1mb3IoY29uc3QgVyBvZiB3KXtpZighVy5pbm5lckNoYW5nZXMpcmV0dXJuITE7Zm9yKGNvbnN0IFQgb2YgVy5pbm5lckNoYW5nZXMpaWYoIShfKFQubW9kaWZpZWRSYW5nZS5nZXRTdGFydFBvc2l0aW9uKCksbikmJl8oVC5tb2RpZmllZFJhbmdlLmdldEVuZFBvc2l0aW9uKCksbikmJl8oVC5vcmlnaW5hbFJhbmdlLmdldFN0YXJ0UG9zaXRpb24oKSxlKSYmXyhULm9yaWdpbmFsUmFuZ2UuZ2V0RW5kUG9zaXRpb24oKSxlKSkpcmV0dXJuITE7aWYoIVAoVy5tb2RpZmllZCxuKXx8IVAoVy5vcmlnaW5hbCxlKSlyZXR1cm4hMX1yZXR1cm4hMH0pLG5ldyBLbih3LEYsZyl9Y29tcHV0ZU1vdmVzKGUsbixyLGkscyxhLG8pe3JldHVybiB1ZChlLG4scixpLHMsYSkubWFwKGg9Pntjb25zdCB1PXRoaXMucmVmaW5lRGlmZihuLHIsbmV3IGNlKGgub3JpZ2luYWwudG9PZmZzZXRSYW5nZSgpLGgubW9kaWZpZWQudG9PZmZzZXRSYW5nZSgpKSxhLG8pLGY9UWEodS5tYXBwaW5ncyxuLHIsITApO3JldHVybiBuZXcgZWQoaCxmKX0pfXJlZmluZURpZmYoZSxuLHIsaSxzKXtjb25zdCBhPW5ldyBRbihlLHIuc2VxMVJhbmdlLHMpLG89bmV3IFFuKG4sci5zZXEyUmFuZ2UscyksbD1hLmxlbmd0aCtvLmxlbmd0aDw1MDA/dGhpcy5keW5hbWljUHJvZ3JhbW1pbmdEaWZmaW5nLmNvbXB1dGUoYSxvLGkpOnRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtLmNvbXB1dGUoYSxvLGkpO2xldCBjPWwuZGlmZnM7cmV0dXJuIGM9R2EoYSxvLGMpLGM9d2QoYSxvLGMpLGM9eWQoYSxvLGMpLGM9Q2QoYSxvLGMpLHttYXBwaW5nczpjLm1hcCh1PT5uZXcgQnQoYS50cmFuc2xhdGVSYW5nZSh1LnNlcTFSYW5nZSksby50cmFuc2xhdGVSYW5nZSh1LnNlcTJSYW5nZSkpKSxoaXRUaW1lb3V0OmwuaGl0VGltZW91dH19fWZ1bmN0aW9uIFFhKHQsZSxuLHI9ITEpe2NvbnN0IGk9W107Zm9yKGNvbnN0IHMgb2YgYmgodC5tYXAoYT0+X2QoYSxlLG4pKSwoYSxvKT0+YS5vcmlnaW5hbC5vdmVybGFwT3JUb3VjaChvLm9yaWdpbmFsKXx8YS5tb2RpZmllZC5vdmVybGFwT3JUb3VjaChvLm1vZGlmaWVkKSkpe2NvbnN0IGE9c1swXSxvPXNbcy5sZW5ndGgtMV07aS5wdXNoKG5ldyBudChhLm9yaWdpbmFsLmpvaW4oby5vcmlnaW5hbCksYS5tb2RpZmllZC5qb2luKG8ubW9kaWZpZWQpLHMubWFwKGw9PmwuaW5uZXJDaGFuZ2VzWzBdKSkpfXJldHVybiBZbigoKT0+IXImJmkubGVuZ3RoPjAmJihpWzBdLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlciE9PWlbMF0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyfHxuLmxlbmd0aC1pW2kubGVuZ3RoLTFdLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUhPT1lLmxlbmd0aC1pW2kubGVuZ3RoLTFdLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpPyExOklhKGksKHMsYSk9PmEub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLXMub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT09PWEubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLXMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmcy5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPGEub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyJiZzLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU8YS5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIpKSxpfWZ1bmN0aW9uIF9kKHQsZSxuKXtsZXQgcj0wLGk9MDt0Lm1vZGlmaWVkUmFuZ2UuZW5kQ29sdW1uPT09MSYmdC5vcmlnaW5hbFJhbmdlLmVuZENvbHVtbj09PTEmJnQub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXIrcjw9dC5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXImJnQubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIrcjw9dC5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXImJihpPS0xKSx0Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRDb2x1bW4tMT49blt0Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLTFdLmxlbmd0aCYmdC5vcmlnaW5hbFJhbmdlLnN0YXJ0Q29sdW1uLTE+PWVbdC5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlci0xXS5sZW5ndGgmJnQub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXI8PXQub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyK2kmJnQubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXI8PXQubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyK2kmJihyPTEpO2NvbnN0IHM9bmV3IEsodC5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlcityLHQub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyKzEraSksYT1uZXcgSyh0Lm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3IsdC5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXIrMStpKTtyZXR1cm4gbmV3IG50KHMsYSxbdF0pfWNvbnN0IFphPXtnZXRMZWdhY3k6KCk9Pm5ldyByZCxnZXREZWZhdWx0OigpPT5uZXcga2R9O2Z1bmN0aW9uIGJ0KHQsZSl7Y29uc3Qgbj1NYXRoLnBvdygxMCxlKTtyZXR1cm4gTWF0aC5yb3VuZCh0Km4pL259Y2xhc3MgeWV7Y29uc3RydWN0b3IoZSxuLHIsaT0xKXt0aGlzLl9yZ2JhQnJhbmQ9dm9pZCAwLHRoaXMucj1NYXRoLm1pbigyNTUsTWF0aC5tYXgoMCxlKSl8MCx0aGlzLmc9TWF0aC5taW4oMjU1LE1hdGgubWF4KDAsbikpfDAsdGhpcy5iPU1hdGgubWluKDI1NSxNYXRoLm1heCgwLHIpKXwwLHRoaXMuYT1idChNYXRoLm1heChNYXRoLm1pbigxLGkpLDApLDMpfXN0YXRpYyBlcXVhbHMoZSxuKXtyZXR1cm4gZS5yPT09bi5yJiZlLmc9PT1uLmcmJmUuYj09PW4uYiYmZS5hPT09bi5hfX1jbGFzcyBUZXtjb25zdHJ1Y3RvcihlLG4scixpKXt0aGlzLl9oc2xhQnJhbmQ9dm9pZCAwLHRoaXMuaD1NYXRoLm1heChNYXRoLm1pbigzNjAsZSksMCl8MCx0aGlzLnM9YnQoTWF0aC5tYXgoTWF0aC5taW4oMSxuKSwwKSwzKSx0aGlzLmw9YnQoTWF0aC5tYXgoTWF0aC5taW4oMSxyKSwwKSwzKSx0aGlzLmE9YnQoTWF0aC5tYXgoTWF0aC5taW4oMSxpKSwwKSwzKX1zdGF0aWMgZXF1YWxzKGUsbil7cmV0dXJuIGUuaD09PW4uaCYmZS5zPT09bi5zJiZlLmw9PT1uLmwmJmUuYT09PW4uYX1zdGF0aWMgZnJvbVJHQkEoZSl7Y29uc3Qgbj1lLnIvMjU1LHI9ZS5nLzI1NSxpPWUuYi8yNTUscz1lLmEsYT1NYXRoLm1heChuLHIsaSksbz1NYXRoLm1pbihuLHIsaSk7bGV0IGw9MCxjPTA7Y29uc3QgaD0obythKS8yLHU9YS1vO2lmKHU+MCl7c3dpdGNoKGM9TWF0aC5taW4oaDw9LjU/dS8oMipoKTp1LygyLTIqaCksMSksYSl7Y2FzZSBuOmw9KHItaSkvdSsocjxpPzY6MCk7YnJlYWs7Y2FzZSByOmw9KGktbikvdSsyO2JyZWFrO2Nhc2UgaTpsPShuLXIpL3UrNDticmVha31sKj02MCxsPU1hdGgucm91bmQobCl9cmV0dXJuIG5ldyBUZShsLGMsaCxzKX1zdGF0aWMgX2h1ZTJyZ2IoZSxuLHIpe3JldHVybiByPDAmJihyKz0xKSxyPjEmJihyLT0xKSxyPDEvNj9lKyhuLWUpKjYqcjpyPDEvMj9uOnI8Mi8zP2UrKG4tZSkqKDIvMy1yKSo2OmV9c3RhdGljIHRvUkdCQShlKXtjb25zdCBuPWUuaC8zNjAse3M6cixsOmksYTpzfT1lO2xldCBhLG8sbDtpZihyPT09MClhPW89bD1pO2Vsc2V7Y29uc3QgYz1pPC41P2kqKDErcik6aStyLWkqcixoPTIqaS1jO2E9VGUuX2h1ZTJyZ2IoaCxjLG4rMS8zKSxvPVRlLl9odWUycmdiKGgsYyxuKSxsPVRlLl9odWUycmdiKGgsYyxuLTEvMyl9cmV0dXJuIG5ldyB5ZShNYXRoLnJvdW5kKGEqMjU1KSxNYXRoLnJvdW5kKG8qMjU1KSxNYXRoLnJvdW5kKGwqMjU1KSxzKX19Y2xhc3MgJHR7Y29uc3RydWN0b3IoZSxuLHIsaSl7dGhpcy5faHN2YUJyYW5kPXZvaWQgMCx0aGlzLmg9TWF0aC5tYXgoTWF0aC5taW4oMzYwLGUpLDApfDAsdGhpcy5zPWJ0KE1hdGgubWF4KE1hdGgubWluKDEsbiksMCksMyksdGhpcy52PWJ0KE1hdGgubWF4KE1hdGgubWluKDEsciksMCksMyksdGhpcy5hPWJ0KE1hdGgubWF4KE1hdGgubWluKDEsaSksMCksMyl9c3RhdGljIGVxdWFscyhlLG4pe3JldHVybiBlLmg9PT1uLmgmJmUucz09PW4ucyYmZS52PT09bi52JiZlLmE9PT1uLmF9c3RhdGljIGZyb21SR0JBKGUpe2NvbnN0IG49ZS5yLzI1NSxyPWUuZy8yNTUsaT1lLmIvMjU1LHM9TWF0aC5tYXgobixyLGkpLGE9TWF0aC5taW4obixyLGkpLG89cy1hLGw9cz09PTA/MDpvL3M7bGV0IGM7cmV0dXJuIG89PT0wP2M9MDpzPT09bj9jPSgoci1pKS9vJTYrNiklNjpzPT09cj9jPShpLW4pL28rMjpjPShuLXIpL28rNCxuZXcgJHQoTWF0aC5yb3VuZChjKjYwKSxsLHMsZS5hKX1zdGF0aWMgdG9SR0JBKGUpe2NvbnN0e2g6bixzOnIsdjppLGE6c309ZSxhPWkqcixvPWEqKDEtTWF0aC5hYnMobi82MCUyLTEpKSxsPWktYTtsZXRbYyxoLHVdPVswLDAsMF07cmV0dXJuIG48NjA/KGM9YSxoPW8pOm48MTIwPyhjPW8saD1hKTpuPDE4MD8oaD1hLHU9byk6bjwyNDA/KGg9byx1PWEpOm48MzAwPyhjPW8sdT1hKTpuPD0zNjAmJihjPWEsdT1vKSxjPU1hdGgucm91bmQoKGMrbCkqMjU1KSxoPU1hdGgucm91bmQoKGgrbCkqMjU1KSx1PU1hdGgucm91bmQoKHUrbCkqMjU1KSxuZXcgeWUoYyxoLHUscyl9fWxldCBmZT1jbGFzcyBCZXtzdGF0aWMgZnJvbUhleChlKXtyZXR1cm4gQmUuRm9ybWF0LkNTUy5wYXJzZUhleChlKXx8QmUucmVkfXN0YXRpYyBlcXVhbHMoZSxuKXtyZXR1cm4hZSYmIW4/ITA6IWV8fCFuPyExOmUuZXF1YWxzKG4pfWdldCBoc2xhKCl7cmV0dXJuIHRoaXMuX2hzbGE/dGhpcy5faHNsYTpUZS5mcm9tUkdCQSh0aGlzLnJnYmEpfWdldCBoc3ZhKCl7cmV0dXJuIHRoaXMuX2hzdmE/dGhpcy5faHN2YTokdC5mcm9tUkdCQSh0aGlzLnJnYmEpfWNvbnN0cnVjdG9yKGUpe2lmKGUpaWYoZSBpbnN0YW5jZW9mIHllKXRoaXMucmdiYT1lO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFRlKXRoaXMuX2hzbGE9ZSx0aGlzLnJnYmE9VGUudG9SR0JBKGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mICR0KXRoaXMuX2hzdmE9ZSx0aGlzLnJnYmE9JHQudG9SR0JBKGUpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbG9yIGN0b3IgYXJndW1lbnQiKTtlbHNlIHRocm93IG5ldyBFcnJvcigiQ29sb3IgbmVlZHMgYSB2YWx1ZSIpfWVxdWFscyhlKXtyZXR1cm4hIWUmJnllLmVxdWFscyh0aGlzLnJnYmEsZS5yZ2JhKSYmVGUuZXF1YWxzKHRoaXMuaHNsYSxlLmhzbGEpJiYkdC5lcXVhbHModGhpcy5oc3ZhLGUuaHN2YSl9Z2V0UmVsYXRpdmVMdW1pbmFuY2UoKXtjb25zdCBlPUJlLl9yZWxhdGl2ZUx1bWluYW5jZUZvckNvbXBvbmVudCh0aGlzLnJnYmEuciksbj1CZS5fcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQodGhpcy5yZ2JhLmcpLHI9QmUuX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5iKSxpPS4yMTI2KmUrLjcxNTIqbisuMDcyMipyO3JldHVybiBidChpLDQpfXN0YXRpYyBfcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQoZSl7Y29uc3Qgbj1lLzI1NTtyZXR1cm4gbjw9LjAzOTI4P24vMTIuOTI6TWF0aC5wb3coKG4rLjA1NSkvMS4wNTUsMi40KX1pc0xpZ2h0ZXIoKXtyZXR1cm4odGhpcy5yZ2JhLnIqMjk5K3RoaXMucmdiYS5nKjU4Nyt0aGlzLnJnYmEuYioxMTQpLzFlMz49MTI4fWlzTGlnaHRlclRoYW4oZSl7Y29uc3Qgbj10aGlzLmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscj1lLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIG4+cn1pc0RhcmtlclRoYW4oZSl7Y29uc3Qgbj10aGlzLmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscj1lLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIG48cn1saWdodGVuKGUpe3JldHVybiBuZXcgQmUobmV3IFRlKHRoaXMuaHNsYS5oLHRoaXMuaHNsYS5zLHRoaXMuaHNsYS5sK3RoaXMuaHNsYS5sKmUsdGhpcy5oc2xhLmEpKX1kYXJrZW4oZSl7cmV0dXJuIG5ldyBCZShuZXcgVGUodGhpcy5oc2xhLmgsdGhpcy5oc2xhLnMsdGhpcy5oc2xhLmwtdGhpcy5oc2xhLmwqZSx0aGlzLmhzbGEuYSkpfXRyYW5zcGFyZW50KGUpe2NvbnN0e3I6bixnOnIsYjppLGE6c309dGhpcy5yZ2JhO3JldHVybiBuZXcgQmUobmV3IHllKG4scixpLHMqZSkpfWlzVHJhbnNwYXJlbnQoKXtyZXR1cm4gdGhpcy5yZ2JhLmE9PT0wfWlzT3BhcXVlKCl7cmV0dXJuIHRoaXMucmdiYS5hPT09MX1vcHBvc2l0ZSgpe3JldHVybiBuZXcgQmUobmV3IHllKDI1NS10aGlzLnJnYmEuciwyNTUtdGhpcy5yZ2JhLmcsMjU1LXRoaXMucmdiYS5iLHRoaXMucmdiYS5hKSl9bWFrZU9wYXF1ZShlKXtpZih0aGlzLmlzT3BhcXVlKCl8fGUucmdiYS5hIT09MSlyZXR1cm4gdGhpcztjb25zdHtyOm4sZzpyLGI6aSxhOnN9PXRoaXMucmdiYTtyZXR1cm4gbmV3IEJlKG5ldyB5ZShlLnJnYmEuci1zKihlLnJnYmEuci1uKSxlLnJnYmEuZy1zKihlLnJnYmEuZy1yKSxlLnJnYmEuYi1zKihlLnJnYmEuYi1pKSwxKSl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5fdG9TdHJpbmd8fCh0aGlzLl90b1N0cmluZz1CZS5Gb3JtYXQuQ1NTLmZvcm1hdCh0aGlzKSksdGhpcy5fdG9TdHJpbmd9c3RhdGljIGdldExpZ2h0ZXJDb2xvcihlLG4scil7aWYoZS5pc0xpZ2h0ZXJUaGFuKG4pKXJldHVybiBlO3I9cnx8LjU7Y29uc3QgaT1lLmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscz1uLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIHI9cioocy1pKS9zLGUubGlnaHRlbihyKX1zdGF0aWMgZ2V0RGFya2VyQ29sb3IoZSxuLHIpe2lmKGUuaXNEYXJrZXJUaGFuKG4pKXJldHVybiBlO3I9cnx8LjU7Y29uc3QgaT1lLmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscz1uLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIHI9ciooaS1zKS9pLGUuZGFya2VuKHIpfX07ZmUud2hpdGU9bmV3IGZlKG5ldyB5ZSgyNTUsMjU1LDI1NSwxKSksZmUuYmxhY2s9bmV3IGZlKG5ldyB5ZSgwLDAsMCwxKSksZmUucmVkPW5ldyBmZShuZXcgeWUoMjU1LDAsMCwxKSksZmUuYmx1ZT1uZXcgZmUobmV3IHllKDAsMCwyNTUsMSkpLGZlLmdyZWVuPW5ldyBmZShuZXcgeWUoMCwyNTUsMCwxKSksZmUuY3lhbj1uZXcgZmUobmV3IHllKDAsMjU1LDI1NSwxKSksZmUubGlnaHRncmV5PW5ldyBmZShuZXcgeWUoMjExLDIxMSwyMTEsMSkpLGZlLnRyYW5zcGFyZW50PW5ldyBmZShuZXcgeWUoMCwwLDAsMCkpLGZ1bmN0aW9uKHQpeyhmdW5jdGlvbihlKXsoZnVuY3Rpb24obil7ZnVuY3Rpb24gcihtKXtyZXR1cm4gbS5yZ2JhLmE9PT0xP2ByZ2IoJHttLnJnYmEucn0sICR7bS5yZ2JhLmd9LCAke20ucmdiYS5ifSlgOnQuRm9ybWF0LkNTUy5mb3JtYXRSR0JBKG0pfW4uZm9ybWF0UkdCPXI7ZnVuY3Rpb24gaShtKXtyZXR1cm5gcmdiYSgke20ucmdiYS5yfSwgJHttLnJnYmEuZ30sICR7bS5yZ2JhLmJ9LCAkeyttLnJnYmEuYS50b0ZpeGVkKDIpfSlgfW4uZm9ybWF0UkdCQT1pO2Z1bmN0aW9uIHMobSl7cmV0dXJuIG0uaHNsYS5hPT09MT9gaHNsKCR7bS5oc2xhLmh9LCAkeyhtLmhzbGEucyoxMDApLnRvRml4ZWQoMil9JSwgJHsobS5oc2xhLmwqMTAwKS50b0ZpeGVkKDIpfSUpYDp0LkZvcm1hdC5DU1MuZm9ybWF0SFNMQShtKX1uLmZvcm1hdEhTTD1zO2Z1bmN0aW9uIGEobSl7cmV0dXJuYGhzbGEoJHttLmhzbGEuaH0sICR7KG0uaHNsYS5zKjEwMCkudG9GaXhlZCgyKX0lLCAkeyhtLmhzbGEubCoxMDApLnRvRml4ZWQoMil9JSwgJHttLmhzbGEuYS50b0ZpeGVkKDIpfSlgfW4uZm9ybWF0SFNMQT1hO2Z1bmN0aW9uIG8obSl7Y29uc3QgZz1tLnRvU3RyaW5nKDE2KTtyZXR1cm4gZy5sZW5ndGghPT0yPyIwIitnOmd9ZnVuY3Rpb24gbChtKXtyZXR1cm5gIyR7byhtLnJnYmEucil9JHtvKG0ucmdiYS5nKX0ke28obS5yZ2JhLmIpfWB9bi5mb3JtYXRIZXg9bDtmdW5jdGlvbiBjKG0sZz0hMSl7cmV0dXJuIGcmJm0ucmdiYS5hPT09MT90LkZvcm1hdC5DU1MuZm9ybWF0SGV4KG0pOmAjJHtvKG0ucmdiYS5yKX0ke28obS5yZ2JhLmcpfSR7byhtLnJnYmEuYil9JHtvKE1hdGgucm91bmQobS5yZ2JhLmEqMjU1KSl9YH1uLmZvcm1hdEhleEE9YztmdW5jdGlvbiBoKG0pe3JldHVybiBtLmlzT3BhcXVlKCk/dC5Gb3JtYXQuQ1NTLmZvcm1hdEhleChtKTp0LkZvcm1hdC5DU1MuZm9ybWF0UkdCQShtKX1uLmZvcm1hdD1oO2Z1bmN0aW9uIHUobSl7Y29uc3QgZz1tLmxlbmd0aDtpZihnPT09MHx8bS5jaGFyQ29kZUF0KDApIT09MzUpcmV0dXJuIG51bGw7aWYoZz09PTcpe2NvbnN0IGI9MTYqZihtLmNoYXJDb2RlQXQoMSkpK2YobS5jaGFyQ29kZUF0KDIpKSx5PTE2KmYobS5jaGFyQ29kZUF0KDMpKStmKG0uY2hhckNvZGVBdCg0KSksQz0xNipmKG0uY2hhckNvZGVBdCg1KSkrZihtLmNoYXJDb2RlQXQoNikpO3JldHVybiBuZXcgdChuZXcgeWUoYix5LEMsMSkpfWlmKGc9PT05KXtjb25zdCBiPTE2KmYobS5jaGFyQ29kZUF0KDEpKStmKG0uY2hhckNvZGVBdCgyKSkseT0xNipmKG0uY2hhckNvZGVBdCgzKSkrZihtLmNoYXJDb2RlQXQoNCkpLEM9MTYqZihtLmNoYXJDb2RlQXQoNSkpK2YobS5jaGFyQ29kZUF0KDYpKSxrPTE2KmYobS5jaGFyQ29kZUF0KDcpKStmKG0uY2hhckNvZGVBdCg4KSk7cmV0dXJuIG5ldyB0KG5ldyB5ZShiLHksQyxrLzI1NSkpfWlmKGc9PT00KXtjb25zdCBiPWYobS5jaGFyQ29kZUF0KDEpKSx5PWYobS5jaGFyQ29kZUF0KDIpKSxDPWYobS5jaGFyQ29kZUF0KDMpKTtyZXR1cm4gbmV3IHQobmV3IHllKDE2KmIrYiwxNip5K3ksMTYqQytDKSl9aWYoZz09PTUpe2NvbnN0IGI9ZihtLmNoYXJDb2RlQXQoMSkpLHk9ZihtLmNoYXJDb2RlQXQoMikpLEM9ZihtLmNoYXJDb2RlQXQoMykpLGs9ZihtLmNoYXJDb2RlQXQoNCkpO3JldHVybiBuZXcgdChuZXcgeWUoMTYqYitiLDE2KnkreSwxNipDK0MsKDE2KmsraykvMjU1KSl9cmV0dXJuIG51bGx9bi5wYXJzZUhleD11O2Z1bmN0aW9uIGYobSl7c3dpdGNoKG0pe2Nhc2UgNDg6cmV0dXJuIDA7Y2FzZSA0OTpyZXR1cm4gMTtjYXNlIDUwOnJldHVybiAyO2Nhc2UgNTE6cmV0dXJuIDM7Y2FzZSA1MjpyZXR1cm4gNDtjYXNlIDUzOnJldHVybiA1O2Nhc2UgNTQ6cmV0dXJuIDY7Y2FzZSA1NTpyZXR1cm4gNztjYXNlIDU2OnJldHVybiA4O2Nhc2UgNTc6cmV0dXJuIDk7Y2FzZSA5NzpyZXR1cm4gMTA7Y2FzZSA2NTpyZXR1cm4gMTA7Y2FzZSA5ODpyZXR1cm4gMTE7Y2FzZSA2NjpyZXR1cm4gMTE7Y2FzZSA5OTpyZXR1cm4gMTI7Y2FzZSA2NzpyZXR1cm4gMTI7Y2FzZSAxMDA6cmV0dXJuIDEzO2Nhc2UgNjg6cmV0dXJuIDEzO2Nhc2UgMTAxOnJldHVybiAxNDtjYXNlIDY5OnJldHVybiAxNDtjYXNlIDEwMjpyZXR1cm4gMTU7Y2FzZSA3MDpyZXR1cm4gMTV9cmV0dXJuIDB9fSkoZS5DU1N8fChlLkNTUz17fSkpfSkodC5Gb3JtYXR8fCh0LkZvcm1hdD17fSkpfShmZXx8KGZlPXt9KSk7ZnVuY3Rpb24gZW8odCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBvZiB0KXtjb25zdCByPU51bWJlcihuKTsocnx8cj09PTAmJm4ucmVwbGFjZSgvXHMvZywiIikhPT0iIikmJmUucHVzaChyKX1yZXR1cm4gZX1mdW5jdGlvbiBpaSh0LGUsbixyKXtyZXR1cm57cmVkOnQvMjU1LGJsdWU6bi8yNTUsZ3JlZW46ZS8yNTUsYWxwaGE6cn19ZnVuY3Rpb24gdW4odCxlKXtjb25zdCBuPWUuaW5kZXgscj1lWzBdLmxlbmd0aDtpZighbilyZXR1cm47Y29uc3QgaT10LnBvc2l0aW9uQXQobik7cmV0dXJue3N0YXJ0TGluZU51bWJlcjppLmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46aS5jb2x1bW4sZW5kTGluZU51bWJlcjppLmxpbmVOdW1iZXIsZW5kQ29sdW1uOmkuY29sdW1uK3J9fWZ1bmN0aW9uIEVkKHQsZSl7aWYoIXQpcmV0dXJuO2NvbnN0IG49ZmUuRm9ybWF0LkNTUy5wYXJzZUhleChlKTtpZihuKXJldHVybntyYW5nZTp0LGNvbG9yOmlpKG4ucmdiYS5yLG4ucmdiYS5nLG4ucmdiYS5iLG4ucmdiYS5hKX19ZnVuY3Rpb24gdG8odCxlLG4pe2lmKCF0fHxlLmxlbmd0aCE9PTEpcmV0dXJuO2NvbnN0IGk9ZVswXS52YWx1ZXMoKSxzPWVvKGkpO3JldHVybntyYW5nZTp0LGNvbG9yOmlpKHNbMF0sc1sxXSxzWzJdLG4/c1szXToxKX19ZnVuY3Rpb24gbm8odCxlLG4pe2lmKCF0fHxlLmxlbmd0aCE9PTEpcmV0dXJuO2NvbnN0IGk9ZVswXS52YWx1ZXMoKSxzPWVvKGkpLGE9bmV3IGZlKG5ldyBUZShzWzBdLHNbMV0vMTAwLHNbMl0vMTAwLG4/c1szXToxKSk7cmV0dXJue3JhbmdlOnQsY29sb3I6aWkoYS5yZ2JhLnIsYS5yZ2JhLmcsYS5yZ2JhLmIsYS5yZ2JhLmEpfX1mdW5jdGlvbiBwbih0LGUpe3JldHVybiB0eXBlb2YgdD09InN0cmluZyI/Wy4uLnQubWF0Y2hBbGwoZSldOnQuZmluZE1hdGNoZXMoZSl9ZnVuY3Rpb24gUmQodCl7Y29uc3QgZT1bXSxyPXBuKHQsL1xiKHJnYnxyZ2JhfGhzbHxoc2xhKShcKFswLTlccywuXCVdKlwpKXwoIykoW0EtRmEtZjAtOV17M30pXGJ8KCMpKFtBLUZhLWYwLTldezR9KVxifCgjKShbQS1GYS1mMC05XXs2fSlcYnwoIykoW0EtRmEtZjAtOV17OH0pXGIvZ20pO2lmKHIubGVuZ3RoPjApZm9yKGNvbnN0IGkgb2Ygcil7Y29uc3Qgcz1pLmZpbHRlcihjPT5jIT09dm9pZCAwKSxhPXNbMV0sbz1zWzJdO2lmKCFvKWNvbnRpbnVlO2xldCBsO2lmKGE9PT0icmdiIil7Y29uc3QgYz0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccypcKSQvZ207bD10byh1bih0LGkpLHBuKG8sYyksITEpfWVsc2UgaWYoYT09PSJyZ2JhIil7Y29uc3QgYz0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccyosXHMqKDBbLl1bMC05XSt8Wy5dWzAtOV0rfFswMV1bLl18WzAxXSlccypcKSQvZ207bD10byh1bih0LGkpLHBuKG8sYyksITApfWVsc2UgaWYoYT09PSJoc2wiKXtjb25zdCBjPS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKlwpJC9nbTtsPW5vKHVuKHQsaSkscG4obyxjKSwhMSl9ZWxzZSBpZihhPT09ImhzbGEiKXtjb25zdCBjPS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKixccyooMFsuXVswLTldK3xbLl1bMC05XSt8WzAxXVsuXXxbMDFdKVxzKlwpJC9nbTtsPW5vKHVuKHQsaSkscG4obyxjKSwhMCl9ZWxzZSBhPT09IiMiJiYobD1FZCh1bih0LGkpLGErbykpO2wmJmUucHVzaChsKX1yZXR1cm4gZX1mdW5jdGlvbiBGZCh0KXtyZXR1cm4hdHx8dHlwZW9mIHQuZ2V0VmFsdWUhPSJmdW5jdGlvbiJ8fHR5cGVvZiB0LnBvc2l0aW9uQXQhPSJmdW5jdGlvbiI/W106UmQodCl9Y29uc3Qgcm89L1xiTUFSSzpccyooLiopJC9kLERkPS9eLSt8LSskL2c7ZnVuY3Rpb24gQWQodCxlKXt2YXIgbjtsZXQgcj1bXTtpZihlLmZpbmRSZWdpb25TZWN0aW9uSGVhZGVycyYmKCEoKG49ZS5mb2xkaW5nUnVsZXMpPT09bnVsbHx8bj09PXZvaWQgMCkmJm4ubWFya2Vycykpe2NvbnN0IGk9TmQodCxlKTtyPXIuY29uY2F0KGkpfWlmKGUuZmluZE1hcmtTZWN0aW9uSGVhZGVycyl7Y29uc3QgaT1NZCh0KTtyPXIuY29uY2F0KGkpfXJldHVybiByfWZ1bmN0aW9uIE5kKHQsZSl7Y29uc3Qgbj1bXSxyPXQuZ2V0TGluZUNvdW50KCk7Zm9yKGxldCBpPTE7aTw9cjtpKyspe2NvbnN0IHM9dC5nZXRMaW5lQ29udGVudChpKSxhPXMubWF0Y2goZS5mb2xkaW5nUnVsZXMubWFya2Vycy5zdGFydCk7aWYoYSl7Y29uc3Qgbz17c3RhcnRMaW5lTnVtYmVyOmksc3RhcnRDb2x1bW46YVswXS5sZW5ndGgrMSxlbmRMaW5lTnVtYmVyOmksZW5kQ29sdW1uOnMubGVuZ3RoKzF9O2lmKG8uZW5kQ29sdW1uPm8uc3RhcnRDb2x1bW4pe2NvbnN0IGw9e3JhbmdlOm8sLi4uaW8ocy5zdWJzdHJpbmcoYVswXS5sZW5ndGgpKSxzaG91bGRCZUluQ29tbWVudHM6ITF9OyhsLnRleHR8fGwuaGFzU2VwYXJhdG9yTGluZSkmJm4ucHVzaChsKX19fXJldHVybiBufWZ1bmN0aW9uIE1kKHQpe2NvbnN0IGU9W10sbj10LmdldExpbmVDb3VudCgpO2ZvcihsZXQgcj0xO3I8PW47cisrKXtjb25zdCBpPXQuZ2V0TGluZUNvbnRlbnQocik7emQoaSxyLGUpfXJldHVybiBlfWZ1bmN0aW9uIHpkKHQsZSxuKXtyby5sYXN0SW5kZXg9MDtjb25zdCByPXJvLmV4ZWModCk7aWYocil7Y29uc3QgaT1yLmluZGljZXNbMV1bMF0rMSxzPXIuaW5kaWNlc1sxXVsxXSsxLGE9e3N0YXJ0TGluZU51bWJlcjplLHN0YXJ0Q29sdW1uOmksZW5kTGluZU51bWJlcjplLGVuZENvbHVtbjpzfTtpZihhLmVuZENvbHVtbj5hLnN0YXJ0Q29sdW1uKXtjb25zdCBvPXtyYW5nZTphLC4uLmlvKHJbMV0pLHNob3VsZEJlSW5Db21tZW50czohMH07KG8udGV4dHx8by5oYXNTZXBhcmF0b3JMaW5lKSYmbi5wdXNoKG8pfX19ZnVuY3Rpb24gaW8odCl7dD10LnRyaW0oKTtjb25zdCBlPXQuc3RhcnRzV2l0aCgiLSIpO3JldHVybiB0PXQucmVwbGFjZShEZCwiIikse3RleHQ6dCxoYXNTZXBhcmF0b3JMaW5lOmV9fWNsYXNzIExkIGV4dGVuZHMga2h7Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGVvbCgpe3JldHVybiB0aGlzLl9lb2x9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRUZXh0KCl9ZmluZE1hdGNoZXMoZSl7Y29uc3Qgbj1bXTtmb3IobGV0IHI9MDtyPHRoaXMuX2xpbmVzLmxlbmd0aDtyKyspe2NvbnN0IGk9dGhpcy5fbGluZXNbcl0scz10aGlzLm9mZnNldEF0KG5ldyBZZShyKzEsMSkpLGE9aS5tYXRjaEFsbChlKTtmb3IoY29uc3QgbyBvZiBhKShvLmluZGV4fHxvLmluZGV4PT09MCkmJihvLmluZGV4PW8uaW5kZXgrcyksbi5wdXNoKG8pfXJldHVybiBufWdldExpbmVzQ29udGVudCgpe3JldHVybiB0aGlzLl9saW5lcy5zbGljZSgwKX1nZXRMaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5fbGluZXMubGVuZ3RofWdldExpbmVDb250ZW50KGUpe3JldHVybiB0aGlzLl9saW5lc1tlLTFdfWdldFdvcmRBdFBvc2l0aW9uKGUsbil7Y29uc3Qgcj1WcihlLmNvbHVtbixOcyhuKSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0sMCk7cmV0dXJuIHI/bmV3IHZlKGUubGluZU51bWJlcixyLnN0YXJ0Q29sdW1uLGUubGluZU51bWJlcixyLmVuZENvbHVtbik6bnVsbH13b3JkcyhlKXtjb25zdCBuPXRoaXMuX2xpbmVzLHI9dGhpcy5fd29yZGVuaXplLmJpbmQodGhpcyk7bGV0IGk9MCxzPSIiLGE9MCxvPVtdO3JldHVybnsqW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoOzspaWYoYTxvLmxlbmd0aCl7Y29uc3QgbD1zLnN1YnN0cmluZyhvW2FdLnN0YXJ0LG9bYV0uZW5kKTthKz0xLHlpZWxkIGx9ZWxzZSBpZihpPG4ubGVuZ3RoKXM9bltpXSxvPXIocyxlKSxhPTAsaSs9MTtlbHNlIGJyZWFrfX19Z2V0TGluZVdvcmRzKGUsbil7Y29uc3Qgcj10aGlzLl9saW5lc1tlLTFdLGk9dGhpcy5fd29yZGVuaXplKHIsbikscz1bXTtmb3IoY29uc3QgYSBvZiBpKXMucHVzaCh7d29yZDpyLnN1YnN0cmluZyhhLnN0YXJ0LGEuZW5kKSxzdGFydENvbHVtbjphLnN0YXJ0KzEsZW5kQ29sdW1uOmEuZW5kKzF9KTtyZXR1cm4gc31fd29yZGVuaXplKGUsbil7Y29uc3Qgcj1bXTtsZXQgaTtmb3Iobi5sYXN0SW5kZXg9MDsoaT1uLmV4ZWMoZSkpJiZpWzBdLmxlbmd0aCE9PTA7KXIucHVzaCh7c3RhcnQ6aS5pbmRleCxlbmQ6aS5pbmRleCtpWzBdLmxlbmd0aH0pO3JldHVybiByfWdldFZhbHVlSW5SYW5nZShlKXtpZihlPXRoaXMuX3ZhbGlkYXRlUmFuZ2UoZSksZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXIpcmV0dXJuIHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLnN0YXJ0Q29sdW1uLTEsZS5lbmRDb2x1bW4tMSk7Y29uc3Qgbj10aGlzLl9lb2wscj1lLnN0YXJ0TGluZU51bWJlci0xLGk9ZS5lbmRMaW5lTnVtYmVyLTEscz1bXTtzLnB1c2godGhpcy5fbGluZXNbcl0uc3Vic3RyaW5nKGUuc3RhcnRDb2x1bW4tMSkpO2ZvcihsZXQgYT1yKzE7YTxpO2ErKylzLnB1c2godGhpcy5fbGluZXNbYV0pO3JldHVybiBzLnB1c2godGhpcy5fbGluZXNbaV0uc3Vic3RyaW5nKDAsZS5lbmRDb2x1bW4tMSkpLHMuam9pbihuKX1vZmZzZXRBdChlKXtyZXR1cm4gZT10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKSx0aGlzLl9saW5lU3RhcnRzLmdldFByZWZpeFN1bShlLmxpbmVOdW1iZXItMikrKGUuY29sdW1uLTEpfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLmZsb29yKGUpLGU9TWF0aC5tYXgoMCxlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCk7Y29uc3Qgbj10aGlzLl9saW5lU3RhcnRzLmdldEluZGV4T2YoZSkscj10aGlzLl9saW5lc1tuLmluZGV4XS5sZW5ndGg7cmV0dXJue2xpbmVOdW1iZXI6MStuLmluZGV4LGNvbHVtbjoxK01hdGgubWluKG4ucmVtYWluZGVyLHIpfX1fdmFsaWRhdGVSYW5nZShlKXtjb25zdCBuPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oe2xpbmVOdW1iZXI6ZS5zdGFydExpbmVOdW1iZXIsY29sdW1uOmUuc3RhcnRDb2x1bW59KSxyPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oe2xpbmVOdW1iZXI6ZS5lbmRMaW5lTnVtYmVyLGNvbHVtbjplLmVuZENvbHVtbn0pO3JldHVybiBuLmxpbmVOdW1iZXIhPT1lLnN0YXJ0TGluZU51bWJlcnx8bi5jb2x1bW4hPT1lLnN0YXJ0Q29sdW1ufHxyLmxpbmVOdW1iZXIhPT1lLmVuZExpbmVOdW1iZXJ8fHIuY29sdW1uIT09ZS5lbmRDb2x1bW4/e3N0YXJ0TGluZU51bWJlcjpuLmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46bi5jb2x1bW4sZW5kTGluZU51bWJlcjpyLmxpbmVOdW1iZXIsZW5kQ29sdW1uOnIuY29sdW1ufTplfV92YWxpZGF0ZVBvc2l0aW9uKGUpe2lmKCFZZS5pc0lQb3NpdGlvbihlKSl0aHJvdyBuZXcgRXJyb3IoImJhZCBwb3NpdGlvbiIpO2xldHtsaW5lTnVtYmVyOm4sY29sdW1uOnJ9PWUsaT0hMTtpZihuPDEpbj0xLHI9MSxpPSEwO2Vsc2UgaWYobj50aGlzLl9saW5lcy5sZW5ndGgpbj10aGlzLl9saW5lcy5sZW5ndGgscj10aGlzLl9saW5lc1tuLTFdLmxlbmd0aCsxLGk9ITA7ZWxzZXtjb25zdCBzPXRoaXMuX2xpbmVzW24tMV0ubGVuZ3RoKzE7cjwxPyhyPTEsaT0hMCk6cj5zJiYocj1zLGk9ITApfXJldHVybiBpP3tsaW5lTnVtYmVyOm4sY29sdW1uOnJ9OmV9fWNsYXNzIEN0e2NvbnN0cnVjdG9yKGUsbil7dGhpcy5faG9zdD1lLHRoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5PW4sdGhpcy5fZm9yZWlnbk1vZHVsZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKX1fZ2V0TW9kZWwoZSl7cmV0dXJuIHRoaXMuX21vZGVsc1tlXX1fZ2V0TW9kZWxzKCl7Y29uc3QgZT1bXTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbW9kZWxzKS5mb3JFYWNoKG49PmUucHVzaCh0aGlzLl9tb2RlbHNbbl0pKSxlfWFjY2VwdE5ld01vZGVsKGUpe3RoaXMuX21vZGVsc1tlLnVybF09bmV3IExkKFdyLnBhcnNlKGUudXJsKSxlLmxpbmVzLGUuRU9MLGUudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQoZSxuKXtpZighdGhpcy5fbW9kZWxzW2VdKXJldHVybjt0aGlzLl9tb2RlbHNbZV0ub25FdmVudHMobil9YWNjZXB0UmVtb3ZlZE1vZGVsKGUpe3RoaXMuX21vZGVsc1tlXSYmZGVsZXRlIHRoaXMuX21vZGVsc1tlXX1hc3luYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSxuLHIpe2NvbnN0IGk9dGhpcy5fZ2V0TW9kZWwoZSk7cmV0dXJuIGk/UWguY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKGksbixyKTp7cmFuZ2VzOltdLGhhc01vcmU6ITEsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6MCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDowLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDowfX1hc3luYyBmaW5kU2VjdGlvbkhlYWRlcnMoZSxuKXtjb25zdCByPXRoaXMuX2dldE1vZGVsKGUpO3JldHVybiByP0FkKHIsbik6W119YXN5bmMgY29tcHV0ZURpZmYoZSxuLHIsaSl7Y29uc3Qgcz10aGlzLl9nZXRNb2RlbChlKSxhPXRoaXMuX2dldE1vZGVsKG4pO3JldHVybiFzfHwhYT9udWxsOkN0LmNvbXB1dGVEaWZmKHMsYSxyLGkpfXN0YXRpYyBjb21wdXRlRGlmZihlLG4scixpKXtjb25zdCBzPWk9PT0iYWR2YW5jZWQiP1phLmdldERlZmF1bHQoKTpaYS5nZXRMZWdhY3koKSxhPWUuZ2V0TGluZXNDb250ZW50KCksbz1uLmdldExpbmVzQ29udGVudCgpLGw9cy5jb21wdXRlRGlmZihhLG8sciksYz1sLmNoYW5nZXMubGVuZ3RoPjA/ITE6dGhpcy5fbW9kZWxzQXJlSWRlbnRpY2FsKGUsbik7ZnVuY3Rpb24gaCh1KXtyZXR1cm4gdS5tYXAoZj0+e3ZhciBtO3JldHVybltmLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixmLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsZi5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIsZi5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLChtPWYuaW5uZXJDaGFuZ2VzKT09PW51bGx8fG09PT12b2lkIDA/dm9pZCAwOm0ubWFwKGc9PltnLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGcub3JpZ2luYWxSYW5nZS5zdGFydENvbHVtbixnLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlcixnLm9yaWdpbmFsUmFuZ2UuZW5kQ29sdW1uLGcubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIsZy5tb2RpZmllZFJhbmdlLnN0YXJ0Q29sdW1uLGcubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyLGcubW9kaWZpZWRSYW5nZS5lbmRDb2x1bW5dKV19KX1yZXR1cm57aWRlbnRpY2FsOmMscXVpdEVhcmx5OmwuaGl0VGltZW91dCxjaGFuZ2VzOmgobC5jaGFuZ2VzKSxtb3ZlczpsLm1vdmVzLm1hcCh1PT5bdS5saW5lUmFuZ2VNYXBwaW5nLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcix1LmxpbmVSYW5nZU1hcHBpbmcub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSx1LmxpbmVSYW5nZU1hcHBpbmcubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLHUubGluZVJhbmdlTWFwcGluZy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGgodS5jaGFuZ2VzKV0pfX1zdGF0aWMgX21vZGVsc0FyZUlkZW50aWNhbChlLG4pe2NvbnN0IHI9ZS5nZXRMaW5lQ291bnQoKSxpPW4uZ2V0TGluZUNvdW50KCk7aWYociE9PWkpcmV0dXJuITE7Zm9yKGxldCBzPTE7czw9cjtzKyspe2NvbnN0IGE9ZS5nZXRMaW5lQ29udGVudChzKSxvPW4uZ2V0TGluZUNvbnRlbnQocyk7aWYoYSE9PW8pcmV0dXJuITF9cmV0dXJuITB9YXN5bmMgY29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZSxuLHIpe2NvbnN0IGk9dGhpcy5fZ2V0TW9kZWwoZSk7aWYoIWkpcmV0dXJuIG47Y29uc3Qgcz1bXTtsZXQgYTtuPW4uc2xpY2UoMCkuc29ydCgobCxjKT0+e2lmKGwucmFuZ2UmJmMucmFuZ2UpcmV0dXJuIHZlLmNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyhsLnJhbmdlLGMucmFuZ2UpO2NvbnN0IGg9bC5yYW5nZT8wOjEsdT1jLnJhbmdlPzA6MTtyZXR1cm4gaC11fSk7bGV0IG89MDtmb3IobGV0IGw9MTtsPG4ubGVuZ3RoO2wrKyl2ZS5nZXRFbmRQb3NpdGlvbihuW29dLnJhbmdlKS5lcXVhbHModmUuZ2V0U3RhcnRQb3NpdGlvbihuW2xdLnJhbmdlKSk/KG5bb10ucmFuZ2U9dmUuZnJvbVBvc2l0aW9ucyh2ZS5nZXRTdGFydFBvc2l0aW9uKG5bb10ucmFuZ2UpLHZlLmdldEVuZFBvc2l0aW9uKG5bbF0ucmFuZ2UpKSxuW29dLnRleHQrPW5bbF0udGV4dCk6KG8rKyxuW29dPW5bbF0pO24ubGVuZ3RoPW8rMTtmb3IobGV0e3JhbmdlOmwsdGV4dDpjLGVvbDpofW9mIG4pe2lmKHR5cGVvZiBoPT0ibnVtYmVyIiYmKGE9aCksdmUuaXNFbXB0eShsKSYmIWMpY29udGludWU7Y29uc3QgdT1pLmdldFZhbHVlSW5SYW5nZShsKTtpZihjPWMucmVwbGFjZSgvXHJcbnxcbnxcci9nLGkuZW9sKSx1PT09Yyljb250aW51ZTtpZihNYXRoLm1heChjLmxlbmd0aCx1Lmxlbmd0aCk+Q3QuX2RpZmZMaW1pdCl7cy5wdXNoKHtyYW5nZTpsLHRleHQ6Y30pO2NvbnRpbnVlfWNvbnN0IGY9UWModSxjLHIpLG09aS5vZmZzZXRBdCh2ZS5saWZ0KGwpLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IGcgb2YgZil7Y29uc3QgYj1pLnBvc2l0aW9uQXQobStnLm9yaWdpbmFsU3RhcnQpLHk9aS5wb3NpdGlvbkF0KG0rZy5vcmlnaW5hbFN0YXJ0K2cub3JpZ2luYWxMZW5ndGgpLEM9e3RleHQ6Yy5zdWJzdHIoZy5tb2RpZmllZFN0YXJ0LGcubW9kaWZpZWRMZW5ndGgpLHJhbmdlOntzdGFydExpbmVOdW1iZXI6Yi5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOmIuY29sdW1uLGVuZExpbmVOdW1iZXI6eS5saW5lTnVtYmVyLGVuZENvbHVtbjp5LmNvbHVtbn19O2kuZ2V0VmFsdWVJblJhbmdlKEMucmFuZ2UpIT09Qy50ZXh0JiZzLnB1c2goQyl9fXJldHVybiB0eXBlb2YgYT09Im51bWJlciImJnMucHVzaCh7ZW9sOmEsdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSksc31hc3luYyBjb21wdXRlTGlua3MoZSl7Y29uc3Qgbj10aGlzLl9nZXRNb2RlbChlKTtyZXR1cm4gbj9NaChuKTpudWxsfWFzeW5jIGNvbXB1dGVEZWZhdWx0RG9jdW1lbnRDb2xvcnMoZSl7Y29uc3Qgbj10aGlzLl9nZXRNb2RlbChlKTtyZXR1cm4gbj9GZChuKTpudWxsfWFzeW5jIHRleHR1YWxTdWdnZXN0KGUsbixyLGkpe2NvbnN0IHM9bmV3IE9uLGE9bmV3IFJlZ0V4cChyLGkpLG89bmV3IFNldDtlOmZvcihjb25zdCBsIG9mIGUpe2NvbnN0IGM9dGhpcy5fZ2V0TW9kZWwobCk7aWYoYyl7Zm9yKGNvbnN0IGggb2YgYy53b3JkcyhhKSlpZighKGg9PT1ufHwhaXNOYU4oTnVtYmVyKGgpKSkmJihvLmFkZChoKSxvLnNpemU+Q3QuX3N1Z2dlc3Rpb25zTGltaXQpKWJyZWFrIGV9fXJldHVybnt3b3JkczpBcnJheS5mcm9tKG8pLGR1cmF0aW9uOnMuZWxhcHNlZCgpfX1hc3luYyBjb21wdXRlV29yZFJhbmdlcyhlLG4scixpKXtjb25zdCBzPXRoaXMuX2dldE1vZGVsKGUpO2lmKCFzKXJldHVybiBPYmplY3QuY3JlYXRlKG51bGwpO2NvbnN0IGE9bmV3IFJlZ0V4cChyLGkpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGw9bi5zdGFydExpbmVOdW1iZXI7bDxuLmVuZExpbmVOdW1iZXI7bCsrKXtjb25zdCBjPXMuZ2V0TGluZVdvcmRzKGwsYSk7Zm9yKGNvbnN0IGggb2YgYyl7aWYoIWlzTmFOKE51bWJlcihoLndvcmQpKSljb250aW51ZTtsZXQgdT1vW2gud29yZF07dXx8KHU9W10sb1toLndvcmRdPXUpLHUucHVzaCh7c3RhcnRMaW5lTnVtYmVyOmwsc3RhcnRDb2x1bW46aC5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOmwsZW5kQ29sdW1uOmguZW5kQ29sdW1ufSl9fXJldHVybiBvfWFzeW5jIG5hdmlnYXRlVmFsdWVTZXQoZSxuLHIsaSxzKXtjb25zdCBhPXRoaXMuX2dldE1vZGVsKGUpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG89bmV3IFJlZ0V4cChpLHMpO24uc3RhcnRDb2x1bW49PT1uLmVuZENvbHVtbiYmKG49e3N0YXJ0TGluZU51bWJlcjpuLnN0YXJ0TGluZU51bWJlcixzdGFydENvbHVtbjpuLnN0YXJ0Q29sdW1uLGVuZExpbmVOdW1iZXI6bi5lbmRMaW5lTnVtYmVyLGVuZENvbHVtbjpuLmVuZENvbHVtbisxfSk7Y29uc3QgbD1hLmdldFZhbHVlSW5SYW5nZShuKSxjPWEuZ2V0V29yZEF0UG9zaXRpb24oe2xpbmVOdW1iZXI6bi5zdGFydExpbmVOdW1iZXIsY29sdW1uOm4uc3RhcnRDb2x1bW59LG8pO2lmKCFjKXJldHVybiBudWxsO2NvbnN0IGg9YS5nZXRWYWx1ZUluUmFuZ2UoYyk7cmV0dXJuIGpyLklOU1RBTkNFLm5hdmlnYXRlVmFsdWVTZXQobixsLGMsaCxyKX1sb2FkRm9yZWlnbk1vZHVsZShlLG4scil7Y29uc3QgYT17aG9zdDpfYyhyLChvLGwpPT50aGlzLl9ob3N0LmZocihvLGwpKSxnZXRNaXJyb3JNb2RlbHM6KCk9PnRoaXMuX2dldE1vZGVscygpfTtyZXR1cm4gdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk/KHRoaXMuX2ZvcmVpZ25Nb2R1bGU9dGhpcy5fZm9yZWlnbk1vZHVsZUZhY3RvcnkoYSxuKSxQcm9taXNlLnJlc29sdmUoRnIodGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdXNhZ2UiKSl9Zm1yKGUsbil7aWYoIXRoaXMuX2ZvcmVpZ25Nb2R1bGV8fHR5cGVvZiB0aGlzLl9mb3JlaWduTW9kdWxlW2VdIT0iZnVuY3Rpb24iKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mb3JlaWduTW9kdWxlW2VdLmFwcGx5KHRoaXMuX2ZvcmVpZ25Nb2R1bGUsbikpfWNhdGNoKHIpe3JldHVybiBQcm9taXNlLnJlamVjdChyKX19fUN0Ll9kaWZmTGltaXQ9MWU1LEN0Ll9zdWdnZXN0aW9uc0xpbWl0PTFlNCx0eXBlb2YgaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIiYmKGdsb2JhbFRoaXMubW9uYWNvPXFoKCkpO2xldCBzaT0hMTtmdW5jdGlvbiBzbyh0KXtpZihzaSlyZXR1cm47c2k9ITA7Y29uc3QgZT1uZXcgWWMobj0+e2dsb2JhbFRoaXMucG9zdE1lc3NhZ2Uobil9LG49Pm5ldyBDdChuLHQpKTtnbG9iYWxUaGlzLm9ubWVzc2FnZT1uPT57ZS5vbm1lc3NhZ2Uobi5kYXRhKX19Z2xvYmFsVGhpcy5vbm1lc3NhZ2U9dD0+e3NpfHxzbyhudWxsKX07LyohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIFZlcnNpb246IDAuNDguMCgwMDM3YjEzZmI1ZDE4NmZkZjFlN2RmNTFhOTQxNmEyZGUyYjhjNjcwKQogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9tb25hY28tZWRpdG9yL2Jsb2IvbWFpbi9MSUNFTlNFLnR4dAogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi92YXIgcDsoZnVuY3Rpb24odCl7dFt0LklkZW50PTBdPSJJZGVudCIsdFt0LkF0S2V5d29yZD0xXT0iQXRLZXl3b3JkIix0W3QuU3RyaW5nPTJdPSJTdHJpbmciLHRbdC5CYWRTdHJpbmc9M109IkJhZFN0cmluZyIsdFt0LlVucXVvdGVkU3RyaW5nPTRdPSJVbnF1b3RlZFN0cmluZyIsdFt0Lkhhc2g9NV09Ikhhc2giLHRbdC5OdW09Nl09Ik51bSIsdFt0LlBlcmNlbnRhZ2U9N109IlBlcmNlbnRhZ2UiLHRbdC5EaW1lbnNpb249OF09IkRpbWVuc2lvbiIsdFt0LlVuaWNvZGVSYW5nZT05XT0iVW5pY29kZVJhbmdlIix0W3QuQ0RPPTEwXT0iQ0RPIix0W3QuQ0RDPTExXT0iQ0RDIix0W3QuQ29sb249MTJdPSJDb2xvbiIsdFt0LlNlbWlDb2xvbj0xM109IlNlbWlDb2xvbiIsdFt0LkN1cmx5TD0xNF09IkN1cmx5TCIsdFt0LkN1cmx5Uj0xNV09IkN1cmx5UiIsdFt0LlBhcmVudGhlc2lzTD0xNl09IlBhcmVudGhlc2lzTCIsdFt0LlBhcmVudGhlc2lzUj0xN109IlBhcmVudGhlc2lzUiIsdFt0LkJyYWNrZXRMPTE4XT0iQnJhY2tldEwiLHRbdC5CcmFja2V0Uj0xOV09IkJyYWNrZXRSIix0W3QuV2hpdGVzcGFjZT0yMF09IldoaXRlc3BhY2UiLHRbdC5JbmNsdWRlcz0yMV09IkluY2x1ZGVzIix0W3QuRGFzaG1hdGNoPTIyXT0iRGFzaG1hdGNoIix0W3QuU3Vic3RyaW5nT3BlcmF0b3I9MjNdPSJTdWJzdHJpbmdPcGVyYXRvciIsdFt0LlByZWZpeE9wZXJhdG9yPTI0XT0iUHJlZml4T3BlcmF0b3IiLHRbdC5TdWZmaXhPcGVyYXRvcj0yNV09IlN1ZmZpeE9wZXJhdG9yIix0W3QuRGVsaW09MjZdPSJEZWxpbSIsdFt0LkVNUz0yN109IkVNUyIsdFt0LkVYUz0yOF09IkVYUyIsdFt0Lkxlbmd0aD0yOV09Ikxlbmd0aCIsdFt0LkFuZ2xlPTMwXT0iQW5nbGUiLHRbdC5UaW1lPTMxXT0iVGltZSIsdFt0LkZyZXE9MzJdPSJGcmVxIix0W3QuRXhjbGFtYXRpb249MzNdPSJFeGNsYW1hdGlvbiIsdFt0LlJlc29sdXRpb249MzRdPSJSZXNvbHV0aW9uIix0W3QuQ29tbWE9MzVdPSJDb21tYSIsdFt0LkNoYXJzZXQ9MzZdPSJDaGFyc2V0Iix0W3QuRXNjYXBlZEphdmFTY3JpcHQ9MzddPSJFc2NhcGVkSmF2YVNjcmlwdCIsdFt0LkJhZEVzY2FwZWRKYXZhU2NyaXB0PTM4XT0iQmFkRXNjYXBlZEphdmFTY3JpcHQiLHRbdC5Db21tZW50PTM5XT0iQ29tbWVudCIsdFt0LlNpbmdsZUxpbmVDb21tZW50PTQwXT0iU2luZ2xlTGluZUNvbW1lbnQiLHRbdC5FT0Y9NDFdPSJFT0YiLHRbdC5DdXN0b21Ub2tlbj00Ml09IkN1c3RvbVRva2VuIn0pKHB8fChwPXt9KSk7dmFyIGFvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt0aGlzLnNvdXJjZT1lLHRoaXMubGVuPWUubGVuZ3RoLHRoaXMucG9zaXRpb249MH1yZXR1cm4gdC5wcm90b3R5cGUuc3Vic3RyaW5nPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG49PT12b2lkIDAmJihuPXRoaXMucG9zaXRpb24pLHRoaXMuc291cmNlLnN1YnN0cmluZyhlLG4pfSx0LnByb3RvdHlwZS5lb3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW48PXRoaXMucG9zaXRpb259LHQucHJvdG90eXBlLnBvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSx0LnByb3RvdHlwZS5nb0JhY2tUbz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uPWV9LHQucHJvdG90eXBlLmdvQmFjaz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uLT1lfSx0LnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24rPWV9LHQucHJvdG90eXBlLm5leHRDaGFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbisrKXx8MH0sdC5wcm90b3R5cGUucGVla0NoYXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPTApLHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbitlKXx8MH0sdC5wcm90b3R5cGUubG9va2JhY2tDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0wKSx0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24tZSl8fDB9LHQucHJvdG90eXBlLmFkdmFuY2VJZkNoYXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24pPyh0aGlzLnBvc2l0aW9uKyssITApOiExfSx0LnByb3RvdHlwZS5hZHZhbmNlSWZDaGFycz1mdW5jdGlvbihlKXtpZih0aGlzLnBvc2l0aW9uK2UubGVuZ3RoPnRoaXMuc291cmNlLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZih0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24rbikhPT1lW25dKXJldHVybiExO3JldHVybiB0aGlzLmFkdmFuY2UobiksITB9LHQucHJvdG90eXBlLmFkdmFuY2VXaGlsZUNoYXI9ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPXRoaXMucG9zaXRpb247dGhpcy5wb3NpdGlvbjx0aGlzLmxlbiYmZSh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24pKTspdGhpcy5wb3NpdGlvbisrO3JldHVybiB0aGlzLnBvc2l0aW9uLW59LHR9KCksWm49OTcsb289MTAyLGxvPTEyMixlcj02NSxjbz03MCxobz05MCxmbj00OCxtbj01NyxQZD0xMjYsSWQ9OTQsZ249NjEsVGQ9MTI0LGt0PTQ1LHVvPTk1LFdkPTM3LGFpPTQyLHBvPTQwLGZvPTQxLE9kPTYwLFVkPTYyLFZkPTY0LEJkPTM1LHFkPTM2LG9pPTkyLG1vPTQ3LEh0PTEwLEd0PTEzLGJuPTEyLGdvPTM0LGJvPTM5LGxpPTMyLGNpPTksamQ9NTksJGQ9NTgsSGQ9MTIzLEdkPTEyNSxKZD05MSxYZD05MyxZZD00NCx2bz00Nix5bz0zMyxLZD02MyxRZD00MyxRZT17fTtRZVtqZF09cC5TZW1pQ29sb24sUWVbJGRdPXAuQ29sb24sUWVbSGRdPXAuQ3VybHlMLFFlW0dkXT1wLkN1cmx5UixRZVtYZF09cC5CcmFja2V0UixRZVtKZF09cC5CcmFja2V0TCxRZVtwb109cC5QYXJlbnRoZXNpc0wsUWVbZm9dPXAuUGFyZW50aGVzaXNSLFFlW1lkXT1wLkNvbW1hO3ZhciBtZT17fTttZS5lbT1wLkVNUyxtZS5leD1wLkVYUyxtZS5weD1wLkxlbmd0aCxtZS5jbT1wLkxlbmd0aCxtZS5tbT1wLkxlbmd0aCxtZS5pbj1wLkxlbmd0aCxtZS5wdD1wLkxlbmd0aCxtZS5wYz1wLkxlbmd0aCxtZS5kZWc9cC5BbmdsZSxtZS5yYWQ9cC5BbmdsZSxtZS5ncmFkPXAuQW5nbGUsbWUubXM9cC5UaW1lLG1lLnM9cC5UaW1lLG1lLmh6PXAuRnJlcSxtZS5raHo9cC5GcmVxLG1lWyIlIl09cC5QZXJjZW50YWdlLG1lLmZyPXAuUGVyY2VudGFnZSxtZS5kcGk9cC5SZXNvbHV0aW9uLG1lLmRwY209cC5SZXNvbHV0aW9uO3ZhciB2bj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnN0cmVhbT1uZXcgYW8oIiIpLHRoaXMuaWdub3JlQ29tbWVudD0hMCx0aGlzLmlnbm9yZVdoaXRlc3BhY2U9ITAsdGhpcy5pblVSTD0hMX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0U291cmNlPWZ1bmN0aW9uKGUpe3RoaXMuc3RyZWFtPW5ldyBhbyhlKX0sdC5wcm90b3R5cGUuZmluaXNoVG9rZW49ZnVuY3Rpb24oZSxuLHIpe3JldHVybntvZmZzZXQ6ZSxsZW46dGhpcy5zdHJlYW0ucG9zKCktZSx0eXBlOm4sdGV4dDpyfHx0aGlzLnN0cmVhbS5zdWJzdHJpbmcoZSl9fSx0LnByb3RvdHlwZS5zdWJzdHJpbmc9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdGhpcy5zdHJlYW0uc3Vic3RyaW5nKGUsZStuKX0sdC5wcm90b3R5cGUucG9zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyZWFtLnBvcygpfSx0LnByb3RvdHlwZS5nb0JhY2tUbz1mdW5jdGlvbihlKXt0aGlzLnN0cmVhbS5nb0JhY2tUbyhlKX0sdC5wcm90b3R5cGUuc2NhblVucXVvdGVkU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdHJlYW0ucG9zKCksbj1bXTtyZXR1cm4gdGhpcy5fdW5xdW90ZWRTdHJpbmcobik/dGhpcy5maW5pc2hUb2tlbihlLHAuVW5xdW90ZWRTdHJpbmcsbi5qb2luKCIiKSk6bnVsbH0sdC5wcm90b3R5cGUuc2Nhbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMudHJpdmlhKCk7aWYoZSE9PW51bGwpcmV0dXJuIGU7dmFyIG49dGhpcy5zdHJlYW0ucG9zKCk7cmV0dXJuIHRoaXMuc3RyZWFtLmVvcygpP3RoaXMuZmluaXNoVG9rZW4obixwLkVPRik6dGhpcy5zY2FuTmV4dChuKX0sdC5wcm90b3R5cGUudHJ5U2NhblVuaWNvZGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0cmVhbS5wb3MoKTtpZighdGhpcy5zdHJlYW0uZW9zKCkmJnRoaXMuX3VuaWNvZGVSYW5nZSgpKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5Vbmljb2RlUmFuZ2UpO3RoaXMuc3RyZWFtLmdvQmFja1RvKGUpfSx0LnByb3RvdHlwZS5zY2FuTmV4dD1mdW5jdGlvbihlKXtpZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbT2QseW8sa3Qsa3RdKSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLHAuQ0RPKTtpZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhba3Qsa3QsVWRdKSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLHAuQ0RDKTt2YXIgbj1bXTtpZih0aGlzLmlkZW50KG4pKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5JZGVudCxuLmpvaW4oIiIpKTtpZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKFZkKSlpZihuPVsiQCJdLHRoaXMuX25hbWUobikpe3ZhciByPW4uam9pbigiIik7cmV0dXJuIHI9PT0iQGNoYXJzZXQiP3RoaXMuZmluaXNoVG9rZW4oZSxwLkNoYXJzZXQscik6dGhpcy5maW5pc2hUb2tlbihlLHAuQXRLZXl3b3JkLHIpfWVsc2UgcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxwLkRlbGltKTtpZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKEJkKSlyZXR1cm4gbj1bIiMiXSx0aGlzLl9uYW1lKG4pP3RoaXMuZmluaXNoVG9rZW4oZSxwLkhhc2gsbi5qb2luKCIiKSk6dGhpcy5maW5pc2hUb2tlbihlLHAuRGVsaW0pO2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoeW8pKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5FeGNsYW1hdGlvbik7aWYodGhpcy5fbnVtYmVyKCkpe3ZhciBpPXRoaXMuc3RyZWFtLnBvcygpO2lmKG49W3RoaXMuc3RyZWFtLnN1YnN0cmluZyhlLGkpXSx0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKFdkKSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLHAuUGVyY2VudGFnZSk7aWYodGhpcy5pZGVudChuKSl7dmFyIHM9dGhpcy5zdHJlYW0uc3Vic3RyaW5nKGkpLnRvTG93ZXJDYXNlKCksYT1tZVtzXTtyZXR1cm4gdHlwZW9mIGE8InUiP3RoaXMuZmluaXNoVG9rZW4oZSxhLG4uam9pbigiIikpOnRoaXMuZmluaXNoVG9rZW4oZSxwLkRpbWVuc2lvbixuLmpvaW4oIiIpKX1yZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLHAuTnVtKX1uPVtdO3ZhciBvPXRoaXMuX3N0cmluZyhuKTtyZXR1cm4gbyE9PW51bGw/dGhpcy5maW5pc2hUb2tlbihlLG8sbi5qb2luKCIiKSk6KG89UWVbdGhpcy5zdHJlYW0ucGVla0NoYXIoKV0sdHlwZW9mIG88InUiPyh0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLHRoaXMuZmluaXNoVG9rZW4oZSxvKSk6dGhpcy5zdHJlYW0ucGVla0NoYXIoMCk9PT1QZCYmdGhpcy5zdHJlYW0ucGVla0NoYXIoMSk9PT1nbj8odGhpcy5zdHJlYW0uYWR2YW5jZSgyKSx0aGlzLmZpbmlzaFRva2VuKGUscC5JbmNsdWRlcykpOnRoaXMuc3RyZWFtLnBlZWtDaGFyKDApPT09VGQmJnRoaXMuc3RyZWFtLnBlZWtDaGFyKDEpPT09Z24/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMiksdGhpcy5maW5pc2hUb2tlbihlLHAuRGFzaG1hdGNoKSk6dGhpcy5zdHJlYW0ucGVla0NoYXIoMCk9PT1haSYmdGhpcy5zdHJlYW0ucGVla0NoYXIoMSk9PT1nbj8odGhpcy5zdHJlYW0uYWR2YW5jZSgyKSx0aGlzLmZpbmlzaFRva2VuKGUscC5TdWJzdHJpbmdPcGVyYXRvcikpOnRoaXMuc3RyZWFtLnBlZWtDaGFyKDApPT09SWQmJnRoaXMuc3RyZWFtLnBlZWtDaGFyKDEpPT09Z24/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMiksdGhpcy5maW5pc2hUb2tlbihlLHAuUHJlZml4T3BlcmF0b3IpKTp0aGlzLnN0cmVhbS5wZWVrQ2hhcigwKT09PXFkJiZ0aGlzLnN0cmVhbS5wZWVrQ2hhcigxKT09PWduPyh0aGlzLnN0cmVhbS5hZHZhbmNlKDIpLHRoaXMuZmluaXNoVG9rZW4oZSxwLlN1ZmZpeE9wZXJhdG9yKSk6KHRoaXMuc3RyZWFtLm5leHRDaGFyKCksdGhpcy5maW5pc2hUb2tlbihlLHAuRGVsaW0pKSl9LHQucHJvdG90eXBlLnRyaXZpYT1mdW5jdGlvbigpe2Zvcig7Oyl7dmFyIGU9dGhpcy5zdHJlYW0ucG9zKCk7aWYodGhpcy5fd2hpdGVzcGFjZSgpKXtpZighdGhpcy5pZ25vcmVXaGl0ZXNwYWNlKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5XaGl0ZXNwYWNlKX1lbHNlIGlmKHRoaXMuY29tbWVudCgpKXtpZighdGhpcy5pZ25vcmVDb21tZW50KXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5Db21tZW50KX1lbHNlIHJldHVybiBudWxsfX0sdC5wcm90b3R5cGUuY29tbWVudD1mdW5jdGlvbigpe2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFttbyxhaV0pKXt2YXIgZT0hMSxuPSExO3JldHVybiB0aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKGZ1bmN0aW9uKHIpe3JldHVybiBuJiZyPT09bW8/KGU9ITAsITEpOihuPXI9PT1haSwhMCl9KSxlJiZ0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLCEwfXJldHVybiExfSx0LnByb3RvdHlwZS5fbnVtYmVyPWZ1bmN0aW9uKCl7dmFyIGU9MCxuO3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQ2hhcigpPT09dm8mJihlPTEpLG49dGhpcy5zdHJlYW0ucGVla0NoYXIoZSksbj49Zm4mJm48PW1uPyh0aGlzLnN0cmVhbS5hZHZhbmNlKGUrMSksdGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcihmdW5jdGlvbihyKXtyZXR1cm4gcj49Zm4mJnI8PW1ufHxlPT09MCYmcj09PXZvfSksITApOiExfSx0LnByb3RvdHlwZS5fbmV3bGluZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3N3aXRjaChuKXtjYXNlIEd0OmNhc2UgYm46Y2FzZSBIdDpyZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSksbj09PUd0JiZ0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKEh0KSYmZS5wdXNoKGAKYCksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLl9lc2NhcGU9ZnVuY3Rpb24oZSxuKXt2YXIgcj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO2lmKHI9PT1vaSl7dGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxyPXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7Zm9yKHZhciBpPTA7aTw2JiYocj49Zm4mJnI8PW1ufHxyPj1abiYmcjw9b298fHI+PWVyJiZyPD1jbyk7KXRoaXMuc3RyZWFtLmFkdmFuY2UoMSkscj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpLGkrKztpZihpPjApe3RyeXt2YXIgcz1wYXJzZUludCh0aGlzLnN0cmVhbS5zdWJzdHJpbmcodGhpcy5zdHJlYW0ucG9zKCktaSksMTYpO3MmJmUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1jYXRjaHt9cmV0dXJuIHI9PT1saXx8cj09PWNpP3RoaXMuc3RyZWFtLmFkdmFuY2UoMSk6dGhpcy5fbmV3bGluZShbXSksITB9aWYociE9PUd0JiZyIT09Ym4mJnIhPT1IdClyZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShyKSksITA7aWYobilyZXR1cm4gdGhpcy5fbmV3bGluZShlKX1yZXR1cm4hMX0sdC5wcm90b3R5cGUuX3N0cmluZ0NoYXI9ZnVuY3Rpb24oZSxuKXt2YXIgcj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3JldHVybiByIT09MCYmciE9PWUmJnIhPT1vaSYmciE9PUd0JiZyIT09Ym4mJnIhPT1IdD8odGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxuLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShyKSksITApOiExfSx0LnByb3RvdHlwZS5fc3RyaW5nPWZ1bmN0aW9uKGUpe2lmKHRoaXMuc3RyZWFtLnBlZWtDaGFyKCk9PT1ib3x8dGhpcy5zdHJlYW0ucGVla0NoYXIoKT09PWdvKXt2YXIgbj10aGlzLnN0cmVhbS5uZXh0Q2hhcigpO2ZvcihlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSk7dGhpcy5fc3RyaW5nQ2hhcihuLGUpfHx0aGlzLl9lc2NhcGUoZSwhMCk7KTtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0NoYXIoKT09PW4/KHRoaXMuc3RyZWFtLm5leHRDaGFyKCksZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobikpLHAuU3RyaW5nKTpwLkJhZFN0cmluZ31yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX3VucXVvdGVkQ2hhcj1mdW5jdGlvbihlKXt2YXIgbj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3JldHVybiBuIT09MCYmbiE9PW9pJiZuIT09Ym8mJm4hPT1nbyYmbiE9PXBvJiZuIT09Zm8mJm4hPT1saSYmbiE9PWNpJiZuIT09SHQmJm4hPT1ibiYmbiE9PUd0Pyh0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKSwhMCk6ITF9LHQucHJvdG90eXBlLl91bnF1b3RlZFN0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIG49ITE7dGhpcy5fdW5xdW90ZWRDaGFyKGUpfHx0aGlzLl9lc2NhcGUoZSk7KW49ITA7cmV0dXJuIG59LHQucHJvdG90eXBlLl93aGl0ZXNwYWNlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcihmdW5jdGlvbihuKXtyZXR1cm4gbj09PWxpfHxuPT09Y2l8fG49PT1IdHx8bj09PWJufHxuPT09R3R9KTtyZXR1cm4gZT4wfSx0LnByb3RvdHlwZS5fbmFtZT1mdW5jdGlvbihlKXtmb3IodmFyIG49ITE7dGhpcy5faWRlbnRDaGFyKGUpfHx0aGlzLl9lc2NhcGUoZSk7KW49ITA7cmV0dXJuIG59LHQucHJvdG90eXBlLmlkZW50PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuc3RyZWFtLnBvcygpLHI9dGhpcy5fbWludXMoZSk7aWYocil7aWYodGhpcy5fbWludXMoZSl8fHRoaXMuX2lkZW50Rmlyc3RDaGFyKGUpfHx0aGlzLl9lc2NhcGUoZSkpe2Zvcig7dGhpcy5faWRlbnRDaGFyKGUpfHx0aGlzLl9lc2NhcGUoZSk7KTtyZXR1cm4hMH19ZWxzZSBpZih0aGlzLl9pZGVudEZpcnN0Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpKXtmb3IoO3RoaXMuX2lkZW50Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpOyk7cmV0dXJuITB9cmV0dXJuIHRoaXMuc3RyZWFtLmdvQmFja1RvKG4pLCExfSx0LnByb3RvdHlwZS5faWRlbnRGaXJzdENoYXI9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4gbj09PXVvfHxuPj1abiYmbjw9bG98fG4+PWVyJiZuPD1ob3x8bj49MTI4JiZuPD02NTUzNT8odGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSksITApOiExfSx0LnByb3RvdHlwZS5fbWludXM9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4gbj09PWt0Pyh0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKSwhMCk6ITF9LHQucHJvdG90eXBlLl9pZGVudENoYXI9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4gbj09PXVvfHxuPT09a3R8fG4+PVpuJiZuPD1sb3x8bj49ZXImJm48PWhvfHxuPj1mbiYmbjw9bW58fG4+PTEyOCYmbjw9NjU1MzU/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobikpLCEwKTohMX0sdC5wcm90b3R5cGUuX3VuaWNvZGVSYW5nZT1mdW5jdGlvbigpe2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoUWQpKXt2YXIgZT1mdW5jdGlvbihpKXtyZXR1cm4gaT49Zm4mJmk8PW1ufHxpPj1abiYmaTw9b298fGk+PWVyJiZpPD1jb30sbj10aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKGUpK3RoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoZnVuY3Rpb24oaSl7cmV0dXJuIGk9PT1LZH0pO2lmKG4+PTEmJm48PTYpaWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihrdCkpe3ZhciByPXRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoZSk7aWYocj49MSYmcjw9NilyZXR1cm4hMH1lbHNlIHJldHVybiEwfXJldHVybiExfSx0fSgpO2Z1bmN0aW9uIGdlKHQsZSl7aWYodC5sZW5ndGg8ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYodFtuXSE9PWVbbl0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gd28odCxlKXt2YXIgbj10Lmxlbmd0aC1lLmxlbmd0aDtyZXR1cm4gbj4wP3QubGFzdEluZGV4T2YoZSk9PT1uOm49PT0wP3Q9PT1lOiExfWZ1bmN0aW9uIFpkKHQsZSxuKXtuPT09dm9pZCAwJiYobj00KTt2YXIgcj1NYXRoLmFicyh0Lmxlbmd0aC1lLmxlbmd0aCk7aWYocj5uKXJldHVybiAwO3ZhciBpPVtdLHM9W10sYSxvO2ZvcihhPTA7YTxlLmxlbmd0aCsxOysrYSlzLnB1c2goMCk7Zm9yKGE9MDthPHQubGVuZ3RoKzE7KythKWkucHVzaChzKTtmb3IoYT0xO2E8dC5sZW5ndGgrMTsrK2EpZm9yKG89MTtvPGUubGVuZ3RoKzE7KytvKXRbYS0xXT09PWVbby0xXT9pW2FdW29dPWlbYS0xXVtvLTFdKzE6aVthXVtvXT1NYXRoLm1heChpW2EtMV1bb10saVthXVtvLTFdKTtyZXR1cm4gaVt0Lmxlbmd0aF1bZS5sZW5ndGhdLU1hdGguc3FydChyKX1mdW5jdGlvbiB4byh0LGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0hMCksdD90Lmxlbmd0aDwxNDA/dDp0LnNsaWNlKDAsMTQwKSsoZT8i4oCmIjoiIik6IiJ9ZnVuY3Rpb24gZXUodCxlKXt2YXIgbj1lLmV4ZWModCk7cmV0dXJuIG4mJm5bMF0ubGVuZ3RoP3Quc3Vic3RyKDAsdC5sZW5ndGgtblswXS5sZW5ndGgpOnR9ZnVuY3Rpb24gU28odCxlKXtmb3IodmFyIG49IiI7ZT4wOykoZSYxKT09PTEmJihuKz10KSx0Kz10LGU9ZT4+PjE7cmV0dXJuIG59dmFyIE89ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbihlLG4pe3JldHVybiB0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihyLGkpe3IuX19wcm90b19fPWl9fHxmdW5jdGlvbihyLGkpe2Zvcih2YXIgcyBpbiBpKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiYocltzXT1pW3NdKX0sdChlLG4pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmbiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhuKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTt0KGUsbik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1lLnByb3RvdHlwZT1uPT09bnVsbD9PYmplY3QuY3JlYXRlKG4pOihyLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgcil9fSgpLHY7KGZ1bmN0aW9uKHQpe3RbdC5VbmRlZmluZWQ9MF09IlVuZGVmaW5lZCIsdFt0LklkZW50aWZpZXI9MV09IklkZW50aWZpZXIiLHRbdC5TdHlsZXNoZWV0PTJdPSJTdHlsZXNoZWV0Iix0W3QuUnVsZXNldD0zXT0iUnVsZXNldCIsdFt0LlNlbGVjdG9yPTRdPSJTZWxlY3RvciIsdFt0LlNpbXBsZVNlbGVjdG9yPTVdPSJTaW1wbGVTZWxlY3RvciIsdFt0LlNlbGVjdG9ySW50ZXJwb2xhdGlvbj02XT0iU2VsZWN0b3JJbnRlcnBvbGF0aW9uIix0W3QuU2VsZWN0b3JDb21iaW5hdG9yPTddPSJTZWxlY3RvckNvbWJpbmF0b3IiLHRbdC5TZWxlY3RvckNvbWJpbmF0b3JQYXJlbnQ9OF09IlNlbGVjdG9yQ29tYmluYXRvclBhcmVudCIsdFt0LlNlbGVjdG9yQ29tYmluYXRvclNpYmxpbmc9OV09IlNlbGVjdG9yQ29tYmluYXRvclNpYmxpbmciLHRbdC5TZWxlY3RvckNvbWJpbmF0b3JBbGxTaWJsaW5ncz0xMF09IlNlbGVjdG9yQ29tYmluYXRvckFsbFNpYmxpbmdzIix0W3QuU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50PTExXT0iU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50Iix0W3QuUGFnZT0xMl09IlBhZ2UiLHRbdC5QYWdlQm94TWFyZ2luQm94PTEzXT0iUGFnZUJveE1hcmdpbkJveCIsdFt0LkNsYXNzU2VsZWN0b3I9MTRdPSJDbGFzc1NlbGVjdG9yIix0W3QuSWRlbnRpZmllclNlbGVjdG9yPTE1XT0iSWRlbnRpZmllclNlbGVjdG9yIix0W3QuRWxlbWVudE5hbWVTZWxlY3Rvcj0xNl09IkVsZW1lbnROYW1lU2VsZWN0b3IiLHRbdC5Qc2V1ZG9TZWxlY3Rvcj0xN109IlBzZXVkb1NlbGVjdG9yIix0W3QuQXR0cmlidXRlU2VsZWN0b3I9MThdPSJBdHRyaWJ1dGVTZWxlY3RvciIsdFt0LkRlY2xhcmF0aW9uPTE5XT0iRGVjbGFyYXRpb24iLHRbdC5EZWNsYXJhdGlvbnM9MjBdPSJEZWNsYXJhdGlvbnMiLHRbdC5Qcm9wZXJ0eT0yMV09IlByb3BlcnR5Iix0W3QuRXhwcmVzc2lvbj0yMl09IkV4cHJlc3Npb24iLHRbdC5CaW5hcnlFeHByZXNzaW9uPTIzXT0iQmluYXJ5RXhwcmVzc2lvbiIsdFt0LlRlcm09MjRdPSJUZXJtIix0W3QuT3BlcmF0b3I9MjVdPSJPcGVyYXRvciIsdFt0LlZhbHVlPTI2XT0iVmFsdWUiLHRbdC5TdHJpbmdMaXRlcmFsPTI3XT0iU3RyaW5nTGl0ZXJhbCIsdFt0LlVSSUxpdGVyYWw9MjhdPSJVUklMaXRlcmFsIix0W3QuRXNjYXBlZFZhbHVlPTI5XT0iRXNjYXBlZFZhbHVlIix0W3QuRnVuY3Rpb249MzBdPSJGdW5jdGlvbiIsdFt0Lk51bWVyaWNWYWx1ZT0zMV09Ik51bWVyaWNWYWx1ZSIsdFt0LkhleENvbG9yVmFsdWU9MzJdPSJIZXhDb2xvclZhbHVlIix0W3QuUmF0aW9WYWx1ZT0zM109IlJhdGlvVmFsdWUiLHRbdC5NaXhpbkRlY2xhcmF0aW9uPTM0XT0iTWl4aW5EZWNsYXJhdGlvbiIsdFt0Lk1peGluUmVmZXJlbmNlPTM1XT0iTWl4aW5SZWZlcmVuY2UiLHRbdC5WYXJpYWJsZU5hbWU9MzZdPSJWYXJpYWJsZU5hbWUiLHRbdC5WYXJpYWJsZURlY2xhcmF0aW9uPTM3XT0iVmFyaWFibGVEZWNsYXJhdGlvbiIsdFt0LlByaW89MzhdPSJQcmlvIix0W3QuSW50ZXJwb2xhdGlvbj0zOV09IkludGVycG9sYXRpb24iLHRbdC5OZXN0ZWRQcm9wZXJ0aWVzPTQwXT0iTmVzdGVkUHJvcGVydGllcyIsdFt0LkV4dGVuZHNSZWZlcmVuY2U9NDFdPSJFeHRlbmRzUmVmZXJlbmNlIix0W3QuU2VsZWN0b3JQbGFjZWhvbGRlcj00Ml09IlNlbGVjdG9yUGxhY2Vob2xkZXIiLHRbdC5EZWJ1Zz00M109IkRlYnVnIix0W3QuSWY9NDRdPSJJZiIsdFt0LkVsc2U9NDVdPSJFbHNlIix0W3QuRm9yPTQ2XT0iRm9yIix0W3QuRWFjaD00N109IkVhY2giLHRbdC5XaGlsZT00OF09IldoaWxlIix0W3QuTWl4aW5Db250ZW50UmVmZXJlbmNlPTQ5XT0iTWl4aW5Db250ZW50UmVmZXJlbmNlIix0W3QuTWl4aW5Db250ZW50RGVjbGFyYXRpb249NTBdPSJNaXhpbkNvbnRlbnREZWNsYXJhdGlvbiIsdFt0Lk1lZGlhPTUxXT0iTWVkaWEiLHRbdC5LZXlmcmFtZT01Ml09IktleWZyYW1lIix0W3QuRm9udEZhY2U9NTNdPSJGb250RmFjZSIsdFt0LkltcG9ydD01NF09IkltcG9ydCIsdFt0Lk5hbWVzcGFjZT01NV09Ik5hbWVzcGFjZSIsdFt0Lkludm9jYXRpb249NTZdPSJJbnZvY2F0aW9uIix0W3QuRnVuY3Rpb25EZWNsYXJhdGlvbj01N109IkZ1bmN0aW9uRGVjbGFyYXRpb24iLHRbdC5SZXR1cm5TdGF0ZW1lbnQ9NThdPSJSZXR1cm5TdGF0ZW1lbnQiLHRbdC5NZWRpYVF1ZXJ5PTU5XT0iTWVkaWFRdWVyeSIsdFt0Lk1lZGlhQ29uZGl0aW9uPTYwXT0iTWVkaWFDb25kaXRpb24iLHRbdC5NZWRpYUZlYXR1cmU9NjFdPSJNZWRpYUZlYXR1cmUiLHRbdC5GdW5jdGlvblBhcmFtZXRlcj02Ml09IkZ1bmN0aW9uUGFyYW1ldGVyIix0W3QuRnVuY3Rpb25Bcmd1bWVudD02M109IkZ1bmN0aW9uQXJndW1lbnQiLHRbdC5LZXlmcmFtZVNlbGVjdG9yPTY0XT0iS2V5ZnJhbWVTZWxlY3RvciIsdFt0LlZpZXdQb3J0PTY1XT0iVmlld1BvcnQiLHRbdC5Eb2N1bWVudD02Nl09IkRvY3VtZW50Iix0W3QuQXRBcHBseVJ1bGU9NjddPSJBdEFwcGx5UnVsZSIsdFt0LkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb249NjhdPSJDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uIix0W3QuQ3VzdG9tUHJvcGVydHlTZXQ9NjldPSJDdXN0b21Qcm9wZXJ0eVNldCIsdFt0Lkxpc3RFbnRyeT03MF09Ikxpc3RFbnRyeSIsdFt0LlN1cHBvcnRzPTcxXT0iU3VwcG9ydHMiLHRbdC5TdXBwb3J0c0NvbmRpdGlvbj03Ml09IlN1cHBvcnRzQ29uZGl0aW9uIix0W3QuTmFtZXNwYWNlUHJlZml4PTczXT0iTmFtZXNwYWNlUHJlZml4Iix0W3QuR3JpZExpbmU9NzRdPSJHcmlkTGluZSIsdFt0LlBsdWdpbj03NV09IlBsdWdpbiIsdFt0LlVua25vd25BdFJ1bGU9NzZdPSJVbmtub3duQXRSdWxlIix0W3QuVXNlPTc3XT0iVXNlIix0W3QuTW9kdWxlQ29uZmlndXJhdGlvbj03OF09Ik1vZHVsZUNvbmZpZ3VyYXRpb24iLHRbdC5Gb3J3YXJkPTc5XT0iRm9yd2FyZCIsdFt0LkZvcndhcmRWaXNpYmlsaXR5PTgwXT0iRm9yd2FyZFZpc2liaWxpdHkiLHRbdC5Nb2R1bGU9ODFdPSJNb2R1bGUiLHRbdC5Vbmljb2RlUmFuZ2U9ODJdPSJVbmljb2RlUmFuZ2UifSkodnx8KHY9e30pKTt2YXIgWjsoZnVuY3Rpb24odCl7dFt0Lk1peGluPTBdPSJNaXhpbiIsdFt0LlJ1bGU9MV09IlJ1bGUiLHRbdC5WYXJpYWJsZT0yXT0iVmFyaWFibGUiLHRbdC5GdW5jdGlvbj0zXT0iRnVuY3Rpb24iLHRbdC5LZXlmcmFtZT00XT0iS2V5ZnJhbWUiLHRbdC5Vbmtub3duPTVdPSJVbmtub3duIix0W3QuTW9kdWxlPTZdPSJNb2R1bGUiLHRbdC5Gb3J3YXJkPTddPSJGb3J3YXJkIix0W3QuRm9yd2FyZFZpc2liaWxpdHk9OF09IkZvcndhcmRWaXNpYmlsaXR5In0pKFp8fChaPXt9KSk7ZnVuY3Rpb24gaGkodCxlKXt2YXIgbj1udWxsO3JldHVybiF0fHxlPHQub2Zmc2V0fHxlPnQuZW5kP251bGw6KHQuYWNjZXB0KGZ1bmN0aW9uKHIpe3JldHVybiByLm9mZnNldD09PS0xJiZyLmxlbmd0aD09PS0xPyEwOnIub2Zmc2V0PD1lJiZyLmVuZD49ZT8obj9yLmxlbmd0aDw9bi5sZW5ndGgmJihuPXIpOm49ciwhMCk6ITF9KSxuKX1mdW5jdGlvbiBkaSh0LGUpe2Zvcih2YXIgbj1oaSh0LGUpLHI9W107bjspci51bnNoaWZ0KG4pLG49bi5wYXJlbnQ7cmV0dXJuIHJ9ZnVuY3Rpb24gdHUodCl7dmFyIGU9dC5maW5kUGFyZW50KHYuRGVjbGFyYXRpb24pLG49ZSYmZS5nZXRWYWx1ZSgpO3JldHVybiBuJiZuLmVuY2xvc2VzKHQpP2U6bnVsbH12YXIgVT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuLHIpe2U9PT12b2lkIDAmJihlPS0xKSxuPT09dm9pZCAwJiYobj0tMSksdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLm9mZnNldD1lLHRoaXMubGVuZ3RoPW4sciYmKHRoaXMubm9kZVR5cGU9cil9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZW5kIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2Zmc2V0K3RoaXMubGVuZ3RofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVUeXBlfHx2LlVuZGVmaW5lZH0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMubm9kZVR5cGU9ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXRUZXh0UHJvdmlkZXI9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcztlJiYhZS50ZXh0UHJvdmlkZXI7KWU9ZS5wYXJlbnQ7cmV0dXJuIGU/ZS50ZXh0UHJvdmlkZXI6ZnVuY3Rpb24oKXtyZXR1cm4idW5rbm93biJ9fSx0LnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dFByb3ZpZGVyKCkodGhpcy5vZmZzZXQsdGhpcy5sZW5ndGgpfSx0LnByb3RvdHlwZS5tYXRjaGVzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxlbmd0aD09PWUubGVuZ3RoJiZ0aGlzLmdldFRleHRQcm92aWRlcigpKHRoaXMub2Zmc2V0LHRoaXMubGVuZ3RoKT09PWV9LHQucHJvdG90eXBlLnN0YXJ0c1dpdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubGVuZ3RoPj1lLmxlbmd0aCYmdGhpcy5nZXRUZXh0UHJvdmlkZXIoKSh0aGlzLm9mZnNldCxlLmxlbmd0aCk9PT1lfSx0LnByb3RvdHlwZS5lbmRzV2l0aD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sZW5ndGg+PWUubGVuZ3RoJiZ0aGlzLmdldFRleHRQcm92aWRlcigpKHRoaXMuZW5kLWUubGVuZ3RoLGUubGVuZ3RoKT09PWV9LHQucHJvdG90eXBlLmFjY2VwdD1mdW5jdGlvbihlKXtpZihlKHRoaXMpJiZ0aGlzLmNoaWxkcmVuKWZvcih2YXIgbj0wLHI9dGhpcy5jaGlsZHJlbjtuPHIubGVuZ3RoO24rKyl7dmFyIGk9cltuXTtpLmFjY2VwdChlKX19LHQucHJvdG90eXBlLmFjY2VwdFZpc2l0b3I9ZnVuY3Rpb24oZSl7dGhpcy5hY2NlcHQoZS52aXNpdE5vZGUuYmluZChlKSl9LHQucHJvdG90eXBlLmFkb3B0Q2hpbGQ9ZnVuY3Rpb24oZSxuKXtpZihuPT09dm9pZCAwJiYobj0tMSksZS5wYXJlbnQmJmUucGFyZW50LmNoaWxkcmVuKXt2YXIgcj1lLnBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGUpO3I+PTAmJmUucGFyZW50LmNoaWxkcmVuLnNwbGljZShyLDEpfWUucGFyZW50PXRoaXM7dmFyIGk9dGhpcy5jaGlsZHJlbjtyZXR1cm4gaXx8KGk9dGhpcy5jaGlsZHJlbj1bXSksbiE9PS0xP2kuc3BsaWNlKG4sMCxlKTppLnB1c2goZSksZX0sdC5wcm90b3R5cGUuYXR0YWNoVG89ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbj09PXZvaWQgMCYmKG49LTEpLGUmJmUuYWRvcHRDaGlsZCh0aGlzLG4pLHRoaXN9LHQucHJvdG90eXBlLmNvbGxlY3RJc3N1ZXM9ZnVuY3Rpb24oZSl7dGhpcy5pc3N1ZXMmJmUucHVzaC5hcHBseShlLHRoaXMuaXNzdWVzKX0sdC5wcm90b3R5cGUuYWRkSXNzdWU9ZnVuY3Rpb24oZSl7dGhpcy5pc3N1ZXN8fCh0aGlzLmlzc3Vlcz1bXSksdGhpcy5pc3N1ZXMucHVzaChlKX0sdC5wcm90b3R5cGUuaGFzSXNzdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5pc3N1ZXMpJiZ0aGlzLmlzc3Vlcy5zb21lKGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFJ1bGUoKT09PWV9KX0sdC5wcm90b3R5cGUuaXNFcnJvbmVvdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPSExKSx0aGlzLmlzc3VlcyYmdGhpcy5pc3N1ZXMubGVuZ3RoPjA/ITA6ZSYmQXJyYXkuaXNBcnJheSh0aGlzLmNoaWxkcmVuKSYmdGhpcy5jaGlsZHJlbi5zb21lKGZ1bmN0aW9uKG4pe3JldHVybiBuLmlzRXJyb25lb3VzKCEwKX0pfSx0LnByb3RvdHlwZS5zZXROb2RlPWZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gcj09PXZvaWQgMCYmKHI9LTEpLG4/KG4uYXR0YWNoVG8odGhpcyxyKSx0aGlzW2VdPW4sITApOiExfSx0LnByb3RvdHlwZS5hZGRDaGlsZD1mdW5jdGlvbihlKXtyZXR1cm4gZT8odGhpcy5jaGlsZHJlbnx8KHRoaXMuY2hpbGRyZW49W10pLGUuYXR0YWNoVG8odGhpcyksdGhpcy51cGRhdGVPZmZzZXRBbmRMZW5ndGgoZSksITApOiExfSx0LnByb3RvdHlwZS51cGRhdGVPZmZzZXRBbmRMZW5ndGg9ZnVuY3Rpb24oZSl7KGUub2Zmc2V0PHRoaXMub2Zmc2V0fHx0aGlzLm9mZnNldD09PS0xKSYmKHRoaXMub2Zmc2V0PWUub2Zmc2V0KTt2YXIgbj1lLmVuZDsobj50aGlzLmVuZHx8dGhpcy5sZW5ndGg9PT0tMSkmJih0aGlzLmxlbmd0aD1uLXRoaXMub2Zmc2V0KX0sdC5wcm90b3R5cGUuaGFzQ2hpbGRyZW49ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuY2hpbGRyZW4mJnRoaXMuY2hpbGRyZW4ubGVuZ3RoPjB9LHQucHJvdG90eXBlLmdldENoaWxkcmVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4/dGhpcy5jaGlsZHJlbi5zbGljZSgwKTpbXX0sdC5wcm90b3R5cGUuZ2V0Q2hpbGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2hpbGRyZW4mJmU8dGhpcy5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jaGlsZHJlbltlXTpudWxsfSx0LnByb3RvdHlwZS5hZGRDaGlsZHJlbj1mdW5jdGlvbihlKXtmb3IodmFyIG49MCxyPWU7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07dGhpcy5hZGRDaGlsZChpKX19LHQucHJvdG90eXBlLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0PWZ1bmN0aW9uKGUpe2lmKHRoaXMuY2hpbGRyZW4pe2Zvcih2YXIgbj1udWxsLHI9dGhpcy5jaGlsZHJlbi5sZW5ndGgtMTtyPj0wO3ItLSlpZihuPXRoaXMuY2hpbGRyZW5bcl0sbi5vZmZzZXQ8PWUpcmV0dXJuIG59cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLmZpbmRDaGlsZEF0T2Zmc2V0PWZ1bmN0aW9uKGUsbil7dmFyIHI9dGhpcy5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldChlKTtyZXR1cm4gciYmci5lbmQ+PWU/biYmci5maW5kQ2hpbGRBdE9mZnNldChlLCEwKXx8cjpudWxsfSx0LnByb3RvdHlwZS5lbmNsb3Nlcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vZmZzZXQ8PWUub2Zmc2V0JiZ0aGlzLm9mZnNldCt0aGlzLmxlbmd0aD49ZS5vZmZzZXQrZS5sZW5ndGh9LHQucHJvdG90eXBlLmdldFBhcmVudD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnBhcmVudDtlIGluc3RhbmNlb2Yga2U7KWU9ZS5wYXJlbnQ7cmV0dXJuIGV9LHQucHJvdG90eXBlLmZpbmRQYXJlbnQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPXRoaXM7biYmbi50eXBlIT09ZTspbj1uLnBhcmVudDtyZXR1cm4gbn0sdC5wcm90b3R5cGUuZmluZEFQYXJlbnQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07Zm9yKHZhciByPXRoaXM7ciYmIWUuc29tZShmdW5jdGlvbihpKXtyZXR1cm4gci50eXBlPT09aX0pOylyPXIucGFyZW50O3JldHVybiByfSx0LnByb3RvdHlwZS5zZXREYXRhPWZ1bmN0aW9uKGUsbil7dGhpcy5vcHRpb25zfHwodGhpcy5vcHRpb25zPXt9KSx0aGlzLm9wdGlvbnNbZV09bn0sdC5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbihlKXtyZXR1cm4hdGhpcy5vcHRpb25zfHwhdGhpcy5vcHRpb25zLmhhc093blByb3BlcnR5KGUpP251bGw6dGhpcy5vcHRpb25zW2VdfSx0fSgpLGtlPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cj09PXZvaWQgMCYmKHI9LTEpO3ZhciBpPXQuY2FsbCh0aGlzLC0xLC0xKXx8dGhpcztyZXR1cm4gaS5hdHRhY2hUbyhuLHIpLGkub2Zmc2V0PS0xLGkubGVuZ3RoPS0xLGl9cmV0dXJuIGV9KFUpLG51PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlVuaWNvZGVSYW5nZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5zZXRSYW5nZVN0YXJ0PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoInJhbmdlU3RhcnQiLG4pfSxlLnByb3RvdHlwZS5nZXRSYW5nZVN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZ2VTdGFydH0sZS5wcm90b3R5cGUuc2V0UmFuZ2VFbmQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicmFuZ2VFbmQiLG4pfSxlLnByb3RvdHlwZS5nZXRSYW5nZUVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJhbmdlRW5kfSxlfShVKSxXZT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3ZhciBpPXQuY2FsbCh0aGlzLG4scil8fHRoaXM7cmV0dXJuIGkuaXNDdXN0b21Qcm9wZXJ0eT0hMSxpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5JZGVudGlmaWVyfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNvbnRhaW5zSW50ZXJwb2xhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0NoaWxkcmVuKCl9LGV9KFUpLHJ1PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlN0eWxlc2hlZXR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oVSksdWk9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuRGVjbGFyYXRpb25zfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KFUpLGhlPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIGUucHJvdG90eXBlLmdldERlY2xhcmF0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlY2xhcmF0aW9uc30sZS5wcm90b3R5cGUuc2V0RGVjbGFyYXRpb25zPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoImRlY2xhcmF0aW9ucyIsbil9LGV9KFUpLEp0PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlJ1bGVzZXR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0U2VsZWN0b3JzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0b3JzfHwodGhpcy5zZWxlY3RvcnM9bmV3IGtlKHRoaXMpKSx0aGlzLnNlbGVjdG9yc30sZS5wcm90b3R5cGUuaXNOZXN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5maW5kUGFyZW50KHYuRGVjbGFyYXRpb25zKSE9PW51bGx9LGV9KGhlKSx5bj1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5TZWxlY3Rvcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlfShVKSxYdD1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5TaW1wbGVTZWxlY3Rvcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlfShVKTsoZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuQXRBcHBseVJ1bGV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixuLDApfSxlLnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn0sZX0pKFUpO3ZhciBwaT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBlfShVKSxpdT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5DdXN0b21Qcm9wZXJ0eVNldH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlfShoZSksWmU9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXt2YXIgaT10LmNhbGwodGhpcyxuLHIpfHx0aGlzO3JldHVybiBpLnByb3BlcnR5PW51bGwsaX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuRGVjbGFyYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicHJvcGVydHkiLG4pfSxlLnByb3RvdHlwZS5nZXRQcm9wZXJ0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BlcnR5fSxlLnByb3RvdHlwZS5nZXRGdWxsUHJvcGVydHlOYW1lPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5wcm9wZXJ0eT90aGlzLnByb3BlcnR5LmdldE5hbWUoKToidW5rbm93biI7aWYodGhpcy5wYXJlbnQgaW5zdGFuY2VvZiB1aSYmdGhpcy5wYXJlbnQuZ2V0UGFyZW50KClpbnN0YW5jZW9mIGtvKXt2YXIgcj10aGlzLnBhcmVudC5nZXRQYXJlbnQoKS5nZXRQYXJlbnQoKTtpZihyIGluc3RhbmNlb2YgZSlyZXR1cm4gci5nZXRGdWxsUHJvcGVydHlOYW1lKCkrbn1yZXR1cm4gbn0sZS5wcm90b3R5cGUuZ2V0Tm9uUHJlZml4ZWRQcm9wZXJ0eU5hbWU9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKTtpZihuJiZuLmNoYXJBdCgwKT09PSItIil7dmFyIHI9bi5pbmRleE9mKCItIiwxKTtpZihyIT09LTEpcmV0dXJuIG4uc3Vic3RyaW5nKHIrMSl9cmV0dXJuIG59LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoInZhbHVlIixuKX0sZS5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0sZS5wcm90b3R5cGUuc2V0TmVzdGVkUHJvcGVydGllcz1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJuZXN0ZWRQcm9wZXJ0aWVzIixuKX0sZS5wcm90b3R5cGUuZ2V0TmVzdGVkUHJvcGVydGllcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lc3RlZFByb3BlcnRpZXN9LGV9KHBpKSxzdT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5DdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnNldFByb3BlcnR5U2V0PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoInByb3BlcnR5U2V0IixuKX0sZS5wcm90b3R5cGUuZ2V0UHJvcGVydHlTZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wZXJ0eVNldH0sZX0oWmUpLGZpPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlByb3BlcnR5fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsbil9LGUucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSxlLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGV1KHRoaXMuZ2V0VGV4dCgpLC9bX1wrXSskLyl9LGUucHJvdG90eXBlLmlzQ3VzdG9tUHJvcGVydHk9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuaWRlbnRpZmllciYmdGhpcy5pZGVudGlmaWVyLmlzQ3VzdG9tUHJvcGVydHl9LGV9KFUpLGF1PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2Lkludm9jYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0QXJndW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXJndW1lbnRzfHwodGhpcy5hcmd1bWVudHM9bmV3IGtlKHRoaXMpKSx0aGlzLmFyZ3VtZW50c30sZX0oVSksd249ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuRnVuY3Rpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixuLDApfSxlLnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn0sZX0oYXUpLHRyPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LkZ1bmN0aW9uUGFyYW1ldGVyfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsbiwwKX0sZS5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LGUucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9LGUucHJvdG90eXBlLnNldERlZmF1bHRWYWx1ZT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJkZWZhdWx0VmFsdWUiLG4sMCl9LGUucHJvdG90eXBlLmdldERlZmF1bHRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmF1bHRWYWx1ZX0sZX0oVSksWXQ9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuRnVuY3Rpb25Bcmd1bWVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLG4sMCl9LGUucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSxlLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YWx1ZSIsbiwwKX0sZS5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0sZX0oVSksb3U9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuSWZ9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0RXhwcmVzc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJleHByZXNzaW9uIixuLDApfSxlLnByb3RvdHlwZS5zZXRFbHNlQ2xhdXNlPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoImVsc2VDbGF1c2UiLG4pfSxlfShoZSksbHU9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuRm9yfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnNldFZhcmlhYmxlPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoInZhcmlhYmxlIixuLDApfSxlfShoZSksY3U9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuRWFjaH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRWYXJpYWJsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YXJpYWJsZXN8fCh0aGlzLnZhcmlhYmxlcz1uZXcga2UodGhpcykpLHRoaXMudmFyaWFibGVzfSxlfShoZSksaHU9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuV2hpbGV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oaGUpLGR1PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LkVsc2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oaGUpLG5yPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LkZ1bmN0aW9uRGVjbGFyYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixuLDApfSxlLnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn0sZS5wcm90b3R5cGUuZ2V0UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IGtlKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9LGV9KGhlKSx1dT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5WaWV3UG9ydH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlfShoZSksQ289ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuRm9udEZhY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oaGUpLGtvPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2Lk5lc3RlZFByb3BlcnRpZXN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oaGUpLF9vPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LktleWZyYW1lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnNldEtleXdvcmQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgia2V5d29yZCIsbiwwKX0sZS5wcm90b3R5cGUuZ2V0S2V5d29yZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmtleXdvcmR9LGUucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsbiwwKX0sZS5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LGUucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9LGV9KGhlKSxFbz1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5LZXlmcmFtZVNlbGVjdG9yfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KGhlKSxtaT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5JbXBvcnR9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0TWVkaWFsaXN0PWZ1bmN0aW9uKG4pe3JldHVybiBuPyhuLmF0dGFjaFRvKHRoaXMpLCEwKTohMX0sZX0oVSkscHU9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUoKXtyZXR1cm4gdCE9PW51bGwmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5Vc2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IGtlKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9LGUucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsbiwwKX0sZS5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LGV9KFUpLGZ1PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKCl7cmV0dXJuIHQhPT1udWxsJiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuTW9kdWxlQ29uZmlndXJhdGlvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLG4sMCl9LGUucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSxlLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YWx1ZSIsbiwwKX0sZS5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0sZX0oVSksbXU9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUoKXtyZXR1cm4gdCE9PW51bGwmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5Gb3J3YXJkfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnNldElkZW50aWZpZXI9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsbiwwKX0sZS5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LGUucHJvdG90eXBlLmdldE1lbWJlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW1iZXJzfHwodGhpcy5tZW1iZXJzPW5ldyBrZSh0aGlzKSksdGhpcy5tZW1iZXJzfSxlLnByb3RvdHlwZS5nZXRQYXJhbWV0ZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyYW1ldGVyc3x8KHRoaXMucGFyYW1ldGVycz1uZXcga2UodGhpcykpLHRoaXMucGFyYW1ldGVyc30sZX0oVSksZ3U9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUoKXtyZXR1cm4gdCE9PW51bGwmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5Gb3J3YXJkVmlzaWJpbGl0eX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5zZXRJZGVudGlmaWVyPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLG4sMCl9LGUucHJvdG90eXBlLmdldElkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfSxlfShVKSxidT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5OYW1lc3BhY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oVSksUm89ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuTWVkaWF9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oaGUpLGdpPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlN1cHBvcnRzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KGhlKSx2dT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5Eb2N1bWVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlfShoZSksRm89ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gZS5wcm90b3R5cGUuZ2V0TWVkaXVtcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1lZGl1bXN8fCh0aGlzLm1lZGl1bXM9bmV3IGtlKHRoaXMpKSx0aGlzLm1lZGl1bXN9LGV9KFUpLERvPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2Lk1lZGlhUXVlcnl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oVSkseXU9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuTWVkaWFDb25kaXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oVSksd3U9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuTWVkaWFGZWF0dXJlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KFUpLHhuPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlN1cHBvcnRzQ29uZGl0aW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KFUpLHh1PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlBhZ2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oaGUpLFN1PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlBhZ2VCb3hNYXJnaW5Cb3h9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oaGUpLEFvPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LkV4cHJlc3Npb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oVSksYmk9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuQmluYXJ5RXhwcmVzc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5zZXRMZWZ0PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoImxlZnQiLG4pfSxlLnByb3RvdHlwZS5nZXRMZWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVmdH0sZS5wcm90b3R5cGUuc2V0UmlnaHQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicmlnaHQiLG4pfSxlLnByb3RvdHlwZS5nZXRSaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJpZ2h0fSxlLnByb3RvdHlwZS5zZXRPcGVyYXRvcj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJvcGVyYXRvciIsbil9LGUucHJvdG90eXBlLmdldE9wZXJhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3BlcmF0b3J9LGV9KFUpLEN1PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlRlcm19LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0T3BlcmF0b3I9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgib3BlcmF0b3IiLG4pfSxlLnByb3RvdHlwZS5nZXRPcGVyYXRvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wZXJhdG9yfSxlLnByb3RvdHlwZS5zZXRFeHByZXNzaW9uPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoImV4cHJlc3Npb24iLG4pfSxlLnByb3RvdHlwZS5nZXRFeHByZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXhwcmVzc2lvbn0sZX0oVSksa3U9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuQXR0cmlidXRlU2VsZWN0b3J9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0TmFtZXNwYWNlUHJlZml4PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoIm5hbWVzcGFjZVByZWZpeCIsbil9LGUucHJvdG90eXBlLmdldE5hbWVzcGFjZVByZWZpeD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWVzcGFjZVByZWZpeH0sZS5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixuKX0sZS5wcm90b3R5cGUuZ2V0SWRlbnRpZmllcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9LGUucHJvdG90eXBlLnNldE9wZXJhdG9yPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoIm9wZXJhdG9yIixuKX0sZS5wcm90b3R5cGUuZ2V0T3BlcmF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcGVyYXRvcn0sZS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2V0Tm9kZSgidmFsdWUiLG4pfSxlLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxlfShVKTsoZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuT3BlcmF0b3J9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0pKFUpO3ZhciB2aT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5IZXhDb2xvclZhbHVlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KFUpLF91PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlJhdGlvVmFsdWV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oVSksRXU9NDYsUnU9NDgsRnU9NTcseWk9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuTnVtZXJpY1ZhbHVlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPXRoaXMuZ2V0VGV4dCgpLHI9MCxpLHM9MCxhPW4ubGVuZ3RoO3M8YSYmKGk9bi5jaGFyQ29kZUF0KHMpLFJ1PD1pJiZpPD1GdXx8aT09PUV1KTtzKyspcis9MTtyZXR1cm57dmFsdWU6bi5zdWJzdHJpbmcoMCxyKSx1bml0OnI8bi5sZW5ndGg/bi5zdWJzdHJpbmcocik6dm9pZCAwfX0sZX0oVSkscnI9ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXt2YXIgaT10LmNhbGwodGhpcyxuLHIpfHx0aGlzO3JldHVybiBpLnZhcmlhYmxlPW51bGwsaS52YWx1ZT1udWxsLGkubmVlZHNTZW1pY29sb249ITAsaX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuVmFyaWFibGVEZWNsYXJhdGlvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5zZXRWYXJpYWJsZT1mdW5jdGlvbihuKXtyZXR1cm4gbj8obi5hdHRhY2hUbyh0aGlzKSx0aGlzLnZhcmlhYmxlPW4sITApOiExfSxlLnByb3RvdHlwZS5nZXRWYXJpYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhcmlhYmxlfSxlLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFyaWFibGU/dGhpcy52YXJpYWJsZS5nZXROYW1lKCk6IiJ9LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKG4pe3JldHVybiBuPyhuLmF0dGFjaFRvKHRoaXMpLHRoaXMudmFsdWU9biwhMCk6ITF9LGUucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LGV9KHBpKSx3aT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5JbnRlcnBvbGF0aW9ufSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KFUpLHhpPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2LlZhcmlhYmxlTmFtZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpfSxlfShVKSxTbj1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5FeHRlbmRzUmVmZXJlbmNlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldFNlbGVjdG9ycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdG9yc3x8KHRoaXMuc2VsZWN0b3JzPW5ldyBrZSh0aGlzKSksdGhpcy5zZWxlY3RvcnN9LGV9KFUpLER1PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2Lk1peGluQ29udGVudFJlZmVyZW5jZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRBcmd1bWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcmd1bWVudHN8fCh0aGlzLmFyZ3VtZW50cz1uZXcga2UodGhpcykpLHRoaXMuYXJndW1lbnRzfSxlfShVKSxBdT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5NaXhpbkNvbnRlbnRSZWZlcmVuY2V9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IGtlKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9LGV9KGhlKSxpcj1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcyxuLHIpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5NaXhpblJlZmVyZW5jZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXROYW1lc3BhY2VzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZXNwYWNlc3x8KHRoaXMubmFtZXNwYWNlcz1uZXcga2UodGhpcykpLHRoaXMubmFtZXNwYWNlc30sZS5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixuLDApfSxlLnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn0sZS5wcm90b3R5cGUuZ2V0QXJndW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXJndW1lbnRzfHwodGhpcy5hcmd1bWVudHM9bmV3IGtlKHRoaXMpKSx0aGlzLmFyZ3VtZW50c30sZS5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJjb250ZW50IixuKX0sZS5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRlbnR9LGV9KFUpLENuPWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQuY2FsbCh0aGlzLG4scil8fHRoaXN9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidHlwZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB2Lk1peGluRGVjbGFyYXRpb259LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixuLDApfSxlLnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sZS5wcm90b3R5cGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn0sZS5wcm90b3R5cGUuZ2V0UGFyYW1ldGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IGtlKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9LGUucHJvdG90eXBlLnNldEd1YXJkPWZ1bmN0aW9uKG4pe3JldHVybiBuJiYobi5hdHRhY2hUbyh0aGlzKSx0aGlzLmd1YXJkPW4pLCExfSxlfShoZSksTm89ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixyKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuVW5rbm93bkF0UnVsZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5zZXRBdFJ1bGVOYW1lPWZ1bmN0aW9uKG4pe3RoaXMuYXRSdWxlTmFtZT1ufSxlLnByb3RvdHlwZS5nZXRBdFJ1bGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXRSdWxlTmFtZX0sZX0oaGUpLE51PWZ1bmN0aW9uKHQpe08oZSx0KTtmdW5jdGlvbiBlKCl7cmV0dXJuIHQhPT1udWxsJiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHYuTGlzdEVudHJ5fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnNldEtleT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJrZXkiLG4sMCl9LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoInZhbHVlIixuLDEpfSxlfShVKSxNdT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZSgpe3JldHVybiB0IT09bnVsbCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIGUucHJvdG90eXBlLmdldENvbmRpdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25zfHwodGhpcy5jb25kaXRpb25zPW5ldyBrZSh0aGlzKSksdGhpcy5jb25kaXRpb25zfSxlfShVKSx6dT1mdW5jdGlvbih0KXtPKGUsdCk7ZnVuY3Rpb24gZSgpe3JldHVybiB0IT09bnVsbCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIGUucHJvdG90eXBlLnNldFZhcmlhYmxlPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNldE5vZGUoInZhcmlhYmxlIixuKX0sZX0oVSksTW89ZnVuY3Rpb24odCl7TyhlLHQpO2Z1bmN0aW9uIGUoKXtyZXR1cm4gdCE9PW51bGwmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5Nb2R1bGV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuc2V0SWRlbnRpZmllcj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixuLDApfSxlLnByb3RvdHlwZS5nZXRJZGVudGlmaWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn0sZX0oVSksUGU7KGZ1bmN0aW9uKHQpe3RbdC5JZ25vcmU9MV09Iklnbm9yZSIsdFt0Lldhcm5pbmc9Ml09Ildhcm5pbmciLHRbdC5FcnJvcj00XT0iRXJyb3IifSkoUGV8fChQZT17fSkpO3ZhciB6bz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuLHIsaSxzLGEpe3M9PT12b2lkIDAmJihzPWUub2Zmc2V0KSxhPT09dm9pZCAwJiYoYT1lLmxlbmd0aCksdGhpcy5ub2RlPWUsdGhpcy5ydWxlPW4sdGhpcy5sZXZlbD1yLHRoaXMubWVzc2FnZT1pfHxuLm1lc3NhZ2UsdGhpcy5vZmZzZXQ9cyx0aGlzLmxlbmd0aD1hfXJldHVybiB0LnByb3RvdHlwZS5nZXRSdWxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucnVsZX0sdC5wcm90b3R5cGUuZ2V0TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZXZlbH0sdC5wcm90b3R5cGUuZ2V0T2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2Zmc2V0fSx0LnByb3RvdHlwZS5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LHQucHJvdG90eXBlLmdldE5vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlfSx0LnByb3RvdHlwZS5nZXRNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZX0sdH0oKSxMdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmVudHJpZXM9W119cmV0dXJuIHQuZW50cmllcz1mdW5jdGlvbihlKXt2YXIgbj1uZXcgdDtyZXR1cm4gZS5hY2NlcHRWaXNpdG9yKG4pLG4uZW50cmllc30sdC5wcm90b3R5cGUudmlzaXROb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmlzRXJyb25lb3VzKCkmJmUuY29sbGVjdElzc3Vlcyh0aGlzLmVudHJpZXMpLCEwfSx0fSgpO2Z1bmN0aW9uIFB1KHQsZSl7bGV0IG47cmV0dXJuIGUubGVuZ3RoPT09MD9uPXQ6bj10LnJlcGxhY2UoL1x7KFxkKylcfS9nLChyLGkpPT57bGV0IHM9aVswXTtyZXR1cm4gdHlwZW9mIGVbc108InUiP2Vbc106cn0pLG59ZnVuY3Rpb24gSXUodCxlLC4uLm4pe3JldHVybiBQdShlLG4pfWZ1bmN0aW9uIEdlKHQpe3JldHVybiBJdX12YXIgZWU9R2UoKSx0ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuKXt0aGlzLmlkPWUsdGhpcy5tZXNzYWdlPW59cmV0dXJuIHR9KCksUz17TnVtYmVyRXhwZWN0ZWQ6bmV3IHRlKCJjc3MtbnVtYmVyZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5udW1iZXIiLCJudW1iZXIgZXhwZWN0ZWQiKSksQ29uZGl0aW9uRXhwZWN0ZWQ6bmV3IHRlKCJjc3MtY29uZGl0aW9uZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5jb25kdCIsImNvbmRpdGlvbiBleHBlY3RlZCIpKSxSdWxlT3JTZWxlY3RvckV4cGVjdGVkOm5ldyB0ZSgiY3NzLXJ1bGVvcnNlbGVjdG9yZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5ydWxlb3JzZWxlY3RvciIsImF0LXJ1bGUgb3Igc2VsZWN0b3IgZXhwZWN0ZWQiKSksRG90RXhwZWN0ZWQ6bmV3IHRlKCJjc3MtZG90ZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5kb3QiLCJkb3QgZXhwZWN0ZWQiKSksQ29sb25FeHBlY3RlZDpuZXcgdGUoImNzcy1jb2xvbmV4cGVjdGVkIixlZSgiZXhwZWN0ZWQuY29sb24iLCJjb2xvbiBleHBlY3RlZCIpKSxTZW1pQ29sb25FeHBlY3RlZDpuZXcgdGUoImNzcy1zZW1pY29sb25leHBlY3RlZCIsZWUoImV4cGVjdGVkLnNlbWljb2xvbiIsInNlbWktY29sb24gZXhwZWN0ZWQiKSksVGVybUV4cGVjdGVkOm5ldyB0ZSgiY3NzLXRlcm1leHBlY3RlZCIsZWUoImV4cGVjdGVkLnRlcm0iLCJ0ZXJtIGV4cGVjdGVkIikpLEV4cHJlc3Npb25FeHBlY3RlZDpuZXcgdGUoImNzcy1leHByZXNzaW9uZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5leHByZXNzaW9uIiwiZXhwcmVzc2lvbiBleHBlY3RlZCIpKSxPcGVyYXRvckV4cGVjdGVkOm5ldyB0ZSgiY3NzLW9wZXJhdG9yZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5vcGVyYXRvciIsIm9wZXJhdG9yIGV4cGVjdGVkIikpLElkZW50aWZpZXJFeHBlY3RlZDpuZXcgdGUoImNzcy1pZGVudGlmaWVyZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5pZGVudCIsImlkZW50aWZpZXIgZXhwZWN0ZWQiKSksUGVyY2VudGFnZUV4cGVjdGVkOm5ldyB0ZSgiY3NzLXBlcmNlbnRhZ2VleHBlY3RlZCIsZWUoImV4cGVjdGVkLnBlcmNlbnRhZ2UiLCJwZXJjZW50YWdlIGV4cGVjdGVkIikpLFVSSU9yU3RyaW5nRXhwZWN0ZWQ6bmV3IHRlKCJjc3MtdXJpb3JzdHJpbmdleHBlY3RlZCIsZWUoImV4cGVjdGVkLnVyaW9yc3RyaW5nIiwidXJpIG9yIHN0cmluZyBleHBlY3RlZCIpKSxVUklFeHBlY3RlZDpuZXcgdGUoImNzcy11cmlleHBlY3RlZCIsZWUoImV4cGVjdGVkLnVyaSIsIlVSSSBleHBlY3RlZCIpKSxWYXJpYWJsZU5hbWVFeHBlY3RlZDpuZXcgdGUoImNzcy12YXJuYW1lZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC52YXJuYW1lIiwidmFyaWFibGUgbmFtZSBleHBlY3RlZCIpKSxWYXJpYWJsZVZhbHVlRXhwZWN0ZWQ6bmV3IHRlKCJjc3MtdmFydmFsdWVleHBlY3RlZCIsZWUoImV4cGVjdGVkLnZhcnZhbHVlIiwidmFyaWFibGUgdmFsdWUgZXhwZWN0ZWQiKSksUHJvcGVydHlWYWx1ZUV4cGVjdGVkOm5ldyB0ZSgiY3NzLXByb3BlcnR5dmFsdWVleHBlY3RlZCIsZWUoImV4cGVjdGVkLnByb3B2YWx1ZSIsInByb3BlcnR5IHZhbHVlIGV4cGVjdGVkIikpLExlZnRDdXJseUV4cGVjdGVkOm5ldyB0ZSgiY3NzLWxjdXJseWV4cGVjdGVkIixlZSgiZXhwZWN0ZWQubGN1cmx5IiwieyBleHBlY3RlZCIpKSxSaWdodEN1cmx5RXhwZWN0ZWQ6bmV3IHRlKCJjc3MtcmN1cmx5ZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5yY3VybHkiLCJ9IGV4cGVjdGVkIikpLExlZnRTcXVhcmVCcmFja2V0RXhwZWN0ZWQ6bmV3IHRlKCJjc3MtcmJyYWNrZXRleHBlY3RlZCIsZWUoImV4cGVjdGVkLmxzcXVhcmUiLCJbIGV4cGVjdGVkIikpLFJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkOm5ldyB0ZSgiY3NzLWxicmFja2V0ZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5yc3F1YXJlIiwiXSBleHBlY3RlZCIpKSxMZWZ0UGFyZW50aGVzaXNFeHBlY3RlZDpuZXcgdGUoImNzcy1scGFyZW50ZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5scGFyZW4iLCIoIGV4cGVjdGVkIikpLFJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZDpuZXcgdGUoImNzcy1ycGFyZW50ZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5ycGFyZW50IiwiKSBleHBlY3RlZCIpKSxDb21tYUV4cGVjdGVkOm5ldyB0ZSgiY3NzLWNvbW1hZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5jb21tYSIsImNvbW1hIGV4cGVjdGVkIikpLFBhZ2VEaXJlY3RpdmVPckRlY2xhcmF0aW9uRXhwZWN0ZWQ6bmV3IHRlKCJjc3MtcGFnZWRpcm9yZGVjbGV4cGVjdGVkIixlZSgiZXhwZWN0ZWQucGFnZWRpcm9yZGVjbCIsInBhZ2UgZGlyZWN0aXZlIG9yIGRlY2xhcmF0b24gZXhwZWN0ZWQiKSksVW5rbm93bkF0UnVsZTpuZXcgdGUoImNzcy11bmtub3duYXRydWxlIixlZSgidW5rbm93bi5hdHJ1bGUiLCJhdC1ydWxlIHVua25vd24iKSksVW5rbm93bktleXdvcmQ6bmV3IHRlKCJjc3MtdW5rbm93bmtleXdvcmQiLGVlKCJ1bmtub3duLmtleXdvcmQiLCJ1bmtub3duIGtleXdvcmQiKSksU2VsZWN0b3JFeHBlY3RlZDpuZXcgdGUoImNzcy1zZWxlY3RvcmV4cGVjdGVkIixlZSgiZXhwZWN0ZWQuc2VsZWN0b3IiLCJzZWxlY3RvciBleHBlY3RlZCIpKSxTdHJpbmdMaXRlcmFsRXhwZWN0ZWQ6bmV3IHRlKCJjc3Mtc3RyaW5nbGl0ZXJhbGV4cGVjdGVkIixlZSgiZXhwZWN0ZWQuc3RyaW5nbGl0ZXJhbCIsInN0cmluZyBsaXRlcmFsIGV4cGVjdGVkIikpLFdoaXRlc3BhY2VFeHBlY3RlZDpuZXcgdGUoImNzcy13aGl0ZXNwYWNlZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC53aGl0ZXNwYWNlIiwid2hpdGVzcGFjZSBleHBlY3RlZCIpKSxNZWRpYVF1ZXJ5RXhwZWN0ZWQ6bmV3IHRlKCJjc3MtbWVkaWFxdWVyeWV4cGVjdGVkIixlZSgiZXhwZWN0ZWQubWVkaWFxdWVyeSIsIm1lZGlhIHF1ZXJ5IGV4cGVjdGVkIikpLElkZW50aWZpZXJPcldpbGRjYXJkRXhwZWN0ZWQ6bmV3IHRlKCJjc3MtaWRvcndpbGRjYXJkZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5pZG9yd2lsZGNhcmQiLCJpZGVudGlmaWVyIG9yIHdpbGRjYXJkIGV4cGVjdGVkIikpLFdpbGRjYXJkRXhwZWN0ZWQ6bmV3IHRlKCJjc3Mtd2lsZGNhcmRleHBlY3RlZCIsZWUoImV4cGVjdGVkLndpbGRjYXJkIiwid2lsZGNhcmQgZXhwZWN0ZWQiKSksSWRlbnRpZmllck9yVmFyaWFibGVFeHBlY3RlZDpuZXcgdGUoImNzcy1pZG9ydmFyZXhwZWN0ZWQiLGVlKCJleHBlY3RlZC5pZG9ydmFyIiwiaWRlbnRpZmllciBvciB2YXJpYWJsZSBleHBlY3RlZCIpKX0sTG87KGZ1bmN0aW9uKHQpe3QuTUlOX1ZBTFVFPS0yMTQ3NDgzNjQ4LHQuTUFYX1ZBTFVFPTIxNDc0ODM2NDd9KShMb3x8KExvPXt9KSk7dmFyIHNyOyhmdW5jdGlvbih0KXt0Lk1JTl9WQUxVRT0wLHQuTUFYX1ZBTFVFPTIxNDc0ODM2NDd9KShzcnx8KHNyPXt9KSk7dmFyIEZlOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSl7cmV0dXJuIHI9PT1OdW1iZXIuTUFYX1ZBTFVFJiYocj1zci5NQVhfVkFMVUUpLGk9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoaT1zci5NQVhfVkFMVUUpLHtsaW5lOnIsY2hhcmFjdGVyOml9fXQuY3JlYXRlPWU7ZnVuY3Rpb24gbihyKXt2YXIgaT1yO3JldHVybiBFLm9iamVjdExpdGVyYWwoaSkmJkUudWludGVnZXIoaS5saW5lKSYmRS51aW50ZWdlcihpLmNoYXJhY3Rlcil9dC5pcz1ufSkoRmV8fChGZT17fSkpO3ZhciBpZTsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShyLGkscyxhKXtpZihFLnVpbnRlZ2VyKHIpJiZFLnVpbnRlZ2VyKGkpJiZFLnVpbnRlZ2VyKHMpJiZFLnVpbnRlZ2VyKGEpKXJldHVybntzdGFydDpGZS5jcmVhdGUocixpKSxlbmQ6RmUuY3JlYXRlKHMsYSl9O2lmKEZlLmlzKHIpJiZGZS5pcyhpKSlyZXR1cm57c3RhcnQ6cixlbmQ6aX07dGhyb3cgbmV3IEVycm9yKCJSYW5nZSNjcmVhdGUgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHNbIityKyIsICIraSsiLCAiK3MrIiwgIithKyJdIil9dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIEUub2JqZWN0TGl0ZXJhbChpKSYmRmUuaXMoaS5zdGFydCkmJkZlLmlzKGkuZW5kKX10LmlzPW59KShpZXx8KGllPXt9KSk7dmFyIGtuOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSl7cmV0dXJue3VyaTpyLHJhbmdlOml9fXQuY3JlYXRlPWU7ZnVuY3Rpb24gbihyKXt2YXIgaT1yO3JldHVybiBFLmRlZmluZWQoaSkmJmllLmlzKGkucmFuZ2UpJiYoRS5zdHJpbmcoaS51cmkpfHxFLnVuZGVmaW5lZChpLnVyaSkpfXQuaXM9bn0pKGtufHwoa249e30pKTt2YXIgUG87KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUocixpLHMsYSl7cmV0dXJue3RhcmdldFVyaTpyLHRhcmdldFJhbmdlOmksdGFyZ2V0U2VsZWN0aW9uUmFuZ2U6cyxvcmlnaW5TZWxlY3Rpb25SYW5nZTphfX10LmNyZWF0ZT1lO2Z1bmN0aW9uIG4ocil7dmFyIGk9cjtyZXR1cm4gRS5kZWZpbmVkKGkpJiZpZS5pcyhpLnRhcmdldFJhbmdlKSYmRS5zdHJpbmcoaS50YXJnZXRVcmkpJiYoaWUuaXMoaS50YXJnZXRTZWxlY3Rpb25SYW5nZSl8fEUudW5kZWZpbmVkKGkudGFyZ2V0U2VsZWN0aW9uUmFuZ2UpKSYmKGllLmlzKGkub3JpZ2luU2VsZWN0aW9uUmFuZ2UpfHxFLnVuZGVmaW5lZChpLm9yaWdpblNlbGVjdGlvblJhbmdlKSl9dC5pcz1ufSkoUG98fChQbz17fSkpO3ZhciBTaTsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShyLGkscyxhKXtyZXR1cm57cmVkOnIsZ3JlZW46aSxibHVlOnMsYWxwaGE6YX19dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIEUubnVtYmVyUmFuZ2UoaS5yZWQsMCwxKSYmRS5udW1iZXJSYW5nZShpLmdyZWVuLDAsMSkmJkUubnVtYmVyUmFuZ2UoaS5ibHVlLDAsMSkmJkUubnVtYmVyUmFuZ2UoaS5hbHBoYSwwLDEpfXQuaXM9bn0pKFNpfHwoU2k9e30pKTt2YXIgSW87KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUocixpKXtyZXR1cm57cmFuZ2U6cixjb2xvcjppfX10LmNyZWF0ZT1lO2Z1bmN0aW9uIG4ocil7dmFyIGk9cjtyZXR1cm4gaWUuaXMoaS5yYW5nZSkmJlNpLmlzKGkuY29sb3IpfXQuaXM9bn0pKElvfHwoSW89e30pKTt2YXIgVG87KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUocixpLHMpe3JldHVybntsYWJlbDpyLHRleHRFZGl0OmksYWRkaXRpb25hbFRleHRFZGl0czpzfX10LmNyZWF0ZT1lO2Z1bmN0aW9uIG4ocil7dmFyIGk9cjtyZXR1cm4gRS5zdHJpbmcoaS5sYWJlbCkmJihFLnVuZGVmaW5lZChpLnRleHRFZGl0KXx8SC5pcyhpKSkmJihFLnVuZGVmaW5lZChpLmFkZGl0aW9uYWxUZXh0RWRpdHMpfHxFLnR5cGVkQXJyYXkoaS5hZGRpdGlvbmFsVGV4dEVkaXRzLEguaXMpKX10LmlzPW59KShUb3x8KFRvPXt9KSk7dmFyIFdvOyhmdW5jdGlvbih0KXt0LkNvbW1lbnQ9ImNvbW1lbnQiLHQuSW1wb3J0cz0iaW1wb3J0cyIsdC5SZWdpb249InJlZ2lvbiJ9KShXb3x8KFdvPXt9KSk7dmFyIE9vOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSxzLGEsbyl7dmFyIGw9e3N0YXJ0TGluZTpyLGVuZExpbmU6aX07cmV0dXJuIEUuZGVmaW5lZChzKSYmKGwuc3RhcnRDaGFyYWN0ZXI9cyksRS5kZWZpbmVkKGEpJiYobC5lbmRDaGFyYWN0ZXI9YSksRS5kZWZpbmVkKG8pJiYobC5raW5kPW8pLGx9dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIEUudWludGVnZXIoaS5zdGFydExpbmUpJiZFLnVpbnRlZ2VyKGkuc3RhcnRMaW5lKSYmKEUudW5kZWZpbmVkKGkuc3RhcnRDaGFyYWN0ZXIpfHxFLnVpbnRlZ2VyKGkuc3RhcnRDaGFyYWN0ZXIpKSYmKEUudW5kZWZpbmVkKGkuZW5kQ2hhcmFjdGVyKXx8RS51aW50ZWdlcihpLmVuZENoYXJhY3RlcikpJiYoRS51bmRlZmluZWQoaS5raW5kKXx8RS5zdHJpbmcoaS5raW5kKSl9dC5pcz1ufSkoT298fChPbz17fSkpO3ZhciBDaTsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShyLGkpe3JldHVybntsb2NhdGlvbjpyLG1lc3NhZ2U6aX19dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIEUuZGVmaW5lZChpKSYma24uaXMoaS5sb2NhdGlvbikmJkUuc3RyaW5nKGkubWVzc2FnZSl9dC5pcz1ufSkoQ2l8fChDaT17fSkpO3ZhciBhcjsoZnVuY3Rpb24odCl7dC5FcnJvcj0xLHQuV2FybmluZz0yLHQuSW5mb3JtYXRpb249Myx0LkhpbnQ9NH0pKGFyfHwoYXI9e30pKTt2YXIgVW87KGZ1bmN0aW9uKHQpe3QuVW5uZWNlc3Nhcnk9MSx0LkRlcHJlY2F0ZWQ9Mn0pKFVvfHwoVW89e30pKTt2YXIgVm87KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dmFyIHI9bjtyZXR1cm4gciE9bnVsbCYmRS5zdHJpbmcoci5ocmVmKX10LmlzPWV9KShWb3x8KFZvPXt9KSk7dmFyIG9yOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSxzLGEsbyxsKXt2YXIgYz17cmFuZ2U6cixtZXNzYWdlOml9O3JldHVybiBFLmRlZmluZWQocykmJihjLnNldmVyaXR5PXMpLEUuZGVmaW5lZChhKSYmKGMuY29kZT1hKSxFLmRlZmluZWQobykmJihjLnNvdXJjZT1vKSxFLmRlZmluZWQobCkmJihjLnJlbGF0ZWRJbmZvcm1hdGlvbj1sKSxjfXQuY3JlYXRlPWU7ZnVuY3Rpb24gbihyKXt2YXIgaSxzPXI7cmV0dXJuIEUuZGVmaW5lZChzKSYmaWUuaXMocy5yYW5nZSkmJkUuc3RyaW5nKHMubWVzc2FnZSkmJihFLm51bWJlcihzLnNldmVyaXR5KXx8RS51bmRlZmluZWQocy5zZXZlcml0eSkpJiYoRS5pbnRlZ2VyKHMuY29kZSl8fEUuc3RyaW5nKHMuY29kZSl8fEUudW5kZWZpbmVkKHMuY29kZSkpJiYoRS51bmRlZmluZWQocy5jb2RlRGVzY3JpcHRpb24pfHxFLnN0cmluZygoaT1zLmNvZGVEZXNjcmlwdGlvbik9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmhyZWYpKSYmKEUuc3RyaW5nKHMuc291cmNlKXx8RS51bmRlZmluZWQocy5zb3VyY2UpKSYmKEUudW5kZWZpbmVkKHMucmVsYXRlZEluZm9ybWF0aW9uKXx8RS50eXBlZEFycmF5KHMucmVsYXRlZEluZm9ybWF0aW9uLENpLmlzKSl9dC5pcz1ufSkob3J8fChvcj17fSkpO3ZhciBLdDsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShyLGkpe2Zvcih2YXIgcz1bXSxhPTI7YTxhcmd1bWVudHMubGVuZ3RoO2ErKylzW2EtMl09YXJndW1lbnRzW2FdO3ZhciBvPXt0aXRsZTpyLGNvbW1hbmQ6aX07cmV0dXJuIEUuZGVmaW5lZChzKSYmcy5sZW5ndGg+MCYmKG8uYXJndW1lbnRzPXMpLG99dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIEUuZGVmaW5lZChpKSYmRS5zdHJpbmcoaS50aXRsZSkmJkUuc3RyaW5nKGkuY29tbWFuZCl9dC5pcz1ufSkoS3R8fChLdD17fSkpO3ZhciBIOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHMsYSl7cmV0dXJue3JhbmdlOnMsbmV3VGV4dDphfX10LnJlcGxhY2U9ZTtmdW5jdGlvbiBuKHMsYSl7cmV0dXJue3JhbmdlOntzdGFydDpzLGVuZDpzfSxuZXdUZXh0OmF9fXQuaW5zZXJ0PW47ZnVuY3Rpb24gcihzKXtyZXR1cm57cmFuZ2U6cyxuZXdUZXh0OiIifX10LmRlbD1yO2Z1bmN0aW9uIGkocyl7dmFyIGE9cztyZXR1cm4gRS5vYmplY3RMaXRlcmFsKGEpJiZFLnN0cmluZyhhLm5ld1RleHQpJiZpZS5pcyhhLnJhbmdlKX10LmlzPWl9KShIfHwoSD17fSkpO3ZhciBRdDsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShyLGkscyl7dmFyIGE9e2xhYmVsOnJ9O3JldHVybiBpIT09dm9pZCAwJiYoYS5uZWVkc0NvbmZpcm1hdGlvbj1pKSxzIT09dm9pZCAwJiYoYS5kZXNjcmlwdGlvbj1zKSxhfXQuY3JlYXRlPWU7ZnVuY3Rpb24gbihyKXt2YXIgaT1yO3JldHVybiBpIT09dm9pZCAwJiZFLm9iamVjdExpdGVyYWwoaSkmJkUuc3RyaW5nKGkubGFiZWwpJiYoRS5ib29sZWFuKGkubmVlZHNDb25maXJtYXRpb24pfHxpLm5lZWRzQ29uZmlybWF0aW9uPT09dm9pZCAwKSYmKEUuc3RyaW5nKGkuZGVzY3JpcHRpb24pfHxpLmRlc2NyaXB0aW9uPT09dm9pZCAwKX10LmlzPW59KShRdHx8KFF0PXt9KSk7dmFyIEVlOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciByPW47cmV0dXJuIHR5cGVvZiByPT0ic3RyaW5nIn10LmlzPWV9KShFZXx8KEVlPXt9KSk7dmFyIHZ0OyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHMsYSxvKXtyZXR1cm57cmFuZ2U6cyxuZXdUZXh0OmEsYW5ub3RhdGlvbklkOm99fXQucmVwbGFjZT1lO2Z1bmN0aW9uIG4ocyxhLG8pe3JldHVybntyYW5nZTp7c3RhcnQ6cyxlbmQ6c30sbmV3VGV4dDphLGFubm90YXRpb25JZDpvfX10Lmluc2VydD1uO2Z1bmN0aW9uIHIocyxhKXtyZXR1cm57cmFuZ2U6cyxuZXdUZXh0OiIiLGFubm90YXRpb25JZDphfX10LmRlbD1yO2Z1bmN0aW9uIGkocyl7dmFyIGE9cztyZXR1cm4gSC5pcyhhKSYmKFF0LmlzKGEuYW5ub3RhdGlvbklkKXx8RWUuaXMoYS5hbm5vdGF0aW9uSWQpKX10LmlzPWl9KSh2dHx8KHZ0PXt9KSk7dmFyIF9uOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSl7cmV0dXJue3RleHREb2N1bWVudDpyLGVkaXRzOml9fXQuY3JlYXRlPWU7ZnVuY3Rpb24gbihyKXt2YXIgaT1yO3JldHVybiBFLmRlZmluZWQoaSkmJmNyLmlzKGkudGV4dERvY3VtZW50KSYmQXJyYXkuaXNBcnJheShpLmVkaXRzKX10LmlzPW59KShfbnx8KF9uPXt9KSk7dmFyIEVuOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSxzKXt2YXIgYT17a2luZDoiY3JlYXRlIix1cmk6cn07cmV0dXJuIGkhPT12b2lkIDAmJihpLm92ZXJ3cml0ZSE9PXZvaWQgMHx8aS5pZ25vcmVJZkV4aXN0cyE9PXZvaWQgMCkmJihhLm9wdGlvbnM9aSkscyE9PXZvaWQgMCYmKGEuYW5ub3RhdGlvbklkPXMpLGF9dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIGkmJmkua2luZD09PSJjcmVhdGUiJiZFLnN0cmluZyhpLnVyaSkmJihpLm9wdGlvbnM9PT12b2lkIDB8fChpLm9wdGlvbnMub3ZlcndyaXRlPT09dm9pZCAwfHxFLmJvb2xlYW4oaS5vcHRpb25zLm92ZXJ3cml0ZSkpJiYoaS5vcHRpb25zLmlnbm9yZUlmRXhpc3RzPT09dm9pZCAwfHxFLmJvb2xlYW4oaS5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYoaS5hbm5vdGF0aW9uSWQ9PT12b2lkIDB8fEVlLmlzKGkuYW5ub3RhdGlvbklkKSl9dC5pcz1ufSkoRW58fChFbj17fSkpO3ZhciBSbjsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShyLGkscyxhKXt2YXIgbz17a2luZDoicmVuYW1lIixvbGRVcmk6cixuZXdVcmk6aX07cmV0dXJuIHMhPT12b2lkIDAmJihzLm92ZXJ3cml0ZSE9PXZvaWQgMHx8cy5pZ25vcmVJZkV4aXN0cyE9PXZvaWQgMCkmJihvLm9wdGlvbnM9cyksYSE9PXZvaWQgMCYmKG8uYW5ub3RhdGlvbklkPWEpLG99dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIGkmJmkua2luZD09PSJyZW5hbWUiJiZFLnN0cmluZyhpLm9sZFVyaSkmJkUuc3RyaW5nKGkubmV3VXJpKSYmKGkub3B0aW9ucz09PXZvaWQgMHx8KGkub3B0aW9ucy5vdmVyd3JpdGU9PT12b2lkIDB8fEUuYm9vbGVhbihpLm9wdGlvbnMub3ZlcndyaXRlKSkmJihpLm9wdGlvbnMuaWdub3JlSWZFeGlzdHM9PT12b2lkIDB8fEUuYm9vbGVhbihpLm9wdGlvbnMuaWdub3JlSWZFeGlzdHMpKSkmJihpLmFubm90YXRpb25JZD09PXZvaWQgMHx8RWUuaXMoaS5hbm5vdGF0aW9uSWQpKX10LmlzPW59KShSbnx8KFJuPXt9KSk7dmFyIEZuOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSxzKXt2YXIgYT17a2luZDoiZGVsZXRlIix1cmk6cn07cmV0dXJuIGkhPT12b2lkIDAmJihpLnJlY3Vyc2l2ZSE9PXZvaWQgMHx8aS5pZ25vcmVJZk5vdEV4aXN0cyE9PXZvaWQgMCkmJihhLm9wdGlvbnM9aSkscyE9PXZvaWQgMCYmKGEuYW5ub3RhdGlvbklkPXMpLGF9dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIGkmJmkua2luZD09PSJkZWxldGUiJiZFLnN0cmluZyhpLnVyaSkmJihpLm9wdGlvbnM9PT12b2lkIDB8fChpLm9wdGlvbnMucmVjdXJzaXZlPT09dm9pZCAwfHxFLmJvb2xlYW4oaS5vcHRpb25zLnJlY3Vyc2l2ZSkpJiYoaS5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzPT09dm9pZCAwfHxFLmJvb2xlYW4oaS5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzKSkpJiYoaS5hbm5vdGF0aW9uSWQ9PT12b2lkIDB8fEVlLmlzKGkuYW5ub3RhdGlvbklkKSl9dC5pcz1ufSkoRm58fChGbj17fSkpO3ZhciBraTsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXt2YXIgcj1uO3JldHVybiByJiYoci5jaGFuZ2VzIT09dm9pZCAwfHxyLmRvY3VtZW50Q2hhbmdlcyE9PXZvaWQgMCkmJihyLmRvY3VtZW50Q2hhbmdlcz09PXZvaWQgMHx8ci5kb2N1bWVudENoYW5nZXMuZXZlcnkoZnVuY3Rpb24oaSl7cmV0dXJuIEUuc3RyaW5nKGkua2luZCk/RW4uaXMoaSl8fFJuLmlzKGkpfHxGbi5pcyhpKTpfbi5pcyhpKX0pKX10LmlzPWV9KShraXx8KGtpPXt9KSk7dmFyIGxyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3RoaXMuZWRpdHM9ZSx0aGlzLmNoYW5nZUFubm90YXRpb25zPW59cmV0dXJuIHQucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbihlLG4scil7dmFyIGkscztpZihyPT09dm9pZCAwP2k9SC5pbnNlcnQoZSxuKTpFZS5pcyhyKT8ocz1yLGk9dnQuaW5zZXJ0KGUsbixyKSk6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucykscz10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZShyKSxpPXZ0Lmluc2VydChlLG4scykpLHRoaXMuZWRpdHMucHVzaChpKSxzIT09dm9pZCAwKXJldHVybiBzfSx0LnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKGUsbixyKXt2YXIgaSxzO2lmKHI9PT12b2lkIDA/aT1ILnJlcGxhY2UoZSxuKTpFZS5pcyhyKT8ocz1yLGk9dnQucmVwbGFjZShlLG4scikpOih0aGlzLmFzc2VydENoYW5nZUFubm90YXRpb25zKHRoaXMuY2hhbmdlQW5ub3RhdGlvbnMpLHM9dGhpcy5jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UociksaT12dC5yZXBsYWNlKGUsbixzKSksdGhpcy5lZGl0cy5wdXNoKGkpLHMhPT12b2lkIDApcmV0dXJuIHN9LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlLG4pe3ZhciByLGk7aWYobj09PXZvaWQgMD9yPUguZGVsKGUpOkVlLmlzKG4pPyhpPW4scj12dC5kZWwoZSxuKSk6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucyksaT10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZShuKSxyPXZ0LmRlbChlLGkpKSx0aGlzLmVkaXRzLnB1c2gociksaSE9PXZvaWQgMClyZXR1cm4gaX0sdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuZWRpdHMucHVzaChlKX0sdC5wcm90b3R5cGUuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRpdHN9LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5lZGl0cy5zcGxpY2UoMCx0aGlzLmVkaXRzLmxlbmd0aCl9LHQucHJvdG90eXBlLmFzc2VydENoYW5nZUFubm90YXRpb25zPWZ1bmN0aW9uKGUpe2lmKGU9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJUZXh0IGVkaXQgY2hhbmdlIGlzIG5vdCBjb25maWd1cmVkIHRvIG1hbmFnZSBjaGFuZ2UgYW5ub3RhdGlvbnMuIil9LHR9KCksQm89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3RoaXMuX2Fubm90YXRpb25zPWU9PT12b2lkIDA/T2JqZWN0LmNyZWF0ZShudWxsKTplLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9zaXplPTB9cmV0dXJuIHQucHJvdG90eXBlLmFsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbm5vdGF0aW9uc30sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NpemV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUubWFuYWdlPWZ1bmN0aW9uKGUsbil7dmFyIHI7aWYoRWUuaXMoZSk/cj1lOihyPXRoaXMubmV4dElkKCksbj1lKSx0aGlzLl9hbm5vdGF0aW9uc1tyXSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIklkICIrcisiIGlzIGFscmVhZHkgaW4gdXNlLiIpO2lmKG49PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJObyBhbm5vdGF0aW9uIHByb3ZpZGVkIGZvciBpZCAiK3IpO3JldHVybiB0aGlzLl9hbm5vdGF0aW9uc1tyXT1uLHRoaXMuX3NpemUrKyxyfSx0LnByb3RvdHlwZS5uZXh0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY291bnRlcisrLHRoaXMuX2NvdW50ZXIudG9TdHJpbmcoKX0sdH0oKTsoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3ZhciBuPXRoaXM7dGhpcy5fdGV4dEVkaXRDaGFuZ2VzPU9iamVjdC5jcmVhdGUobnVsbCksZSE9PXZvaWQgMD8odGhpcy5fd29ya3NwYWNlRWRpdD1lLGUuZG9jdW1lbnRDaGFuZ2VzPyh0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucz1uZXcgQm8oZS5jaGFuZ2VBbm5vdGF0aW9ucyksZS5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSxlLmRvY3VtZW50Q2hhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uKHIpe2lmKF9uLmlzKHIpKXt2YXIgaT1uZXcgbHIoci5lZGl0cyxuLl9jaGFuZ2VBbm5vdGF0aW9ucyk7bi5fdGV4dEVkaXRDaGFuZ2VzW3IudGV4dERvY3VtZW50LnVyaV09aX19KSk6ZS5jaGFuZ2VzJiZPYmplY3Qua2V5cyhlLmNoYW5nZXMpLmZvckVhY2goZnVuY3Rpb24ocil7dmFyIGk9bmV3IGxyKGUuY2hhbmdlc1tyXSk7bi5fdGV4dEVkaXRDaGFuZ2VzW3JdPWl9KSk6dGhpcy5fd29ya3NwYWNlRWRpdD17fX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJlZGl0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHRoaXMuX2NoYW5nZUFubm90YXRpb25zIT09dm9pZCAwJiYodGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuc2l6ZT09PTA/dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz12b2lkIDA6dGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSksdGhpcy5fd29ya3NwYWNlRWRpdH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXRUZXh0RWRpdENoYW5nZT1mdW5jdGlvbihlKXtpZihjci5pcyhlKSl7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXM9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgbj17dXJpOmUudXJpLHZlcnNpb246ZS52ZXJzaW9ufSxyPXRoaXMuX3RleHRFZGl0Q2hhbmdlc1tuLnVyaV07aWYoIXIpe3ZhciBpPVtdLHM9e3RleHREb2N1bWVudDpuLGVkaXRzOml9O3RoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2gocykscj1uZXcgbHIoaSx0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyksdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW24udXJpXT1yfXJldHVybiByfWVsc2V7aWYodGhpcy5pbml0Q2hhbmdlcygpLHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcz09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBub3JtYWwgdGV4dCBlZGl0IGNoYW5nZXMuIik7dmFyIHI9dGhpcy5fdGV4dEVkaXRDaGFuZ2VzW2VdO2lmKCFyKXt2YXIgaT1bXTt0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXNbZV09aSxyPW5ldyBscihpKSx0aGlzLl90ZXh0RWRpdENoYW5nZXNbZV09cn1yZXR1cm4gcn19LHQucHJvdG90eXBlLmluaXREb2N1bWVudENoYW5nZXM9ZnVuY3Rpb24oKXt0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcz09PXZvaWQgMCYmdGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VzPT09dm9pZCAwJiYodGhpcy5fY2hhbmdlQW5ub3RhdGlvbnM9bmV3IEJvLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzPVtdLHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlQW5ub3RhdGlvbnM9dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuYWxsKCkpfSx0LnByb3RvdHlwZS5pbml0Q2hhbmdlcz1mdW5jdGlvbigpe3RoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzPT09dm9pZCAwJiZ0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXM9PT12b2lkIDAmJih0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSl9LHQucHJvdG90eXBlLmNyZWF0ZUZpbGU9ZnVuY3Rpb24oZSxuLHIpe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIGk7UXQuaXMobil8fEVlLmlzKG4pP2k9bjpyPW47dmFyIHMsYTtpZihpPT09dm9pZCAwP3M9RW4uY3JlYXRlKGUscik6KGE9RWUuaXMoaSk/aTp0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UoaSkscz1Fbi5jcmVhdGUoZSxyLGEpKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKHMpLGEhPT12b2lkIDApcmV0dXJuIGF9LHQucHJvdG90eXBlLnJlbmFtZUZpbGU9ZnVuY3Rpb24oZSxuLHIsaSl7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXM9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgcztRdC5pcyhyKXx8RWUuaXMocik/cz1yOmk9cjt2YXIgYSxvO2lmKHM9PT12b2lkIDA/YT1Sbi5jcmVhdGUoZSxuLGkpOihvPUVlLmlzKHMpP3M6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHMpLGE9Um4uY3JlYXRlKGUsbixpLG8pKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKGEpLG8hPT12b2lkIDApcmV0dXJuIG99LHQucHJvdG90eXBlLmRlbGV0ZUZpbGU9ZnVuY3Rpb24oZSxuLHIpe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIGk7UXQuaXMobil8fEVlLmlzKG4pP2k9bjpyPW47dmFyIHMsYTtpZihpPT09dm9pZCAwP3M9Rm4uY3JlYXRlKGUscik6KGE9RWUuaXMoaSk/aTp0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5tYW5hZ2UoaSkscz1Gbi5jcmVhdGUoZSxyLGEpKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKHMpLGEhPT12b2lkIDApcmV0dXJuIGF9LHR9KSgpO3ZhciBxbzsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShyKXtyZXR1cm57dXJpOnJ9fXQuY3JlYXRlPWU7ZnVuY3Rpb24gbihyKXt2YXIgaT1yO3JldHVybiBFLmRlZmluZWQoaSkmJkUuc3RyaW5nKGkudXJpKX10LmlzPW59KShxb3x8KHFvPXt9KSk7dmFyIF9pOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSl7cmV0dXJue3VyaTpyLHZlcnNpb246aX19dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIEUuZGVmaW5lZChpKSYmRS5zdHJpbmcoaS51cmkpJiZFLmludGVnZXIoaS52ZXJzaW9uKX10LmlzPW59KShfaXx8KF9pPXt9KSk7dmFyIGNyOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSl7cmV0dXJue3VyaTpyLHZlcnNpb246aX19dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIEUuZGVmaW5lZChpKSYmRS5zdHJpbmcoaS51cmkpJiYoaS52ZXJzaW9uPT09bnVsbHx8RS5pbnRlZ2VyKGkudmVyc2lvbikpfXQuaXM9bn0pKGNyfHwoY3I9e30pKTt2YXIgam87KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUocixpLHMsYSl7cmV0dXJue3VyaTpyLGxhbmd1YWdlSWQ6aSx2ZXJzaW9uOnMsdGV4dDphfX10LmNyZWF0ZT1lO2Z1bmN0aW9uIG4ocil7dmFyIGk9cjtyZXR1cm4gRS5kZWZpbmVkKGkpJiZFLnN0cmluZyhpLnVyaSkmJkUuc3RyaW5nKGkubGFuZ3VhZ2VJZCkmJkUuaW50ZWdlcihpLnZlcnNpb24pJiZFLnN0cmluZyhpLnRleHQpfXQuaXM9bn0pKGpvfHwoam89e30pKTt2YXIgT2U7KGZ1bmN0aW9uKHQpe3QuUGxhaW5UZXh0PSJwbGFpbnRleHQiLHQuTWFya2Rvd249Im1hcmtkb3duIn0pKE9lfHwoT2U9e30pKSxmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciByPW47cmV0dXJuIHI9PT10LlBsYWluVGV4dHx8cj09PXQuTWFya2Rvd259dC5pcz1lfShPZXx8KE9lPXt9KSk7dmFyIEVpOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciByPW47cmV0dXJuIEUub2JqZWN0TGl0ZXJhbChuKSYmT2UuaXMoci5raW5kKSYmRS5zdHJpbmcoci52YWx1ZSl9dC5pcz1lfSkoRWl8fChFaT17fSkpO3ZhciAkOyhmdW5jdGlvbih0KXt0LlRleHQ9MSx0Lk1ldGhvZD0yLHQuRnVuY3Rpb249Myx0LkNvbnN0cnVjdG9yPTQsdC5GaWVsZD01LHQuVmFyaWFibGU9Nix0LkNsYXNzPTcsdC5JbnRlcmZhY2U9OCx0Lk1vZHVsZT05LHQuUHJvcGVydHk9MTAsdC5Vbml0PTExLHQuVmFsdWU9MTIsdC5FbnVtPTEzLHQuS2V5d29yZD0xNCx0LlNuaXBwZXQ9MTUsdC5Db2xvcj0xNix0LkZpbGU9MTcsdC5SZWZlcmVuY2U9MTgsdC5Gb2xkZXI9MTksdC5FbnVtTWVtYmVyPTIwLHQuQ29uc3RhbnQ9MjEsdC5TdHJ1Y3Q9MjIsdC5FdmVudD0yMyx0Lk9wZXJhdG9yPTI0LHQuVHlwZVBhcmFtZXRlcj0yNX0pKCR8fCgkPXt9KSk7dmFyIEllOyhmdW5jdGlvbih0KXt0LlBsYWluVGV4dD0xLHQuU25pcHBldD0yfSkoSWV8fChJZT17fSkpO3ZhciBfdDsoZnVuY3Rpb24odCl7dC5EZXByZWNhdGVkPTF9KShfdHx8KF90PXt9KSk7dmFyICRvOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSxzKXtyZXR1cm57bmV3VGV4dDpyLGluc2VydDppLHJlcGxhY2U6c319dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIGkmJkUuc3RyaW5nKGkubmV3VGV4dCkmJmllLmlzKGkuaW5zZXJ0KSYmaWUuaXMoaS5yZXBsYWNlKX10LmlzPW59KSgkb3x8KCRvPXt9KSk7dmFyIEhvOyhmdW5jdGlvbih0KXt0LmFzSXM9MSx0LmFkanVzdEluZGVudGF0aW9uPTJ9KShIb3x8KEhvPXt9KSk7dmFyIEdvOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3JldHVybntsYWJlbDpufX10LmNyZWF0ZT1lfSkoR298fChHbz17fSkpO3ZhciBKbzsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuLHIpe3JldHVybntpdGVtczpufHxbXSxpc0luY29tcGxldGU6ISFyfX10LmNyZWF0ZT1lfSkoSm98fChKbz17fSkpO3ZhciBocjsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShyKXtyZXR1cm4gci5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLS4hXS9nLCJcXCQmIil9dC5mcm9tUGxhaW5UZXh0PWU7ZnVuY3Rpb24gbihyKXt2YXIgaT1yO3JldHVybiBFLnN0cmluZyhpKXx8RS5vYmplY3RMaXRlcmFsKGkpJiZFLnN0cmluZyhpLmxhbmd1YWdlKSYmRS5zdHJpbmcoaS52YWx1ZSl9dC5pcz1ufSkoaHJ8fChocj17fSkpO3ZhciBYbzsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXt2YXIgcj1uO3JldHVybiEhciYmRS5vYmplY3RMaXRlcmFsKHIpJiYoRWkuaXMoci5jb250ZW50cyl8fGhyLmlzKHIuY29udGVudHMpfHxFLnR5cGVkQXJyYXkoci5jb250ZW50cyxoci5pcykpJiYobi5yYW5nZT09PXZvaWQgMHx8aWUuaXMobi5yYW5nZSkpfXQuaXM9ZX0pKFhvfHwoWG89e30pKTt2YXIgWW87KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixyKXtyZXR1cm4gcj97bGFiZWw6bixkb2N1bWVudGF0aW9uOnJ9OntsYWJlbDpufX10LmNyZWF0ZT1lfSkoWW98fChZbz17fSkpO3ZhciBLbzsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuLHIpe2Zvcih2YXIgaT1bXSxzPTI7czxhcmd1bWVudHMubGVuZ3RoO3MrKylpW3MtMl09YXJndW1lbnRzW3NdO3ZhciBhPXtsYWJlbDpufTtyZXR1cm4gRS5kZWZpbmVkKHIpJiYoYS5kb2N1bWVudGF0aW9uPXIpLEUuZGVmaW5lZChpKT9hLnBhcmFtZXRlcnM9aTphLnBhcmFtZXRlcnM9W10sYX10LmNyZWF0ZT1lfSkoS298fChLbz17fSkpO3ZhciBadDsoZnVuY3Rpb24odCl7dC5UZXh0PTEsdC5SZWFkPTIsdC5Xcml0ZT0zfSkoWnR8fChadD17fSkpO3ZhciBRbzsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuLHIpe3ZhciBpPXtyYW5nZTpufTtyZXR1cm4gRS5udW1iZXIocikmJihpLmtpbmQ9ciksaX10LmNyZWF0ZT1lfSkoUW98fChRbz17fSkpO3ZhciBFdDsoZnVuY3Rpb24odCl7dC5GaWxlPTEsdC5Nb2R1bGU9Mix0Lk5hbWVzcGFjZT0zLHQuUGFja2FnZT00LHQuQ2xhc3M9NSx0Lk1ldGhvZD02LHQuUHJvcGVydHk9Nyx0LkZpZWxkPTgsdC5Db25zdHJ1Y3Rvcj05LHQuRW51bT0xMCx0LkludGVyZmFjZT0xMSx0LkZ1bmN0aW9uPTEyLHQuVmFyaWFibGU9MTMsdC5Db25zdGFudD0xNCx0LlN0cmluZz0xNSx0Lk51bWJlcj0xNix0LkJvb2xlYW49MTcsdC5BcnJheT0xOCx0Lk9iamVjdD0xOSx0LktleT0yMCx0Lk51bGw9MjEsdC5FbnVtTWVtYmVyPTIyLHQuU3RydWN0PTIzLHQuRXZlbnQ9MjQsdC5PcGVyYXRvcj0yNSx0LlR5cGVQYXJhbWV0ZXI9MjZ9KShFdHx8KEV0PXt9KSk7dmFyIFpvOyhmdW5jdGlvbih0KXt0LkRlcHJlY2F0ZWQ9MX0pKFpvfHwoWm89e30pKTt2YXIgZWw7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixyLGkscyxhKXt2YXIgbz17bmFtZTpuLGtpbmQ6cixsb2NhdGlvbjp7dXJpOnMscmFuZ2U6aX19O3JldHVybiBhJiYoby5jb250YWluZXJOYW1lPWEpLG99dC5jcmVhdGU9ZX0pKGVsfHwoZWw9e30pKTt2YXIgdGw7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUocixpLHMsYSxvLGwpe3ZhciBjPXtuYW1lOnIsZGV0YWlsOmksa2luZDpzLHJhbmdlOmEsc2VsZWN0aW9uUmFuZ2U6b307cmV0dXJuIGwhPT12b2lkIDAmJihjLmNoaWxkcmVuPWwpLGN9dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIGkmJkUuc3RyaW5nKGkubmFtZSkmJkUubnVtYmVyKGkua2luZCkmJmllLmlzKGkucmFuZ2UpJiZpZS5pcyhpLnNlbGVjdGlvblJhbmdlKSYmKGkuZGV0YWlsPT09dm9pZCAwfHxFLnN0cmluZyhpLmRldGFpbCkpJiYoaS5kZXByZWNhdGVkPT09dm9pZCAwfHxFLmJvb2xlYW4oaS5kZXByZWNhdGVkKSkmJihpLmNoaWxkcmVuPT09dm9pZCAwfHxBcnJheS5pc0FycmF5KGkuY2hpbGRyZW4pKSYmKGkudGFncz09PXZvaWQgMHx8QXJyYXkuaXNBcnJheShpLnRhZ3MpKX10LmlzPW59KSh0bHx8KHRsPXt9KSk7dmFyIFJpOyhmdW5jdGlvbih0KXt0LkVtcHR5PSIiLHQuUXVpY2tGaXg9InF1aWNrZml4Iix0LlJlZmFjdG9yPSJyZWZhY3RvciIsdC5SZWZhY3RvckV4dHJhY3Q9InJlZmFjdG9yLmV4dHJhY3QiLHQuUmVmYWN0b3JJbmxpbmU9InJlZmFjdG9yLmlubGluZSIsdC5SZWZhY3RvclJld3JpdGU9InJlZmFjdG9yLnJld3JpdGUiLHQuU291cmNlPSJzb3VyY2UiLHQuU291cmNlT3JnYW5pemVJbXBvcnRzPSJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIix0LlNvdXJjZUZpeEFsbD0ic291cmNlLmZpeEFsbCJ9KShSaXx8KFJpPXt9KSk7dmFyIG5sOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSl7dmFyIHM9e2RpYWdub3N0aWNzOnJ9O3JldHVybiBpIT1udWxsJiYocy5vbmx5PWkpLHN9dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIEUuZGVmaW5lZChpKSYmRS50eXBlZEFycmF5KGkuZGlhZ25vc3RpY3Msb3IuaXMpJiYoaS5vbmx5PT09dm9pZCAwfHxFLnR5cGVkQXJyYXkoaS5vbmx5LEUuc3RyaW5nKSl9dC5pcz1ufSkobmx8fChubD17fSkpO3ZhciBGaTsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShyLGkscyl7dmFyIGE9e3RpdGxlOnJ9LG89ITA7cmV0dXJuIHR5cGVvZiBpPT0ic3RyaW5nIj8obz0hMSxhLmtpbmQ9aSk6S3QuaXMoaSk/YS5jb21tYW5kPWk6YS5lZGl0PWksbyYmcyE9PXZvaWQgMCYmKGEua2luZD1zKSxhfXQuY3JlYXRlPWU7ZnVuY3Rpb24gbihyKXt2YXIgaT1yO3JldHVybiBpJiZFLnN0cmluZyhpLnRpdGxlKSYmKGkuZGlhZ25vc3RpY3M9PT12b2lkIDB8fEUudHlwZWRBcnJheShpLmRpYWdub3N0aWNzLG9yLmlzKSkmJihpLmtpbmQ9PT12b2lkIDB8fEUuc3RyaW5nKGkua2luZCkpJiYoaS5lZGl0IT09dm9pZCAwfHxpLmNvbW1hbmQhPT12b2lkIDApJiYoaS5jb21tYW5kPT09dm9pZCAwfHxLdC5pcyhpLmNvbW1hbmQpKSYmKGkuaXNQcmVmZXJyZWQ9PT12b2lkIDB8fEUuYm9vbGVhbihpLmlzUHJlZmVycmVkKSkmJihpLmVkaXQ9PT12b2lkIDB8fGtpLmlzKGkuZWRpdCkpfXQuaXM9bn0pKEZpfHwoRmk9e30pKTt2YXIgcmw7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUocixpKXt2YXIgcz17cmFuZ2U6cn07cmV0dXJuIEUuZGVmaW5lZChpKSYmKHMuZGF0YT1pKSxzfXQuY3JlYXRlPWU7ZnVuY3Rpb24gbihyKXt2YXIgaT1yO3JldHVybiBFLmRlZmluZWQoaSkmJmllLmlzKGkucmFuZ2UpJiYoRS51bmRlZmluZWQoaS5jb21tYW5kKXx8S3QuaXMoaS5jb21tYW5kKSl9dC5pcz1ufSkocmx8fChybD17fSkpO3ZhciBpbDsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShyLGkpe3JldHVybnt0YWJTaXplOnIsaW5zZXJ0U3BhY2VzOml9fXQuY3JlYXRlPWU7ZnVuY3Rpb24gbihyKXt2YXIgaT1yO3JldHVybiBFLmRlZmluZWQoaSkmJkUudWludGVnZXIoaS50YWJTaXplKSYmRS5ib29sZWFuKGkuaW5zZXJ0U3BhY2VzKX10LmlzPW59KShpbHx8KGlsPXt9KSk7dmFyIHNsOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHIsaSxzKXtyZXR1cm57cmFuZ2U6cix0YXJnZXQ6aSxkYXRhOnN9fXQuY3JlYXRlPWU7ZnVuY3Rpb24gbihyKXt2YXIgaT1yO3JldHVybiBFLmRlZmluZWQoaSkmJmllLmlzKGkucmFuZ2UpJiYoRS51bmRlZmluZWQoaS50YXJnZXQpfHxFLnN0cmluZyhpLnRhcmdldCkpfXQuaXM9bn0pKHNsfHwoc2w9e30pKTt2YXIgZHI7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUocixpKXtyZXR1cm57cmFuZ2U6cixwYXJlbnQ6aX19dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXI7cmV0dXJuIGkhPT12b2lkIDAmJmllLmlzKGkucmFuZ2UpJiYoaS5wYXJlbnQ9PT12b2lkIDB8fHQuaXMoaS5wYXJlbnQpKX10LmlzPW59KShkcnx8KGRyPXt9KSk7dmFyIGFsOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHMsYSxvLGwpe3JldHVybiBuZXcgVHUocyxhLG8sbCl9dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKHMpe3ZhciBhPXM7cmV0dXJuISEoRS5kZWZpbmVkKGEpJiZFLnN0cmluZyhhLnVyaSkmJihFLnVuZGVmaW5lZChhLmxhbmd1YWdlSWQpfHxFLnN0cmluZyhhLmxhbmd1YWdlSWQpKSYmRS51aW50ZWdlcihhLmxpbmVDb3VudCkmJkUuZnVuYyhhLmdldFRleHQpJiZFLmZ1bmMoYS5wb3NpdGlvbkF0KSYmRS5mdW5jKGEub2Zmc2V0QXQpKX10LmlzPW47ZnVuY3Rpb24gcihzLGEpe2Zvcih2YXIgbz1zLmdldFRleHQoKSxsPWkoYSxmdW5jdGlvbihnLGIpe3ZhciB5PWcucmFuZ2Uuc3RhcnQubGluZS1iLnJhbmdlLnN0YXJ0LmxpbmU7cmV0dXJuIHk9PT0wP2cucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyLWIucmFuZ2Uuc3RhcnQuY2hhcmFjdGVyOnl9KSxjPW8ubGVuZ3RoLGg9bC5sZW5ndGgtMTtoPj0wO2gtLSl7dmFyIHU9bFtoXSxmPXMub2Zmc2V0QXQodS5yYW5nZS5zdGFydCksbT1zLm9mZnNldEF0KHUucmFuZ2UuZW5kKTtpZihtPD1jKW89by5zdWJzdHJpbmcoMCxmKSt1Lm5ld1RleHQrby5zdWJzdHJpbmcobSxvLmxlbmd0aCk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXBwaW5nIGVkaXQiKTtjPWZ9cmV0dXJuIG99dC5hcHBseUVkaXRzPXI7ZnVuY3Rpb24gaShzLGEpe2lmKHMubGVuZ3RoPD0xKXJldHVybiBzO3ZhciBvPXMubGVuZ3RoLzJ8MCxsPXMuc2xpY2UoMCxvKSxjPXMuc2xpY2Uobyk7aShsLGEpLGkoYyxhKTtmb3IodmFyIGg9MCx1PTAsZj0wO2g8bC5sZW5ndGgmJnU8Yy5sZW5ndGg7KXt2YXIgbT1hKGxbaF0sY1t1XSk7bTw9MD9zW2YrK109bFtoKytdOnNbZisrXT1jW3UrK119Zm9yKDtoPGwubGVuZ3RoOylzW2YrK109bFtoKytdO2Zvcig7dTxjLmxlbmd0aDspc1tmKytdPWNbdSsrXTtyZXR1cm4gc319KShhbHx8KGFsPXt9KSk7dmFyIFR1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4scixpKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPW4sdGhpcy5fdmVyc2lvbj1yLHRoaXMuX2NvbnRlbnQ9aSx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidXJpIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VyaX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImxhbmd1YWdlSWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZlcnNpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBuPXRoaXMub2Zmc2V0QXQoZS5zdGFydCkscj10aGlzLm9mZnNldEF0KGUuZW5kKTtyZXR1cm4gdGhpcy5fY29udGVudC5zdWJzdHJpbmcobixyKX1yZXR1cm4gdGhpcy5fY29udGVudH0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsbil7dGhpcy5fY29udGVudD1lLnRleHQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH0sdC5wcm90b3R5cGUuZ2V0TGluZU9mZnNldHM9ZnVuY3Rpb24oKXtpZih0aGlzLl9saW5lT2Zmc2V0cz09PXZvaWQgMCl7Zm9yKHZhciBlPVtdLG49dGhpcy5fY29udGVudCxyPSEwLGk9MDtpPG4ubGVuZ3RoO2krKyl7ciYmKGUucHVzaChpKSxyPSExKTt2YXIgcz1uLmNoYXJBdChpKTtyPXM9PT0iXHIifHxzPT09YApgLHM9PT0iXHIiJiZpKzE8bi5sZW5ndGgmJm4uY2hhckF0KGkrMSk9PT1gCmAmJmkrK31yJiZuLmxlbmd0aD4wJiZlLnB1c2gobi5sZW5ndGgpLHRoaXMuX2xpbmVPZmZzZXRzPWV9cmV0dXJuIHRoaXMuX2xpbmVPZmZzZXRzfSx0LnByb3RvdHlwZS5wb3NpdGlvbkF0PWZ1bmN0aW9uKGUpe2U9TWF0aC5tYXgoTWF0aC5taW4oZSx0aGlzLl9jb250ZW50Lmxlbmd0aCksMCk7dmFyIG49dGhpcy5nZXRMaW5lT2Zmc2V0cygpLHI9MCxpPW4ubGVuZ3RoO2lmKGk9PT0wKXJldHVybiBGZS5jcmVhdGUoMCxlKTtmb3IoO3I8aTspe3ZhciBzPU1hdGguZmxvb3IoKHIraSkvMik7bltzXT5lP2k9czpyPXMrMX12YXIgYT1yLTE7cmV0dXJuIEZlLmNyZWF0ZShhLGUtblthXSl9LHQucHJvdG90eXBlLm9mZnNldEF0PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuZ2V0TGluZU9mZnNldHMoKTtpZihlLmxpbmU+PW4ubGVuZ3RoKXJldHVybiB0aGlzLl9jb250ZW50Lmxlbmd0aDtpZihlLmxpbmU8MClyZXR1cm4gMDt2YXIgcj1uW2UubGluZV0saT1lLmxpbmUrMTxuLmxlbmd0aD9uW2UubGluZSsxXTp0aGlzLl9jb250ZW50Lmxlbmd0aDtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4ocitlLmNoYXJhY3RlcixpKSxyKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJsaW5lQ291bnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0fSgpLEU7KGZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbihtKXtyZXR1cm4gdHlwZW9mIG08InUifXQuZGVmaW5lZD1uO2Z1bmN0aW9uIHIobSl7cmV0dXJuIHR5cGVvZiBtPiJ1In10LnVuZGVmaW5lZD1yO2Z1bmN0aW9uIGkobSl7cmV0dXJuIG09PT0hMHx8bT09PSExfXQuYm9vbGVhbj1pO2Z1bmN0aW9uIHMobSl7cmV0dXJuIGUuY2FsbChtKT09PSJbb2JqZWN0IFN0cmluZ10ifXQuc3RyaW5nPXM7ZnVuY3Rpb24gYShtKXtyZXR1cm4gZS5jYWxsKG0pPT09IltvYmplY3QgTnVtYmVyXSJ9dC5udW1iZXI9YTtmdW5jdGlvbiBvKG0sZyxiKXtyZXR1cm4gZS5jYWxsKG0pPT09IltvYmplY3QgTnVtYmVyXSImJmc8PW0mJm08PWJ9dC5udW1iZXJSYW5nZT1vO2Z1bmN0aW9uIGwobSl7cmV0dXJuIGUuY2FsbChtKT09PSJbb2JqZWN0IE51bWJlcl0iJiYtMjE0NzQ4MzY0ODw9bSYmbTw9MjE0NzQ4MzY0N310LmludGVnZXI9bDtmdW5jdGlvbiBjKG0pe3JldHVybiBlLmNhbGwobSk9PT0iW29iamVjdCBOdW1iZXJdIiYmMDw9bSYmbTw9MjE0NzQ4MzY0N310LnVpbnRlZ2VyPWM7ZnVuY3Rpb24gaChtKXtyZXR1cm4gZS5jYWxsKG0pPT09IltvYmplY3QgRnVuY3Rpb25dIn10LmZ1bmM9aDtmdW5jdGlvbiB1KG0pe3JldHVybiBtIT09bnVsbCYmdHlwZW9mIG09PSJvYmplY3QifXQub2JqZWN0TGl0ZXJhbD11O2Z1bmN0aW9uIGYobSxnKXtyZXR1cm4gQXJyYXkuaXNBcnJheShtKSYmbS5ldmVyeShnKX10LnR5cGVkQXJyYXk9Zn0pKEV8fChFPXt9KSk7dmFyIG9sPWNsYXNzIG9ze2NvbnN0cnVjdG9yKGUsbixyLGkpe3RoaXMuX3VyaT1lLHRoaXMuX2xhbmd1YWdlSWQ9bix0aGlzLl92ZXJzaW9uPXIsdGhpcy5fY29udGVudD1pLHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH1nZXQgdXJpKCl7cmV0dXJuIHRoaXMuX3VyaX1nZXQgbGFuZ3VhZ2VJZCgpe3JldHVybiB0aGlzLl9sYW5ndWFnZUlkfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnNpb259Z2V0VGV4dChlKXtpZihlKXtjb25zdCBuPXRoaXMub2Zmc2V0QXQoZS5zdGFydCkscj10aGlzLm9mZnNldEF0KGUuZW5kKTtyZXR1cm4gdGhpcy5fY29udGVudC5zdWJzdHJpbmcobixyKX1yZXR1cm4gdGhpcy5fY29udGVudH11cGRhdGUoZSxuKXtmb3IobGV0IHIgb2YgZSlpZihvcy5pc0luY3JlbWVudGFsKHIpKXtjb25zdCBpPWNsKHIucmFuZ2UpLHM9dGhpcy5vZmZzZXRBdChpLnN0YXJ0KSxhPXRoaXMub2Zmc2V0QXQoaS5lbmQpO3RoaXMuX2NvbnRlbnQ9dGhpcy5fY29udGVudC5zdWJzdHJpbmcoMCxzKStyLnRleHQrdGhpcy5fY29udGVudC5zdWJzdHJpbmcoYSx0aGlzLl9jb250ZW50Lmxlbmd0aCk7Y29uc3Qgbz1NYXRoLm1heChpLnN0YXJ0LmxpbmUsMCksbD1NYXRoLm1heChpLmVuZC5saW5lLDApO2xldCBjPXRoaXMuX2xpbmVPZmZzZXRzO2NvbnN0IGg9bGwoci50ZXh0LCExLHMpO2lmKGwtbz09PWgubGVuZ3RoKWZvcihsZXQgZj0wLG09aC5sZW5ndGg7ZjxtO2YrKyljW2YrbysxXT1oW2ZdO2Vsc2UgaC5sZW5ndGg8MWU0P2Muc3BsaWNlKG8rMSxsLW8sLi4uaCk6dGhpcy5fbGluZU9mZnNldHM9Yz1jLnNsaWNlKDAsbysxKS5jb25jYXQoaCxjLnNsaWNlKGwrMSkpO2NvbnN0IHU9ci50ZXh0Lmxlbmd0aC0oYS1zKTtpZih1IT09MClmb3IobGV0IGY9bysxK2gubGVuZ3RoLG09Yy5sZW5ndGg7ZjxtO2YrKyljW2ZdPWNbZl0rdX1lbHNlIGlmKG9zLmlzRnVsbChyKSl0aGlzLl9jb250ZW50PXIudGV4dCx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDA7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY2hhbmdlIGV2ZW50IHJlY2VpdmVkIik7dGhpcy5fdmVyc2lvbj1ufWdldExpbmVPZmZzZXRzKCl7cmV0dXJuIHRoaXMuX2xpbmVPZmZzZXRzPT09dm9pZCAwJiYodGhpcy5fbGluZU9mZnNldHM9bGwodGhpcy5fY29udGVudCwhMCkpLHRoaXMuX2xpbmVPZmZzZXRzfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTtsZXQgbj10aGlzLmdldExpbmVPZmZzZXRzKCkscj0wLGk9bi5sZW5ndGg7aWYoaT09PTApcmV0dXJue2xpbmU6MCxjaGFyYWN0ZXI6ZX07Zm9yKDtyPGk7KXtsZXQgYT1NYXRoLmZsb29yKChyK2kpLzIpO25bYV0+ZT9pPWE6cj1hKzF9bGV0IHM9ci0xO3JldHVybntsaW5lOnMsY2hhcmFjdGVyOmUtbltzXX19b2Zmc2V0QXQoZSl7bGV0IG49dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49bi5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO2xldCByPW5bZS5saW5lXSxpPWUubGluZSsxPG4ubGVuZ3RoP25bZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihyK2UuY2hhcmFjdGVyLGkpLHIpfWdldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH1zdGF0aWMgaXNJbmNyZW1lbnRhbChlKXtsZXQgbj1lO3JldHVybiBuIT1udWxsJiZ0eXBlb2Ygbi50ZXh0PT0ic3RyaW5nIiYmbi5yYW5nZSE9PXZvaWQgMCYmKG4ucmFuZ2VMZW5ndGg9PT12b2lkIDB8fHR5cGVvZiBuLnJhbmdlTGVuZ3RoPT0ibnVtYmVyIil9c3RhdGljIGlzRnVsbChlKXtsZXQgbj1lO3JldHVybiBuIT1udWxsJiZ0eXBlb2Ygbi50ZXh0PT0ic3RyaW5nIiYmbi5yYW5nZT09PXZvaWQgMCYmbi5yYW5nZUxlbmd0aD09PXZvaWQgMH19LERpOyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGkscyxhLG8pe3JldHVybiBuZXcgb2woaSxzLGEsbyl9dC5jcmVhdGU9ZTtmdW5jdGlvbiBuKGkscyxhKXtpZihpIGluc3RhbmNlb2Ygb2wpcmV0dXJuIGkudXBkYXRlKHMsYSksaTt0aHJvdyBuZXcgRXJyb3IoIlRleHREb2N1bWVudC51cGRhdGU6IGRvY3VtZW50IG11c3QgYmUgY3JlYXRlZCBieSBUZXh0RG9jdW1lbnQuY3JlYXRlIil9dC51cGRhdGU9bjtmdW5jdGlvbiByKGkscyl7bGV0IGE9aS5nZXRUZXh0KCksbz1BaShzLm1hcChXdSksKGgsdSk9PntsZXQgZj1oLnJhbmdlLnN0YXJ0LmxpbmUtdS5yYW5nZS5zdGFydC5saW5lO3JldHVybiBmPT09MD9oLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci11LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpmfSksbD0wO2NvbnN0IGM9W107Zm9yKGNvbnN0IGggb2Ygbyl7bGV0IHU9aS5vZmZzZXRBdChoLnJhbmdlLnN0YXJ0KTtpZih1PGwpdGhyb3cgbmV3IEVycm9yKCJPdmVybGFwcGluZyBlZGl0Iik7dT5sJiZjLnB1c2goYS5zdWJzdHJpbmcobCx1KSksaC5uZXdUZXh0Lmxlbmd0aCYmYy5wdXNoKGgubmV3VGV4dCksbD1pLm9mZnNldEF0KGgucmFuZ2UuZW5kKX1yZXR1cm4gYy5wdXNoKGEuc3Vic3RyKGwpKSxjLmpvaW4oIiIpfXQuYXBwbHlFZGl0cz1yfSkoRGl8fChEaT17fSkpO2Z1bmN0aW9uIEFpKHQsZSl7aWYodC5sZW5ndGg8PTEpcmV0dXJuIHQ7Y29uc3Qgbj10Lmxlbmd0aC8yfDAscj10LnNsaWNlKDAsbiksaT10LnNsaWNlKG4pO0FpKHIsZSksQWkoaSxlKTtsZXQgcz0wLGE9MCxvPTA7Zm9yKDtzPHIubGVuZ3RoJiZhPGkubGVuZ3RoOyllKHJbc10saVthXSk8PTA/dFtvKytdPXJbcysrXTp0W28rK109aVthKytdO2Zvcig7czxyLmxlbmd0aDspdFtvKytdPXJbcysrXTtmb3IoO2E8aS5sZW5ndGg7KXRbbysrXT1pW2ErK107cmV0dXJuIHR9ZnVuY3Rpb24gbGwodCxlLG49MCl7Y29uc3Qgcj1lP1tuXTpbXTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7bGV0IHM9dC5jaGFyQ29kZUF0KGkpOyhzPT09MTN8fHM9PT0xMCkmJihzPT09MTMmJmkrMTx0Lmxlbmd0aCYmdC5jaGFyQ29kZUF0KGkrMSk9PT0xMCYmaSsrLHIucHVzaChuK2krMSkpfXJldHVybiByfWZ1bmN0aW9uIGNsKHQpe2NvbnN0IGU9dC5zdGFydCxuPXQuZW5kO3JldHVybiBlLmxpbmU+bi5saW5lfHxlLmxpbmU9PT1uLmxpbmUmJmUuY2hhcmFjdGVyPm4uY2hhcmFjdGVyP3tzdGFydDpuLGVuZDplfTp0fWZ1bmN0aW9uIFd1KHQpe2NvbnN0IGU9Y2wodC5yYW5nZSk7cmV0dXJuIGUhPT10LnJhbmdlP3tuZXdUZXh0OnQubmV3VGV4dCxyYW5nZTplfTp0fXZhciBobDsoZnVuY3Rpb24odCl7dC5MQVRFU1Q9e3RleHREb2N1bWVudDp7Y29tcGxldGlvbjp7Y29tcGxldGlvbkl0ZW06e2RvY3VtZW50YXRpb25Gb3JtYXQ6W09lLk1hcmtkb3duLE9lLlBsYWluVGV4dF19fSxob3Zlcjp7Y29udGVudEZvcm1hdDpbT2UuTWFya2Rvd24sT2UuUGxhaW5UZXh0XX19fX0pKGhsfHwoaGw9e30pKTt2YXIgRG47KGZ1bmN0aW9uKHQpe3RbdC5Vbmtub3duPTBdPSJVbmtub3duIix0W3QuRmlsZT0xXT0iRmlsZSIsdFt0LkRpcmVjdG9yeT0yXT0iRGlyZWN0b3J5Iix0W3QuU3ltYm9saWNMaW5rPTY0XT0iU3ltYm9saWNMaW5rIn0pKERufHwoRG49e30pKTt2YXIgZGw9e0U6IkVkZ2UiLEZGOiJGaXJlZm94IixTOiJTYWZhcmkiLEM6IkNocm9tZSIsSUU6IklFIixPOiJPcGVyYSJ9O2Z1bmN0aW9uIHVsKHQpe3N3aXRjaCh0KXtjYXNlImV4cGVyaW1lbnRhbCI6cmV0dXJuYOKaoO+4jyBQcm9wZXJ0eSBpcyBleHBlcmltZW50YWwuIEJlIGNhdXRpb3VzIHdoZW4gdXNpbmcgaXQu77iPCgpgO2Nhc2Uibm9uc3RhbmRhcmQiOnJldHVybmDwn5qo77iPIFByb3BlcnR5IGlzIG5vbnN0YW5kYXJkLiBBdm9pZCB1c2luZyBpdC4KCmA7Y2FzZSJvYnNvbGV0ZSI6cmV0dXJuYPCfmqjvuI/vuI/vuI8gUHJvcGVydHkgaXMgb2Jzb2xldGUuIEF2b2lkIHVzaW5nIGl0LgoKYDtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiB5dCh0LGUsbil7dmFyIHI7aWYoZT9yPXtraW5kOiJtYXJrZG93biIsdmFsdWU6VXUodCxuKX06cj17a2luZDoicGxhaW50ZXh0Iix2YWx1ZTpPdSh0LG4pfSxyLnZhbHVlIT09IiIpcmV0dXJuIHJ9ZnVuY3Rpb24gdXIodCl7cmV0dXJuIHQ9dC5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLS4hXS9nLCJcXCQmIiksdC5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiBPdSh0LGUpe2lmKCF0LmRlc2NyaXB0aW9ufHx0LmRlc2NyaXB0aW9uPT09IiIpcmV0dXJuIiI7aWYodHlwZW9mIHQuZGVzY3JpcHRpb24hPSJzdHJpbmciKXJldHVybiB0LmRlc2NyaXB0aW9uLnZhbHVlO3ZhciBuPSIiO2lmKGU/LmRvY3VtZW50YXRpb24hPT0hMSl7dC5zdGF0dXMmJihuKz11bCh0LnN0YXR1cykpLG4rPXQuZGVzY3JpcHRpb247dmFyIHI9cGwodC5icm93c2Vycyk7ciYmKG4rPWAKKGArcisiKSIpLCJzeW50YXgiaW4gdCYmKG4rPWAKClN5bnRheDogYC5jb25jYXQodC5zeW50YXgpKX1yZXR1cm4gdC5yZWZlcmVuY2VzJiZ0LnJlZmVyZW5jZXMubGVuZ3RoPjAmJmU/LnJlZmVyZW5jZXMhPT0hMSYmKG4ubGVuZ3RoPjAmJihuKz1gCgpgKSxuKz10LnJlZmVyZW5jZXMubWFwKGZ1bmN0aW9uKGkpe3JldHVybiIiLmNvbmNhdChpLm5hbWUsIjogIikuY29uY2F0KGkudXJsKX0pLmpvaW4oIiB8ICIpKSxufWZ1bmN0aW9uIFV1KHQsZSl7aWYoIXQuZGVzY3JpcHRpb258fHQuZGVzY3JpcHRpb249PT0iIilyZXR1cm4iIjt2YXIgbj0iIjtpZihlPy5kb2N1bWVudGF0aW9uIT09ITEpe3Quc3RhdHVzJiYobis9dWwodC5zdGF0dXMpKSx0eXBlb2YgdC5kZXNjcmlwdGlvbj09InN0cmluZyI/bis9dXIodC5kZXNjcmlwdGlvbik6bis9dC5kZXNjcmlwdGlvbi5raW5kPT09T2UuTWFya2Rvd24/dC5kZXNjcmlwdGlvbi52YWx1ZTp1cih0LmRlc2NyaXB0aW9uLnZhbHVlKTt2YXIgcj1wbCh0LmJyb3dzZXJzKTtyJiYobis9YAoKKGArdXIocikrIikiKSwic3ludGF4ImluIHQmJnQuc3ludGF4JiYobis9YAoKU3ludGF4OiBgLmNvbmNhdCh1cih0LnN5bnRheCkpKX1yZXR1cm4gdC5yZWZlcmVuY2VzJiZ0LnJlZmVyZW5jZXMubGVuZ3RoPjAmJmU/LnJlZmVyZW5jZXMhPT0hMSYmKG4ubGVuZ3RoPjAmJihuKz1gCgpgKSxuKz10LnJlZmVyZW5jZXMubWFwKGZ1bmN0aW9uKGkpe3JldHVybiJbIi5jb25jYXQoaS5uYW1lLCJdKCIpLmNvbmNhdChpLnVybCwiKSIpfSkuam9pbigiIHwgIikpLG59ZnVuY3Rpb24gcGwodCl7cmV0dXJuIHQ9PT12b2lkIDAmJih0PVtdKSx0Lmxlbmd0aD09PTA/bnVsbDp0Lm1hcChmdW5jdGlvbihlKXt2YXIgbj0iIixyPWUubWF0Y2goLyhbQS1aXSspKFxkKyk/LyksaT1yWzFdLHM9clsyXTtyZXR1cm4gaSBpbiBkbCYmKG4rPWRsW2ldKSxzJiYobis9IiAiK3MpLG59KS5qb2luKCIsICIpfXZhciBBbj1HZSgpLFZ1PVt7ZnVuYzoicmdiKCRyZWQsICRncmVlbiwgJGJsdWUpIixkZXNjOkFuKCJjc3MuYnVpbHRpbi5yZ2IiLCJDcmVhdGVzIGEgQ29sb3IgZnJvbSByZWQsIGdyZWVuLCBhbmQgYmx1ZSB2YWx1ZXMuIil9LHtmdW5jOiJyZ2JhKCRyZWQsICRncmVlbiwgJGJsdWUsICRhbHBoYSkiLGRlc2M6QW4oImNzcy5idWlsdGluLnJnYmEiLCJDcmVhdGVzIGEgQ29sb3IgZnJvbSByZWQsIGdyZWVuLCBibHVlLCBhbmQgYWxwaGEgdmFsdWVzLiIpfSx7ZnVuYzoiaHNsKCRodWUsICRzYXR1cmF0aW9uLCAkbGlnaHRuZXNzKSIsZGVzYzpBbigiY3NzLmJ1aWx0aW4uaHNsIiwiQ3JlYXRlcyBhIENvbG9yIGZyb20gaHVlLCBzYXR1cmF0aW9uLCBhbmQgbGlnaHRuZXNzIHZhbHVlcy4iKX0se2Z1bmM6ImhzbGEoJGh1ZSwgJHNhdHVyYXRpb24sICRsaWdodG5lc3MsICRhbHBoYSkiLGRlc2M6QW4oImNzcy5idWlsdGluLmhzbGEiLCJDcmVhdGVzIGEgQ29sb3IgZnJvbSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYW5kIGFscGhhIHZhbHVlcy4iKX0se2Z1bmM6Imh3YigkaHVlICR3aGl0ZSAkYmxhY2spIixkZXNjOkFuKCJjc3MuYnVpbHRpbi5od2IiLCJDcmVhdGVzIGEgQ29sb3IgZnJvbSBodWUsIHdoaXRlIGFuZCBibGFjay4iKX1dLHByPXthbGljZWJsdWU6IiNmMGY4ZmYiLGFudGlxdWV3aGl0ZToiI2ZhZWJkNyIsYXF1YToiIzAwZmZmZiIsYXF1YW1hcmluZToiIzdmZmZkNCIsYXp1cmU6IiNmMGZmZmYiLGJlaWdlOiIjZjVmNWRjIixiaXNxdWU6IiNmZmU0YzQiLGJsYWNrOiIjMDAwMDAwIixibGFuY2hlZGFsbW9uZDoiI2ZmZWJjZCIsYmx1ZToiIzAwMDBmZiIsYmx1ZXZpb2xldDoiIzhhMmJlMiIsYnJvd246IiNhNTJhMmEiLGJ1cmx5d29vZDoiI2RlYjg4NyIsY2FkZXRibHVlOiIjNWY5ZWEwIixjaGFydHJldXNlOiIjN2ZmZjAwIixjaG9jb2xhdGU6IiNkMjY5MWUiLGNvcmFsOiIjZmY3ZjUwIixjb3JuZmxvd2VyYmx1ZToiIzY0OTVlZCIsY29ybnNpbGs6IiNmZmY4ZGMiLGNyaW1zb246IiNkYzE0M2MiLGN5YW46IiMwMGZmZmYiLGRhcmtibHVlOiIjMDAwMDhiIixkYXJrY3lhbjoiIzAwOGI4YiIsZGFya2dvbGRlbnJvZDoiI2I4ODYwYiIsZGFya2dyYXk6IiNhOWE5YTkiLGRhcmtncmV5OiIjYTlhOWE5IixkYXJrZ3JlZW46IiMwMDY0MDAiLGRhcmtraGFraToiI2JkYjc2YiIsZGFya21hZ2VudGE6IiM4YjAwOGIiLGRhcmtvbGl2ZWdyZWVuOiIjNTU2YjJmIixkYXJrb3JhbmdlOiIjZmY4YzAwIixkYXJrb3JjaGlkOiIjOTkzMmNjIixkYXJrcmVkOiIjOGIwMDAwIixkYXJrc2FsbW9uOiIjZTk5NjdhIixkYXJrc2VhZ3JlZW46IiM4ZmJjOGYiLGRhcmtzbGF0ZWJsdWU6IiM0ODNkOGIiLGRhcmtzbGF0ZWdyYXk6IiMyZjRmNGYiLGRhcmtzbGF0ZWdyZXk6IiMyZjRmNGYiLGRhcmt0dXJxdW9pc2U6IiMwMGNlZDEiLGRhcmt2aW9sZXQ6IiM5NDAwZDMiLGRlZXBwaW5rOiIjZmYxNDkzIixkZWVwc2t5Ymx1ZToiIzAwYmZmZiIsZGltZ3JheToiIzY5Njk2OSIsZGltZ3JleToiIzY5Njk2OSIsZG9kZ2VyYmx1ZToiIzFlOTBmZiIsZmlyZWJyaWNrOiIjYjIyMjIyIixmbG9yYWx3aGl0ZToiI2ZmZmFmMCIsZm9yZXN0Z3JlZW46IiMyMjhiMjIiLGZ1Y2hzaWE6IiNmZjAwZmYiLGdhaW5zYm9ybzoiI2RjZGNkYyIsZ2hvc3R3aGl0ZToiI2Y4ZjhmZiIsZ29sZDoiI2ZmZDcwMCIsZ29sZGVucm9kOiIjZGFhNTIwIixncmF5OiIjODA4MDgwIixncmV5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsZ3JlZW55ZWxsb3c6IiNhZGZmMmYiLGhvbmV5ZGV3OiIjZjBmZmYwIixob3RwaW5rOiIjZmY2OWI0IixpbmRpYW5yZWQ6IiNjZDVjNWMiLGluZGlnbzoiIzRiMDA4MiIsaXZvcnk6IiNmZmZmZjAiLGtoYWtpOiIjZjBlNjhjIixsYXZlbmRlcjoiI2U2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiI2ZmZjBmNSIsbGF3bmdyZWVuOiIjN2NmYzAwIixsZW1vbmNoaWZmb246IiNmZmZhY2QiLGxpZ2h0Ymx1ZToiI2FkZDhlNiIsbGlnaHRjb3JhbDoiI2YwODA4MCIsbGlnaHRjeWFuOiIjZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiI2ZhZmFkMiIsbGlnaHRncmF5OiIjZDNkM2QzIixsaWdodGdyZXk6IiNkM2QzZDMiLGxpZ2h0Z3JlZW46IiM5MGVlOTAiLGxpZ2h0cGluazoiI2ZmYjZjMSIsbGlnaHRzYWxtb246IiNmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IiMyMGIyYWEiLGxpZ2h0c2t5Ymx1ZToiIzg3Y2VmYSIsbGlnaHRzbGF0ZWdyYXk6IiM3Nzg4OTkiLGxpZ2h0c2xhdGVncmV5OiIjNzc4ODk5IixsaWdodHN0ZWVsYmx1ZToiI2IwYzRkZSIsbGlnaHR5ZWxsb3c6IiNmZmZmZTAiLGxpbWU6IiMwMGZmMDAiLGxpbWVncmVlbjoiIzMyY2QzMiIsbGluZW46IiNmYWYwZTYiLG1hZ2VudGE6IiNmZjAwZmYiLG1hcm9vbjoiIzgwMDAwMCIsbWVkaXVtYXF1YW1hcmluZToiIzY2Y2RhYSIsbWVkaXVtYmx1ZToiIzAwMDBjZCIsbWVkaXVtb3JjaGlkOiIjYmE1NWQzIixtZWRpdW1wdXJwbGU6IiM5MzcwZDgiLG1lZGl1bXNlYWdyZWVuOiIjM2NiMzcxIixtZWRpdW1zbGF0ZWJsdWU6IiM3YjY4ZWUiLG1lZGl1bXNwcmluZ2dyZWVuOiIjMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IiM0OGQxY2MiLG1lZGl1bXZpb2xldHJlZDoiI2M3MTU4NSIsbWlkbmlnaHRibHVlOiIjMTkxOTcwIixtaW50Y3JlYW06IiNmNWZmZmEiLG1pc3R5cm9zZToiI2ZmZTRlMSIsbW9jY2FzaW46IiNmZmU0YjUiLG5hdmFqb3doaXRlOiIjZmZkZWFkIixuYXZ5OiIjMDAwMDgwIixvbGRsYWNlOiIjZmRmNWU2IixvbGl2ZToiIzgwODAwMCIsb2xpdmVkcmFiOiIjNmI4ZTIzIixvcmFuZ2U6IiNmZmE1MDAiLG9yYW5nZXJlZDoiI2ZmNDUwMCIsb3JjaGlkOiIjZGE3MGQ2IixwYWxlZ29sZGVucm9kOiIjZWVlOGFhIixwYWxlZ3JlZW46IiM5OGZiOTgiLHBhbGV0dXJxdW9pc2U6IiNhZmVlZWUiLHBhbGV2aW9sZXRyZWQ6IiNkODcwOTMiLHBhcGF5YXdoaXA6IiNmZmVmZDUiLHBlYWNocHVmZjoiI2ZmZGFiOSIscGVydToiI2NkODUzZiIscGluazoiI2ZmYzBjYiIscGx1bToiI2RkYTBkZCIscG93ZGVyYmx1ZToiI2IwZTBlNiIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHJlYmVjY2FwdXJwbGU6IiM2NjMzOTkiLHJvc3licm93bjoiI2JjOGY4ZiIscm95YWxibHVlOiIjNDE2OWUxIixzYWRkbGVicm93bjoiIzhiNDUxMyIsc2FsbW9uOiIjZmE4MDcyIixzYW5keWJyb3duOiIjZjRhNDYwIixzZWFncmVlbjoiIzJlOGI1NyIsc2Vhc2hlbGw6IiNmZmY1ZWUiLHNpZW5uYToiI2EwNTIyZCIsc2lsdmVyOiIjYzBjMGMwIixza3libHVlOiIjODdjZWViIixzbGF0ZWJsdWU6IiM2YTVhY2QiLHNsYXRlZ3JheToiIzcwODA5MCIsc2xhdGVncmV5OiIjNzA4MDkwIixzbm93OiIjZmZmYWZhIixzcHJpbmdncmVlbjoiIzAwZmY3ZiIsc3RlZWxibHVlOiIjNDY4MmI0Iix0YW46IiNkMmI0OGMiLHRlYWw6IiMwMDgwODAiLHRoaXN0bGU6IiNkOGJmZDgiLHRvbWF0bzoiI2ZmNjM0NyIsdHVycXVvaXNlOiIjNDBlMGQwIix2aW9sZXQ6IiNlZTgyZWUiLHdoZWF0OiIjZjVkZWIzIix3aGl0ZToiI2ZmZmZmZiIsd2hpdGVzbW9rZToiI2Y1ZjVmNSIseWVsbG93OiIjZmZmZjAwIix5ZWxsb3dncmVlbjoiIzlhY2QzMiJ9LGZsPXtjdXJyZW50Q29sb3I6IlRoZSB2YWx1ZSBvZiB0aGUgJ2NvbG9yJyBwcm9wZXJ0eS4gVGhlIGNvbXB1dGVkIHZhbHVlIG9mIHRoZSAnY3VycmVudENvbG9yJyBrZXl3b3JkIGlzIHRoZSBjb21wdXRlZCB2YWx1ZSBvZiB0aGUgJ2NvbG9yJyBwcm9wZXJ0eS4gSWYgdGhlICdjdXJyZW50Q29sb3InIGtleXdvcmQgaXMgc2V0IG9uIHRoZSAnY29sb3InIHByb3BlcnR5IGl0c2VsZiwgaXQgaXMgdHJlYXRlZCBhcyAnY29sb3I6aW5oZXJpdCcgYXQgcGFyc2UgdGltZS4iLHRyYW5zcGFyZW50OiJGdWxseSB0cmFuc3BhcmVudC4gVGhpcyBrZXl3b3JkIGNhbiBiZSBjb25zaWRlcmVkIGEgc2hvcnRoYW5kIGZvciByZ2JhKDAsMCwwLDApIHdoaWNoIGlzIGl0cyBjb21wdXRlZCB2YWx1ZS4ifTtmdW5jdGlvbiB3dCh0LGUpe3ZhciBuPXQuZ2V0VGV4dCgpLHI9bi5tYXRjaCgvXihbLStdP1swLTldKlwuP1swLTldKykoJT8pJC8pO2lmKHIpe3JbMl0mJihlPTEwMCk7dmFyIGk9cGFyc2VGbG9hdChyWzFdKS9lO2lmKGk+PTAmJmk8PTEpcmV0dXJuIGl9dGhyb3cgbmV3IEVycm9yfWZ1bmN0aW9uIG1sKHQpe3ZhciBlPXQuZ2V0VGV4dCgpLG49ZS5tYXRjaCgvXihbLStdP1swLTldKlwuP1swLTldKykoZGVnfHJhZHxncmFkfHR1cm4pPyQvKTtpZihuKXN3aXRjaChuWzJdKXtjYXNlImRlZyI6cmV0dXJuIHBhcnNlRmxvYXQoZSklMzYwO2Nhc2UicmFkIjpyZXR1cm4gcGFyc2VGbG9hdChlKSoxODAvTWF0aC5QSSUzNjA7Y2FzZSJncmFkIjpyZXR1cm4gcGFyc2VGbG9hdChlKSouOSUzNjA7Y2FzZSJ0dXJuIjpyZXR1cm4gcGFyc2VGbG9hdChlKSozNjAlMzYwO2RlZmF1bHQ6aWYodHlwZW9mIG5bMl0+InUiKXJldHVybiBwYXJzZUZsb2F0KGUpJTM2MH10aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gQnUodCl7dmFyIGU9dC5nZXROYW1lKCk7cmV0dXJuIGU/L14ocmdifHJnYmF8aHNsfGhzbGF8aHdiKSQvZ2kudGVzdChlKTohMX12YXIgZ2w9NDgscXU9NTcsanU9NjUsZnI9OTcsJHU9MTAyO2Z1bmN0aW9uIHVlKHQpe3JldHVybiB0PGdsPzA6dDw9cXU/dC1nbDoodDxmciYmKHQrPWZyLWp1KSx0Pj1mciYmdDw9JHU/dC1mcisxMDowKX1mdW5jdGlvbiBibCh0KXtpZih0WzBdIT09IiMiKXJldHVybiBudWxsO3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSA0OnJldHVybntyZWQ6dWUodC5jaGFyQ29kZUF0KDEpKSoxNy8yNTUsZ3JlZW46dWUodC5jaGFyQ29kZUF0KDIpKSoxNy8yNTUsYmx1ZTp1ZSh0LmNoYXJDb2RlQXQoMykpKjE3LzI1NSxhbHBoYToxfTtjYXNlIDU6cmV0dXJue3JlZDp1ZSh0LmNoYXJDb2RlQXQoMSkpKjE3LzI1NSxncmVlbjp1ZSh0LmNoYXJDb2RlQXQoMikpKjE3LzI1NSxibHVlOnVlKHQuY2hhckNvZGVBdCgzKSkqMTcvMjU1LGFscGhhOnVlKHQuY2hhckNvZGVBdCg0KSkqMTcvMjU1fTtjYXNlIDc6cmV0dXJue3JlZDoodWUodC5jaGFyQ29kZUF0KDEpKSoxNit1ZSh0LmNoYXJDb2RlQXQoMikpKS8yNTUsZ3JlZW46KHVlKHQuY2hhckNvZGVBdCgzKSkqMTYrdWUodC5jaGFyQ29kZUF0KDQpKSkvMjU1LGJsdWU6KHVlKHQuY2hhckNvZGVBdCg1KSkqMTYrdWUodC5jaGFyQ29kZUF0KDYpKSkvMjU1LGFscGhhOjF9O2Nhc2UgOTpyZXR1cm57cmVkOih1ZSh0LmNoYXJDb2RlQXQoMSkpKjE2K3VlKHQuY2hhckNvZGVBdCgyKSkpLzI1NSxncmVlbjoodWUodC5jaGFyQ29kZUF0KDMpKSoxNit1ZSh0LmNoYXJDb2RlQXQoNCkpKS8yNTUsYmx1ZToodWUodC5jaGFyQ29kZUF0KDUpKSoxNit1ZSh0LmNoYXJDb2RlQXQoNikpKS8yNTUsYWxwaGE6KHVlKHQuY2hhckNvZGVBdCg3KSkqMTYrdWUodC5jaGFyQ29kZUF0KDgpKSkvMjU1fX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB2bCh0LGUsbixyKXtpZihyPT09dm9pZCAwJiYocj0xKSx0PXQvNjAsZT09PTApcmV0dXJue3JlZDpuLGdyZWVuOm4sYmx1ZTpuLGFscGhhOnJ9O3ZhciBpPWZ1bmN0aW9uKG8sbCxjKXtmb3IoO2M8MDspYys9Njtmb3IoO2M+PTY7KWMtPTY7cmV0dXJuIGM8MT8obC1vKSpjK286YzwzP2w6Yzw0PyhsLW8pKig0LWMpK286b30scz1uPD0uNT9uKihlKzEpOm4rZS1uKmUsYT1uKjItcztyZXR1cm57cmVkOmkoYSxzLHQrMiksZ3JlZW46aShhLHMsdCksYmx1ZTppKGEscyx0LTIpLGFscGhhOnJ9fWZ1bmN0aW9uIHlsKHQpe3ZhciBlPXQucmVkLG49dC5ncmVlbixyPXQuYmx1ZSxpPXQuYWxwaGEscz1NYXRoLm1heChlLG4sciksYT1NYXRoLm1pbihlLG4sciksbz0wLGw9MCxjPShhK3MpLzIsaD1zLWE7aWYoaD4wKXtzd2l0Y2gobD1NYXRoLm1pbihjPD0uNT9oLygyKmMpOmgvKDItMipjKSwxKSxzKXtjYXNlIGU6bz0obi1yKS9oKyhuPHI/NjowKTticmVhaztjYXNlIG46bz0oci1lKS9oKzI7YnJlYWs7Y2FzZSByOm89KGUtbikvaCs0O2JyZWFrfW8qPTYwLG89TWF0aC5yb3VuZChvKX1yZXR1cm57aDpvLHM6bCxsOmMsYTppfX1mdW5jdGlvbiBIdSh0LGUsbixyKXtpZihyPT09dm9pZCAwJiYocj0xKSxlK24+PTEpe3ZhciBpPWUvKGUrbik7cmV0dXJue3JlZDppLGdyZWVuOmksYmx1ZTppLGFscGhhOnJ9fXZhciBzPXZsKHQsMSwuNSxyKSxhPXMucmVkO2EqPTEtZS1uLGErPWU7dmFyIG89cy5ncmVlbjtvKj0xLWUtbixvKz1lO3ZhciBsPXMuYmx1ZTtyZXR1cm4gbCo9MS1lLW4sbCs9ZSx7cmVkOmEsZ3JlZW46byxibHVlOmwsYWxwaGE6cn19ZnVuY3Rpb24gR3UodCl7dmFyIGU9eWwodCksbj1NYXRoLm1pbih0LnJlZCx0LmdyZWVuLHQuYmx1ZSkscj0xLU1hdGgubWF4KHQucmVkLHQuZ3JlZW4sdC5ibHVlKTtyZXR1cm57aDplLmgsdzpuLGI6cixhOmUuYX19ZnVuY3Rpb24gSnUodCl7aWYodC50eXBlPT09di5IZXhDb2xvclZhbHVlKXt2YXIgZT10LmdldFRleHQoKTtyZXR1cm4gYmwoZSl9ZWxzZSBpZih0LnR5cGU9PT12LkZ1bmN0aW9uKXt2YXIgbj10LHI9bi5nZXROYW1lKCksaT1uLmdldEFyZ3VtZW50cygpLmdldENoaWxkcmVuKCk7aWYoaS5sZW5ndGg9PT0xKXt2YXIgcz1pWzBdLmdldENoaWxkcmVuKCk7aWYocy5sZW5ndGg9PT0xJiZzWzBdLnR5cGU9PT12LkV4cHJlc3Npb24mJihpPXNbMF0uZ2V0Q2hpbGRyZW4oKSxpLmxlbmd0aD09PTMpKXt2YXIgYT1pWzJdO2lmKGEgaW5zdGFuY2VvZiBiaSl7dmFyIG89YS5nZXRMZWZ0KCksbD1hLmdldFJpZ2h0KCksYz1hLmdldE9wZXJhdG9yKCk7byYmbCYmYyYmYy5tYXRjaGVzKCIvIikmJihpPVtpWzBdLGlbMV0sbyxsXSl9fX1pZighcnx8aS5sZW5ndGg8M3x8aS5sZW5ndGg+NClyZXR1cm4gbnVsbDt0cnl7dmFyIGg9aS5sZW5ndGg9PT00P3d0KGlbM10sMSk6MTtpZihyPT09InJnYiJ8fHI9PT0icmdiYSIpcmV0dXJue3JlZDp3dChpWzBdLDI1NSksZ3JlZW46d3QoaVsxXSwyNTUpLGJsdWU6d3QoaVsyXSwyNTUpLGFscGhhOmh9O2lmKHI9PT0iaHNsInx8cj09PSJoc2xhIil7dmFyIHU9bWwoaVswXSksZj13dChpWzFdLDEwMCksbT13dChpWzJdLDEwMCk7cmV0dXJuIHZsKHUsZixtLGgpfWVsc2UgaWYocj09PSJod2IiKXt2YXIgdT1tbChpWzBdKSxnPXd0KGlbMV0sMTAwKSxiPXd0KGlbMl0sMTAwKTtyZXR1cm4gSHUodSxnLGIsaCl9fWNhdGNoe3JldHVybiBudWxsfX1lbHNlIGlmKHQudHlwZT09PXYuSWRlbnRpZmllcil7aWYodC5wYXJlbnQmJnQucGFyZW50LnR5cGUhPT12LlRlcm0pcmV0dXJuIG51bGw7dmFyIHk9dC5wYXJlbnQ7aWYoeSYmeS5wYXJlbnQmJnkucGFyZW50LnR5cGU9PT12LkJpbmFyeUV4cHJlc3Npb24pe3ZhciBDPXkucGFyZW50O2lmKEMucGFyZW50JiZDLnBhcmVudC50eXBlPT09di5MaXN0RW50cnkmJkMucGFyZW50LmtleT09PUMpcmV0dXJuIG51bGx9dmFyIGs9dC5nZXRUZXh0KCkudG9Mb3dlckNhc2UoKTtpZihrPT09Im5vbmUiKXJldHVybiBudWxsO3ZhciB3PXByW2tdO2lmKHcpcmV0dXJuIGJsKHcpfXJldHVybiBudWxsfXZhciB3bD17Ym90dG9tOiJDb21wdXRlcyB0byDigJgxMDAl4oCZIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgb25lIG9yIHR3byB2YWx1ZXMgYXJlIGdpdmVuLCBvdGhlcndpc2Ugc3BlY2lmaWVzIHRoZSBib3R0b20gZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIixjZW50ZXI6IkNvbXB1dGVzIHRvIOKAmDUwJeKAmSAo4oCYbGVmdCA1MCXigJkpIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpcyBub3Qgb3RoZXJ3aXNlIHNwZWNpZmllZCwgb3Ig4oCYNTAl4oCZICjigJh0b3AgNTAl4oCZKSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIGl0IGlzLiIsbGVmdDoiQ29tcHV0ZXMgdG8g4oCYMCXigJkgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgbGVmdCBlZGdlIGFzIHRoZSBvcmlnaW4gZm9yIHRoZSBuZXh0IG9mZnNldC4iLHJpZ2h0OiJDb21wdXRlcyB0byDigJgxMDAl4oCZIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIHJpZ2h0IGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiIsdG9wOiJDb21wdXRlcyB0byDigJgwJeKAmSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgdG9wIGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9LHhsPXsibm8tcmVwZWF0IjoiUGxhY2VkIG9uY2UgYW5kIG5vdCByZXBlYXRlZCBpbiB0aGlzIGRpcmVjdGlvbi4iLHJlcGVhdDoiUmVwZWF0ZWQgaW4gdGhpcyBkaXJlY3Rpb24gYXMgb2Z0ZW4gYXMgbmVlZGVkIHRvIGNvdmVyIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIiwicmVwZWF0LXgiOiJDb21wdXRlcyB0byDigJhyZXBlYXQgbm8tcmVwZWF04oCZLiIsInJlcGVhdC15IjoiQ29tcHV0ZXMgdG8g4oCYbm8tcmVwZWF0IHJlcGVhdOKAmS4iLHJvdW5kOiJSZXBlYXRlZCBhcyBvZnRlbiBhcyB3aWxsIGZpdCB3aXRoaW4gdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4gSWYgaXQgZG9lc27igJl0IGZpdCBhIHdob2xlIG51bWJlciBvZiB0aW1lcywgaXQgaXMgcmVzY2FsZWQgc28gdGhhdCBpdCBkb2VzLiIsc3BhY2U6IlJlcGVhdGVkIGFzIG9mdGVuIGFzIHdpbGwgZml0IHdpdGhpbiB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhIHdpdGhvdXQgYmVpbmcgY2xpcHBlZCBhbmQgdGhlbiB0aGUgaW1hZ2VzIGFyZSBzcGFjZWQgb3V0IHRvIGZpbGwgdGhlIGFyZWEuIn0sU2w9e2Rhc2hlZDoiQSBzZXJpZXMgb2Ygc3F1YXJlLWVuZGVkIGRhc2hlcy4iLGRvdHRlZDoiQSBzZXJpZXMgb2Ygcm91bmQgZG90cy4iLGRvdWJsZToiVHdvIHBhcmFsbGVsIHNvbGlkIGxpbmVzIHdpdGggc29tZSBzcGFjZSBiZXR3ZWVuIHRoZW0uIixncm9vdmU6Ikxvb2tzIGFzIGlmIGl0IHdlcmUgY2FydmVkIGluIHRoZSBjYW52YXMuIixoaWRkZW46IlNhbWUgYXMg4oCYbm9uZeKAmSwgYnV0IGhhcyBkaWZmZXJlbnQgYmVoYXZpb3IgaW4gdGhlIGJvcmRlciBjb25mbGljdCByZXNvbHV0aW9uIHJ1bGVzIGZvciBib3JkZXItY29sbGFwc2VkIHRhYmxlcy4iLGluc2V0OiJMb29rcyBhcyBpZiB0aGUgY29udGVudCBvbiB0aGUgaW5zaWRlIG9mIHRoZSBib3JkZXIgaXMgc3Vua2VuIGludG8gdGhlIGNhbnZhcy4iLG5vbmU6Ik5vIGJvcmRlci4gQ29sb3IgYW5kIHdpZHRoIGFyZSBpZ25vcmVkLiIsb3V0c2V0OiJMb29rcyBhcyBpZiB0aGUgY29udGVudCBvbiB0aGUgaW5zaWRlIG9mIHRoZSBib3JkZXIgaXMgY29taW5nIG91dCBvZiB0aGUgY2FudmFzLiIscmlkZ2U6Ikxvb2tzIGFzIGlmIGl0IHdlcmUgY29taW5nIG91dCBvZiB0aGUgY2FudmFzLiIsc29saWQ6IkEgc2luZ2xlIGxpbmUgc2VnbWVudC4ifSxYdT1bIm1lZGl1bSIsInRoaWNrIiwidGhpbiJdLENsPXsiYm9yZGVyLWJveCI6IlRoZSBiYWNrZ3JvdW5kIGlzIHBhaW50ZWQgd2l0aGluIChjbGlwcGVkIHRvKSB0aGUgYm9yZGVyIGJveC4iLCJjb250ZW50LWJveCI6IlRoZSBiYWNrZ3JvdW5kIGlzIHBhaW50ZWQgd2l0aGluIChjbGlwcGVkIHRvKSB0aGUgY29udGVudCBib3guIiwicGFkZGluZy1ib3giOiJUaGUgYmFja2dyb3VuZCBpcyBwYWludGVkIHdpdGhpbiAoY2xpcHBlZCB0bykgdGhlIHBhZGRpbmcgYm94LiJ9LGtsPXsibWFyZ2luLWJveCI6IlVzZXMgdGhlIG1hcmdpbiBib3ggYXMgcmVmZXJlbmNlIGJveC4iLCJmaWxsLWJveCI6IlVzZXMgdGhlIG9iamVjdCBib3VuZGluZyBib3ggYXMgcmVmZXJlbmNlIGJveC4iLCJzdHJva2UtYm94IjoiVXNlcyB0aGUgc3Ryb2tlIGJvdW5kaW5nIGJveCBhcyByZWZlcmVuY2UgYm94LiIsInZpZXctYm94IjoiVXNlcyB0aGUgbmVhcmVzdCBTVkcgdmlld3BvcnQgYXMgcmVmZXJlbmNlIGJveC4ifSxfbD17aW5pdGlhbDoiUmVwcmVzZW50cyB0aGUgdmFsdWUgc3BlY2lmaWVkIGFzIHRoZSBwcm9wZXJ0eeKAmXMgaW5pdGlhbCB2YWx1ZS4iLGluaGVyaXQ6IlJlcHJlc2VudHMgdGhlIGNvbXB1dGVkIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudOKAmXMgcGFyZW50LiIsdW5zZXQ6IkFjdHMgYXMgZWl0aGVyIGBpbmhlcml0YCBvciBgaW5pdGlhbGAsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBpbmhlcml0ZWQgb3Igbm90LiJ9LEVsPXsidmFyKCkiOiJFdmFsdWF0ZXMgdGhlIHZhbHVlIG9mIGEgY3VzdG9tIHZhcmlhYmxlLiIsImNhbGMoKSI6IkV2YWx1YXRlcyBhbiBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbi4gVGhlIGZvbGxvd2luZyBvcGVyYXRvcnMgY2FuIGJlIHVzZWQ6ICsgLSAqIC8uIn0sUmw9eyJ1cmwoKSI6IlJlZmVyZW5jZSBhbiBpbWFnZSBmaWxlIGJ5IFVSTCIsImltYWdlKCkiOiJQcm92aWRlIGltYWdlIGZhbGxiYWNrcyBhbmQgYW5ub3RhdGlvbnMuIiwiLXdlYmtpdC1pbWFnZS1zZXQoKSI6IlByb3ZpZGUgbXVsdGlwbGUgcmVzb2x1dGlvbnMuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIGltYWdlLXNldCgpIGluIGFkZGl0aW9uLiIsImltYWdlLXNldCgpIjoiUHJvdmlkZSBtdWx0aXBsZSByZXNvbHV0aW9ucyBvZiBhbiBpbWFnZSBhbmQgY29uc3QgdGhlIFVBIGRlY2lkZSB3aGljaCBpcyBtb3N0IGFwcHJvcHJpYXRlIGluIGEgZ2l2ZW4gc2l0dWF0aW9uLiIsIi1tb3otZWxlbWVudCgpIjoiVXNlIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50IGFzIGFuIGltYWdlLiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCBlbGVtZW50KCkgaW4gYWRkaXRpb24uIiwiZWxlbWVudCgpIjoiVXNlIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50IGFzIGFuIGltYWdlLiIsImNyb3NzLWZhZGUoKSI6IkluZGljYXRlcyB0aGUgdHdvIGltYWdlcyB0byBiZSBjb21iaW5lZCBhbmQgaG93IGZhciBhbG9uZyBpbiB0aGUgdHJhbnNpdGlvbiB0aGUgY29tYmluYXRpb24gaXMuIiwiLXdlYmtpdC1ncmFkaWVudCgpIjoiRGVwcmVjYXRlZC4gVXNlIG1vZGVybiBsaW5lYXItZ3JhZGllbnQoKSBvciByYWRpYWwtZ3JhZGllbnQoKSBpbnN0ZWFkLiIsIi13ZWJraXQtbGluZWFyLWdyYWRpZW50KCkiOiJMaW5lYXIgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwiLW1vei1saW5lYXItZ3JhZGllbnQoKSI6IkxpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItby1saW5lYXItZ3JhZGllbnQoKSI6IkxpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCJsaW5lYXItZ3JhZGllbnQoKSI6IkEgbGluZWFyIGdyYWRpZW50IGlzIGNyZWF0ZWQgYnkgc3BlY2lmeWluZyBhIHN0cmFpZ2h0IGdyYWRpZW50IGxpbmUsIGFuZCB0aGVuIHNldmVyYWwgY29sb3JzIHBsYWNlZCBhbG9uZyB0aGF0IGxpbmUuIiwiLXdlYmtpdC1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgTGluZWFyIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsIi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgpIjoiUmVwZWF0aW5nIExpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItby1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgTGluZWFyIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsInJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoKSI6IlNhbWUgYXMgbGluZWFyLWdyYWRpZW50LCBleGNlcHQgdGhlIGNvbG9yLXN0b3BzIGFyZSByZXBlYXRlZCBpbmZpbml0ZWx5IGluIGJvdGggZGlyZWN0aW9ucywgd2l0aCB0aGVpciBwb3NpdGlvbnMgc2hpZnRlZCBieSBtdWx0aXBsZXMgb2YgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbGFzdCBzcGVjaWZpZWQgY29sb3Itc3RvcOKAmXMgcG9zaXRpb24gYW5kIHRoZSBmaXJzdCBzcGVjaWZpZWQgY29sb3Itc3RvcOKAmXMgcG9zaXRpb24uIiwiLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoKSI6IlJhZGlhbCBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItbW96LXJhZGlhbC1ncmFkaWVudCgpIjoiUmFkaWFsIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsInJhZGlhbC1ncmFkaWVudCgpIjoiQ29sb3JzIGVtZXJnZSBmcm9tIGEgc2luZ2xlIHBvaW50IGFuZCBzbW9vdGhseSBzcHJlYWQgb3V0d2FyZCBpbiBhIGNpcmN1bGFyIG9yIGVsbGlwdGljYWwgc2hhcGUuIiwiLXdlYmtpdC1yZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgcmFkaWFsIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsIi1tb3otcmVwZWF0aW5nLXJhZGlhbC1ncmFkaWVudCgpIjoiUmVwZWF0aW5nIHJhZGlhbCBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCJyZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCkiOiJTYW1lIGFzIHJhZGlhbC1ncmFkaWVudCwgZXhjZXB0IHRoZSBjb2xvci1zdG9wcyBhcmUgcmVwZWF0ZWQgaW5maW5pdGVseSBpbiBib3RoIGRpcmVjdGlvbnMsIHdpdGggdGhlaXIgcG9zaXRpb25zIHNoaWZ0ZWQgYnkgbXVsdGlwbGVzIG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxhc3Qgc3BlY2lmaWVkIGNvbG9yLXN0b3DigJlzIHBvc2l0aW9uIGFuZCB0aGUgZmlyc3Qgc3BlY2lmaWVkIGNvbG9yLXN0b3DigJlzIHBvc2l0aW9uLiJ9LEZsPXtlYXNlOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEuMCkuIiwiZWFzZS1pbiI6IkVxdWl2YWxlbnQgdG8gY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDEuMCwgMS4wKS4iLCJlYXNlLWluLW91dCI6IkVxdWl2YWxlbnQgdG8gY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEuMCkuIiwiZWFzZS1vdXQiOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLCAwLCAwLjU4LCAxLjApLiIsbGluZWFyOiJFcXVpdmFsZW50IHRvIGN1YmljLWJlemllcigwLjAsIDAuMCwgMS4wLCAxLjApLiIsInN0ZXAtZW5kIjoiRXF1aXZhbGVudCB0byBzdGVwcygxLCBlbmQpLiIsInN0ZXAtc3RhcnQiOiJFcXVpdmFsZW50IHRvIHN0ZXBzKDEsIHN0YXJ0KS4iLCJzdGVwcygpIjoiVGhlIGZpcnN0IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBpbnRlcnZhbHMgaW4gdGhlIGZ1bmN0aW9uLiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgd2hpY2ggaXMgb3B0aW9uYWwsIGlzIGVpdGhlciB0aGUgdmFsdWUg4oCcc3RhcnTigJ0gb3Ig4oCcZW5k4oCdLiIsImN1YmljLWJlemllcigpIjoiU3BlY2lmaWVzIGEgY3ViaWMtYmV6aWVyIGN1cnZlLiBUaGUgZm91ciB2YWx1ZXMgc3BlY2lmeSBwb2ludHMgUDEgYW5kIFAyICBvZiB0aGUgY3VydmUgYXMgKHgxLCB5MSwgeDIsIHkyKS4iLCJjdWJpYy1iZXppZXIoMC42LCAtMC4yOCwgMC43MzUsIDAuMDQ1KSI6IkVhc2UtaW4gQmFjay4gT3ZlcnNob290cy4iLCJjdWJpYy1iZXppZXIoMC42OCwgLTAuNTUsIDAuMjY1LCAxLjU1KSI6IkVhc2UtaW4tb3V0IEJhY2suIE92ZXJzaG9vdHMuIiwiY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4yNzUpIjoiRWFzZS1vdXQgQmFjay4gT3ZlcnNob290cy4iLCJjdWJpYy1iZXppZXIoMC42LCAwLjA0LCAwLjk4LCAwLjMzNSkiOiJFYXNlLWluIENpcmN1bGFyLiBCYXNlZCBvbiBoYWxmIGNpcmNsZS4iLCJjdWJpYy1iZXppZXIoMC43ODUsIDAuMTM1LCAwLjE1LCAwLjg2KSI6IkVhc2UtaW4tb3V0IENpcmN1bGFyLiBCYXNlZCBvbiBoYWxmIGNpcmNsZS4iLCJjdWJpYy1iZXppZXIoMC4wNzUsIDAuODIsIDAuMTY1LCAxKSI6IkVhc2Utb3V0IENpcmN1bGFyLiBCYXNlZCBvbiBoYWxmIGNpcmNsZS4iLCJjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KSI6IkVhc2UtaW4gQ3ViaWMuIEJhc2VkIG9uIHBvd2VyIG9mIHRocmVlLiIsImN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKSI6IkVhc2UtaW4tb3V0IEN1YmljLiBCYXNlZCBvbiBwb3dlciBvZiB0aHJlZS4iLCJjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEwLCAwLjM1NSwgMSkiOiJFYXNlLW91dCBDdWJpYy4gQmFzZWQgb24gcG93ZXIgb2YgdGhyZWUuIiwiY3ViaWMtYmV6aWVyKDAuOTUsIDAuMDUsIDAuNzk1LCAwLjAzNSkiOiJFYXNlLWluIEV4cG9uZW50aWFsLiBCYXNlZCBvbiB0d28gdG8gdGhlIHBvd2VyIHRlbi4iLCJjdWJpYy1iZXppZXIoMSwgMCwgMCwgMSkiOiJFYXNlLWluLW91dCBFeHBvbmVudGlhbC4gQmFzZWQgb24gdHdvIHRvIHRoZSBwb3dlciB0ZW4uIiwiY3ViaWMtYmV6aWVyKDAuMTksIDEsIDAuMjIsIDEpIjoiRWFzZS1vdXQgRXhwb25lbnRpYWwuIEJhc2VkIG9uIHR3byB0byB0aGUgcG93ZXIgdGVuLiIsImN1YmljLWJlemllcigwLjQ3LCAwLCAwLjc0NSwgMC43MTUpIjoiRWFzZS1pbiBTaW5lLiIsImN1YmljLWJlemllcigwLjQ0NSwgMC4wNSwgMC41NSwgMC45NSkiOiJFYXNlLWluLW91dCBTaW5lLiIsImN1YmljLWJlemllcigwLjM5LCAwLjU3NSwgMC41NjUsIDEpIjoiRWFzZS1vdXQgU2luZS4iLCJjdWJpYy1iZXppZXIoMC41NSwgMC4wODUsIDAuNjgsIDAuNTMpIjoiRWFzZS1pbiBRdWFkcmF0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIHR3by4iLCJjdWJpYy1iZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSkiOiJFYXNlLWluLW91dCBRdWFkcmF0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIHR3by4iLCJjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkiOiJFYXNlLW91dCBRdWFkcmF0aWMuIEJhc2VkIG9uIHBvd2VyIG9mIHR3by4iLCJjdWJpYy1iZXppZXIoMC44OTUsIDAuMDMsIDAuNjg1LCAwLjIyKSI6IkVhc2UtaW4gUXVhcnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZm91ci4iLCJjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpIjoiRWFzZS1pbi1vdXQgUXVhcnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZm91ci4iLCJjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpIjoiRWFzZS1vdXQgUXVhcnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZm91ci4iLCJjdWJpYy1iZXppZXIoMC43NTUsIDAuMDUsIDAuODU1LCAwLjA2KSI6IkVhc2UtaW4gUXVpbnRpYy4gQmFzZWQgb24gcG93ZXIgb2YgZml2ZS4iLCJjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSkiOiJFYXNlLWluLW91dCBRdWludGljLiBCYXNlZCBvbiBwb3dlciBvZiBmaXZlLiIsImN1YmljLWJlemllcigwLjIzLCAxLCAwLjMyMCwgMSkiOiJFYXNlLW91dCBRdWludGljLiBCYXNlZCBvbiBwb3dlciBvZiBmaXZlLiJ9LERsPXsiY2lyY2xlKCkiOiJEZWZpbmVzIGEgY2lyY2xlLiIsImVsbGlwc2UoKSI6IkRlZmluZXMgYW4gZWxsaXBzZS4iLCJpbnNldCgpIjoiRGVmaW5lcyBhbiBpbnNldCByZWN0YW5nbGUuIiwicG9seWdvbigpIjoiRGVmaW5lcyBhIHBvbHlnb24uIn0sQWw9e2xlbmd0aDpbImVtIiwicmVtIiwiZXgiLCJweCIsImNtIiwibW0iLCJpbiIsInB0IiwicGMiLCJjaCIsInZ3IiwidmgiLCJ2bWluIiwidm1heCJdLGFuZ2xlOlsiZGVnIiwicmFkIiwiZ3JhZCIsInR1cm4iXSx0aW1lOlsibXMiLCJzIl0sZnJlcXVlbmN5OlsiSHoiLCJrSHoiXSxyZXNvbHV0aW9uOlsiZHBpIiwiZHBjbSIsImRwcHgiXSxwZXJjZW50YWdlOlsiJSIsImZyIl19LFl1PVsiYSIsImFiYnIiLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYiIsImJhc2UiLCJiZGkiLCJiZG8iLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNpdGUiLCJjb2RlIiwiY29sIiwiY29sZ3JvdXAiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZCIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaWFsb2ciLCJkaXYiLCJkbCIsImR0IiwiZW0iLCJlbWJlZCIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJodG1sIiwiaSIsImlmcmFtZSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwia2V5Z2VuIiwibGFiZWwiLCJsZWdlbmQiLCJsaSIsImxpbmsiLCJtYWluIiwibWFwIiwibWFyayIsIm1lbnUiLCJtZW51aXRlbSIsIm1ldGEiLCJtZXRlciIsIm5hdiIsIm5vc2NyaXB0Iiwib2JqZWN0Iiwib2wiLCJvcHRncm91cCIsIm9wdGlvbiIsIm91dHB1dCIsInAiLCJwYXJhbSIsInBpY3R1cmUiLCJwcmUiLCJwcm9ncmVzcyIsInEiLCJyYiIsInJwIiwicnQiLCJydGMiLCJydWJ5IiwicyIsInNhbXAiLCJzY3JpcHQiLCJzZWN0aW9uIiwic2VsZWN0Iiwic21hbGwiLCJzb3VyY2UiLCJzcGFuIiwic3Ryb25nIiwic3R5bGUiLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGVtcGxhdGUiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0aXRsZSIsInRyIiwidHJhY2siLCJ1IiwidWwiLCJjb25zdCIsInZpZGVvIiwid2JyIl0sS3U9WyJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZlQmxlbmQiLCJmZUNvbG9yTWF0cml4IiwiZmVDb21wb25lbnRUcmFuc2ZlciIsImZlQ29tcG9zaXRlIiwiZmVDb252b2x2ZU1hdHJpeCIsImZlRGlmZnVzZUxpZ2h0aW5nIiwiZmVEaXNwbGFjZW1lbnRNYXAiLCJmZURpc3RhbnRMaWdodCIsImZlRHJvcFNoYWRvdyIsImZlRmxvb2QiLCJmZUZ1bmNBIiwiZmVGdW5jQiIsImZlRnVuY0ciLCJmZUZ1bmNSIiwiZmVHYXVzc2lhbkJsdXIiLCJmZUltYWdlIiwiZmVNZXJnZSIsImZlTWVyZ2VOb2RlIiwiZmVNb3JwaG9sb2d5IiwiZmVPZmZzZXQiLCJmZVBvaW50TGlnaHQiLCJmZVNwZWN1bGFyTGlnaHRpbmciLCJmZVNwb3RMaWdodCIsImZlVGlsZSIsImZlVHVyYnVsZW5jZSIsImZpbHRlciIsImZvcmVpZ25PYmplY3QiLCJnIiwiaGF0Y2giLCJoYXRjaHBhdGgiLCJpbWFnZSIsImxpbmUiLCJsaW5lYXJHcmFkaWVudCIsIm1hcmtlciIsIm1hc2siLCJtZXNoIiwibWVzaHBhdGNoIiwibWVzaHJvdyIsIm1ldGFkYXRhIiwibXBhdGgiLCJwYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbEdyYWRpZW50IiwicmVjdCIsInNldCIsInNvbGlkY29sb3IiLCJzdG9wIiwic3ZnIiwic3dpdGNoIiwic3ltYm9sIiwidGV4dCIsInRleHRQYXRoIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Il0sUXU9WyJAYm90dG9tLWNlbnRlciIsIkBib3R0b20tbGVmdCIsIkBib3R0b20tbGVmdC1jb3JuZXIiLCJAYm90dG9tLXJpZ2h0IiwiQGJvdHRvbS1yaWdodC1jb3JuZXIiLCJAbGVmdC1ib3R0b20iLCJAbGVmdC1taWRkbGUiLCJAbGVmdC10b3AiLCJAcmlnaHQtYm90dG9tIiwiQHJpZ2h0LW1pZGRsZSIsIkByaWdodC10b3AiLCJAdG9wLWNlbnRlciIsIkB0b3AtbGVmdCIsIkB0b3AtbGVmdC1jb3JuZXIiLCJAdG9wLXJpZ2h0IiwiQHRvcC1yaWdodC1jb3JuZXIiXTtmdW5jdGlvbiBtcih0KXtyZXR1cm4gT2JqZWN0LmtleXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9ZnVuY3Rpb24gVWUodCl7cmV0dXJuIHR5cGVvZiB0PCJ1In12YXIgTmw9ZnVuY3Rpb24odCxlLG4pe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yKWZvcih2YXIgcj0wLGk9ZS5sZW5ndGgscztyPGk7cisrKShzfHwhKHIgaW4gZSkpJiYoc3x8KHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwwLHIpKSxzW3JdPWVbcl0pO3JldHVybiB0LmNvbmNhdChzfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSl9LE5pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtlPT09dm9pZCAwJiYoZT1uZXcgdm4pLHRoaXMua2V5ZnJhbWVSZWdleD0vXkAoXC0od2Via2l0fG1zfG1venxvKVwtKT9rZXlmcmFtZXMkL2ksdGhpcy5zY2FubmVyPWUsdGhpcy50b2tlbj17dHlwZTpwLkVPRixvZmZzZXQ6LTEsbGVuOjAsdGV4dDoiIn0sdGhpcy5wcmV2VG9rZW49dm9pZCAwfXJldHVybiB0LnByb3RvdHlwZS5wZWVrSWRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHAuSWRlbnQ9PT10aGlzLnRva2VuLnR5cGUmJmUubGVuZ3RoPT09dGhpcy50b2tlbi50ZXh0Lmxlbmd0aCYmZT09PXRoaXMudG9rZW4udGV4dC50b0xvd2VyQ2FzZSgpfSx0LnByb3RvdHlwZS5wZWVrS2V5d29yZD1mdW5jdGlvbihlKXtyZXR1cm4gcC5BdEtleXdvcmQ9PT10aGlzLnRva2VuLnR5cGUmJmUubGVuZ3RoPT09dGhpcy50b2tlbi50ZXh0Lmxlbmd0aCYmZT09PXRoaXMudG9rZW4udGV4dC50b0xvd2VyQ2FzZSgpfSx0LnByb3RvdHlwZS5wZWVrRGVsaW09ZnVuY3Rpb24oZSl7cmV0dXJuIHAuRGVsaW09PT10aGlzLnRva2VuLnR5cGUmJmU9PT10aGlzLnRva2VuLnRleHR9LHQucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10aGlzLnRva2VuLnR5cGV9LHQucHJvdG90eXBlLnBlZWtPbmU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGUuaW5kZXhPZih0aGlzLnRva2VuLnR5cGUpIT09LTF9LHQucHJvdG90eXBlLnBlZWtSZWdFeHA9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZSE9PXRoaXMudG9rZW4udHlwZT8hMTpuLnRlc3QodGhpcy50b2tlbi50ZXh0KX0sdC5wcm90b3R5cGUuaGFzV2hpdGVzcGFjZT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5wcmV2VG9rZW4mJnRoaXMucHJldlRva2VuLm9mZnNldCt0aGlzLnByZXZUb2tlbi5sZW4hPT10aGlzLnRva2VuLm9mZnNldH0sdC5wcm90b3R5cGUuY29uc3VtZVRva2VuPWZ1bmN0aW9uKCl7dGhpcy5wcmV2VG9rZW49dGhpcy50b2tlbix0aGlzLnRva2VuPXRoaXMuc2Nhbm5lci5zY2FuKCl9LHQucHJvdG90eXBlLmFjY2VwdFVuaWNvZGVSYW5nZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Nhbm5lci50cnlTY2FuVW5pY29kZSgpO3JldHVybiBlPyh0aGlzLnByZXZUb2tlbj1lLHRoaXMudG9rZW49dGhpcy5zY2FubmVyLnNjYW4oKSwhMCk6ITF9LHQucHJvdG90eXBlLm1hcms9ZnVuY3Rpb24oKXtyZXR1cm57cHJldjp0aGlzLnByZXZUb2tlbixjdXJyOnRoaXMudG9rZW4scG9zOnRoaXMuc2Nhbm5lci5wb3MoKX19LHQucHJvdG90eXBlLnJlc3RvcmVBdE1hcms9ZnVuY3Rpb24oZSl7dGhpcy5wcmV2VG9rZW49ZS5wcmV2LHRoaXMudG9rZW49ZS5jdXJyLHRoaXMuc2Nhbm5lci5nb0JhY2tUbyhlLnBvcyl9LHQucHJvdG90eXBlLnRyeT1mdW5jdGlvbihlKXt2YXIgbj10aGlzLm1hcmsoKSxyPWUoKTtyZXR1cm4gcnx8KHRoaXMucmVzdG9yZUF0TWFyayhuKSxudWxsKX0sdC5wcm90b3R5cGUuYWNjZXB0T25lS2V5d29yZD1mdW5jdGlvbihlKXtpZihwLkF0S2V5d29yZD09PXRoaXMudG9rZW4udHlwZSlmb3IodmFyIG49MCxyPWU7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07aWYoaS5sZW5ndGg9PT10aGlzLnRva2VuLnRleHQubGVuZ3RoJiZpPT09dGhpcy50b2tlbi50ZXh0LnRvTG93ZXJDYXNlKCkpcmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmFjY2VwdD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXRoaXMudG9rZW4udHlwZT8odGhpcy5jb25zdW1lVG9rZW4oKSwhMCk6ITF9LHQucHJvdG90eXBlLmFjY2VwdElkZW50PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnBlZWtJZGVudChlKT8odGhpcy5jb25zdW1lVG9rZW4oKSwhMCk6ITF9LHQucHJvdG90eXBlLmFjY2VwdEtleXdvcmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGVla0tleXdvcmQoZSk/KHRoaXMuY29uc3VtZVRva2VuKCksITApOiExfSx0LnByb3RvdHlwZS5hY2NlcHREZWxpbT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wZWVrRGVsaW0oZSk/KHRoaXMuY29uc3VtZVRva2VuKCksITApOiExfSx0LnByb3RvdHlwZS5hY2NlcHRSZWdleHA9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGVzdCh0aGlzLnRva2VuLnRleHQpPyh0aGlzLmNvbnN1bWVUb2tlbigpLCEwKTohMX0sdC5wcm90b3R5cGUuX3BhcnNlUmVnZXhwPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuY3JlYXRlTm9kZSh2LklkZW50aWZpZXIpO2RvO3doaWxlKHRoaXMuYWNjZXB0UmVnZXhwKGUpKTtyZXR1cm4gdGhpcy5maW5pc2gobil9LHQucHJvdG90eXBlLmFjY2VwdFVucXVvdGVkU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zY2FubmVyLnBvcygpO3RoaXMuc2Nhbm5lci5nb0JhY2tUbyh0aGlzLnRva2VuLm9mZnNldCk7dmFyIG49dGhpcy5zY2FubmVyLnNjYW5VbnF1b3RlZFN0cmluZygpO3JldHVybiBuPyh0aGlzLnRva2VuPW4sdGhpcy5jb25zdW1lVG9rZW4oKSwhMCk6KHRoaXMuc2Nhbm5lci5nb0JhY2tUbyhlKSwhMSl9LHQucHJvdG90eXBlLnJlc3luYz1mdW5jdGlvbihlLG4pe2Zvcig7Oyl7aWYoZSYmZS5pbmRleE9mKHRoaXMudG9rZW4udHlwZSkhPT0tMSlyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhMDtpZihuJiZuLmluZGV4T2YodGhpcy50b2tlbi50eXBlKSE9PS0xKXJldHVybiEwO2lmKHRoaXMudG9rZW4udHlwZT09PXAuRU9GKXJldHVybiExO3RoaXMudG9rZW49dGhpcy5zY2FubmVyLnNjYW4oKX19LHQucHJvdG90eXBlLmNyZWF0ZU5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBVKHRoaXMudG9rZW4ub2Zmc2V0LHRoaXMudG9rZW4ubGVuLGUpfSx0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBlKHRoaXMudG9rZW4ub2Zmc2V0LHRoaXMudG9rZW4ubGVuKX0sdC5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUsbixyLGkpe2lmKCEoZSBpbnN0YW5jZW9mIGtlKSYmKG4mJnRoaXMubWFya0Vycm9yKGUsbixyLGkpLHRoaXMucHJldlRva2VuKSl7dmFyIHM9dGhpcy5wcmV2VG9rZW4ub2Zmc2V0K3RoaXMucHJldlRva2VuLmxlbjtlLmxlbmd0aD1zPmUub2Zmc2V0P3MtZS5vZmZzZXQ6MH1yZXR1cm4gZX0sdC5wcm90b3R5cGUubWFya0Vycm9yPWZ1bmN0aW9uKGUsbixyLGkpe3RoaXMudG9rZW4hPT10aGlzLmxhc3RFcnJvclRva2VuJiYoZS5hZGRJc3N1ZShuZXcgem8oZSxuLFBlLkVycm9yLHZvaWQgMCx0aGlzLnRva2VuLm9mZnNldCx0aGlzLnRva2VuLmxlbikpLHRoaXMubGFzdEVycm9yVG9rZW49dGhpcy50b2tlbiksKHJ8fGkpJiZ0aGlzLnJlc3luYyhyLGkpfSx0LnByb3RvdHlwZS5wYXJzZVN0eWxlc2hlZXQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS52ZXJzaW9uLHI9ZS5nZXRUZXh0KCksaT1mdW5jdGlvbihzLGEpe2lmKGUudmVyc2lvbiE9PW4pdGhyb3cgbmV3IEVycm9yKCJVbmRlcmx5aW5nIG1vZGVsIGhhcyBjaGFuZ2VkLCBBU1QgaXMgbm8gbG9uZ2VyIHZhbGlkIik7cmV0dXJuIHIuc3Vic3RyKHMsYSl9O3JldHVybiB0aGlzLmludGVybmFsUGFyc2Uocix0aGlzLl9wYXJzZVN0eWxlc2hlZXQsaSl9LHQucHJvdG90eXBlLmludGVybmFsUGFyc2U9ZnVuY3Rpb24oZSxuLHIpe3RoaXMuc2Nhbm5lci5zZXRTb3VyY2UoZSksdGhpcy50b2tlbj10aGlzLnNjYW5uZXIuc2NhbigpO3ZhciBpPW4uYmluZCh0aGlzKSgpO3JldHVybiBpJiYocj9pLnRleHRQcm92aWRlcj1yOmkudGV4dFByb3ZpZGVyPWZ1bmN0aW9uKHMsYSl7cmV0dXJuIGUuc3Vic3RyKHMsYSl9KSxpfSx0LnByb3RvdHlwZS5fcGFyc2VTdHlsZXNoZWV0PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuY3JlYXRlKHJ1KTtlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXJ0KCkpOyk7dmFyIG49ITE7ZG97dmFyIHI9ITE7ZG97cj0hMTt2YXIgaT10aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoKTtmb3IoaSYmKGUuYWRkQ2hpbGQoaSkscj0hMCxuPSExLCF0aGlzLnBlZWsocC5FT0YpJiZ0aGlzLl9uZWVkc1NlbWljb2xvbkFmdGVyKGkpJiYhdGhpcy5hY2NlcHQocC5TZW1pQ29sb24pJiZ0aGlzLm1hcmtFcnJvcihlLFMuU2VtaUNvbG9uRXhwZWN0ZWQpKTt0aGlzLmFjY2VwdChwLlNlbWlDb2xvbil8fHRoaXMuYWNjZXB0KHAuQ0RPKXx8dGhpcy5hY2NlcHQocC5DREMpOylyPSEwLG49ITF9d2hpbGUocik7aWYodGhpcy5wZWVrKHAuRU9GKSlicmVhaztufHwodGhpcy5wZWVrKHAuQXRLZXl3b3JkKT90aGlzLm1hcmtFcnJvcihlLFMuVW5rbm93bkF0UnVsZSk6dGhpcy5tYXJrRXJyb3IoZSxTLlJ1bGVPclNlbGVjdG9yRXhwZWN0ZWQpLG49ITApLHRoaXMuY29uc3VtZVRva2VuKCl9d2hpbGUoIXRoaXMucGVlayhwLkVPRikpO3JldHVybiB0aGlzLmZpbmlzaChlKX0sdC5wcm90b3R5cGUuX3BhcnNlU3R5bGVzaGVldFN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlQ2hhcnNldCgpfSx0LnByb3RvdHlwZS5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0hMSksdGhpcy5wZWVrKHAuQXRLZXl3b3JkKT90aGlzLl9wYXJzZVN0eWxlc2hlZXRBdFN0YXRlbWVudChlKTp0aGlzLl9wYXJzZVJ1bGVzZXQoZSl9LHQucHJvdG90eXBlLl9wYXJzZVN0eWxlc2hlZXRBdFN0YXRlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9ITEpLHRoaXMuX3BhcnNlSW1wb3J0KCl8fHRoaXMuX3BhcnNlTWVkaWEoZSl8fHRoaXMuX3BhcnNlUGFnZSgpfHx0aGlzLl9wYXJzZUZvbnRGYWNlKCl8fHRoaXMuX3BhcnNlS2V5ZnJhbWUoKXx8dGhpcy5fcGFyc2VTdXBwb3J0cyhlKXx8dGhpcy5fcGFyc2VWaWV3UG9ydCgpfHx0aGlzLl9wYXJzZU5hbWVzcGFjZSgpfHx0aGlzLl9wYXJzZURvY3VtZW50KCl8fHRoaXMuX3BhcnNlVW5rbm93bkF0UnVsZSgpfSx0LnByb3RvdHlwZS5fdHJ5UGFyc2VSdWxlc2V0PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMubWFyaygpO2lmKHRoaXMuX3BhcnNlU2VsZWN0b3IoZSkpe2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSkmJnRoaXMuX3BhcnNlU2VsZWN0b3IoZSk7KTtpZih0aGlzLmFjY2VwdChwLkN1cmx5TCkpcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayhuKSx0aGlzLl9wYXJzZVJ1bGVzZXQoZSl9cmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayhuKSxudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VSdWxlc2V0PWZ1bmN0aW9uKGUpe2U9PT12b2lkIDAmJihlPSExKTt2YXIgbj10aGlzLmNyZWF0ZShKdCkscj1uLmdldFNlbGVjdG9ycygpO2lmKCFyLmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3IoZSkpKXJldHVybiBudWxsO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSk7KWlmKCFyLmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3IoZSkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuU2VsZWN0b3JFeHBlY3RlZCk7cmV0dXJuIHRoaXMuX3BhcnNlQm9keShuLHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpfSx0LnByb3RvdHlwZS5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb25BdFN0YXRlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZVVua25vd25BdFJ1bGUoKX0sdC5wcm90b3R5cGUuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb25BdFN0YXRlbWVudCgpOnRoaXMuX3BhcnNlRGVjbGFyYXRpb24oKX0sdC5wcm90b3R5cGUuX25lZWRzU2VtaWNvbG9uQWZ0ZXI9ZnVuY3Rpb24oZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSB2LktleWZyYW1lOmNhc2Ugdi5WaWV3UG9ydDpjYXNlIHYuTWVkaWE6Y2FzZSB2LlJ1bGVzZXQ6Y2FzZSB2Lk5hbWVzcGFjZTpjYXNlIHYuSWY6Y2FzZSB2LkZvcjpjYXNlIHYuRWFjaDpjYXNlIHYuV2hpbGU6Y2FzZSB2Lk1peGluRGVjbGFyYXRpb246Y2FzZSB2LkZ1bmN0aW9uRGVjbGFyYXRpb246Y2FzZSB2Lk1peGluQ29udGVudERlY2xhcmF0aW9uOnJldHVybiExO2Nhc2Ugdi5FeHRlbmRzUmVmZXJlbmNlOmNhc2Ugdi5NaXhpbkNvbnRlbnRSZWZlcmVuY2U6Y2FzZSB2LlJldHVyblN0YXRlbWVudDpjYXNlIHYuTWVkaWFRdWVyeTpjYXNlIHYuRGVidWc6Y2FzZSB2LkltcG9ydDpjYXNlIHYuQXRBcHBseVJ1bGU6Y2FzZSB2LkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb246cmV0dXJuITA7Y2FzZSB2LlZhcmlhYmxlRGVjbGFyYXRpb246cmV0dXJuIGUubmVlZHNTZW1pY29sb247Y2FzZSB2Lk1peGluUmVmZXJlbmNlOnJldHVybiFlLmdldENvbnRlbnQoKTtjYXNlIHYuRGVjbGFyYXRpb246cmV0dXJuIWUuZ2V0TmVzdGVkUHJvcGVydGllcygpfXJldHVybiExfSx0LnByb3RvdHlwZS5fcGFyc2VEZWNsYXJhdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5jcmVhdGUodWkpO2lmKCF0aGlzLmFjY2VwdChwLkN1cmx5TCkpcmV0dXJuIG51bGw7Zm9yKHZhciByPWUoKTtuLmFkZENoaWxkKHIpJiYhdGhpcy5wZWVrKHAuQ3VybHlSKTspe2lmKHRoaXMuX25lZWRzU2VtaWNvbG9uQWZ0ZXIocikmJiF0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5TZW1pQ29sb25FeHBlY3RlZCxbcC5TZW1pQ29sb24scC5DdXJseVJdKTtmb3IociYmdGhpcy5wcmV2VG9rZW4mJnRoaXMucHJldlRva2VuLnR5cGU9PT1wLlNlbWlDb2xvbiYmKHIuc2VtaWNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KTt0aGlzLmFjY2VwdChwLlNlbWlDb2xvbik7KTtyPWUoKX1yZXR1cm4gdGhpcy5hY2NlcHQocC5DdXJseVIpP3RoaXMuZmluaXNoKG4pOnRoaXMuZmluaXNoKG4sUy5SaWdodEN1cmx5RXhwZWN0ZWQsW3AuQ3VybHlSLHAuU2VtaUNvbG9uXSl9LHQucHJvdG90eXBlLl9wYXJzZUJvZHk9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5zZXREZWNsYXJhdGlvbnModGhpcy5fcGFyc2VEZWNsYXJhdGlvbnMobikpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsUy5MZWZ0Q3VybHlFeHBlY3RlZCxbcC5DdXJseVIscC5TZW1pQ29sb25dKX0sdC5wcm90b3R5cGUuX3BhcnNlU2VsZWN0b3I9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5jcmVhdGUoeW4pLHI9ITE7Zm9yKGUmJihyPW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VDb21iaW5hdG9yKCkpKTtuLmFkZENoaWxkKHRoaXMuX3BhcnNlU2ltcGxlU2VsZWN0b3IoKSk7KXI9ITAsbi5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbWJpbmF0b3IoKSk7cmV0dXJuIHI/dGhpcy5maW5pc2gobik6bnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlRGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5fdHJ5UGFyc2VDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGUpO2lmKG4pcmV0dXJuIG47dmFyIHI9dGhpcy5jcmVhdGUoWmUpO3JldHVybiByLnNldFByb3BlcnR5KHRoaXMuX3BhcnNlUHJvcGVydHkoKSk/dGhpcy5hY2NlcHQocC5Db2xvbik/KHRoaXMucHJldlRva2VuJiYoci5jb2xvblBvc2l0aW9uPXRoaXMucHJldlRva2VuLm9mZnNldCksci5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoKSk/KHIuYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLHRoaXMucGVlayhwLlNlbWlDb2xvbikmJihyLnNlbWljb2xvblBvc2l0aW9uPXRoaXMudG9rZW4ub2Zmc2V0KSx0aGlzLmZpbmlzaChyKSk6dGhpcy5maW5pc2gocixTLlByb3BlcnR5VmFsdWVFeHBlY3RlZCkpOnRoaXMuZmluaXNoKHIsUy5Db2xvbkV4cGVjdGVkLFtwLkNvbG9uXSxlfHxbcC5TZW1pQ29sb25dKTpudWxsfSx0LnByb3RvdHlwZS5fdHJ5UGFyc2VDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLnBlZWtSZWdFeHAocC5JZGVudCwvXi0tLykpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5jcmVhdGUoc3UpO2lmKCFuLnNldFByb3BlcnR5KHRoaXMuX3BhcnNlUHJvcGVydHkoKSkpcmV0dXJuIG51bGw7aWYoIXRoaXMuYWNjZXB0KHAuQ29sb24pKXJldHVybiB0aGlzLmZpbmlzaChuLFMuQ29sb25FeHBlY3RlZCxbcC5Db2xvbl0pO3RoaXMucHJldlRva2VuJiYobi5jb2xvblBvc2l0aW9uPXRoaXMucHJldlRva2VuLm9mZnNldCk7dmFyIHI9dGhpcy5tYXJrKCk7aWYodGhpcy5wZWVrKHAuQ3VybHlMKSl7dmFyIGk9dGhpcy5jcmVhdGUoaXUpLHM9dGhpcy5fcGFyc2VEZWNsYXJhdGlvbnModGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSk7aWYoaS5zZXREZWNsYXJhdGlvbnMocykmJiFzLmlzRXJyb25lb3VzKCEwKSYmKGkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLHRoaXMucGVlayhwLlNlbWlDb2xvbikpKXJldHVybiB0aGlzLmZpbmlzaChpKSxuLnNldFByb3BlcnR5U2V0KGkpLG4uc2VtaWNvbG9uUG9zaXRpb249dGhpcy50b2tlbi5vZmZzZXQsdGhpcy5maW5pc2gobik7dGhpcy5yZXN0b3JlQXRNYXJrKHIpfXZhciBhPXRoaXMuX3BhcnNlRXhwcigpO3JldHVybiBhJiYhYS5pc0Vycm9uZW91cyghMCkmJih0aGlzLl9wYXJzZVByaW8oKSx0aGlzLnBlZWtPbmUuYXBwbHkodGhpcyxObChObChbXSxlfHxbXSwhMSksW3AuU2VtaUNvbG9uLHAuRU9GXSwhMSkpKT8obi5zZXRWYWx1ZShhKSx0aGlzLnBlZWsocC5TZW1pQ29sb24pJiYobi5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnRva2VuLm9mZnNldCksdGhpcy5maW5pc2gobikpOih0aGlzLnJlc3RvcmVBdE1hcmsociksbi5hZGRDaGlsZCh0aGlzLl9wYXJzZUN1c3RvbVByb3BlcnR5VmFsdWUoZSkpLG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLFVlKG4uY29sb25Qb3NpdGlvbikmJnRoaXMudG9rZW4ub2Zmc2V0PT09bi5jb2xvblBvc2l0aW9uKzE/dGhpcy5maW5pc2gobixTLlByb3BlcnR5VmFsdWVFeHBlY3RlZCk6dGhpcy5maW5pc2gobikpfSx0LnByb3RvdHlwZS5fcGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7ZT09PXZvaWQgMCYmKGU9W3AuQ3VybHlSXSk7dmFyIHI9dGhpcy5jcmVhdGUoVSksaT1mdW5jdGlvbigpe3JldHVybiBhPT09MCYmbz09PTAmJmw9PT0wfSxzPWZ1bmN0aW9uKCl7cmV0dXJuIGUuaW5kZXhPZihuLnRva2VuLnR5cGUpIT09LTF9LGE9MCxvPTAsbD0wO2U6Zm9yKDs7KXtzd2l0Y2godGhpcy50b2tlbi50eXBlKXtjYXNlIHAuU2VtaUNvbG9uOmlmKGkoKSlicmVhayBlO2JyZWFrO2Nhc2UgcC5FeGNsYW1hdGlvbjppZihpKCkpYnJlYWsgZTticmVhaztjYXNlIHAuQ3VybHlMOmErKzticmVhaztjYXNlIHAuQ3VybHlSOmlmKGEtLSxhPDApe2lmKHMoKSYmbz09PTAmJmw9PT0wKWJyZWFrIGU7cmV0dXJuIHRoaXMuZmluaXNoKHIsUy5MZWZ0Q3VybHlFeHBlY3RlZCl9YnJlYWs7Y2FzZSBwLlBhcmVudGhlc2lzTDpvKys7YnJlYWs7Y2FzZSBwLlBhcmVudGhlc2lzUjppZihvLS0sbzwwKXtpZihzKCkmJmw9PT0wJiZhPT09MClicmVhayBlO3JldHVybiB0aGlzLmZpbmlzaChyLFMuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQpfWJyZWFrO2Nhc2UgcC5CcmFja2V0TDpsKys7YnJlYWs7Y2FzZSBwLkJyYWNrZXRSOmlmKGwtLSxsPDApcmV0dXJuIHRoaXMuZmluaXNoKHIsUy5MZWZ0U3F1YXJlQnJhY2tldEV4cGVjdGVkKTticmVhaztjYXNlIHAuQmFkU3RyaW5nOmJyZWFrIGU7Y2FzZSBwLkVPRjp2YXIgYz1TLlJpZ2h0Q3VybHlFeHBlY3RlZDtyZXR1cm4gbD4wP2M9Uy5SaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZDpvPjAmJihjPVMuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKSx0aGlzLmZpbmlzaChyLGMpfXRoaXMuY29uc3VtZVRva2VuKCl9cmV0dXJuIHRoaXMuZmluaXNoKHIpfSx0LnByb3RvdHlwZS5fdHJ5VG9QYXJzZURlY2xhcmF0aW9uPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMubWFyaygpO3JldHVybiB0aGlzLl9wYXJzZVByb3BlcnR5KCkmJnRoaXMuYWNjZXB0KHAuQ29sb24pPyh0aGlzLnJlc3RvcmVBdE1hcmsobiksdGhpcy5fcGFyc2VEZWNsYXJhdGlvbihlKSk6KHRoaXMucmVzdG9yZUF0TWFyayhuKSxudWxsKX0sdC5wcm90b3R5cGUuX3BhcnNlUHJvcGVydHk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShmaSksbj10aGlzLm1hcmsoKTtyZXR1cm4odGhpcy5hY2NlcHREZWxpbSgiKiIpfHx0aGlzLmFjY2VwdERlbGltKCJfIikpJiZ0aGlzLmhhc1doaXRlc3BhY2UoKT8odGhpcy5yZXN0b3JlQXRNYXJrKG4pLG51bGwpOmUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZVByb3BlcnR5SWRlbnRpZmllcigpKT90aGlzLmZpbmlzaChlKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VQcm9wZXJ0eUlkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJZGVudCgpfSx0LnByb3RvdHlwZS5fcGFyc2VDaGFyc2V0PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhwLkNoYXJzZXQpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKFUpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0KHAuU3RyaW5nKT90aGlzLmFjY2VwdChwLlNlbWlDb2xvbik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxTLlNlbWlDb2xvbkV4cGVjdGVkKTp0aGlzLmZpbmlzaChlLFMuSWRlbnRpZmllckV4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlSW1wb3J0PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBpbXBvcnQiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShtaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSk/dGhpcy5maW5pc2goZSxTLlVSSU9yU3RyaW5nRXhwZWN0ZWQpOighdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmIXRoaXMucGVlayhwLkVPRikmJmUuc2V0TWVkaWFsaXN0KHRoaXMuX3BhcnNlTWVkaWFRdWVyeUxpc3QoKSksdGhpcy5maW5pc2goZSkpfSx0LnByb3RvdHlwZS5fcGFyc2VOYW1lc3BhY2U9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQG5hbWVzcGFjZSIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKGJ1KTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKSkmJihlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSksIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSkpP3RoaXMuZmluaXNoKGUsUy5VUklFeHBlY3RlZCxbcC5TZW1pQ29sb25dKTp0aGlzLmFjY2VwdChwLlNlbWlDb2xvbik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxTLlNlbWlDb2xvbkV4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlRm9udEZhY2U9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGZvbnQtZmFjZSIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKENvKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX0sdC5wcm90b3R5cGUuX3BhcnNlVmlld1BvcnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQC1tcy12aWV3cG9ydCIpJiYhdGhpcy5wZWVrS2V5d29yZCgiQC1vLXZpZXdwb3J0IikmJiF0aGlzLnBlZWtLZXl3b3JkKCJAdmlld3BvcnQiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZSh1dSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSl9LHQucHJvdG90eXBlLl9wYXJzZUtleWZyYW1lPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla1JlZ0V4cChwLkF0S2V5d29yZCx0aGlzLmtleWZyYW1lUmVnZXgpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKF9vKSxuPXRoaXMuY3JlYXRlKFUpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuc2V0S2V5d29yZCh0aGlzLmZpbmlzaChuKSksbi5tYXRjaGVzKCJALW1zLWtleWZyYW1lcyIpJiZ0aGlzLm1hcmtFcnJvcihuLFMuVW5rbm93bktleXdvcmQpLGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUtleWZyYW1lSWRlbnQoKSk/dGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VLZXlmcmFtZVNlbGVjdG9yLmJpbmQodGhpcykpOnRoaXMuZmluaXNoKGUsUy5JZGVudGlmaWVyRXhwZWN0ZWQsW3AuQ3VybHlSXSl9LHQucHJvdG90eXBlLl9wYXJzZUtleWZyYW1lSWRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJZGVudChbWi5LZXlmcmFtZV0pfSx0LnByb3RvdHlwZS5fcGFyc2VLZXlmcmFtZVNlbGVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoRW8pO2lmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkmJiF0aGlzLmFjY2VwdChwLlBlcmNlbnRhZ2UpKXJldHVybiBudWxsO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSk7KWlmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkmJiF0aGlzLmFjY2VwdChwLlBlcmNlbnRhZ2UpKXJldHVybiB0aGlzLmZpbmlzaChlLFMuUGVyY2VudGFnZUV4cGVjdGVkKTtyZXR1cm4gdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSl9LHQucHJvdG90eXBlLl90cnlQYXJzZUtleWZyYW1lU2VsZWN0b3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShFbyksbj10aGlzLm1hcmsoKTtpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpJiYhdGhpcy5hY2NlcHQocC5QZXJjZW50YWdlKSlyZXR1cm4gbnVsbDtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpJiYhdGhpcy5hY2NlcHQocC5QZXJjZW50YWdlKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKG4pLG51bGw7cmV0dXJuIHRoaXMucGVlayhwLkN1cmx5TCk/dGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSk6KHRoaXMucmVzdG9yZUF0TWFyayhuKSxudWxsKX0sdC5wcm90b3R5cGUuX3BhcnNlU3VwcG9ydHM9ZnVuY3Rpb24oZSl7aWYoZT09PXZvaWQgMCYmKGU9ITEpLCF0aGlzLnBlZWtLZXl3b3JkKCJAc3VwcG9ydHMiKSlyZXR1cm4gbnVsbDt2YXIgbj10aGlzLmNyZWF0ZShnaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uKCkpLHRoaXMuX3BhcnNlQm9keShuLHRoaXMuX3BhcnNlU3VwcG9ydHNEZWNsYXJhdGlvbi5iaW5kKHRoaXMsZSkpfSx0LnByb3RvdHlwZS5fcGFyc2VTdXBwb3J0c0RlY2xhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0hMSksZT90aGlzLl90cnlQYXJzZVJ1bGVzZXQoITApfHx0aGlzLl90cnlUb1BhcnNlRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KCEwKTp0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoITEpfSx0LnByb3RvdHlwZS5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKHhuKTtpZih0aGlzLmFjY2VwdElkZW50KCJub3QiKSllLmFkZENoaWxkKHRoaXMuX3BhcnNlU3VwcG9ydHNDb25kaXRpb25JblBhcmVucygpKTtlbHNlIGlmKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbkluUGFyZW5zKCkpLHRoaXMucGVla1JlZ0V4cChwLklkZW50LC9eKGFuZHxvcikkL2kpKWZvcih2YXIgbj10aGlzLnRva2VuLnRleHQudG9Mb3dlckNhc2UoKTt0aGlzLmFjY2VwdElkZW50KG4pOyllLmFkZENoaWxkKHRoaXMuX3BhcnNlU3VwcG9ydHNDb25kaXRpb25JblBhcmVucygpKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9LHQucHJvdG90eXBlLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uSW5QYXJlbnM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZSh4bik7aWYodGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLnByZXZUb2tlbiYmKGUubFBhcmVudD10aGlzLnByZXZUb2tlbi5vZmZzZXQpLCFlLmFkZENoaWxkKHRoaXMuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbihbcC5QYXJlbnRoZXNpc1JdKSkmJiF0aGlzLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uKCk/dGhpcy5maW5pc2goZSxTLkNvbmRpdGlvbkV4cGVjdGVkKTp0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUik/KHRoaXMucHJldlRva2VuJiYoZS5yUGFyZW50PXRoaXMucHJldlRva2VuLm9mZnNldCksdGhpcy5maW5pc2goZSkpOnRoaXMuZmluaXNoKGUsUy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuUGFyZW50aGVzaXNSXSxbXSk7aWYodGhpcy5wZWVrKHAuSWRlbnQpKXt2YXIgbj10aGlzLm1hcmsoKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtmb3IodmFyIHI9MTt0aGlzLnRva2VuLnR5cGUhPT1wLkVPRiYmciE9PTA7KXRoaXMudG9rZW4udHlwZT09PXAuUGFyZW50aGVzaXNMP3IrKzp0aGlzLnRva2VuLnR5cGU9PT1wLlBhcmVudGhlc2lzUiYmci0tLHRoaXMuY29uc3VtZVRva2VuKCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfWVsc2UgdGhpcy5yZXN0b3JlQXRNYXJrKG4pfXJldHVybiB0aGlzLmZpbmlzaChlLFMuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW3AuUGFyZW50aGVzaXNMXSl9LHQucHJvdG90eXBlLl9wYXJzZU1lZGlhRGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPSExKSxlP3RoaXMuX3RyeVBhcnNlUnVsZXNldCghMCl8fHRoaXMuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoITApOnRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMSl9LHQucHJvdG90eXBlLl9wYXJzZU1lZGlhPWZ1bmN0aW9uKGUpe2lmKGU9PT12b2lkIDAmJihlPSExKSwhdGhpcy5wZWVrS2V5d29yZCgiQG1lZGlhIikpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5jcmVhdGUoUm8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5TGlzdCgpKT90aGlzLl9wYXJzZUJvZHkobix0aGlzLl9wYXJzZU1lZGlhRGVjbGFyYXRpb24uYmluZCh0aGlzLGUpKTp0aGlzLmZpbmlzaChuLFMuTWVkaWFRdWVyeUV4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlTWVkaWFRdWVyeUxpc3Q9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShGbyk7aWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLFMuTWVkaWFRdWVyeUV4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhUXVlcnkoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUsUy5NZWRpYVF1ZXJ5RXhwZWN0ZWQpO3JldHVybiB0aGlzLmZpbmlzaChlKX0sdC5wcm90b3R5cGUuX3BhcnNlTWVkaWFRdWVyeT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKERvKSxuPXRoaXMubWFyaygpO2lmKHRoaXMuYWNjZXB0SWRlbnQoIm5vdCIpLHRoaXMucGVlayhwLlBhcmVudGhlc2lzTCkpdGhpcy5yZXN0b3JlQXRNYXJrKG4pLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUNvbmRpdGlvbigpKTtlbHNle2lmKHRoaXMuYWNjZXB0SWRlbnQoIm9ubHkiKSwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpKXJldHVybiBudWxsO3RoaXMuYWNjZXB0SWRlbnQoImFuZCIpJiZlLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFDb25kaXRpb24oKSl9cmV0dXJuIHRoaXMuZmluaXNoKGUpfSx0LnByb3RvdHlwZS5fcGFyc2VSYXRpbz1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWFyaygpLG49dGhpcy5jcmVhdGUoX3UpO3JldHVybiB0aGlzLl9wYXJzZU51bWVyaWMoKT90aGlzLmFjY2VwdERlbGltKCIvIik/dGhpcy5fcGFyc2VOdW1lcmljKCk/dGhpcy5maW5pc2gobik6dGhpcy5maW5pc2gobixTLk51bWJlckV4cGVjdGVkKToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOm51bGx9LHQucHJvdG90eXBlLl9wYXJzZU1lZGlhQ29uZGl0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoeXUpO3RoaXMuYWNjZXB0SWRlbnQoIm5vdCIpO2Zvcih2YXIgbj0hMDtuOyl7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2goZSxTLkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtdLFtwLkN1cmx5TF0pO2lmKHRoaXMucGVlayhwLlBhcmVudGhlc2lzTCl8fHRoaXMucGVla0lkZW50KCJub3QiKT9lLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFDb25kaXRpb24oKSk6ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZSgpKSwhdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLFMuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkLFtdLFtwLkN1cmx5TF0pO249dGhpcy5hY2NlcHRJZGVudCgiYW5kIil8fHRoaXMuYWNjZXB0SWRlbnQoIm9yIil9cmV0dXJuIHRoaXMuZmluaXNoKGUpfSx0LnByb3RvdHlwZS5fcGFyc2VNZWRpYUZlYXR1cmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49W3AuUGFyZW50aGVzaXNSXSxyPXRoaXMuY3JlYXRlKHd1KSxpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYWNjZXB0RGVsaW0oIjwiKXx8ZS5hY2NlcHREZWxpbSgiPiIpPyhlLmhhc1doaXRlc3BhY2UoKXx8ZS5hY2NlcHREZWxpbSgiPSIpLCEwKTohIWUuYWNjZXB0RGVsaW0oIj0iKX07aWYoci5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZU5hbWUoKSkpe2lmKHRoaXMuYWNjZXB0KHAuQ29sb24pKXtpZighci5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlKCkpKXJldHVybiB0aGlzLmZpbmlzaChyLFMuVGVybUV4cGVjdGVkLFtdLG4pfWVsc2UgaWYoaSgpKXtpZighci5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlKCkpKXJldHVybiB0aGlzLmZpbmlzaChyLFMuVGVybUV4cGVjdGVkLFtdLG4pO2lmKGkoKSYmIXIuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVWYWx1ZSgpKSlyZXR1cm4gdGhpcy5maW5pc2gocixTLlRlcm1FeHBlY3RlZCxbXSxuKX19ZWxzZSBpZihyLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlVmFsdWUoKSkpe2lmKCFpKCkpcmV0dXJuIHRoaXMuZmluaXNoKHIsUy5PcGVyYXRvckV4cGVjdGVkLFtdLG4pO2lmKCFyLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlTmFtZSgpKSlyZXR1cm4gdGhpcy5maW5pc2gocixTLklkZW50aWZpZXJFeHBlY3RlZCxbXSxuKTtpZihpKCkmJiFyLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlVmFsdWUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHIsUy5UZXJtRXhwZWN0ZWQsW10sbil9ZWxzZSByZXR1cm4gdGhpcy5maW5pc2gocixTLklkZW50aWZpZXJFeHBlY3RlZCxbXSxuKTtyZXR1cm4gdGhpcy5maW5pc2gocil9LHQucHJvdG90eXBlLl9wYXJzZU1lZGlhRmVhdHVyZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJZGVudCgpfSx0LnByb3RvdHlwZS5fcGFyc2VNZWRpYUZlYXR1cmVWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZVJhdGlvKCl8fHRoaXMuX3BhcnNlVGVybUV4cHJlc3Npb24oKX0sdC5wcm90b3R5cGUuX3BhcnNlTWVkaXVtPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoVSk7cmV0dXJuIGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKT90aGlzLmZpbmlzaChlKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VQYWdlRGVjbGFyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VQYWdlTWFyZ2luQm94KCl8fHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uKCl9LHQucHJvdG90eXBlLl9wYXJzZVBhZ2U9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHBhZ2UiKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZSh4dSk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFnZVNlbGVjdG9yKCkpKXtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhZ2VTZWxlY3RvcigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSxTLklkZW50aWZpZXJFeHBlY3RlZCl9cmV0dXJuIHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlUGFnZURlY2xhcmF0aW9uLmJpbmQodGhpcykpfSx0LnByb3RvdHlwZS5fcGFyc2VQYWdlTWFyZ2luQm94PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhwLkF0S2V5d29yZCkpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoU3UpO3JldHVybiB0aGlzLmFjY2VwdE9uZUtleXdvcmQoUXUpfHx0aGlzLm1hcmtFcnJvcihlLFMuVW5rbm93bkF0UnVsZSxbXSxbcC5DdXJseUxdKSx0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX0sdC5wcm90b3R5cGUuX3BhcnNlUGFnZVNlbGVjdG9yPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhwLklkZW50KSYmIXRoaXMucGVlayhwLkNvbG9uKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShVKTtyZXR1cm4gZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpLHRoaXMuYWNjZXB0KHAuQ29sb24pJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpP3RoaXMuZmluaXNoKGUsUy5JZGVudGlmaWVyRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUpfSx0LnByb3RvdHlwZS5fcGFyc2VEb2N1bWVudD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJALW1vei1kb2N1bWVudCIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKHZ1KTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLnJlc3luYyhbXSxbcC5DdXJseUxdKSx0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQuYmluZCh0aGlzKSl9LHQucHJvdG90eXBlLl9wYXJzZVVua25vd25BdFJ1bGU9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKHAuQXRLZXl3b3JkKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShObyk7ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVua25vd25BdFJ1bGVOYW1lKCkpO3ZhciBuPWZ1bmN0aW9uKCl7cmV0dXJuIGk9PT0wJiZzPT09MCYmYT09PTB9LHI9MCxpPTAscz0wLGE9MDtlOmZvcig7Oyl7c3dpdGNoKHRoaXMudG9rZW4udHlwZSl7Y2FzZSBwLlNlbWlDb2xvbjppZihuKCkpYnJlYWsgZTticmVhaztjYXNlIHAuRU9GOnJldHVybiBpPjA/dGhpcy5maW5pc2goZSxTLlJpZ2h0Q3VybHlFeHBlY3RlZCk6YT4wP3RoaXMuZmluaXNoKGUsUy5SaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZCk6cz4wP3RoaXMuZmluaXNoKGUsUy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUpO2Nhc2UgcC5DdXJseUw6cisrLGkrKzticmVhaztjYXNlIHAuQ3VybHlSOmlmKGktLSxyPjAmJmk9PT0wKXtpZih0aGlzLmNvbnN1bWVUb2tlbigpLGE+MClyZXR1cm4gdGhpcy5maW5pc2goZSxTLlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkKTtpZihzPjApcmV0dXJuIHRoaXMuZmluaXNoKGUsUy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpO2JyZWFrIGV9aWYoaTwwKXtpZihzPT09MCYmYT09PTApYnJlYWsgZTtyZXR1cm4gdGhpcy5maW5pc2goZSxTLkxlZnRDdXJseUV4cGVjdGVkKX1icmVhaztjYXNlIHAuUGFyZW50aGVzaXNMOnMrKzticmVhaztjYXNlIHAuUGFyZW50aGVzaXNSOmlmKHMtLSxzPDApcmV0dXJuIHRoaXMuZmluaXNoKGUsUy5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCk7YnJlYWs7Y2FzZSBwLkJyYWNrZXRMOmErKzticmVhaztjYXNlIHAuQnJhY2tldFI6aWYoYS0tLGE8MClyZXR1cm4gdGhpcy5maW5pc2goZSxTLkxlZnRTcXVhcmVCcmFja2V0RXhwZWN0ZWQpO2JyZWFrfXRoaXMuY29uc3VtZVRva2VuKCl9cmV0dXJuIGV9LHQucHJvdG90eXBlLl9wYXJzZVVua25vd25BdFJ1bGVOYW1lPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoVSk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuQXRLZXl3b3JkKT90aGlzLmZpbmlzaChlKTplfSx0LnByb3RvdHlwZS5fcGFyc2VPcGVyYXRvcj1mdW5jdGlvbigpe2lmKHRoaXMucGVla0RlbGltKCIvIil8fHRoaXMucGVla0RlbGltKCIqIil8fHRoaXMucGVla0RlbGltKCIrIil8fHRoaXMucGVla0RlbGltKCItIil8fHRoaXMucGVlayhwLkRhc2htYXRjaCl8fHRoaXMucGVlayhwLkluY2x1ZGVzKXx8dGhpcy5wZWVrKHAuU3Vic3RyaW5nT3BlcmF0b3IpfHx0aGlzLnBlZWsocC5QcmVmaXhPcGVyYXRvcil8fHRoaXMucGVlayhwLlN1ZmZpeE9wZXJhdG9yKXx8dGhpcy5wZWVrRGVsaW0oIj0iKSl7dmFyIGU9dGhpcy5jcmVhdGVOb2RlKHYuT3BlcmF0b3IpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfWVsc2UgcmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9wYXJzZVVuYXJ5T3BlcmF0b3I9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrRGVsaW0oIisiKSYmIXRoaXMucGVla0RlbGltKCItIikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGUoVSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9LHQucHJvdG90eXBlLl9wYXJzZUNvbWJpbmF0b3I9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtEZWxpbSgiPiIpKXt2YXIgZT10aGlzLmNyZWF0ZShVKTt0aGlzLmNvbnN1bWVUb2tlbigpO3ZhciBuPXRoaXMubWFyaygpO2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHREZWxpbSgiPiIpKXtpZighdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0RGVsaW0oIj4iKSlyZXR1cm4gZS50eXBlPXYuU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50LHRoaXMuZmluaXNoKGUpO3RoaXMucmVzdG9yZUF0TWFyayhuKX1yZXR1cm4gZS50eXBlPXYuU2VsZWN0b3JDb21iaW5hdG9yUGFyZW50LHRoaXMuZmluaXNoKGUpfWVsc2UgaWYodGhpcy5wZWVrRGVsaW0oIisiKSl7dmFyIGU9dGhpcy5jcmVhdGUoVSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS50eXBlPXYuU2VsZWN0b3JDb21iaW5hdG9yU2libGluZyx0aGlzLmZpbmlzaChlKX1lbHNlIGlmKHRoaXMucGVla0RlbGltKCJ+Iikpe3ZhciBlPXRoaXMuY3JlYXRlKFUpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUudHlwZT12LlNlbGVjdG9yQ29tYmluYXRvckFsbFNpYmxpbmdzLHRoaXMuZmluaXNoKGUpfWVsc2UgaWYodGhpcy5wZWVrRGVsaW0oIi8iKSl7dmFyIGU9dGhpcy5jcmVhdGUoVSk7dGhpcy5jb25zdW1lVG9rZW4oKTt2YXIgbj10aGlzLm1hcmsoKTtpZighdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0SWRlbnQoImRlZXAiKSYmIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdERlbGltKCIvIikpcmV0dXJuIGUudHlwZT12LlNlbGVjdG9yQ29tYmluYXRvclNoYWRvd1BpZXJjaW5nRGVzY2VuZGFudCx0aGlzLmZpbmlzaChlKTt0aGlzLnJlc3RvcmVBdE1hcmsobil9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9wYXJzZVNpbXBsZVNlbGVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoWHQpLG49MDtmb3IoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUVsZW1lbnROYW1lKCkpJiZuKys7KG49PT0wfHwhdGhpcy5oYXNXaGl0ZXNwYWNlKCkpJiZlLmFkZENoaWxkKHRoaXMuX3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5KCkpOyluKys7cmV0dXJuIG4+MD90aGlzLmZpbmlzaChlKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VTaW1wbGVTZWxlY3RvckJvZHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VQc2V1ZG8oKXx8dGhpcy5fcGFyc2VIYXNoKCl8fHRoaXMuX3BhcnNlQ2xhc3MoKXx8dGhpcy5fcGFyc2VBdHRyaWIoKX0sdC5wcm90b3R5cGUuX3BhcnNlU2VsZWN0b3JJZGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZUlkZW50KCl9LHQucHJvdG90eXBlLl9wYXJzZUhhc2g9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKHAuSGFzaCkmJiF0aGlzLnBlZWtEZWxpbSgiIyIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlTm9kZSh2LklkZW50aWZpZXJTZWxlY3Rvcik7aWYodGhpcy5hY2NlcHREZWxpbSgiIyIpKXtpZih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcklkZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLFMuSWRlbnRpZmllckV4cGVjdGVkKX1lbHNlIHRoaXMuY29uc3VtZVRva2VuKCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfSx0LnByb3RvdHlwZS5fcGFyc2VDbGFzcz1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtEZWxpbSgiLiIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlTm9kZSh2LkNsYXNzU2VsZWN0b3IpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9ySWRlbnQoKSk/dGhpcy5maW5pc2goZSxTLklkZW50aWZpZXJFeHBlY3RlZCk6dGhpcy5maW5pc2goZSl9LHQucHJvdG90eXBlLl9wYXJzZUVsZW1lbnROYW1lPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tYXJrKCksbj10aGlzLmNyZWF0ZU5vZGUodi5FbGVtZW50TmFtZVNlbGVjdG9yKTtyZXR1cm4gbi5hZGRDaGlsZCh0aGlzLl9wYXJzZU5hbWVzcGFjZVByZWZpeCgpKSwhbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9ySWRlbnQoKSkmJiF0aGlzLmFjY2VwdERlbGltKCIqIik/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKTp0aGlzLmZpbmlzaChuKX0sdC5wcm90b3R5cGUuX3BhcnNlTmFtZXNwYWNlUHJlZml4PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tYXJrKCksbj10aGlzLmNyZWF0ZU5vZGUodi5OYW1lc3BhY2VQcmVmaXgpO3JldHVybiFuLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkmJnRoaXMuYWNjZXB0RGVsaW0oIioiKSx0aGlzLmFjY2VwdERlbGltKCJ8Iik/dGhpcy5maW5pc2gobik6KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKX0sdC5wcm90b3R5cGUuX3BhcnNlQXR0cmliPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhwLkJyYWNrZXRMKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShrdSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5zZXROYW1lc3BhY2VQcmVmaXgodGhpcy5fcGFyc2VOYW1lc3BhY2VQcmVmaXgoKSksZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlSWRlbnQoKSk/KGUuc2V0T3BlcmF0b3IodGhpcy5fcGFyc2VPcGVyYXRvcigpKSYmKGUuc2V0VmFsdWUodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpLHRoaXMuYWNjZXB0SWRlbnQoImkiKSx0aGlzLmFjY2VwdElkZW50KCJzIikpLHRoaXMuYWNjZXB0KHAuQnJhY2tldFIpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUsUy5SaWdodFNxdWFyZUJyYWNrZXRFeHBlY3RlZCkpOnRoaXMuZmluaXNoKGUsUy5JZGVudGlmaWVyRXhwZWN0ZWQpfSx0LnByb3RvdHlwZS5fcGFyc2VQc2V1ZG89ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dGhpcy5fdHJ5UGFyc2VQc2V1ZG9JZGVudGlmaWVyKCk7aWYobil7aWYoIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe3ZhciByPWZ1bmN0aW9uKCl7dmFyIGk9ZS5jcmVhdGUoVSk7aWYoIWkuYWRkQ2hpbGQoZS5fcGFyc2VTZWxlY3RvcighMSkpKXJldHVybiBudWxsO2Zvcig7ZS5hY2NlcHQocC5Db21tYSkmJmkuYWRkQ2hpbGQoZS5fcGFyc2VTZWxlY3RvcighMSkpOyk7cmV0dXJuIGUucGVlayhwLlBhcmVudGhlc2lzUik/ZS5maW5pc2goaSk6bnVsbH07aWYobi5hZGRDaGlsZCh0aGlzLnRyeShyKXx8dGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpLCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfXJldHVybiB0aGlzLmZpbmlzaChuKX1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX3RyeVBhcnNlUHNldWRvSWRlbnRpZmllcj1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsocC5Db2xvbikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5tYXJrKCksbj10aGlzLmNyZWF0ZU5vZGUodi5Qc2V1ZG9TZWxlY3Rvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5oYXNXaGl0ZXNwYWNlKCk/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKToodGhpcy5hY2NlcHQocC5Db2xvbiksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk/dGhpcy5maW5pc2gobixTLklkZW50aWZpZXJFeHBlY3RlZCk6dGhpcy5maW5pc2gobikpfSx0LnByb3RvdHlwZS5fdHJ5UGFyc2VQcmlvPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5tYXJrKCksbj10aGlzLl9wYXJzZVByaW8oKTtyZXR1cm4gbnx8KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKX0sdC5wcm90b3R5cGUuX3BhcnNlUHJpbz1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsocC5FeGNsYW1hdGlvbikpcmV0dXJuIG51bGw7dmFyIGU9dGhpcy5jcmVhdGVOb2RlKHYuUHJpbyk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuRXhjbGFtYXRpb24pJiZ0aGlzLmFjY2VwdElkZW50KCJpbXBvcnRhbnQiKT90aGlzLmZpbmlzaChlKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VFeHByPWZ1bmN0aW9uKGUpe2U9PT12b2lkIDAmJihlPSExKTt2YXIgbj10aGlzLmNyZWF0ZShBbyk7aWYoIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpKXJldHVybiBudWxsO2Zvcig7Oyl7aWYodGhpcy5wZWVrKHAuQ29tbWEpKXtpZihlKXJldHVybiB0aGlzLmZpbmlzaChuKTt0aGlzLmNvbnN1bWVUb2tlbigpfWVsc2UgaWYoIXRoaXMuaGFzV2hpdGVzcGFjZSgpKWJyZWFrO2lmKCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSlicmVha31yZXR1cm4gdGhpcy5maW5pc2gobil9LHQucHJvdG90eXBlLl9wYXJzZVVuaWNvZGVSYW5nZT1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtJZGVudCgidSIpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKG51KTtyZXR1cm4gdGhpcy5hY2NlcHRVbmljb2RlUmFuZ2UoKT90aGlzLmZpbmlzaChlKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VOYW1lZExpbmU9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKHAuQnJhY2tldEwpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlTm9kZSh2LkdyaWRMaW5lKTtmb3IodGhpcy5jb25zdW1lVG9rZW4oKTtlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk7KTtyZXR1cm4gdGhpcy5hY2NlcHQocC5CcmFja2V0Uik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSxTLlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlQmluYXJ5RXhwcj1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXMuY3JlYXRlKGJpKTtpZighci5zZXRMZWZ0KGV8fHRoaXMuX3BhcnNlVGVybSgpKSlyZXR1cm4gbnVsbDtpZighci5zZXRPcGVyYXRvcihufHx0aGlzLl9wYXJzZU9wZXJhdG9yKCkpKXJldHVybiB0aGlzLmZpbmlzaChyKTtpZighci5zZXRSaWdodCh0aGlzLl9wYXJzZVRlcm0oKSkpcmV0dXJuIHRoaXMuZmluaXNoKHIsUy5UZXJtRXhwZWN0ZWQpO3I9dGhpcy5maW5pc2gocik7dmFyIGk9dGhpcy5fcGFyc2VPcGVyYXRvcigpO3JldHVybiBpJiYocj10aGlzLl9wYXJzZUJpbmFyeUV4cHIocixpKSksdGhpcy5maW5pc2gocil9LHQucHJvdG90eXBlLl9wYXJzZVRlcm09ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNyZWF0ZShDdSk7cmV0dXJuIGUuc2V0T3BlcmF0b3IodGhpcy5fcGFyc2VVbmFyeU9wZXJhdG9yKCkpLGUuc2V0RXhwcmVzc2lvbih0aGlzLl9wYXJzZVRlcm1FeHByZXNzaW9uKCkpP3RoaXMuZmluaXNoKGUpOm51bGx9LHQucHJvdG90eXBlLl9wYXJzZVRlcm1FeHByZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlVVJJTGl0ZXJhbCgpfHx0aGlzLl9wYXJzZVVuaWNvZGVSYW5nZSgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uKCl8fHRoaXMuX3BhcnNlSWRlbnQoKXx8dGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCl8fHRoaXMuX3BhcnNlTnVtZXJpYygpfHx0aGlzLl9wYXJzZUhleENvbG9yKCl8fHRoaXMuX3BhcnNlT3BlcmF0aW9uKCl8fHRoaXMuX3BhcnNlTmFtZWRMaW5lKCl9LHQucHJvdG90eXBlLl9wYXJzZU9wZXJhdGlvbj1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc0wpKXJldHVybiBudWxsO3ZhciBlPXRoaXMuY3JlYXRlKFUpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpLHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLFMuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlTnVtZXJpYz1mdW5jdGlvbigpe2lmKHRoaXMucGVlayhwLk51bSl8fHRoaXMucGVlayhwLlBlcmNlbnRhZ2UpfHx0aGlzLnBlZWsocC5SZXNvbHV0aW9uKXx8dGhpcy5wZWVrKHAuTGVuZ3RoKXx8dGhpcy5wZWVrKHAuRU1TKXx8dGhpcy5wZWVrKHAuRVhTKXx8dGhpcy5wZWVrKHAuQW5nbGUpfHx0aGlzLnBlZWsocC5UaW1lKXx8dGhpcy5wZWVrKHAuRGltZW5zaW9uKXx8dGhpcy5wZWVrKHAuRnJlcSkpe3ZhciBlPXRoaXMuY3JlYXRlKHlpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1yZXR1cm4gbnVsbH0sdC5wcm90b3R5cGUuX3BhcnNlU3RyaW5nTGl0ZXJhbD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsocC5TdHJpbmcpJiYhdGhpcy5wZWVrKHAuQmFkU3RyaW5nKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZU5vZGUodi5TdHJpbmdMaXRlcmFsKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX0sdC5wcm90b3R5cGUuX3BhcnNlVVJJTGl0ZXJhbD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtSZWdFeHAocC5JZGVudCwvXnVybCgtcHJlZml4KT8kL2kpKXJldHVybiBudWxsO3ZhciBlPXRoaXMubWFyaygpLG49dGhpcy5jcmVhdGVOb2RlKHYuVVJJTGl0ZXJhbCk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuSWRlbnQpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNMKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOih0aGlzLnNjYW5uZXIuaW5VUkw9ITAsdGhpcy5jb25zdW1lVG9rZW4oKSxuLmFkZENoaWxkKHRoaXMuX3BhcnNlVVJMQXJndW1lbnQoKSksdGhpcy5zY2FubmVyLmluVVJMPSExLHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaChuKTp0aGlzLmZpbmlzaChuLFMuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKSl9LHQucHJvdG90eXBlLl9wYXJzZVVSTEFyZ3VtZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jcmVhdGUoVSk7cmV0dXJuIXRoaXMuYWNjZXB0KHAuU3RyaW5nKSYmIXRoaXMuYWNjZXB0KHAuQmFkU3RyaW5nKSYmIXRoaXMuYWNjZXB0VW5xdW90ZWRTdHJpbmcoKT9udWxsOnRoaXMuZmluaXNoKGUpfSx0LnByb3RvdHlwZS5fcGFyc2VJZGVudD1mdW5jdGlvbihlKXtpZighdGhpcy5wZWVrKHAuSWRlbnQpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlKFdlKTtyZXR1cm4gZSYmKG4ucmVmZXJlbmNlVHlwZXM9ZSksbi5pc0N1c3RvbVByb3BlcnR5PXRoaXMucGVla1JlZ0V4cChwLklkZW50LC9eLS0vKSx0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKG4pfSx0LnByb3RvdHlwZS5fcGFyc2VGdW5jdGlvbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubWFyaygpLG49dGhpcy5jcmVhdGUod24pO2lmKCFuLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VGdW5jdGlvbklkZW50aWZpZXIoKSkpcmV0dXJuIG51bGw7aWYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsO2lmKG4uZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpKWZvcig7dGhpcy5hY2NlcHQocC5Db21tYSkmJiF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpOyluLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKXx8dGhpcy5tYXJrRXJyb3IobixTLkV4cHJlc3Npb25FeHBlY3RlZCk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaChuKTp0aGlzLmZpbmlzaChuLFMuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX0sdC5wcm90b3R5cGUuX3BhcnNlRnVuY3Rpb25JZGVudGlmaWVyPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhwLklkZW50KSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNyZWF0ZShXZSk7aWYoZS5yZWZlcmVuY2VUeXBlcz1bWi5GdW5jdGlvbl0sdGhpcy5hY2NlcHRJZGVudCgicHJvZ2lkIikpe2lmKHRoaXMuYWNjZXB0KHAuQ29sb24pKWZvcig7dGhpcy5hY2NlcHQocC5JZGVudCkmJnRoaXMuYWNjZXB0RGVsaW0oIi4iKTspO3JldHVybiB0aGlzLmZpbmlzaChlKX1yZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX0sdC5wcm90b3R5cGUuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY3JlYXRlKFl0KTtyZXR1cm4gZS5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoITApKT90aGlzLmZpbmlzaChlKTpudWxsfSx0LnByb3RvdHlwZS5fcGFyc2VIZXhDb2xvcj1mdW5jdGlvbigpe2lmKHRoaXMucGVla1JlZ0V4cChwLkhhc2gsL14jKFtBLUZhLWYwLTldezN9fFtBLUZhLWYwLTldezR9fFtBLUZhLWYwLTldezZ9fFtBLUZhLWYwLTldezh9KSQvZykpe3ZhciBlPXRoaXMuY3JlYXRlKHZpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1lbHNlIHJldHVybiBudWxsfSx0fSgpO2Z1bmN0aW9uIFp1KHQsZSl7dmFyIG49MCxyPXQubGVuZ3RoO2lmKHI9PT0wKXJldHVybiAwO2Zvcig7bjxyOyl7dmFyIGk9TWF0aC5mbG9vcigobityKS8yKTtlKHRbaV0pP3I9aTpuPWkrMX1yZXR1cm4gbn1mdW5jdGlvbiBNbCh0LGUpe3JldHVybiB0LmluZGV4T2YoZSkhPT0tMX1mdW5jdGlvbiBncigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtmb3IodmFyIG49W10scj0wLGk9dDtyPGkubGVuZ3RoO3IrKylmb3IodmFyIHM9aVtyXSxhPTAsbz1zO2E8by5sZW5ndGg7YSsrKXt2YXIgbD1vW2FdO01sKG4sbCl8fG4ucHVzaChsKX1yZXR1cm4gbn12YXIgZXA9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbihlLG4pe3JldHVybiB0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihyLGkpe3IuX19wcm90b19fPWl9fHxmdW5jdGlvbihyLGkpe2Zvcih2YXIgcyBpbiBpKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiYocltzXT1pW3NdKX0sdChlLG4pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmbiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhuKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTt0KGUsbik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1lLnByb3RvdHlwZT1uPT09bnVsbD9PYmplY3QuY3JlYXRlKG4pOihyLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgcil9fSgpLHpsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3RoaXMub2Zmc2V0PWUsdGhpcy5sZW5ndGg9bix0aGlzLnN5bWJvbHM9W10sdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPVtdfXJldHVybiB0LnByb3RvdHlwZS5hZGRDaGlsZD1mdW5jdGlvbihlKXt0aGlzLmNoaWxkcmVuLnB1c2goZSksZS5zZXRQYXJlbnQodGhpcyl9LHQucHJvdG90eXBlLnNldFBhcmVudD1mdW5jdGlvbihlKXt0aGlzLnBhcmVudD1lfSx0LnByb3RvdHlwZS5maW5kU2NvcGU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbj09PXZvaWQgMCYmKG49MCksdGhpcy5vZmZzZXQ8PWUmJnRoaXMub2Zmc2V0K3RoaXMubGVuZ3RoPmUrbnx8dGhpcy5vZmZzZXQ9PT1lJiZ0aGlzLmxlbmd0aD09PW4/dGhpcy5maW5kSW5TY29wZShlLG4pOm51bGx9LHQucHJvdG90eXBlLmZpbmRJblNjb3BlPWZ1bmN0aW9uKGUsbil7bj09PXZvaWQgMCYmKG49MCk7dmFyIHI9ZStuLGk9WnUodGhpcy5jaGlsZHJlbixmdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXQ+cn0pO2lmKGk9PT0wKXJldHVybiB0aGlzO3ZhciBzPXRoaXMuY2hpbGRyZW5baS0xXTtyZXR1cm4gcy5vZmZzZXQ8PWUmJnMub2Zmc2V0K3MubGVuZ3RoPj1lK24/cy5maW5kSW5TY29wZShlLG4pOnRoaXN9LHQucHJvdG90eXBlLmFkZFN5bWJvbD1mdW5jdGlvbihlKXt0aGlzLnN5bWJvbHMucHVzaChlKX0sdC5wcm90b3R5cGUuZ2V0U3ltYm9sPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPTA7cjx0aGlzLnN5bWJvbHMubGVuZ3RoO3IrKyl7dmFyIGk9dGhpcy5zeW1ib2xzW3JdO2lmKGkubmFtZT09PWUmJmkudHlwZT09PW4pcmV0dXJuIGl9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLmdldFN5bWJvbHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zeW1ib2xzfSx0fSgpLHRwPWZ1bmN0aW9uKHQpe2VwKGUsdCk7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcywwLE51bWJlci5NQVhfVkFMVUUpfHx0aGlzfXJldHVybiBlfSh6bCksYnI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbixyLGkpe3RoaXMubmFtZT1lLHRoaXMudmFsdWU9bix0aGlzLm5vZGU9cix0aGlzLnR5cGU9aX1yZXR1cm4gdH0oKSxucD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dGhpcy5zY29wZT1lfXJldHVybiB0LnByb3RvdHlwZS5hZGRTeW1ib2w9ZnVuY3Rpb24oZSxuLHIsaSl7aWYoZS5vZmZzZXQhPT0tMSl7dmFyIHM9dGhpcy5zY29wZS5maW5kU2NvcGUoZS5vZmZzZXQsZS5sZW5ndGgpO3MmJnMuYWRkU3ltYm9sKG5ldyBicihuLHIsZSxpKSl9fSx0LnByb3RvdHlwZS5hZGRTY29wZT1mdW5jdGlvbihlKXtpZihlLm9mZnNldCE9PS0xKXt2YXIgbj10aGlzLnNjb3BlLmZpbmRTY29wZShlLm9mZnNldCxlLmxlbmd0aCk7aWYobiYmKG4ub2Zmc2V0IT09ZS5vZmZzZXR8fG4ubGVuZ3RoIT09ZS5sZW5ndGgpKXt2YXIgcj1uZXcgemwoZS5vZmZzZXQsZS5sZW5ndGgpO3JldHVybiBuLmFkZENoaWxkKHIpLHJ9cmV0dXJuIG59cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLmFkZFN5bWJvbFRvQ2hpbGRTY29wZT1mdW5jdGlvbihlLG4scixpLHMpe2lmKGUmJmUub2Zmc2V0IT09LTEpe3ZhciBhPXRoaXMuYWRkU2NvcGUoZSk7YSYmYS5hZGRTeW1ib2wobmV3IGJyKHIsaSxuLHMpKX19LHQucHJvdG90eXBlLnZpc2l0Tm9kZT1mdW5jdGlvbihlKXtzd2l0Y2goZS50eXBlKXtjYXNlIHYuS2V5ZnJhbWU6cmV0dXJuIHRoaXMuYWRkU3ltYm9sKGUsZS5nZXROYW1lKCksdm9pZCAwLFouS2V5ZnJhbWUpLCEwO2Nhc2Ugdi5DdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uOnJldHVybiB0aGlzLnZpc2l0Q3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbk5vZGUoZSk7Y2FzZSB2LlZhcmlhYmxlRGVjbGFyYXRpb246cmV0dXJuIHRoaXMudmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uTm9kZShlKTtjYXNlIHYuUnVsZXNldDpyZXR1cm4gdGhpcy52aXNpdFJ1bGVTZXQoZSk7Y2FzZSB2Lk1peGluRGVjbGFyYXRpb246cmV0dXJuIHRoaXMuYWRkU3ltYm9sKGUsZS5nZXROYW1lKCksdm9pZCAwLFouTWl4aW4pLCEwO2Nhc2Ugdi5GdW5jdGlvbkRlY2xhcmF0aW9uOnJldHVybiB0aGlzLmFkZFN5bWJvbChlLGUuZ2V0TmFtZSgpLHZvaWQgMCxaLkZ1bmN0aW9uKSwhMDtjYXNlIHYuRnVuY3Rpb25QYXJhbWV0ZXI6cmV0dXJuIHRoaXMudmlzaXRGdW5jdGlvblBhcmFtZXRlck5vZGUoZSk7Y2FzZSB2LkRlY2xhcmF0aW9uczpyZXR1cm4gdGhpcy5hZGRTY29wZShlKSwhMDtjYXNlIHYuRm9yOnZhciBuPWUscj1uLmdldERlY2xhcmF0aW9ucygpO3JldHVybiByJiZuLnZhcmlhYmxlJiZ0aGlzLmFkZFN5bWJvbFRvQ2hpbGRTY29wZShyLG4udmFyaWFibGUsbi52YXJpYWJsZS5nZXROYW1lKCksdm9pZCAwLFouVmFyaWFibGUpLCEwO2Nhc2Ugdi5FYWNoOnt2YXIgaT1lLHM9aS5nZXREZWNsYXJhdGlvbnMoKTtpZihzKWZvcih2YXIgYT1pLmdldFZhcmlhYmxlcygpLmdldENoaWxkcmVuKCksbz0wLGw9YTtvPGwubGVuZ3RoO28rKyl7dmFyIGM9bFtvXTt0aGlzLmFkZFN5bWJvbFRvQ2hpbGRTY29wZShzLGMsYy5nZXROYW1lKCksdm9pZCAwLFouVmFyaWFibGUpfXJldHVybiEwfX1yZXR1cm4hMH0sdC5wcm90b3R5cGUudmlzaXRSdWxlU2V0PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuc2NvcGUuZmluZFNjb3BlKGUub2Zmc2V0LGUubGVuZ3RoKTtpZihuKWZvcih2YXIgcj0wLGk9ZS5nZXRTZWxlY3RvcnMoKS5nZXRDaGlsZHJlbigpO3I8aS5sZW5ndGg7cisrKXt2YXIgcz1pW3JdO3MgaW5zdGFuY2VvZiB5biYmcy5nZXRDaGlsZHJlbigpLmxlbmd0aD09PTEmJm4uYWRkU3ltYm9sKG5ldyBicihzLmdldENoaWxkKDApLmdldFRleHQoKSx2b2lkIDAscyxaLlJ1bGUpKX1yZXR1cm4hMH0sdC5wcm90b3R5cGUudmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uTm9kZT1mdW5jdGlvbihlKXt2YXIgbj1lLmdldFZhbHVlKCk/ZS5nZXRWYWx1ZSgpLmdldFRleHQoKTp2b2lkIDA7cmV0dXJuIHRoaXMuYWRkU3ltYm9sKGUsZS5nZXROYW1lKCksbixaLlZhcmlhYmxlKSwhMH0sdC5wcm90b3R5cGUudmlzaXRGdW5jdGlvblBhcmFtZXRlck5vZGU9ZnVuY3Rpb24oZSl7dmFyIG49ZS5nZXRQYXJlbnQoKS5nZXREZWNsYXJhdGlvbnMoKTtpZihuKXt2YXIgcj1lLmdldERlZmF1bHRWYWx1ZSgpLGk9cj9yLmdldFRleHQoKTp2b2lkIDA7dGhpcy5hZGRTeW1ib2xUb0NoaWxkU2NvcGUobixlLGUuZ2V0TmFtZSgpLGksWi5WYXJpYWJsZSl9cmV0dXJuITB9LHQucHJvdG90eXBlLnZpc2l0Q3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbk5vZGU9ZnVuY3Rpb24oZSl7dmFyIG49ZS5nZXRWYWx1ZSgpP2UuZ2V0VmFsdWUoKS5nZXRUZXh0KCk6IiI7cmV0dXJuIHRoaXMuYWRkQ1NTVmFyaWFibGUoZS5nZXRQcm9wZXJ0eSgpLGUuZ2V0UHJvcGVydHkoKS5nZXROYW1lKCksbixaLlZhcmlhYmxlKSwhMH0sdC5wcm90b3R5cGUuYWRkQ1NTVmFyaWFibGU9ZnVuY3Rpb24oZSxuLHIsaSl7ZS5vZmZzZXQhPT0tMSYmdGhpcy5zY29wZS5hZGRTeW1ib2wobmV3IGJyKG4scixlLGkpKX0sdH0oKSxNaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dGhpcy5nbG9iYWw9bmV3IHRwLGUuYWNjZXB0VmlzaXRvcihuZXcgbnAodGhpcy5nbG9iYWwpKX1yZXR1cm4gdC5wcm90b3R5cGUuZmluZFN5bWJvbHNBdE9mZnNldD1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcj10aGlzLmdsb2JhbC5maW5kU2NvcGUoZSwwKSxpPVtdLHM9e307cjspe2Zvcih2YXIgYT1yLmdldFN5bWJvbHMoKSxvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBsPWFbb107bC50eXBlPT09biYmIXNbbC5uYW1lXSYmKGkucHVzaChsKSxzW2wubmFtZV09ITApfXI9ci5wYXJlbnR9cmV0dXJuIGl9LHQucHJvdG90eXBlLmludGVybmFsRmluZFN5bWJvbD1mdW5jdGlvbihlLG4pe3ZhciByPWU7aWYoZS5wYXJlbnQgaW5zdGFuY2VvZiB0ciYmZS5wYXJlbnQuZ2V0UGFyZW50KClpbnN0YW5jZW9mIGhlJiYocj1lLnBhcmVudC5nZXRQYXJlbnQoKS5nZXREZWNsYXJhdGlvbnMoKSksZS5wYXJlbnQgaW5zdGFuY2VvZiBZdCYmZS5wYXJlbnQuZ2V0UGFyZW50KClpbnN0YW5jZW9mIHduKXt2YXIgaT1lLnBhcmVudC5nZXRQYXJlbnQoKS5nZXRJZGVudGlmaWVyKCk7aWYoaSl7dmFyIHM9dGhpcy5pbnRlcm5hbEZpbmRTeW1ib2woaSxbWi5GdW5jdGlvbl0pO3MmJihyPXMubm9kZS5nZXREZWNsYXJhdGlvbnMoKSl9fWlmKCFyKXJldHVybiBudWxsO2Zvcih2YXIgYT1lLmdldFRleHQoKSxvPXRoaXMuZ2xvYmFsLmZpbmRTY29wZShyLm9mZnNldCxyLmxlbmd0aCk7bzspe2Zvcih2YXIgbD0wO2w8bi5sZW5ndGg7bCsrKXt2YXIgYz1uW2xdLGg9by5nZXRTeW1ib2woYSxjKTtpZihoKXJldHVybiBofW89by5wYXJlbnR9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLmV2YWx1YXRlUmVmZXJlbmNlVHlwZXM9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIFdlKXt2YXIgbj1lLnJlZmVyZW5jZVR5cGVzO2lmKG4pcmV0dXJuIG47aWYoZS5pc0N1c3RvbVByb3BlcnR5KXJldHVybltaLlZhcmlhYmxlXTt2YXIgcj10dShlKTtpZihyKXt2YXIgaT1yLmdldE5vblByZWZpeGVkUHJvcGVydHlOYW1lKCk7aWYoKGk9PT0iYW5pbWF0aW9uInx8aT09PSJhbmltYXRpb24tbmFtZSIpJiZyLmdldFZhbHVlKCkmJnIuZ2V0VmFsdWUoKS5vZmZzZXQ9PT1lLm9mZnNldClyZXR1cm5bWi5LZXlmcmFtZV19fWVsc2UgaWYoZSBpbnN0YW5jZW9mIHhpKXJldHVybltaLlZhcmlhYmxlXTt2YXIgcz1lLmZpbmRBUGFyZW50KHYuU2VsZWN0b3Isdi5FeHRlbmRzUmVmZXJlbmNlKTtyZXR1cm4gcz9bWi5SdWxlXTpudWxsfSx0LnByb3RvdHlwZS5maW5kU3ltYm9sRnJvbU5vZGU9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKDtlLnR5cGU9PT12LkludGVycG9sYXRpb247KWU9ZS5nZXRQYXJlbnQoKTt2YXIgbj10aGlzLmV2YWx1YXRlUmVmZXJlbmNlVHlwZXMoZSk7cmV0dXJuIG4/dGhpcy5pbnRlcm5hbEZpbmRTeW1ib2woZSxuKTpudWxsfSx0LnByb3RvdHlwZS5tYXRjaGVzU3ltYm9sPWZ1bmN0aW9uKGUsbil7aWYoIWUpcmV0dXJuITE7Zm9yKDtlLnR5cGU9PT12LkludGVycG9sYXRpb247KWU9ZS5nZXRQYXJlbnQoKTtpZighZS5tYXRjaGVzKG4ubmFtZSkpcmV0dXJuITE7dmFyIHI9dGhpcy5ldmFsdWF0ZVJlZmVyZW5jZVR5cGVzKGUpO2lmKCFyfHxyLmluZGV4T2Yobi50eXBlKT09PS0xKXJldHVybiExO3ZhciBpPXRoaXMuaW50ZXJuYWxGaW5kU3ltYm9sKGUscik7cmV0dXJuIGk9PT1ufSx0LnByb3RvdHlwZS5maW5kU3ltYm9sPWZ1bmN0aW9uKGUsbixyKXtmb3IodmFyIGk9dGhpcy5nbG9iYWwuZmluZFNjb3BlKHIpO2k7KXt2YXIgcz1pLmdldFN5bWJvbChlLG4pO2lmKHMpcmV0dXJuIHM7aT1pLnBhcmVudH1yZXR1cm4gbnVsbH0sdH0oKSxMbDtMbD0oKCk9Pnt2YXIgdD17NDcwOnI9PntmdW5jdGlvbiBpKG8pe2lmKHR5cGVvZiBvIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICIrSlNPTi5zdHJpbmdpZnkobykpfWZ1bmN0aW9uIHMobyxsKXtmb3IodmFyIGMsaD0iIix1PTAsZj0tMSxtPTAsZz0wO2c8PW8ubGVuZ3RoOysrZyl7aWYoZzxvLmxlbmd0aCljPW8uY2hhckNvZGVBdChnKTtlbHNle2lmKGM9PT00NylicmVhaztjPTQ3fWlmKGM9PT00Nyl7aWYoIShmPT09Zy0xfHxtPT09MSkpaWYoZiE9PWctMSYmbT09PTIpe2lmKGgubGVuZ3RoPDJ8fHUhPT0yfHxoLmNoYXJDb2RlQXQoaC5sZW5ndGgtMSkhPT00Nnx8aC5jaGFyQ29kZUF0KGgubGVuZ3RoLTIpIT09NDYpe2lmKGgubGVuZ3RoPjIpe3ZhciBiPWgubGFzdEluZGV4T2YoIi8iKTtpZihiIT09aC5sZW5ndGgtMSl7Yj09PS0xPyhoPSIiLHU9MCk6dT0oaD1oLnNsaWNlKDAsYikpLmxlbmd0aC0xLWgubGFzdEluZGV4T2YoIi8iKSxmPWcsbT0wO2NvbnRpbnVlfX1lbHNlIGlmKGgubGVuZ3RoPT09Mnx8aC5sZW5ndGg9PT0xKXtoPSIiLHU9MCxmPWcsbT0wO2NvbnRpbnVlfX1sJiYoaC5sZW5ndGg+MD9oKz0iLy4uIjpoPSIuLiIsdT0yKX1lbHNlIGgubGVuZ3RoPjA/aCs9Ii8iK28uc2xpY2UoZisxLGcpOmg9by5zbGljZShmKzEsZyksdT1nLWYtMTtmPWcsbT0wfWVsc2UgYz09PTQ2JiZtIT09LTE/KyttOm09LTF9cmV0dXJuIGh9dmFyIGE9e3Jlc29sdmU6ZnVuY3Rpb24oKXtmb3IodmFyIG8sbD0iIixjPSExLGg9YXJndW1lbnRzLmxlbmd0aC0xO2g+PS0xJiYhYztoLS0pe3ZhciB1O2g+PTA/dT1hcmd1bWVudHNbaF06KG89PT12b2lkIDAmJihvPXByb2Nlc3MuY3dkKCkpLHU9byksaSh1KSx1Lmxlbmd0aCE9PTAmJihsPXUrIi8iK2wsYz11LmNoYXJDb2RlQXQoMCk9PT00Nyl9cmV0dXJuIGw9cyhsLCFjKSxjP2wubGVuZ3RoPjA/Ii8iK2w6Ii8iOmwubGVuZ3RoPjA/bDoiLiJ9LG5vcm1hbGl6ZTpmdW5jdGlvbihvKXtpZihpKG8pLG8ubGVuZ3RoPT09MClyZXR1cm4iLiI7dmFyIGw9by5jaGFyQ29kZUF0KDApPT09NDcsYz1vLmNoYXJDb2RlQXQoby5sZW5ndGgtMSk9PT00NztyZXR1cm4obz1zKG8sIWwpKS5sZW5ndGghPT0wfHxsfHwobz0iLiIpLG8ubGVuZ3RoPjAmJmMmJihvKz0iLyIpLGw/Ii8iK286b30saXNBYnNvbHV0ZTpmdW5jdGlvbihvKXtyZXR1cm4gaShvKSxvLmxlbmd0aD4wJiZvLmNoYXJDb2RlQXQoMCk9PT00N30sam9pbjpmdW5jdGlvbigpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiIuIjtmb3IodmFyIG8sbD0wO2w8YXJndW1lbnRzLmxlbmd0aDsrK2wpe3ZhciBjPWFyZ3VtZW50c1tsXTtpKGMpLGMubGVuZ3RoPjAmJihvPT09dm9pZCAwP289YzpvKz0iLyIrYyl9cmV0dXJuIG89PT12b2lkIDA/Ii4iOmEubm9ybWFsaXplKG8pfSxyZWxhdGl2ZTpmdW5jdGlvbihvLGwpe2lmKGkobyksaShsKSxvPT09bHx8KG89YS5yZXNvbHZlKG8pKT09PShsPWEucmVzb2x2ZShsKSkpcmV0dXJuIiI7Zm9yKHZhciBjPTE7YzxvLmxlbmd0aCYmby5jaGFyQ29kZUF0KGMpPT09NDc7KytjKTtmb3IodmFyIGg9by5sZW5ndGgsdT1oLWMsZj0xO2Y8bC5sZW5ndGgmJmwuY2hhckNvZGVBdChmKT09PTQ3OysrZik7Zm9yKHZhciBtPWwubGVuZ3RoLWYsZz11PG0/dTptLGI9LTEseT0wO3k8PWc7Kyt5KXtpZih5PT09Zyl7aWYobT5nKXtpZihsLmNoYXJDb2RlQXQoZit5KT09PTQ3KXJldHVybiBsLnNsaWNlKGYreSsxKTtpZih5PT09MClyZXR1cm4gbC5zbGljZShmK3kpfWVsc2UgdT5nJiYoby5jaGFyQ29kZUF0KGMreSk9PT00Nz9iPXk6eT09PTAmJihiPTApKTticmVha312YXIgQz1vLmNoYXJDb2RlQXQoYyt5KTtpZihDIT09bC5jaGFyQ29kZUF0KGYreSkpYnJlYWs7Qz09PTQ3JiYoYj15KX12YXIgaz0iIjtmb3IoeT1jK2IrMTt5PD1oOysreSl5IT09aCYmby5jaGFyQ29kZUF0KHkpIT09NDd8fChrLmxlbmd0aD09PTA/ays9Ii4uIjprKz0iLy4uIik7cmV0dXJuIGsubGVuZ3RoPjA/aytsLnNsaWNlKGYrYik6KGYrPWIsbC5jaGFyQ29kZUF0KGYpPT09NDcmJisrZixsLnNsaWNlKGYpKX0sX21ha2VMb25nOmZ1bmN0aW9uKG8pe3JldHVybiBvfSxkaXJuYW1lOmZ1bmN0aW9uKG8pe2lmKGkobyksby5sZW5ndGg9PT0wKXJldHVybiIuIjtmb3IodmFyIGw9by5jaGFyQ29kZUF0KDApLGM9bD09PTQ3LGg9LTEsdT0hMCxmPW8ubGVuZ3RoLTE7Zj49MTstLWYpaWYoKGw9by5jaGFyQ29kZUF0KGYpKT09PTQ3KXtpZighdSl7aD1mO2JyZWFrfX1lbHNlIHU9ITE7cmV0dXJuIGg9PT0tMT9jPyIvIjoiLiI6YyYmaD09PTE/Ii8vIjpvLnNsaWNlKDAsaCl9LGJhc2VuYW1lOmZ1bmN0aW9uKG8sbCl7aWYobCE9PXZvaWQgMCYmdHlwZW9mIGwhPSJzdHJpbmciKXRocm93IG5ldyBUeXBlRXJyb3IoJyJleHQiIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnKTtpKG8pO3ZhciBjLGg9MCx1PS0xLGY9ITA7aWYobCE9PXZvaWQgMCYmbC5sZW5ndGg+MCYmbC5sZW5ndGg8PW8ubGVuZ3RoKXtpZihsLmxlbmd0aD09PW8ubGVuZ3RoJiZsPT09bylyZXR1cm4iIjt2YXIgbT1sLmxlbmd0aC0xLGc9LTE7Zm9yKGM9by5sZW5ndGgtMTtjPj0wOy0tYyl7dmFyIGI9by5jaGFyQ29kZUF0KGMpO2lmKGI9PT00Nyl7aWYoIWYpe2g9YysxO2JyZWFrfX1lbHNlIGc9PT0tMSYmKGY9ITEsZz1jKzEpLG0+PTAmJihiPT09bC5jaGFyQ29kZUF0KG0pPy0tbT09LTEmJih1PWMpOihtPS0xLHU9ZykpfXJldHVybiBoPT09dT91PWc6dT09PS0xJiYodT1vLmxlbmd0aCksby5zbGljZShoLHUpfWZvcihjPW8ubGVuZ3RoLTE7Yz49MDstLWMpaWYoby5jaGFyQ29kZUF0KGMpPT09NDcpe2lmKCFmKXtoPWMrMTticmVha319ZWxzZSB1PT09LTEmJihmPSExLHU9YysxKTtyZXR1cm4gdT09PS0xPyIiOm8uc2xpY2UoaCx1KX0sZXh0bmFtZTpmdW5jdGlvbihvKXtpKG8pO2Zvcih2YXIgbD0tMSxjPTAsaD0tMSx1PSEwLGY9MCxtPW8ubGVuZ3RoLTE7bT49MDstLW0pe3ZhciBnPW8uY2hhckNvZGVBdChtKTtpZihnIT09NDcpaD09PS0xJiYodT0hMSxoPW0rMSksZz09PTQ2P2w9PT0tMT9sPW06ZiE9PTEmJihmPTEpOmwhPT0tMSYmKGY9LTEpO2Vsc2UgaWYoIXUpe2M9bSsxO2JyZWFrfX1yZXR1cm4gbD09PS0xfHxoPT09LTF8fGY9PT0wfHxmPT09MSYmbD09PWgtMSYmbD09PWMrMT8iIjpvLnNsaWNlKGwsaCl9LGZvcm1hdDpmdW5jdGlvbihvKXtpZihvPT09bnVsbHx8dHlwZW9mIG8hPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAicGF0aE9iamVjdCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBvKTtyZXR1cm4gZnVuY3Rpb24obCxjKXt2YXIgaD1jLmRpcnx8Yy5yb290LHU9Yy5iYXNlfHwoYy5uYW1lfHwiIikrKGMuZXh0fHwiIik7cmV0dXJuIGg/aD09PWMucm9vdD9oK3U6aCsiLyIrdTp1fSgwLG8pfSxwYXJzZTpmdW5jdGlvbihvKXtpKG8pO3ZhciBsPXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZihvLmxlbmd0aD09PTApcmV0dXJuIGw7dmFyIGMsaD1vLmNoYXJDb2RlQXQoMCksdT1oPT09NDc7dT8obC5yb290PSIvIixjPTEpOmM9MDtmb3IodmFyIGY9LTEsbT0wLGc9LTEsYj0hMCx5PW8ubGVuZ3RoLTEsQz0wO3k+PWM7LS15KWlmKChoPW8uY2hhckNvZGVBdCh5KSkhPT00NylnPT09LTEmJihiPSExLGc9eSsxKSxoPT09NDY/Zj09PS0xP2Y9eTpDIT09MSYmKEM9MSk6ZiE9PS0xJiYoQz0tMSk7ZWxzZSBpZighYil7bT15KzE7YnJlYWt9cmV0dXJuIGY9PT0tMXx8Zz09PS0xfHxDPT09MHx8Qz09PTEmJmY9PT1nLTEmJmY9PT1tKzE/ZyE9PS0xJiYobC5iYXNlPWwubmFtZT1tPT09MCYmdT9vLnNsaWNlKDEsZyk6by5zbGljZShtLGcpKToobT09PTAmJnU/KGwubmFtZT1vLnNsaWNlKDEsZiksbC5iYXNlPW8uc2xpY2UoMSxnKSk6KGwubmFtZT1vLnNsaWNlKG0sZiksbC5iYXNlPW8uc2xpY2UobSxnKSksbC5leHQ9by5zbGljZShmLGcpKSxtPjA/bC5kaXI9by5zbGljZSgwLG0tMSk6dSYmKGwuZGlyPSIvIiksbH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07YS5wb3NpeD1hLHIuZXhwb3J0cz1hfSw0NDc6KHIsaSxzKT0+e3ZhciBhO2lmKHMucihpKSxzLmQoaSx7VVJJOigpPT5rLFV0aWxzOigpPT5JfSksdHlwZW9mIHByb2Nlc3M9PSJvYmplY3QiKWE9cHJvY2Vzcy5wbGF0Zm9ybT09PSJ3aW4zMiI7ZWxzZSBpZih0eXBlb2YgbmF2aWdhdG9yPT0ib2JqZWN0Iil7dmFyIG89bmF2aWdhdG9yLnVzZXJBZ2VudDthPW8uaW5kZXhPZigiV2luZG93cyIpPj0wfXZhciBsLGMsaD0obD1mdW5jdGlvbihELHgpe3JldHVybihsPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihBLEwpe0EuX19wcm90b19fPUx9fHxmdW5jdGlvbihBLEwpe2Zvcih2YXIgWCBpbiBMKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChMLFgpJiYoQVtYXT1MW1hdKX0pKEQseCl9LGZ1bmN0aW9uKEQseCl7aWYodHlwZW9mIHghPSJmdW5jdGlvbiImJnghPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoeCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gQSgpe3RoaXMuY29uc3RydWN0b3I9RH1sKEQseCksRC5wcm90b3R5cGU9eD09PW51bGw/T2JqZWN0LmNyZWF0ZSh4KTooQS5wcm90b3R5cGU9eC5wcm90b3R5cGUsbmV3IEEpfSksdT0vXlx3W1x3XGQrLi1dKiQvLGY9L15cLy8sbT0vXlwvXC8vO2Z1bmN0aW9uIGcoRCx4KXtpZighRC5zY2hlbWUmJngpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIicuY29uY2F0KEQuYXV0aG9yaXR5LCciLCBwYXRoOiAiJykuY29uY2F0KEQucGF0aCwnIiwgcXVlcnk6ICInKS5jb25jYXQoRC5xdWVyeSwnIiwgZnJhZ21lbnQ6ICInKS5jb25jYXQoRC5mcmFnbWVudCwnIn0nKSk7aWYoRC5zY2hlbWUmJiF1LnRlc3QoRC5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihELnBhdGgpe2lmKEQuYXV0aG9yaXR5KXtpZighZi50ZXN0KEQucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBjb250YWlucyBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNvbXBvbmVudCBtdXN0IGVpdGhlciBiZSBlbXB0eSBvciBiZWdpbiB3aXRoIGEgc2xhc2ggKCIvIikgY2hhcmFjdGVyJyl9ZWxzZSBpZihtLnRlc3QoRC5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGRvZXMgbm90IGNvbnRhaW4gYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjYW5ub3QgYmVnaW4gd2l0aCB0d28gc2xhc2ggY2hhcmFjdGVycyAoIi8vIiknKX19dmFyIGI9IiIseT0iLyIsQz0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LyxrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRCh4LEEsTCxYLEcsbmUpe25lPT09dm9pZCAwJiYobmU9ITEpLHR5cGVvZiB4PT0ib2JqZWN0Ij8odGhpcy5zY2hlbWU9eC5zY2hlbWV8fGIsdGhpcy5hdXRob3JpdHk9eC5hdXRob3JpdHl8fGIsdGhpcy5wYXRoPXgucGF0aHx8Yix0aGlzLnF1ZXJ5PXgucXVlcnl8fGIsdGhpcy5mcmFnbWVudD14LmZyYWdtZW50fHxiKToodGhpcy5zY2hlbWU9ZnVuY3Rpb24oRGUsU2Upe3JldHVybiBEZXx8U2U/RGU6ImZpbGUifSh4LG5lKSx0aGlzLmF1dGhvcml0eT1BfHxiLHRoaXMucGF0aD1mdW5jdGlvbihEZSxTZSl7c3dpdGNoKERlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6U2U/U2VbMF0hPT15JiYoU2U9eStTZSk6U2U9eX1yZXR1cm4gU2V9KHRoaXMuc2NoZW1lLEx8fGIpLHRoaXMucXVlcnk9WHx8Yix0aGlzLmZyYWdtZW50PUd8fGIsZyh0aGlzLG5lKSl9cmV0dXJuIEQuaXNVcmk9ZnVuY3Rpb24oeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBEfHwhIXgmJnR5cGVvZiB4LmF1dGhvcml0eT09InN0cmluZyImJnR5cGVvZiB4LmZyYWdtZW50PT0ic3RyaW5nIiYmdHlwZW9mIHgucGF0aD09InN0cmluZyImJnR5cGVvZiB4LnF1ZXJ5PT0ic3RyaW5nIiYmdHlwZW9mIHguc2NoZW1lPT0ic3RyaW5nIiYmdHlwZW9mIHguZnNQYXRoPT0ic3RyaW5nIiYmdHlwZW9mIHgud2l0aD09ImZ1bmN0aW9uIiYmdHlwZW9mIHgudG9TdHJpbmc9PSJmdW5jdGlvbiJ9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShELnByb3RvdHlwZSwiZnNQYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFQodGhpcyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksRC5wcm90b3R5cGUud2l0aD1mdW5jdGlvbih4KXtpZigheClyZXR1cm4gdGhpczt2YXIgQT14LnNjaGVtZSxMPXguYXV0aG9yaXR5LFg9eC5wYXRoLEc9eC5xdWVyeSxuZT14LmZyYWdtZW50O3JldHVybiBBPT09dm9pZCAwP0E9dGhpcy5zY2hlbWU6QT09PW51bGwmJihBPWIpLEw9PT12b2lkIDA/TD10aGlzLmF1dGhvcml0eTpMPT09bnVsbCYmKEw9YiksWD09PXZvaWQgMD9YPXRoaXMucGF0aDpYPT09bnVsbCYmKFg9YiksRz09PXZvaWQgMD9HPXRoaXMucXVlcnk6Rz09PW51bGwmJihHPWIpLG5lPT09dm9pZCAwP25lPXRoaXMuZnJhZ21lbnQ6bmU9PT1udWxsJiYobmU9YiksQT09PXRoaXMuc2NoZW1lJiZMPT09dGhpcy5hdXRob3JpdHkmJlg9PT10aGlzLnBhdGgmJkc9PT10aGlzLnF1ZXJ5JiZuZT09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgRihBLEwsWCxHLG5lKX0sRC5wYXJzZT1mdW5jdGlvbih4LEEpe0E9PT12b2lkIDAmJihBPSExKTt2YXIgTD1DLmV4ZWMoeCk7cmV0dXJuIEw/bmV3IEYoTFsyXXx8YixSKExbNF18fGIpLFIoTFs1XXx8YiksUihMWzddfHxiKSxSKExbOV18fGIpLEEpOm5ldyBGKGIsYixiLGIsYil9LEQuZmlsZT1mdW5jdGlvbih4KXt2YXIgQT1iO2lmKGEmJih4PXgucmVwbGFjZSgvXFwvZyx5KSkseFswXT09PXkmJnhbMV09PT15KXt2YXIgTD14LmluZGV4T2YoeSwyKTtMPT09LTE/KEE9eC5zdWJzdHJpbmcoMikseD15KTooQT14LnN1YnN0cmluZygyLEwpLHg9eC5zdWJzdHJpbmcoTCl8fHkpfXJldHVybiBuZXcgRigiZmlsZSIsQSx4LGIsYil9LEQuZnJvbT1mdW5jdGlvbih4KXt2YXIgQT1uZXcgRih4LnNjaGVtZSx4LmF1dGhvcml0eSx4LnBhdGgseC5xdWVyeSx4LmZyYWdtZW50KTtyZXR1cm4gZyhBLCEwKSxBfSxELnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbih4KXtyZXR1cm4geD09PXZvaWQgMCYmKHg9ITEpLEoodGhpcyx4KX0sRC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LEQucmV2aXZlPWZ1bmN0aW9uKHgpe2lmKHgpe2lmKHggaW5zdGFuY2VvZiBEKXJldHVybiB4O3ZhciBBPW5ldyBGKHgpO3JldHVybiBBLl9mb3JtYXR0ZWQ9eC5leHRlcm5hbCxBLl9mc1BhdGg9eC5fc2VwPT09dz94LmZzUGF0aDpudWxsLEF9cmV0dXJuIHh9LER9KCksdz1hPzE6dm9pZCAwLEY9ZnVuY3Rpb24oRCl7ZnVuY3Rpb24geCgpe3ZhciBBPUQhPT1udWxsJiZELmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gQS5fZm9ybWF0dGVkPW51bGwsQS5fZnNQYXRoPW51bGwsQX1yZXR1cm4gaCh4LEQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LnByb3RvdHlwZSwiZnNQYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1UKHRoaXMpKSx0aGlzLl9mc1BhdGh9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSkseC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oQSl7cmV0dXJuIEE9PT12b2lkIDAmJihBPSExKSxBP0oodGhpcywhMCk6KHRoaXMuX2Zvcm1hdHRlZHx8KHRoaXMuX2Zvcm1hdHRlZD1KKHRoaXMsITEpKSx0aGlzLl9mb3JtYXR0ZWQpfSx4LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgQT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoQS5mc1BhdGg9dGhpcy5fZnNQYXRoLEEuX3NlcD13KSx0aGlzLl9mb3JtYXR0ZWQmJihBLmV4dGVybmFsPXRoaXMuX2Zvcm1hdHRlZCksdGhpcy5wYXRoJiYoQS5wYXRoPXRoaXMucGF0aCksdGhpcy5zY2hlbWUmJihBLnNjaGVtZT10aGlzLnNjaGVtZSksdGhpcy5hdXRob3JpdHkmJihBLmF1dGhvcml0eT10aGlzLmF1dGhvcml0eSksdGhpcy5xdWVyeSYmKEEucXVlcnk9dGhpcy5xdWVyeSksdGhpcy5mcmFnbWVudCYmKEEuZnJhZ21lbnQ9dGhpcy5mcmFnbWVudCksQX0seH0oayksXz0oKGM9e30pWzU4XT0iJTNBIixjWzQ3XT0iJTJGIixjWzYzXT0iJTNGIixjWzM1XT0iJTIzIixjWzkxXT0iJTVCIixjWzkzXT0iJTVEIixjWzY0XT0iJTQwIixjWzMzXT0iJTIxIixjWzM2XT0iJTI0IixjWzM4XT0iJTI2IixjWzM5XT0iJTI3IixjWzQwXT0iJTI4IixjWzQxXT0iJTI5IixjWzQyXT0iJTJBIixjWzQzXT0iJTJCIixjWzQ0XT0iJTJDIixjWzU5XT0iJTNCIixjWzYxXT0iJTNEIixjWzMyXT0iJTIwIixjKTtmdW5jdGlvbiBQKEQseCl7Zm9yKHZhciBBPXZvaWQgMCxMPS0xLFg9MDtYPEQubGVuZ3RoO1grKyl7dmFyIEc9RC5jaGFyQ29kZUF0KFgpO2lmKEc+PTk3JiZHPD0xMjJ8fEc+PTY1JiZHPD05MHx8Rz49NDgmJkc8PTU3fHxHPT09NDV8fEc9PT00Nnx8Rz09PTk1fHxHPT09MTI2fHx4JiZHPT09NDcpTCE9PS0xJiYoQSs9ZW5jb2RlVVJJQ29tcG9uZW50KEQuc3Vic3RyaW5nKEwsWCkpLEw9LTEpLEEhPT12b2lkIDAmJihBKz1ELmNoYXJBdChYKSk7ZWxzZXtBPT09dm9pZCAwJiYoQT1ELnN1YnN0cigwLFgpKTt2YXIgbmU9X1tHXTtuZSE9PXZvaWQgMD8oTCE9PS0xJiYoQSs9ZW5jb2RlVVJJQ29tcG9uZW50KEQuc3Vic3RyaW5nKEwsWCkpLEw9LTEpLEErPW5lKTpMPT09LTEmJihMPVgpfX1yZXR1cm4gTCE9PS0xJiYoQSs9ZW5jb2RlVVJJQ29tcG9uZW50KEQuc3Vic3RyaW5nKEwpKSksQSE9PXZvaWQgMD9BOkR9ZnVuY3Rpb24gVyhEKXtmb3IodmFyIHg9dm9pZCAwLEE9MDtBPEQubGVuZ3RoO0ErKyl7dmFyIEw9RC5jaGFyQ29kZUF0KEEpO0w9PT0zNXx8TD09PTYzPyh4PT09dm9pZCAwJiYoeD1ELnN1YnN0cigwLEEpKSx4Kz1fW0xdKTp4IT09dm9pZCAwJiYoeCs9RFtBXSl9cmV0dXJuIHghPT12b2lkIDA/eDpEfWZ1bmN0aW9uIFQoRCx4KXt2YXIgQTtyZXR1cm4gQT1ELmF1dGhvcml0eSYmRC5wYXRoLmxlbmd0aD4xJiZELnNjaGVtZT09PSJmaWxlIj8iLy8iLmNvbmNhdChELmF1dGhvcml0eSkuY29uY2F0KEQucGF0aCk6RC5wYXRoLmNoYXJDb2RlQXQoMCk9PT00NyYmKEQucGF0aC5jaGFyQ29kZUF0KDEpPj02NSYmRC5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHxELnBhdGguY2hhckNvZGVBdCgxKT49OTcmJkQucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiZELnBhdGguY2hhckNvZGVBdCgyKT09PTU4P0QucGF0aFsxXS50b0xvd2VyQ2FzZSgpK0QucGF0aC5zdWJzdHIoMik6RC5wYXRoLGEmJihBPUEucmVwbGFjZSgvXC8vZywiXFwiKSksQX1mdW5jdGlvbiBKKEQseCl7dmFyIEE9eD9XOlAsTD0iIixYPUQuc2NoZW1lLEc9RC5hdXRob3JpdHksbmU9RC5wYXRoLERlPUQucXVlcnksU2U9RC5mcmFnbWVudDtpZihYJiYoTCs9WCxMKz0iOiIpLChHfHxYPT09ImZpbGUiKSYmKEwrPXksTCs9eSksRyl7dmFyIEFlPUcuaW5kZXhPZigiQCIpO2lmKEFlIT09LTEpe3ZhciBEdD1HLnN1YnN0cigwLEFlKTtHPUcuc3Vic3RyKEFlKzEpLChBZT1EdC5pbmRleE9mKCI6IikpPT09LTE/TCs9QShEdCwhMSk6KEwrPUEoRHQuc3Vic3RyKDAsQWUpLCExKSxMKz0iOiIsTCs9QShEdC5zdWJzdHIoQWUrMSksITEpKSxMKz0iQCJ9KEFlPShHPUcudG9Mb3dlckNhc2UoKSkuaW5kZXhPZigiOiIpKT09PS0xP0wrPUEoRywhMSk6KEwrPUEoRy5zdWJzdHIoMCxBZSksITEpLEwrPUcuc3Vic3RyKEFlKSl9aWYobmUpe2lmKG5lLmxlbmd0aD49MyYmbmUuY2hhckNvZGVBdCgwKT09PTQ3JiZuZS5jaGFyQ29kZUF0KDIpPT09NTgpKGN0PW5lLmNoYXJDb2RlQXQoMSkpPj02NSYmY3Q8PTkwJiYobmU9Ii8iLmNvbmNhdChTdHJpbmcuZnJvbUNoYXJDb2RlKGN0KzMyKSwiOiIpLmNvbmNhdChuZS5zdWJzdHIoMykpKTtlbHNlIGlmKG5lLmxlbmd0aD49MiYmbmUuY2hhckNvZGVBdCgxKT09PTU4KXt2YXIgY3Q7KGN0PW5lLmNoYXJDb2RlQXQoMCkpPj02NSYmY3Q8PTkwJiYobmU9IiIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoY3QrMzIpLCI6IikuY29uY2F0KG5lLnN1YnN0cigyKSkpfUwrPUEobmUsITApfXJldHVybiBEZSYmKEwrPSI/IixMKz1BKERlLCExKSksU2UmJihMKz0iIyIsTCs9eD9TZTpQKFNlLCExKSksTH1mdW5jdGlvbiByZShEKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChEKX1jYXRjaHtyZXR1cm4gRC5sZW5ndGg+Mz9ELnN1YnN0cigwLDMpK3JlKEQuc3Vic3RyKDMpKTpEfX12YXIgTj0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiBSKEQpe3JldHVybiBELm1hdGNoKE4pP0QucmVwbGFjZShOLGZ1bmN0aW9uKHgpe3JldHVybiByZSh4KX0pOkR9dmFyIEksej1zKDQ3MCksVj1mdW5jdGlvbihELHgsQSl7aWYoYXJndW1lbnRzLmxlbmd0aD09PTIpZm9yKHZhciBMLFg9MCxHPXgubGVuZ3RoO1g8RztYKyspIUwmJlggaW4geHx8KEx8fChMPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHgsMCxYKSksTFtYXT14W1hdKTtyZXR1cm4gRC5jb25jYXQoTHx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoeCkpfSxqPXoucG9zaXh8fHo7KGZ1bmN0aW9uKEQpe0Quam9pblBhdGg9ZnVuY3Rpb24oeCl7Zm9yKHZhciBBPVtdLEw9MTtMPGFyZ3VtZW50cy5sZW5ndGg7TCsrKUFbTC0xXT1hcmd1bWVudHNbTF07cmV0dXJuIHgud2l0aCh7cGF0aDpqLmpvaW4uYXBwbHkoaixWKFt4LnBhdGhdLEEsITEpKX0pfSxELnJlc29sdmVQYXRoPWZ1bmN0aW9uKHgpe2Zvcih2YXIgQT1bXSxMPTE7TDxhcmd1bWVudHMubGVuZ3RoO0wrKylBW0wtMV09YXJndW1lbnRzW0xdO3ZhciBYPXgucGF0aHx8Ii8iO3JldHVybiB4LndpdGgoe3BhdGg6ai5yZXNvbHZlLmFwcGx5KGosVihbWF0sQSwhMSkpfSl9LEQuZGlybmFtZT1mdW5jdGlvbih4KXt2YXIgQT1qLmRpcm5hbWUoeC5wYXRoKTtyZXR1cm4gQS5sZW5ndGg9PT0xJiZBLmNoYXJDb2RlQXQoMCk9PT00Nj94Ongud2l0aCh7cGF0aDpBfSl9LEQuYmFzZW5hbWU9ZnVuY3Rpb24oeCl7cmV0dXJuIGouYmFzZW5hbWUoeC5wYXRoKX0sRC5leHRuYW1lPWZ1bmN0aW9uKHgpe3JldHVybiBqLmV4dG5hbWUoeC5wYXRoKX19KShJfHwoST17fSkpfX0sZT17fTtmdW5jdGlvbiBuKHIpe2lmKGVbcl0pcmV0dXJuIGVbcl0uZXhwb3J0czt2YXIgaT1lW3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gdFtyXShpLGkuZXhwb3J0cyxuKSxpLmV4cG9ydHN9cmV0dXJuIG4uZD0ocixpKT0+e2Zvcih2YXIgcyBpbiBpKW4ubyhpLHMpJiYhbi5vKHIscykmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLHMse2VudW1lcmFibGU6ITAsZ2V0Omlbc119KX0sbi5vPShyLGkpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixpKSxuLnI9cj0+e3R5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LG4oNDQ3KX0pKCk7dmFye1VSSTp6aSxVdGlsczpMaX09TGwscnA9ZnVuY3Rpb24odCxlLG4pe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yKWZvcih2YXIgcj0wLGk9ZS5sZW5ndGgscztyPGk7cisrKShzfHwhKHIgaW4gZSkpJiYoc3x8KHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwwLHIpKSxzW3JdPWVbcl0pO3JldHVybiB0LmNvbmNhdChzfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSl9O2Z1bmN0aW9uIFBpKHQpe3JldHVybiBMaS5kaXJuYW1lKHppLnBhcnNlKHQpKS50b1N0cmluZygpfWZ1bmN0aW9uIElpKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO3JldHVybiBMaS5qb2luUGF0aC5hcHBseShMaSxycChbemkucGFyc2UodCldLGUsITEpKS50b1N0cmluZygpfXZhciBQbD1mdW5jdGlvbih0LGUsbixyKXtmdW5jdGlvbiBpKHMpe3JldHVybiBzIGluc3RhbmNlb2Ygbj9zOm5ldyBuKGZ1bmN0aW9uKGEpe2Eocyl9KX1yZXR1cm4gbmV3KG58fChuPVByb21pc2UpKShmdW5jdGlvbihzLGEpe2Z1bmN0aW9uIG8oaCl7dHJ5e2Moci5uZXh0KGgpKX1jYXRjaCh1KXthKHUpfX1mdW5jdGlvbiBsKGgpe3RyeXtjKHIudGhyb3coaCkpfWNhdGNoKHUpe2EodSl9fWZ1bmN0aW9uIGMoaCl7aC5kb25lP3MoaC52YWx1ZSk6aShoLnZhbHVlKS50aGVuKG8sbCl9Yygocj1yLmFwcGx5KHQsW10pKS5uZXh0KCkpfSl9LElsPWZ1bmN0aW9uKHQsZSl7dmFyIG49e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHNbMF0mMSl0aHJvdyBzWzFdO3JldHVybiBzWzFdfSx0cnlzOltdLG9wczpbXX0scixpLHMsYTtyZXR1cm4gYT17bmV4dDpvKDApLHRocm93Om8oMSkscmV0dXJuOm8oMil9LHR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gbyhjKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGwoW2MsaF0pfX1mdW5jdGlvbiBsKGMpe2lmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7bjspdHJ5e2lmKHI9MSxpJiYocz1jWzBdJjI/aS5yZXR1cm46Y1swXT9pLnRocm93fHwoKHM9aS5yZXR1cm4pJiZzLmNhbGwoaSksMCk6aS5uZXh0KSYmIShzPXMuY2FsbChpLGNbMV0pKS5kb25lKXJldHVybiBzO3N3aXRjaChpPTAscyYmKGM9W2NbMF0mMixzLnZhbHVlXSksY1swXSl7Y2FzZSAwOmNhc2UgMTpzPWM7YnJlYWs7Y2FzZSA0OnJldHVybiBuLmxhYmVsKysse3ZhbHVlOmNbMV0sZG9uZTohMX07Y2FzZSA1Om4ubGFiZWwrKyxpPWNbMV0sYz1bMF07Y29udGludWU7Y2FzZSA3OmM9bi5vcHMucG9wKCksbi50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYocz1uLnRyeXMsIShzPXMubGVuZ3RoPjAmJnNbcy5sZW5ndGgtMV0pJiYoY1swXT09PTZ8fGNbMF09PT0yKSl7bj0wO2NvbnRpbnVlfWlmKGNbMF09PT0zJiYoIXN8fGNbMV0+c1swXSYmY1sxXTxzWzNdKSl7bi5sYWJlbD1jWzFdO2JyZWFrfWlmKGNbMF09PT02JiZuLmxhYmVsPHNbMV0pe24ubGFiZWw9c1sxXSxzPWM7YnJlYWt9aWYocyYmbi5sYWJlbDxzWzJdKXtuLmxhYmVsPXNbMl0sbi5vcHMucHVzaChjKTticmVha31zWzJdJiZuLm9wcy5wb3AoKSxuLnRyeXMucG9wKCk7Y29udGludWV9Yz1lLmNhbGwodCxuKX1jYXRjaChoKXtjPVs2LGhdLGk9MH1maW5hbGx5e3I9cz0wfWlmKGNbMF0mNSl0aHJvdyBjWzFdO3JldHVybnt2YWx1ZTpjWzBdP2NbMV06dm9pZCAwLGRvbmU6ITB9fX0saXA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3RoaXMucmVhZERpcmVjdG9yeT1lLHRoaXMubGl0ZXJhbENvbXBsZXRpb25zPVtdLHRoaXMuaW1wb3J0Q29tcGxldGlvbnM9W119cmV0dXJuIHQucHJvdG90eXBlLm9uQ3NzVVJJTGl0ZXJhbFZhbHVlPWZ1bmN0aW9uKGUpe3RoaXMubGl0ZXJhbENvbXBsZXRpb25zLnB1c2goZSl9LHQucHJvdG90eXBlLm9uQ3NzSW1wb3J0UGF0aD1mdW5jdGlvbihlKXt0aGlzLmltcG9ydENvbXBsZXRpb25zLnB1c2goZSl9LHQucHJvdG90eXBlLmNvbXB1dGVDb21wbGV0aW9ucz1mdW5jdGlvbihlLG4pe3JldHVybiBQbCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcixpLHMsYSxvLGIsbCxjLGgsdyx1LGYsbSxnLGIseSxDLGssdztyZXR1cm4gSWwodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOnI9e2l0ZW1zOltdLGlzSW5jb21wbGV0ZTohMX0saT0wLHM9dGhpcy5saXRlcmFsQ29tcGxldGlvbnMsRi5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gaTxzLmxlbmd0aD8oYT1zW2ldLG89YS51cmlWYWx1ZSxiPVRpKG8pLGI9PT0iLiJ8fGI9PT0iLi4iPyhyLmlzSW5jb21wbGV0ZT0hMCxbMyw0XSk6WzMsMl0pOlszLDVdO2Nhc2UgMjpyZXR1cm5bNCx0aGlzLnByb3ZpZGVQYXRoU3VnZ2VzdGlvbnMobyxhLnBvc2l0aW9uLGEucmFuZ2UsZSxuKV07Y2FzZSAzOmZvcihsPUYuc2VudCgpLGM9MCxoPWw7YzxoLmxlbmd0aDtjKyspdz1oW2NdLHIuaXRlbXMucHVzaCh3KTtGLmxhYmVsPTQ7Y2FzZSA0OnJldHVybiBpKyssWzMsMV07Y2FzZSA1OnU9MCxmPXRoaXMuaW1wb3J0Q29tcGxldGlvbnMsRi5sYWJlbD02O2Nhc2UgNjpyZXR1cm4gdTxmLmxlbmd0aD8obT1mW3VdLGc9bS5wYXRoVmFsdWUsYj1UaShnKSxiPT09Ii4ifHxiPT09Ii4uIj8oci5pc0luY29tcGxldGU9ITAsWzMsOV0pOlszLDddKTpbMywxMF07Y2FzZSA3OnJldHVybls0LHRoaXMucHJvdmlkZVBhdGhTdWdnZXN0aW9ucyhnLG0ucG9zaXRpb24sbS5yYW5nZSxlLG4pXTtjYXNlIDg6Zm9yKHk9Ri5zZW50KCksZS5sYW5ndWFnZUlkPT09InNjc3MiJiZ5LmZvckVhY2goZnVuY3Rpb24oXyl7Z2UoXy5sYWJlbCwiXyIpJiZ3byhfLmxhYmVsLCIuc2NzcyIpJiYoXy50ZXh0RWRpdD9fLnRleHRFZGl0Lm5ld1RleHQ9Xy5sYWJlbC5zbGljZSgxLC01KTpfLmxhYmVsPV8ubGFiZWwuc2xpY2UoMSwtNSkpfSksQz0wLGs9eTtDPGsubGVuZ3RoO0MrKyl3PWtbQ10sci5pdGVtcy5wdXNoKHcpO0YubGFiZWw9OTtjYXNlIDk6cmV0dXJuIHUrKyxbMyw2XTtjYXNlIDEwOnJldHVyblsyLHJdfX0pfSl9LHQucHJvdG90eXBlLnByb3ZpZGVQYXRoU3VnZ2VzdGlvbnM9ZnVuY3Rpb24oZSxuLHIsaSxzKXtyZXR1cm4gUGwodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGEsbyxsLGMsaCx1LGYsbSxnLGIseSxDLGssdyxGO3JldHVybiBJbCh0aGlzLGZ1bmN0aW9uKF8pe3N3aXRjaChfLmxhYmVsKXtjYXNlIDA6aWYoYT1UaShlKSxvPWdlKGUsIiciKXx8Z2UoZSwnIicpLGw9bz9hLnNsaWNlKDAsbi5jaGFyYWN0ZXItKHIuc3RhcnQuY2hhcmFjdGVyKzEpKTphLnNsaWNlKDAsbi5jaGFyYWN0ZXItci5zdGFydC5jaGFyYWN0ZXIpLGM9aS51cmksaD1vP2xwKHIsMSwtMSk6cix1PWFwKGwsYSxoKSxmPWwuc3Vic3RyaW5nKDAsbC5sYXN0SW5kZXhPZigiLyIpKzEpLG09cy5yZXNvbHZlUmVmZXJlbmNlKGZ8fCIuIixjKSwhbSlyZXR1cm5bMyw0XTtfLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBfLnRyeXMucHVzaChbMSwzLCw0XSksZz1bXSxbNCx0aGlzLnJlYWREaXJlY3RvcnkobSldO2Nhc2UgMjpmb3IoYj1fLnNlbnQoKSx5PTAsQz1iO3k8Qy5sZW5ndGg7eSsrKWs9Q1t5XSx3PWtbMF0sRj1rWzFdLHcuY2hhckNvZGVBdCgwKSE9PXNwJiYoRj09PURuLkRpcmVjdG9yeXx8SWkobSx3KSE9PWMpJiZnLnB1c2gob3AodyxGPT09RG4uRGlyZWN0b3J5LHUpKTtyZXR1cm5bMixnXTtjYXNlIDM6cmV0dXJuIF8uc2VudCgpLFszLDRdO2Nhc2UgNDpyZXR1cm5bMixbXV19fSl9KX0sdH0oKSxzcD00NjtmdW5jdGlvbiBUaSh0KXtyZXR1cm4gZ2UodCwiJyIpfHxnZSh0LCciJyk/dC5zbGljZSgxLC0xKTp0fWZ1bmN0aW9uIGFwKHQsZSxuKXt2YXIgcixpPXQubGFzdEluZGV4T2YoIi8iKTtpZihpPT09LTEpcj1uO2Vsc2V7dmFyIHM9ZS5zbGljZShpKzEpLGE9eXIobi5lbmQsLXMubGVuZ3RoKSxvPXMuaW5kZXhPZigiICIpLGw9dm9pZCAwO28hPT0tMT9sPXlyKGEsbyk6bD1uLmVuZCxyPWllLmNyZWF0ZShhLGwpfXJldHVybiByfWZ1bmN0aW9uIG9wKHQsZSxuKXtyZXR1cm4gZT8odD10KyIvIix7bGFiZWw6dnIodCksa2luZDokLkZvbGRlcix0ZXh0RWRpdDpILnJlcGxhY2Uobix2cih0KSksY29tbWFuZDp7dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifX0pOntsYWJlbDp2cih0KSxraW5kOiQuRmlsZSx0ZXh0RWRpdDpILnJlcGxhY2Uobix2cih0KSl9fWZ1bmN0aW9uIHZyKHQpe3JldHVybiB0LnJlcGxhY2UoLyhcc3xcKHxcKXwsfCJ8JykvZywiXFwkMSIpfWZ1bmN0aW9uIHlyKHQsZSl7cmV0dXJuIEZlLmNyZWF0ZSh0LmxpbmUsdC5jaGFyYWN0ZXIrZSl9ZnVuY3Rpb24gbHAodCxlLG4pe3ZhciByPXlyKHQuc3RhcnQsZSksaT15cih0LmVuZCxuKTtyZXR1cm4gaWUuY3JlYXRlKHIsaSl9dmFyIGNwPWZ1bmN0aW9uKHQsZSxuLHIpe2Z1bmN0aW9uIGkocyl7cmV0dXJuIHMgaW5zdGFuY2VvZiBuP3M6bmV3IG4oZnVuY3Rpb24oYSl7YShzKX0pfXJldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKGZ1bmN0aW9uKHMsYSl7ZnVuY3Rpb24gbyhoKXt0cnl7YyhyLm5leHQoaCkpfWNhdGNoKHUpe2EodSl9fWZ1bmN0aW9uIGwoaCl7dHJ5e2Moci50aHJvdyhoKSl9Y2F0Y2godSl7YSh1KX19ZnVuY3Rpb24gYyhoKXtoLmRvbmU/cyhoLnZhbHVlKTppKGgudmFsdWUpLnRoZW4obyxsKX1jKChyPXIuYXBwbHkodCxbXSkpLm5leHQoKSl9KX0saHA9ZnVuY3Rpb24odCxlKXt2YXIgbj17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoc1swXSYxKXRocm93IHNbMV07cmV0dXJuIHNbMV19LHRyeXM6W10sb3BzOltdfSxyLGkscyxhO3JldHVybiBhPXtuZXh0Om8oMCksdGhyb3c6bygxKSxyZXR1cm46bygyKX0sdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmKGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYTtmdW5jdGlvbiBvKGMpe3JldHVybiBmdW5jdGlvbihoKXtyZXR1cm4gbChbYyxoXSl9fWZ1bmN0aW9uIGwoYyl7aWYocil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtuOyl0cnl7aWYocj0xLGkmJihzPWNbMF0mMj9pLnJldHVybjpjWzBdP2kudGhyb3d8fCgocz1pLnJldHVybikmJnMuY2FsbChpKSwwKTppLm5leHQpJiYhKHM9cy5jYWxsKGksY1sxXSkpLmRvbmUpcmV0dXJuIHM7c3dpdGNoKGk9MCxzJiYoYz1bY1swXSYyLHMudmFsdWVdKSxjWzBdKXtjYXNlIDA6Y2FzZSAxOnM9YzticmVhaztjYXNlIDQ6cmV0dXJuIG4ubGFiZWwrKyx7dmFsdWU6Y1sxXSxkb25lOiExfTtjYXNlIDU6bi5sYWJlbCsrLGk9Y1sxXSxjPVswXTtjb250aW51ZTtjYXNlIDc6Yz1uLm9wcy5wb3AoKSxuLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZihzPW4udHJ5cywhKHM9cy5sZW5ndGg+MCYmc1tzLmxlbmd0aC0xXSkmJihjWzBdPT09Nnx8Y1swXT09PTIpKXtuPTA7Y29udGludWV9aWYoY1swXT09PTMmJighc3x8Y1sxXT5zWzBdJiZjWzFdPHNbM10pKXtuLmxhYmVsPWNbMV07YnJlYWt9aWYoY1swXT09PTYmJm4ubGFiZWw8c1sxXSl7bi5sYWJlbD1zWzFdLHM9YzticmVha31pZihzJiZuLmxhYmVsPHNbMl0pe24ubGFiZWw9c1syXSxuLm9wcy5wdXNoKGMpO2JyZWFrfXNbMl0mJm4ub3BzLnBvcCgpLG4udHJ5cy5wb3AoKTtjb250aW51ZX1jPWUuY2FsbCh0LG4pfWNhdGNoKGgpe2M9WzYsaF0saT0wfWZpbmFsbHl7cj1zPTB9aWYoY1swXSY1KXRocm93IGNbMV07cmV0dXJue3ZhbHVlOmNbMF0/Y1sxXTp2b2lkIDAsZG9uZTohMH19fSxkcD1HZSgpLGl0PUllLlNuaXBwZXQsVGw9e3RpdGxlOiJTdWdnZXN0Iixjb21tYW5kOiJlZGl0b3IuYWN0aW9uLnRyaWdnZXJTdWdnZXN0In0sZXQ7KGZ1bmN0aW9uKHQpe3QuRW51bXM9IiAiLHQuTm9ybWFsPSJkIix0LlZlbmRvclByZWZpeGVkPSJ4Iix0LlRlcm09InkiLHQuVmFyaWFibGU9InoifSkoZXR8fChldD17fSkpO3ZhciBXaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuLHIpe2U9PT12b2lkIDAmJihlPW51bGwpLHRoaXMudmFyaWFibGVQcmVmaXg9ZSx0aGlzLmxzT3B0aW9ucz1uLHRoaXMuY3NzRGF0YU1hbmFnZXI9cix0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W119cmV0dXJuIHQucHJvdG90eXBlLmNvbmZpZ3VyZT1mdW5jdGlvbihlKXt0aGlzLmRlZmF1bHRTZXR0aW5ncz1lfSx0LnByb3RvdHlwZS5nZXRTeW1ib2xDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3ltYm9sQ29udGV4dHx8KHRoaXMuc3ltYm9sQ29udGV4dD1uZXcgTWkodGhpcy5zdHlsZVNoZWV0KSksdGhpcy5zeW1ib2xDb250ZXh0fSx0LnByb3RvdHlwZS5zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzPWZ1bmN0aW9uKGUpe3RoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1lfHxbXX0sdC5wcm90b3R5cGUuZG9Db21wbGV0ZTI9ZnVuY3Rpb24oZSxuLHIsaSxzKXtyZXR1cm4gcz09PXZvaWQgMCYmKHM9dGhpcy5kZWZhdWx0U2V0dGluZ3MpLGNwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBhLG8sbCxjO3JldHVybiBocCh0aGlzLGZ1bmN0aW9uKGgpe3N3aXRjaChoLmxhYmVsKXtjYXNlIDA6aWYoIXRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlcnx8IXRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KXJldHVyblsyLHRoaXMuZG9Db21wbGV0ZShlLG4scixzKV07YT1uZXcgaXAodGhpcy5sc09wdGlvbnMuZmlsZVN5c3RlbVByb3ZpZGVyLnJlYWREaXJlY3RvcnkpLG89dGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1bYV0uY29uY2F0KG8pLGw9dGhpcy5kb0NvbXBsZXRlKGUsbixyLHMpLGgubGFiZWw9MTtjYXNlIDE6cmV0dXJuIGgudHJ5cy5wdXNoKFsxLCwzLDRdKSxbNCxhLmNvbXB1dGVDb21wbGV0aW9ucyhlLGkpXTtjYXNlIDI6cmV0dXJuIGM9aC5zZW50KCksWzIse2lzSW5jb21wbGV0ZTpsLmlzSW5jb21wbGV0ZXx8Yy5pc0luY29tcGxldGUsaXRlbXM6Yy5pdGVtcy5jb25jYXQobC5pdGVtcyl9XTtjYXNlIDM6cmV0dXJuIHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1vLFs3XTtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9LHQucHJvdG90eXBlLmRvQ29tcGxldGU9ZnVuY3Rpb24oZSxuLHIsaSl7dGhpcy5vZmZzZXQ9ZS5vZmZzZXRBdChuKSx0aGlzLnBvc2l0aW9uPW4sdGhpcy5jdXJyZW50V29yZD1tcChlLHRoaXMub2Zmc2V0KSx0aGlzLmRlZmF1bHRSZXBsYWNlUmFuZ2U9aWUuY3JlYXRlKEZlLmNyZWF0ZSh0aGlzLnBvc2l0aW9uLmxpbmUsdGhpcy5wb3NpdGlvbi5jaGFyYWN0ZXItdGhpcy5jdXJyZW50V29yZC5sZW5ndGgpLHRoaXMucG9zaXRpb24pLHRoaXMudGV4dERvY3VtZW50PWUsdGhpcy5zdHlsZVNoZWV0PXIsdGhpcy5kb2N1bWVudFNldHRpbmdzPWk7dHJ5e3ZhciBzPXtpc0luY29tcGxldGU6ITEsaXRlbXM6W119O3RoaXMubm9kZVBhdGg9ZGkodGhpcy5zdHlsZVNoZWV0LHRoaXMub2Zmc2V0KTtmb3IodmFyIGE9dGhpcy5ub2RlUGF0aC5sZW5ndGgtMTthPj0wO2EtLSl7dmFyIG89dGhpcy5ub2RlUGF0aFthXTtpZihvIGluc3RhbmNlb2YgZmkpdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkoby5nZXRQYXJlbnQoKSxzKTtlbHNlIGlmKG8gaW5zdGFuY2VvZiBBbylvLnBhcmVudCBpbnN0YW5jZW9mIHdpP3RoaXMuZ2V0VmFyaWFibGVQcm9wb3NhbHMobnVsbCxzKTp0aGlzLmdldENvbXBsZXRpb25zRm9yRXhwcmVzc2lvbihvLHMpO2Vsc2UgaWYobyBpbnN0YW5jZW9mIFh0KXt2YXIgbD1vLmZpbmRBUGFyZW50KHYuRXh0ZW5kc1JlZmVyZW5jZSx2LlJ1bGVzZXQpO2lmKGwpaWYobC50eXBlPT09di5FeHRlbmRzUmVmZXJlbmNlKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKGwsbyxzKTtlbHNle3ZhciBjPWw7dGhpcy5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKGMsYyYmYy5pc05lc3RlZCgpLHMpfX1lbHNlIGlmKG8gaW5zdGFuY2VvZiBZdCl0aGlzLmdldENvbXBsZXRpb25zRm9yRnVuY3Rpb25Bcmd1bWVudChvLG8uZ2V0UGFyZW50KCkscyk7ZWxzZSBpZihvIGluc3RhbmNlb2YgdWkpdGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9ucyhvLHMpO2Vsc2UgaWYobyBpbnN0YW5jZW9mIHJyKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JWYXJpYWJsZURlY2xhcmF0aW9uKG8scyk7ZWxzZSBpZihvIGluc3RhbmNlb2YgSnQpdGhpcy5nZXRDb21wbGV0aW9uc0ZvclJ1bGVTZXQobyxzKTtlbHNlIGlmKG8gaW5zdGFuY2VvZiB3aSl0aGlzLmdldENvbXBsZXRpb25zRm9ySW50ZXJwb2xhdGlvbihvLHMpO2Vsc2UgaWYobyBpbnN0YW5jZW9mIG5yKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkRlY2xhcmF0aW9uKG8scyk7ZWxzZSBpZihvIGluc3RhbmNlb2YgaXIpdGhpcy5nZXRDb21wbGV0aW9uc0Zvck1peGluUmVmZXJlbmNlKG8scyk7ZWxzZSBpZihvIGluc3RhbmNlb2Ygd24pdGhpcy5nZXRDb21wbGV0aW9uc0ZvckZ1bmN0aW9uQXJndW1lbnQobnVsbCxvLHMpO2Vsc2UgaWYobyBpbnN0YW5jZW9mIGdpKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0cyhvLHMpO2Vsc2UgaWYobyBpbnN0YW5jZW9mIHhuKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0c0NvbmRpdGlvbihvLHMpO2Vsc2UgaWYobyBpbnN0YW5jZW9mIFNuKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKG8sbnVsbCxzKTtlbHNlIGlmKG8udHlwZT09PXYuVVJJTGl0ZXJhbCl0aGlzLmdldENvbXBsZXRpb25Gb3JVcmlMaXRlcmFsVmFsdWUobyxzKTtlbHNlIGlmKG8ucGFyZW50PT09bnVsbCl0aGlzLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbChzKTtlbHNlIGlmKG8udHlwZT09PXYuU3RyaW5nTGl0ZXJhbCYmdGhpcy5pc0ltcG9ydFBhdGhQYXJlbnQoby5wYXJlbnQudHlwZSkpdGhpcy5nZXRDb21wbGV0aW9uRm9ySW1wb3J0UGF0aChvLHMpO2Vsc2UgY29udGludWU7aWYocy5pdGVtcy5sZW5ndGg+MHx8dGhpcy5vZmZzZXQ+by5vZmZzZXQpcmV0dXJuIHRoaXMuZmluYWxpemUocyl9cmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdHlsZXNoZWV0KHMpLHMuaXRlbXMubGVuZ3RoPT09MCYmdGhpcy52YXJpYWJsZVByZWZpeCYmdGhpcy5jdXJyZW50V29yZC5pbmRleE9mKHRoaXMudmFyaWFibGVQcmVmaXgpPT09MCYmdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhudWxsLHMpLHRoaXMuZmluYWxpemUocyl9ZmluYWxseXt0aGlzLnBvc2l0aW9uPW51bGwsdGhpcy5jdXJyZW50V29yZD1udWxsLHRoaXMudGV4dERvY3VtZW50PW51bGwsdGhpcy5zdHlsZVNoZWV0PW51bGwsdGhpcy5zeW1ib2xDb250ZXh0PW51bGwsdGhpcy5kZWZhdWx0UmVwbGFjZVJhbmdlPW51bGwsdGhpcy5ub2RlUGF0aD1udWxsfX0sdC5wcm90b3R5cGUuaXNJbXBvcnRQYXRoUGFyZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlPT09di5JbXBvcnR9LHQucHJvdG90eXBlLmZpbmFsaXplPWZ1bmN0aW9uKGUpe3JldHVybiBlfSx0LnByb3RvdHlwZS5maW5kSW5Ob2RlUGF0aD1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTtmb3IodmFyIHI9dGhpcy5ub2RlUGF0aC5sZW5ndGgtMTtyPj0wO3ItLSl7dmFyIGk9dGhpcy5ub2RlUGF0aFtyXTtpZihlLmluZGV4T2YoaS50eXBlKSE9PS0xKXJldHVybiBpfXJldHVybiBudWxsfSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHk9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eVByb3Bvc2FscyhlLG4pfSx0LnByb3RvdHlwZS5nZXRQcm9wZXJ0eVByb3Bvc2Fscz1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXMsaT10aGlzLmlzVHJpZ2dlclByb3BlcnR5VmFsdWVDb21wbGV0aW9uRW5hYmxlZCxzPXRoaXMuaXNDb21wbGV0ZVByb3BlcnR5V2l0aFNlbWljb2xvbkVuYWJsZWQsYT10aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFByb3BlcnRpZXMoKTtyZXR1cm4gYS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3ZhciBsLGMsaD0hMTtlPyhsPXIuZ2V0Q29tcGxldGlvblJhbmdlKGUuZ2V0UHJvcGVydHkoKSksYz1vLm5hbWUsVWUoZS5jb2xvblBvc2l0aW9uKXx8KGMrPSI6ICIsaD0hMCkpOihsPXIuZ2V0Q29tcGxldGlvblJhbmdlKG51bGwpLGM9by5uYW1lKyI6ICIsaD0hMCksIWUmJnMmJihjKz0iJDA7IiksZSYmIWUuc2VtaWNvbG9uUG9zaXRpb24mJnMmJnIub2Zmc2V0Pj1yLnRleHREb2N1bWVudC5vZmZzZXRBdChsLmVuZCkmJihjKz0iJDA7Iik7dmFyIHU9e2xhYmVsOm8ubmFtZSxkb2N1bWVudGF0aW9uOnl0KG8sci5kb2VzU3VwcG9ydE1hcmtkb3duKCkpLHRhZ3M6Tm4obyk/W190LkRlcHJlY2F0ZWRdOltdLHRleHRFZGl0OkgucmVwbGFjZShsLGMpLGluc2VydFRleHRGb3JtYXQ6SWUuU25pcHBldCxraW5kOiQuUHJvcGVydHl9O28ucmVzdHJpY3Rpb25zfHwoaD0hMSksaSYmaCYmKHUuY29tbWFuZD1UbCk7dmFyIGY9dHlwZW9mIG8ucmVsZXZhbmNlPT0ibnVtYmVyIj9NYXRoLm1pbihNYXRoLm1heChvLnJlbGV2YW5jZSwwKSw5OSk6NTAsbT0oMjU1LWYpLnRvU3RyaW5nKDE2KSxnPWdlKG8ubmFtZSwiLSIpP2V0LlZlbmRvclByZWZpeGVkOmV0Lk5vcm1hbDt1LnNvcnRUZXh0PWcrIl8iK20sbi5pdGVtcy5wdXNoKHUpfSksdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLmZvckVhY2goZnVuY3Rpb24obyl7by5vbkNzc1Byb3BlcnR5JiZvLm9uQ3NzUHJvcGVydHkoe3Byb3BlcnR5TmFtZTpyLmN1cnJlbnRXb3JkLHJhbmdlOnIuZGVmYXVsdFJlcGxhY2VSYW5nZX0pfSksbn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpc1RyaWdnZXJQcm9wZXJ0eVZhbHVlQ29tcGxldGlvbkVuYWJsZWQiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgZSxuO3JldHVybihuPShlPXRoaXMuZG9jdW1lbnRTZXR0aW5ncyk9PT1udWxsfHxlPT09dm9pZCAwP3ZvaWQgMDplLnRyaWdnZXJQcm9wZXJ0eVZhbHVlQ29tcGxldGlvbikhPT1udWxsJiZuIT09dm9pZCAwP246ITB9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpc0NvbXBsZXRlUHJvcGVydHlXaXRoU2VtaWNvbG9uRW5hYmxlZCIse2dldDpmdW5jdGlvbigpe3ZhciBlLG47cmV0dXJuKG49KGU9dGhpcy5kb2N1bWVudFNldHRpbmdzKT09PW51bGx8fGU9PT12b2lkIDA/dm9pZCAwOmUuY29tcGxldGVQcm9wZXJ0eVdpdGhTZW1pY29sb24pIT09bnVsbCYmbiE9PXZvaWQgMD9uOiEwfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZT1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcj10aGlzLGk9ZS5nZXRGdWxsUHJvcGVydHlOYW1lKCkscz10aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFByb3BlcnR5KGkpLGE9ZS5nZXRWYWx1ZSgpfHxudWxsO2EmJmEuaGFzQ2hpbGRyZW4oKTspYT1hLmZpbmRDaGlsZEF0T2Zmc2V0KHRoaXMub2Zmc2V0LCExKTtpZih0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMuZm9yRWFjaChmdW5jdGlvbihnKXtnLm9uQ3NzUHJvcGVydHlWYWx1ZSYmZy5vbkNzc1Byb3BlcnR5VmFsdWUoe3Byb3BlcnR5TmFtZTppLHByb3BlcnR5VmFsdWU6ci5jdXJyZW50V29yZCxyYW5nZTpyLmdldENvbXBsZXRpb25SYW5nZShhKX0pfSkscyl7aWYocy5yZXN0cmljdGlvbnMpZm9yKHZhciBvPTAsbD1zLnJlc3RyaWN0aW9ucztvPGwubGVuZ3RoO28rKyl7dmFyIGM9bFtvXTtzd2l0Y2goYyl7Y2FzZSJjb2xvciI6dGhpcy5nZXRDb2xvclByb3Bvc2FscyhzLGEsbik7YnJlYWs7Y2FzZSJwb3NpdGlvbiI6dGhpcy5nZXRQb3NpdGlvblByb3Bvc2FscyhzLGEsbik7YnJlYWs7Y2FzZSJyZXBlYXQiOnRoaXMuZ2V0UmVwZWF0U3R5bGVQcm9wb3NhbHMocyxhLG4pO2JyZWFrO2Nhc2UibGluZS1zdHlsZSI6dGhpcy5nZXRMaW5lU3R5bGVQcm9wb3NhbHMocyxhLG4pO2JyZWFrO2Nhc2UibGluZS13aWR0aCI6dGhpcy5nZXRMaW5lV2lkdGhQcm9wb3NhbHMocyxhLG4pO2JyZWFrO2Nhc2UiZ2VvbWV0cnktYm94Ijp0aGlzLmdldEdlb21ldHJ5Qm94UHJvcG9zYWxzKHMsYSxuKTticmVhaztjYXNlImJveCI6dGhpcy5nZXRCb3hQcm9wb3NhbHMocyxhLG4pO2JyZWFrO2Nhc2UiaW1hZ2UiOnRoaXMuZ2V0SW1hZ2VQcm9wb3NhbHMocyxhLG4pO2JyZWFrO2Nhc2UidGltaW5nLWZ1bmN0aW9uIjp0aGlzLmdldFRpbWluZ0Z1bmN0aW9uUHJvcG9zYWxzKHMsYSxuKTticmVhaztjYXNlInNoYXBlIjp0aGlzLmdldEJhc2ljU2hhcGVQcm9wb3NhbHMocyxhLG4pO2JyZWFrfX10aGlzLmdldFZhbHVlRW51bVByb3Bvc2FscyhzLGEsbiksdGhpcy5nZXRDU1NXaWRlS2V5d29yZFByb3Bvc2FscyhzLGEsbiksdGhpcy5nZXRVbml0UHJvcG9zYWxzKHMsYSxuKX1lbHNlIGZvcih2YXIgaD11cCh0aGlzLnN0eWxlU2hlZXQsZSksdT0wLGY9aC5nZXRFbnRyaWVzKCk7dTxmLmxlbmd0aDt1Kyspe3ZhciBtPWZbdV07bi5pdGVtcy5wdXNoKHtsYWJlbDptLHRleHRFZGl0OkgucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShhKSxtKSxraW5kOiQuVmFsdWV9KX1yZXR1cm4gdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhhLG4pLHRoaXMuZ2V0VGVybVByb3Bvc2FscyhzLGEsbiksbn0sdC5wcm90b3R5cGUuZ2V0VmFsdWVFbnVtUHJvcG9zYWxzPWZ1bmN0aW9uKGUsbixyKXtpZihlLnZhbHVlcylmb3IodmFyIGk9MCxzPWUudmFsdWVzO2k8cy5sZW5ndGg7aSsrKXt2YXIgYT1zW2ldLG89YS5uYW1lLGw9dm9pZCAwO2lmKHdvKG8sIikiKSl7dmFyIGM9by5sYXN0SW5kZXhPZigiKCIpO2MhPT0tMSYmKG89by5zdWJzdHIoMCxjKSsiKCQxKSIsbD1pdCl9dmFyIGg9ZXQuRW51bXM7Z2UoYS5uYW1lLCItIikmJihoKz1ldC5WZW5kb3JQcmVmaXhlZCk7dmFyIHU9e2xhYmVsOmEubmFtZSxkb2N1bWVudGF0aW9uOnl0KGEsdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpLHRhZ3M6Tm4oZSk/W190LkRlcHJlY2F0ZWRdOltdLHRleHRFZGl0OkgucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShuKSxvKSxzb3J0VGV4dDpoLGtpbmQ6JC5WYWx1ZSxpbnNlcnRUZXh0Rm9ybWF0Omx9O3IuaXRlbXMucHVzaCh1KX1yZXR1cm4gcn0sdC5wcm90b3R5cGUuZ2V0Q1NTV2lkZUtleXdvcmRQcm9wb3NhbHM9ZnVuY3Rpb24oZSxuLHIpe2Zvcih2YXIgaSBpbiBfbClyLml0ZW1zLnB1c2goe2xhYmVsOmksZG9jdW1lbnRhdGlvbjpfbFtpXSx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobiksaSksa2luZDokLlZhbHVlfSk7Zm9yKHZhciBzIGluIEVsKXt2YXIgYT1lbihzKTtyLml0ZW1zLnB1c2goe2xhYmVsOnMsZG9jdW1lbnRhdGlvbjpFbFtzXSx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobiksYSksa2luZDokLkZ1bmN0aW9uLGluc2VydFRleHRGb3JtYXQ6aXQsY29tbWFuZDpnZShzLCJ2YXIiKT9UbDp2b2lkIDB9KX1yZXR1cm4gcn0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHRoaXMub2Zmc2V0Pj1lLm9mZnNldCsyJiZ0aGlzLmdldFZhcmlhYmxlUHJvcG9zYWxzKG51bGwsbiksbn0sdC5wcm90b3R5cGUuZ2V0VmFyaWFibGVQcm9wb3NhbHM9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHI9dGhpcy5nZXRTeW1ib2xDb250ZXh0KCkuZmluZFN5bWJvbHNBdE9mZnNldCh0aGlzLm9mZnNldCxaLlZhcmlhYmxlKSxpPTAscz1yO2k8cy5sZW5ndGg7aSsrKXt2YXIgYT1zW2ldLG89Z2UoYS5uYW1lLCItLSIpPyJ2YXIoIi5jb25jYXQoYS5uYW1lLCIpIik6YS5uYW1lLGw9e2xhYmVsOmEubmFtZSxkb2N1bWVudGF0aW9uOmEudmFsdWU/eG8oYS52YWx1ZSk6YS52YWx1ZSx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UoZSksbyksa2luZDokLlZhcmlhYmxlLHNvcnRUZXh0OmV0LlZhcmlhYmxlfTtpZih0eXBlb2YgbC5kb2N1bWVudGF0aW9uPT0ic3RyaW5nIiYmV2wobC5kb2N1bWVudGF0aW9uKSYmKGwua2luZD0kLkNvbG9yKSxhLm5vZGUudHlwZT09PXYuRnVuY3Rpb25QYXJhbWV0ZXIpe3ZhciBjPWEubm9kZS5nZXRQYXJlbnQoKTtjLnR5cGU9PT12Lk1peGluRGVjbGFyYXRpb24mJihsLmRldGFpbD1kcCgiY29tcGxldGlvbi5hcmd1bWVudCIsImFyZ3VtZW50IGZyb20gJ3swfSciLGMuZ2V0TmFtZSgpKSl9bi5pdGVtcy5wdXNoKGwpfXJldHVybiBufSx0LnByb3RvdHlwZS5nZXRWYXJpYWJsZVByb3Bvc2Fsc0ZvckNTU1ZhckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciBuPW5ldyBPaTt0aGlzLnN0eWxlU2hlZXQuYWNjZXB0VmlzaXRvcihuZXcgZnAobix0aGlzLm9mZnNldCkpO2Zvcih2YXIgcj10aGlzLmdldFN5bWJvbENvbnRleHQoKS5maW5kU3ltYm9sc0F0T2Zmc2V0KHRoaXMub2Zmc2V0LFouVmFyaWFibGUpLGk9MCxzPXI7aTxzLmxlbmd0aDtpKyspe3ZhciBhPXNbaV07aWYoZ2UoYS5uYW1lLCItLSIpKXt2YXIgbz17bGFiZWw6YS5uYW1lLGRvY3VtZW50YXRpb246YS52YWx1ZT94byhhLnZhbHVlKTphLnZhbHVlLHRleHRFZGl0OkgucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShudWxsKSxhLm5hbWUpLGtpbmQ6JC5WYXJpYWJsZX07dHlwZW9mIG8uZG9jdW1lbnRhdGlvbj09InN0cmluZyImJldsKG8uZG9jdW1lbnRhdGlvbikmJihvLmtpbmQ9JC5Db2xvciksZS5pdGVtcy5wdXNoKG8pfW4ucmVtb3ZlKGEubmFtZSl9Zm9yKHZhciBsPTAsYz1uLmdldEVudHJpZXMoKTtsPGMubGVuZ3RoO2wrKyl7dmFyIGg9Y1tsXTtpZihnZShoLCItLSIpKXt2YXIgbz17bGFiZWw6aCx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobnVsbCksaCksa2luZDokLlZhcmlhYmxlfTtlLml0ZW1zLnB1c2gobyl9fXJldHVybiBlfSx0LnByb3RvdHlwZS5nZXRVbml0UHJvcG9zYWxzPWZ1bmN0aW9uKGUsbixyKXt2YXIgaT0iMCI7aWYodGhpcy5jdXJyZW50V29yZC5sZW5ndGg+MCl7dmFyIHM9dGhpcy5jdXJyZW50V29yZC5tYXRjaCgvXi0/XGRbXC5cZCtdKi8pO3MmJihpPXNbMF0sci5pc0luY29tcGxldGU9aS5sZW5ndGg9PT10aGlzLmN1cnJlbnRXb3JkLmxlbmd0aCl9ZWxzZSB0aGlzLmN1cnJlbnRXb3JkLmxlbmd0aD09PTAmJihyLmlzSW5jb21wbGV0ZT0hMCk7aWYobiYmbi5wYXJlbnQmJm4ucGFyZW50LnR5cGU9PT12LlRlcm0mJihuPW4uZ2V0UGFyZW50KCkpLGUucmVzdHJpY3Rpb25zKWZvcih2YXIgYT0wLG89ZS5yZXN0cmljdGlvbnM7YTxvLmxlbmd0aDthKyspe3ZhciBsPW9bYV0sYz1BbFtsXTtpZihjKWZvcih2YXIgaD0wLHU9YztoPHUubGVuZ3RoO2grKyl7dmFyIGY9dVtoXSxtPWkrZjtyLml0ZW1zLnB1c2goe2xhYmVsOm0sdGV4dEVkaXQ6SC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG4pLG0pLGtpbmQ6JC5Vbml0fSl9fXJldHVybiByfSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uUmFuZ2U9ZnVuY3Rpb24oZSl7aWYoZSYmZS5vZmZzZXQ8PXRoaXMub2Zmc2V0JiZ0aGlzLm9mZnNldDw9ZS5lbmQpe3ZhciBuPWUuZW5kIT09LTE/dGhpcy50ZXh0RG9jdW1lbnQucG9zaXRpb25BdChlLmVuZCk6dGhpcy5wb3NpdGlvbixyPXRoaXMudGV4dERvY3VtZW50LnBvc2l0aW9uQXQoZS5vZmZzZXQpO2lmKHIubGluZT09PW4ubGluZSlyZXR1cm4gaWUuY3JlYXRlKHIsbil9cmV0dXJuIHRoaXMuZGVmYXVsdFJlcGxhY2VSYW5nZX0sdC5wcm90b3R5cGUuZ2V0Q29sb3JQcm9wb3NhbHM9ZnVuY3Rpb24oZSxuLHIpe2Zvcih2YXIgaSBpbiBwcilyLml0ZW1zLnB1c2goe2xhYmVsOmksZG9jdW1lbnRhdGlvbjpwcltpXSx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobiksaSksa2luZDokLkNvbG9yfSk7Zm9yKHZhciBpIGluIGZsKXIuaXRlbXMucHVzaCh7bGFiZWw6aSxkb2N1bWVudGF0aW9uOmZsW2ldLHRleHRFZGl0OkgucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShuKSxpKSxraW5kOiQuVmFsdWV9KTt2YXIgcz1uZXcgT2k7dGhpcy5zdHlsZVNoZWV0LmFjY2VwdFZpc2l0b3IobmV3IHBwKHMsdGhpcy5vZmZzZXQpKTtmb3IodmFyIGE9MCxvPXMuZ2V0RW50cmllcygpO2E8by5sZW5ndGg7YSsrKXt2YXIgaT1vW2FdO3IuaXRlbXMucHVzaCh7bGFiZWw6aSx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobiksaSksa2luZDokLkNvbG9yfSl9Zm9yKHZhciBsPWZ1bmN0aW9uKG0pe3ZhciBnPTEsYj1mdW5jdGlvbihDLGspe3JldHVybiIkeyIrZysrKyI6IitrKyJ9In0seT1tLmZ1bmMucmVwbGFjZSgvXFs/XCQoXHcrKVxdPy9nLGIpO3IuaXRlbXMucHVzaCh7bGFiZWw6bS5mdW5jLnN1YnN0cigwLG0uZnVuYy5pbmRleE9mKCIoIikpLGRldGFpbDptLmZ1bmMsZG9jdW1lbnRhdGlvbjptLmRlc2MsdGV4dEVkaXQ6SC5yZXBsYWNlKGMuZ2V0Q29tcGxldGlvblJhbmdlKG4pLHkpLGluc2VydFRleHRGb3JtYXQ6aXQsa2luZDokLkZ1bmN0aW9ufSl9LGM9dGhpcyxoPTAsdT1WdTtoPHUubGVuZ3RoO2grKyl7dmFyIGY9dVtoXTtsKGYpfXJldHVybiByfSx0LnByb3RvdHlwZS5nZXRQb3NpdGlvblByb3Bvc2Fscz1mdW5jdGlvbihlLG4scil7Zm9yKHZhciBpIGluIHdsKXIuaXRlbXMucHVzaCh7bGFiZWw6aSxkb2N1bWVudGF0aW9uOndsW2ldLHRleHRFZGl0OkgucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShuKSxpKSxraW5kOiQuVmFsdWV9KTtyZXR1cm4gcn0sdC5wcm90b3R5cGUuZ2V0UmVwZWF0U3R5bGVQcm9wb3NhbHM9ZnVuY3Rpb24oZSxuLHIpe2Zvcih2YXIgaSBpbiB4bClyLml0ZW1zLnB1c2goe2xhYmVsOmksZG9jdW1lbnRhdGlvbjp4bFtpXSx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobiksaSksa2luZDokLlZhbHVlfSk7cmV0dXJuIHJ9LHQucHJvdG90eXBlLmdldExpbmVTdHlsZVByb3Bvc2Fscz1mdW5jdGlvbihlLG4scil7Zm9yKHZhciBpIGluIFNsKXIuaXRlbXMucHVzaCh7bGFiZWw6aSxkb2N1bWVudGF0aW9uOlNsW2ldLHRleHRFZGl0OkgucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShuKSxpKSxraW5kOiQuVmFsdWV9KTtyZXR1cm4gcn0sdC5wcm90b3R5cGUuZ2V0TGluZVdpZHRoUHJvcG9zYWxzPWZ1bmN0aW9uKGUsbixyKXtmb3IodmFyIGk9MCxzPVh1O2k8cy5sZW5ndGg7aSsrKXt2YXIgYT1zW2ldO3IuaXRlbXMucHVzaCh7bGFiZWw6YSx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobiksYSksa2luZDokLlZhbHVlfSl9cmV0dXJuIHJ9LHQucHJvdG90eXBlLmdldEdlb21ldHJ5Qm94UHJvcG9zYWxzPWZ1bmN0aW9uKGUsbixyKXtmb3IodmFyIGkgaW4ga2wpci5pdGVtcy5wdXNoKHtsYWJlbDppLGRvY3VtZW50YXRpb246a2xbaV0sdGV4dEVkaXQ6SC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG4pLGkpLGtpbmQ6JC5WYWx1ZX0pO3JldHVybiByfSx0LnByb3RvdHlwZS5nZXRCb3hQcm9wb3NhbHM9ZnVuY3Rpb24oZSxuLHIpe2Zvcih2YXIgaSBpbiBDbClyLml0ZW1zLnB1c2goe2xhYmVsOmksZG9jdW1lbnRhdGlvbjpDbFtpXSx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobiksaSksa2luZDokLlZhbHVlfSk7cmV0dXJuIHJ9LHQucHJvdG90eXBlLmdldEltYWdlUHJvcG9zYWxzPWZ1bmN0aW9uKGUsbixyKXtmb3IodmFyIGkgaW4gUmwpe3ZhciBzPWVuKGkpO3IuaXRlbXMucHVzaCh7bGFiZWw6aSxkb2N1bWVudGF0aW9uOlJsW2ldLHRleHRFZGl0OkgucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShuKSxzKSxraW5kOiQuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDppIT09cz9pdDp2b2lkIDB9KX1yZXR1cm4gcn0sdC5wcm90b3R5cGUuZ2V0VGltaW5nRnVuY3Rpb25Qcm9wb3NhbHM9ZnVuY3Rpb24oZSxuLHIpe2Zvcih2YXIgaSBpbiBGbCl7dmFyIHM9ZW4oaSk7ci5pdGVtcy5wdXNoKHtsYWJlbDppLGRvY3VtZW50YXRpb246RmxbaV0sdGV4dEVkaXQ6SC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG4pLHMpLGtpbmQ6JC5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0OmkhPT1zP2l0OnZvaWQgMH0pfXJldHVybiByfSx0LnByb3RvdHlwZS5nZXRCYXNpY1NoYXBlUHJvcG9zYWxzPWZ1bmN0aW9uKGUsbixyKXtmb3IodmFyIGkgaW4gRGwpe3ZhciBzPWVuKGkpO3IuaXRlbXMucHVzaCh7bGFiZWw6aSxkb2N1bWVudGF0aW9uOkRsW2ldLHRleHRFZGl0OkgucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShuKSxzKSxraW5kOiQuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDppIT09cz9pdDp2b2lkIDB9KX1yZXR1cm4gcn0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JTdHlsZXNoZWV0PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuc3R5bGVTaGVldC5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldCh0aGlzLm9mZnNldCk7cmV0dXJuIG4/biBpbnN0YW5jZW9mIEp0P3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JSdWxlU2V0KG4sZSk6biBpbnN0YW5jZW9mIGdpP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0cyhuLGUpOmU6dGhpcy5nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWwoZSl9LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbD1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiB0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldEF0RGlyZWN0aXZlcygpLmZvckVhY2goZnVuY3Rpb24ocil7ZS5pdGVtcy5wdXNoKHtsYWJlbDpyLm5hbWUsdGV4dEVkaXQ6SC5yZXBsYWNlKG4uZ2V0Q29tcGxldGlvblJhbmdlKG51bGwpLHIubmFtZSksZG9jdW1lbnRhdGlvbjp5dChyLG4uZG9lc1N1cHBvcnRNYXJrZG93bigpKSx0YWdzOk5uKHIpP1tfdC5EZXByZWNhdGVkXTpbXSxraW5kOiQuS2V5d29yZH0pfSksdGhpcy5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKG51bGwsITEsZSksZX0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JSdWxlU2V0PWZ1bmN0aW9uKGUsbil7dmFyIHI9ZS5nZXREZWNsYXJhdGlvbnMoKSxpPXImJnIuZW5kc1dpdGgoIn0iKSYmdGhpcy5vZmZzZXQ+PXIuZW5kO2lmKGkpcmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbkZvclRvcExldmVsKG4pO3ZhciBzPSFyfHx0aGlzLm9mZnNldDw9ci5vZmZzZXQ7cmV0dXJuIHM/dGhpcy5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKGUsZS5pc05lc3RlZCgpLG4pOnRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvbnMoZS5nZXREZWNsYXJhdGlvbnMoKSxuKX0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3Rvcj1mdW5jdGlvbihlLG4scil7dmFyIGk9dGhpcyxzPXRoaXMuZmluZEluTm9kZVBhdGgodi5Qc2V1ZG9TZWxlY3Rvcix2LklkZW50aWZpZXJTZWxlY3Rvcix2LkNsYXNzU2VsZWN0b3Isdi5FbGVtZW50TmFtZVNlbGVjdG9yKTshcyYmdGhpcy5oYXNDaGFyYWN0ZXJBdFBvc2l0aW9uKHRoaXMub2Zmc2V0LXRoaXMuY3VycmVudFdvcmQubGVuZ3RoLTEsIjoiKSYmKHRoaXMuY3VycmVudFdvcmQ9IjoiK3RoaXMuY3VycmVudFdvcmQsdGhpcy5oYXNDaGFyYWN0ZXJBdFBvc2l0aW9uKHRoaXMub2Zmc2V0LXRoaXMuY3VycmVudFdvcmQubGVuZ3RoLTEsIjoiKSYmKHRoaXMuY3VycmVudFdvcmQ9IjoiK3RoaXMuY3VycmVudFdvcmQpLHRoaXMuZGVmYXVsdFJlcGxhY2VSYW5nZT1pZS5jcmVhdGUoRmUuY3JlYXRlKHRoaXMucG9zaXRpb24ubGluZSx0aGlzLnBvc2l0aW9uLmNoYXJhY3Rlci10aGlzLmN1cnJlbnRXb3JkLmxlbmd0aCksdGhpcy5wb3NpdGlvbikpO3ZhciBhPXRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHNldWRvQ2xhc3NlcygpO2EuZm9yRWFjaChmdW5jdGlvbih5KXt2YXIgQz1lbih5Lm5hbWUpLGs9e2xhYmVsOnkubmFtZSx0ZXh0RWRpdDpILnJlcGxhY2UoaS5nZXRDb21wbGV0aW9uUmFuZ2UocyksQyksZG9jdW1lbnRhdGlvbjp5dCh5LGkuZG9lc1N1cHBvcnRNYXJrZG93bigpKSx0YWdzOk5uKHkpP1tfdC5EZXByZWNhdGVkXTpbXSxraW5kOiQuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDp5Lm5hbWUhPT1DP2l0OnZvaWQgMH07Z2UoeS5uYW1lLCI6LSIpJiYoay5zb3J0VGV4dD1ldC5WZW5kb3JQcmVmaXhlZCksci5pdGVtcy5wdXNoKGspfSk7dmFyIG89dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQc2V1ZG9FbGVtZW50cygpO2lmKG8uZm9yRWFjaChmdW5jdGlvbih5KXt2YXIgQz1lbih5Lm5hbWUpLGs9e2xhYmVsOnkubmFtZSx0ZXh0RWRpdDpILnJlcGxhY2UoaS5nZXRDb21wbGV0aW9uUmFuZ2UocyksQyksZG9jdW1lbnRhdGlvbjp5dCh5LGkuZG9lc1N1cHBvcnRNYXJrZG93bigpKSx0YWdzOk5uKHkpP1tfdC5EZXByZWNhdGVkXTpbXSxraW5kOiQuRnVuY3Rpb24saW5zZXJ0VGV4dEZvcm1hdDp5Lm5hbWUhPT1DP2l0OnZvaWQgMH07Z2UoeS5uYW1lLCI6Oi0iKSYmKGsuc29ydFRleHQ9ZXQuVmVuZG9yUHJlZml4ZWQpLHIuaXRlbXMucHVzaChrKX0pLCFuKXtmb3IodmFyIGw9MCxjPVl1O2w8Yy5sZW5ndGg7bCsrKXt2YXIgaD1jW2xdO3IuaXRlbXMucHVzaCh7bGFiZWw6aCx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UocyksaCksa2luZDokLktleXdvcmR9KX1mb3IodmFyIHU9MCxmPUt1O3U8Zi5sZW5ndGg7dSsrKXt2YXIgaD1mW3VdO3IuaXRlbXMucHVzaCh7bGFiZWw6aCx0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UocyksaCksa2luZDokLktleXdvcmR9KX19dmFyIG09e307bVt0aGlzLmN1cnJlbnRXb3JkXT0hMDt2YXIgZz10aGlzLnRleHREb2N1bWVudC5nZXRUZXh0KCk7aWYodGhpcy5zdHlsZVNoZWV0LmFjY2VwdChmdW5jdGlvbih5KXtpZih5LnR5cGU9PT12LlNpbXBsZVNlbGVjdG9yJiZ5Lmxlbmd0aD4wKXt2YXIgQz1nLnN1YnN0cih5Lm9mZnNldCx5Lmxlbmd0aCk7cmV0dXJuIEMuY2hhckF0KDApPT09Ii4iJiYhbVtDXSYmKG1bQ109ITAsci5pdGVtcy5wdXNoKHtsYWJlbDpDLHRleHRFZGl0OkgucmVwbGFjZShpLmdldENvbXBsZXRpb25SYW5nZShzKSxDKSxraW5kOiQuS2V5d29yZH0pKSwhMX1yZXR1cm4hMH0pLGUmJmUuaXNOZXN0ZWQoKSl7dmFyIGI9ZS5nZXRTZWxlY3RvcnMoKS5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldCh0aGlzLm9mZnNldCk7YiYmZS5nZXRTZWxlY3RvcnMoKS5nZXRDaGlsZHJlbigpLmluZGV4T2YoYik9PT0wJiZ0aGlzLmdldFByb3BlcnR5UHJvcG9zYWxzKG51bGwscil9cmV0dXJuIHJ9LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25zPWZ1bmN0aW9uKGUsbil7aWYoIWV8fHRoaXMub2Zmc2V0PT09ZS5vZmZzZXQpcmV0dXJuIG47dmFyIHI9ZS5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldCh0aGlzLm9mZnNldCk7aWYoIXIpcmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KG51bGwsbik7aWYociBpbnN0YW5jZW9mIHBpKXt2YXIgaT1yO2lmKCFVZShpLmNvbG9uUG9zaXRpb24pfHx0aGlzLm9mZnNldDw9aS5jb2xvblBvc2l0aW9uKXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShpLG4pO2lmKFVlKGkuc2VtaWNvbG9uUG9zaXRpb24pJiZpLnNlbWljb2xvblBvc2l0aW9uPHRoaXMub2Zmc2V0KXJldHVybiB0aGlzLm9mZnNldD09PWkuc2VtaWNvbG9uUG9zaXRpb24rMT9uOnRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KG51bGwsbik7aWYoaSBpbnN0YW5jZW9mIFplKXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShpLG4pfWVsc2UgciBpbnN0YW5jZW9mIFNuP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKHIsbnVsbCxuKTp0aGlzLmN1cnJlbnRXb3JkJiZ0aGlzLmN1cnJlbnRXb3JkWzBdPT09IkAiP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KG51bGwsbik6ciBpbnN0YW5jZW9mIEp0JiZ0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShudWxsLG4pO3JldHVybiBufSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvclZhcmlhYmxlRGVjbGFyYXRpb249ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdGhpcy5vZmZzZXQmJlVlKGUuY29sb25Qb3NpdGlvbikmJnRoaXMub2Zmc2V0PmUuY29sb25Qb3NpdGlvbiYmdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2FscyhlLmdldFZhbHVlKCksbiksbn0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JFeHByZXNzaW9uPWZ1bmN0aW9uKGUsbil7dmFyIHI9ZS5nZXRQYXJlbnQoKTtpZihyIGluc3RhbmNlb2YgWXQpcmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkFyZ3VtZW50KHIsci5nZXRQYXJlbnQoKSxuKSxuO3ZhciBpPWUuZmluZFBhcmVudCh2LkRlY2xhcmF0aW9uKTtpZighaSlyZXR1cm4gdGhpcy5nZXRUZXJtUHJvcG9zYWxzKHZvaWQgMCxudWxsLG4pLG47dmFyIHM9ZS5maW5kQ2hpbGRBdE9mZnNldCh0aGlzLm9mZnNldCwhMCk7cmV0dXJuIHM/cyBpbnN0YW5jZW9mIHlpfHxzIGluc3RhbmNlb2YgV2U/dGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uVmFsdWUoaSxuKTpuOnRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblZhbHVlKGksbil9LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRnVuY3Rpb25Bcmd1bWVudD1mdW5jdGlvbihlLG4scil7dmFyIGk9bi5nZXRJZGVudGlmaWVyKCk7cmV0dXJuIGkmJmkubWF0Y2hlcygidmFyIikmJighbi5nZXRBcmd1bWVudHMoKS5oYXNDaGlsZHJlbigpfHxuLmdldEFyZ3VtZW50cygpLmdldENoaWxkKDApPT09ZSkmJnRoaXMuZ2V0VmFyaWFibGVQcm9wb3NhbHNGb3JDU1NWYXJGdW5jdGlvbihyKSxyfSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvckZ1bmN0aW9uRGVjbGFyYXRpb249ZnVuY3Rpb24oZSxuKXt2YXIgcj1lLmdldERlY2xhcmF0aW9ucygpO3JldHVybiByJiZ0aGlzLm9mZnNldD5yLm9mZnNldCYmdGhpcy5vZmZzZXQ8ci5lbmQmJnRoaXMuZ2V0VGVybVByb3Bvc2Fscyh2b2lkIDAsbnVsbCxuKSxufSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0Zvck1peGluUmVmZXJlbmNlPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPXRoaXMsaT10aGlzLmdldFN5bWJvbENvbnRleHQoKS5maW5kU3ltYm9sc0F0T2Zmc2V0KHRoaXMub2Zmc2V0LFouTWl4aW4pLHM9MCxhPWk7czxhLmxlbmd0aDtzKyspe3ZhciBvPWFbc107by5ub2RlIGluc3RhbmNlb2YgQ24mJm4uaXRlbXMucHVzaCh0aGlzLm1ha2VUZXJtUHJvcG9zYWwobyxvLm5vZGUuZ2V0UGFyYW1ldGVycygpLG51bGwpKX12YXIgbD1lLmdldElkZW50aWZpZXIoKXx8bnVsbDtyZXR1cm4gdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5vbkNzc01peGluUmVmZXJlbmNlJiZjLm9uQ3NzTWl4aW5SZWZlcmVuY2Uoe21peGluTmFtZTpyLmN1cnJlbnRXb3JkLHJhbmdlOnIuZ2V0Q29tcGxldGlvblJhbmdlKGwpfSl9KSxufSx0LnByb3RvdHlwZS5nZXRUZXJtUHJvcG9zYWxzPWZ1bmN0aW9uKGUsbixyKXtmb3IodmFyIGk9dGhpcy5nZXRTeW1ib2xDb250ZXh0KCkuZmluZFN5bWJvbHNBdE9mZnNldCh0aGlzLm9mZnNldCxaLkZ1bmN0aW9uKSxzPTAsYT1pO3M8YS5sZW5ndGg7cysrKXt2YXIgbz1hW3NdO28ubm9kZSBpbnN0YW5jZW9mIG5yJiZyLml0ZW1zLnB1c2godGhpcy5tYWtlVGVybVByb3Bvc2FsKG8sby5ub2RlLmdldFBhcmFtZXRlcnMoKSxuKSl9cmV0dXJuIHJ9LHQucHJvdG90eXBlLm1ha2VUZXJtUHJvcG9zYWw9ZnVuY3Rpb24oZSxuLHIpe2Uubm9kZTt2YXIgaT1uLmdldENoaWxkcmVuKCkubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgdHI/YS5nZXROYW1lKCk6YS5nZXRUZXh0KCl9KSxzPWUubmFtZSsiKCIraS5tYXAoZnVuY3Rpb24oYSxvKXtyZXR1cm4iJHsiKyhvKzEpKyI6IithKyJ9In0pLmpvaW4oIiwgIikrIikiO3JldHVybntsYWJlbDplLm5hbWUsZGV0YWlsOmUubmFtZSsiKCIraS5qb2luKCIsICIpKyIpIix0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UocikscyksaW5zZXJ0VGV4dEZvcm1hdDppdCxraW5kOiQuRnVuY3Rpb24sc29ydFRleHQ6ZXQuVGVybX19LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yU3VwcG9ydHNDb25kaXRpb249ZnVuY3Rpb24oZSxuKXt2YXIgcj1lLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0KHRoaXMub2Zmc2V0KTtpZihyKXtpZihyIGluc3RhbmNlb2YgWmUpcmV0dXJuIVVlKHIuY29sb25Qb3NpdGlvbil8fHRoaXMub2Zmc2V0PD1yLmNvbG9uUG9zaXRpb24/dGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkocixuKTp0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShyLG4pO2lmKHIgaW5zdGFuY2VvZiB4bilyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uc0ZvclN1cHBvcnRzQ29uZGl0aW9uKHIsbil9cmV0dXJuIFVlKGUubFBhcmVudCkmJnRoaXMub2Zmc2V0PmUubFBhcmVudCYmKCFVZShlLnJQYXJlbnQpfHx0aGlzLm9mZnNldDw9ZS5yUGFyZW50KT90aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShudWxsLG4pOm59LHQucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yU3VwcG9ydHM9ZnVuY3Rpb24oZSxuKXt2YXIgcj1lLmdldERlY2xhcmF0aW9ucygpLGk9IXJ8fHRoaXMub2Zmc2V0PD1yLm9mZnNldDtpZihpKXt2YXIgcz1lLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0KHRoaXMub2Zmc2V0KTtyZXR1cm4gcyBpbnN0YW5jZW9mIHhuP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0c0NvbmRpdGlvbihzLG4pOm59cmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbkZvclRvcExldmVsKG4pfSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvckV4dGVuZHNSZWZlcmVuY2U9ZnVuY3Rpb24oZSxuLHIpe3JldHVybiByfSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uRm9yVXJpTGl0ZXJhbFZhbHVlPWZ1bmN0aW9uKGUsbil7dmFyIHIsaSxzO2lmKGUuaGFzQ2hpbGRyZW4oKSl7dmFyIG89ZS5nZXRDaGlsZCgwKTtyPW8uZ2V0VGV4dCgpLGk9dGhpcy5wb3NpdGlvbixzPXRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG8pfWVsc2V7cj0iIixpPXRoaXMucG9zaXRpb247dmFyIGE9dGhpcy50ZXh0RG9jdW1lbnQucG9zaXRpb25BdChlLm9mZnNldCs0KTtzPWllLmNyZWF0ZShhLGEpfXJldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMuZm9yRWFjaChmdW5jdGlvbihsKXtsLm9uQ3NzVVJJTGl0ZXJhbFZhbHVlJiZsLm9uQ3NzVVJJTGl0ZXJhbFZhbHVlKHt1cmlWYWx1ZTpyLHBvc2l0aW9uOmkscmFuZ2U6c30pfSksbn0sdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbkZvckltcG9ydFBhdGg9ZnVuY3Rpb24oZSxuKXt2YXIgcj10aGlzO3JldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMuZm9yRWFjaChmdW5jdGlvbihpKXtpLm9uQ3NzSW1wb3J0UGF0aCYmaS5vbkNzc0ltcG9ydFBhdGgoe3BhdGhWYWx1ZTplLmdldFRleHQoKSxwb3NpdGlvbjpyLnBvc2l0aW9uLHJhbmdlOnIuZ2V0Q29tcGxldGlvblJhbmdlKGUpfSl9KSxufSx0LnByb3RvdHlwZS5oYXNDaGFyYWN0ZXJBdFBvc2l0aW9uPWZ1bmN0aW9uKGUsbil7dmFyIHI9dGhpcy50ZXh0RG9jdW1lbnQuZ2V0VGV4dCgpO3JldHVybiBlPj0wJiZlPHIubGVuZ3RoJiZyLmNoYXJBdChlKT09PW59LHQucHJvdG90eXBlLmRvZXNTdXBwb3J0TWFya2Rvd249ZnVuY3Rpb24oKXt2YXIgZSxuLHI7aWYoIVVlKHRoaXMuc3VwcG9ydHNNYXJrZG93bikpe2lmKCFVZSh0aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpKXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd249ITAsdGhpcy5zdXBwb3J0c01hcmtkb3duO3ZhciBpPShyPShuPShlPXRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy50ZXh0RG9jdW1lbnQpPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5jb21wbGV0aW9uKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4uY29tcGxldGlvbkl0ZW0pPT09bnVsbHx8cj09PXZvaWQgMD92b2lkIDA6ci5kb2N1bWVudGF0aW9uRm9ybWF0O3RoaXMuc3VwcG9ydHNNYXJrZG93bj1BcnJheS5pc0FycmF5KGkpJiZpLmluZGV4T2YoT2UuTWFya2Rvd24pIT09LTF9cmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bn0sdH0oKTtmdW5jdGlvbiBObih0KXtyZXR1cm4hISh0LnN0YXR1cyYmKHQuc3RhdHVzPT09Im5vbnN0YW5kYXJkInx8dC5zdGF0dXM9PT0ib2Jzb2xldGUiKSl9dmFyIE9pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuZW50cmllcz17fX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuZW50cmllc1tlXT0hMH0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLmVudHJpZXNbZV19LHQucHJvdG90eXBlLmdldEVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5lbnRyaWVzKX0sdH0oKTtmdW5jdGlvbiBlbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9cKFwpJC8sIigkMSkiKX1mdW5jdGlvbiB1cCh0LGUpe3ZhciBuPWUuZ2V0RnVsbFByb3BlcnR5TmFtZSgpLHI9bmV3IE9pO2Z1bmN0aW9uIGkobyl7cmV0dXJuKG8gaW5zdGFuY2VvZiBXZXx8byBpbnN0YW5jZW9mIHlpfHxvIGluc3RhbmNlb2YgdmkpJiZyLmFkZChvLmdldFRleHQoKSksITB9ZnVuY3Rpb24gcyhvKXt2YXIgbD1vLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKTtyZXR1cm4gbj09PWx9ZnVuY3Rpb24gYShvKXtpZihvIGluc3RhbmNlb2YgWmUmJm8hPT1lJiZzKG8pKXt2YXIgbD1vLmdldFZhbHVlKCk7bCYmbC5hY2NlcHQoaSl9cmV0dXJuITB9cmV0dXJuIHQuYWNjZXB0KGEpLHJ9dmFyIHBwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3RoaXMuZW50cmllcz1lLHRoaXMuY3VycmVudE9mZnNldD1ufXJldHVybiB0LnByb3RvdHlwZS52aXNpdE5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUgaW5zdGFuY2VvZiB2aXx8ZSBpbnN0YW5jZW9mIHduJiZCdShlKSkmJih0aGlzLmN1cnJlbnRPZmZzZXQ8ZS5vZmZzZXR8fGUuZW5kPHRoaXMuY3VycmVudE9mZnNldCkmJnRoaXMuZW50cmllcy5hZGQoZS5nZXRUZXh0KCkpLCEwfSx0fSgpLGZwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3RoaXMuZW50cmllcz1lLHRoaXMuY3VycmVudE9mZnNldD1ufXJldHVybiB0LnByb3RvdHlwZS52aXNpdE5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBXZSYmZS5pc0N1c3RvbVByb3BlcnR5JiYodGhpcy5jdXJyZW50T2Zmc2V0PGUub2Zmc2V0fHxlLmVuZDx0aGlzLmN1cnJlbnRPZmZzZXQpJiZ0aGlzLmVudHJpZXMuYWRkKGUuZ2V0VGV4dCgpKSwhMH0sdH0oKTtmdW5jdGlvbiBtcCh0LGUpe2Zvcih2YXIgbj1lLTEscj10LmdldFRleHQoKTtuPj0wJiZgIAkKXHIiOntbKCldfSwqPitgLmluZGV4T2Yoci5jaGFyQXQobikpPT09LTE7KW4tLTtyZXR1cm4gci5zdWJzdHJpbmcobisxLGUpfWZ1bmN0aW9uIFdsKHQpe3JldHVybiB0LnRvTG93ZXJDYXNlKClpbiBwcnx8LyheI1swLTlBLUZdezZ9JCl8KF4jWzAtOUEtRl17M30kKS9pLnRlc3QodCl9dmFyIE9sPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24ocixpKXtyLl9fcHJvdG9fXz1pfXx8ZnVuY3Rpb24ocixpKXtmb3IodmFyIHMgaW4gaSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxzKSYmKHJbc109aVtzXSl9LHQoZSxuKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYodHlwZW9mIG4hPSJmdW5jdGlvbiImJm4hPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7dChlLG4pO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9ZS5wcm90b3R5cGU9bj09PW51bGw/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0oKSxncD1HZSgpLFVpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1udWxsLHRoaXMuYXR0cmlidXRlcz1udWxsfXJldHVybiB0LnByb3RvdHlwZS5maW5kQXR0cmlidXRlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuYXR0cmlidXRlcylmb3IodmFyIG49MCxyPXRoaXMuYXR0cmlidXRlcztuPHIubGVuZ3RoO24rKyl7dmFyIGk9cltuXTtpZihpLm5hbWU9PT1lKXJldHVybiBpLnZhbHVlfXJldHVybiBudWxsfSx0LnByb3RvdHlwZS5hZGRDaGlsZD1mdW5jdGlvbihlKXtlIGluc3RhbmNlb2YgdCYmKGUucGFyZW50PXRoaXMpLHRoaXMuY2hpbGRyZW58fCh0aGlzLmNoaWxkcmVuPVtdKSx0aGlzLmNoaWxkcmVuLnB1c2goZSl9LHQucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlKXtpZih0aGlzLmF0dHJpYnV0ZXMpe3ZhciBuPXRoaXMuYXR0cmlidXRlc1t0aGlzLmF0dHJpYnV0ZXMubGVuZ3RoLTFdO24udmFsdWU9bi52YWx1ZStlfX0sdC5wcm90b3R5cGUucHJlcGVuZD1mdW5jdGlvbihlKXtpZih0aGlzLmF0dHJpYnV0ZXMpe3ZhciBuPXRoaXMuYXR0cmlidXRlc1swXTtuLnZhbHVlPWUrbi52YWx1ZX19LHQucHJvdG90eXBlLmZpbmRSb290PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXM7ZS5wYXJlbnQmJiEoZS5wYXJlbnQgaW5zdGFuY2VvZiB0bik7KWU9ZS5wYXJlbnQ7cmV0dXJuIGV9LHQucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKGUpe2lmKHRoaXMuY2hpbGRyZW4pe3ZhciBuPXRoaXMuY2hpbGRyZW4uaW5kZXhPZihlKTtpZihuIT09LTEpcmV0dXJuIHRoaXMuY2hpbGRyZW4uc3BsaWNlKG4sMSksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmFkZEF0dHI9ZnVuY3Rpb24oZSxuKXt0aGlzLmF0dHJpYnV0ZXN8fCh0aGlzLmF0dHJpYnV0ZXM9W10pO2Zvcih2YXIgcj0wLGk9dGhpcy5hdHRyaWJ1dGVzO3I8aS5sZW5ndGg7cisrKXt2YXIgcz1pW3JdO2lmKHMubmFtZT09PWUpe3MudmFsdWUrPSIgIituO3JldHVybn19dGhpcy5hdHRyaWJ1dGVzLnB1c2goe25hbWU6ZSx2YWx1ZTpufSl9LHQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKGUpe2U9PT12b2lkIDAmJihlPSEwKTt2YXIgbj1uZXcgdDtpZih0aGlzLmF0dHJpYnV0ZXMpe24uYXR0cmlidXRlcz1bXTtmb3IodmFyIHI9MCxpPXRoaXMuYXR0cmlidXRlcztyPGkubGVuZ3RoO3IrKyl7dmFyIHM9aVtyXTtuLmFkZEF0dHIocy5uYW1lLHMudmFsdWUpfX1pZihlJiZ0aGlzLmNoaWxkcmVuKXtuLmNoaWxkcmVuPVtdO2Zvcih2YXIgYT0wO2E8dGhpcy5jaGlsZHJlbi5sZW5ndGg7YSsrKW4uYWRkQ2hpbGQodGhpcy5jaGlsZHJlblthXS5jbG9uZSgpKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuY2xvbmVXaXRoUGFyZW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jbG9uZSghMSk7aWYodGhpcy5wYXJlbnQmJiEodGhpcy5wYXJlbnQgaW5zdGFuY2VvZiB0bikpe3ZhciBuPXRoaXMucGFyZW50LmNsb25lV2l0aFBhcmVudCgpO24uYWRkQ2hpbGQoZSl9cmV0dXJuIGV9LHR9KCksdG49ZnVuY3Rpb24odCl7T2woZSx0KTtmdW5jdGlvbiBlKCl7cmV0dXJuIHQhPT1udWxsJiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gZX0oVWkpLFZpPWZ1bmN0aW9uKHQpe09sKGUsdCk7ZnVuY3Rpb24gZShuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuYWRkQXR0cigibmFtZSIsbikscn1yZXR1cm4gZX0oVWkpLFVsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt0aGlzLnF1b3RlPWUsdGhpcy5yZXN1bHQ9W119cmV0dXJuIHQucHJvdG90eXBlLnByaW50PWZ1bmN0aW9uKGUpe3RoaXMucmVzdWx0PVtdLGUgaW5zdGFuY2VvZiB0bj9lLmNoaWxkcmVuJiZ0aGlzLmRvUHJpbnQoZS5jaGlsZHJlbiwwKTp0aGlzLmRvUHJpbnQoW2VdLDApO3ZhciBuPXRoaXMucmVzdWx0LmpvaW4oYApgKTtyZXR1cm5be2xhbmd1YWdlOiJodG1sIix2YWx1ZTpufV19LHQucHJvdG90eXBlLmRvUHJpbnQ9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHI9MCxpPWU7cjxpLmxlbmd0aDtyKyspe3ZhciBzPWlbcl07dGhpcy5kb1ByaW50RWxlbWVudChzLG4pLHMuY2hpbGRyZW4mJnRoaXMuZG9QcmludChzLmNoaWxkcmVuLG4rMSl9fSx0LnByb3RvdHlwZS53cml0ZUxpbmU9ZnVuY3Rpb24oZSxuKXt2YXIgcj1uZXcgQXJyYXkoZSsxKS5qb2luKCIgICIpO3RoaXMucmVzdWx0LnB1c2gocituKX0sdC5wcm90b3R5cGUuZG9QcmludEVsZW1lbnQ9ZnVuY3Rpb24oZSxuKXt2YXIgcj1lLmZpbmRBdHRyaWJ1dGUoIm5hbWUiKTtpZihlIGluc3RhbmNlb2YgVml8fHI9PT0i4oCmIil7dGhpcy53cml0ZUxpbmUobixyKTtyZXR1cm59dmFyIGk9WyI8Il07aWYocj9pLnB1c2gocik6aS5wdXNoKCJlbGVtZW50IiksZS5hdHRyaWJ1dGVzKWZvcih2YXIgcz0wLGE9ZS5hdHRyaWJ1dGVzO3M8YS5sZW5ndGg7cysrKXt2YXIgbz1hW3NdO2lmKG8ubmFtZSE9PSJuYW1lIil7aS5wdXNoKCIgIiksaS5wdXNoKG8ubmFtZSk7dmFyIGw9by52YWx1ZTtsJiYoaS5wdXNoKCI9IiksaS5wdXNoKHN0LmVuc3VyZShsLHRoaXMucXVvdGUpKSl9fWkucHVzaCgiPiIpLHRoaXMud3JpdGVMaW5lKG4saS5qb2luKCIiKSl9LHR9KCksc3Q7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUocixpKXtyZXR1cm4gaStuKHIpK2l9dC5lbnN1cmU9ZTtmdW5jdGlvbiBuKHIpe3ZhciBpPXIubWF0Y2goL15bJyJdKC4qKVsiJ10kLyk7cmV0dXJuIGk/aVsxXTpyfXQucmVtb3ZlPW59KShzdHx8KHN0PXt9KSk7dmFyIFZsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuaWQ9MCx0aGlzLmF0dHI9MCx0aGlzLnRhZz0wfXJldHVybiB0fSgpO2Z1bmN0aW9uIEJsKHQsZSl7Zm9yKHZhciBuPW5ldyBVaSxyPTAsaT10LmdldENoaWxkcmVuKCk7cjxpLmxlbmd0aDtyKyspe3ZhciBzPWlbcl07c3dpdGNoKHMudHlwZSl7Y2FzZSB2LlNlbGVjdG9yQ29tYmluYXRvcjppZihlKXt2YXIgYT1zLmdldFRleHQoKS5zcGxpdCgiJiIpO2lmKGEubGVuZ3RoPT09MSl7bi5hZGRBdHRyKCJuYW1lIixhWzBdKTticmVha31pZihuPWUuY2xvbmVXaXRoUGFyZW50KCksYVswXSl7dmFyIG89bi5maW5kUm9vdCgpO28ucHJlcGVuZChhWzBdKX1mb3IodmFyIGw9MTtsPGEubGVuZ3RoO2wrKyl7aWYobD4xKXt2YXIgYz1lLmNsb25lV2l0aFBhcmVudCgpO24uYWRkQ2hpbGQoYy5maW5kUm9vdCgpKSxuPWN9bi5hcHBlbmQoYVtsXSl9fWJyZWFrO2Nhc2Ugdi5TZWxlY3RvclBsYWNlaG9sZGVyOmlmKHMubWF0Y2hlcygiQGF0LXJvb3QiKSlyZXR1cm4gbjtjYXNlIHYuRWxlbWVudE5hbWVTZWxlY3Rvcjp2YXIgaD1zLmdldFRleHQoKTtuLmFkZEF0dHIoIm5hbWUiLGg9PT0iKiI/ImVsZW1lbnQiOlZlKGgpKTticmVhaztjYXNlIHYuQ2xhc3NTZWxlY3RvcjpuLmFkZEF0dHIoImNsYXNzIixWZShzLmdldFRleHQoKS5zdWJzdHJpbmcoMSkpKTticmVhaztjYXNlIHYuSWRlbnRpZmllclNlbGVjdG9yOm4uYWRkQXR0cigiaWQiLFZlKHMuZ2V0VGV4dCgpLnN1YnN0cmluZygxKSkpO2JyZWFrO2Nhc2Ugdi5NaXhpbkRlY2xhcmF0aW9uOm4uYWRkQXR0cigiY2xhc3MiLHMuZ2V0TmFtZSgpKTticmVhaztjYXNlIHYuUHNldWRvU2VsZWN0b3I6bi5hZGRBdHRyKFZlKHMuZ2V0VGV4dCgpKSwiIik7YnJlYWs7Y2FzZSB2LkF0dHJpYnV0ZVNlbGVjdG9yOnZhciB1PXMsZj11LmdldElkZW50aWZpZXIoKTtpZihmKXt2YXIgbT11LmdldFZhbHVlKCksZz11LmdldE9wZXJhdG9yKCksYj12b2lkIDA7aWYobSYmZylzd2l0Y2goVmUoZy5nZXRUZXh0KCkpKXtjYXNlInw9IjpiPSIiLmNvbmNhdChzdC5yZW1vdmUoVmUobS5nZXRUZXh0KCkpKSwiLeKApiIpO2JyZWFrO2Nhc2UiXj0iOmI9IiIuY29uY2F0KHN0LnJlbW92ZShWZShtLmdldFRleHQoKSkpLCLigKYiKTticmVhaztjYXNlIiQ9IjpiPSLigKYiLmNvbmNhdChzdC5yZW1vdmUoVmUobS5nZXRUZXh0KCkpKSk7YnJlYWs7Y2FzZSJ+PSI6Yj0iIOKApiAiLmNvbmNhdChzdC5yZW1vdmUoVmUobS5nZXRUZXh0KCkpKSwiIOKApiAiKTticmVhaztjYXNlIio9IjpiPSLigKYiLmNvbmNhdChzdC5yZW1vdmUoVmUobS5nZXRUZXh0KCkpKSwi4oCmIik7YnJlYWs7ZGVmYXVsdDpiPXN0LnJlbW92ZShWZShtLmdldFRleHQoKSkpO2JyZWFrfW4uYWRkQXR0cihWZShmLmdldFRleHQoKSksYil9YnJlYWt9fXJldHVybiBufWZ1bmN0aW9uIFZlKHQpe3ZhciBlPW5ldyB2bjtlLnNldFNvdXJjZSh0KTt2YXIgbj1lLnNjYW5VbnF1b3RlZFN0cmluZygpO3JldHVybiBuP24udGV4dDp0fXZhciBicD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dGhpcy5jc3NEYXRhTWFuYWdlcj1lfXJldHVybiB0LnByb3RvdHlwZS5zZWxlY3RvclRvTWFya2VkU3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciBuPXdwKGUpO2lmKG4pe3ZhciByPW5ldyBVbCgnIicpLnByaW50KG4pO3JldHVybiByLnB1c2godGhpcy5zZWxlY3RvclRvU3BlY2lmaWNpdHlNYXJrZWRTdHJpbmcoZSkpLHJ9ZWxzZSByZXR1cm5bXX0sdC5wcm90b3R5cGUuc2ltcGxlU2VsZWN0b3JUb01hcmtlZFN0cmluZz1mdW5jdGlvbihlKXt2YXIgbj1CbChlKSxyPW5ldyBVbCgnIicpLnByaW50KG4pO3JldHVybiByLnB1c2godGhpcy5zZWxlY3RvclRvU3BlY2lmaWNpdHlNYXJrZWRTdHJpbmcoZSkpLHJ9LHQucHJvdG90eXBlLmlzUHNldWRvRWxlbWVudElkZW50aWZpZXI9ZnVuY3Rpb24oZSl7dmFyIG49ZS5tYXRjaCgvXjo6PyhbXHctXSspLyk7cmV0dXJuIG4/ISF0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFBzZXVkb0VsZW1lbnQoIjo6IituWzFdKTohMX0sdC5wcm90b3R5cGUuc2VsZWN0b3JUb1NwZWNpZmljaXR5TWFya2VkU3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMscj1mdW5jdGlvbihzKXt2YXIgYT1uZXcgVmw7ZTpmb3IodmFyIG89MCxsPXMuZ2V0Q2hpbGRyZW4oKTtvPGwubGVuZ3RoO28rKyl7dmFyIGM9bFtvXTtzd2l0Y2goYy50eXBlKXtjYXNlIHYuSWRlbnRpZmllclNlbGVjdG9yOmEuaWQrKzticmVhaztjYXNlIHYuQ2xhc3NTZWxlY3RvcjpjYXNlIHYuQXR0cmlidXRlU2VsZWN0b3I6YS5hdHRyKys7YnJlYWs7Y2FzZSB2LkVsZW1lbnROYW1lU2VsZWN0b3I6aWYoYy5tYXRjaGVzKCIqIikpYnJlYWs7YS50YWcrKzticmVhaztjYXNlIHYuUHNldWRvU2VsZWN0b3I6dmFyIGg9Yy5nZXRUZXh0KCk7aWYobi5pc1BzZXVkb0VsZW1lbnRJZGVudGlmaWVyKGgpKXthLnRhZysrO2JyZWFrfWlmKGgubWF0Y2goL146d2hlcmUvaSkpY29udGludWUgZTtpZihoLm1hdGNoKC9eOihub3R8aGFzfGlzKS9pKSYmYy5nZXRDaGlsZHJlbigpLmxlbmd0aD4wKXtmb3IodmFyIHU9bmV3IFZsLGY9MCxtPWMuZ2V0Q2hpbGRyZW4oKTtmPG0ubGVuZ3RoO2YrKyl7dmFyIGc9bVtmXTtnLnR5cGU9PT12LlVuZGVmaW5lZCYmZy5nZXRDaGlsZHJlbigpO2Zvcih2YXIgYj0wLHk9Zy5nZXRDaGlsZHJlbigpO2I8eS5sZW5ndGg7YisrKXt2YXIgQz15W2JdLGs9cihDKTtpZihrLmlkPnUuaWQpe3U9aztjb250aW51ZX1lbHNlIGlmKGsuaWQ8dS5pZCljb250aW51ZTtpZihrLmF0dHI+dS5hdHRyKXt1PWs7Y29udGludWV9ZWxzZSBpZihrLmF0dHI8dS5hdHRyKWNvbnRpbnVlO2lmKGsudGFnPnUudGFnKXt1PWs7Y29udGludWV9fX1hLmlkKz11LmlkLGEuYXR0cis9dS5hdHRyLGEudGFnKz11LnRhZztjb250aW51ZSBlfWEuYXR0cisrO2JyZWFrfWlmKGMuZ2V0Q2hpbGRyZW4oKS5sZW5ndGg+MCl7dmFyIGs9cihjKTthLmlkKz1rLmlkLGEuYXR0cis9ay5hdHRyLGEudGFnKz1rLnRhZ319cmV0dXJuIGF9LGk9cihlKTtyZXR1cm4gZ3AoInNwZWNpZmljaXR5IiwiW1NlbGVjdG9yIFNwZWNpZmljaXR5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvU3BlY2lmaWNpdHkpOiAoezB9LCB7MX0sIHsyfSkiLGkuaWQsaS5hdHRyLGkudGFnKX0sdH0oKSx2cD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dGhpcy5wcmV2PW51bGwsdGhpcy5lbGVtZW50PWV9cmV0dXJuIHQucHJvdG90eXBlLnByb2Nlc3NTZWxlY3Rvcj1mdW5jdGlvbihlKXt2YXIgbj1udWxsO2lmKCEodGhpcy5lbGVtZW50IGluc3RhbmNlb2YgdG4pJiZlLmdldENoaWxkcmVuKCkuc29tZShmdW5jdGlvbihoKXtyZXR1cm4gaC5oYXNDaGlsZHJlbigpJiZoLmdldENoaWxkKDApLnR5cGU9PT12LlNlbGVjdG9yQ29tYmluYXRvcn0pKXt2YXIgcj10aGlzLmVsZW1lbnQuZmluZFJvb3QoKTtyLnBhcmVudCBpbnN0YW5jZW9mIHRuJiYobj10aGlzLmVsZW1lbnQsdGhpcy5lbGVtZW50PXIucGFyZW50LHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChyKSx0aGlzLnByZXY9bnVsbCl9Zm9yKHZhciBpPTAscz1lLmdldENoaWxkcmVuKCk7aTxzLmxlbmd0aDtpKyspe3ZhciBhPXNbaV07aWYoYSBpbnN0YW5jZW9mIFh0KXtpZih0aGlzLnByZXYgaW5zdGFuY2VvZiBYdCl7dmFyIG89bmV3IFZpKCLigKYiKTt0aGlzLmVsZW1lbnQuYWRkQ2hpbGQobyksdGhpcy5lbGVtZW50PW99ZWxzZSB0aGlzLnByZXYmJih0aGlzLnByZXYubWF0Y2hlcygiKyIpfHx0aGlzLnByZXYubWF0Y2hlcygifiIpKSYmdGhpcy5lbGVtZW50LnBhcmVudCYmKHRoaXMuZWxlbWVudD10aGlzLmVsZW1lbnQucGFyZW50KTt0aGlzLnByZXYmJnRoaXMucHJldi5tYXRjaGVzKCJ+IikmJnRoaXMuZWxlbWVudC5hZGRDaGlsZChuZXcgVmkoIuKLriIpKTt2YXIgbD1CbChhLG4pLGM9bC5maW5kUm9vdCgpO3RoaXMuZWxlbWVudC5hZGRDaGlsZChjKSx0aGlzLmVsZW1lbnQ9bH0oYSBpbnN0YW5jZW9mIFh0fHxhLnR5cGU9PT12LlNlbGVjdG9yQ29tYmluYXRvclBhcmVudHx8YS50eXBlPT09di5TZWxlY3RvckNvbWJpbmF0b3JTaGFkb3dQaWVyY2luZ0Rlc2NlbmRhbnR8fGEudHlwZT09PXYuU2VsZWN0b3JDb21iaW5hdG9yU2libGluZ3x8YS50eXBlPT09di5TZWxlY3RvckNvbWJpbmF0b3JBbGxTaWJsaW5ncykmJih0aGlzLnByZXY9YSl9fSx0fSgpO2Z1bmN0aW9uIHlwKHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2Ugdi5NaXhpbkRlY2xhcmF0aW9uOmNhc2Ugdi5TdHlsZXNoZWV0OnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHdwKHQpe2lmKHQubWF0Y2hlcygiQGF0LXJvb3QiKSlyZXR1cm4gbnVsbDt2YXIgZT1uZXcgdG4sbj1bXSxyPXQuZ2V0UGFyZW50KCk7aWYociBpbnN0YW5jZW9mIEp0KWZvcih2YXIgaT1yLmdldFBhcmVudCgpO2kmJiF5cChpKTspe2lmKGkgaW5zdGFuY2VvZiBKdCl7aWYoaS5nZXRTZWxlY3RvcnMoKS5tYXRjaGVzKCJAYXQtcm9vdCIpKWJyZWFrO24ucHVzaChpKX1pPWkuZ2V0UGFyZW50KCl9Zm9yKHZhciBzPW5ldyB2cChlKSxhPW4ubGVuZ3RoLTE7YT49MDthLS0pe3ZhciBvPW5bYV0uZ2V0U2VsZWN0b3JzKCkuZ2V0Q2hpbGQoMCk7byYmcy5wcm9jZXNzU2VsZWN0b3Iobyl9cmV0dXJuIHMucHJvY2Vzc1NlbGVjdG9yKHQpLGV9dmFyIEJpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3RoaXMuY2xpZW50Q2FwYWJpbGl0aWVzPWUsdGhpcy5jc3NEYXRhTWFuYWdlcj1uLHRoaXMuc2VsZWN0b3JQcmludGluZz1uZXcgYnAobil9cmV0dXJuIHQucHJvdG90eXBlLmNvbmZpZ3VyZT1mdW5jdGlvbihlKXt0aGlzLmRlZmF1bHRTZXR0aW5ncz1lfSx0LnByb3RvdHlwZS5kb0hvdmVyPWZ1bmN0aW9uKGUsbixyLGkpe2k9PT12b2lkIDAmJihpPXRoaXMuZGVmYXVsdFNldHRpbmdzKTtmdW5jdGlvbiBzKHkpe3JldHVybiBpZS5jcmVhdGUoZS5wb3NpdGlvbkF0KHkub2Zmc2V0KSxlLnBvc2l0aW9uQXQoeS5lbmQpKX1mb3IodmFyIGE9ZS5vZmZzZXRBdChuKSxvPWRpKHIsYSksbD1udWxsLGM9MDtjPG8ubGVuZ3RoO2MrKyl7dmFyIGg9b1tjXTtpZihoIGluc3RhbmNlb2YgeW4pe2w9e2NvbnRlbnRzOnRoaXMuc2VsZWN0b3JQcmludGluZy5zZWxlY3RvclRvTWFya2VkU3RyaW5nKGgpLHJhbmdlOnMoaCl9O2JyZWFrfWlmKGggaW5zdGFuY2VvZiBYdCl7Z2UoaC5nZXRUZXh0KCksIkAiKXx8KGw9e2NvbnRlbnRzOnRoaXMuc2VsZWN0b3JQcmludGluZy5zaW1wbGVTZWxlY3RvclRvTWFya2VkU3RyaW5nKGgpLHJhbmdlOnMoaCl9KTticmVha31pZihoIGluc3RhbmNlb2YgWmUpe3ZhciB1PWguZ2V0RnVsbFByb3BlcnR5TmFtZSgpLGY9dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQcm9wZXJ0eSh1KTtpZihmKXt2YXIgbT15dChmLHRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpLGkpO20/bD17Y29udGVudHM6bSxyYW5nZTpzKGgpfTpsPW51bGx9Y29udGludWV9aWYoaCBpbnN0YW5jZW9mIE5vKXt2YXIgZz1oLmdldFRleHQoKSxmPXRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0QXREaXJlY3RpdmUoZyk7aWYoZil7dmFyIG09eXQoZix0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxpKTttP2w9e2NvbnRlbnRzOm0scmFuZ2U6cyhoKX06bD1udWxsfWNvbnRpbnVlfWlmKGggaW5zdGFuY2VvZiBVJiZoLnR5cGU9PT12LlBzZXVkb1NlbGVjdG9yKXt2YXIgYj1oLmdldFRleHQoKSxmPWIuc2xpY2UoMCwyKT09PSI6OiI/dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQc2V1ZG9FbGVtZW50KGIpOnRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHNldWRvQ2xhc3MoYik7aWYoZil7dmFyIG09eXQoZix0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxpKTttP2w9e2NvbnRlbnRzOm0scmFuZ2U6cyhoKX06bD1udWxsfWNvbnRpbnVlfX1yZXR1cm4gbCYmKGwuY29udGVudHM9dGhpcy5jb252ZXJ0Q29udGVudHMobC5jb250ZW50cykpLGx9LHQucHJvdG90eXBlLmNvbnZlcnRDb250ZW50cz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCl8fHR5cGVvZiBlPT0ic3RyaW5nIj9lOiJraW5kImluIGU/e2tpbmQ6InBsYWludGV4dCIsdmFsdWU6ZS52YWx1ZX06QXJyYXkuaXNBcnJheShlKT9lLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciP246bi52YWx1ZX0pOmUudmFsdWV9LHQucHJvdG90eXBlLmRvZXNTdXBwb3J0TWFya2Rvd249ZnVuY3Rpb24oKXtpZighVWUodGhpcy5zdXBwb3J0c01hcmtkb3duKSl7aWYoIVVlKHRoaXMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjt2YXIgZT10aGlzLmNsaWVudENhcGFiaWxpdGllcy50ZXh0RG9jdW1lbnQmJnRoaXMuY2xpZW50Q2FwYWJpbGl0aWVzLnRleHREb2N1bWVudC5ob3Zlcjt0aGlzLnN1cHBvcnRzTWFya2Rvd249ZSYmZS5jb250ZW50Rm9ybWF0JiZBcnJheS5pc0FycmF5KGUuY29udGVudEZvcm1hdCkmJmUuY29udGVudEZvcm1hdC5pbmRleE9mKE9lLk1hcmtkb3duKSE9PS0xfXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd259LHR9KCksTW49ZnVuY3Rpb24odCxlLG4scil7ZnVuY3Rpb24gaShzKXtyZXR1cm4gcyBpbnN0YW5jZW9mIG4/czpuZXcgbihmdW5jdGlvbihhKXthKHMpfSl9cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoZnVuY3Rpb24ocyxhKXtmdW5jdGlvbiBvKGgpe3RyeXtjKHIubmV4dChoKSl9Y2F0Y2godSl7YSh1KX19ZnVuY3Rpb24gbChoKXt0cnl7YyhyLnRocm93KGgpKX1jYXRjaCh1KXthKHUpfX1mdW5jdGlvbiBjKGgpe2guZG9uZT9zKGgudmFsdWUpOmkoaC52YWx1ZSkudGhlbihvLGwpfWMoKHI9ci5hcHBseSh0LFtdKSkubmV4dCgpKX0pfSx6bj1mdW5jdGlvbih0LGUpe3ZhciBuPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZihzWzBdJjEpdGhyb3cgc1sxXTtyZXR1cm4gc1sxXX0sdHJ5czpbXSxvcHM6W119LHIsaSxzLGE7cmV0dXJuIGE9e25leHQ6bygwKSx0aHJvdzpvKDEpLHJldHVybjpvKDIpfSx0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiYoYVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhO2Z1bmN0aW9uIG8oYyl7cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBsKFtjLGhdKX19ZnVuY3Rpb24gbChjKXtpZihyKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO247KXRyeXtpZihyPTEsaSYmKHM9Y1swXSYyP2kucmV0dXJuOmNbMF0/aS50aHJvd3x8KChzPWkucmV0dXJuKSYmcy5jYWxsKGkpLDApOmkubmV4dCkmJiEocz1zLmNhbGwoaSxjWzFdKSkuZG9uZSlyZXR1cm4gcztzd2l0Y2goaT0wLHMmJihjPVtjWzBdJjIscy52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6cz1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gbi5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTpuLmxhYmVsKyssaT1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPW4ub3BzLnBvcCgpLG4udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKHM9bi50cnlzLCEocz1zLmxlbmd0aD4wJiZzW3MubGVuZ3RoLTFdKSYmKGNbMF09PT02fHxjWzBdPT09Mikpe249MDtjb250aW51ZX1pZihjWzBdPT09MyYmKCFzfHxjWzFdPnNbMF0mJmNbMV08c1szXSkpe24ubGFiZWw9Y1sxXTticmVha31pZihjWzBdPT09NiYmbi5sYWJlbDxzWzFdKXtuLmxhYmVsPXNbMV0scz1jO2JyZWFrfWlmKHMmJm4ubGFiZWw8c1syXSl7bi5sYWJlbD1zWzJdLG4ub3BzLnB1c2goYyk7YnJlYWt9c1syXSYmbi5vcHMucG9wKCksbi50cnlzLnBvcCgpO2NvbnRpbnVlfWM9ZS5jYWxsKHQsbil9Y2F0Y2goaCl7Yz1bNixoXSxpPTB9ZmluYWxseXtyPXM9MH1pZihjWzBdJjUpdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX19LHFsPUdlKCksamw9L15cdys6XC9cLy8sJGw9L15kYXRhOi8scWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7dGhpcy5maWxlU3lzdGVtUHJvdmlkZXI9ZSx0aGlzLnJlc29sdmVNb2R1bGVSZWZlcmVuY2VzPW59cmV0dXJuIHQucHJvdG90eXBlLmZpbmREZWZpbml0aW9uPWZ1bmN0aW9uKGUsbixyKXt2YXIgaT1uZXcgTWkocikscz1lLm9mZnNldEF0KG4pLGE9aGkocixzKTtpZighYSlyZXR1cm4gbnVsbDt2YXIgbz1pLmZpbmRTeW1ib2xGcm9tTm9kZShhKTtyZXR1cm4gbz97dXJpOmUudXJpLHJhbmdlOlJ0KG8ubm9kZSxlKX06bnVsbH0sdC5wcm90b3R5cGUuZmluZFJlZmVyZW5jZXM9ZnVuY3Rpb24oZSxuLHIpe3ZhciBpPXRoaXMuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLG4scik7cmV0dXJuIGkubWFwKGZ1bmN0aW9uKHMpe3JldHVybnt1cmk6ZS51cmkscmFuZ2U6cy5yYW5nZX19KX0sdC5wcm90b3R5cGUuZmluZERvY3VtZW50SGlnaGxpZ2h0cz1mdW5jdGlvbihlLG4scil7dmFyIGk9W10scz1lLm9mZnNldEF0KG4pLGE9aGkocixzKTtpZighYXx8YS50eXBlPT09di5TdHlsZXNoZWV0fHxhLnR5cGU9PT12LkRlY2xhcmF0aW9ucylyZXR1cm4gaTthLnR5cGU9PT12LklkZW50aWZpZXImJmEucGFyZW50JiZhLnBhcmVudC50eXBlPT09di5DbGFzc1NlbGVjdG9yJiYoYT1hLnBhcmVudCk7dmFyIG89bmV3IE1pKHIpLGw9by5maW5kU3ltYm9sRnJvbU5vZGUoYSksYz1hLmdldFRleHQoKTtyZXR1cm4gci5hY2NlcHQoZnVuY3Rpb24oaCl7aWYobCl7aWYoby5tYXRjaGVzU3ltYm9sKGgsbCkpcmV0dXJuIGkucHVzaCh7a2luZDpIbChoKSxyYW5nZTpSdChoLGUpfSksITF9ZWxzZSBhJiZhLnR5cGU9PT1oLnR5cGUmJmgubWF0Y2hlcyhjKSYmaS5wdXNoKHtraW5kOkhsKGgpLHJhbmdlOlJ0KGgsZSl9KTtyZXR1cm4hMH0pLGl9LHQucHJvdG90eXBlLmlzUmF3U3RyaW5nRG9jdW1lbnRMaW5rTm9kZT1mdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT09di5JbXBvcnR9LHQucHJvdG90eXBlLmZpbmREb2N1bWVudExpbmtzPWZ1bmN0aW9uKGUsbixyKXtmb3IodmFyIGk9dGhpcy5maW5kVW5yZXNvbHZlZExpbmtzKGUsbikscz1bXSxhPTAsbz1pO2E8by5sZW5ndGg7YSsrKXt2YXIgbD1vW2FdLGM9bC5saW5rLGg9Yy50YXJnZXQ7aWYoISghaHx8JGwudGVzdChoKSkpaWYoamwudGVzdChoKSlzLnB1c2goYyk7ZWxzZXt2YXIgdT1yLnJlc29sdmVSZWZlcmVuY2UoaCxlLnVyaSk7dSYmKGMudGFyZ2V0PXUpLHMucHVzaChjKX19cmV0dXJuIHN9LHQucHJvdG90eXBlLmZpbmREb2N1bWVudExpbmtzMj1mdW5jdGlvbihlLG4scil7cmV0dXJuIE1uKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBpLHMsYSxvLGwsYyxoLHU7cmV0dXJuIHpuKHRoaXMsZnVuY3Rpb24oZil7c3dpdGNoKGYubGFiZWwpe2Nhc2UgMDppPXRoaXMuZmluZFVucmVzb2x2ZWRMaW5rcyhlLG4pLHM9W10sYT0wLG89aSxmLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBhPG8ubGVuZ3RoPyhsPW9bYV0sYz1sLmxpbmssaD1jLnRhcmdldCwhaHx8JGwudGVzdChoKT9bMyw1XTpbMywyXSk6WzMsNl07Y2FzZSAyOnJldHVybiBqbC50ZXN0KGgpPyhzLnB1c2goYyksWzMsNV0pOlszLDNdO2Nhc2UgMzpyZXR1cm5bNCx0aGlzLnJlc29sdmVSZWxhdGl2ZVJlZmVyZW5jZShoLGUudXJpLHIsbC5pc1Jhd0xpbmspXTtjYXNlIDQ6dT1mLnNlbnQoKSx1IT09dm9pZCAwJiYoYy50YXJnZXQ9dSxzLnB1c2goYykpLGYubGFiZWw9NTtjYXNlIDU6cmV0dXJuIGErKyxbMywxXTtjYXNlIDY6cmV0dXJuWzIsc119fSl9KX0sdC5wcm90b3R5cGUuZmluZFVucmVzb2x2ZWRMaW5rcz1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXMsaT1bXSxzPWZ1bmN0aW9uKGEpe3ZhciBvPWEuZ2V0VGV4dCgpLGw9UnQoYSxlKTtpZighKGwuc3RhcnQubGluZT09PWwuZW5kLmxpbmUmJmwuc3RhcnQuY2hhcmFjdGVyPT09bC5lbmQuY2hhcmFjdGVyKSl7KGdlKG8sIiciKXx8Z2UobywnIicpKSYmKG89by5zbGljZSgxLC0xKSk7dmFyIGM9YS5wYXJlbnQ/ci5pc1Jhd1N0cmluZ0RvY3VtZW50TGlua05vZGUoYS5wYXJlbnQpOiExO2kucHVzaCh7bGluazp7dGFyZ2V0Om8scmFuZ2U6bH0saXNSYXdMaW5rOmN9KX19O3JldHVybiBuLmFjY2VwdChmdW5jdGlvbihhKXtpZihhLnR5cGU9PT12LlVSSUxpdGVyYWwpe3ZhciBvPWEuZ2V0Q2hpbGQoMCk7cmV0dXJuIG8mJnMobyksITF9aWYoYS5wYXJlbnQmJnIuaXNSYXdTdHJpbmdEb2N1bWVudExpbmtOb2RlKGEucGFyZW50KSl7dmFyIGw9YS5nZXRUZXh0KCk7cmV0dXJuKGdlKGwsIiciKXx8Z2UobCwnIicpKSYmcyhhKSwhMX1yZXR1cm4hMH0pLGl9LHQucHJvdG90eXBlLmZpbmREb2N1bWVudFN5bWJvbHM9ZnVuY3Rpb24oZSxuKXt2YXIgcj1bXTtyZXR1cm4gbi5hY2NlcHQoZnVuY3Rpb24oaSl7dmFyIHM9e25hbWU6bnVsbCxraW5kOkV0LkNsYXNzLGxvY2F0aW9uOm51bGx9LGE9aTtpZihpIGluc3RhbmNlb2YgeW4pcmV0dXJuIHMubmFtZT1pLmdldFRleHQoKSxhPWkuZmluZEFQYXJlbnQodi5SdWxlc2V0LHYuRXh0ZW5kc1JlZmVyZW5jZSksYSYmKHMubG9jYXRpb249a24uY3JlYXRlKGUudXJpLFJ0KGEsZSkpLHIucHVzaChzKSksITE7aWYoaSBpbnN0YW5jZW9mIHJyKXMubmFtZT1pLmdldE5hbWUoKSxzLmtpbmQ9RXQuVmFyaWFibGU7ZWxzZSBpZihpIGluc3RhbmNlb2YgQ24pcy5uYW1lPWkuZ2V0TmFtZSgpLHMua2luZD1FdC5NZXRob2Q7ZWxzZSBpZihpIGluc3RhbmNlb2YgbnIpcy5uYW1lPWkuZ2V0TmFtZSgpLHMua2luZD1FdC5GdW5jdGlvbjtlbHNlIGlmKGkgaW5zdGFuY2VvZiBfbylzLm5hbWU9cWwoImxpdGVyYWwua2V5ZnJhbWVzIiwiQGtleWZyYW1lcyB7MH0iLGkuZ2V0TmFtZSgpKTtlbHNlIGlmKGkgaW5zdGFuY2VvZiBDbylzLm5hbWU9cWwoImxpdGVyYWwuZm9udGZhY2UiLCJAZm9udC1mYWNlIik7ZWxzZSBpZihpIGluc3RhbmNlb2YgUm8pe3ZhciBvPWkuZ2V0Q2hpbGQoMCk7byBpbnN0YW5jZW9mIEZvJiYocy5uYW1lPSJAbWVkaWEgIitvLmdldFRleHQoKSxzLmtpbmQ9RXQuTW9kdWxlKX1yZXR1cm4gcy5uYW1lJiYocy5sb2NhdGlvbj1rbi5jcmVhdGUoZS51cmksUnQoYSxlKSksci5wdXNoKHMpKSwhMH0pLHJ9LHQucHJvdG90eXBlLmZpbmREb2N1bWVudENvbG9ycz1mdW5jdGlvbihlLG4pe3ZhciByPVtdO3JldHVybiBuLmFjY2VwdChmdW5jdGlvbihpKXt2YXIgcz14cChpLGUpO3JldHVybiBzJiZyLnB1c2gocyksITB9KSxyfSx0LnByb3RvdHlwZS5nZXRDb2xvclByZXNlbnRhdGlvbnM9ZnVuY3Rpb24oZSxuLHIsaSl7dmFyIHM9W10sYT1NYXRoLnJvdW5kKHIucmVkKjI1NSksbz1NYXRoLnJvdW5kKHIuZ3JlZW4qMjU1KSxsPU1hdGgucm91bmQoci5ibHVlKjI1NSksYztyLmFscGhhPT09MT9jPSJyZ2IoIi5jb25jYXQoYSwiLCAiKS5jb25jYXQobywiLCAiKS5jb25jYXQobCwiKSIpOmM9InJnYmEoIi5jb25jYXQoYSwiLCAiKS5jb25jYXQobywiLCAiKS5jb25jYXQobCwiLCAiKS5jb25jYXQoci5hbHBoYSwiKSIpLHMucHVzaCh7bGFiZWw6Yyx0ZXh0RWRpdDpILnJlcGxhY2UoaSxjKX0pLHIuYWxwaGE9PT0xP2M9IiMiLmNvbmNhdChGdChhKSkuY29uY2F0KEZ0KG8pKS5jb25jYXQoRnQobCkpOmM9IiMiLmNvbmNhdChGdChhKSkuY29uY2F0KEZ0KG8pKS5jb25jYXQoRnQobCkpLmNvbmNhdChGdChNYXRoLnJvdW5kKHIuYWxwaGEqMjU1KSkpLHMucHVzaCh7bGFiZWw6Yyx0ZXh0RWRpdDpILnJlcGxhY2UoaSxjKX0pO3ZhciBoPXlsKHIpO2guYT09PTE/Yz0iaHNsKCIuY29uY2F0KGguaCwiLCAiKS5jb25jYXQoTWF0aC5yb3VuZChoLnMqMTAwKSwiJSwgIikuY29uY2F0KE1hdGgucm91bmQoaC5sKjEwMCksIiUpIik6Yz0iaHNsYSgiLmNvbmNhdChoLmgsIiwgIikuY29uY2F0KE1hdGgucm91bmQoaC5zKjEwMCksIiUsICIpLmNvbmNhdChNYXRoLnJvdW5kKGgubCoxMDApLCIlLCAiKS5jb25jYXQoaC5hLCIpIikscy5wdXNoKHtsYWJlbDpjLHRleHRFZGl0OkgucmVwbGFjZShpLGMpfSk7dmFyIHU9R3Uocik7cmV0dXJuIHUuYT09PTE/Yz0iaHdiKCIuY29uY2F0KHUuaCwiICIpLmNvbmNhdChNYXRoLnJvdW5kKHUudyoxMDApLCIlICIpLmNvbmNhdChNYXRoLnJvdW5kKHUuYioxMDApLCIlKSIpOmM9Imh3YigiLmNvbmNhdCh1LmgsIiAiKS5jb25jYXQoTWF0aC5yb3VuZCh1LncqMTAwKSwiJSAiKS5jb25jYXQoTWF0aC5yb3VuZCh1LmIqMTAwKSwiJSAvICIpLmNvbmNhdCh1LmEsIikiKSxzLnB1c2goe2xhYmVsOmMsdGV4dEVkaXQ6SC5yZXBsYWNlKGksYyl9KSxzfSx0LnByb3RvdHlwZS5kb1JlbmFtZT1mdW5jdGlvbihlLG4scixpKXt2YXIgcyxhPXRoaXMuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLG4saSksbz1hLm1hcChmdW5jdGlvbihsKXtyZXR1cm4gSC5yZXBsYWNlKGwucmFuZ2Uscil9KTtyZXR1cm57Y2hhbmdlczoocz17fSxzW2UudXJpXT1vLHMpfX0sdC5wcm90b3R5cGUucmVzb2x2ZU1vZHVsZVJlZmVyZW5jZT1mdW5jdGlvbihlLG4scil7cmV0dXJuIE1uKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBpLHMsYSxvLGw7cmV0dXJuIHpuKHRoaXMsZnVuY3Rpb24oYyl7c3dpdGNoKGMubGFiZWwpe2Nhc2UgMDpyZXR1cm4gZ2UobiwiZmlsZTovLyIpPyhpPVNwKGUpLHM9ci5yZXNvbHZlUmVmZXJlbmNlKCIvIixuKSxhPVBpKG4pLFs0LHRoaXMucmVzb2x2ZVBhdGhUb01vZHVsZShpLGEscyldKTpbMywyXTtjYXNlIDE6aWYobz1jLnNlbnQoKSxvKXJldHVybiBsPWUuc3Vic3RyaW5nKGkubGVuZ3RoKzEpLFsyLElpKG8sbCldO2MubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzIsdm9pZCAwXX19KX0pfSx0LnByb3RvdHlwZS5yZXNvbHZlUmVsYXRpdmVSZWZlcmVuY2U9ZnVuY3Rpb24oZSxuLHIsaSl7cmV0dXJuIE1uKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBzLGE7cmV0dXJuIHpuKHRoaXMsZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gcz1yLnJlc29sdmVSZWZlcmVuY2UoZSxuKSxlWzBdPT09In4iJiZlWzFdIT09Ii8iJiZ0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlcj8oZT1lLnN1YnN0cmluZygxKSxbNCx0aGlzLnJlc29sdmVNb2R1bGVSZWZlcmVuY2UoZSxuLHIpXSk6WzMsMl07Y2FzZSAxOnJldHVyblsyLG8uc2VudCgpfHxzXTtjYXNlIDI6cmV0dXJuIHRoaXMucmVzb2x2ZU1vZHVsZVJlZmVyZW5jZXM/KGE9cyxhP1s0LHRoaXMuZmlsZUV4aXN0cyhzKV06WzMsNF0pOlszLDddO2Nhc2UgMzphPW8uc2VudCgpLG8ubGFiZWw9NDtjYXNlIDQ6cmV0dXJuIGE/WzIsc106WzMsNV07Y2FzZSA1OnJldHVybls0LHRoaXMucmVzb2x2ZU1vZHVsZVJlZmVyZW5jZShlLG4scildO2Nhc2UgNjpyZXR1cm5bMixvLnNlbnQoKXx8c107Y2FzZSA3OnJldHVyblsyLHNdfX0pfSl9LHQucHJvdG90eXBlLnJlc29sdmVQYXRoVG9Nb2R1bGU9ZnVuY3Rpb24oZSxuLHIpe3JldHVybiBNbih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaTtyZXR1cm4gem4odGhpcyxmdW5jdGlvbihzKXtzd2l0Y2gocy5sYWJlbCl7Y2FzZSAwOnJldHVybiBpPUlpKG4sIm5vZGVfbW9kdWxlcyIsZSwicGFja2FnZS5qc29uIiksWzQsdGhpcy5maWxlRXhpc3RzKGkpXTtjYXNlIDE6cmV0dXJuIHMuc2VudCgpP1syLFBpKGkpXTpyJiZuLnN0YXJ0c1dpdGgocikmJm4ubGVuZ3RoIT09ci5sZW5ndGg/WzIsdGhpcy5yZXNvbHZlUGF0aFRvTW9kdWxlKGUsUGkobikscildOlsyLHZvaWQgMF19fSl9KX0sdC5wcm90b3R5cGUuZmlsZUV4aXN0cz1mdW5jdGlvbihlKXtyZXR1cm4gTW4odGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG47cmV0dXJuIHpuKHRoaXMsZnVuY3Rpb24ocil7c3dpdGNoKHIubGFiZWwpe2Nhc2UgMDppZighdGhpcy5maWxlU3lzdGVtUHJvdmlkZXIpcmV0dXJuWzIsITFdO3IubGFiZWw9MTtjYXNlIDE6cmV0dXJuIHIudHJ5cy5wdXNoKFsxLDMsLDRdKSxbNCx0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlci5zdGF0KGUpXTtjYXNlIDI6cmV0dXJuIG49ci5zZW50KCksbi50eXBlPT09RG4uVW5rbm93biYmbi5zaXplPT09LTE/WzIsITFdOlsyLCEwXTtjYXNlIDM6cmV0dXJuIHIuc2VudCgpLFsyLCExXTtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9LHR9KCk7ZnVuY3Rpb24geHAodCxlKXt2YXIgbj1KdSh0KTtpZihuKXt2YXIgcj1SdCh0LGUpO3JldHVybntjb2xvcjpuLHJhbmdlOnJ9fXJldHVybiBudWxsfWZ1bmN0aW9uIFJ0KHQsZSl7cmV0dXJuIGllLmNyZWF0ZShlLnBvc2l0aW9uQXQodC5vZmZzZXQpLGUucG9zaXRpb25BdCh0LmVuZCkpfWZ1bmN0aW9uIEhsKHQpe2lmKHQudHlwZT09PXYuU2VsZWN0b3J8fHQgaW5zdGFuY2VvZiBXZSYmdC5wYXJlbnQmJnQucGFyZW50IGluc3RhbmNlb2YgZmkmJnQuaXNDdXN0b21Qcm9wZXJ0eSlyZXR1cm4gWnQuV3JpdGU7aWYodC5wYXJlbnQpc3dpdGNoKHQucGFyZW50LnR5cGUpe2Nhc2Ugdi5GdW5jdGlvbkRlY2xhcmF0aW9uOmNhc2Ugdi5NaXhpbkRlY2xhcmF0aW9uOmNhc2Ugdi5LZXlmcmFtZTpjYXNlIHYuVmFyaWFibGVEZWNsYXJhdGlvbjpjYXNlIHYuRnVuY3Rpb25QYXJhbWV0ZXI6cmV0dXJuIFp0LldyaXRlfXJldHVybiBadC5SZWFkfWZ1bmN0aW9uIEZ0KHQpe3ZhciBlPXQudG9TdHJpbmcoMTYpO3JldHVybiBlLmxlbmd0aCE9PTI/IjAiK2U6ZX1mdW5jdGlvbiBTcCh0KXtyZXR1cm4gdFswXT09PSJAIj90LnN1YnN0cmluZygwLHQuaW5kZXhPZigiLyIsdC5pbmRleE9mKCIvIikrMSkpOnQuc3Vic3RyaW5nKDAsdC5pbmRleE9mKCIvIikpfXZhciBiZT1HZSgpLG5uPVBlLldhcm5pbmcsR2w9UGUuRXJyb3IsSmU9UGUuSWdub3JlLHdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4scil7dGhpcy5pZD1lLHRoaXMubWVzc2FnZT1uLHRoaXMuZGVmYXVsdFZhbHVlPXJ9cmV0dXJuIHR9KCksQ3A9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbixyKXt0aGlzLmlkPWUsdGhpcy5tZXNzYWdlPW4sdGhpcy5kZWZhdWx0VmFsdWU9cn1yZXR1cm4gdH0oKSxzZT17QWxsVmVuZG9yUHJlZml4ZXM6bmV3IHdlKCJjb21wYXRpYmxlVmVuZG9yUHJlZml4ZXMiLGJlKCJydWxlLnZlbmRvcnByZWZpeGVzLmFsbCIsIldoZW4gdXNpbmcgYSB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4IG1ha2Ugc3VyZSB0byBhbHNvIGluY2x1ZGUgYWxsIG90aGVyIHZlbmRvci1zcGVjaWZpYyBwcm9wZXJ0aWVzIiksSmUpLEluY2x1ZGVTdGFuZGFyZFByb3BlcnR5V2hlblVzaW5nVmVuZG9yUHJlZml4Om5ldyB3ZSgidmVuZG9yUHJlZml4IixiZSgicnVsZS5zdGFuZGFyZHZlbmRvcnByZWZpeC5hbGwiLCJXaGVuIHVzaW5nIGEgdmVuZG9yLXNwZWNpZmljIHByZWZpeCBhbHNvIGluY2x1ZGUgdGhlIHN0YW5kYXJkIHByb3BlcnR5Iiksbm4pLER1cGxpY2F0ZURlY2xhcmF0aW9uczpuZXcgd2UoImR1cGxpY2F0ZVByb3BlcnRpZXMiLGJlKCJydWxlLmR1cGxpY2F0ZURlY2xhcmF0aW9ucyIsIkRvIG5vdCB1c2UgZHVwbGljYXRlIHN0eWxlIGRlZmluaXRpb25zIiksSmUpLEVtcHR5UnVsZVNldDpuZXcgd2UoImVtcHR5UnVsZXMiLGJlKCJydWxlLmVtcHR5UnVsZVNldHMiLCJEbyBub3QgdXNlIGVtcHR5IHJ1bGVzZXRzIiksbm4pLEltcG9ydFN0YXRlbWVtZW50Om5ldyB3ZSgiaW1wb3J0U3RhdGVtZW50IixiZSgicnVsZS5pbXBvcnREaXJlY3RpdmUiLCJJbXBvcnQgc3RhdGVtZW50cyBkbyBub3QgbG9hZCBpbiBwYXJhbGxlbCIpLEplKSxCZXdhcmVPZkJveE1vZGVsU2l6ZTpuZXcgd2UoImJveE1vZGVsIixiZSgicnVsZS5iZXdhcmVPZkJveE1vZGVsU2l6ZSIsIkRvIG5vdCB1c2Ugd2lkdGggb3IgaGVpZ2h0IHdoZW4gdXNpbmcgcGFkZGluZyBvciBib3JkZXIiKSxKZSksVW5pdmVyc2FsU2VsZWN0b3I6bmV3IHdlKCJ1bml2ZXJzYWxTZWxlY3RvciIsYmUoInJ1bGUudW5pdmVyc2FsU2VsZWN0b3IiLCJUaGUgdW5pdmVyc2FsIHNlbGVjdG9yICgqKSBpcyBrbm93biB0byBiZSBzbG93IiksSmUpLFplcm9XaXRoVW5pdDpuZXcgd2UoInplcm9Vbml0cyIsYmUoInJ1bGUuemVyb1dpZHRoVW5pdCIsIk5vIHVuaXQgZm9yIHplcm8gbmVlZGVkIiksSmUpLFJlcXVpcmVkUHJvcGVydGllc0ZvckZvbnRGYWNlOm5ldyB3ZSgiZm9udEZhY2VQcm9wZXJ0aWVzIixiZSgicnVsZS5mb250RmFjZVByb3BlcnRpZXMiLCJAZm9udC1mYWNlIHJ1bGUgbXVzdCBkZWZpbmUgJ3NyYycgYW5kICdmb250LWZhbWlseScgcHJvcGVydGllcyIpLG5uKSxIZXhDb2xvckxlbmd0aDpuZXcgd2UoImhleENvbG9yTGVuZ3RoIixiZSgicnVsZS5oZXhDb2xvciIsIkhleCBjb2xvcnMgbXVzdCBjb25zaXN0IG9mIHRocmVlLCBmb3VyLCBzaXggb3IgZWlnaHQgaGV4IG51bWJlcnMiKSxHbCksQXJnc0luQ29sb3JGdW5jdGlvbjpuZXcgd2UoImFyZ3VtZW50c0luQ29sb3JGdW5jdGlvbiIsYmUoInJ1bGUuY29sb3JGdW5jdGlvbiIsIkludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMiKSxHbCksVW5rbm93blByb3BlcnR5Om5ldyB3ZSgidW5rbm93blByb3BlcnRpZXMiLGJlKCJydWxlLnVua25vd25Qcm9wZXJ0eSIsIlVua25vd24gcHJvcGVydHkuIiksbm4pLFVua25vd25BdFJ1bGVzOm5ldyB3ZSgidW5rbm93bkF0UnVsZXMiLGJlKCJydWxlLnVua25vd25BdFJ1bGVzIiwiVW5rbm93biBhdC1ydWxlLiIpLG5uKSxJRVN0YXJIYWNrOm5ldyB3ZSgiaWVIYWNrIixiZSgicnVsZS5pZUhhY2siLCJJRSBoYWNrcyBhcmUgb25seSBuZWNlc3Nhcnkgd2hlbiBzdXBwb3J0aW5nIElFNyBhbmQgb2xkZXIiKSxKZSksVW5rbm93blZlbmRvclNwZWNpZmljUHJvcGVydHk6bmV3IHdlKCJ1bmtub3duVmVuZG9yU3BlY2lmaWNQcm9wZXJ0aWVzIixiZSgicnVsZS51bmtub3duVmVuZG9yU3BlY2lmaWNQcm9wZXJ0eSIsIlVua25vd24gdmVuZG9yIHNwZWNpZmljIHByb3BlcnR5LiIpLEplKSxQcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXk6bmV3IHdlKCJwcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXkiLGJlKCJydWxlLnByb3BlcnR5SWdub3JlZER1ZVRvRGlzcGxheSIsIlByb3BlcnR5IGlzIGlnbm9yZWQgZHVlIHRvIHRoZSBkaXNwbGF5LiIpLG5uKSxBdm9pZEltcG9ydGFudDpuZXcgd2UoImltcG9ydGFudCIsYmUoInJ1bGUuYXZvaWRJbXBvcnRhbnQiLCJBdm9pZCB1c2luZyAhaW1wb3J0YW50LiBJdCBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIHNwZWNpZmljaXR5IG9mIHRoZSBlbnRpcmUgQ1NTIGhhcyBnb3R0ZW4gb3V0IG9mIGNvbnRyb2wgYW5kIG5lZWRzIHRvIGJlIHJlZmFjdG9yZWQuIiksSmUpLEF2b2lkRmxvYXQ6bmV3IHdlKCJmbG9hdCIsYmUoInJ1bGUuYXZvaWRGbG9hdCIsIkF2b2lkIHVzaW5nICdmbG9hdCcuIEZsb2F0cyBsZWFkIHRvIGZyYWdpbGUgQ1NTIHRoYXQgaXMgZWFzeSB0byBicmVhayBpZiBvbmUgYXNwZWN0IG9mIHRoZSBsYXlvdXQgY2hhbmdlcy4iKSxKZSksQXZvaWRJZFNlbGVjdG9yOm5ldyB3ZSgiaWRTZWxlY3RvciIsYmUoInJ1bGUuYXZvaWRJZFNlbGVjdG9yIiwiU2VsZWN0b3JzIHNob3VsZCBub3QgY29udGFpbiBJRHMgYmVjYXVzZSB0aGVzZSBydWxlcyBhcmUgdG9vIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBIVE1MLiIpLEplKX0sa3A9e1ZhbGlkUHJvcGVydGllczpuZXcgQ3AoInZhbGlkUHJvcGVydGllcyIsYmUoInJ1bGUudmFsaWRQcm9wZXJ0aWVzIiwiQSBsaXN0IG9mIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBgdW5rbm93blByb3BlcnRpZXNgIHJ1bGUuIiksW10pfSxfcD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7ZT09PXZvaWQgMCYmKGU9e30pLHRoaXMuY29uZj1lfXJldHVybiB0LnByb3RvdHlwZS5nZXRSdWxlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuY29uZi5oYXNPd25Qcm9wZXJ0eShlLmlkKSl7dmFyIG49RXAodGhpcy5jb25mW2UuaWRdKTtpZihuKXJldHVybiBufXJldHVybiBlLmRlZmF1bHRWYWx1ZX0sdC5wcm90b3R5cGUuZ2V0U2V0dGluZz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb25mW2UuaWRdfSx0fSgpO2Z1bmN0aW9uIEVwKHQpe3N3aXRjaCh0KXtjYXNlImlnbm9yZSI6cmV0dXJuIFBlLklnbm9yZTtjYXNlIndhcm5pbmciOnJldHVybiBQZS5XYXJuaW5nO2Nhc2UiZXJyb3IiOnJldHVybiBQZS5FcnJvcn1yZXR1cm4gbnVsbH12YXIgUnA9R2UoKSxqaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dGhpcy5jc3NEYXRhTWFuYWdlcj1lfXJldHVybiB0LnByb3RvdHlwZS5kb0NvZGVBY3Rpb25zPWZ1bmN0aW9uKGUsbixyLGkpe3JldHVybiB0aGlzLmRvQ29kZUFjdGlvbnMyKGUsbixyLGkpLm1hcChmdW5jdGlvbihzKXt2YXIgYT1zLmVkaXQmJnMuZWRpdC5kb2N1bWVudENoYW5nZXMmJnMuZWRpdC5kb2N1bWVudENoYW5nZXNbMF07cmV0dXJuIEt0LmNyZWF0ZShzLnRpdGxlLCJfY3NzLmFwcGx5Q29kZUFjdGlvbiIsZS51cmksZS52ZXJzaW9uLGEmJmEuZWRpdHMpfSl9LHQucHJvdG90eXBlLmRvQ29kZUFjdGlvbnMyPWZ1bmN0aW9uKGUsbixyLGkpe3ZhciBzPVtdO2lmKHIuZGlhZ25vc3RpY3MpZm9yKHZhciBhPTAsbz1yLmRpYWdub3N0aWNzO2E8by5sZW5ndGg7YSsrKXt2YXIgbD1vW2FdO3RoaXMuYXBwZW5kRml4ZXNGb3JNYXJrZXIoZSxpLGwscyl9cmV0dXJuIHN9LHQucHJvdG90eXBlLmdldEZpeGVzRm9yVW5rbm93blByb3BlcnR5PWZ1bmN0aW9uKGUsbixyLGkpe3ZhciBzPW4uZ2V0TmFtZSgpLGE9W107dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQcm9wZXJ0aWVzKCkuZm9yRWFjaChmdW5jdGlvbihDKXt2YXIgaz1aZChzLEMubmFtZSk7az49cy5sZW5ndGgvMiYmYS5wdXNoKHtwcm9wZXJ0eTpDLm5hbWUsc2NvcmU6a30pfSksYS5zb3J0KGZ1bmN0aW9uKEMsayl7cmV0dXJuIGsuc2NvcmUtQy5zY29yZXx8Qy5wcm9wZXJ0eS5sb2NhbGVDb21wYXJlKGsucHJvcGVydHkpfSk7Zm9yKHZhciBvPTMsbD0wLGM9YTtsPGMubGVuZ3RoO2wrKyl7dmFyIGg9Y1tsXSx1PWgucHJvcGVydHksZj1ScCgiY3NzLmNvZGVhY3Rpb24ucmVuYW1lIiwiUmVuYW1lIHRvICd7MH0nIix1KSxtPUgucmVwbGFjZShyLnJhbmdlLHUpLGc9X2kuY3JlYXRlKGUudXJpLGUudmVyc2lvbiksYj17ZG9jdW1lbnRDaGFuZ2VzOltfbi5jcmVhdGUoZyxbbV0pXX0seT1GaS5jcmVhdGUoZixiLFJpLlF1aWNrRml4KTtpZih5LmRpYWdub3N0aWNzPVtyXSxpLnB1c2goeSksLS1vPD0wKXJldHVybn19LHQucHJvdG90eXBlLmFwcGVuZEZpeGVzRm9yTWFya2VyPWZ1bmN0aW9uKGUsbixyLGkpe2lmKHIuY29kZT09PXNlLlVua25vd25Qcm9wZXJ0eS5pZClmb3IodmFyIHM9ZS5vZmZzZXRBdChyLnJhbmdlLnN0YXJ0KSxhPWUub2Zmc2V0QXQoci5yYW5nZS5lbmQpLG89ZGkobixzKSxsPW8ubGVuZ3RoLTE7bD49MDtsLS0pe3ZhciBjPW9bbF07aWYoYyBpbnN0YW5jZW9mIFplKXt2YXIgaD1jLmdldFByb3BlcnR5KCk7aWYoaCYmaC5vZmZzZXQ9PT1zJiZoLmVuZD09PWEpe3RoaXMuZ2V0Rml4ZXNGb3JVbmtub3duUHJvcGVydHkoZSxoLHIsaSk7cmV0dXJufX19fSx0fSgpLEZwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt0aGlzLmZ1bGxQcm9wZXJ0eU5hbWU9ZS5nZXRGdWxsUHJvcGVydHlOYW1lKCkudG9Mb3dlckNhc2UoKSx0aGlzLm5vZGU9ZX1yZXR1cm4gdH0oKTtmdW5jdGlvbiBMbih0LGUsbixyKXt2YXIgaT10W2VdO2kudmFsdWU9bixuJiYoTWwoaS5wcm9wZXJ0aWVzLHIpfHxpLnByb3BlcnRpZXMucHVzaChyKSl9ZnVuY3Rpb24gRHAodCxlLG4pe0xuKHQsInRvcCIsZSxuKSxMbih0LCJyaWdodCIsZSxuKSxMbih0LCJib3R0b20iLGUsbiksTG4odCwibGVmdCIsZSxuKX1mdW5jdGlvbiBfZSh0LGUsbixyKXtlPT09InRvcCJ8fGU9PT0icmlnaHQifHxlPT09ImJvdHRvbSJ8fGU9PT0ibGVmdCI/TG4odCxlLG4scik6RHAodCxuLHIpfWZ1bmN0aW9uICRpKHQsZSxuKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMTpfZSh0LHZvaWQgMCxlWzBdLG4pO2JyZWFrO2Nhc2UgMjpfZSh0LCJ0b3AiLGVbMF0sbiksX2UodCwiYm90dG9tIixlWzBdLG4pLF9lKHQsInJpZ2h0IixlWzFdLG4pLF9lKHQsImxlZnQiLGVbMV0sbik7YnJlYWs7Y2FzZSAzOl9lKHQsInRvcCIsZVswXSxuKSxfZSh0LCJyaWdodCIsZVsxXSxuKSxfZSh0LCJsZWZ0IixlWzFdLG4pLF9lKHQsImJvdHRvbSIsZVsyXSxuKTticmVhaztjYXNlIDQ6X2UodCwidG9wIixlWzBdLG4pLF9lKHQsInJpZ2h0IixlWzFdLG4pLF9lKHQsImJvdHRvbSIsZVsyXSxuKSxfZSh0LCJsZWZ0IixlWzNdLG4pO2JyZWFrfX1mdW5jdGlvbiBIaSh0LGUpe2Zvcih2YXIgbj0wLHI9ZTtuPHIubGVuZ3RoO24rKyl7dmFyIGk9cltuXTtpZih0Lm1hdGNoZXMoaSkpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gUG4odCxlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9ITApLGUmJkhpKHQsWyJpbml0aWFsIiwidW5zZXQiXSk/ITE6cGFyc2VGbG9hdCh0LmdldFRleHQoKSkhPT0wfWZ1bmN0aW9uIEpsKHQsZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPSEwKSx0Lm1hcChmdW5jdGlvbihuKXtyZXR1cm4gUG4obixlKX0pfWZ1bmN0aW9uIHdyKHQsZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPSEwKSwhKEhpKHQsWyJub25lIiwiaGlkZGVuIl0pfHxlJiZIaSh0LFsiaW5pdGlhbCIsInVuc2V0Il0pKX1mdW5jdGlvbiBBcCh0LGUpe3JldHVybiB0Lm1hcChmdW5jdGlvbihuKXtyZXR1cm4gd3IobixlKX0pfWZ1bmN0aW9uIE5wKHQpe3ZhciBlPXQuZ2V0Q2hpbGRyZW4oKTtpZihlLmxlbmd0aD09PTEpe3ZhciBuPWVbMF07cmV0dXJuIFBuKG4pJiZ3cihuKX1mb3IodmFyIHI9MCxpPWU7cjxpLmxlbmd0aDtyKyspe3ZhciBzPWlbcl0sbj1zO2lmKCFQbihuLCExKXx8IXdyKG4sITEpKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIE1wKHQpe2Zvcih2YXIgZT17dG9wOnt2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxyaWdodDp7dmFsdWU6ITEscHJvcGVydGllczpbXX0sYm90dG9tOnt2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxsZWZ0Ont2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfX0sbj0wLHI9dDtuPHIubGVuZ3RoO24rKyl7dmFyIGk9cltuXSxzPWkubm9kZS52YWx1ZTtpZighKHR5cGVvZiBzPiJ1Iikpc3dpdGNoKGkuZnVsbFByb3BlcnR5TmFtZSl7Y2FzZSJib3gtc2l6aW5nIjpyZXR1cm57dG9wOnt2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxyaWdodDp7dmFsdWU6ITEscHJvcGVydGllczpbXX0sYm90dG9tOnt2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxsZWZ0Ont2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfX07Y2FzZSJ3aWR0aCI6ZS53aWR0aD1pO2JyZWFrO2Nhc2UiaGVpZ2h0IjplLmhlaWdodD1pO2JyZWFrO2RlZmF1bHQ6dmFyIGE9aS5mdWxsUHJvcGVydHlOYW1lLnNwbGl0KCItIik7c3dpdGNoKGFbMF0pe2Nhc2UiYm9yZGVyIjpzd2l0Y2goYVsxXSl7Y2FzZSB2b2lkIDA6Y2FzZSJ0b3AiOmNhc2UicmlnaHQiOmNhc2UiYm90dG9tIjpjYXNlImxlZnQiOnN3aXRjaChhWzJdKXtjYXNlIHZvaWQgMDpfZShlLGFbMV0sTnAocyksaSk7YnJlYWs7Y2FzZSJ3aWR0aCI6X2UoZSxhWzFdLFBuKHMsITEpLGkpO2JyZWFrO2Nhc2Uic3R5bGUiOl9lKGUsYVsxXSx3cihzLCEwKSxpKTticmVha31icmVhaztjYXNlIndpZHRoIjokaShlLEpsKHMuZ2V0Q2hpbGRyZW4oKSwhMSksaSk7YnJlYWs7Y2FzZSJzdHlsZSI6JGkoZSxBcChzLmdldENoaWxkcmVuKCksITApLGkpO2JyZWFrfWJyZWFrO2Nhc2UicGFkZGluZyI6YS5sZW5ndGg9PT0xPyRpKGUsSmwocy5nZXRDaGlsZHJlbigpLCEwKSxpKTpfZShlLGFbMV0sUG4ocywhMCksaSk7YnJlYWt9YnJlYWt9fXJldHVybiBlfXZhciBhdD1HZSgpLFhsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuZGF0YT17fX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUsbixyKXt2YXIgaT10aGlzLmRhdGFbZV07aXx8KGk9e25vZGVzOltdLG5hbWVzOltdfSx0aGlzLmRhdGFbZV09aSksaS5uYW1lcy5wdXNoKG4pLHImJmkubm9kZXMucHVzaChyKX0sdH0oKSx6cD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuLHIpe3ZhciBpPXRoaXM7dGhpcy5jc3NEYXRhTWFuYWdlcj1yLHRoaXMud2FybmluZ3M9W10sdGhpcy5zZXR0aW5ncz1uLHRoaXMuZG9jdW1lbnRUZXh0PWUuZ2V0VGV4dCgpLHRoaXMua2V5ZnJhbWVzPW5ldyBYbCx0aGlzLnZhbGlkUHJvcGVydGllcz17fTt2YXIgcz1uLmdldFNldHRpbmcoa3AuVmFsaWRQcm9wZXJ0aWVzKTtBcnJheS5pc0FycmF5KHMpJiZzLmZvckVhY2goZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgbz1hLnRyaW0oKS50b0xvd2VyQ2FzZSgpO28ubGVuZ3RoJiYoaS52YWxpZFByb3BlcnRpZXNbb109ITApfX0pfXJldHVybiB0LmVudHJpZXM9ZnVuY3Rpb24oZSxuLHIsaSxzKXt2YXIgYT1uZXcgdChuLHIsaSk7cmV0dXJuIGUuYWNjZXB0VmlzaXRvcihhKSxhLmNvbXBsZXRlVmFsaWRhdGlvbnMoKSxhLmdldEVudHJpZXMocyl9LHQucHJvdG90eXBlLmlzVmFsaWRQcm9wZXJ0eURlY2xhcmF0aW9uPWZ1bmN0aW9uKGUpe3ZhciBuPWUuZnVsbFByb3BlcnR5TmFtZTtyZXR1cm4gdGhpcy52YWxpZFByb3BlcnRpZXNbbl19LHQucHJvdG90eXBlLmZldGNoPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPVtdLGk9MCxzPWU7aTxzLmxlbmd0aDtpKyspe3ZhciBhPXNbaV07YS5mdWxsUHJvcGVydHlOYW1lPT09biYmci5wdXNoKGEpfXJldHVybiByfSx0LnByb3RvdHlwZS5mZXRjaFdpdGhWYWx1ZT1mdW5jdGlvbihlLG4scil7Zm9yKHZhciBpPVtdLHM9MCxhPWU7czxhLmxlbmd0aDtzKyspe3ZhciBvPWFbc107aWYoby5mdWxsUHJvcGVydHlOYW1lPT09bil7dmFyIGw9by5ub2RlLmdldFZhbHVlKCk7bCYmdGhpcy5maW5kVmFsdWVJbkV4cHJlc3Npb24obCxyKSYmaS5wdXNoKG8pfX1yZXR1cm4gaX0sdC5wcm90b3R5cGUuZmluZFZhbHVlSW5FeHByZXNzaW9uPWZ1bmN0aW9uKGUsbil7dmFyIHI9ITE7cmV0dXJuIGUuYWNjZXB0KGZ1bmN0aW9uKGkpe3JldHVybiBpLnR5cGU9PT12LklkZW50aWZpZXImJmkubWF0Y2hlcyhuKSYmKHI9ITApLCFyfSkscn0sdC5wcm90b3R5cGUuZ2V0RW50cmllcz1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9UGUuV2FybmluZ3xQZS5FcnJvciksdGhpcy53YXJuaW5ncy5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuKG4uZ2V0TGV2ZWwoKSZlKSE9PTB9KX0sdC5wcm90b3R5cGUuYWRkRW50cnk9ZnVuY3Rpb24oZSxuLHIpe3ZhciBpPW5ldyB6byhlLG4sdGhpcy5zZXR0aW5ncy5nZXRSdWxlKG4pLHIpO3RoaXMud2FybmluZ3MucHVzaChpKX0sdC5wcm90b3R5cGUuZ2V0TWlzc2luZ05hbWVzPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPWUuc2xpY2UoMCksaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgcz1yLmluZGV4T2YobltpXSk7cyE9PS0xJiYocltzXT1udWxsKX1mb3IodmFyIGE9bnVsbCxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBvPXJbaV07byYmKGE9PT1udWxsP2E9YXQoIm5hbWVsaXN0LnNpbmdsZSIsIid7MH0nIixvKTphPWF0KCJuYW1lbGlzdC5jb25jYXRlbmF0ZWQiLCJ7MH0sICd7MX0nIixhLG8pKX1yZXR1cm4gYX0sdC5wcm90b3R5cGUudmlzaXROb2RlPWZ1bmN0aW9uKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2Ugdi5Vbmtub3duQXRSdWxlOnJldHVybiB0aGlzLnZpc2l0VW5rbm93bkF0UnVsZShlKTtjYXNlIHYuS2V5ZnJhbWU6cmV0dXJuIHRoaXMudmlzaXRLZXlmcmFtZShlKTtjYXNlIHYuRm9udEZhY2U6cmV0dXJuIHRoaXMudmlzaXRGb250RmFjZShlKTtjYXNlIHYuUnVsZXNldDpyZXR1cm4gdGhpcy52aXNpdFJ1bGVTZXQoZSk7Y2FzZSB2LlNpbXBsZVNlbGVjdG9yOnJldHVybiB0aGlzLnZpc2l0U2ltcGxlU2VsZWN0b3IoZSk7Y2FzZSB2LkZ1bmN0aW9uOnJldHVybiB0aGlzLnZpc2l0RnVuY3Rpb24oZSk7Y2FzZSB2Lk51bWVyaWNWYWx1ZTpyZXR1cm4gdGhpcy52aXNpdE51bWVyaWNWYWx1ZShlKTtjYXNlIHYuSW1wb3J0OnJldHVybiB0aGlzLnZpc2l0SW1wb3J0KGUpO2Nhc2Ugdi5IZXhDb2xvclZhbHVlOnJldHVybiB0aGlzLnZpc2l0SGV4Q29sb3JWYWx1ZShlKTtjYXNlIHYuUHJpbzpyZXR1cm4gdGhpcy52aXNpdFByaW8oZSk7Y2FzZSB2LklkZW50aWZpZXJTZWxlY3RvcjpyZXR1cm4gdGhpcy52aXNpdElkZW50aWZpZXJTZWxlY3RvcihlKX1yZXR1cm4hMH0sdC5wcm90b3R5cGUuY29tcGxldGVWYWxpZGF0aW9ucz1mdW5jdGlvbigpe3RoaXMudmFsaWRhdGVLZXlmcmFtZXMoKX0sdC5wcm90b3R5cGUudmlzaXRVbmtub3duQXRSdWxlPWZ1bmN0aW9uKGUpe3ZhciBuPWUuZ2V0Q2hpbGQoMCk7aWYoIW4pcmV0dXJuITE7dmFyIHI9dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRBdERpcmVjdGl2ZShuLmdldFRleHQoKSk7cmV0dXJuIHI/ITE6KHRoaXMuYWRkRW50cnkobixzZS5Vbmtub3duQXRSdWxlcywiVW5rbm93biBhdCBydWxlICIuY29uY2F0KG4uZ2V0VGV4dCgpKSksITApfSx0LnByb3RvdHlwZS52aXNpdEtleWZyYW1lPWZ1bmN0aW9uKGUpe3ZhciBuPWUuZ2V0S2V5d29yZCgpO2lmKCFuKXJldHVybiExO3ZhciByPW4uZ2V0VGV4dCgpO3JldHVybiB0aGlzLmtleWZyYW1lcy5hZGQoZS5nZXROYW1lKCkscixyIT09IkBrZXlmcmFtZXMiP246bnVsbCksITB9LHQucHJvdG90eXBlLnZhbGlkYXRlS2V5ZnJhbWVzPWZ1bmN0aW9uKCl7dmFyIGU9WyJALXdlYmtpdC1rZXlmcmFtZXMiLCJALW1vei1rZXlmcmFtZXMiLCJALW8ta2V5ZnJhbWVzIl07Zm9yKHZhciBuIGluIHRoaXMua2V5ZnJhbWVzLmRhdGEpe3ZhciByPXRoaXMua2V5ZnJhbWVzLmRhdGFbbl0ubmFtZXMsaT1yLmluZGV4T2YoIkBrZXlmcmFtZXMiKT09PS0xO2lmKCEoIWkmJnIubGVuZ3RoPT09MSkpe3ZhciBzPXRoaXMuZ2V0TWlzc2luZ05hbWVzKGUscik7aWYoc3x8aSlmb3IodmFyIGE9MCxvPXRoaXMua2V5ZnJhbWVzLmRhdGFbbl0ubm9kZXM7YTxvLmxlbmd0aDthKyspe3ZhciBsPW9bYV07aWYoaSl7dmFyIGM9YXQoImtleWZyYW1lcy5zdGFuZGFyZHJ1bGUubWlzc2luZyIsIkFsd2F5cyBkZWZpbmUgc3RhbmRhcmQgcnVsZSAnQGtleWZyYW1lcycgd2hlbiBkZWZpbmluZyBrZXlmcmFtZXMuIik7dGhpcy5hZGRFbnRyeShsLHNlLkluY2x1ZGVTdGFuZGFyZFByb3BlcnR5V2hlblVzaW5nVmVuZG9yUHJlZml4LGMpfWlmKHMpe3ZhciBjPWF0KCJrZXlmcmFtZXMudmVuZG9yc3BlY2lmaWMubWlzc2luZyIsIkFsd2F5cyBpbmNsdWRlIGFsbCB2ZW5kb3Igc3BlY2lmaWMgcnVsZXM6IE1pc3Npbmc6IHswfSIscyk7dGhpcy5hZGRFbnRyeShsLHNlLkFsbFZlbmRvclByZWZpeGVzLGMpfX19fXJldHVybiEwfSx0LnByb3RvdHlwZS52aXNpdFNpbXBsZVNlbGVjdG9yPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuZG9jdW1lbnRUZXh0LmNoYXJBdChlLm9mZnNldCk7cmV0dXJuIGUubGVuZ3RoPT09MSYmbj09PSIqIiYmdGhpcy5hZGRFbnRyeShlLHNlLlVuaXZlcnNhbFNlbGVjdG9yKSwhMH0sdC5wcm90b3R5cGUudmlzaXRJZGVudGlmaWVyU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkRW50cnkoZSxzZS5Bdm9pZElkU2VsZWN0b3IpLCEwfSx0LnByb3RvdHlwZS52aXNpdEltcG9ydD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGRFbnRyeShlLHNlLkltcG9ydFN0YXRlbWVtZW50KSwhMH0sdC5wcm90b3R5cGUudmlzaXRSdWxlU2V0PWZ1bmN0aW9uKGUpe3ZhciBuPWUuZ2V0RGVjbGFyYXRpb25zKCk7aWYoIW4pcmV0dXJuITE7bi5oYXNDaGlsZHJlbigpfHx0aGlzLmFkZEVudHJ5KGUuZ2V0U2VsZWN0b3JzKCksc2UuRW1wdHlSdWxlU2V0KTtmb3IodmFyIHI9W10saT0wLHM9bi5nZXRDaGlsZHJlbigpO2k8cy5sZW5ndGg7aSsrKXt2YXIgYT1zW2ldO2EgaW5zdGFuY2VvZiBaZSYmci5wdXNoKG5ldyBGcChhKSl9dmFyIG89TXAocik7aWYoby53aWR0aCl7dmFyIGw9W107aWYoby5yaWdodC52YWx1ZSYmKGw9Z3IobCxvLnJpZ2h0LnByb3BlcnRpZXMpKSxvLmxlZnQudmFsdWUmJihsPWdyKGwsby5sZWZ0LnByb3BlcnRpZXMpKSxsLmxlbmd0aCE9PTApe2Zvcih2YXIgYz0wLGg9bDtjPGgubGVuZ3RoO2MrKyl7dmFyIHU9aFtjXTt0aGlzLmFkZEVudHJ5KHUubm9kZSxzZS5CZXdhcmVPZkJveE1vZGVsU2l6ZSl9dGhpcy5hZGRFbnRyeShvLndpZHRoLm5vZGUsc2UuQmV3YXJlT2ZCb3hNb2RlbFNpemUpfX1pZihvLmhlaWdodCl7dmFyIGw9W107aWYoby50b3AudmFsdWUmJihsPWdyKGwsby50b3AucHJvcGVydGllcykpLG8uYm90dG9tLnZhbHVlJiYobD1ncihsLG8uYm90dG9tLnByb3BlcnRpZXMpKSxsLmxlbmd0aCE9PTApe2Zvcih2YXIgZj0wLG09bDtmPG0ubGVuZ3RoO2YrKyl7dmFyIHU9bVtmXTt0aGlzLmFkZEVudHJ5KHUubm9kZSxzZS5CZXdhcmVPZkJveE1vZGVsU2l6ZSl9dGhpcy5hZGRFbnRyeShvLmhlaWdodC5ub2RlLHNlLkJld2FyZU9mQm94TW9kZWxTaXplKX19dmFyIGc9dGhpcy5mZXRjaFdpdGhWYWx1ZShyLCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIik7aWYoZy5sZW5ndGg+MClmb3IodmFyIGI9dGhpcy5mZXRjaChyLCJmbG9hdCIpLHk9MDt5PGIubGVuZ3RoO3krKyl7dmFyIEM9Ylt5XS5ub2RlLGs9Qy5nZXRWYWx1ZSgpO2smJiFrLm1hdGNoZXMoIm5vbmUiKSYmdGhpcy5hZGRFbnRyeShDLHNlLlByb3BlcnR5SWdub3JlZER1ZVRvRGlzcGxheSxhdCgicnVsZS5wcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXlJbmxpbmVCbG9jayIsImlubGluZS1ibG9jayBpcyBpZ25vcmVkIGR1ZSB0byB0aGUgZmxvYXQuIElmICdmbG9hdCcgaGFzIGEgdmFsdWUgb3RoZXIgdGhhbiAnbm9uZScsIHRoZSBib3ggaXMgZmxvYXRlZCBhbmQgJ2Rpc3BsYXknIGlzIHRyZWF0ZWQgYXMgJ2Jsb2NrJyIpKX1pZihnPXRoaXMuZmV0Y2hXaXRoVmFsdWUociwiZGlzcGxheSIsImJsb2NrIiksZy5sZW5ndGg+MClmb3IodmFyIGI9dGhpcy5mZXRjaChyLCJ2ZXJ0aWNhbC1hbGlnbiIpLHk9MDt5PGIubGVuZ3RoO3krKyl0aGlzLmFkZEVudHJ5KGJbeV0ubm9kZSxzZS5Qcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXksYXQoInJ1bGUucHJvcGVydHlJZ25vcmVkRHVlVG9EaXNwbGF5QmxvY2siLCJQcm9wZXJ0eSBpcyBpZ25vcmVkIGR1ZSB0byB0aGUgZGlzcGxheS4gV2l0aCAnZGlzcGxheTogYmxvY2snLCB2ZXJ0aWNhbC1hbGlnbiBzaG91bGQgbm90IGJlIHVzZWQuIikpO2Zvcih2YXIgdz10aGlzLmZldGNoKHIsImZsb2F0IikseT0wO3k8dy5sZW5ndGg7eSsrKXt2YXIgYT13W3ldO3RoaXMuaXNWYWxpZFByb3BlcnR5RGVjbGFyYXRpb24oYSl8fHRoaXMuYWRkRW50cnkoYS5ub2RlLHNlLkF2b2lkRmxvYXQpfWZvcih2YXIgRj0wO0Y8ci5sZW5ndGg7RisrKXt2YXIgYT1yW0ZdO2lmKGEuZnVsbFByb3BlcnR5TmFtZSE9PSJiYWNrZ3JvdW5kIiYmIXRoaXMudmFsaWRQcm9wZXJ0aWVzW2EuZnVsbFByb3BlcnR5TmFtZV0pe3ZhciBrPWEubm9kZS5nZXRWYWx1ZSgpO2lmKGsmJnRoaXMuZG9jdW1lbnRUZXh0LmNoYXJBdChrLm9mZnNldCkhPT0iLSIpe3ZhciBfPXRoaXMuZmV0Y2gocixhLmZ1bGxQcm9wZXJ0eU5hbWUpO2lmKF8ubGVuZ3RoPjEpZm9yKHZhciBQPTA7UDxfLmxlbmd0aDtQKyspe3ZhciBXPV9bUF0ubm9kZS5nZXRWYWx1ZSgpO1cmJnRoaXMuZG9jdW1lbnRUZXh0LmNoYXJBdChXLm9mZnNldCkhPT0iLSImJl9bUF0hPT1hJiZ0aGlzLmFkZEVudHJ5KGEubm9kZSxzZS5EdXBsaWNhdGVEZWNsYXJhdGlvbnMpfX19fXZhciBUPWUuZ2V0U2VsZWN0b3JzKCkubWF0Y2hlcygiOmV4cG9ydCIpO2lmKCFUKXtmb3IodmFyIEo9bmV3IFhsLHJlPSExLE49MCxSPXI7TjxSLmxlbmd0aDtOKyspe3ZhciBhPVJbTl0sST1hLm5vZGU7aWYodGhpcy5pc0NTU0RlY2xhcmF0aW9uKEkpKXt2YXIgej1hLmZ1bGxQcm9wZXJ0eU5hbWUsVj16LmNoYXJBdCgwKTtpZihWPT09Ii0iKXtpZih6LmNoYXJBdCgxKSE9PSItIil7IXRoaXMuY3NzRGF0YU1hbmFnZXIuaXNLbm93blByb3BlcnR5KHopJiYhdGhpcy52YWxpZFByb3BlcnRpZXNbel0mJnRoaXMuYWRkRW50cnkoSS5nZXRQcm9wZXJ0eSgpLHNlLlVua25vd25WZW5kb3JTcGVjaWZpY1Byb3BlcnR5KTt2YXIgaj1JLmdldE5vblByZWZpeGVkUHJvcGVydHlOYW1lKCk7Si5hZGQoaix6LEkuZ2V0UHJvcGVydHkoKSl9fWVsc2V7dmFyIEQ9ejsoVj09PSIqInx8Vj09PSJfIikmJih0aGlzLmFkZEVudHJ5KEkuZ2V0UHJvcGVydHkoKSxzZS5JRVN0YXJIYWNrKSx6PXouc3Vic3RyKDEpKSwhdGhpcy5jc3NEYXRhTWFuYWdlci5pc0tub3duUHJvcGVydHkoRCkmJiF0aGlzLmNzc0RhdGFNYW5hZ2VyLmlzS25vd25Qcm9wZXJ0eSh6KSYmKHRoaXMudmFsaWRQcm9wZXJ0aWVzW3pdfHx0aGlzLmFkZEVudHJ5KEkuZ2V0UHJvcGVydHkoKSxzZS5Vbmtub3duUHJvcGVydHksYXQoInByb3BlcnR5LnVua25vd25wcm9wZXJ0eS5kZXRhaWxlZCIsIlVua25vd24gcHJvcGVydHk6ICd7MH0nIixJLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKSkpKSxKLmFkZCh6LHosbnVsbCl9fWVsc2UgcmU9ITB9aWYoIXJlKWZvcih2YXIgeCBpbiBKLmRhdGEpe3ZhciBBPUouZGF0YVt4XSxMPUEubmFtZXMsWD10aGlzLmNzc0RhdGFNYW5hZ2VyLmlzU3RhbmRhcmRQcm9wZXJ0eSh4KSYmTC5pbmRleE9mKHgpPT09LTE7aWYoISghWCYmTC5sZW5ndGg9PT0xKSl7Zm9yKHZhciBHPVtdLEY9MCxuZT10LnByZWZpeGVzLmxlbmd0aDtGPG5lO0YrKyl7dmFyIERlPXQucHJlZml4ZXNbRl07dGhpcy5jc3NEYXRhTWFuYWdlci5pc1N0YW5kYXJkUHJvcGVydHkoRGUreCkmJkcucHVzaChEZSt4KX12YXIgU2U9dGhpcy5nZXRNaXNzaW5nTmFtZXMoRyxMKTtpZihTZXx8WClmb3IodmFyIEFlPTAsRHQ9QS5ub2RlcztBZTxEdC5sZW5ndGg7QWUrKyl7dmFyIGN0PUR0W0FlXTtpZihYKXt2YXIgc3M9YXQoInByb3BlcnR5LnN0YW5kYXJkLm1pc3NpbmciLCJBbHNvIGRlZmluZSB0aGUgc3RhbmRhcmQgcHJvcGVydHkgJ3swfScgZm9yIGNvbXBhdGliaWxpdHkiLHgpO3RoaXMuYWRkRW50cnkoY3Qsc2UuSW5jbHVkZVN0YW5kYXJkUHJvcGVydHlXaGVuVXNpbmdWZW5kb3JQcmVmaXgsc3MpfWlmKFNlKXt2YXIgc3M9YXQoInByb3BlcnR5LnZlbmRvcnNwZWNpZmljLm1pc3NpbmciLCJBbHdheXMgaW5jbHVkZSBhbGwgdmVuZG9yIHNwZWNpZmljIHByb3BlcnRpZXM6IE1pc3Npbmc6IHswfSIsU2UpO3RoaXMuYWRkRW50cnkoY3Qsc2UuQWxsVmVuZG9yUHJlZml4ZXMsc3MpfX19fX1yZXR1cm4hMH0sdC5wcm90b3R5cGUudmlzaXRQcmlvPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkZEVudHJ5KGUsc2UuQXZvaWRJbXBvcnRhbnQpLCEwfSx0LnByb3RvdHlwZS52aXNpdE51bWVyaWNWYWx1ZT1mdW5jdGlvbihlKXt2YXIgbj1lLmZpbmRQYXJlbnQodi5GdW5jdGlvbik7aWYobiYmbi5nZXROYW1lKCk9PT0iY2FsYyIpcmV0dXJuITA7dmFyIHI9ZS5maW5kUGFyZW50KHYuRGVjbGFyYXRpb24pO2lmKHIpe3ZhciBpPXIuZ2V0VmFsdWUoKTtpZihpKXt2YXIgcz1lLmdldFZhbHVlKCk7aWYoIXMudW5pdHx8QWwubGVuZ3RoLmluZGV4T2Yocy51bml0LnRvTG93ZXJDYXNlKCkpPT09LTEpcmV0dXJuITA7cGFyc2VGbG9hdChzLnZhbHVlKT09PTAmJnMudW5pdCYmIXRoaXMudmFsaWRQcm9wZXJ0aWVzW3IuZ2V0RnVsbFByb3BlcnR5TmFtZSgpXSYmdGhpcy5hZGRFbnRyeShlLHNlLlplcm9XaXRoVW5pdCl9fXJldHVybiEwfSx0LnByb3RvdHlwZS52aXNpdEZvbnRGYWNlPWZ1bmN0aW9uKGUpe3ZhciBuPWUuZ2V0RGVjbGFyYXRpb25zKCk7aWYoIW4pcmV0dXJuITE7Zm9yKHZhciByPSExLGk9ITEscz0hMSxhPTAsbz1uLmdldENoaWxkcmVuKCk7YTxvLmxlbmd0aDthKyspe3ZhciBsPW9bYV07aWYodGhpcy5pc0NTU0RlY2xhcmF0aW9uKGwpKXt2YXIgYz1sLmdldFByb3BlcnR5KCkuZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCk7Yz09PSJzcmMiJiYocj0hMCksYz09PSJmb250LWZhbWlseSImJihpPSEwKX1lbHNlIHM9ITB9cmV0dXJuIXMmJighcnx8IWkpJiZ0aGlzLmFkZEVudHJ5KGUsc2UuUmVxdWlyZWRQcm9wZXJ0aWVzRm9yRm9udEZhY2UpLCEwfSx0LnByb3RvdHlwZS5pc0NTU0RlY2xhcmF0aW9uPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBaZSl7aWYoIWUuZ2V0VmFsdWUoKSlyZXR1cm4hMTt2YXIgbj1lLmdldFByb3BlcnR5KCk7aWYoIW4pcmV0dXJuITE7dmFyIHI9bi5nZXRJZGVudGlmaWVyKCk7cmV0dXJuISghcnx8ci5jb250YWluc0ludGVycG9sYXRpb24oKSl9cmV0dXJuITF9LHQucHJvdG90eXBlLnZpc2l0SGV4Q29sb3JWYWx1ZT1mdW5jdGlvbihlKXt2YXIgbj1lLmxlbmd0aDtyZXR1cm4gbiE9PTkmJm4hPT03JiZuIT09NSYmbiE9PTQmJnRoaXMuYWRkRW50cnkoZSxzZS5IZXhDb2xvckxlbmd0aCksITF9LHQucHJvdG90eXBlLnZpc2l0RnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIG49ZS5nZXROYW1lKCkudG9Mb3dlckNhc2UoKSxyPS0xLGk9MDtzd2l0Y2gobil7Y2FzZSJyZ2IoIjpjYXNlImhzbCgiOnI9MzticmVhaztjYXNlInJnYmEoIjpjYXNlImhzbGEoIjpyPTQ7YnJlYWt9cmV0dXJuIHIhPT0tMSYmKGUuZ2V0QXJndW1lbnRzKCkuYWNjZXB0KGZ1bmN0aW9uKHMpe3JldHVybiBzIGluc3RhbmNlb2YgYmk/KGkrPTEsITEpOiEwfSksaSE9PXImJnRoaXMuYWRkRW50cnkoZSxzZS5BcmdzSW5Db2xvckZ1bmN0aW9uKSksITB9LHQucHJlZml4ZXM9WyItbXMtIiwiLW1vei0iLCItby0iLCItd2Via2l0LSJdLHR9KCksR2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3RoaXMuY3NzRGF0YU1hbmFnZXI9ZX1yZXR1cm4gdC5wcm90b3R5cGUuY29uZmlndXJlPWZ1bmN0aW9uKGUpe3RoaXMuc2V0dGluZ3M9ZX0sdC5wcm90b3R5cGUuZG9WYWxpZGF0aW9uPWZ1bmN0aW9uKGUsbixyKXtpZihyPT09dm9pZCAwJiYocj10aGlzLnNldHRpbmdzKSxyJiZyLnZhbGlkYXRlPT09ITEpcmV0dXJuW107dmFyIGk9W107aS5wdXNoLmFwcGx5KGksTHUuZW50cmllcyhuKSksaS5wdXNoLmFwcGx5KGksenAuZW50cmllcyhuLGUsbmV3IF9wKHImJnIubGludCksdGhpcy5jc3NEYXRhTWFuYWdlcikpO3ZhciBzPVtdO2Zvcih2YXIgYSBpbiBzZSlzLnB1c2goc2VbYV0uaWQpO2Z1bmN0aW9uIG8obCl7dmFyIGM9aWUuY3JlYXRlKGUucG9zaXRpb25BdChsLmdldE9mZnNldCgpKSxlLnBvc2l0aW9uQXQobC5nZXRPZmZzZXQoKStsLmdldExlbmd0aCgpKSksaD1lLmxhbmd1YWdlSWQ7cmV0dXJue2NvZGU6bC5nZXRSdWxlKCkuaWQsc291cmNlOmgsbWVzc2FnZTpsLmdldE1lc3NhZ2UoKSxzZXZlcml0eTpsLmdldExldmVsKCk9PT1QZS5XYXJuaW5nP2FyLldhcm5pbmc6YXIuRXJyb3IscmFuZ2U6Y319cmV0dXJuIGkuZmlsdGVyKGZ1bmN0aW9uKGwpe3JldHVybiBsLmdldExldmVsKCkhPT1QZS5JZ25vcmV9KS5tYXAobyl9LHR9KCksTHA9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbihlLG4pe3JldHVybiB0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihyLGkpe3IuX19wcm90b19fPWl9fHxmdW5jdGlvbihyLGkpe2Zvcih2YXIgcyBpbiBpKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiYocltzXT1pW3NdKX0sdChlLG4pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmbiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhuKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTt0KGUsbik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1lLnByb3RvdHlwZT1uPT09bnVsbD9PYmplY3QuY3JlYXRlKG4pOihyLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgcil9fSgpLFlsPTQ3LFBwPTEwLElwPTEzLFRwPTEyLFdwPTM2LE9wPTM1LFVwPTEyMyxJbj02MSxWcD0zMyxCcD02MCxxcD02MixKaT00NixvdD1wLkN1c3RvbVRva2VuLFhpPW90KysseHI9b3QrKztvdCsrO3ZhciBLbD1vdCsrLFFsPW90KyssWmw9b3QrKyxlYz1vdCsrLFNyPW90Kys7b3QrKzt2YXIgdGM9ZnVuY3Rpb24odCl7THAoZSx0KTtmdW5jdGlvbiBlKCl7cmV0dXJuIHQhPT1udWxsJiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gZS5wcm90b3R5cGUuc2Nhbk5leHQ9ZnVuY3Rpb24obil7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihXcCkpe3ZhciByPVsiJCJdO2lmKHRoaXMuaWRlbnQocikpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4obixYaSxyLmpvaW4oIiIpKTt0aGlzLnN0cmVhbS5nb0JhY2tUbyhuKX1yZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW09wLFVwXSk/dGhpcy5maW5pc2hUb2tlbihuLHhyKTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbSW4sSW5dKT90aGlzLmZpbmlzaFRva2VuKG4sS2wpOnRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtWcCxJbl0pP3RoaXMuZmluaXNoVG9rZW4obixRbCk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihCcCk/dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihJbik/dGhpcy5maW5pc2hUb2tlbihuLGVjKTp0aGlzLmZpbmlzaFRva2VuKG4scC5EZWxpbSk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihxcCk/dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihJbik/dGhpcy5maW5pc2hUb2tlbihuLFpsKTp0aGlzLmZpbmlzaFRva2VuKG4scC5EZWxpbSk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW0ppLEppLEppXSk/dGhpcy5maW5pc2hUb2tlbihuLFNyKTp0LnByb3RvdHlwZS5zY2FuTmV4dC5jYWxsKHRoaXMsbil9LGUucHJvdG90eXBlLmNvbW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tbWVudC5jYWxsKHRoaXMpPyEwOiF0aGlzLmluVVJMJiZ0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbWWwsWWxdKT8odGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcihmdW5jdGlvbihuKXtzd2l0Y2gobil7Y2FzZSBQcDpjYXNlIElwOmNhc2UgVHA6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19KSwhMCk6ITF9LGV9KHZuKSxZaT1HZSgpLEtpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3RoaXMuaWQ9ZSx0aGlzLm1lc3NhZ2U9bn1yZXR1cm4gdH0oKSxRaT17RnJvbUV4cGVjdGVkOm5ldyBLaSgic2Nzcy1mcm9tZXhwZWN0ZWQiLFlpKCJleHBlY3RlZC5mcm9tIiwiJ2Zyb20nIGV4cGVjdGVkIikpLFRocm91Z2hPclRvRXhwZWN0ZWQ6bmV3IEtpKCJzY3NzLXRocm91Z2hleHBlY3RlZCIsWWkoImV4cGVjdGVkLnRocm91Z2giLCIndGhyb3VnaCcgb3IgJ3RvJyBleHBlY3RlZCIpKSxJbkV4cGVjdGVkOm5ldyBLaSgic2Nzcy1mcm9tZXhwZWN0ZWQiLFlpKCJleHBlY3RlZC5pbiIsIidpbicgZXhwZWN0ZWQiKSl9LGpwPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24ocixpKXtyLl9fcHJvdG9fXz1pfXx8ZnVuY3Rpb24ocixpKXtmb3IodmFyIHMgaW4gaSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxzKSYmKHJbc109aVtzXSl9LHQoZSxuKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYodHlwZW9mIG4hPSJmdW5jdGlvbiImJm4hPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7dChlLG4pO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9ZS5wcm90b3R5cGU9bj09PW51bGw/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0oKSwkcD1mdW5jdGlvbih0KXtqcChlLHQpO2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsbmV3IHRjKXx8dGhpc31yZXR1cm4gZS5wcm90b3R5cGUuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudD1mdW5jdGlvbihuKXtyZXR1cm4gbj09PXZvaWQgMCYmKG49ITEpLHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VXYXJuQW5kRGVidWcoKXx8dGhpcy5fcGFyc2VDb250cm9sU3RhdGVtZW50KCl8fHRoaXMuX3BhcnNlTWl4aW5EZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZU1peGluQ29udGVudCgpfHx0aGlzLl9wYXJzZU1peGluUmVmZXJlbmNlKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZUZvcndhcmQoKXx8dGhpcy5fcGFyc2VVc2UoKXx8dGhpcy5fcGFyc2VSdWxlc2V0KG4pfHx0LnByb3RvdHlwZS5fcGFyc2VTdHlsZXNoZWV0QXRTdGF0ZW1lbnQuY2FsbCh0aGlzLG4pOnRoaXMuX3BhcnNlUnVsZXNldCghMCl8fHRoaXMuX3BhcnNlVmFyaWFibGVEZWNsYXJhdGlvbigpfSxlLnByb3RvdHlwZS5fcGFyc2VJbXBvcnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGltcG9ydCIpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlKG1pKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlVVJJTGl0ZXJhbCgpKSYmIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuVVJJT3JTdHJpbmdFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKTspaWYoIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpJiYhbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5VUklPclN0cmluZ0V4cGVjdGVkKTtyZXR1cm4hdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmIXRoaXMucGVlayhwLkVPRikmJm4uc2V0TWVkaWFsaXN0KHRoaXMuX3BhcnNlTWVkaWFRdWVyeUxpc3QoKSksdGhpcy5maW5pc2gobil9LGUucHJvdG90eXBlLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb249ZnVuY3Rpb24obil7aWYobj09PXZvaWQgMCYmKG49W10pLCF0aGlzLnBlZWsoWGkpKXJldHVybiBudWxsO3ZhciByPXRoaXMuY3JlYXRlKHJyKTtpZighci5zZXRWYXJpYWJsZSh0aGlzLl9wYXJzZVZhcmlhYmxlKCkpKXJldHVybiBudWxsO2lmKCF0aGlzLmFjY2VwdChwLkNvbG9uKSlyZXR1cm4gdGhpcy5maW5pc2gocixTLkNvbG9uRXhwZWN0ZWQpO2lmKHRoaXMucHJldlRva2VuJiYoci5jb2xvblBvc2l0aW9uPXRoaXMucHJldlRva2VuLm9mZnNldCksIXIuc2V0VmFsdWUodGhpcy5fcGFyc2VFeHByKCkpKXJldHVybiB0aGlzLmZpbmlzaChyLFMuVmFyaWFibGVWYWx1ZUV4cGVjdGVkLFtdLG4pO2Zvcig7dGhpcy5wZWVrKHAuRXhjbGFtYXRpb24pOylpZighci5hZGRDaGlsZCh0aGlzLl90cnlQYXJzZVByaW8oKSkpe2lmKHRoaXMuY29uc3VtZVRva2VuKCksIXRoaXMucGVla1JlZ0V4cChwLklkZW50LC9eKGRlZmF1bHR8Z2xvYmFsKSQvKSlyZXR1cm4gdGhpcy5maW5pc2gocixTLlVua25vd25LZXl3b3JkKTt0aGlzLmNvbnN1bWVUb2tlbigpfXJldHVybiB0aGlzLnBlZWsocC5TZW1pQ29sb24pJiYoci5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnRva2VuLm9mZnNldCksdGhpcy5maW5pc2gocil9LGUucHJvdG90eXBlLl9wYXJzZU1lZGlhQ29uZGl0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlSW50ZXJwb2xhdGlvbigpfHx0LnByb3RvdHlwZS5fcGFyc2VNZWRpYUNvbmRpdGlvbi5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS5fcGFyc2VNZWRpYUZlYXR1cmVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlTW9kdWxlTWVtYmVyKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb24oKXx8dGhpcy5fcGFyc2VJZGVudCgpfHx0aGlzLl9wYXJzZVZhcmlhYmxlKCl9LGUucHJvdG90eXBlLl9wYXJzZUtleWZyYW1lU2VsZWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJ5UGFyc2VLZXlmcmFtZVNlbGVjdG9yKCl8fHRoaXMuX3BhcnNlQ29udHJvbFN0YXRlbWVudCh0aGlzLl9wYXJzZUtleWZyYW1lU2VsZWN0b3IuYmluZCh0aGlzKSl8fHRoaXMuX3BhcnNlVmFyaWFibGVEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZU1peGluQ29udGVudCgpfSxlLnByb3RvdHlwZS5fcGFyc2VWYXJpYWJsZT1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsoWGkpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlKHhpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxufSxlLnByb3RvdHlwZS5fcGFyc2VNb2R1bGVNZW1iZXI9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLm1hcmsoKSxyPXRoaXMuY3JlYXRlKE1vKTtyZXR1cm4gci5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlSWRlbnQoW1ouTW9kdWxlXSkpP3RoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHREZWxpbSgiLiIpfHx0aGlzLmhhc1doaXRlc3BhY2UoKT8odGhpcy5yZXN0b3JlQXRNYXJrKG4pLG51bGwpOnIuYWRkQ2hpbGQodGhpcy5fcGFyc2VWYXJpYWJsZSgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uKCkpP3I6dGhpcy5maW5pc2gocixTLklkZW50aWZpZXJPclZhcmlhYmxlRXhwZWN0ZWQpOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZUlkZW50PWZ1bmN0aW9uKG4pe3ZhciByPXRoaXM7aWYoIXRoaXMucGVlayhwLklkZW50KSYmIXRoaXMucGVlayh4cikmJiF0aGlzLnBlZWtEZWxpbSgiLSIpKXJldHVybiBudWxsO3ZhciBpPXRoaXMuY3JlYXRlKFdlKTtpLnJlZmVyZW5jZVR5cGVzPW4saS5pc0N1c3RvbVByb3BlcnR5PXRoaXMucGVla1JlZ0V4cChwLklkZW50LC9eLS0vKTtmb3IodmFyIHM9ITEsYT1mdW5jdGlvbigpe3ZhciBvPXIubWFyaygpO3JldHVybiByLmFjY2VwdERlbGltKCItIikmJihyLmhhc1doaXRlc3BhY2UoKXx8ci5hY2NlcHREZWxpbSgiLSIpLHIuaGFzV2hpdGVzcGFjZSgpKT8oci5yZXN0b3JlQXRNYXJrKG8pLG51bGwpOnIuX3BhcnNlSW50ZXJwb2xhdGlvbigpfTsodGhpcy5hY2NlcHQocC5JZGVudCl8fGkuYWRkQ2hpbGQoYSgpKXx8cyYmdGhpcy5hY2NlcHRSZWdleHAoL15bXHctXS8pKSYmKHM9ITAsIXRoaXMuaGFzV2hpdGVzcGFjZSgpKTspO3JldHVybiBzP3RoaXMuZmluaXNoKGkpOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZVRlcm1FeHByZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlTW9kdWxlTWVtYmVyKCl8fHRoaXMuX3BhcnNlVmFyaWFibGUoKXx8dGhpcy5fcGFyc2VTZWxlY3RvckNvbWJpbmF0b3IoKXx8dC5wcm90b3R5cGUuX3BhcnNlVGVybUV4cHJlc3Npb24uY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3BhcnNlSW50ZXJwb2xhdGlvbj1mdW5jdGlvbigpe2lmKHRoaXMucGVlayh4cikpe3ZhciBuPXRoaXMuY3JlYXRlKHdpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhbi5hZGRDaGlsZCh0aGlzLl9wYXJzZUV4cHIoKSkmJiF0aGlzLl9wYXJzZVNlbGVjdG9yQ29tYmluYXRvcigpP3RoaXMuYWNjZXB0KHAuQ3VybHlSKT90aGlzLmZpbmlzaChuKTp0aGlzLmZpbmlzaChuLFMuRXhwcmVzc2lvbkV4cGVjdGVkKTp0aGlzLmFjY2VwdChwLkN1cmx5Uik/dGhpcy5maW5pc2gobik6dGhpcy5maW5pc2gobixTLlJpZ2h0Q3VybHlFeHBlY3RlZCl9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl9wYXJzZU9wZXJhdG9yPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrKEtsKXx8dGhpcy5wZWVrKFFsKXx8dGhpcy5wZWVrKFpsKXx8dGhpcy5wZWVrKGVjKXx8dGhpcy5wZWVrRGVsaW0oIj4iKXx8dGhpcy5wZWVrRGVsaW0oIjwiKXx8dGhpcy5wZWVrSWRlbnQoImFuZCIpfHx0aGlzLnBlZWtJZGVudCgib3IiKXx8dGhpcy5wZWVrRGVsaW0oIiUiKSl7dmFyIG49dGhpcy5jcmVhdGVOb2RlKHYuT3BlcmF0b3IpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKG4pfXJldHVybiB0LnByb3RvdHlwZS5fcGFyc2VPcGVyYXRvci5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS5fcGFyc2VVbmFyeU9wZXJhdG9yPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrSWRlbnQoIm5vdCIpKXt2YXIgbj10aGlzLmNyZWF0ZShVKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChuKX1yZXR1cm4gdC5wcm90b3R5cGUuX3BhcnNlVW5hcnlPcGVyYXRvci5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wZWVrKHAuQXRLZXl3b3JkKT90aGlzLl9wYXJzZUtleWZyYW1lKCl8fHRoaXMuX3BhcnNlSW1wb3J0KCl8fHRoaXMuX3BhcnNlTWVkaWEoITApfHx0aGlzLl9wYXJzZUZvbnRGYWNlKCl8fHRoaXMuX3BhcnNlV2FybkFuZERlYnVnKCl8fHRoaXMuX3BhcnNlQ29udHJvbFN0YXRlbWVudCgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VFeHRlbmRzKCl8fHRoaXMuX3BhcnNlTWl4aW5SZWZlcmVuY2UoKXx8dGhpcy5fcGFyc2VNaXhpbkNvbnRlbnQoKXx8dGhpcy5fcGFyc2VNaXhpbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlUnVsZXNldCghMCl8fHRoaXMuX3BhcnNlU3VwcG9ydHMoITApfHx0LnByb3RvdHlwZS5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb25BdFN0YXRlbWVudC5jYWxsKHRoaXMpOnRoaXMuX3BhcnNlVmFyaWFibGVEZWNsYXJhdGlvbigpfHx0aGlzLl90cnlQYXJzZVJ1bGVzZXQoITApfHx0LnByb3RvdHlwZS5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3BhcnNlRGVjbGFyYXRpb249ZnVuY3Rpb24obil7dmFyIHI9dGhpcy5fdHJ5UGFyc2VDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKG4pO2lmKHIpcmV0dXJuIHI7dmFyIGk9dGhpcy5jcmVhdGUoWmUpO2lmKCFpLnNldFByb3BlcnR5KHRoaXMuX3BhcnNlUHJvcGVydHkoKSkpcmV0dXJuIG51bGw7aWYoIXRoaXMuYWNjZXB0KHAuQ29sb24pKXJldHVybiB0aGlzLmZpbmlzaChpLFMuQ29sb25FeHBlY3RlZCxbcC5Db2xvbl0sbnx8W3AuU2VtaUNvbG9uXSk7dGhpcy5wcmV2VG9rZW4mJihpLmNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KTt2YXIgcz0hMTtpZihpLnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcigpKSYmKHM9ITAsaS5hZGRDaGlsZCh0aGlzLl9wYXJzZVByaW8oKSkpLHRoaXMucGVlayhwLkN1cmx5TCkpaS5zZXROZXN0ZWRQcm9wZXJ0aWVzKHRoaXMuX3BhcnNlTmVzdGVkUHJvcGVydGllcygpKTtlbHNlIGlmKCFzKXJldHVybiB0aGlzLmZpbmlzaChpLFMuUHJvcGVydHlWYWx1ZUV4cGVjdGVkKTtyZXR1cm4gdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmKGkuc2VtaWNvbG9uUG9zaXRpb249dGhpcy50b2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKGkpfSxlLnByb3RvdHlwZS5fcGFyc2VOZXN0ZWRQcm9wZXJ0aWVzPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5jcmVhdGUoa28pO3JldHVybiB0aGlzLl9wYXJzZUJvZHkobix0aGlzLl9wYXJzZURlY2xhcmF0aW9uLmJpbmQodGhpcykpfSxlLnByb3RvdHlwZS5fcGFyc2VFeHRlbmRzPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrS2V5d29yZCgiQGV4dGVuZCIpKXt2YXIgbj10aGlzLmNyZWF0ZShTbik7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhbi5nZXRTZWxlY3RvcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVNpbXBsZVNlbGVjdG9yKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuU2VsZWN0b3JFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKTspbi5nZXRTZWxlY3RvcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVNpbXBsZVNlbGVjdG9yKCkpO3JldHVybiB0aGlzLmFjY2VwdChwLkV4Y2xhbWF0aW9uKSYmIXRoaXMuYWNjZXB0SWRlbnQoIm9wdGlvbmFsIik/dGhpcy5maW5pc2gobixTLlVua25vd25LZXl3b3JkKTp0aGlzLmZpbmlzaChuKX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlU2VsZWN0b3JDb21iaW5hdG9yKCl8fHRoaXMuX3BhcnNlU2VsZWN0b3JQbGFjZWhvbGRlcigpfHx0LnByb3RvdHlwZS5fcGFyc2VTaW1wbGVTZWxlY3RvckJvZHkuY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3BhcnNlU2VsZWN0b3JDb21iaW5hdG9yPWZ1bmN0aW9uKCl7aWYodGhpcy5wZWVrRGVsaW0oIiYiKSl7dmFyIG49dGhpcy5jcmVhdGVOb2RlKHYuU2VsZWN0b3JDb21iaW5hdG9yKTtmb3IodGhpcy5jb25zdW1lVG9rZW4oKTshdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJih0aGlzLmFjY2VwdERlbGltKCItIil8fHRoaXMuYWNjZXB0KHAuTnVtKXx8dGhpcy5hY2NlcHQocC5EaW1lbnNpb24pfHxuLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSl8fHRoaXMuYWNjZXB0RGVsaW0oIiYiKSk7KTtyZXR1cm4gdGhpcy5maW5pc2gobil9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl9wYXJzZVNlbGVjdG9yUGxhY2Vob2xkZXI9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtEZWxpbSgiJSIpKXt2YXIgbj10aGlzLmNyZWF0ZU5vZGUodi5TZWxlY3RvclBsYWNlaG9sZGVyKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLl9wYXJzZUlkZW50KCksdGhpcy5maW5pc2gobil9ZWxzZSBpZih0aGlzLnBlZWtLZXl3b3JkKCJAYXQtcm9vdCIpKXt2YXIgbj10aGlzLmNyZWF0ZU5vZGUodi5TZWxlY3RvclBsYWNlaG9sZGVyKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChuKX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlRWxlbWVudE5hbWU9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLm1hcmsoKSxyPXQucHJvdG90eXBlLl9wYXJzZUVsZW1lbnROYW1lLmNhbGwodGhpcyk7cmV0dXJuIHImJiF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNMKT8odGhpcy5yZXN0b3JlQXRNYXJrKG4pLG51bGwpOnJ9LGUucHJvdG90eXBlLl90cnlQYXJzZVBzZXVkb0lkZW50aWZpZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJbnRlcnBvbGF0aW9uKCl8fHQucHJvdG90eXBlLl90cnlQYXJzZVBzZXVkb0lkZW50aWZpZXIuY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3BhcnNlV2FybkFuZERlYnVnPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBkZWJ1ZyIpJiYhdGhpcy5wZWVrS2V5d29yZCgiQHdhcm4iKSYmIXRoaXMucGVla0tleXdvcmQoIkBlcnJvciIpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlTm9kZSh2LkRlYnVnKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxuLmFkZENoaWxkKHRoaXMuX3BhcnNlRXhwcigpKSx0aGlzLmZpbmlzaChuKX0sZS5wcm90b3R5cGUuX3BhcnNlQ29udHJvbFN0YXRlbWVudD1mdW5jdGlvbihuKXtyZXR1cm4gbj09PXZvaWQgMCYmKG49dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSksdGhpcy5wZWVrKHAuQXRLZXl3b3JkKT90aGlzLl9wYXJzZUlmU3RhdGVtZW50KG4pfHx0aGlzLl9wYXJzZUZvclN0YXRlbWVudChuKXx8dGhpcy5fcGFyc2VFYWNoU3RhdGVtZW50KG4pfHx0aGlzLl9wYXJzZVdoaWxlU3RhdGVtZW50KG4pOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZUlmU3RhdGVtZW50PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnBlZWtLZXl3b3JkKCJAaWYiKT90aGlzLl9pbnRlcm5hbFBhcnNlSWZTdGF0ZW1lbnQobik6bnVsbH0sZS5wcm90b3R5cGUuX2ludGVybmFsUGFyc2VJZlN0YXRlbWVudD1mdW5jdGlvbihuKXt2YXIgcj10aGlzLmNyZWF0ZShvdSk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhci5zZXRFeHByZXNzaW9uKHRoaXMuX3BhcnNlRXhwcighMCkpKXJldHVybiB0aGlzLmZpbmlzaChyLFMuRXhwcmVzc2lvbkV4cGVjdGVkKTtpZih0aGlzLl9wYXJzZUJvZHkocixuKSx0aGlzLmFjY2VwdEtleXdvcmQoIkBlbHNlIikpe2lmKHRoaXMucGVla0lkZW50KCJpZiIpKXIuc2V0RWxzZUNsYXVzZSh0aGlzLl9pbnRlcm5hbFBhcnNlSWZTdGF0ZW1lbnQobikpO2Vsc2UgaWYodGhpcy5wZWVrKHAuQ3VybHlMKSl7dmFyIGk9dGhpcy5jcmVhdGUoZHUpO3RoaXMuX3BhcnNlQm9keShpLG4pLHIuc2V0RWxzZUNsYXVzZShpKX19cmV0dXJuIHRoaXMuZmluaXNoKHIpfSxlLnByb3RvdHlwZS5fcGFyc2VGb3JTdGF0ZW1lbnQ9ZnVuY3Rpb24obil7aWYoIXRoaXMucGVla0tleXdvcmQoIkBmb3IiKSlyZXR1cm4gbnVsbDt2YXIgcj10aGlzLmNyZWF0ZShsdSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksci5zZXRWYXJpYWJsZSh0aGlzLl9wYXJzZVZhcmlhYmxlKCkpP3RoaXMuYWNjZXB0SWRlbnQoImZyb20iKT9yLmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKT8hdGhpcy5hY2NlcHRJZGVudCgidG8iKSYmIXRoaXMuYWNjZXB0SWRlbnQoInRocm91Z2giKT90aGlzLmZpbmlzaChyLFFpLlRocm91Z2hPclRvRXhwZWN0ZWQsW3AuQ3VybHlSXSk6ci5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSk/dGhpcy5fcGFyc2VCb2R5KHIsbik6dGhpcy5maW5pc2gocixTLkV4cHJlc3Npb25FeHBlY3RlZCxbcC5DdXJseVJdKTp0aGlzLmZpbmlzaChyLFMuRXhwcmVzc2lvbkV4cGVjdGVkLFtwLkN1cmx5Ul0pOnRoaXMuZmluaXNoKHIsUWkuRnJvbUV4cGVjdGVkLFtwLkN1cmx5Ul0pOnRoaXMuZmluaXNoKHIsUy5WYXJpYWJsZU5hbWVFeHBlY3RlZCxbcC5DdXJseVJdKX0sZS5wcm90b3R5cGUuX3BhcnNlRWFjaFN0YXRlbWVudD1mdW5jdGlvbihuKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGVhY2giKSlyZXR1cm4gbnVsbDt2YXIgcj10aGlzLmNyZWF0ZShjdSk7dGhpcy5jb25zdW1lVG9rZW4oKTt2YXIgaT1yLmdldFZhcmlhYmxlcygpO2lmKCFpLmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHIsUy5WYXJpYWJsZU5hbWVFeHBlY3RlZCxbcC5DdXJseVJdKTtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighaS5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCkpKXJldHVybiB0aGlzLmZpbmlzaChyLFMuVmFyaWFibGVOYW1lRXhwZWN0ZWQsW3AuQ3VybHlSXSk7cmV0dXJuIHRoaXMuZmluaXNoKGkpLHRoaXMuYWNjZXB0SWRlbnQoImluIik/ci5hZGRDaGlsZCh0aGlzLl9wYXJzZUV4cHIoKSk/dGhpcy5fcGFyc2VCb2R5KHIsbik6dGhpcy5maW5pc2gocixTLkV4cHJlc3Npb25FeHBlY3RlZCxbcC5DdXJseVJdKTp0aGlzLmZpbmlzaChyLFFpLkluRXhwZWN0ZWQsW3AuQ3VybHlSXSl9LGUucHJvdG90eXBlLl9wYXJzZVdoaWxlU3RhdGVtZW50PWZ1bmN0aW9uKG4pe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAd2hpbGUiKSlyZXR1cm4gbnVsbDt2YXIgcj10aGlzLmNyZWF0ZShodSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksci5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSk/dGhpcy5fcGFyc2VCb2R5KHIsbik6dGhpcy5maW5pc2gocixTLkV4cHJlc3Npb25FeHBlY3RlZCxbcC5DdXJseVJdKX0sZS5wcm90b3R5cGUuX3BhcnNlRnVuY3Rpb25Cb2R5RGVjbGFyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlUmV0dXJuU3RhdGVtZW50KCl8fHRoaXMuX3BhcnNlV2FybkFuZERlYnVnKCl8fHRoaXMuX3BhcnNlQ29udHJvbFN0YXRlbWVudCh0aGlzLl9wYXJzZUZ1bmN0aW9uQm9keURlY2xhcmF0aW9uLmJpbmQodGhpcykpfSxlLnByb3RvdHlwZS5fcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBmdW5jdGlvbiIpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlKG5yKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFuLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VJZGVudChbWi5GdW5jdGlvbl0pKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLklkZW50aWZpZXJFeHBlY3RlZCxbcC5DdXJseVJdKTtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuQ3VybHlSXSk7aWYobi5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSl7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KWlmKCFuLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuVmFyaWFibGVOYW1lRXhwZWN0ZWQpfXJldHVybiB0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUik/dGhpcy5fcGFyc2VCb2R5KG4sdGhpcy5fcGFyc2VGdW5jdGlvbkJvZHlEZWNsYXJhdGlvbi5iaW5kKHRoaXMpKTp0aGlzLmZpbmlzaChuLFMuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkLFtwLkN1cmx5Ul0pfSxlLnByb3RvdHlwZS5fcGFyc2VSZXR1cm5TdGF0ZW1lbnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHJldHVybiIpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlTm9kZSh2LlJldHVyblN0YXRlbWVudCk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksbi5hZGRDaGlsZCh0aGlzLl9wYXJzZUV4cHIoKSk/dGhpcy5maW5pc2gobik6dGhpcy5maW5pc2gobixTLkV4cHJlc3Npb25FeHBlY3RlZCl9LGUucHJvdG90eXBlLl9wYXJzZU1peGluRGVjbGFyYXRpb249ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQG1peGluIikpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5jcmVhdGUoQ24pO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIW4uc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KFtaLk1peGluXSkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuSWRlbnRpZmllckV4cGVjdGVkLFtwLkN1cmx5Ul0pO2lmKHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSl7aWYobi5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSl7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KWlmKCFuLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuVmFyaWFibGVOYW1lRXhwZWN0ZWQpfWlmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuQ3VybHlSXSl9cmV0dXJuIHRoaXMuX3BhcnNlQm9keShuLHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpfSxlLnByb3RvdHlwZS5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbj1mdW5jdGlvbigpe3ZhciBuPXRoaXMuY3JlYXRlKHRyKTtyZXR1cm4gbi5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlVmFyaWFibGUoKSk/KHRoaXMuYWNjZXB0KFNyKSx0aGlzLmFjY2VwdChwLkNvbG9uKSYmIW4uc2V0RGVmYXVsdFZhbHVlKHRoaXMuX3BhcnNlRXhwcighMCkpP3RoaXMuZmluaXNoKG4sUy5WYXJpYWJsZVZhbHVlRXhwZWN0ZWQsW10sW3AuQ29tbWEscC5QYXJlbnRoZXNpc1JdKTp0aGlzLmZpbmlzaChuKSk6bnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlTWl4aW5Db250ZW50PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBjb250ZW50IikpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5jcmVhdGUoRHUpO2lmKHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtpZihuLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKSl7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KWlmKCFuLmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlRnVuY3Rpb25Bcmd1bWVudCgpKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLkV4cHJlc3Npb25FeHBlY3RlZCl9aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9cmV0dXJuIHRoaXMuZmluaXNoKG4pfSxlLnByb3RvdHlwZS5fcGFyc2VNaXhpblJlZmVyZW5jZT1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAaW5jbHVkZSIpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlKGlyKTt0aGlzLmNvbnN1bWVUb2tlbigpO3ZhciByPXRoaXMuX3BhcnNlSWRlbnQoW1ouTWl4aW5dKTtpZighbi5zZXRJZGVudGlmaWVyKHIpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuSWRlbnRpZmllckV4cGVjdGVkLFtwLkN1cmx5Ul0pO2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHREZWxpbSgiLiIpJiYhdGhpcy5oYXNXaGl0ZXNwYWNlKCkpe3ZhciBpPXRoaXMuX3BhcnNlSWRlbnQoW1ouTWl4aW5dKTtpZighaSlyZXR1cm4gdGhpcy5maW5pc2gobixTLklkZW50aWZpZXJFeHBlY3RlZCxbcC5DdXJseVJdKTt2YXIgcz10aGlzLmNyZWF0ZShNbyk7ci5yZWZlcmVuY2VUeXBlcz1bWi5Nb2R1bGVdLHMuc2V0SWRlbnRpZmllcihyKSxuLnNldElkZW50aWZpZXIoaSksbi5hZGRDaGlsZChzKX1pZih0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe2lmKG4uZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpKXtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIW4uZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuRXhwcmVzc2lvbkV4cGVjdGVkKX1pZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1yZXR1cm4odGhpcy5wZWVrSWRlbnQoInVzaW5nIil8fHRoaXMucGVlayhwLkN1cmx5TCkpJiZuLnNldENvbnRlbnQodGhpcy5fcGFyc2VNaXhpbkNvbnRlbnREZWNsYXJhdGlvbigpKSx0aGlzLmZpbmlzaChuKX0sZS5wcm90b3R5cGUuX3BhcnNlTWl4aW5Db250ZW50RGVjbGFyYXRpb249ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmNyZWF0ZShBdSk7aWYodGhpcy5hY2NlcHRJZGVudCgidXNpbmciKSl7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtwLkN1cmx5TF0pO2lmKG4uZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSkpe2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSkmJiF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpOylpZighbi5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLlZhcmlhYmxlTmFtZUV4cGVjdGVkKX1pZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkLFtwLkN1cmx5TF0pfXJldHVybiB0aGlzLnBlZWsocC5DdXJseUwpJiZ0aGlzLl9wYXJzZUJvZHkobix0aGlzLl9wYXJzZU1peGluUmVmZXJlbmNlQm9keVN0YXRlbWVudC5iaW5kKHRoaXMpKSx0aGlzLmZpbmlzaChuKX0sZS5wcm90b3R5cGUuX3BhcnNlTWl4aW5SZWZlcmVuY2VCb2R5U3RhdGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyeVBhcnNlS2V5ZnJhbWVTZWxlY3RvcigpfHx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbigpfSxlLnByb3RvdHlwZS5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50PWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5jcmVhdGUoWXQpLHI9dGhpcy5tYXJrKCksaT10aGlzLl9wYXJzZVZhcmlhYmxlKCk7aWYoaSlpZih0aGlzLmFjY2VwdChwLkNvbG9uKSluLnNldElkZW50aWZpZXIoaSk7ZWxzZXtpZih0aGlzLmFjY2VwdChTcikpcmV0dXJuIG4uc2V0VmFsdWUoaSksdGhpcy5maW5pc2gobik7dGhpcy5yZXN0b3JlQXRNYXJrKHIpfXJldHVybiBuLnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcighMCkpPyh0aGlzLmFjY2VwdChTciksbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVByaW8oKSksdGhpcy5maW5pc2gobikpOm4uc2V0VmFsdWUodGhpcy5fdHJ5UGFyc2VQcmlvKCkpP3RoaXMuZmluaXNoKG4pOm51bGx9LGUucHJvdG90eXBlLl9wYXJzZVVSTEFyZ3VtZW50PWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5tYXJrKCkscj10LnByb3RvdHlwZS5fcGFyc2VVUkxBcmd1bWVudC5jYWxsKHRoaXMpO2lmKCFyfHwhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKSl7dGhpcy5yZXN0b3JlQXRNYXJrKG4pO3ZhciBpPXRoaXMuY3JlYXRlKFUpO3JldHVybiBpLmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSx0aGlzLmZpbmlzaChpKX1yZXR1cm4gcn0sZS5wcm90b3R5cGUuX3BhcnNlT3BlcmF0aW9uPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhwLlBhcmVudGhlc2lzTCkpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5jcmVhdGUoVSk7Zm9yKHRoaXMuY29uc3VtZVRva2VuKCk7bi5hZGRDaGlsZCh0aGlzLl9wYXJzZUxpc3RFbGVtZW50KCkpOyl0aGlzLmFjY2VwdChwLkNvbW1hKTtyZXR1cm4gdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKG4pOnRoaXMuZmluaXNoKG4sUy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfSxlLnByb3RvdHlwZS5fcGFyc2VMaXN0RWxlbWVudD1mdW5jdGlvbigpe3ZhciBuPXRoaXMuY3JlYXRlKE51KSxyPXRoaXMuX3BhcnNlQmluYXJ5RXhwcigpO2lmKCFyKXJldHVybiBudWxsO2lmKHRoaXMuYWNjZXB0KHAuQ29sb24pKXtpZihuLnNldEtleShyKSwhbi5zZXRWYWx1ZSh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5FeHByZXNzaW9uRXhwZWN0ZWQpfWVsc2Ugbi5zZXRWYWx1ZShyKTtyZXR1cm4gdGhpcy5maW5pc2gobil9LGUucHJvdG90eXBlLl9wYXJzZVVzZT1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAdXNlIikpcmV0dXJuIG51bGw7dmFyIG49dGhpcy5jcmVhdGUocHUpO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuU3RyaW5nTGl0ZXJhbEV4cGVjdGVkKTtpZighdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmIXRoaXMucGVlayhwLkVPRikpe2lmKCF0aGlzLnBlZWtSZWdFeHAocC5JZGVudCwvYXN8d2l0aC8pKXJldHVybiB0aGlzLmZpbmlzaChuLFMuVW5rbm93bktleXdvcmQpO2lmKHRoaXMuYWNjZXB0SWRlbnQoImFzIikmJiFuLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VJZGVudChbWi5Nb2R1bGVdKSkmJiF0aGlzLmFjY2VwdERlbGltKCIqIikpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5JZGVudGlmaWVyT3JXaWxkY2FyZEV4cGVjdGVkKTtpZih0aGlzLmFjY2VwdElkZW50KCJ3aXRoIikpe2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbcC5QYXJlbnRoZXNpc1JdKTtpZighbi5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNb2R1bGVDb25maWdEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLlZhcmlhYmxlTmFtZUV4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIW4uZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTW9kdWxlQ29uZmlnRGVjbGFyYXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5WYXJpYWJsZU5hbWVFeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9fXJldHVybiF0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikmJiF0aGlzLmFjY2VwdChwLkVPRik/dGhpcy5maW5pc2gobixTLlNlbWlDb2xvbkV4cGVjdGVkKTp0aGlzLmZpbmlzaChuKX0sZS5wcm90b3R5cGUuX3BhcnNlTW9kdWxlQ29uZmlnRGVjbGFyYXRpb249ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmNyZWF0ZShmdSk7cmV0dXJuIG4uc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZVZhcmlhYmxlKCkpPyF0aGlzLmFjY2VwdChwLkNvbG9uKXx8IW4uc2V0VmFsdWUodGhpcy5fcGFyc2VFeHByKCEwKSk/dGhpcy5maW5pc2gobixTLlZhcmlhYmxlVmFsdWVFeHBlY3RlZCxbXSxbcC5Db21tYSxwLlBhcmVudGhlc2lzUl0pOnRoaXMuYWNjZXB0KHAuRXhjbGFtYXRpb24pJiYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdElkZW50KCJkZWZhdWx0IikpP3RoaXMuZmluaXNoKG4sUy5Vbmtub3duS2V5d29yZCk6dGhpcy5maW5pc2gobik6bnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlRm9yd2FyZD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAZm9yd2FyZCIpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlKG11KTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLlN0cmluZ0xpdGVyYWxFeHBlY3RlZCk7aWYodGhpcy5hY2NlcHRJZGVudCgid2l0aCIpKXtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuUGFyZW50aGVzaXNSXSk7aWYoIW4uZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTW9kdWxlQ29uZmlnRGVjbGFyYXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5WYXJpYWJsZU5hbWVFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KWlmKCFuLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1vZHVsZUNvbmZpZ0RlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuVmFyaWFibGVOYW1lRXhwZWN0ZWQpO2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfWlmKCF0aGlzLnBlZWsocC5TZW1pQ29sb24pJiYhdGhpcy5wZWVrKHAuRU9GKSl7aWYoIXRoaXMucGVla1JlZ0V4cChwLklkZW50LC9hc3xoaWRlfHNob3cvKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLlVua25vd25LZXl3b3JkKTtpZih0aGlzLmFjY2VwdElkZW50KCJhcyIpKXt2YXIgcj10aGlzLl9wYXJzZUlkZW50KFtaLkZvcndhcmRdKTtpZighbi5zZXRJZGVudGlmaWVyKHIpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuSWRlbnRpZmllckV4cGVjdGVkKTtpZih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0RGVsaW0oIioiKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLldpbGRjYXJkRXhwZWN0ZWQpfWlmKCh0aGlzLnBlZWtJZGVudCgiaGlkZSIpfHx0aGlzLnBlZWtJZGVudCgic2hvdyIpKSYmIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VGb3J3YXJkVmlzaWJpbGl0eSgpKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLklkZW50aWZpZXJPclZhcmlhYmxlRXhwZWN0ZWQpfXJldHVybiF0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikmJiF0aGlzLmFjY2VwdChwLkVPRik/dGhpcy5maW5pc2gobixTLlNlbWlDb2xvbkV4cGVjdGVkKTp0aGlzLmZpbmlzaChuKX0sZS5wcm90b3R5cGUuX3BhcnNlRm9yd2FyZFZpc2liaWxpdHk9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmNyZWF0ZShndSk7Zm9yKG4uc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KCkpO24uYWRkQ2hpbGQodGhpcy5fcGFyc2VWYXJpYWJsZSgpfHx0aGlzLl9wYXJzZUlkZW50KCkpOyl0aGlzLmFjY2VwdChwLkNvbW1hKTtyZXR1cm4gbi5nZXRDaGlsZHJlbigpLmxlbmd0aD4xP246bnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlU3VwcG9ydHNDb25kaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJbnRlcnBvbGF0aW9uKCl8fHQucHJvdG90eXBlLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uLmNhbGwodGhpcyl9LGV9KE5pKSxIcD1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHIsaSl7ci5fX3Byb3RvX189aX18fGZ1bmN0aW9uKHIsaSl7Zm9yKHZhciBzIGluIGkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJihyW3NdPWlbc10pfSx0KGUsbil9O3JldHVybiBmdW5jdGlvbihlLG4pe2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iJiZuIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO3QoZSxuKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWUucHJvdG90eXBlPW49PT1udWxsP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCksTT1HZSgpLEdwPWZ1bmN0aW9uKHQpe0hwKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3ZhciBpPXQuY2FsbCh0aGlzLCIkIixuLHIpfHx0aGlzO3JldHVybiBuYyhlLnNjc3NNb2R1bGVMb2FkZXJzKSxuYyhlLnNjc3NNb2R1bGVCdWlsdElucyksaX1yZXR1cm4gZS5wcm90b3R5cGUuaXNJbXBvcnRQYXRoUGFyZW50PWZ1bmN0aW9uKG4pe3JldHVybiBuPT09di5Gb3J3YXJkfHxuPT09di5Vc2V8fHQucHJvdG90eXBlLmlzSW1wb3J0UGF0aFBhcmVudC5jYWxsKHRoaXMsbil9LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JJbXBvcnRQYXRoPWZ1bmN0aW9uKG4scil7dmFyIGk9bi5nZXRQYXJlbnQoKS50eXBlO2lmKGk9PT12LkZvcndhcmR8fGk9PT12LlVzZSlmb3IodmFyIHM9MCxhPWUuc2Nzc01vZHVsZUJ1aWx0SW5zO3M8YS5sZW5ndGg7cysrKXt2YXIgbz1hW3NdLGw9e2xhYmVsOm8ubGFiZWwsZG9jdW1lbnRhdGlvbjpvLmRvY3VtZW50YXRpb24sdGV4dEVkaXQ6SC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG4pLCInIi5jb25jYXQoby5sYWJlbCwiJyIpKSxraW5kOiQuTW9kdWxlfTtyLml0ZW1zLnB1c2gobCl9cmV0dXJuIHQucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JJbXBvcnRQYXRoLmNhbGwodGhpcyxuLHIpfSxlLnByb3RvdHlwZS5jcmVhdGVSZXBsYWNlRnVuY3Rpb249ZnVuY3Rpb24oKXt2YXIgbj0xO3JldHVybiBmdW5jdGlvbihyLGkpe3JldHVybiJcXCIraSsiOiAkeyIrbisrKyI6IisoZS52YXJpYWJsZURlZmF1bHRzW2ldfHwiIikrIn0ifX0sZS5wcm90b3R5cGUuY3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHM9ZnVuY3Rpb24obixyLGkscyl7Zm9yKHZhciBhPTAsbz1uO2E8by5sZW5ndGg7YSsrKXt2YXIgbD1vW2FdLGM9bC5mdW5jLnJlcGxhY2UoL1xbPyhcJFx3KylcXT8vZyx0aGlzLmNyZWF0ZVJlcGxhY2VGdW5jdGlvbigpKSxoPWwuZnVuYy5zdWJzdHIoMCxsLmZ1bmMuaW5kZXhPZigiKCIpKSx1PXtsYWJlbDpoLGRldGFpbDpsLmZ1bmMsZG9jdW1lbnRhdGlvbjpsLmRlc2MsdGV4dEVkaXQ6SC5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHIpLGMpLGluc2VydFRleHRGb3JtYXQ6SWUuU25pcHBldCxraW5kOiQuRnVuY3Rpb259O2kmJih1LnNvcnRUZXh0PSJ6Iikscy5pdGVtcy5wdXNoKHUpfXJldHVybiBzfSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yPWZ1bmN0aW9uKG4scixpKXtyZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvblByb3Bvc2FscyhlLnNlbGVjdG9yRnVuY3MsbnVsbCwhMCxpKSx0LnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yLmNhbGwodGhpcyxuLHIsaSl9LGUucHJvdG90eXBlLmdldFRlcm1Qcm9wb3NhbHM9ZnVuY3Rpb24obixyLGkpe3ZhciBzPWUuYnVpbHRJbkZ1bmNzO3JldHVybiBuJiYocz1zLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4hYS50eXBlfHwhbi5yZXN0cmljdGlvbnN8fG4ucmVzdHJpY3Rpb25zLmluZGV4T2YoYS50eXBlKSE9PS0xfSkpLHRoaXMuY3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHMocyxyLCEwLGkpLHQucHJvdG90eXBlLmdldFRlcm1Qcm9wb3NhbHMuY2FsbCh0aGlzLG4scixpKX0sZS5wcm90b3R5cGUuZ2V0Q29sb3JQcm9wb3NhbHM9ZnVuY3Rpb24obixyLGkpe3JldHVybiB0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKGUuY29sb3JQcm9wb3NhbHMsciwhMSxpKSx0LnByb3RvdHlwZS5nZXRDb2xvclByb3Bvc2Fscy5jYWxsKHRoaXMsbixyLGkpfSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHk9ZnVuY3Rpb24obixyKXtyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uRm9yQXREaXJlY3RpdmVzKHIpLHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3RvcihudWxsLCEwLHIpLHQucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eS5jYWxsKHRoaXMsbixyKX0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlPWZ1bmN0aW9uKG4scixpKXtmb3IodmFyIHM9dGhpcy5nZXRTeW1ib2xDb250ZXh0KCkuZmluZFN5bWJvbHNBdE9mZnNldCh0aGlzLm9mZnNldCxaLlJ1bGUpLGE9MCxvPXM7YTxvLmxlbmd0aDthKyspe3ZhciBsPW9bYV0sYz17bGFiZWw6bC5uYW1lLHRleHRFZGl0OkgucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShyKSxsLm5hbWUpLGtpbmQ6JC5GdW5jdGlvbn07aS5pdGVtcy5wdXNoKGMpfXJldHVybiBpfSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uRm9yQXREaXJlY3RpdmVzPWZ1bmN0aW9uKG4pe3ZhciByO3JldHVybihyPW4uaXRlbXMpLnB1c2guYXBwbHkocixlLnNjc3NBdERpcmVjdGl2ZXMpLG59LGUucHJvdG90eXBlLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uRm9yQXREaXJlY3RpdmVzKG4pLHRoaXMuZ2V0Q29tcGxldGlvbkZvck1vZHVsZUxvYWRlcnMobiksdC5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbkZvclRvcExldmVsLmNhbGwodGhpcyxuKSxufSxlLnByb3RvdHlwZS5nZXRDb21wbGV0aW9uRm9yTW9kdWxlTG9hZGVycz1mdW5jdGlvbihuKXt2YXIgcjtyZXR1cm4ocj1uLml0ZW1zKS5wdXNoLmFwcGx5KHIsZS5zY3NzTW9kdWxlTG9hZGVycyksbn0sZS52YXJpYWJsZURlZmF1bHRzPXskcmVkOiIxIiwkZ3JlZW46IjIiLCRibHVlOiIzIiwkYWxwaGE6IjEuMCIsJGNvbG9yOiIjMDAwMDAwIiwkd2VpZ2h0OiIwLjUiLCRodWU6IjAiLCRzYXR1cmF0aW9uOiIwJSIsJGxpZ2h0bmVzczoiMCUiLCRkZWdyZWVzOiIwIiwkYW1vdW50OiIwIiwkc3RyaW5nOiciIicsJHN1YnN0cmluZzonInMiJywkbnVtYmVyOiIwIiwkbGltaXQ6IjEifSxlLmNvbG9yUHJvcG9zYWxzPVt7ZnVuYzoicmVkKCRjb2xvcikiLGRlc2M6TSgic2Nzcy5idWlsdGluLnJlZCIsIkdldHMgdGhlIHJlZCBjb21wb25lbnQgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImdyZWVuKCRjb2xvcikiLGRlc2M6TSgic2Nzcy5idWlsdGluLmdyZWVuIiwiR2V0cyB0aGUgZ3JlZW4gY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJibHVlKCRjb2xvcikiLGRlc2M6TSgic2Nzcy5idWlsdGluLmJsdWUiLCJHZXRzIHRoZSBibHVlIGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoibWl4KCRjb2xvciwgJGNvbG9yLCBbJHdlaWdodF0pIixkZXNjOk0oInNjc3MuYnVpbHRpbi5taXgiLCJNaXhlcyB0d28gY29sb3JzIHRvZ2V0aGVyLiIpfSx7ZnVuYzoiaHVlKCRjb2xvcikiLGRlc2M6TSgic2Nzcy5idWlsdGluLmh1ZSIsIkdldHMgdGhlIGh1ZSBjb21wb25lbnQgb2YgYSBjb2xvci4iKX0se2Z1bmM6InNhdHVyYXRpb24oJGNvbG9yKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uc2F0dXJhdGlvbiIsIkdldHMgdGhlIHNhdHVyYXRpb24gY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJsaWdodG5lc3MoJGNvbG9yKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4ubGlnaHRuZXNzIiwiR2V0cyB0aGUgbGlnaHRuZXNzIGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiYWRqdXN0LWh1ZSgkY29sb3IsICRkZWdyZWVzKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uYWRqdXN0LWh1ZSIsIkNoYW5nZXMgdGhlIGh1ZSBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoibGlnaHRlbigkY29sb3IsICRhbW91bnQpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5saWdodGVuIiwiTWFrZXMgYSBjb2xvciBsaWdodGVyLiIpfSx7ZnVuYzoiZGFya2VuKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6TSgic2Nzcy5idWlsdGluLmRhcmtlbiIsIk1ha2VzIGEgY29sb3IgZGFya2VyLiIpfSx7ZnVuYzoic2F0dXJhdGUoJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uc2F0dXJhdGUiLCJNYWtlcyBhIGNvbG9yIG1vcmUgc2F0dXJhdGVkLiIpfSx7ZnVuYzoiZGVzYXR1cmF0ZSgkY29sb3IsICRhbW91bnQpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5kZXNhdHVyYXRlIiwiTWFrZXMgYSBjb2xvciBsZXNzIHNhdHVyYXRlZC4iKX0se2Z1bmM6ImdyYXlzY2FsZSgkY29sb3IpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5ncmF5c2NhbGUiLCJDb252ZXJ0cyBhIGNvbG9yIHRvIGdyYXlzY2FsZS4iKX0se2Z1bmM6ImNvbXBsZW1lbnQoJGNvbG9yKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uY29tcGxlbWVudCIsIlJldHVybnMgdGhlIGNvbXBsZW1lbnQgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImludmVydCgkY29sb3IpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5pbnZlcnQiLCJSZXR1cm5zIHRoZSBpbnZlcnNlIG9mIGEgY29sb3IuIil9LHtmdW5jOiJhbHBoYSgkY29sb3IpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5hbHBoYSIsIkdldHMgdGhlIG9wYWNpdHkgY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJvcGFjaXR5KCRjb2xvcikiLGRlc2M6IkdldHMgdGhlIGFscGhhIGNvbXBvbmVudCAob3BhY2l0eSkgb2YgYSBjb2xvci4ifSx7ZnVuYzoicmdiYSgkY29sb3IsICRhbHBoYSkiLGRlc2M6TSgic2Nzcy5idWlsdGluLnJnYmEiLCJDaGFuZ2VzIHRoZSBhbHBoYSBjb21wb25lbnQgZm9yIGEgY29sb3IuIil9LHtmdW5jOiJvcGFjaWZ5KCRjb2xvciwgJGFtb3VudCkiLGRlc2M6TSgic2Nzcy5idWlsdGluLm9wYWNpZnkiLCJNYWtlcyBhIGNvbG9yIG1vcmUgb3BhcXVlLiIpfSx7ZnVuYzoiZmFkZS1pbigkY29sb3IsICRhbW91bnQpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5mYWRlLWluIiwiTWFrZXMgYSBjb2xvciBtb3JlIG9wYXF1ZS4iKX0se2Z1bmM6InRyYW5zcGFyZW50aXplKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6TSgic2Nzcy5idWlsdGluLnRyYW5zcGFyZW50aXplIiwiTWFrZXMgYSBjb2xvciBtb3JlIHRyYW5zcGFyZW50LiIpfSx7ZnVuYzoiZmFkZS1vdXQoJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uZmFkZS1vdXQiLCJNYWtlcyBhIGNvbG9yIG1vcmUgdHJhbnNwYXJlbnQuIil9LHtmdW5jOiJhZGp1c3QtY29sb3IoJGNvbG9yLCBbJHJlZF0sIFskZ3JlZW5dLCBbJGJsdWVdLCBbJGh1ZV0sIFskc2F0dXJhdGlvbl0sIFskbGlnaHRuZXNzXSwgWyRhbHBoYV0pIixkZXNjOk0oInNjc3MuYnVpbHRpbi5hZGp1c3QtY29sb3IiLCJJbmNyZWFzZXMgb3IgZGVjcmVhc2VzIG9uZSBvciBtb3JlIGNvbXBvbmVudHMgb2YgYSBjb2xvci4iKX0se2Z1bmM6InNjYWxlLWNvbG9yKCRjb2xvciwgWyRyZWRdLCBbJGdyZWVuXSwgWyRibHVlXSwgWyRzYXR1cmF0aW9uXSwgWyRsaWdodG5lc3NdLCBbJGFscGhhXSkiLGRlc2M6TSgic2Nzcy5idWlsdGluLnNjYWxlLWNvbG9yIiwiRmx1aWRseSBzY2FsZXMgb25lIG9yIG1vcmUgcHJvcGVydGllcyBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiY2hhbmdlLWNvbG9yKCRjb2xvciwgWyRyZWRdLCBbJGdyZWVuXSwgWyRibHVlXSwgWyRodWVdLCBbJHNhdHVyYXRpb25dLCBbJGxpZ2h0bmVzc10sIFskYWxwaGFdKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uY2hhbmdlLWNvbG9yIiwiQ2hhbmdlcyBvbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIG9mIGEgY29sb3IuIil9LHtmdW5jOiJpZS1oZXgtc3RyKCRjb2xvcikiLGRlc2M6TSgic2Nzcy5idWlsdGluLmllLWhleC1zdHIiLCJDb252ZXJ0cyBhIGNvbG9yIGludG8gdGhlIGZvcm1hdCB1bmRlcnN0b29kIGJ5IElFIGZpbHRlcnMuIil9XSxlLnNlbGVjdG9yRnVuY3M9W3tmdW5jOiJzZWxlY3Rvci1uZXN0KCRzZWxlY3RvcnPigKYpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5zZWxlY3Rvci1uZXN0IiwiTmVzdHMgc2VsZWN0b3IgYmVuZWF0aCBvbmUgYW5vdGhlciBsaWtlIHRoZXkgd291bGQgYmUgbmVzdGVkIGluIHRoZSBzdHlsZXNoZWV0LiIpfSx7ZnVuYzoic2VsZWN0b3ItYXBwZW5kKCRzZWxlY3RvcnPigKYpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5zZWxlY3Rvci1hcHBlbmQiLCJBcHBlbmRzIHNlbGVjdG9ycyB0byBvbmUgYW5vdGhlciB3aXRob3V0IHNwYWNlcyBpbiBiZXR3ZWVuLiIpfSx7ZnVuYzoic2VsZWN0b3ItZXh0ZW5kKCRzZWxlY3RvciwgJGV4dGVuZGVlLCAkZXh0ZW5kZXIpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5zZWxlY3Rvci1leHRlbmQiLCJFeHRlbmRzICRleHRlbmRlZSB3aXRoICRleHRlbmRlciB3aXRoaW4gJHNlbGVjdG9yLiIpfSx7ZnVuYzoic2VsZWN0b3ItcmVwbGFjZSgkc2VsZWN0b3IsICRvcmlnaW5hbCwgJHJlcGxhY2VtZW50KSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uc2VsZWN0b3ItcmVwbGFjZSIsIlJlcGxhY2VzICRvcmlnaW5hbCB3aXRoICRyZXBsYWNlbWVudCB3aXRoaW4gJHNlbGVjdG9yLiIpfSx7ZnVuYzoic2VsZWN0b3ItdW5pZnkoJHNlbGVjdG9yMSwgJHNlbGVjdG9yMikiLGRlc2M6TSgic2Nzcy5idWlsdGluLnNlbGVjdG9yLXVuaWZ5IiwiVW5pZmllcyB0d28gc2VsZWN0b3JzIHRvIHByb2R1Y2UgYSBzZWxlY3RvciB0aGF0IG1hdGNoZXMgZWxlbWVudHMgbWF0Y2hlZCBieSBib3RoLiIpfSx7ZnVuYzoiaXMtc3VwZXJzZWxlY3Rvcigkc3VwZXIsICRzdWIpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5pcy1zdXBlcnNlbGVjdG9yIiwiUmV0dXJucyB3aGV0aGVyICRzdXBlciBtYXRjaGVzIGFsbCB0aGUgZWxlbWVudHMgJHN1YiBkb2VzLCBhbmQgcG9zc2libHkgbW9yZS4iKX0se2Z1bmM6InNpbXBsZS1zZWxlY3RvcnMoJHNlbGVjdG9yKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uc2ltcGxlLXNlbGVjdG9ycyIsIlJldHVybnMgdGhlIHNpbXBsZSBzZWxlY3RvcnMgdGhhdCBjb21wcmlzZSBhIGNvbXBvdW5kIHNlbGVjdG9yLiIpfSx7ZnVuYzoic2VsZWN0b3ItcGFyc2UoJHNlbGVjdG9yKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uc2VsZWN0b3ItcGFyc2UiLCJQYXJzZXMgYSBzZWxlY3RvciBpbnRvIHRoZSBmb3JtYXQgcmV0dXJuZWQgYnkgJi4iKX1dLGUuYnVpbHRJbkZ1bmNzPVt7ZnVuYzoidW5xdW90ZSgkc3RyaW5nKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4udW5xdW90ZSIsIlJlbW92ZXMgcXVvdGVzIGZyb20gYSBzdHJpbmcuIil9LHtmdW5jOiJxdW90ZSgkc3RyaW5nKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4ucXVvdGUiLCJBZGRzIHF1b3RlcyB0byBhIHN0cmluZy4iKX0se2Z1bmM6InN0ci1sZW5ndGgoJHN0cmluZykiLGRlc2M6TSgic2Nzcy5idWlsdGluLnN0ci1sZW5ndGgiLCJSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4iKX0se2Z1bmM6InN0ci1pbnNlcnQoJHN0cmluZywgJGluc2VydCwgJGluZGV4KSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uc3RyLWluc2VydCIsIkluc2VydHMgJGluc2VydCBpbnRvICRzdHJpbmcgYXQgJGluZGV4LiIpfSx7ZnVuYzoic3RyLWluZGV4KCRzdHJpbmcsICRzdWJzdHJpbmcpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5zdHItaW5kZXgiLCJSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJhbmNlIG9mICRzdWJzdHJpbmcgaW4gJHN0cmluZy4iKX0se2Z1bmM6InN0ci1zbGljZSgkc3RyaW5nLCAkc3RhcnQtYXQsIFskZW5kLWF0XSkiLGRlc2M6TSgic2Nzcy5idWlsdGluLnN0ci1zbGljZSIsIkV4dHJhY3RzIGEgc3Vic3RyaW5nIGZyb20gJHN0cmluZy4iKX0se2Z1bmM6InRvLXVwcGVyLWNhc2UoJHN0cmluZykiLGRlc2M6TSgic2Nzcy5idWlsdGluLnRvLXVwcGVyLWNhc2UiLCJDb252ZXJ0cyBhIHN0cmluZyB0byB1cHBlciBjYXNlLiIpfSx7ZnVuYzoidG8tbG93ZXItY2FzZSgkc3RyaW5nKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4udG8tbG93ZXItY2FzZSIsIkNvbnZlcnRzIGEgc3RyaW5nIHRvIGxvd2VyIGNhc2UuIil9LHtmdW5jOiJwZXJjZW50YWdlKCRudW1iZXIpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5wZXJjZW50YWdlIiwiQ29udmVydHMgYSB1bml0bGVzcyBudW1iZXIgdG8gYSBwZXJjZW50YWdlLiIpLHR5cGU6InBlcmNlbnRhZ2UifSx7ZnVuYzoicm91bmQoJG51bWJlcikiLGRlc2M6TSgic2Nzcy5idWlsdGluLnJvdW5kIiwiUm91bmRzIGEgbnVtYmVyIHRvIHRoZSBuZWFyZXN0IHdob2xlIG51bWJlci4iKX0se2Z1bmM6ImNlaWwoJG51bWJlcikiLGRlc2M6TSgic2Nzcy5idWlsdGluLmNlaWwiLCJSb3VuZHMgYSBudW1iZXIgdXAgdG8gdGhlIG5leHQgd2hvbGUgbnVtYmVyLiIpfSx7ZnVuYzoiZmxvb3IoJG51bWJlcikiLGRlc2M6TSgic2Nzcy5idWlsdGluLmZsb29yIiwiUm91bmRzIGEgbnVtYmVyIGRvd24gdG8gdGhlIHByZXZpb3VzIHdob2xlIG51bWJlci4iKX0se2Z1bmM6ImFicygkbnVtYmVyKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uYWJzIiwiUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgYSBudW1iZXIuIil9LHtmdW5jOiJtaW4oJG51bWJlcnMpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5taW4iLCJGaW5kcyB0aGUgbWluaW11bSBvZiBzZXZlcmFsIG51bWJlcnMuIil9LHtmdW5jOiJtYXgoJG51bWJlcnMpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5tYXgiLCJGaW5kcyB0aGUgbWF4aW11bSBvZiBzZXZlcmFsIG51bWJlcnMuIil9LHtmdW5jOiJyYW5kb20oWyRsaW1pdF0pIixkZXNjOk0oInNjc3MuYnVpbHRpbi5yYW5kb20iLCJSZXR1cm5zIGEgcmFuZG9tIG51bWJlci4iKX0se2Z1bmM6Imxlbmd0aCgkbGlzdCkiLGRlc2M6TSgic2Nzcy5idWlsdGluLmxlbmd0aCIsIlJldHVybnMgdGhlIGxlbmd0aCBvZiBhIGxpc3QuIil9LHtmdW5jOiJudGgoJGxpc3QsICRuKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4ubnRoIiwiUmV0dXJucyBhIHNwZWNpZmljIGl0ZW0gaW4gYSBsaXN0LiIpfSx7ZnVuYzoic2V0LW50aCgkbGlzdCwgJG4sICR2YWx1ZSkiLGRlc2M6TSgic2Nzcy5idWlsdGluLnNldC1udGgiLCJSZXBsYWNlcyB0aGUgbnRoIGl0ZW0gaW4gYSBsaXN0LiIpfSx7ZnVuYzoiam9pbigkbGlzdDEsICRsaXN0MiwgWyRzZXBhcmF0b3JdKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uam9pbiIsIkpvaW5zIHRvZ2V0aGVyIHR3byBsaXN0cyBpbnRvIG9uZS4iKX0se2Z1bmM6ImFwcGVuZCgkbGlzdDEsICR2YWwsIFskc2VwYXJhdG9yXSkiLGRlc2M6TSgic2Nzcy5idWlsdGluLmFwcGVuZCIsIkFwcGVuZHMgYSBzaW5nbGUgdmFsdWUgb250byB0aGUgZW5kIG9mIGEgbGlzdC4iKX0se2Z1bmM6InppcCgkbGlzdHMpIixkZXNjOk0oInNjc3MuYnVpbHRpbi56aXAiLCJDb21iaW5lcyBzZXZlcmFsIGxpc3RzIGludG8gYSBzaW5nbGUgbXVsdGlkaW1lbnNpb25hbCBsaXN0LiIpfSx7ZnVuYzoiaW5kZXgoJGxpc3QsICR2YWx1ZSkiLGRlc2M6TSgic2Nzcy5idWlsdGluLmluZGV4IiwiUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgYSB2YWx1ZSB3aXRoaW4gYSBsaXN0LiIpfSx7ZnVuYzoibGlzdC1zZXBhcmF0b3IoI2xpc3QpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5saXN0LXNlcGFyYXRvciIsIlJldHVybnMgdGhlIHNlcGFyYXRvciBvZiBhIGxpc3QuIil9LHtmdW5jOiJtYXAtZ2V0KCRtYXAsICRrZXkpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5tYXAtZ2V0IiwiUmV0dXJucyB0aGUgdmFsdWUgaW4gYSBtYXAgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4ga2V5LiIpfSx7ZnVuYzoibWFwLW1lcmdlKCRtYXAxLCAkbWFwMikiLGRlc2M6TSgic2Nzcy5idWlsdGluLm1hcC1tZXJnZSIsIk1lcmdlcyB0d28gbWFwcyB0b2dldGhlciBpbnRvIGEgbmV3IG1hcC4iKX0se2Z1bmM6Im1hcC1yZW1vdmUoJG1hcCwgJGtleXMpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5tYXAtcmVtb3ZlIiwiUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBrZXlzIHJlbW92ZWQuIil9LHtmdW5jOiJtYXAta2V5cygkbWFwKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4ubWFwLWtleXMiLCJSZXR1cm5zIGEgbGlzdCBvZiBhbGwga2V5cyBpbiBhIG1hcC4iKX0se2Z1bmM6Im1hcC12YWx1ZXMoJG1hcCkiLGRlc2M6TSgic2Nzcy5idWlsdGluLm1hcC12YWx1ZXMiLCJSZXR1cm5zIGEgbGlzdCBvZiBhbGwgdmFsdWVzIGluIGEgbWFwLiIpfSx7ZnVuYzoibWFwLWhhcy1rZXkoJG1hcCwgJGtleSkiLGRlc2M6TSgic2Nzcy5idWlsdGluLm1hcC1oYXMta2V5IiwiUmV0dXJucyB3aGV0aGVyIGEgbWFwIGhhcyBhIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGtleS4iKX0se2Z1bmM6ImtleXdvcmRzKCRhcmdzKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4ua2V5d29yZHMiLCJSZXR1cm5zIHRoZSBrZXl3b3JkcyBwYXNzZWQgdG8gYSBmdW5jdGlvbiB0aGF0IHRha2VzIHZhcmlhYmxlIGFyZ3VtZW50cy4iKX0se2Z1bmM6ImZlYXR1cmUtZXhpc3RzKCRmZWF0dXJlKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uZmVhdHVyZS1leGlzdHMiLCJSZXR1cm5zIHdoZXRoZXIgYSBmZWF0dXJlIGV4aXN0cyBpbiB0aGUgY3VycmVudCBTYXNzIHJ1bnRpbWUuIil9LHtmdW5jOiJ2YXJpYWJsZS1leGlzdHMoJG5hbWUpIixkZXNjOk0oInNjc3MuYnVpbHRpbi52YXJpYWJsZS1leGlzdHMiLCJSZXR1cm5zIHdoZXRoZXIgYSB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cyBpbiB0aGUgY3VycmVudCBzY29wZS4iKX0se2Z1bmM6Imdsb2JhbC12YXJpYWJsZS1leGlzdHMoJG5hbWUpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5nbG9iYWwtdmFyaWFibGUtZXhpc3RzIiwiUmV0dXJucyB3aGV0aGVyIGEgdmFyaWFibGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMgaW4gdGhlIGdsb2JhbCBzY29wZS4iKX0se2Z1bmM6ImZ1bmN0aW9uLWV4aXN0cygkbmFtZSkiLGRlc2M6TSgic2Nzcy5idWlsdGluLmZ1bmN0aW9uLWV4aXN0cyIsIlJldHVybnMgd2hldGhlciBhIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzLiIpfSx7ZnVuYzoibWl4aW4tZXhpc3RzKCRuYW1lKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4ubWl4aW4tZXhpc3RzIiwiUmV0dXJucyB3aGV0aGVyIGEgbWl4aW4gd2l0aCB0aGUgZ2l2ZW4gbmFtZSBleGlzdHMuIil9LHtmdW5jOiJpbnNwZWN0KCR2YWx1ZSkiLGRlc2M6TSgic2Nzcy5idWlsdGluLmluc3BlY3QiLCJSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSB2YWx1ZSBhcyBpdCB3b3VsZCBiZSByZXByZXNlbnRlZCBpbiBTYXNzLiIpfSx7ZnVuYzoidHlwZS1vZigkdmFsdWUpIixkZXNjOk0oInNjc3MuYnVpbHRpbi50eXBlLW9mIiwiUmV0dXJucyB0aGUgdHlwZSBvZiBhIHZhbHVlLiIpfSx7ZnVuYzoidW5pdCgkbnVtYmVyKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4udW5pdCIsIlJldHVybnMgdGhlIHVuaXQocykgYXNzb2NpYXRlZCB3aXRoIGEgbnVtYmVyLiIpfSx7ZnVuYzoidW5pdGxlc3MoJG51bWJlcikiLGRlc2M6TSgic2Nzcy5idWlsdGluLnVuaXRsZXNzIiwiUmV0dXJucyB3aGV0aGVyIGEgbnVtYmVyIGhhcyB1bml0cy4iKX0se2Z1bmM6ImNvbXBhcmFibGUoJG51bWJlcjEsICRudW1iZXIyKSIsZGVzYzpNKCJzY3NzLmJ1aWx0aW4uY29tcGFyYWJsZSIsIlJldHVybnMgd2hldGhlciB0d28gbnVtYmVycyBjYW4gYmUgYWRkZWQsIHN1YnRyYWN0ZWQsIG9yIGNvbXBhcmVkLiIpfSx7ZnVuYzoiY2FsbCgkbmFtZSwgJGFyZ3PigKYpIixkZXNjOk0oInNjc3MuYnVpbHRpbi5jYWxsIiwiRHluYW1pY2FsbHkgY2FsbHMgYSBTYXNzIGZ1bmN0aW9uLiIpfV0sZS5zY3NzQXREaXJlY3RpdmVzPVt7bGFiZWw6IkBleHRlbmQiLGRvY3VtZW50YXRpb246TSgic2Nzcy5idWlsdGluLkBleHRlbmQiLCJJbmhlcml0cyB0aGUgc3R5bGVzIG9mIGFub3RoZXIgc2VsZWN0b3IuIiksa2luZDokLktleXdvcmR9LHtsYWJlbDoiQGF0LXJvb3QiLGRvY3VtZW50YXRpb246TSgic2Nzcy5idWlsdGluLkBhdC1yb290IiwiQ2F1c2VzIG9uZSBvciBtb3JlIHJ1bGVzIHRvIGJlIGVtaXR0ZWQgYXQgdGhlIHJvb3Qgb2YgdGhlIGRvY3VtZW50LiIpLGtpbmQ6JC5LZXl3b3JkfSx7bGFiZWw6IkBkZWJ1ZyIsZG9jdW1lbnRhdGlvbjpNKCJzY3NzLmJ1aWx0aW4uQGRlYnVnIiwiUHJpbnRzIHRoZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBvdXRwdXQgc3RyZWFtLiBVc2VmdWwgZm9yIGRlYnVnZ2luZyBjb21wbGljYXRlZCBTYXNzIGZpbGVzLiIpLGtpbmQ6JC5LZXl3b3JkfSx7bGFiZWw6IkB3YXJuIixkb2N1bWVudGF0aW9uOk0oInNjc3MuYnVpbHRpbi5Ad2FybiIsIlByaW50cyB0aGUgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiB0byB0aGUgc3RhbmRhcmQgZXJyb3Igb3V0cHV0IHN0cmVhbS4gVXNlZnVsIGZvciBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIHdhcm4gdXNlcnMgb2YgZGVwcmVjYXRpb25zIG9yIHJlY292ZXJpbmcgZnJvbSBtaW5vciBtaXhpbiB1c2FnZSBtaXN0YWtlcy4gV2FybmluZ3MgY2FuIGJlIHR1cm5lZCBvZmYgd2l0aCB0aGUgYC0tcXVpZXRgIGNvbW1hbmQtbGluZSBvcHRpb24gb3IgdGhlIGA6cXVpZXRgIFNhc3Mgb3B0aW9uLiIpLGtpbmQ6JC5LZXl3b3JkfSx7bGFiZWw6IkBlcnJvciIsZG9jdW1lbnRhdGlvbjpNKCJzY3NzLmJ1aWx0aW4uQGVycm9yIiwiVGhyb3dzIHRoZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIGFzIGEgZmF0YWwgZXJyb3Igd2l0aCBzdGFjayB0cmFjZS4gVXNlZnVsIGZvciB2YWxpZGF0aW5nIGFyZ3VtZW50cyB0byBtaXhpbnMgYW5kIGZ1bmN0aW9ucy4iKSxraW5kOiQuS2V5d29yZH0se2xhYmVsOiJAaWYiLGRvY3VtZW50YXRpb246TSgic2Nzcy5idWlsdGluLkBpZiIsIkluY2x1ZGVzIHRoZSBib2R5IGlmIHRoZSBleHByZXNzaW9uIGRvZXMgbm90IGV2YWx1YXRlIHRvIGBmYWxzZWAgb3IgYG51bGxgLiIpLGluc2VydFRleHQ6YEBpZiBcJHsxOmV4cHJ9IHsKCSQwCn1gLGluc2VydFRleHRGb3JtYXQ6SWUuU25pcHBldCxraW5kOiQuS2V5d29yZH0se2xhYmVsOiJAZm9yIixkb2N1bWVudGF0aW9uOk0oInNjc3MuYnVpbHRpbi5AZm9yIiwiRm9yIGxvb3AgdGhhdCByZXBlYXRlZGx5IG91dHB1dHMgYSBzZXQgb2Ygc3R5bGVzIGZvciBlYWNoIGAkdmFyYCBpbiB0aGUgYGZyb20vdGhyb3VnaGAgb3IgYGZyb20vdG9gIGNsYXVzZS4iKSxpbnNlcnRUZXh0OiJAZm9yIFxcJCR7MTp2YXJ9IGZyb20gJHsyOnN0YXJ0fSAkezN8dG8sdGhyb3VnaHx9ICR7NDplbmR9IHtcbgkkMFxufSIsaW5zZXJ0VGV4dEZvcm1hdDpJZS5TbmlwcGV0LGtpbmQ6JC5LZXl3b3JkfSx7bGFiZWw6IkBlYWNoIixkb2N1bWVudGF0aW9uOk0oInNjc3MuYnVpbHRpbi5AZWFjaCIsIkVhY2ggbG9vcCB0aGF0IHNldHMgYCR2YXJgIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBvciBtYXAsIHRoZW4gb3V0cHV0cyB0aGUgc3R5bGVzIGl0IGNvbnRhaW5zIHVzaW5nIHRoYXQgdmFsdWUgb2YgYCR2YXJgLiIpLGluc2VydFRleHQ6IkBlYWNoIFxcJCR7MTp2YXJ9IGluICR7MjpsaXN0fSB7XG4JJDBcbn0iLGluc2VydFRleHRGb3JtYXQ6SWUuU25pcHBldCxraW5kOiQuS2V5d29yZH0se2xhYmVsOiJAd2hpbGUiLGRvY3VtZW50YXRpb246TSgic2Nzcy5idWlsdGluLkB3aGlsZSIsIldoaWxlIGxvb3AgdGhhdCB0YWtlcyBhbiBleHByZXNzaW9uIGFuZCByZXBlYXRlZGx5IG91dHB1dHMgdGhlIG5lc3RlZCBzdHlsZXMgdW50aWwgdGhlIHN0YXRlbWVudCBldmFsdWF0ZXMgdG8gYGZhbHNlYC4iKSxpbnNlcnRUZXh0OmBAd2hpbGUgXCR7MTpjb25kaXRpb259IHsKCSQwCn1gLGluc2VydFRleHRGb3JtYXQ6SWUuU25pcHBldCxraW5kOiQuS2V5d29yZH0se2xhYmVsOiJAbWl4aW4iLGRvY3VtZW50YXRpb246TSgic2Nzcy5idWlsdGluLkBtaXhpbiIsIkRlZmluZXMgc3R5bGVzIHRoYXQgY2FuIGJlIHJlLXVzZWQgdGhyb3VnaG91dCB0aGUgc3R5bGVzaGVldCB3aXRoIGBAaW5jbHVkZWAuIiksaW5zZXJ0VGV4dDpgQG1peGluIFwkezE6bmFtZX0gewoJJDAKfWAsaW5zZXJ0VGV4dEZvcm1hdDpJZS5TbmlwcGV0LGtpbmQ6JC5LZXl3b3JkfSx7bGFiZWw6IkBpbmNsdWRlIixkb2N1bWVudGF0aW9uOk0oInNjc3MuYnVpbHRpbi5AaW5jbHVkZSIsIkluY2x1ZGVzIHRoZSBzdHlsZXMgZGVmaW5lZCBieSBhbm90aGVyIG1peGluIGludG8gdGhlIGN1cnJlbnQgcnVsZS4iKSxraW5kOiQuS2V5d29yZH0se2xhYmVsOiJAZnVuY3Rpb24iLGRvY3VtZW50YXRpb246TSgic2Nzcy5idWlsdGluLkBmdW5jdGlvbiIsIkRlZmluZXMgY29tcGxleCBvcGVyYXRpb25zIHRoYXQgY2FuIGJlIHJlLXVzZWQgdGhyb3VnaG91dCBzdHlsZXNoZWV0cy4iKSxraW5kOiQuS2V5d29yZH1dLGUuc2Nzc01vZHVsZUxvYWRlcnM9W3tsYWJlbDoiQHVzZSIsZG9jdW1lbnRhdGlvbjpNKCJzY3NzLmJ1aWx0aW4uQHVzZSIsIkxvYWRzIG1peGlucywgZnVuY3Rpb25zLCBhbmQgdmFyaWFibGVzIGZyb20gb3RoZXIgU2FzcyBzdHlsZXNoZWV0cyBhcyAnbW9kdWxlcycsIGFuZCBjb21iaW5lcyBDU1MgZnJvbSBtdWx0aXBsZSBzdHlsZXNoZWV0cyB0b2dldGhlci4iKSxyZWZlcmVuY2VzOlt7bmFtZToiU2FzcyBkb2N1bWVudGF0aW9uIix1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL2F0LXJ1bGVzL3VzZSJ9XSxpbnNlcnRUZXh0OiJAdXNlICQwOyIsaW5zZXJ0VGV4dEZvcm1hdDpJZS5TbmlwcGV0LGtpbmQ6JC5LZXl3b3JkfSx7bGFiZWw6IkBmb3J3YXJkIixkb2N1bWVudGF0aW9uOk0oInNjc3MuYnVpbHRpbi5AZm9yd2FyZCIsIkxvYWRzIGEgU2FzcyBzdHlsZXNoZWV0IGFuZCBtYWtlcyBpdHMgbWl4aW5zLCBmdW5jdGlvbnMsIGFuZCB2YXJpYWJsZXMgYXZhaWxhYmxlIHdoZW4gdGhpcyBzdHlsZXNoZWV0IGlzIGxvYWRlZCB3aXRoIHRoZSBAdXNlIHJ1bGUuIikscmVmZXJlbmNlczpbe25hbWU6IlNhc3MgZG9jdW1lbnRhdGlvbiIsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9hdC1ydWxlcy9mb3J3YXJkIn1dLGluc2VydFRleHQ6IkBmb3J3YXJkICQwOyIsaW5zZXJ0VGV4dEZvcm1hdDpJZS5TbmlwcGV0LGtpbmQ6JC5LZXl3b3JkfV0sZS5zY3NzTW9kdWxlQnVpbHRJbnM9W3tsYWJlbDoic2FzczptYXRoIixkb2N1bWVudGF0aW9uOk0oInNjc3MuYnVpbHRpbi5zYXNzOm1hdGgiLCJQcm92aWRlcyBmdW5jdGlvbnMgdGhhdCBvcGVyYXRlIG9uIG51bWJlcnMuIikscmVmZXJlbmNlczpbe25hbWU6IlNhc3MgZG9jdW1lbnRhdGlvbiIsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL21hdGgifV19LHtsYWJlbDoic2FzczpzdHJpbmciLGRvY3VtZW50YXRpb246TSgic2Nzcy5idWlsdGluLnNhc3M6c3RyaW5nIiwiTWFrZXMgaXQgZWFzeSB0byBjb21iaW5lLCBzZWFyY2gsIG9yIHNwbGl0IGFwYXJ0IHN0cmluZ3MuIikscmVmZXJlbmNlczpbe25hbWU6IlNhc3MgZG9jdW1lbnRhdGlvbiIsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL3N0cmluZyJ9XX0se2xhYmVsOiJzYXNzOmNvbG9yIixkb2N1bWVudGF0aW9uOk0oInNjc3MuYnVpbHRpbi5zYXNzOmNvbG9yIiwiR2VuZXJhdGVzIG5ldyBjb2xvcnMgYmFzZWQgb24gZXhpc3Rpbmcgb25lcywgbWFraW5nIGl0IGVhc3kgdG8gYnVpbGQgY29sb3IgdGhlbWVzLiIpLHJlZmVyZW5jZXM6W3tuYW1lOiJTYXNzIGRvY3VtZW50YXRpb24iLHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9jb2xvciJ9XX0se2xhYmVsOiJzYXNzOmxpc3QiLGRvY3VtZW50YXRpb246TSgic2Nzcy5idWlsdGluLnNhc3M6bGlzdCIsIkxldHMgeW91IGFjY2VzcyBhbmQgbW9kaWZ5IHZhbHVlcyBpbiBsaXN0cy4iKSxyZWZlcmVuY2VzOlt7bmFtZToiU2FzcyBkb2N1bWVudGF0aW9uIix1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL21vZHVsZXMvbGlzdCJ9XX0se2xhYmVsOiJzYXNzOm1hcCIsZG9jdW1lbnRhdGlvbjpNKCJzY3NzLmJ1aWx0aW4uc2FzczptYXAiLCJNYWtlcyBpdCBwb3NzaWJsZSB0byBsb29rIHVwIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBrZXkgaW4gYSBtYXAsIGFuZCBtdWNoIG1vcmUuIikscmVmZXJlbmNlczpbe25hbWU6IlNhc3MgZG9jdW1lbnRhdGlvbiIsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL21hcCJ9XX0se2xhYmVsOiJzYXNzOnNlbGVjdG9yIixkb2N1bWVudGF0aW9uOk0oInNjc3MuYnVpbHRpbi5zYXNzOnNlbGVjdG9yIiwiUHJvdmlkZXMgYWNjZXNzIHRvIFNhc3PigJlzIHBvd2VyZnVsIHNlbGVjdG9yIGVuZ2luZS4iKSxyZWZlcmVuY2VzOlt7bmFtZToiU2FzcyBkb2N1bWVudGF0aW9uIix1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL21vZHVsZXMvc2VsZWN0b3IifV19LHtsYWJlbDoic2FzczptZXRhIixkb2N1bWVudGF0aW9uOk0oInNjc3MuYnVpbHRpbi5zYXNzOm1ldGEiLCJFeHBvc2VzIHRoZSBkZXRhaWxzIG9mIFNhc3PigJlzIGlubmVyIHdvcmtpbmdzLiIpLHJlZmVyZW5jZXM6W3tuYW1lOiJTYXNzIGRvY3VtZW50YXRpb24iLHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9tZXRhIn1dfV0sZX0oV2kpO2Z1bmN0aW9uIG5jKHQpe3QuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmRvY3VtZW50YXRpb24mJmUucmVmZXJlbmNlcyYmZS5yZWZlcmVuY2VzLmxlbmd0aD4wKXt2YXIgbj10eXBlb2YgZS5kb2N1bWVudGF0aW9uPT0ic3RyaW5nIj97a2luZDoibWFya2Rvd24iLHZhbHVlOmUuZG9jdW1lbnRhdGlvbn06e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTplLmRvY3VtZW50YXRpb24udmFsdWV9O24udmFsdWUrPWAKCmAsbi52YWx1ZSs9ZS5yZWZlcmVuY2VzLm1hcChmdW5jdGlvbihyKXtyZXR1cm4iWyIuY29uY2F0KHIubmFtZSwiXSgiKS5jb25jYXQoci51cmwsIikiKX0pLmpvaW4oIiB8ICIpLGUuZG9jdW1lbnRhdGlvbj1ufX0pfXZhciBKcD1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHIsaSl7ci5fX3Byb3RvX189aX18fGZ1bmN0aW9uKHIsaSl7Zm9yKHZhciBzIGluIGkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJihyW3NdPWlbc10pfSx0KGUsbil9O3JldHVybiBmdW5jdGlvbihlLG4pe2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iJiZuIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO3QoZSxuKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWUucHJvdG90eXBlPW49PT1udWxsP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCkscmM9NDcsWHA9MTAsWXA9MTMsS3A9MTIsWmk9OTYsZXM9NDYsUXA9cC5DdXN0b21Ub2tlbix0cz1RcCsrLGljPWZ1bmN0aW9uKHQpe0pwKGUsdCk7ZnVuY3Rpb24gZSgpe3JldHVybiB0IT09bnVsbCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIGUucHJvdG90eXBlLnNjYW5OZXh0PWZ1bmN0aW9uKG4pe3ZhciByPXRoaXMuZXNjYXBlZEphdmFTY3JpcHQoKTtyZXR1cm4gciE9PW51bGw/dGhpcy5maW5pc2hUb2tlbihuLHIpOnRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtlcyxlcyxlc10pP3RoaXMuZmluaXNoVG9rZW4obix0cyk6dC5wcm90b3R5cGUuc2Nhbk5leHQuY2FsbCh0aGlzLG4pfSxlLnByb3RvdHlwZS5jb21tZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHQucHJvdG90eXBlLmNvbW1lbnQuY2FsbCh0aGlzKT8hMDohdGhpcy5pblVSTCYmdGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW3JjLHJjXSk/KHRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoZnVuY3Rpb24obil7c3dpdGNoKG4pe2Nhc2UgWHA6Y2FzZSBZcDpjYXNlIEtwOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSksITApOiExfSxlLnByb3RvdHlwZS5lc2NhcGVkSmF2YVNjcmlwdD1mdW5jdGlvbigpe3ZhciBuPXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7cmV0dXJuIG49PT1aaT8odGhpcy5zdHJlYW0uYWR2YW5jZSgxKSx0aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKGZ1bmN0aW9uKHIpe3JldHVybiByIT09Wml9KSx0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKFppKT9wLkVzY2FwZWRKYXZhU2NyaXB0OnAuQmFkRXNjYXBlZEphdmFTY3JpcHQpOm51bGx9LGV9KHZuKSxacD1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHIsaSl7ci5fX3Byb3RvX189aX18fGZ1bmN0aW9uKHIsaSl7Zm9yKHZhciBzIGluIGkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJihyW3NdPWlbc10pfSx0KGUsbil9O3JldHVybiBmdW5jdGlvbihlLG4pe2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iJiZuIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO3QoZSxuKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWUucHJvdG90eXBlPW49PT1udWxsP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCksZWY9ZnVuY3Rpb24odCl7WnAoZSx0KTtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLG5ldyBpYyl8fHRoaXN9cmV0dXJuIGUucHJvdG90eXBlLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQ9ZnVuY3Rpb24obil7cmV0dXJuIG49PT12b2lkIDAmJihuPSExKSx0aGlzLnBlZWsocC5BdEtleXdvcmQpP3RoaXMuX3BhcnNlVmFyaWFibGVEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVBsdWdpbigpfHx0LnByb3RvdHlwZS5fcGFyc2VTdHlsZXNoZWV0QXRTdGF0ZW1lbnQuY2FsbCh0aGlzLG4pOnRoaXMuX3RyeVBhcnNlTWl4aW5EZWNsYXJhdGlvbigpfHx0aGlzLl90cnlQYXJzZU1peGluUmVmZXJlbmNlKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb24oKXx8dGhpcy5fcGFyc2VSdWxlc2V0KCEwKX0sZS5wcm90b3R5cGUuX3BhcnNlSW1wb3J0PWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBpbXBvcnQiKSYmIXRoaXMucGVla0tleXdvcmQoIkBpbXBvcnQtb25jZSIpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlKG1pKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSl7aWYoIXRoaXMuYWNjZXB0KHAuSWRlbnQpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuSWRlbnRpZmllckV4cGVjdGVkLFtwLlNlbWlDb2xvbl0pO2RvIGlmKCF0aGlzLmFjY2VwdChwLkNvbW1hKSlicmVhazt3aGlsZSh0aGlzLmFjY2VwdChwLklkZW50KSk7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbcC5TZW1pQ29sb25dKX1yZXR1cm4hbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKSkmJiFuLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKT90aGlzLmZpbmlzaChuLFMuVVJJT3JTdHJpbmdFeHBlY3RlZCxbcC5TZW1pQ29sb25dKTooIXRoaXMucGVlayhwLlNlbWlDb2xvbikmJiF0aGlzLnBlZWsocC5FT0YpJiZuLnNldE1lZGlhbGlzdCh0aGlzLl9wYXJzZU1lZGlhUXVlcnlMaXN0KCkpLHRoaXMuZmluaXNoKG4pKX0sZS5wcm90b3R5cGUuX3BhcnNlUGx1Z2luPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBwbHVnaW4iKSlyZXR1cm4gbnVsbDt2YXIgbj10aGlzLmNyZWF0ZU5vZGUodi5QbHVnaW4pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHJpbmdMaXRlcmFsKCkpP3RoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKT90aGlzLmZpbmlzaChuKTp0aGlzLmZpbmlzaChuLFMuU2VtaUNvbG9uRXhwZWN0ZWQpOnRoaXMuZmluaXNoKG4sUy5TdHJpbmdMaXRlcmFsRXhwZWN0ZWQpfSxlLnByb3RvdHlwZS5fcGFyc2VNZWRpYVF1ZXJ5PWZ1bmN0aW9uKCl7dmFyIG49dC5wcm90b3R5cGUuX3BhcnNlTWVkaWFRdWVyeS5jYWxsKHRoaXMpO2lmKCFuKXt2YXIgcj10aGlzLmNyZWF0ZShEbyk7cmV0dXJuIHIuYWRkQ2hpbGQodGhpcy5fcGFyc2VWYXJpYWJsZSgpKT90aGlzLmZpbmlzaChyKTpudWxsfXJldHVybiBufSxlLnByb3RvdHlwZS5fcGFyc2VNZWRpYURlY2xhcmF0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBuPT09dm9pZCAwJiYobj0hMSksdGhpcy5fdHJ5UGFyc2VSdWxlc2V0KG4pfHx0aGlzLl90cnlUb1BhcnNlRGVjbGFyYXRpb24oKXx8dGhpcy5fdHJ5UGFyc2VNaXhpbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3RyeVBhcnNlTWl4aW5SZWZlcmVuY2UoKXx8dGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXRNaXhpbigpfHx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQobil9LGUucHJvdG90eXBlLl9wYXJzZU1lZGlhRmVhdHVyZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJZGVudCgpfHx0aGlzLl9wYXJzZVZhcmlhYmxlKCl9LGUucHJvdG90eXBlLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb249ZnVuY3Rpb24obil7bj09PXZvaWQgMCYmKG49W10pO3ZhciByPXRoaXMuY3JlYXRlKHJyKSxpPXRoaXMubWFyaygpO2lmKCFyLnNldFZhcmlhYmxlKHRoaXMuX3BhcnNlVmFyaWFibGUoITApKSlyZXR1cm4gbnVsbDtpZih0aGlzLmFjY2VwdChwLkNvbG9uKSl7aWYodGhpcy5wcmV2VG9rZW4mJihyLmNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KSxyLnNldFZhbHVlKHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0KCkpKXIubmVlZHNTZW1pY29sb249ITE7ZWxzZSBpZighci5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHIsUy5WYXJpYWJsZVZhbHVlRXhwZWN0ZWQsW10sbik7ci5hZGRDaGlsZCh0aGlzLl9wYXJzZVByaW8oKSl9ZWxzZSByZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGkpLG51bGw7cmV0dXJuIHRoaXMucGVlayhwLlNlbWlDb2xvbikmJihyLnNlbWljb2xvblBvc2l0aW9uPXRoaXMudG9rZW4ub2Zmc2V0KSx0aGlzLmZpbmlzaChyKX0sZS5wcm90b3R5cGUuX3BhcnNlRGV0YWNoZWRSdWxlU2V0PWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5tYXJrKCk7aWYodGhpcy5wZWVrRGVsaW0oIiMiKXx8dGhpcy5wZWVrRGVsaW0oIi4iKSlpZih0aGlzLmNvbnN1bWVUb2tlbigpLCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXt2YXIgcj10aGlzLmNyZWF0ZShDbik7aWYoci5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpblBhcmFtZXRlcigpKSlmb3IoOyh0aGlzLmFjY2VwdChwLkNvbW1hKXx8dGhpcy5hY2NlcHQocC5TZW1pQ29sb24pKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KXIuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5QYXJhbWV0ZXIoKSl8fHRoaXMubWFya0Vycm9yKHIsUy5JZGVudGlmaWVyRXhwZWN0ZWQsW10sW3AuUGFyZW50aGVzaXNSXSk7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKG4pLG51bGx9ZWxzZSByZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKG4pLG51bGw7aWYoIXRoaXMucGVlayhwLkN1cmx5TCkpcmV0dXJuIG51bGw7dmFyIGk9dGhpcy5jcmVhdGUoaGUpO3JldHVybiB0aGlzLl9wYXJzZUJvZHkoaSx0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldEJvZHkuYmluZCh0aGlzKSksdGhpcy5maW5pc2goaSl9LGUucHJvdG90eXBlLl9wYXJzZURldGFjaGVkUnVsZVNldEJvZHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJ5UGFyc2VLZXlmcmFtZVNlbGVjdG9yKCl8fHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uKCl9LGUucHJvdG90eXBlLl9hZGRMb29rdXBDaGlsZHJlbj1mdW5jdGlvbihuKXtpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZUxvb2t1cFZhbHVlKCkpKXJldHVybiExO2Zvcih2YXIgcj0hMTt0aGlzLnBlZWsocC5CcmFja2V0TCkmJihyPSEwKSwhIW4uYWRkQ2hpbGQodGhpcy5fcGFyc2VMb29rdXBWYWx1ZSgpKTspcj0hMTtyZXR1cm4hcn0sZS5wcm90b3R5cGUuX3BhcnNlTG9va3VwVmFsdWU9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmNyZWF0ZShVKSxyPXRoaXMubWFyaygpO3JldHVybiB0aGlzLmFjY2VwdChwLkJyYWNrZXRMKT8obi5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCExLCEwKSl8fG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VQcm9wZXJ0eUlkZW50aWZpZXIoKSkpJiZ0aGlzLmFjY2VwdChwLkJyYWNrZXRSKXx8dGhpcy5hY2NlcHQocC5CcmFja2V0Uik/bjoodGhpcy5yZXN0b3JlQXRNYXJrKHIpLG51bGwpOih0aGlzLnJlc3RvcmVBdE1hcmsociksbnVsbCl9LGUucHJvdG90eXBlLl9wYXJzZVZhcmlhYmxlPWZ1bmN0aW9uKG4scil7bj09PXZvaWQgMCYmKG49ITEpLHI9PT12b2lkIDAmJihyPSExKTt2YXIgaT0hbiYmdGhpcy5wZWVrRGVsaW0oIiQiKTtpZighdGhpcy5wZWVrRGVsaW0oIkAiKSYmIWkmJiF0aGlzLnBlZWsocC5BdEtleXdvcmQpKXJldHVybiBudWxsO2Zvcih2YXIgcz10aGlzLmNyZWF0ZSh4aSksYT10aGlzLm1hcmsoKTt0aGlzLmFjY2VwdERlbGltKCJAIil8fCFuJiZ0aGlzLmFjY2VwdERlbGltKCIkIik7KWlmKHRoaXMuaGFzV2hpdGVzcGFjZSgpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsoYSksbnVsbDtyZXR1cm4hdGhpcy5hY2NlcHQocC5BdEtleXdvcmQpJiYhdGhpcy5hY2NlcHQocC5JZGVudCk/KHRoaXMucmVzdG9yZUF0TWFyayhhKSxudWxsKTohciYmdGhpcy5wZWVrKHAuQnJhY2tldEwpJiYhdGhpcy5fYWRkTG9va3VwQ2hpbGRyZW4ocyk/KHRoaXMucmVzdG9yZUF0TWFyayhhKSxudWxsKTpzfSxlLnByb3RvdHlwZS5fcGFyc2VUZXJtRXhwcmVzc2lvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZVZhcmlhYmxlKCl8fHRoaXMuX3BhcnNlRXNjYXBlZCgpfHx0LnByb3RvdHlwZS5fcGFyc2VUZXJtRXhwcmVzc2lvbi5jYWxsKHRoaXMpfHx0aGlzLl90cnlQYXJzZU1peGluUmVmZXJlbmNlKCExKX0sZS5wcm90b3R5cGUuX3BhcnNlRXNjYXBlZD1mdW5jdGlvbigpe2lmKHRoaXMucGVlayhwLkVzY2FwZWRKYXZhU2NyaXB0KXx8dGhpcy5wZWVrKHAuQmFkRXNjYXBlZEphdmFTY3JpcHQpKXt2YXIgbj10aGlzLmNyZWF0ZU5vZGUodi5Fc2NhcGVkVmFsdWUpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKG4pfWlmKHRoaXMucGVla0RlbGltKCJ+Iikpe3ZhciBuPXRoaXMuY3JlYXRlTm9kZSh2LkVzY2FwZWRWYWx1ZSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQocC5TdHJpbmcpfHx0aGlzLmFjY2VwdChwLkVzY2FwZWRKYXZhU2NyaXB0KT90aGlzLmZpbmlzaChuKTp0aGlzLmZpbmlzaChuLFMuVGVybUV4cGVjdGVkKX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlT3BlcmF0b3I9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLl9wYXJzZUd1YXJkT3BlcmF0b3IoKTtyZXR1cm4gbnx8dC5wcm90b3R5cGUuX3BhcnNlT3BlcmF0b3IuY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3BhcnNlR3VhcmRPcGVyYXRvcj1mdW5jdGlvbigpe2lmKHRoaXMucGVla0RlbGltKCI+Iikpe3ZhciBuPXRoaXMuY3JlYXRlTm9kZSh2Lk9wZXJhdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdERlbGltKCI9Iiksbn1lbHNlIGlmKHRoaXMucGVla0RlbGltKCI9Iikpe3ZhciBuPXRoaXMuY3JlYXRlTm9kZSh2Lk9wZXJhdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdERlbGltKCI8Iiksbn1lbHNlIGlmKHRoaXMucGVla0RlbGltKCI8Iikpe3ZhciBuPXRoaXMuY3JlYXRlTm9kZSh2Lk9wZXJhdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdERlbGltKCI9Iiksbn1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VLZXlmcmFtZSgpfHx0aGlzLl9wYXJzZU1lZGlhKCEwKXx8dGhpcy5fcGFyc2VJbXBvcnQoKXx8dGhpcy5fcGFyc2VTdXBwb3J0cyghMCl8fHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0TWl4aW4oKXx8dGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl8fHQucHJvdG90eXBlLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbkF0U3RhdGVtZW50LmNhbGwodGhpcyk6dGhpcy5fdHJ5UGFyc2VNaXhpbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3RyeVBhcnNlUnVsZXNldCghMCl8fHRoaXMuX3RyeVBhcnNlTWl4aW5SZWZlcmVuY2UoKXx8dGhpcy5fcGFyc2VGdW5jdGlvbigpfHx0aGlzLl9wYXJzZUV4dGVuZCgpfHx0LnByb3RvdHlwZS5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3BhcnNlS2V5ZnJhbWVJZGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZUlkZW50KFtaLktleWZyYW1lXSl8fHRoaXMuX3BhcnNlVmFyaWFibGUoKX0sZS5wcm90b3R5cGUuX3BhcnNlS2V5ZnJhbWVTZWxlY3Rvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldE1peGluKCl8fHQucHJvdG90eXBlLl9wYXJzZUtleWZyYW1lU2VsZWN0b3IuY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlU2VsZWN0b3JDb21iaW5hdG9yKCl8fHQucHJvdG90eXBlLl9wYXJzZVNpbXBsZVNlbGVjdG9yQm9keS5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS5fcGFyc2VTZWxlY3Rvcj1mdW5jdGlvbihuKXt2YXIgcj10aGlzLmNyZWF0ZSh5biksaT0hMTtmb3IobiYmKGk9ci5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbWJpbmF0b3IoKSkpO3IuYWRkQ2hpbGQodGhpcy5fcGFyc2VTaW1wbGVTZWxlY3RvcigpKTspe2k9ITA7dmFyIHM9dGhpcy5tYXJrKCk7aWYoci5hZGRDaGlsZCh0aGlzLl9wYXJzZUd1YXJkKCkpJiZ0aGlzLnBlZWsocC5DdXJseUwpKWJyZWFrO3RoaXMucmVzdG9yZUF0TWFyayhzKSxyLmFkZENoaWxkKHRoaXMuX3BhcnNlQ29tYmluYXRvcigpKX1yZXR1cm4gaT90aGlzLmZpbmlzaChyKTpudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VTZWxlY3RvckNvbWJpbmF0b3I9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtEZWxpbSgiJiIpKXt2YXIgbj10aGlzLmNyZWF0ZU5vZGUodi5TZWxlY3RvckNvbWJpbmF0b3IpO2Zvcih0aGlzLmNvbnN1bWVUb2tlbigpOyF0aGlzLmhhc1doaXRlc3BhY2UoKSYmKHRoaXMuYWNjZXB0RGVsaW0oIi0iKXx8dGhpcy5hY2NlcHQocC5OdW0pfHx0aGlzLmFjY2VwdChwLkRpbWVuc2lvbil8fG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKXx8dGhpcy5hY2NlcHREZWxpbSgiJiIpKTspO3JldHVybiB0aGlzLmZpbmlzaChuKX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX3BhcnNlU2VsZWN0b3JJZGVudD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtJbnRlcnBvbGF0ZWRJZGVudCgpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlTm9kZSh2LlNlbGVjdG9ySW50ZXJwb2xhdGlvbikscj10aGlzLl9hY2NlcHRJbnRlcnBvbGF0ZWRJZGVudChuKTtyZXR1cm4gcj90aGlzLmZpbmlzaChuKTpudWxsfSxlLnByb3RvdHlwZS5fcGFyc2VQcm9wZXJ0eUlkZW50aWZpZXI9ZnVuY3Rpb24obil7bj09PXZvaWQgMCYmKG49ITEpO3ZhciByPS9eW1x3LV0rLztpZighdGhpcy5wZWVrSW50ZXJwb2xhdGVkSWRlbnQoKSYmIXRoaXMucGVla1JlZ0V4cCh0aGlzLnRva2VuLnR5cGUscikpcmV0dXJuIG51bGw7dmFyIGk9dGhpcy5tYXJrKCkscz10aGlzLmNyZWF0ZShXZSk7cy5pc0N1c3RvbVByb3BlcnR5PXRoaXMuYWNjZXB0RGVsaW0oIi0iKSYmdGhpcy5hY2NlcHREZWxpbSgiLSIpO3ZhciBhPSExO3JldHVybiBuP3MuaXNDdXN0b21Qcm9wZXJ0eT9hPXMuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKTphPXMuYWRkQ2hpbGQodGhpcy5fcGFyc2VSZWdleHAocikpOnMuaXNDdXN0b21Qcm9wZXJ0eT9hPXRoaXMuX2FjY2VwdEludGVycG9sYXRlZElkZW50KHMpOmE9dGhpcy5fYWNjZXB0SW50ZXJwb2xhdGVkSWRlbnQocyxyKSxhPyghbiYmIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiYodGhpcy5hY2NlcHREZWxpbSgiKyIpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHx0aGlzLmFjY2VwdElkZW50KCJfIikpLHRoaXMuZmluaXNoKHMpKToodGhpcy5yZXN0b3JlQXRNYXJrKGkpLG51bGwpfSxlLnByb3RvdHlwZS5wZWVrSW50ZXJwb2xhdGVkSWRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wZWVrKHAuSWRlbnQpfHx0aGlzLnBlZWtEZWxpbSgiQCIpfHx0aGlzLnBlZWtEZWxpbSgiJCIpfHx0aGlzLnBlZWtEZWxpbSgiLSIpfSxlLnByb3RvdHlwZS5fYWNjZXB0SW50ZXJwb2xhdGVkSWRlbnQ9ZnVuY3Rpb24obixyKXtmb3IodmFyIGk9dGhpcyxzPSExLGE9ZnVuY3Rpb24oKXt2YXIgbD1pLm1hcmsoKTtyZXR1cm4gaS5hY2NlcHREZWxpbSgiLSIpJiYoaS5oYXNXaGl0ZXNwYWNlKCl8fGkuYWNjZXB0RGVsaW0oIi0iKSxpLmhhc1doaXRlc3BhY2UoKSk/KGkucmVzdG9yZUF0TWFyayhsKSxudWxsKTppLl9wYXJzZUludGVycG9sYXRpb24oKX0sbz1yP2Z1bmN0aW9uKCl7cmV0dXJuIGkuYWNjZXB0UmVnZXhwKHIpfTpmdW5jdGlvbigpe3JldHVybiBpLmFjY2VwdChwLklkZW50KX07KG8oKXx8bi5hZGRDaGlsZCh0aGlzLl9wYXJzZUludGVycG9sYXRpb24oKXx8dGhpcy50cnkoYSkpKSYmKHM9ITAsIXRoaXMuaGFzV2hpdGVzcGFjZSgpKTspO3JldHVybiBzfSxlLnByb3RvdHlwZS5fcGFyc2VJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5tYXJrKCk7aWYodGhpcy5wZWVrRGVsaW0oIkAiKXx8dGhpcy5wZWVrRGVsaW0oIiQiKSl7dmFyIHI9dGhpcy5jcmVhdGVOb2RlKHYuSW50ZXJwb2xhdGlvbik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLmFjY2VwdChwLkN1cmx5TCk/KHRoaXMucmVzdG9yZUF0TWFyayhuKSxudWxsKTpyLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk/dGhpcy5hY2NlcHQocC5DdXJseVIpP3RoaXMuZmluaXNoKHIpOnRoaXMuZmluaXNoKHIsUy5SaWdodEN1cmx5RXhwZWN0ZWQpOnRoaXMuZmluaXNoKHIsUy5JZGVudGlmaWVyRXhwZWN0ZWQpfXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5fdHJ5UGFyc2VNaXhpbkRlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5tYXJrKCkscj10aGlzLmNyZWF0ZShDbik7aWYoIXIuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyKCkpfHwhdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsobiksbnVsbDtpZihyLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluUGFyYW1ldGVyKCkpKWZvcig7KHRoaXMuYWNjZXB0KHAuQ29tbWEpfHx0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspci5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpblBhcmFtZXRlcigpKXx8dGhpcy5tYXJrRXJyb3IocixTLklkZW50aWZpZXJFeHBlY3RlZCxbXSxbcC5QYXJlbnRoZXNpc1JdKTtyZXR1cm4gdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpPyhyLnNldEd1YXJkKHRoaXMuX3BhcnNlR3VhcmQoKSksdGhpcy5wZWVrKHAuQ3VybHlMKT90aGlzLl9wYXJzZUJvZHkocix0aGlzLl9wYXJzZU1peEluQm9keURlY2xhcmF0aW9uLmJpbmQodGhpcykpOih0aGlzLnJlc3RvcmVBdE1hcmsobiksbnVsbCkpOih0aGlzLnJlc3RvcmVBdE1hcmsobiksbnVsbCl9LGUucHJvdG90eXBlLl9wYXJzZU1peEluQm9keURlY2xhcmF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlRm9udEZhY2UoKXx8dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24oKX0sZS5wcm90b3R5cGUuX3BhcnNlTWl4aW5EZWNsYXJhdGlvbklkZW50aWZpZXI9ZnVuY3Rpb24oKXt2YXIgbjtpZih0aGlzLnBlZWtEZWxpbSgiIyIpfHx0aGlzLnBlZWtEZWxpbSgiLiIpKXtpZihuPXRoaXMuY3JlYXRlKFdlKSx0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhbi5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpKXJldHVybiBudWxsfWVsc2UgaWYodGhpcy5wZWVrKHAuSGFzaCkpbj10aGlzLmNyZWF0ZShXZSksdGhpcy5jb25zdW1lVG9rZW4oKTtlbHNlIHJldHVybiBudWxsO3JldHVybiBuLnJlZmVyZW5jZVR5cGVzPVtaLk1peGluXSx0aGlzLmZpbmlzaChuKX0sZS5wcm90b3R5cGUuX3BhcnNlUHNldWRvPWZ1bmN0aW9uKCl7aWYoIXRoaXMucGVlayhwLkNvbG9uKSlyZXR1cm4gbnVsbDt2YXIgbj10aGlzLm1hcmsoKSxyPXRoaXMuY3JlYXRlKFNuKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdElkZW50KCJleHRlbmQiKT90aGlzLl9jb21wbGV0ZUV4dGVuZHMocik6KHRoaXMucmVzdG9yZUF0TWFyayhuKSx0LnByb3RvdHlwZS5fcGFyc2VQc2V1ZG8uY2FsbCh0aGlzKSl9LGUucHJvdG90eXBlLl9wYXJzZUV4dGVuZD1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWtEZWxpbSgiJiIpKXJldHVybiBudWxsO3ZhciBuPXRoaXMubWFyaygpLHI9dGhpcy5jcmVhdGUoU24pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHQocC5Db2xvbil8fCF0aGlzLmFjY2VwdElkZW50KCJleHRlbmQiKT8odGhpcy5yZXN0b3JlQXRNYXJrKG4pLG51bGwpOnRoaXMuX2NvbXBsZXRlRXh0ZW5kcyhyKX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlRXh0ZW5kcz1mdW5jdGlvbihuKXtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQpO3ZhciByPW4uZ2V0U2VsZWN0b3JzKCk7aWYoIXIuYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcighMCkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuU2VsZWN0b3JFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKTspaWYoIXIuYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcighMCkpKXJldHVybiB0aGlzLmZpbmlzaChuLFMuU2VsZWN0b3JFeHBlY3RlZCk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaChuKTp0aGlzLmZpbmlzaChuLFMuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX0sZS5wcm90b3R5cGUuX3BhcnNlRGV0YWNoZWRSdWxlU2V0TWl4aW49ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrKHAuQXRLZXl3b3JkKSlyZXR1cm4gbnVsbDt2YXIgbj10aGlzLm1hcmsoKSxyPXRoaXMuY3JlYXRlKGlyKTtyZXR1cm4gci5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCEwKSkmJih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSk/KHRoaXMucmVzdG9yZUF0TWFyayhuKSxudWxsKTp0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2gocik6dGhpcy5maW5pc2gocixTLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9LGUucHJvdG90eXBlLl90cnlQYXJzZU1peGluUmVmZXJlbmNlPWZ1bmN0aW9uKG4pe249PT12b2lkIDAmJihuPSEwKTtmb3IodmFyIHI9dGhpcy5tYXJrKCksaT10aGlzLmNyZWF0ZShpcikscz10aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyKCk7czspe3RoaXMuYWNjZXB0RGVsaW0oIj4iKTt2YXIgYT10aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyKCk7aWYoYSlpLmdldE5hbWVzcGFjZXMoKS5hZGRDaGlsZChzKSxzPWE7ZWxzZSBicmVha31pZighaS5zZXRJZGVudGlmaWVyKHMpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsociksbnVsbDt2YXIgbz0hMTtpZih0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe2lmKG89ITAsaS5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluQXJndW1lbnQoKSkpe2Zvcig7KHRoaXMuYWNjZXB0KHAuQ29tbWEpfHx0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIWkuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpbkFyZ3VtZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChpLFMuRXhwcmVzc2lvbkV4cGVjdGVkKX1pZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChpLFMuUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKTtzLnJlZmVyZW5jZVR5cGVzPVtaLk1peGluXX1lbHNlIHMucmVmZXJlbmNlVHlwZXM9W1ouTWl4aW4sWi5SdWxlXTtyZXR1cm4gdGhpcy5wZWVrKHAuQnJhY2tldEwpP258fHRoaXMuX2FkZExvb2t1cENoaWxkcmVuKGkpOmkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLCFvJiYhdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmIXRoaXMucGVlayhwLkN1cmx5UikmJiF0aGlzLnBlZWsocC5FT0YpPyh0aGlzLnJlc3RvcmVBdE1hcmsociksbnVsbCk6dGhpcy5maW5pc2goaSl9LGUucHJvdG90eXBlLl9wYXJzZU1peGluQXJndW1lbnQ9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmNyZWF0ZShZdCkscj10aGlzLm1hcmsoKSxpPXRoaXMuX3BhcnNlVmFyaWFibGUoKTtyZXR1cm4gaSYmKHRoaXMuYWNjZXB0KHAuQ29sb24pP24uc2V0SWRlbnRpZmllcihpKTp0aGlzLnJlc3RvcmVBdE1hcmsocikpLG4uc2V0VmFsdWUodGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXQoKXx8dGhpcy5fcGFyc2VFeHByKCEwKSk/dGhpcy5maW5pc2gobik6KHRoaXMucmVzdG9yZUF0TWFyayhyKSxudWxsKX0sZS5wcm90b3R5cGUuX3BhcnNlTWl4aW5QYXJhbWV0ZXI9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmNyZWF0ZSh0cik7aWYodGhpcy5wZWVrS2V5d29yZCgiQHJlc3QiKSl7dmFyIHI9dGhpcy5jcmVhdGUoVSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQodHMpPyhuLnNldElkZW50aWZpZXIodGhpcy5maW5pc2gocikpLHRoaXMuZmluaXNoKG4pKTp0aGlzLmZpbmlzaChuLFMuRG90RXhwZWN0ZWQsW10sW3AuQ29tbWEscC5QYXJlbnRoZXNpc1JdKX1pZih0aGlzLnBlZWsodHMpKXt2YXIgaT10aGlzLmNyZWF0ZShVKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxuLnNldElkZW50aWZpZXIodGhpcy5maW5pc2goaSkpLHRoaXMuZmluaXNoKG4pfXZhciBzPSExO3JldHVybiBuLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VWYXJpYWJsZSgpKSYmKHRoaXMuYWNjZXB0KHAuQ29sb24pLHM9ITApLCFuLnNldERlZmF1bHRWYWx1ZSh0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldCgpfHx0aGlzLl9wYXJzZUV4cHIoITApKSYmIXM/bnVsbDp0aGlzLmZpbmlzaChuKX0sZS5wcm90b3R5cGUuX3BhcnNlR3VhcmQ9ZnVuY3Rpb24oKXtpZighdGhpcy5wZWVrSWRlbnQoIndoZW4iKSlyZXR1cm4gbnVsbDt2YXIgbj10aGlzLmNyZWF0ZShNdSk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSxuLmlzTmVnYXRlZD10aGlzLmFjY2VwdElkZW50KCJub3QiKSwhbi5nZXRDb25kaXRpb25zKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VHdWFyZENvbmRpdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2gobixTLkNvbmRpdGlvbkV4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0SWRlbnQoImFuZCIpfHx0aGlzLmFjY2VwdChwLkNvbW1hKTspaWYoIW4uZ2V0Q29uZGl0aW9ucygpLmFkZENoaWxkKHRoaXMuX3BhcnNlR3VhcmRDb25kaXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4sUy5Db25kaXRpb25FeHBlY3RlZCk7cmV0dXJuIHRoaXMuZmluaXNoKG4pfSxlLnByb3RvdHlwZS5fcGFyc2VHdWFyZENvbmRpdGlvbj1mdW5jdGlvbigpe2lmKCF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc0wpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY3JlYXRlKHp1KTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxuLmFkZENoaWxkKHRoaXMuX3BhcnNlRXhwcigpKSx0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2gobik6dGhpcy5maW5pc2gobixTLlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9LGUucHJvdG90eXBlLl9wYXJzZUZ1bmN0aW9uPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5tYXJrKCkscj10aGlzLmNyZWF0ZSh3bik7aWYoIXIuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUZ1bmN0aW9uSWRlbnRpZmllcigpKSlyZXR1cm4gbnVsbDtpZih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKG4pLG51bGw7aWYoci5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluQXJndW1lbnQoKSkpe2Zvcig7KHRoaXMuYWNjZXB0KHAuQ29tbWEpfHx0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIXIuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpbkFyZ3VtZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChyLFMuRXhwcmVzc2lvbkV4cGVjdGVkKX1yZXR1cm4gdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKHIpOnRoaXMuZmluaXNoKHIsUy5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfSxlLnByb3RvdHlwZS5fcGFyc2VGdW5jdGlvbklkZW50aWZpZXI9ZnVuY3Rpb24oKXtpZih0aGlzLnBlZWtEZWxpbSgiJSIpKXt2YXIgbj10aGlzLmNyZWF0ZShXZSk7cmV0dXJuIG4ucmVmZXJlbmNlVHlwZXM9W1ouRnVuY3Rpb25dLHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2gobil9cmV0dXJuIHQucHJvdG90eXBlLl9wYXJzZUZ1bmN0aW9uSWRlbnRpZmllci5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS5fcGFyc2VVUkxBcmd1bWVudD1mdW5jdGlvbigpe3ZhciBuPXRoaXMubWFyaygpLHI9dC5wcm90b3R5cGUuX3BhcnNlVVJMQXJndW1lbnQuY2FsbCh0aGlzKTtpZighcnx8IXRoaXMucGVlayhwLlBhcmVudGhlc2lzUikpe3RoaXMucmVzdG9yZUF0TWFyayhuKTt2YXIgaT10aGlzLmNyZWF0ZShVKTtyZXR1cm4gaS5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSksdGhpcy5maW5pc2goaSl9cmV0dXJuIHJ9LGV9KE5pKSx0Zj1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHIsaSl7ci5fX3Byb3RvX189aX18fGZ1bmN0aW9uKHIsaSl7Zm9yKHZhciBzIGluIGkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJihyW3NdPWlbc10pfSx0KGUsbil9O3JldHVybiBmdW5jdGlvbihlLG4pe2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iJiZuIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKG4pKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO3QoZSxuKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWUucHJvdG90eXBlPW49PT1udWxsP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCkscT1HZSgpLG5mPWZ1bmN0aW9uKHQpe3RmKGUsdCk7ZnVuY3Rpb24gZShuLHIpe3JldHVybiB0LmNhbGwodGhpcywiQCIsbixyKXx8dGhpc31yZXR1cm4gZS5wcm90b3R5cGUuY3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHM9ZnVuY3Rpb24obixyLGkscyl7Zm9yKHZhciBhPTAsbz1uO2E8by5sZW5ndGg7YSsrKXt2YXIgbD1vW2FdLGM9e2xhYmVsOmwubmFtZSxkZXRhaWw6bC5leGFtcGxlLGRvY3VtZW50YXRpb246bC5kZXNjcmlwdGlvbix0ZXh0RWRpdDpILnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UociksbC5uYW1lKyIoJDApIiksaW5zZXJ0VGV4dEZvcm1hdDpJZS5TbmlwcGV0LGtpbmQ6JC5GdW5jdGlvbn07aSYmKGMuc29ydFRleHQ9InoiKSxzLml0ZW1zLnB1c2goYyl9cmV0dXJuIHN9LGUucHJvdG90eXBlLmdldFRlcm1Qcm9wb3NhbHM9ZnVuY3Rpb24obixyLGkpe3ZhciBzPWUuYnVpbHRJblByb3Bvc2FscztyZXR1cm4gbiYmKHM9cy5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIWEudHlwZXx8IW4ucmVzdHJpY3Rpb25zfHxuLnJlc3RyaWN0aW9ucy5pbmRleE9mKGEudHlwZSkhPT0tMX0pKSx0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKHMsciwhMCxpKSx0LnByb3RvdHlwZS5nZXRUZXJtUHJvcG9zYWxzLmNhbGwodGhpcyxuLHIsaSl9LGUucHJvdG90eXBlLmdldENvbG9yUHJvcG9zYWxzPWZ1bmN0aW9uKG4scixpKXtyZXR1cm4gdGhpcy5jcmVhdGVGdW5jdGlvblByb3Bvc2FscyhlLmNvbG9yUHJvcG9zYWxzLHIsITEsaSksdC5wcm90b3R5cGUuZ2V0Q29sb3JQcm9wb3NhbHMuY2FsbCh0aGlzLG4scixpKX0sZS5wcm90b3R5cGUuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5PWZ1bmN0aW9uKG4scil7cmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3RvcihudWxsLCEwLHIpLHQucHJvdG90eXBlLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eS5jYWxsKHRoaXMsbixyKX0sZS5idWlsdEluUHJvcG9zYWxzPVt7bmFtZToiaWYiLGV4YW1wbGU6ImlmKGNvbmRpdGlvbiwgdHJ1ZVZhbHVlIFssIGZhbHNlVmFsdWVdKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5pZiIsInJldHVybnMgb25lIG9mIHR3byB2YWx1ZXMgZGVwZW5kaW5nIG9uIGEgY29uZGl0aW9uLiIpfSx7bmFtZToiYm9vbGVhbiIsZXhhbXBsZToiYm9vbGVhbihjb25kaXRpb24pOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLmJvb2xlYW4iLCcic3RvcmUiIGEgYm9vbGVhbiB0ZXN0IGZvciBsYXRlciBldmFsdWF0aW9uIGluIGEgZ3VhcmQgb3IgaWYoKS4nKX0se25hbWU6Imxlbmd0aCIsZXhhbXBsZToibGVuZ3RoKEBsaXN0KTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5sZW5ndGgiLCJyZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB2YWx1ZSBsaXN0Iil9LHtuYW1lOiJleHRyYWN0IixleGFtcGxlOiJleHRyYWN0KEBsaXN0LCBpbmRleCk7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uZXh0cmFjdCIsInJldHVybnMgYSB2YWx1ZSBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoZSBsaXN0Iil9LHtuYW1lOiJyYW5nZSIsZXhhbXBsZToicmFuZ2UoW3N0YXJ0LCBdIGVuZCBbLCBzdGVwXSk7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4ucmFuZ2UiLCJnZW5lcmF0ZSBhIGxpc3Qgc3Bhbm5pbmcgYSByYW5nZSBvZiB2YWx1ZXMiKX0se25hbWU6ImVhY2giLGV4YW1wbGU6ImVhY2goQGxpc3QsIHJ1bGVzZXQpOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLmVhY2giLCJiaW5kIHRoZSBldmFsdWF0aW9uIG9mIGEgcnVsZXNldCB0byBlYWNoIG1lbWJlciBvZiBhIGxpc3QuIil9LHtuYW1lOiJlc2NhcGUiLGV4YW1wbGU6ImVzY2FwZShAc3RyaW5nKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5lc2NhcGUiLCJVUkwgZW5jb2RlcyBhIHN0cmluZyIpfSx7bmFtZToiZSIsZXhhbXBsZToiZShAc3RyaW5nKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5lIiwiZXNjYXBlIHN0cmluZyBjb250ZW50Iil9LHtuYW1lOiJyZXBsYWNlIixleGFtcGxlOiJyZXBsYWNlKEBzdHJpbmcsIEBwYXR0ZXJuLCBAcmVwbGFjZW1lbnRbLCBAZmxhZ3NdKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5yZXBsYWNlIiwic3RyaW5nIHJlcGxhY2UiKX0se25hbWU6InVuaXQiLGV4YW1wbGU6InVuaXQoQGRpbWVuc2lvbiwgW0B1bml0OiAnJ10pOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLnVuaXQiLCJyZW1vdmUgb3IgY2hhbmdlIHRoZSB1bml0IG9mIGEgZGltZW5zaW9uIil9LHtuYW1lOiJjb2xvciIsZXhhbXBsZToiY29sb3IoQHN0cmluZyk7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uY29sb3IiLCJwYXJzZXMgYSBzdHJpbmcgdG8gYSBjb2xvciIpLHR5cGU6ImNvbG9yIn0se25hbWU6ImNvbnZlcnQiLGV4YW1wbGU6ImNvbnZlcnQoQHZhbHVlLCB1bml0KTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5jb252ZXJ0IiwiY29udmVydHMgbnVtYmVycyBmcm9tIG9uZSB0eXBlIGludG8gYW5vdGhlciIpfSx7bmFtZToiZGF0YS11cmkiLGV4YW1wbGU6ImRhdGEtdXJpKFttaW1ldHlwZSxdIHVybCk7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uZGF0YS11cmkiLCJpbmxpbmVzIGEgcmVzb3VyY2UgYW5kIGZhbGxzIGJhY2sgdG8gYHVybCgpYCIpLHR5cGU6InVybCJ9LHtuYW1lOiJhYnMiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5hYnMiLCJhYnNvbHV0ZSB2YWx1ZSBvZiBhIG51bWJlciIpLGV4YW1wbGU6ImFicyhudW1iZXIpOyJ9LHtuYW1lOiJhY29zIixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uYWNvcyIsImFyY2Nvc2luZSAtIGludmVyc2Ugb2YgY29zaW5lIGZ1bmN0aW9uIiksZXhhbXBsZToiYWNvcyhudW1iZXIpOyJ9LHtuYW1lOiJhc2luIixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uYXNpbiIsImFyY3NpbmUgLSBpbnZlcnNlIG9mIHNpbmUgZnVuY3Rpb24iKSxleGFtcGxlOiJhc2luKG51bWJlcik7In0se25hbWU6ImNlaWwiLGV4YW1wbGU6ImNlaWwoQG51bWJlcik7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uY2VpbCIsInJvdW5kcyB1cCB0byBhbiBpbnRlZ2VyIil9LHtuYW1lOiJjb3MiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5jb3MiLCJjb3NpbmUgZnVuY3Rpb24iKSxleGFtcGxlOiJjb3MobnVtYmVyKTsifSx7bmFtZToiZmxvb3IiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5mbG9vciIsInJvdW5kcyBkb3duIHRvIGFuIGludGVnZXIiKSxleGFtcGxlOiJmbG9vcihAbnVtYmVyKTsifSx7bmFtZToicGVyY2VudGFnZSIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLnBlcmNlbnRhZ2UiLCJjb252ZXJ0cyB0byBhICUsIGUuZy4gMC41ID4gNTAlIiksZXhhbXBsZToicGVyY2VudGFnZShAbnVtYmVyKTsiLHR5cGU6InBlcmNlbnRhZ2UifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5yb3VuZCIsInJvdW5kcyBhIG51bWJlciB0byBhIG51bWJlciBvZiBwbGFjZXMiKSxleGFtcGxlOiJyb3VuZChudW1iZXIsIFtwbGFjZXM6IDBdKTsifSx7bmFtZToic3FydCIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLnNxcnQiLCJjYWxjdWxhdGVzIHNxdWFyZSByb290IG9mIGEgbnVtYmVyIiksZXhhbXBsZToic3FydChudW1iZXIpOyJ9LHtuYW1lOiJzaW4iLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5zaW4iLCJzaW5lIGZ1bmN0aW9uIiksZXhhbXBsZToic2luKG51bWJlcik7In0se25hbWU6InRhbiIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLnRhbiIsInRhbmdlbnQgZnVuY3Rpb24iKSxleGFtcGxlOiJ0YW4obnVtYmVyKTsifSx7bmFtZToiYXRhbiIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLmF0YW4iLCJhcmN0YW5nZW50IC0gaW52ZXJzZSBvZiB0YW5nZW50IGZ1bmN0aW9uIiksZXhhbXBsZToiYXRhbihudW1iZXIpOyJ9LHtuYW1lOiJwaSIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLnBpIiwicmV0dXJucyBwaSIpLGV4YW1wbGU6InBpKCk7In0se25hbWU6InBvdyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLnBvdyIsImZpcnN0IGFyZ3VtZW50IHJhaXNlZCB0byB0aGUgcG93ZXIgb2YgdGhlIHNlY29uZCBhcmd1bWVudCIpLGV4YW1wbGU6InBvdyhAYmFzZSwgQGV4cG9uZW50KTsifSx7bmFtZToibW9kIixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4ubW9kIiwiZmlyc3QgYXJndW1lbnQgbW9kdWx1cyBzZWNvbmQgYXJndW1lbnQiKSxleGFtcGxlOiJtb2QobnVtYmVyLCBudW1iZXIpOyJ9LHtuYW1lOiJtaW4iLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5taW4iLCJyZXR1cm5zIHRoZSBsb3dlc3Qgb2Ygb25lIG9yIG1vcmUgdmFsdWVzIiksZXhhbXBsZToibWluKEB4LCBAeSk7In0se25hbWU6Im1heCIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLm1heCIsInJldHVybnMgdGhlIGxvd2VzdCBvZiBvbmUgb3IgbW9yZSB2YWx1ZXMiKSxleGFtcGxlOiJtYXgoQHgsIEB5KTsifV0sZS5jb2xvclByb3Bvc2Fscz1be25hbWU6ImFyZ2IiLGV4YW1wbGU6ImFyZ2IoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5hcmdiIiwiY3JlYXRlcyBhICNBQVJSR0dCQiIpfSx7bmFtZToiaHNsIixleGFtcGxlOiJoc2woQGh1ZSwgQHNhdHVyYXRpb24sIEBsaWdodG5lc3MpOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLmhzbCIsImNyZWF0ZXMgYSBjb2xvciIpfSx7bmFtZToiaHNsYSIsZXhhbXBsZToiaHNsYShAaHVlLCBAc2F0dXJhdGlvbiwgQGxpZ2h0bmVzcywgQGFscGhhKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5oc2xhIiwiY3JlYXRlcyBhIGNvbG9yIil9LHtuYW1lOiJoc3YiLGV4YW1wbGU6ImhzdihAaHVlLCBAc2F0dXJhdGlvbiwgQHZhbHVlKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5oc3YiLCJjcmVhdGVzIGEgY29sb3IiKX0se25hbWU6ImhzdmEiLGV4YW1wbGU6ImhzdmEoQGh1ZSwgQHNhdHVyYXRpb24sIEB2YWx1ZSwgQGFscGhhKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5oc3ZhIiwiY3JlYXRlcyBhIGNvbG9yIil9LHtuYW1lOiJodWUiLGV4YW1wbGU6Imh1ZShAY29sb3IpOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLmh1ZSIsInJldHVybnMgdGhlIGBodWVgIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTTCBzcGFjZSIpfSx7bmFtZToic2F0dXJhdGlvbiIsZXhhbXBsZToic2F0dXJhdGlvbihAY29sb3IpOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLnNhdHVyYXRpb24iLCJyZXR1cm5zIHRoZSBgc2F0dXJhdGlvbmAgY2hhbm5lbCBvZiBgQGNvbG9yYCBpbiB0aGUgSFNMIHNwYWNlIil9LHtuYW1lOiJsaWdodG5lc3MiLGV4YW1wbGU6ImxpZ2h0bmVzcyhAY29sb3IpOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLmxpZ2h0bmVzcyIsInJldHVybnMgdGhlIGBsaWdodG5lc3NgIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTTCBzcGFjZSIpfSx7bmFtZToiaHN2aHVlIixleGFtcGxlOiJoc3ZodWUoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5oc3ZodWUiLCJyZXR1cm5zIHRoZSBgaHVlYCBjaGFubmVsIG9mIGBAY29sb3JgIGluIHRoZSBIU1Ygc3BhY2UiKX0se25hbWU6ImhzdnNhdHVyYXRpb24iLGV4YW1wbGU6ImhzdnNhdHVyYXRpb24oQGNvbG9yKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5oc3ZzYXR1cmF0aW9uIiwicmV0dXJucyB0aGUgYHNhdHVyYXRpb25gIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTViBzcGFjZSIpfSx7bmFtZToiaHN2dmFsdWUiLGV4YW1wbGU6ImhzdnZhbHVlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uaHN2dmFsdWUiLCJyZXR1cm5zIHRoZSBgdmFsdWVgIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTViBzcGFjZSIpfSx7bmFtZToicmVkIixleGFtcGxlOiJyZWQoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5yZWQiLCJyZXR1cm5zIHRoZSBgcmVkYCBjaGFubmVsIG9mIGBAY29sb3JgIil9LHtuYW1lOiJncmVlbiIsZXhhbXBsZToiZ3JlZW4oQGNvbG9yKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5ncmVlbiIsInJldHVybnMgdGhlIGBncmVlbmAgY2hhbm5lbCBvZiBgQGNvbG9yYCIpfSx7bmFtZToiYmx1ZSIsZXhhbXBsZToiYmx1ZShAY29sb3IpOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLmJsdWUiLCJyZXR1cm5zIHRoZSBgYmx1ZWAgY2hhbm5lbCBvZiBgQGNvbG9yYCIpfSx7bmFtZToiYWxwaGEiLGV4YW1wbGU6ImFscGhhKEBjb2xvcik7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uYWxwaGEiLCJyZXR1cm5zIHRoZSBgYWxwaGFgIGNoYW5uZWwgb2YgYEBjb2xvcmAiKX0se25hbWU6Imx1bWEiLGV4YW1wbGU6Imx1bWEoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5sdW1hIiwicmV0dXJucyB0aGUgYGx1bWFgIHZhbHVlIChwZXJjZXB0dWFsIGJyaWdodG5lc3MpIG9mIGBAY29sb3JgIil9LHtuYW1lOiJzYXR1cmF0ZSIsZXhhbXBsZToic2F0dXJhdGUoQGNvbG9yLCAxMCUpOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLnNhdHVyYXRlIiwicmV0dXJuIGBAY29sb3JgIDEwJSBwb2ludHMgbW9yZSBzYXR1cmF0ZWQiKX0se25hbWU6ImRlc2F0dXJhdGUiLGV4YW1wbGU6ImRlc2F0dXJhdGUoQGNvbG9yLCAxMCUpOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLmRlc2F0dXJhdGUiLCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBsZXNzIHNhdHVyYXRlZCIpfSx7bmFtZToibGlnaHRlbiIsZXhhbXBsZToibGlnaHRlbihAY29sb3IsIDEwJSk7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4ubGlnaHRlbiIsInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIGxpZ2h0ZXIiKX0se25hbWU6ImRhcmtlbiIsZXhhbXBsZToiZGFya2VuKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5kYXJrZW4iLCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBkYXJrZXIiKX0se25hbWU6ImZhZGVpbiIsZXhhbXBsZToiZmFkZWluKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5mYWRlaW4iLCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBsZXNzIHRyYW5zcGFyZW50Iil9LHtuYW1lOiJmYWRlb3V0IixleGFtcGxlOiJmYWRlb3V0KEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5mYWRlb3V0IiwicmV0dXJuIGBAY29sb3JgIDEwJSBwb2ludHMgbW9yZSB0cmFuc3BhcmVudCIpfSx7bmFtZToiZmFkZSIsZXhhbXBsZToiZmFkZShAY29sb3IsIDUwJSk7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uZmFkZSIsInJldHVybiBgQGNvbG9yYCB3aXRoIDUwJSB0cmFuc3BhcmVuY3kiKX0se25hbWU6InNwaW4iLGV4YW1wbGU6InNwaW4oQGNvbG9yLCAxMCk7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uc3BpbiIsInJldHVybiBgQGNvbG9yYCB3aXRoIGEgMTAgZGVncmVlIGxhcmdlciBpbiBodWUiKX0se25hbWU6Im1peCIsZXhhbXBsZToibWl4KEBjb2xvcjEsIEBjb2xvcjIsIFtAd2VpZ2h0OiA1MCVdKTsiLGRlc2NyaXB0aW9uOnEoImxlc3MuYnVpbHRpbi5taXgiLCJyZXR1cm4gYSBtaXggb2YgYEBjb2xvcjFgIGFuZCBgQGNvbG9yMmAiKX0se25hbWU6ImdyZXlzY2FsZSIsZXhhbXBsZToiZ3JleXNjYWxlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpxKCJsZXNzLmJ1aWx0aW4uZ3JleXNjYWxlIiwicmV0dXJucyBhIGdyZXksIDEwMCUgZGVzYXR1cmF0ZWQgY29sb3IiKX0se25hbWU6ImNvbnRyYXN0IixleGFtcGxlOiJjb250cmFzdChAY29sb3IxLCBbQGRhcmtjb2xvcjogYmxhY2tdLCBbQGxpZ2h0Y29sb3I6IHdoaXRlXSwgW0B0aHJlc2hvbGQ6IDQzJV0pOyIsZGVzY3JpcHRpb246cSgibGVzcy5idWlsdGluLmNvbnRyYXN0IiwicmV0dXJuIGBAZGFya2NvbG9yYCBpZiBgQGNvbG9yMSBpcz4gNDMlIGx1bWFgIG90aGVyd2lzZSByZXR1cm4gYEBsaWdodGNvbG9yYCwgc2VlIG5vdGVzIil9LHtuYW1lOiJtdWx0aXBseSIsZXhhbXBsZToibXVsdGlwbHkoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6InNjcmVlbiIsZXhhbXBsZToic2NyZWVuKEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJvdmVybGF5IixleGFtcGxlOiJvdmVybGF5KEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJzb2Z0bGlnaHQiLGV4YW1wbGU6InNvZnRsaWdodChAY29sb3IxLCBAY29sb3IyKTsifSx7bmFtZToiaGFyZGxpZ2h0IixleGFtcGxlOiJoYXJkbGlnaHQoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6ImRpZmZlcmVuY2UiLGV4YW1wbGU6ImRpZmZlcmVuY2UoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6ImV4Y2x1c2lvbiIsZXhhbXBsZToiZXhjbHVzaW9uKEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJhdmVyYWdlIixleGFtcGxlOiJhdmVyYWdlKEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJuZWdhdGlvbiIsZXhhbXBsZToibmVnYXRpb24oQGNvbG9yMSwgQGNvbG9yMik7In1dLGV9KFdpKTtmdW5jdGlvbiByZih0LGUpe3ZhciBuPXNmKHQpO3JldHVybiBhZihuLGUpfWZ1bmN0aW9uIHNmKHQpe2Z1bmN0aW9uIGUodSl7cmV0dXJuIHQucG9zaXRpb25BdCh1Lm9mZnNldCkubGluZX1mdW5jdGlvbiBuKHUpe3JldHVybiB0LnBvc2l0aW9uQXQodS5vZmZzZXQrdS5sZW4pLmxpbmV9ZnVuY3Rpb24gcigpe3N3aXRjaCh0Lmxhbmd1YWdlSWQpe2Nhc2Uic2NzcyI6cmV0dXJuIG5ldyB0YztjYXNlImxlc3MiOnJldHVybiBuZXcgaWM7ZGVmYXVsdDpyZXR1cm4gbmV3IHZufX1mdW5jdGlvbiBpKHUsZil7dmFyIG09ZSh1KSxnPW4odSk7cmV0dXJuIG0hPT1nP3tzdGFydExpbmU6bSxlbmRMaW5lOmcsa2luZDpmfTpudWxsfXZhciBzPVtdLGE9W10sbz1yKCk7by5pZ25vcmVDb21tZW50PSExLG8uc2V0U291cmNlKHQuZ2V0VGV4dCgpKTtmb3IodmFyIGw9by5zY2FuKCksYz1udWxsLGg9ZnVuY3Rpb24oKXtzd2l0Y2gobC50eXBlKXtjYXNlIHAuQ3VybHlMOmNhc2UgeHI6e2EucHVzaCh7bGluZTplKGwpLHR5cGU6ImJyYWNlIixpc1N0YXJ0OiEwfSk7YnJlYWt9Y2FzZSBwLkN1cmx5Ujp7aWYoYS5sZW5ndGghPT0wKXt2YXIgdT1zYyhhLCJicmFjZSIpO2lmKCF1KWJyZWFrO3ZhciBmPW4obCk7dS50eXBlPT09ImJyYWNlIiYmKGMmJm4oYykhPT1mJiZmLS0sdS5saW5lIT09ZiYmcy5wdXNoKHtzdGFydExpbmU6dS5saW5lLGVuZExpbmU6ZixraW5kOnZvaWQgMH0pKX1icmVha31jYXNlIHAuQ29tbWVudDp7dmFyIG09ZnVuY3Rpb24oQyl7cmV0dXJuIEM9PT0iI3JlZ2lvbiI/e2xpbmU6ZShsKSx0eXBlOiJjb21tZW50Iixpc1N0YXJ0OiEwfTp7bGluZTpuKGwpLHR5cGU6ImNvbW1lbnQiLGlzU3RhcnQ6ITF9fSxnPWZ1bmN0aW9uKEMpe3ZhciBrPUMudGV4dC5tYXRjaCgvXlxzKlwvXCpccyooI3JlZ2lvbnwjZW5kcmVnaW9uKVxiXHMqKC4qPylccypcKlwvLyk7aWYoaylyZXR1cm4gbShrWzFdKTtpZih0Lmxhbmd1YWdlSWQ9PT0ic2NzcyJ8fHQubGFuZ3VhZ2VJZD09PSJsZXNzIil7dmFyIHc9Qy50ZXh0Lm1hdGNoKC9eXHMqXC9cL1xzKigjcmVnaW9ufCNlbmRyZWdpb24pXGJccyooLio/KVxzKi8pO2lmKHcpcmV0dXJuIG0od1sxXSl9cmV0dXJuIG51bGx9LGI9ZyhsKTtpZihiKWlmKGIuaXNTdGFydClhLnB1c2goYik7ZWxzZXt2YXIgdT1zYyhhLCJjb21tZW50Iik7aWYoIXUpYnJlYWs7dS50eXBlPT09ImNvbW1lbnQiJiZ1LmxpbmUhPT1iLmxpbmUmJnMucHVzaCh7c3RhcnRMaW5lOnUubGluZSxlbmRMaW5lOmIubGluZSxraW5kOiJyZWdpb24ifSl9ZWxzZXt2YXIgeT1pKGwsImNvbW1lbnQiKTt5JiZzLnB1c2goeSl9YnJlYWt9fWM9bCxsPW8uc2NhbigpfTtsLnR5cGUhPT1wLkVPRjspaCgpO3JldHVybiBzfWZ1bmN0aW9uIHNjKHQsZSl7aWYodC5sZW5ndGg9PT0wKXJldHVybiBudWxsO2Zvcih2YXIgbj10Lmxlbmd0aC0xO24+PTA7bi0tKWlmKHRbbl0udHlwZT09PWUmJnRbbl0uaXNTdGFydClyZXR1cm4gdC5zcGxpY2UobiwxKVswXTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBhZih0LGUpe3ZhciBuPWUmJmUucmFuZ2VMaW1pdHx8TnVtYmVyLk1BWF9WQUxVRSxyPXQuc29ydChmdW5jdGlvbihhLG8pe3ZhciBsPWEuc3RhcnRMaW5lLW8uc3RhcnRMaW5lO3JldHVybiBsPT09MCYmKGw9YS5lbmRMaW5lLW8uZW5kTGluZSksbH0pLGk9W10scz0tMTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Euc3RhcnRMaW5lPHMmJnM8YS5lbmRMaW5lfHwoaS5wdXNoKGEpLHM9YS5lbmRMaW5lKX0pLGkubGVuZ3RoPG4/aTppLnNsaWNlKDAsbil9dmFyIGFjOyhmdW5jdGlvbigpe3ZhciB0PVssLGZ1bmN0aW9uKGkpe2Z1bmN0aW9uIHMobCl7dGhpcy5fX3BhcmVudD1sLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9MCx0aGlzLl9faW5kZW50X2NvdW50PS0xLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleD0wLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD0tMSx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9MCx0aGlzLl9faXRlbXM9W119cy5wcm90b3R5cGUuY2xvbmVfZW1wdHk9ZnVuY3Rpb24oKXt2YXIgbD1uZXcgcyh0aGlzLl9fcGFyZW50KTtyZXR1cm4gbC5zZXRfaW5kZW50KHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCksbH0scy5wcm90b3R5cGUuaXRlbT1mdW5jdGlvbihsKXtyZXR1cm4gbDwwP3RoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoK2xdOnRoaXMuX19pdGVtc1tsXX0scy5wcm90b3R5cGUuaGFzX21hdGNoPWZ1bmN0aW9uKGwpe2Zvcih2YXIgYz10aGlzLl9faXRlbXMubGVuZ3RoLTE7Yz49MDtjLS0paWYodGhpcy5fX2l0ZW1zW2NdLm1hdGNoKGwpKXJldHVybiEwO3JldHVybiExfSxzLnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGwsYyl7dGhpcy5pc19lbXB0eSgpJiYodGhpcy5fX2luZGVudF9jb3VudD1sfHwwLHRoaXMuX19hbGlnbm1lbnRfY291bnQ9Y3x8MCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zaXplKHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCkpfSxzLnByb3RvdHlwZS5fc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJih0aGlzLl9fd3JhcF9wb2ludF9pbmRleD10aGlzLl9faXRlbXMubGVuZ3RoLHRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fY2hhcmFjdGVyX2NvdW50LHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQ9dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19hbGlnbm1lbnRfY291bnQpfSxzLnByb3RvdHlwZS5fc2hvdWxkX3dyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgmJnRoaXMuX19jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC53cmFwX2xpbmVfbGVuZ3RoJiZ0aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQ+dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19jaGFyYWN0ZXJfY291bnR9LHMucHJvdG90eXBlLl9hbGxvd193cmFwPWZ1bmN0aW9uKCl7aWYodGhpcy5fc2hvdWxkX3dyYXAoKSl7dGhpcy5fX3BhcmVudC5hZGRfbmV3X2xpbmUoKTt2YXIgbD10aGlzLl9fcGFyZW50LmN1cnJlbnRfbGluZTtyZXR1cm4gbC5zZXRfaW5kZW50KHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9hbGlnbm1lbnRfY291bnQpLGwuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UodGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLHRoaXMuX19pdGVtcz10aGlzLl9faXRlbXMuc2xpY2UoMCx0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksbC5fX2NoYXJhY3Rlcl9jb3VudCs9dGhpcy5fX2NoYXJhY3Rlcl9jb3VudC10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQsbC5fX2l0ZW1zWzBdPT09IiAiJiYobC5fX2l0ZW1zLnNwbGljZSgwLDEpLGwuX19jaGFyYWN0ZXJfY291bnQtPTEpLCEwfXJldHVybiExfSxzLnByb3RvdHlwZS5pc19lbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9faXRlbXMubGVuZ3RoPT09MH0scy5wcm90b3R5cGUubGFzdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCk/bnVsbDp0aGlzLl9faXRlbXNbdGhpcy5fX2l0ZW1zLmxlbmd0aC0xXX0scy5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihsKXt0aGlzLl9faXRlbXMucHVzaChsKTt2YXIgYz1sLmxhc3RJbmRleE9mKGAKYCk7YyE9PS0xP3RoaXMuX19jaGFyYWN0ZXJfY291bnQ9bC5sZW5ndGgtYzp0aGlzLl9fY2hhcmFjdGVyX2NvdW50Kz1sLmxlbmd0aH0scy5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7dmFyIGw9bnVsbDtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwobD10aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09bC5sZW5ndGgpLGx9LHMucHJvdG90eXBlLl9yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX2luZGVudF9jb3VudD4wJiYodGhpcy5fX2luZGVudF9jb3VudC09MSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0scy5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD4wJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LT0xKX0scy5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7dGhpcy5sYXN0KCk9PT0iICI7KXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT0xfSxzLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBsPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihsPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihsPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxsKz10aGlzLl9faXRlbXMuam9pbigiIikpLGx9O2Z1bmN0aW9uIGEobCxjKXt0aGlzLl9fY2FjaGU9WyIiXSx0aGlzLl9faW5kZW50X3NpemU9bC5pbmRlbnRfc2l6ZSx0aGlzLl9faW5kZW50X3N0cmluZz1sLmluZGVudF9jaGFyLGwuaW5kZW50X3dpdGhfdGFic3x8KHRoaXMuX19pbmRlbnRfc3RyaW5nPW5ldyBBcnJheShsLmluZGVudF9zaXplKzEpLmpvaW4obC5pbmRlbnRfY2hhcikpLGM9Y3x8IiIsbC5pbmRlbnRfbGV2ZWw+MCYmKGM9bmV3IEFycmF5KGwuaW5kZW50X2xldmVsKzEpLmpvaW4odGhpcy5fX2luZGVudF9zdHJpbmcpKSx0aGlzLl9fYmFzZV9zdHJpbmc9Yyx0aGlzLl9fYmFzZV9zdHJpbmdfbGVuZ3RoPWMubGVuZ3RofWEucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihsLGMpe3ZhciBoPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIGM9Y3x8MCxsPDAmJihoPTApLGgrPWwqdGhpcy5fX2luZGVudF9zaXplLGgrPWMsaH0sYS5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24obCxjKXt2YXIgaD10aGlzLl9fYmFzZV9zdHJpbmc7cmV0dXJuIGM9Y3x8MCxsPDAmJihsPTAsaD0iIiksYys9bCp0aGlzLl9faW5kZW50X3NpemUsdGhpcy5fX2Vuc3VyZV9jYWNoZShjKSxoKz10aGlzLl9fY2FjaGVbY10saH0sYS5wcm90b3R5cGUuX19lbnN1cmVfY2FjaGU9ZnVuY3Rpb24obCl7Zm9yKDtsPj10aGlzLl9fY2FjaGUubGVuZ3RoOyl0aGlzLl9fYWRkX2NvbHVtbigpfSxhLnByb3RvdHlwZS5fX2FkZF9jb2x1bW49ZnVuY3Rpb24oKXt2YXIgbD10aGlzLl9fY2FjaGUubGVuZ3RoLGM9MCxoPSIiO3RoaXMuX19pbmRlbnRfc2l6ZSYmbD49dGhpcy5fX2luZGVudF9zaXplJiYoYz1NYXRoLmZsb29yKGwvdGhpcy5fX2luZGVudF9zaXplKSxsLT1jKnRoaXMuX19pbmRlbnRfc2l6ZSxoPW5ldyBBcnJheShjKzEpLmpvaW4odGhpcy5fX2luZGVudF9zdHJpbmcpKSxsJiYoaCs9bmV3IEFycmF5KGwrMSkuam9pbigiICIpKSx0aGlzLl9fY2FjaGUucHVzaChoKX07ZnVuY3Rpb24gbyhsLGMpe3RoaXMuX19pbmRlbnRfY2FjaGU9bmV3IGEobCxjKSx0aGlzLnJhdz0hMSx0aGlzLl9lbmRfd2l0aF9uZXdsaW5lPWwuZW5kX3dpdGhfbmV3bGluZSx0aGlzLmluZGVudF9zaXplPWwuaW5kZW50X3NpemUsdGhpcy53cmFwX2xpbmVfbGVuZ3RoPWwud3JhcF9saW5lX2xlbmd0aCx0aGlzLmluZGVudF9lbXB0eV9saW5lcz1sLmluZGVudF9lbXB0eV9saW5lcyx0aGlzLl9fbGluZXM9W10sdGhpcy5wcmV2aW91c19saW5lPW51bGwsdGhpcy5jdXJyZW50X2xpbmU9bnVsbCx0aGlzLm5leHRfbGluZT1uZXcgcyh0aGlzKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITEsdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCl9by5wcm90b3R5cGUuX19hZGRfb3V0cHV0bGluZT1mdW5jdGlvbigpe3RoaXMucHJldmlvdXNfbGluZT10aGlzLmN1cnJlbnRfbGluZSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLm5leHRfbGluZS5jbG9uZV9lbXB0eSgpLHRoaXMuX19saW5lcy5wdXNoKHRoaXMuY3VycmVudF9saW5lKX0sby5wcm90b3R5cGUuZ2V0X2xpbmVfbnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19saW5lcy5sZW5ndGh9LG8ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGwsYyl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zdHJpbmcobCxjKX0sby5wcm90b3R5cGUuZ2V0X2luZGVudF9zaXplPWZ1bmN0aW9uKGwsYyl7cmV0dXJuIHRoaXMuX19pbmRlbnRfY2FjaGUuZ2V0X2luZGVudF9zaXplKGwsYyl9LG8ucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMucHJldmlvdXNfbGluZSYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sby5wcm90b3R5cGUuYWRkX25ld19saW5lPWZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmlzX2VtcHR5KCl8fCFsJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpPyExOih0aGlzLnJhd3x8dGhpcy5fX2FkZF9vdXRwdXRsaW5lKCksITApfSxvLnByb3RvdHlwZS5nZXRfY29kZT1mdW5jdGlvbihsKXt0aGlzLnRyaW0oITApO3ZhciBjPXRoaXMuY3VycmVudF9saW5lLnBvcCgpO2MmJihjW2MubGVuZ3RoLTFdPT09YApgJiYoYz1jLnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2goYykpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3ZhciBoPXRoaXMuX19saW5lcy5qb2luKGAKYCk7cmV0dXJuIGwhPT1gCmAmJihoPWgucmVwbGFjZSgvW1xuXS9nLGwpKSxofSxvLnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuY3VycmVudF9saW5lLl9zZXRfd3JhcF9wb2ludCgpfSxvLnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGwsYyl7cmV0dXJuIGw9bHx8MCxjPWN8fDAsdGhpcy5uZXh0X2xpbmUuc2V0X2luZGVudChsLGMpLHRoaXMuX19saW5lcy5sZW5ndGg+MT8odGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudChsLGMpLCEwKToodGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgpLCExKX0sby5wcm90b3R5cGUuYWRkX3Jhd190b2tlbj1mdW5jdGlvbihsKXtmb3IodmFyIGM9MDtjPGwubmV3bGluZXM7YysrKXRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3RoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoLTEpLHRoaXMuY3VycmVudF9saW5lLnB1c2gobC53aGl0ZXNwYWNlX2JlZm9yZSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChsLnRleHQpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMX0sby5wcm90b3R5cGUuYWRkX3Rva2VuPWZ1bmN0aW9uKGwpe3RoaXMuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuKCksdGhpcy5jdXJyZW50X2xpbmUucHVzaChsKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9dGhpcy5jdXJyZW50X2xpbmUuX2FsbG93X3dyYXAoKX0sby5wcm90b3R5cGUuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuPWZ1bmN0aW9uKCl7dGhpcy5zcGFjZV9iZWZvcmVfdG9rZW4mJiF0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpJiYodGhpcy5ub25fYnJlYWtpbmdfc3BhY2V8fHRoaXMuc2V0X3dyYXBfcG9pbnQoKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKCIgIikpfSxvLnByb3RvdHlwZS5yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKGwpe2Zvcih2YXIgYz10aGlzLl9fbGluZXMubGVuZ3RoO2w8YzspdGhpcy5fX2xpbmVzW2xdLl9yZW1vdmVfaW5kZW50KCksbCsrO3RoaXMuY3VycmVudF9saW5lLl9yZW1vdmVfd3JhcF9pbmRlbnQoKX0sby5wcm90b3R5cGUudHJpbT1mdW5jdGlvbihsKXtmb3IobD1sPT09dm9pZCAwPyExOmwsdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO2wmJnRoaXMuX19saW5lcy5sZW5ndGg+MSYmdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKTspdGhpcy5fX2xpbmVzLnBvcCgpLHRoaXMuY3VycmVudF9saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTFdLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTt0aGlzLnByZXZpb3VzX2xpbmU9dGhpcy5fX2xpbmVzLmxlbmd0aD4xP3RoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdOm51bGx9LG8ucHJvdG90eXBlLmp1c3RfYWRkZWRfbmV3bGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxvLnByb3RvdHlwZS5qdXN0X2FkZGVkX2JsYW5rbGluZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzX2VtcHR5KCl8fHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCkmJnRoaXMucHJldmlvdXNfbGluZS5pc19lbXB0eSgpfSxvLnByb3RvdHlwZS5lbnN1cmVfZW1wdHlfbGluZV9hYm92ZT1mdW5jdGlvbihsLGMpe2Zvcih2YXIgaD10aGlzLl9fbGluZXMubGVuZ3RoLTI7aD49MDspe3ZhciB1PXRoaXMuX19saW5lc1toXTtpZih1LmlzX2VtcHR5KCkpYnJlYWs7aWYodS5pdGVtKDApLmluZGV4T2YobCkhPT0wJiZ1Lml0ZW0oLTEpIT09Yyl7dGhpcy5fX2xpbmVzLnNwbGljZShoKzEsMCxuZXcgcyh0aGlzKSksdGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lc1t0aGlzLl9fbGluZXMubGVuZ3RoLTJdO2JyZWFrfWgtLX19LGkuZXhwb3J0cy5PdXRwdXQ9b30sLCwsZnVuY3Rpb24oaSl7ZnVuY3Rpb24gcyhsLGMpe3RoaXMucmF3X29wdGlvbnM9YShsLGMpLHRoaXMuZGlzYWJsZWQ9dGhpcy5fZ2V0X2Jvb2xlYW4oImRpc2FibGVkIiksdGhpcy5lb2w9dGhpcy5fZ2V0X2NoYXJhY3RlcnMoImVvbCIsImF1dG8iKSx0aGlzLmVuZF93aXRoX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oImVuZF93aXRoX25ld2xpbmUiKSx0aGlzLmluZGVudF9zaXplPXRoaXMuX2dldF9udW1iZXIoImluZGVudF9zaXplIiw0KSx0aGlzLmluZGVudF9jaGFyPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJpbmRlbnRfY2hhciIsIiAiKSx0aGlzLmluZGVudF9sZXZlbD10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfbGV2ZWwiKSx0aGlzLnByZXNlcnZlX25ld2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJwcmVzZXJ2ZV9uZXdsaW5lcyIsITApLHRoaXMubWF4X3ByZXNlcnZlX25ld2xpbmVzPXRoaXMuX2dldF9udW1iZXIoIm1heF9wcmVzZXJ2ZV9uZXdsaW5lcyIsMzI3ODYpLHRoaXMucHJlc2VydmVfbmV3bGluZXN8fCh0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz0wKSx0aGlzLmluZGVudF93aXRoX3RhYnM9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF93aXRoX3RhYnMiLHRoaXMuaW5kZW50X2NoYXI9PT0iCSIpLHRoaXMuaW5kZW50X3dpdGhfdGFicyYmKHRoaXMuaW5kZW50X2NoYXI9IgkiLHRoaXMuaW5kZW50X3NpemU9PT0xJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1zLnByb3RvdHlwZS5fZ2V0X2FycmF5PWZ1bmN0aW9uKGwsYyl7dmFyIGg9dGhpcy5yYXdfb3B0aW9uc1tsXSx1PWN8fFtdO3JldHVybiB0eXBlb2YgaD09Im9iamVjdCI/aCE9PW51bGwmJnR5cGVvZiBoLmNvbmNhdD09ImZ1bmN0aW9uIiYmKHU9aC5jb25jYXQoKSk6dHlwZW9mIGg9PSJzdHJpbmciJiYodT1oLnNwbGl0KC9bXmEtekEtWjAtOV9cL1wtXSsvKSksdX0scy5wcm90b3R5cGUuX2dldF9ib29sZWFuPWZ1bmN0aW9uKGwsYyl7dmFyIGg9dGhpcy5yYXdfb3B0aW9uc1tsXSx1PWg9PT12b2lkIDA/ISFjOiEhaDtyZXR1cm4gdX0scy5wcm90b3R5cGUuX2dldF9jaGFyYWN0ZXJzPWZ1bmN0aW9uKGwsYyl7dmFyIGg9dGhpcy5yYXdfb3B0aW9uc1tsXSx1PWN8fCIiO3JldHVybiB0eXBlb2YgaD09InN0cmluZyImJih1PWgucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLGAKYCkucmVwbGFjZSgvXFx0LywiCSIpKSx1fSxzLnByb3RvdHlwZS5fZ2V0X251bWJlcj1mdW5jdGlvbihsLGMpe3ZhciBoPXRoaXMucmF3X29wdGlvbnNbbF07Yz1wYXJzZUludChjLDEwKSxpc05hTihjKSYmKGM9MCk7dmFyIHU9cGFyc2VJbnQoaCwxMCk7cmV0dXJuIGlzTmFOKHUpJiYodT1jKSx1fSxzLnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbj1mdW5jdGlvbihsLGMsaCl7dmFyIHU9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KGwsYyxoKTtpZih1Lmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitsK2AnIGNhbiBvbmx5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKYCtjK2AKWW91IHBhc3NlZCBpbjogJ2ArdGhpcy5yYXdfb3B0aW9uc1tsXSsiJyIpO3JldHVybiB1WzBdfSxzLnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbl9saXN0PWZ1bmN0aW9uKGwsYyxoKXtpZighY3x8Yy5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcigiU2VsZWN0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5LiIpO2lmKGg9aHx8W2NbMF1dLCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24oaCxjKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGVmYXVsdCBWYWx1ZSEiKTt2YXIgdT10aGlzLl9nZXRfYXJyYXkobCxoKTtpZighdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKHUsYykpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitsK2AnIGNhbiBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CmArYytgCllvdSBwYXNzZWQgaW46ICdgK3RoaXMucmF3X29wdGlvbnNbbF0rIiciKTtyZXR1cm4gdX0scy5wcm90b3R5cGUuX2lzX3ZhbGlkX3NlbGVjdGlvbj1mdW5jdGlvbihsLGMpe3JldHVybiBsLmxlbmd0aCYmYy5sZW5ndGgmJiFsLnNvbWUoZnVuY3Rpb24oaCl7cmV0dXJuIGMuaW5kZXhPZihoKT09PS0xfSl9O2Z1bmN0aW9uIGEobCxjKXt2YXIgaD17fTtsPW8obCk7dmFyIHU7Zm9yKHUgaW4gbCl1IT09YyYmKGhbdV09bFt1XSk7aWYoYyYmbFtjXSlmb3IodSBpbiBsW2NdKWhbdV09bFtjXVt1XTtyZXR1cm4gaH1mdW5jdGlvbiBvKGwpe3ZhciBjPXt9LGg7Zm9yKGggaW4gbCl7dmFyIHU9aC5yZXBsYWNlKC8tL2csIl8iKTtjW3VdPWxbaF19cmV0dXJuIGN9aS5leHBvcnRzLk9wdGlvbnM9cyxpLmV4cG9ydHMubm9ybWFsaXplT3B0cz1vLGkuZXhwb3J0cy5tZXJnZU9wdHM9YX0sLGZ1bmN0aW9uKGkpe3ZhciBzPVJlZ0V4cC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoInN0aWNreSIpO2Z1bmN0aW9uIGEobyl7dGhpcy5fX2lucHV0PW98fCIiLHRoaXMuX19pbnB1dF9sZW5ndGg9dGhpcy5fX2lucHV0Lmxlbmd0aCx0aGlzLl9fcG9zaXRpb249MH1hLnByb3RvdHlwZS5yZXN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPTB9LGEucHJvdG90eXBlLmJhY2s9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb24+MCYmKHRoaXMuX19wb3NpdGlvbi09MSl9LGEucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPHRoaXMuX19pbnB1dF9sZW5ndGh9LGEucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgbz1udWxsO3JldHVybiB0aGlzLmhhc05leHQoKSYmKG89dGhpcy5fX2lucHV0LmNoYXJBdCh0aGlzLl9fcG9zaXRpb24pLHRoaXMuX19wb3NpdGlvbis9MSksb30sYS5wcm90b3R5cGUucGVlaz1mdW5jdGlvbihvKXt2YXIgbD1udWxsO3JldHVybiBvPW98fDAsbys9dGhpcy5fX3Bvc2l0aW9uLG8+PTAmJm88dGhpcy5fX2lucHV0X2xlbmd0aCYmKGw9dGhpcy5fX2lucHV0LmNoYXJBdChvKSksbH0sYS5wcm90b3R5cGUuX19tYXRjaD1mdW5jdGlvbihvLGwpe28ubGFzdEluZGV4PWw7dmFyIGM9by5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIGMmJiEocyYmby5zdGlja3kpJiZjLmluZGV4IT09bCYmKGM9bnVsbCksY30sYS5wcm90b3R5cGUudGVzdD1mdW5jdGlvbihvLGwpe3JldHVybiBsPWx8fDAsbCs9dGhpcy5fX3Bvc2l0aW9uLGw+PTAmJmw8dGhpcy5fX2lucHV0X2xlbmd0aD8hIXRoaXMuX19tYXRjaChvLGwpOiExfSxhLnByb3RvdHlwZS50ZXN0Q2hhcj1mdW5jdGlvbihvLGwpe3ZhciBjPXRoaXMucGVlayhsKTtyZXR1cm4gby5sYXN0SW5kZXg9MCxjIT09bnVsbCYmby50ZXN0KGMpfSxhLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihvKXt2YXIgbD10aGlzLl9fbWF0Y2gobyx0aGlzLl9fcG9zaXRpb24pO3JldHVybiBsP3RoaXMuX19wb3NpdGlvbis9bFswXS5sZW5ndGg6bD1udWxsLGx9LGEucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24obyxsLGMpe3ZhciBoPSIiLHU7cmV0dXJuIG8mJih1PXRoaXMubWF0Y2gobyksdSYmKGgrPXVbMF0pKSxsJiYodXx8IW8pJiYoaCs9dGhpcy5yZWFkVW50aWwobCxjKSksaH0sYS5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKG8sbCl7dmFyIGM9IiIsaD10aGlzLl9fcG9zaXRpb247by5sYXN0SW5kZXg9dGhpcy5fX3Bvc2l0aW9uO3ZhciB1PW8uZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiB1PyhoPXUuaW5kZXgsbCYmKGgrPXVbMF0ubGVuZ3RoKSk6aD10aGlzLl9faW5wdXRfbGVuZ3RoLGM9dGhpcy5fX2lucHV0LnN1YnN0cmluZyh0aGlzLl9fcG9zaXRpb24saCksdGhpcy5fX3Bvc2l0aW9uPWgsY30sYS5wcm90b3R5cGUucmVhZFVudGlsQWZ0ZXI9ZnVuY3Rpb24obyl7cmV0dXJuIHRoaXMucmVhZFVudGlsKG8sITApfSxhLnByb3RvdHlwZS5nZXRfcmVnZXhwPWZ1bmN0aW9uKG8sbCl7dmFyIGM9bnVsbCxoPSJnIjtyZXR1cm4gbCYmcyYmKGg9InkiKSx0eXBlb2Ygbz09InN0cmluZyImJm8hPT0iIj9jPW5ldyBSZWdFeHAobyxoKTpvJiYoYz1uZXcgUmVnRXhwKG8uc291cmNlLGgpKSxjfSxhLnByb3RvdHlwZS5nZXRfbGl0ZXJhbF9yZWdleHA9ZnVuY3Rpb24obyl7cmV0dXJuIFJlZ0V4cChvLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIikpfSxhLnByb3RvdHlwZS5wZWVrVW50aWxBZnRlcj1mdW5jdGlvbihvKXt2YXIgbD10aGlzLl9fcG9zaXRpb24sYz10aGlzLnJlYWRVbnRpbEFmdGVyKG8pO3JldHVybiB0aGlzLl9fcG9zaXRpb249bCxjfSxhLnByb3RvdHlwZS5sb29rQmFjaz1mdW5jdGlvbihvKXt2YXIgbD10aGlzLl9fcG9zaXRpb24tMTtyZXR1cm4gbD49by5sZW5ndGgmJnRoaXMuX19pbnB1dC5zdWJzdHJpbmcobC1vLmxlbmd0aCxsKS50b0xvd2VyQ2FzZSgpPT09b30saS5leHBvcnRzLklucHV0U2Nhbm5lcj1hfSwsLCwsZnVuY3Rpb24oaSl7ZnVuY3Rpb24gcyhhLG8pe2E9dHlwZW9mIGE9PSJzdHJpbmciP2E6YS5zb3VyY2Usbz10eXBlb2Ygbz09InN0cmluZyI/bzpvLnNvdXJjZSx0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuPW5ldyBSZWdFeHAoYSsvIGJlYXV0aWZ5KCBcdytbOl1cdyspKyAvLnNvdXJjZStvLCJnIiksdGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuPS8gKFx3KylbOl0oXHcrKS9nLHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybj1uZXcgUmVnRXhwKGErL1xzYmVhdXRpZnlcc2lnbm9yZTplbmRccy8uc291cmNlK28sImciKX1zLnByb3RvdHlwZS5nZXRfZGlyZWN0aXZlcz1mdW5jdGlvbihhKXtpZighYS5tYXRjaCh0aGlzLl9fZGlyZWN0aXZlc19ibG9ja19wYXR0ZXJuKSlyZXR1cm4gbnVsbDt2YXIgbz17fTt0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4ubGFzdEluZGV4PTA7Zm9yKHZhciBsPXRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGEpO2w7KW9bbFsxXV09bFsyXSxsPXRoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5leGVjKGEpO3JldHVybiBvfSxzLnByb3RvdHlwZS5yZWFkSWdub3JlZD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZWFkVW50aWxBZnRlcih0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm4pfSxpLmV4cG9ydHMuRGlyZWN0aXZlcz1zfSwsZnVuY3Rpb24oaSxzLGEpe3ZhciBvPWEoMTYpLkJlYXV0aWZpZXIsbD1hKDE3KS5PcHRpb25zO2Z1bmN0aW9uIGMoaCx1KXt2YXIgZj1uZXcgbyhoLHUpO3JldHVybiBmLmJlYXV0aWZ5KCl9aS5leHBvcnRzPWMsaS5leHBvcnRzLmRlZmF1bHRPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsfX0sZnVuY3Rpb24oaSxzLGEpe3ZhciBvPWEoMTcpLk9wdGlvbnMsbD1hKDIpLk91dHB1dCxjPWEoOCkuSW5wdXRTY2FubmVyLGg9YSgxMykuRGlyZWN0aXZlcyx1PW5ldyBoKC9cL1wqLywvXCpcLy8pLGY9L1xyXG58W1xyXG5dLyxtPS9cclxufFtcclxuXS9nLGc9L1xzLyxiPS8oPzpcc3xcbikrL2cseT0vXC9cKig/Oltcc1xTXSo/KSgoPzpcKlwvKXwkKS9nLEM9L1wvXC8oPzpbXlxuXHJcdTIwMjhcdTIwMjldKikvZztmdW5jdGlvbiBrKHcsRil7dGhpcy5fc291cmNlX3RleHQ9d3x8IiIsdGhpcy5fb3B0aW9ucz1uZXcgbyhGKSx0aGlzLl9jaD1udWxsLHRoaXMuX2lucHV0PW51bGwsdGhpcy5ORVNURURfQVRfUlVMRT17IkBwYWdlIjohMCwiQGZvbnQtZmFjZSI6ITAsIkBrZXlmcmFtZXMiOiEwLCJAbWVkaWEiOiEwLCJAc3VwcG9ydHMiOiEwLCJAZG9jdW1lbnQiOiEwfSx0aGlzLkNPTkRJVElPTkFMX0dST1VQX1JVTEU9eyJAbWVkaWEiOiEwLCJAc3VwcG9ydHMiOiEwLCJAZG9jdW1lbnQiOiEwfX1rLnByb3RvdHlwZS5lYXRTdHJpbmc9ZnVuY3Rpb24odyl7dmFyIEY9IiI7Zm9yKHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKTt0aGlzLl9jaDspe2lmKEYrPXRoaXMuX2NoLHRoaXMuX2NoPT09IlxcIilGKz10aGlzLl9pbnB1dC5uZXh0KCk7ZWxzZSBpZih3LmluZGV4T2YodGhpcy5fY2gpIT09LTF8fHRoaXMuX2NoPT09YApgKWJyZWFrO3RoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKX1yZXR1cm4gRn0say5wcm90b3R5cGUuZWF0V2hpdGVzcGFjZT1mdW5jdGlvbih3KXtmb3IodmFyIEY9Zy50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSksXz0wO2cudGVzdCh0aGlzLl9pbnB1dC5wZWVrKCkpOyl0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksdyYmdGhpcy5fY2g9PT1gCmAmJihfPT09MHx8Xzx0aGlzLl9vcHRpb25zLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcykmJihfKyssdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSghMCkpO3JldHVybiBGfSxrLnByb3RvdHlwZS5mb3VuZE5lc3RlZFBzZXVkb0NsYXNzPWZ1bmN0aW9uKCl7Zm9yKHZhciB3PTAsRj0xLF89dGhpcy5faW5wdXQucGVlayhGKTtfOyl7aWYoXz09PSJ7IilyZXR1cm4hMDtpZihfPT09IigiKXcrPTE7ZWxzZSBpZihfPT09IikiKXtpZih3PT09MClyZXR1cm4hMTt3LT0xfWVsc2UgaWYoXz09PSI7Inx8Xz09PSJ9IilyZXR1cm4hMTtGKyssXz10aGlzLl9pbnB1dC5wZWVrKEYpfXJldHVybiExfSxrLnByb3RvdHlwZS5wcmludF9zdHJpbmc9ZnVuY3Rpb24odyl7dGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5faW5kZW50TGV2ZWwpLHRoaXMuX291dHB1dC5ub25fYnJlYWtpbmdfc3BhY2U9ITAsdGhpcy5fb3V0cHV0LmFkZF90b2tlbih3KX0say5wcm90b3R5cGUucHJlc2VydmVTaW5nbGVTcGFjZT1mdW5jdGlvbih3KXt3JiYodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCl9LGsucHJvdG90eXBlLmluZGVudD1mdW5jdGlvbigpe3RoaXMuX2luZGVudExldmVsKyt9LGsucHJvdG90eXBlLm91dGRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9pbmRlbnRMZXZlbD4wJiZ0aGlzLl9pbmRlbnRMZXZlbC0tfSxrLnByb3RvdHlwZS5iZWF1dGlmeT1mdW5jdGlvbigpe2lmKHRoaXMuX29wdGlvbnMuZGlzYWJsZWQpcmV0dXJuIHRoaXMuX3NvdXJjZV90ZXh0O3ZhciB3PXRoaXMuX3NvdXJjZV90ZXh0LEY9dGhpcy5fb3B0aW9ucy5lb2w7Rj09PSJhdXRvIiYmKEY9YApgLHcmJmYudGVzdCh3fHwiIikmJihGPXcubWF0Y2goZilbMF0pKSx3PXcucmVwbGFjZShtLGAKYCk7dmFyIF89dy5tYXRjaCgvXltcdCBdKi8pWzBdO3RoaXMuX291dHB1dD1uZXcgbCh0aGlzLl9vcHRpb25zLF8pLHRoaXMuX2lucHV0PW5ldyBjKHcpLHRoaXMuX2luZGVudExldmVsPTAsdGhpcy5fbmVzdGVkTGV2ZWw9MCx0aGlzLl9jaD1udWxsO2Zvcih2YXIgUD0wLFc9ITEsVD0hMSxKPSExLHJlPSExLE49ITEsUj10aGlzLl9jaCxJLHosVjtJPXRoaXMuX2lucHV0LnJlYWQoYiksej1JIT09IiIsVj1SLHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLl9jaD09PSJcXCImJnRoaXMuX2lucHV0Lmhhc05leHQoKSYmKHRoaXMuX2NoKz10aGlzLl9pbnB1dC5uZXh0KCkpLFI9dGhpcy5fY2gsdGhpcy5fY2g7KWlmKHRoaXMuX2NoPT09Ii8iJiZ0aGlzLl9pbnB1dC5wZWVrKCk9PT0iKiIpe3RoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLl9pbnB1dC5iYWNrKCk7dmFyIGo9dGhpcy5faW5wdXQucmVhZCh5KSxEPXUuZ2V0X2RpcmVjdGl2ZXMoaik7RCYmRC5pZ25vcmU9PT0ic3RhcnQiJiYoais9dS5yZWFkSWdub3JlZCh0aGlzLl9pbnB1dCkpLHRoaXMucHJpbnRfc3RyaW5nKGopLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpfWVsc2UgaWYodGhpcy5fY2g9PT0iLyImJnRoaXMuX2lucHV0LnBlZWsoKT09PSIvIil0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwLHRoaXMuX2lucHV0LmJhY2soKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9pbnB1dC5yZWFkKEMpKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApO2Vsc2UgaWYodGhpcy5fY2g9PT0iQCIpaWYodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHopLHRoaXMuX2lucHV0LnBlZWsoKT09PSJ7Iil0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZygifSIpKTtlbHNle3RoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKTt2YXIgeD10aGlzLl9pbnB1dC5wZWVrVW50aWxBZnRlcigvWzogLDt7fSgpW1xdXC89JyJdL2cpO3gubWF0Y2goL1sgOl0kLykmJih4PXRoaXMuZWF0U3RyaW5nKCI6ICIpLnJlcGxhY2UoL1xzJC8sIiIpLHRoaXMucHJpbnRfc3RyaW5nKHgpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApLHg9eC5yZXBsYWNlKC9ccyQvLCIiKSx4PT09ImV4dGVuZCI/cmU9ITA6eD09PSJpbXBvcnQiJiYoTj0hMCkseCBpbiB0aGlzLk5FU1RFRF9BVF9SVUxFPyh0aGlzLl9uZXN0ZWRMZXZlbCs9MSx4IGluIHRoaXMuQ09ORElUSU9OQUxfR1JPVVBfUlVMRSYmKEo9ITApKTohVyYmUD09PTAmJnguaW5kZXhPZigiOiIpIT09LTEmJihUPSEwLHRoaXMuaW5kZW50KCkpfWVsc2UgdGhpcy5fY2g9PT0iIyImJnRoaXMuX2lucHV0LnBlZWsoKT09PSJ7Ij8odGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHopLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpKTp0aGlzLl9jaD09PSJ7Ij8oVCYmKFQ9ITEsdGhpcy5vdXRkZW50KCkpLEo/KEo9ITEsVz10aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwpOlc9dGhpcy5faW5kZW50TGV2ZWw+PXRoaXMuX25lc3RlZExldmVsLTEsdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJlcmJnRoaXMuX291dHB1dC5wcmV2aW91c19saW5lJiZ0aGlzLl9vdXRwdXQucHJldmlvdXNfbGluZS5pdGVtKC0xKSE9PSJ7IiYmdGhpcy5fb3V0cHV0LmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlKCIvIiwiLCIpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5fb3B0aW9ucy5icmFjZV9zdHlsZT09PSJleHBhbmQiPyh0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuaW5kZW50KCksdGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5faW5kZW50TGV2ZWwpKToodGhpcy5pbmRlbnQoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKTp0aGlzLl9jaD09PSJ9Ij8odGhpcy5vdXRkZW50KCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLFY9PT0ieyImJnRoaXMuX291dHB1dC50cmltKCEwKSxOPSExLHJlPSExLFQmJih0aGlzLm91dGRlbnQoKSxUPSExKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksVz0hMSx0aGlzLl9uZXN0ZWRMZXZlbCYmdGhpcy5fbmVzdGVkTGV2ZWwtLSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLl9vcHRpb25zLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyYmIXRoaXMuX291dHB1dC5qdXN0X2FkZGVkX2JsYW5rbGluZSgpJiZ0aGlzLl9pbnB1dC5wZWVrKCkhPT0ifSImJnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoITApKTp0aGlzLl9jaD09PSI6Ij8oV3x8SikmJiEodGhpcy5faW5wdXQubG9va0JhY2soIiYiKXx8dGhpcy5mb3VuZE5lc3RlZFBzZXVkb0NsYXNzKCkpJiYhdGhpcy5faW5wdXQubG9va0JhY2soIigiKSYmIXJlJiZQPT09MD8odGhpcy5wcmludF9zdHJpbmcoIjoiKSxUfHwoVD0hMCx0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5pbmRlbnQoKSkpOih0aGlzLl9pbnB1dC5sb29rQmFjaygiICIpJiYodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksdGhpcy5faW5wdXQucGVlaygpPT09IjoiPyh0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5wcmludF9zdHJpbmcoIjo6IikpOnRoaXMucHJpbnRfc3RyaW5nKCI6IikpOnRoaXMuX2NoPT09JyInfHx0aGlzLl9jaD09PSInIj8odGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHopLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKHRoaXMuX2NoKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSk6dGhpcy5fY2g9PT0iOyI/UD09PTA/KFQmJih0aGlzLm91dGRlbnQoKSxUPSExKSxyZT0hMSxOPSExLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuX2lucHV0LnBlZWsoKSE9PSIvIiYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6dGhpcy5fY2g9PT0iKCI/dGhpcy5faW5wdXQubG9va0JhY2soInVybCIpPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksUCsrLHRoaXMuaW5kZW50KCksdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLHRoaXMuX2NoPT09IikifHx0aGlzLl9jaD09PSciJ3x8dGhpcy5fY2g9PT0iJyI/dGhpcy5faW5wdXQuYmFjaygpOnRoaXMuX2NoJiYodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIikiKSksUCYmKFAtLSx0aGlzLm91dGRlbnQoKSkpKToodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHopLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSxQKyssdGhpcy5pbmRlbnQoKSk6dGhpcy5fY2g9PT0iKSI/KFAmJihQLS0sdGhpcy5vdXRkZW50KCkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6dGhpcy5fY2g9PT0iLCI/KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuX29wdGlvbnMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmUmJiFUJiZQPT09MCYmIU4mJiFyZT90aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCk6dGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6KHRoaXMuX2NoPT09Ij4ifHx0aGlzLl9jaD09PSIrInx8dGhpcy5fY2g9PT0ifiIpJiYhVCYmUD09PTA/dGhpcy5fb3B0aW9ucy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj8odGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSx0aGlzLl9jaCYmZy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk6dGhpcy5fY2g9PT0iXSI/dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpOnRoaXMuX2NoPT09IlsiPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoeiksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpKTp0aGlzLl9jaD09PSI9Ij8odGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5wcmludF9zdHJpbmcoIj0iKSxnLnRlc3QodGhpcy5fY2gpJiYodGhpcy5fY2g9IiIpKTp0aGlzLl9jaD09PSIhIiYmIXRoaXMuX2lucHV0Lmxvb2tCYWNrKCJcXCIpPyh0aGlzLnByaW50X3N0cmluZygiICIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZSh6KSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpO3ZhciBBPXRoaXMuX291dHB1dC5nZXRfY29kZShGKTtyZXR1cm4gQX0saS5leHBvcnRzLkJlYXV0aWZpZXI9a30sZnVuY3Rpb24oaSxzLGEpe3ZhciBvPWEoNikuT3B0aW9ucztmdW5jdGlvbiBsKGMpe28uY2FsbCh0aGlzLGMsImNzcyIpLHRoaXMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oInNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lIiwhMCksdGhpcy5uZXdsaW5lX2JldHdlZW5fcnVsZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oIm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyIsITApO3ZhciBoPXRoaXMuX2dldF9ib29sZWFuKCJzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yIik7dGhpcy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX2NvbWJpbmF0b3IiKXx8aDt2YXIgdT10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoImJyYWNlX3N0eWxlIixbImNvbGxhcHNlIiwiZXhwYW5kIiwiZW5kLWV4cGFuZCIsIm5vbmUiLCJwcmVzZXJ2ZS1pbmxpbmUiXSk7dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiO2Zvcih2YXIgZj0wO2Y8dS5sZW5ndGg7ZisrKXVbZl0hPT0iZXhwYW5kIj90aGlzLmJyYWNlX3N0eWxlPSJjb2xsYXBzZSI6dGhpcy5icmFjZV9zdHlsZT11W2ZdfWwucHJvdG90eXBlPW5ldyBvLGkuZXhwb3J0cy5PcHRpb25zPWx9XSxlPXt9O2Z1bmN0aW9uIG4oaSl7dmFyIHM9ZVtpXTtpZihzIT09dm9pZCAwKXJldHVybiBzLmV4cG9ydHM7dmFyIGE9ZVtpXT17ZXhwb3J0czp7fX07cmV0dXJuIHRbaV0oYSxhLmV4cG9ydHMsbiksYS5leHBvcnRzfXZhciByPW4oMTUpO2FjPXJ9KSgpO3ZhciBvZj1hYztmdW5jdGlvbiBsZih0LGUsbil7dmFyIHI9dC5nZXRUZXh0KCksaT0hMCxzPTAsYT0hMSxvPW4udGFiU2l6ZXx8NDtpZihlKXtmb3IodmFyIGw9dC5vZmZzZXRBdChlLnN0YXJ0KSxjPWw7Yz4wJiZjYyhyLGMtMSk7KWMtLTtjPT09MHx8bGMocixjLTEpP2w9YzpjPGwmJihsPWMrMSk7Zm9yKHZhciBoPXQub2Zmc2V0QXQoZS5lbmQpLHU9aDt1PHIubGVuZ3RoJiZjYyhyLHUpOyl1Kys7aWYoKHU9PT1yLmxlbmd0aHx8bGMocix1KSkmJihoPXUpLGU9aWUuY3JlYXRlKHQucG9zaXRpb25BdChsKSx0LnBvc2l0aW9uQXQoaCkpLGE9ZGYocixsKSxpPWg9PT1yLmxlbmd0aCxyPXIuc3Vic3RyaW5nKGwsaCksbCE9PTApe3ZhciBmPXQub2Zmc2V0QXQoRmUuY3JlYXRlKGUuc3RhcnQubGluZSwwKSk7cz11Zih0LmdldFRleHQoKSxmLG4pfWEmJihyPWB7CmAuY29uY2F0KG9jKHIpKSl9ZWxzZSBlPWllLmNyZWF0ZShGZS5jcmVhdGUoMCwwKSx0LnBvc2l0aW9uQXQoci5sZW5ndGgpKTt2YXIgbT17aW5kZW50X3NpemU6byxpbmRlbnRfY2hhcjpuLmluc2VydFNwYWNlcz8iICI6IgkiLGVuZF93aXRoX25ld2xpbmU6aSYmbHQobiwiaW5zZXJ0RmluYWxOZXdsaW5lIiwhMSksc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU6bHQobiwibmV3bGluZUJldHdlZW5TZWxlY3RvcnMiLCEwKSxuZXdsaW5lX2JldHdlZW5fcnVsZXM6bHQobiwibmV3bGluZUJldHdlZW5SdWxlcyIsITApLHNwYWNlX2Fyb3VuZF9zZWxlY3Rvcl9zZXBhcmF0b3I6bHQobiwic3BhY2VBcm91bmRTZWxlY3RvclNlcGFyYXRvciIsITEpLGJyYWNlX3N0eWxlOmx0KG4sImJyYWNlU3R5bGUiLCJjb2xsYXBzZSIpLGluZGVudF9lbXB0eV9saW5lczpsdChuLCJpbmRlbnRFbXB0eUxpbmVzIiwhMSksbWF4X3ByZXNlcnZlX25ld2xpbmVzOmx0KG4sIm1heFByZXNlcnZlTmV3TGluZXMiLHZvaWQgMCkscHJlc2VydmVfbmV3bGluZXM6bHQobiwicHJlc2VydmVOZXdMaW5lcyIsITApLHdyYXBfbGluZV9sZW5ndGg6bHQobiwid3JhcExpbmVMZW5ndGgiLHZvaWQgMCksZW9sOmAKYH0sZz1vZihyLG0pO2lmKGEmJihnPW9jKGcuc3Vic3RyaW5nKDIpKSkscz4wKXt2YXIgYj1uLmluc2VydFNwYWNlcz9TbygiICIsbypzKTpTbygiCSIscyk7Zz1nLnNwbGl0KGAKYCkuam9pbihgCmArYiksZS5zdGFydC5jaGFyYWN0ZXI9PT0wJiYoZz1iK2cpfXJldHVyblt7cmFuZ2U6ZSxuZXdUZXh0Omd9XX1mdW5jdGlvbiBvYyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9eXHMrLywiIil9dmFyIGNmPTEyMyxoZj0xMjU7ZnVuY3Rpb24gZGYodCxlKXtmb3IoO2U+PTA7KXt2YXIgbj10LmNoYXJDb2RlQXQoZSk7aWYobj09PWNmKXJldHVybiEwO2lmKG49PT1oZilyZXR1cm4hMTtlLS19cmV0dXJuITF9ZnVuY3Rpb24gbHQodCxlLG4pe2lmKHQmJnQuaGFzT3duUHJvcGVydHkoZSkpe3ZhciByPXRbZV07aWYociE9PW51bGwpcmV0dXJuIHJ9cmV0dXJuIG59ZnVuY3Rpb24gdWYodCxlLG4pe2Zvcih2YXIgcj1lLGk9MCxzPW4udGFiU2l6ZXx8NDtyPHQubGVuZ3RoOyl7dmFyIGE9dC5jaGFyQXQocik7aWYoYT09PSIgIilpKys7ZWxzZSBpZihhPT09IgkiKWkrPXM7ZWxzZSBicmVhaztyKyt9cmV0dXJuIE1hdGguZmxvb3IoaS9zKX1mdW5jdGlvbiBsYyh0LGUpe3JldHVybmBccgpgLmluZGV4T2YodC5jaGFyQXQoZSkpIT09LTF9ZnVuY3Rpb24gY2ModCxlKXtyZXR1cm4iIAkiLmluZGV4T2YodC5jaGFyQXQoZSkpIT09LTF9dmFyIHBmPXt2ZXJzaW9uOjEuMSxwcm9wZXJ0aWVzOlt7bmFtZToiYWRkaXRpdmUtc3ltYm9scyIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiJbIDxpbnRlZ2VyPiAmJiA8c3ltYm9sPiBdIyIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgdGhlIHN5bWJvbHMgdXNlZCBieSB0aGUgbWFya2VyLWNvbnN0cnVjdGlvbiBhbGdvcml0aG0gc3BlY2lmaWVkIGJ5IHRoZSBzeXN0ZW0gZGVzY3JpcHRvci4gTmVlZHMgdG8gYmUgc3BlY2lmaWVkIGlmIHRoZSBjb3VudGVyIHN5c3RlbSBpcyAnYWRkaXRpdmUnLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciIsInN0cmluZyIsImltYWdlIiwiaWRlbnRpZmllciJdfSx7bmFtZToiYWxpZ24tY29udGVudCIsdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGNlbnRlciBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6ImZsZXgtc3RhcnQiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJzcGFjZS1hcm91bmQiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBmbGV4IGNvbnRhaW5lciwgd2l0aCBoYWxmLXNpemUgc3BhY2VzIG9uIGVpdGhlciBlbmQuIn0se25hbWU6InNwYWNlLWJldHdlZW4iLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IkxpbmVzIHN0cmV0Y2ggdG8gdGFrZSB1cCB0aGUgcmVtYWluaW5nIHNwYWNlLiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gPGNvbnRlbnQtcG9zaXRpb24+IixyZWxldmFuY2U6NjIsZGVzY3JpcHRpb246IkFsaWducyBhIGZsZXggY29udGFpbmVy4oCZcyBsaW5lcyB3aXRoaW4gdGhlIGZsZXggY29udGFpbmVyIHdoZW4gdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGNyb3NzLWF4aXMsIHNpbWlsYXIgdG8gaG93ICdqdXN0aWZ5LWNvbnRlbnQnIGFsaWducyBpbmRpdmlkdWFsIGl0ZW1zIHdpdGhpbiB0aGUgbWFpbi1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYWxpZ24taXRlbXMiLHZhbHVlczpbe25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiSWYgdGhlIGZsZXggaXRlbeKAmXMgaW5saW5lIGF4aXMgaXMgdGhlIHNhbWUgYXMgdGhlIGNyb3NzIGF4aXMsIHRoaXMgdmFsdWUgaXMgaWRlbnRpY2FsIHRvICdmbGV4LXN0YXJ0Jy4gT3RoZXJ3aXNlLCBpdCBwYXJ0aWNpcGF0ZXMgaW4gYmFzZWxpbmUgYWxpZ25tZW50LiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBpdGVt4oCZcyBtYXJnaW4gYm94IGlzIGNlbnRlcmVkIGluIHRoZSBjcm9zcyBheGlzIHdpdGhpbiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1lbmQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3MtZW5kIG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLWVuZCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLXN0YXJ0IG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLXN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9XSxzeW50YXg6Im5vcm1hbCB8IHN0cmV0Y2ggfCA8YmFzZWxpbmUtcG9zaXRpb24+IHwgWyA8b3ZlcmZsb3ctcG9zaXRpb24+PyA8c2VsZi1wb3NpdGlvbj4gXSIscmVsZXZhbmNlOjg1LGRlc2NyaXB0aW9uOiJBbGlnbnMgZmxleCBpdGVtcyBhbG9uZyB0aGUgY3Jvc3MgYXhpcyBvZiB0aGUgY3VycmVudCBsaW5lIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Imp1c3RpZnktaXRlbXMiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9ybWFsIn0se25hbWU6ImVuZCJ9LHtuYW1lOiJzdGFydCJ9LHtuYW1lOiJmbGV4LWVuZCIsZGVzY3JpcHRpb246JyJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBlbmQgb2YgdGhlIGxpbmUuIid9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjonIkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiInfSx7bmFtZToic2VsZi1lbmQiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbSBpcyBwYWNrZWQgZmx1c2ggdG8gdGhlIGVkZ2Ugb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIgb2YgdGhlIGVuZCBzaWRlIG9mIHRoZSBpdGVtLCBpbiB0aGUgYXBwcm9wcmlhdGUgYXhpcy4ifSx7bmFtZToic2VsZi1zdGFydCIsZGVzY3JpcHRpb246IlRoZSBpdGVtIGlzIHBhY2tlZCBmbHVzaCB0byB0aGUgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBvZiB0aGUgc3RhcnQgc2lkZSBvZiB0aGUgaXRlbSwgaW4gdGhlIGFwcHJvcHJpYXRlIGF4aXMuLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbXMgYXJlIHBhY2tlZCBmbHVzaCB0byBlYWNoIG90aGVyIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lci4ifSx7bmFtZToibGVmdCJ9LHtuYW1lOiJyaWdodCJ9LHtuYW1lOiJiYXNlbGluZSJ9LHtuYW1lOiJmaXJzdCBiYXNlbGluZSJ9LHtuYW1lOiJsYXN0IGJhc2VsaW5lIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9LHtuYW1lOiJzYXZlIn0se25hbWU6InVuc2F2ZSJ9LHtuYW1lOiJsZWdhY3kifV0sc3ludGF4OiJub3JtYWwgfCBzdHJldGNoIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxvdmVyZmxvdy1wb3NpdGlvbj4/IFsgPHNlbGYtcG9zaXRpb24+IHwgbGVmdCB8IHJpZ2h0IF0gfCBsZWdhY3kgfCBsZWdhY3kgJiYgWyBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgXSIscmVsZXZhbmNlOjUzLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBkZWZhdWx0IGp1c3RpZnktc2VsZiBmb3IgYWxsIGl0ZW1zIG9mIHRoZSBib3gsIGdpdmluZyB0aGVtIHRoZSBkZWZhdWx0IHdheSBvZiBqdXN0aWZ5aW5nIGVhY2ggYm94IGFsb25nIHRoZSBhcHByb3ByaWF0ZSBheGlzIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJqdXN0aWZ5LXNlbGYiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9ybWFsIn0se25hbWU6ImVuZCJ9LHtuYW1lOiJzdGFydCJ9LHtuYW1lOiJmbGV4LWVuZCIsZGVzY3JpcHRpb246JyJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBlbmQgb2YgdGhlIGxpbmUuIid9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjonIkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiInfSx7bmFtZToic2VsZi1lbmQiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbSBpcyBwYWNrZWQgZmx1c2ggdG8gdGhlIGVkZ2Ugb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIgb2YgdGhlIGVuZCBzaWRlIG9mIHRoZSBpdGVtLCBpbiB0aGUgYXBwcm9wcmlhdGUgYXhpcy4ifSx7bmFtZToic2VsZi1zdGFydCIsZGVzY3JpcHRpb246IlRoZSBpdGVtIGlzIHBhY2tlZCBmbHVzaCB0byB0aGUgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBvZiB0aGUgc3RhcnQgc2lkZSBvZiB0aGUgaXRlbSwgaW4gdGhlIGFwcHJvcHJpYXRlIGF4aXMuLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbXMgYXJlIHBhY2tlZCBmbHVzaCB0byBlYWNoIG90aGVyIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lci4ifSx7bmFtZToibGVmdCJ9LHtuYW1lOiJyaWdodCJ9LHtuYW1lOiJiYXNlbGluZSJ9LHtuYW1lOiJmaXJzdCBiYXNlbGluZSJ9LHtuYW1lOiJsYXN0IGJhc2VsaW5lIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9LHtuYW1lOiJzYXZlIn0se25hbWU6InVuc2F2ZSJ9XSxzeW50YXg6ImF1dG8gfCBub3JtYWwgfCBzdHJldGNoIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxvdmVyZmxvdy1wb3NpdGlvbj4/IFsgPHNlbGYtcG9zaXRpb24+IHwgbGVmdCB8IHJpZ2h0IF0iLHJlbGV2YW5jZTo1MyxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgd2F5IG9mIGp1c3RpZnlpbmcgYSBib3ggaW5zaWRlIGl0cyBjb250YWluZXIgYWxvbmcgdGhlIGFwcHJvcHJpYXRlIGF4aXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbGlnbi1zZWxmIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29tcHV0ZXMgdG8gdGhlIHZhbHVlIG9mICdhbGlnbi1pdGVtcycgb24gdGhlIGVsZW1lbnTigJlzIHBhcmVudCwgb3IgJ3N0cmV0Y2gnIGlmIHRoZSBlbGVtZW50IGhhcyBubyBwYXJlbnQuIE9uIGFic29sdXRlbHkgcG9zaXRpb25lZCBlbGVtZW50cywgaXQgY29tcHV0ZXMgdG8gaXRzZWxmLiJ9LHtuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IklmIHRoZSBmbGV4IGl0ZW3igJlzIGlubGluZSBheGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBjcm9zcyBheGlzLCB0aGlzIHZhbHVlIGlzIGlkZW50aWNhbCB0byAnZmxleC1zdGFydCcuIE90aGVyd2lzZSwgaXQgcGFydGljaXBhdGVzIGluIGJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggaXRlbeKAmXMgbWFyZ2luIGJveCBpcyBjZW50ZXJlZCBpbiB0aGUgY3Jvc3MgYXhpcyB3aXRoaW4gdGhlIGxpbmUuIn0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLWVuZCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1lbmQgZWRnZSBvZiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1zdGFydCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1zdGFydCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1zdGFydCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNyb3NzIHNpemUgcHJvcGVydHkgb2YgdGhlIGZsZXggaXRlbSBjb21wdXRlcyB0byBhdXRvLCBhbmQgbmVpdGhlciBvZiB0aGUgY3Jvc3MtYXhpcyBtYXJnaW5zIGFyZSBhdXRvLCB0aGUgZmxleCBpdGVtIGlzIHN0cmV0Y2hlZC4ifV0sc3ludGF4OiJhdXRvIHwgbm9ybWFsIHwgc3RyZXRjaCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyA8c2VsZi1wb3NpdGlvbj4iLHJlbGV2YW5jZTo3MixkZXNjcmlwdGlvbjoiQWxsb3dzIHRoZSBkZWZhdWx0IGFsaWdubWVudCBhbG9uZyB0aGUgY3Jvc3MgYXhpcyB0byBiZSBvdmVycmlkZGVuIGZvciBpbmRpdmlkdWFsIGZsZXggaXRlbXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbGwiLGJyb3dzZXJzOlsiRTc5IiwiRkYyNyIsIlM5LjEiLCJDMzciLCJPMjQiXSx2YWx1ZXM6W10sc3ludGF4OiJpbml0aWFsIHwgaW5oZXJpdCB8IHVuc2V0IHwgcmV2ZXJ0IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FsbCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHRoYXQgcmVzZXRzIGFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCAnZGlyZWN0aW9uJyBhbmQgJ3VuaWNvZGUtYmlkaScuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbHQiLGJyb3dzZXJzOlsiUzkiXSx2YWx1ZXM6W10scmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbHQifV0sZGVzY3JpcHRpb246IlByb3ZpZGVzIGFsdGVybmF0aXZlIHRleHQgZm9yIGFzc2lzdGl2ZSB0ZWNobm9sb2d5IHRvIHJlcGxhY2UgdGhlIGdlbmVyYXRlZCBjb250ZW50IG9mIGEgOjpiZWZvcmUgb3IgOjphZnRlciBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIiwiZW51bSJdfSx7bmFtZToiYW5pbWF0aW9uIix2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24+IyIscmVsZXZhbmNlOjgyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBzaXggb2YgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSIsImlkZW50aWZpZXIiLCJudW1iZXIiXX0se25hbWU6ImFuaW1hdGlvbi1kZWxheSIsc3ludGF4OiI8dGltZT4jIixyZWxldmFuY2U6NjQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1kZWxheSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSBhbmltYXRpb24gd2lsbCBzdGFydC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6ImFuaW1hdGlvbi1kaXJlY3Rpb24iLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxzeW50YXg6IjxzaW5nbGUtYW5pbWF0aW9uLWRpcmVjdGlvbj4jIixyZWxldmFuY2U6NTcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1kaXJlY3Rpb24ifV0sZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFuaW1hdGlvbiBzaG91bGQgcGxheSBpbiByZXZlcnNlIG9uIGFsdGVybmF0ZSBjeWNsZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24tZHVyYXRpb24iLHN5bnRheDoiPHRpbWU+IyIscmVsZXZhbmNlOjY4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tZHVyYXRpb24ifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGxlbmd0aCBvZiB0aW1lIHRoYXQgYW4gYW5pbWF0aW9uIHRha2VzIHRvIGNvbXBsZXRlIG9uZSBjeWNsZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6ImFuaW1hdGlvbi1maWxsLW1vZGUiLHZhbHVlczpbe25hbWU6ImJhY2t3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBiZWdpbm5pbmcgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGZpcnN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgYXBwbGllZCBiZWZvcmUgdGhlIGFuaW1hdGlvbiBpcyBkaXNwbGF5ZWQsIGR1cmluZyB0aGUgcGVyaW9kIGRlZmluZWQgYnkgJ2FuaW1hdGlvbi1kZWxheScuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJCb3RoIGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgZmlsbCBtb2RlcyBhcmUgYXBwbGllZC4ifSx7bmFtZToiZm9yd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgZmluYWwgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGxhc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBtYWludGFpbmVkIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlcmUgaXMgbm8gY2hhbmdlIHRvIHRoZSBwcm9wZXJ0eSB2YWx1ZSBiZXR3ZWVuIHRoZSB0aW1lIHRoZSBhbmltYXRpb24gaXMgYXBwbGllZCBhbmQgdGhlIHRpbWUgdGhlIGFuaW1hdGlvbiBiZWdpbnMgcGxheWluZyBvciBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifV0sc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbi1maWxsLW1vZGU+IyIscmVsZXZhbmNlOjYzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tZmlsbC1tb2RlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoYXQgdmFsdWVzIGFyZSBhcHBsaWVkIGJ5IHRoZSBhbmltYXRpb24gb3V0c2lkZSB0aGUgdGltZSBpdCBpcyBleGVjdXRpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iix2YWx1ZXM6W3tuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9XSxzeW50YXg6IjxzaW5nbGUtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudD4jIixyZWxldmFuY2U6NjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIG51bWJlciBvZiB0aW1lcyBhbiBhbmltYXRpb24gY3ljbGUgaXMgcGxheWVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBvbmUsIG1lYW5pbmcgdGhlIGFuaW1hdGlvbiB3aWxsIHBsYXkgZnJvbSBiZWdpbm5pbmcgdG8gZW5kIG9uY2UuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24tbmFtZSIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifV0sc3ludGF4OiJbIG5vbmUgfCA8a2V5ZnJhbWVzLW5hbWU+IF0jIixyZWxldmFuY2U6NjgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1uYW1lIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgbGlzdCBvZiBhbmltYXRpb25zIHRoYXQgYXBwbHkuIEVhY2ggbmFtZSBpcyB1c2VkIHRvIHNlbGVjdCB0aGUga2V5ZnJhbWUgYXQtcnVsZSB0aGF0IHByb3ZpZGVzIHRoZSBwcm9wZXJ0eSB2YWx1ZXMgZm9yIHRoZSBhbmltYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiZW51bSJdfSx7bmFtZToiYW5pbWF0aW9uLXBsYXktc3RhdGUiLHZhbHVlczpbe25hbWU6InBhdXNlZCIsZGVzY3JpcHRpb246IkEgcnVubmluZyBhbmltYXRpb24gd2lsbCBiZSBwYXVzZWQuIn0se25hbWU6InJ1bm5pbmciLGRlc2NyaXB0aW9uOiJSZXN1bWUgcGxheWJhY2sgb2YgYSBwYXVzZWQgYW5pbWF0aW9uLiJ9XSxzeW50YXg6IjxzaW5nbGUtYW5pbWF0aW9uLXBsYXktc3RhdGU+IyIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tcGxheS1zdGF0ZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIHRoZSBhbmltYXRpb24gaXMgcnVubmluZyBvciBwYXVzZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIixzeW50YXg6IjxlYXNpbmctZnVuY3Rpb24+IyIscmVsZXZhbmNlOjcxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBhbmltYXRpb24gd2lsbCBwcm9ncmVzcyBvdmVyIG9uZSBjeWNsZSBvZiBpdHMgZHVyYXRpb24uIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6ImJhY2tmYWNlLXZpc2liaWxpdHkiLHZhbHVlczpbe25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IkJhY2sgc2lkZSBpcyBoaWRkZW4uIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJCYWNrIHNpZGUgaXMgdmlzaWJsZS4ifV0sc3ludGF4OiJ2aXNpYmxlIHwgaGlkZGVuIixyZWxldmFuY2U6NTkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tmYWNlLXZpc2liaWxpdHkifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlICdiYWNrJyBzaWRlIG9mIGEgdHJhbnNmb3JtZWQgZWxlbWVudCBpcyB2aXNpYmxlIHdoZW4gZmFjaW5nIHRoZSB2aWV3ZXIuIFdpdGggYW4gaWRlbnRpdHkgdHJhbnNmb3JtLCB0aGUgZnJvbnQgc2lkZSBvZiBhbiBlbGVtZW50IGZhY2VzIHRoZSB2aWV3ZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJiYWNrZ3JvdW5kIix2YWx1ZXM6W3tuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSB2aWV3cG9ydC4gSW4gcGFnZWQgbWVkaWEgd2hlcmUgdGhlcmUgaXMgbm8gdmlld3BvcnQsIGEgJ2ZpeGVkJyBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVzcGVjdCB0byB0aGUgcGFnZSBib3ggYW5kIHRoZXJlZm9yZSByZXBsaWNhdGVkIG9uIGV2ZXJ5IHBhZ2UuIn0se25hbWU6ImxvY2FsIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIGVsZW1lbnQncyBjb250ZW50czogaWYgdGhlIGVsZW1lbnQgaGFzIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSwgdGhlIGJhY2tncm91bmQgc2Nyb2xscyB3aXRoIHRoZSBlbGVtZW50J3MgY29udGVudHMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJBIHZhbHVlIG9mICdub25lJyBjb3VudHMgYXMgYW4gaW1hZ2UgbGF5ZXIgYnV0IGRyYXdzIG5vdGhpbmcuIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSBlbGVtZW50IGl0c2VsZiBhbmQgZG9lcyBub3Qgc2Nyb2xsIHdpdGggaXRzIGNvbnRlbnRzLiAoSXQgaXMgZWZmZWN0aXZlbHkgYXR0YWNoZWQgdG8gdGhlIGVsZW1lbnQncyBib3JkZXIuKSJ9XSxzeW50YXg6IlsgPGJnLWxheWVyPiAsIF0qIDxmaW5hbC1iZy1sYXllcj4iLHJlbGV2YW5jZTo5MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIG1vc3QgYmFja2dyb3VuZCBwcm9wZXJ0aWVzIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpbWFnZSIsImNvbG9yIiwicG9zaXRpb24iLCJsZW5ndGgiLCJyZXBlYXQiLCJwZXJjZW50YWdlIiwiYm94Il19LHtuYW1lOiJiYWNrZ3JvdW5kLWF0dGFjaG1lbnQiLHZhbHVlczpbe25hbWU6ImZpeGVkIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIHZpZXdwb3J0LiBJbiBwYWdlZCBtZWRpYSB3aGVyZSB0aGVyZSBpcyBubyB2aWV3cG9ydCwgYSAnZml4ZWQnIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBwYWdlIGJveCBhbmQgdGhlcmVmb3JlIHJlcGxpY2F0ZWQgb24gZXZlcnkgcGFnZS4ifSx7bmFtZToibG9jYWwiLGRlc2NyaXB0aW9uOiJUaGUgYmFja2dyb3VuZCBpcyBmaXhlZCB3aXRoIHJlZ2FyZCB0byB0aGUgZWxlbWVudOKAmXMgY29udGVudHM6IGlmIHRoZSBlbGVtZW50IGhhcyBhIHNjcm9sbGluZyBtZWNoYW5pc20sIHRoZSBiYWNrZ3JvdW5kIHNjcm9sbHMgd2l0aCB0aGUgZWxlbWVudOKAmXMgY29udGVudHMuIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSBlbGVtZW50IGl0c2VsZiBhbmQgZG9lcyBub3Qgc2Nyb2xsIHdpdGggaXRzIGNvbnRlbnRzLiAoSXQgaXMgZWZmZWN0aXZlbHkgYXR0YWNoZWQgdG8gdGhlIGVsZW1lbnTigJlzIGJvcmRlci4pIn1dLHN5bnRheDoiPGF0dGFjaG1lbnQ+IyIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWF0dGFjaG1lbnQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGltYWdlcyBhcmUgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIHZpZXdwb3J0ICgnZml4ZWQnKSBvciBzY3JvbGwgYWxvbmcgd2l0aCB0aGUgZWxlbWVudCAoJ3Njcm9sbCcpIG9yIGl0cyBjb250ZW50cyAoJ2xvY2FsJykuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJiYWNrZ3JvdW5kLWJsZW5kLW1vZGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMCIsIlM4IiwiQzM1IiwiTzIyIl0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiRGVmYXVsdCBhdHRyaWJ1dGUgd2hpY2ggc3BlY2lmaWVzIG5vIGJsZW5kaW5nIn0se25hbWU6Im11bHRpcGx5IixkZXNjcmlwdGlvbjoiVGhlIHNvdXJjZSBjb2xvciBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBkZXN0aW5hdGlvbiBjb2xvciBhbmQgcmVwbGFjZXMgdGhlIGRlc3RpbmF0aW9uLiJ9LHtuYW1lOiJzY3JlZW4iLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIHRoZSBjb21wbGVtZW50cyBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvciB2YWx1ZXMsIHRoZW4gY29tcGxlbWVudHMgdGhlIHJlc3VsdC4ifSx7bmFtZToib3ZlcmxheSIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgb3Igc2NyZWVucyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIGJhY2tkcm9wIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJkYXJrZW4iLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBkYXJrZXIgb2YgdGhlIGJhY2tkcm9wIGFuZCBzb3VyY2UgY29sb3JzLiJ9LHtuYW1lOiJsaWdodGVuIixkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUgbGlnaHRlciBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvcnMuIn0se25hbWU6ImNvbG9yLWRvZGdlIixkZXNjcmlwdGlvbjoiQnJpZ2h0ZW5zIHRoZSBiYWNrZHJvcCBjb2xvciB0byByZWZsZWN0IHRoZSBzb3VyY2UgY29sb3IuIn0se25hbWU6ImNvbG9yLWJ1cm4iLGRlc2NyaXB0aW9uOiJEYXJrZW5zIHRoZSBiYWNrZHJvcCBjb2xvciB0byByZWZsZWN0IHRoZSBzb3VyY2UgY29sb3IuIn0se25hbWU6ImhhcmQtbGlnaHQiLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIG9yIHNjcmVlbnMgdGhlIGNvbG9ycywgZGVwZW5kaW5nIG9uIHRoZSBzb3VyY2UgY29sb3IgdmFsdWUuIn0se25hbWU6InNvZnQtbGlnaHQiLGRlc2NyaXB0aW9uOiJEYXJrZW5zIG9yIGxpZ2h0ZW5zIHRoZSBjb2xvcnMsIGRlcGVuZGluZyBvbiB0aGUgc291cmNlIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJkaWZmZXJlbmNlIixkZXNjcmlwdGlvbjoiU3VidHJhY3RzIHRoZSBkYXJrZXIgb2YgdGhlIHR3byBjb25zdGl0dWVudCBjb2xvcnMgZnJvbSB0aGUgbGlnaHRlciBjb2xvci4uIn0se25hbWU6ImV4Y2x1c2lvbiIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGFuIGVmZmVjdCBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIERpZmZlcmVuY2UgbW9kZSBidXQgbG93ZXIgaW4gY29udHJhc3QuIn0se25hbWU6Imh1ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMwIiwiUzgiLCJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGh1ZSBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgc2F0dXJhdGlvbiBhbmQgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6InNhdHVyYXRpb24iLGJyb3dzZXJzOlsiRTc5IiwiRkYzMCIsIlM4IiwiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBzYXR1cmF0aW9uIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBodWUgYW5kIGx1bWlub3NpdHkgb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9LHtuYW1lOiJjb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjMwIiwiUzgiLCJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGh1ZSBhbmQgc2F0dXJhdGlvbiBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6Imx1bWlub3NpdHkiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMCIsIlM4IiwiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBsdW1pbm9zaXR5IG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBodWUgYW5kIHNhdHVyYXRpb24gb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9XSxzeW50YXg6IjxibGVuZC1tb2RlPiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1ibGVuZC1tb2RlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBibGVuZGluZyBtb2RlIG9mIGVhY2ggYmFja2dyb3VuZCBsYXllci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJhY2tncm91bmQtY2xpcCIsc3ludGF4OiI8Ym94PiMiLHJlbGV2YW5jZTo2OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jbGlwIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6ImJhY2tncm91bmQtY29sb3IiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYmFja2dyb3VuZC1pbWFnZSIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkNvdW50cyBhcyBhbiBpbWFnZSBsYXllciBidXQgZHJhd3Mgbm90aGluZy4ifV0sc3ludGF4OiI8YmctaW1hZ2U+IyIscmVsZXZhbmNlOjg5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWltYWdlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBiYWNrZ3JvdW5kIGltYWdlKHMpIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsImVudW0iXX0se25hbWU6ImJhY2tncm91bmQtb3JpZ2luIixzeW50YXg6Ijxib3g+IyIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLW9yaWdpbiJ9XSxkZXNjcmlwdGlvbjoiRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIGEgc2luZ2xlIGJveCwgc3BlY2lmaWVzIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIEZvciBlbGVtZW50cyByZW5kZXJlZCBhcyBtdWx0aXBsZSBib3hlcyAoZS5nLiwgaW5saW5lIGJveGVzIG9uIHNldmVyYWwgbGluZXMsIGJveGVzIG9uIHNldmVyYWwgcGFnZXMpIHNwZWNpZmllcyB3aGljaCBib3hlcyAnYm94LWRlY29yYXRpb24tYnJlYWsnIG9wZXJhdGVzIG9uIHRvIGRldGVybWluZSB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhKHMpLiIscmVzdHJpY3Rpb25zOlsiYm94Il19LHtuYW1lOiJiYWNrZ3JvdW5kLXBvc2l0aW9uIixzeW50YXg6IjxiZy1wb3NpdGlvbj4jIixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZShzKSAoYWZ0ZXIgYW55IHJlc2l6aW5nKSB3aXRoaW4gdGhlaXIgY29ycmVzcG9uZGluZyBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJhY2tncm91bmQtcG9zaXRpb24teCIsdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnNTAlJyAoJ2xlZnQgNTAlJykgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlzIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkLCBvciAnNTAlJyAoJ3RvcCA1MCUnKSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIGl0IGlzLiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnMCUnIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIGxlZnQgZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnMTAwJScgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgcmlnaHQgZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIn1dLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgY2VudGVyIHwgWyBbIGxlZnQgfCByaWdodCB8IHgtc3RhcnQgfCB4LWVuZCBdPyA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBdISBdIyIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLXBvc2l0aW9uLXgifV0sZGVzY3JpcHRpb246IklmIGJhY2tncm91bmQgaW1hZ2VzIGhhdmUgYmVlbiBzcGVjaWZpZWQsIHRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIHRoZWlyIGluaXRpYWwgcG9zaXRpb24gKGFmdGVyIGFueSByZXNpemluZykgd2l0aGluIHRoZWlyIGNvcnJlc3BvbmRpbmcgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYmFja2dyb3VuZC1wb3NpdGlvbi15Iix2YWx1ZXM6W3tuYW1lOiJib3R0b20iLGRlc2NyaXB0aW9uOiJFcXVpdmFsZW50IHRvICcxMDAlJyBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgYm90dG9tIGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJFcXVpdmFsZW50IHRvICc1MCUnICgnbGVmdCA1MCUnKSBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaWYgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaXMgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQsIG9yICc1MCUnICgndG9wIDUwJScpIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgaXQgaXMuIn0se25hbWU6InRvcCIsZGVzY3JpcHRpb246IkVxdWl2YWxlbnQgdG8gJzAlJyBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgdG9wIGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9XSxzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIGNlbnRlciB8IFsgWyB0b3AgfCBib3R0b20gfCB5LXN0YXJ0IHwgeS1lbmQgXT8gPGxlbmd0aC1wZXJjZW50YWdlPj8gXSEgXSMiLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1wb3NpdGlvbi15In1dLGRlc2NyaXB0aW9uOiJJZiBiYWNrZ3JvdW5kIGltYWdlcyBoYXZlIGJlZW4gc3BlY2lmaWVkLCB0aGlzIHByb3BlcnR5IHNwZWNpZmllcyB0aGVpciBpbml0aWFsIHBvc2l0aW9uIChhZnRlciBhbnkgcmVzaXppbmcpIHdpdGhpbiB0aGVpciBjb3JyZXNwb25kaW5nIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJhY2tncm91bmQtcmVwZWF0Iix2YWx1ZXM6W10sc3ludGF4OiI8cmVwZWF0LXN0eWxlPiMiLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1yZXBlYXQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYmFja2dyb3VuZCBpbWFnZXMgYXJlIHRpbGVkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIHNpemVkIGFuZCBwb3NpdGlvbmVkLiIscmVzdHJpY3Rpb25zOlsicmVwZWF0Il19LHtuYW1lOiJiYWNrZ3JvdW5kLXNpemUiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXNvbHZlZCBieSB1c2luZyB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyByYXRpbyBhbmQgdGhlIHNpemUgb2YgdGhlIG90aGVyIGRpbWVuc2lvbiwgb3IgZmFpbGluZyB0aGF0LCB1c2luZyB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyBzaXplLCBvciBmYWlsaW5nIHRoYXQsIHRyZWF0aW5nIGl0IGFzIDEwMCUuIn0se25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBsYXJnZXN0IHNpemUgc3VjaCB0aGF0IGJvdGggaXRzIHdpZHRoIGFuZCBpdHMgaGVpZ2h0IGNhbiBmaXQgaW5zaWRlIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiU2NhbGUgdGhlIGltYWdlLCB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChpZiBhbnkpLCB0byB0aGUgc21hbGxlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGNvbXBsZXRlbHkgY292ZXIgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifV0sc3ludGF4OiI8Ymctc2l6ZT4jIixyZWxldmFuY2U6ODUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJlaGF2aW9yIixicm93c2VyczpbIklFNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSUUgb25seS4gVXNlZCB0byBleHRlbmQgYmVoYXZpb3JzIG9mIHRoZSBicm93c2VyLiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJibG9jay1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8J3dpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmxvY2stc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gb3Bwb3NpdGUgdGhhdCBvZiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlciIsc3ludGF4OiI8bGluZS13aWR0aD4gfHwgPGxpbmUtc3R5bGU+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSwgYW5kIGNvbG9yLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IHx8IDwnYm9yZGVyLXRvcC1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWJvdHRvbScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1ibG9jay1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IHx8IDwnYm9yZGVyLXRvcC1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItdG9wJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZC1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1lbmQtY29sb3IifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1ib3R0b20tY29sb3InLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItdG9wLWNvbG9yJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1ibG9jay1lbmQtc3R5bGUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atc3R5bGUnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stZW5kLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItYm90dG9tLXN0eWxlJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0YXJ0LXN0eWxlIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0YXJ0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItdG9wLXN0eWxlJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZC13aWR0aCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1lbmQtd2lkdGgifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1ib3R0b20td2lkdGgnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItYmxvY2stc3RhcnQtd2lkdGgiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stc3RhcnQtd2lkdGgifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci10b3Atd2lkdGgnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItYm90dG9tIixzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjg5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItYm90dG9tLWNvbG9yIixzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NzIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20tY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NzUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHJhZGlpIG9mIHRoZSBib3R0b20gbGVmdCBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjc1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgcmFkaWkgb2YgdGhlIGJvdHRvbSByaWdodCBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci1ib3R0b20tc3R5bGUiLHN5bnRheDoiPGxpbmUtc3R5bGU+IixyZWxldmFuY2U6NTkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20tc3R5bGUifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWJvdHRvbS13aWR0aCIsc3ludGF4OiI8bGluZS13aWR0aD4iLHJlbGV2YW5jZTo2MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJvdHRvbS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgdGhpY2tuZXNzIG9mIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLWNvbGxhcHNlIix2YWx1ZXM6W3tuYW1lOiJjb2xsYXBzZSIsZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIGNvbGxhcHNpbmcgYm9yZGVycyBtb2RlbC4ifSx7bmFtZToic2VwYXJhdGUiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBzZXBhcmF0ZWQgYm9yZGVycyBib3JkZXIgbW9kZWwuIn1dLHN5bnRheDoiY29sbGFwc2UgfCBzZXBhcmF0ZSIscmVsZXZhbmNlOjc1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItY29sbGFwc2UifV0sZGVzY3JpcHRpb246IlNlbGVjdHMgYSB0YWJsZSdzIGJvcmRlciBtb2RlbC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJvcmRlci1jb2xvciIsdmFsdWVzOltdLHN5bnRheDoiPGNvbG9yPnsxLDR9IixyZWxldmFuY2U6ODcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNvbG9yIG9mIHRoZSBib3JkZXIgYXJvdW5kIGFsbCBmb3VyIGVkZ2VzIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWltYWdlIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSWYgJ2F1dG8nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBib3JkZXIgaW1hZ2Ugd2lkdGggaXMgdGhlIGludHJpbnNpYyB3aWR0aCBvciBoZWlnaHQgKHdoaWNoZXZlciBpcyBhcHBsaWNhYmxlKSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbWFnZSBzbGljZS4gSWYgdGhlIGltYWdlIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIGludHJpbnNpYyBkaW1lbnNpb24gdGhlbiB0aGUgY29ycmVzcG9uZGluZyBib3JkZXItd2lkdGggaXMgdXNlZCBpbnN0ZWFkLiJ9LHtuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBtaWRkbGUgcGFydCBvZiB0aGUgYm9yZGVyLWltYWdlIHRvIGJlIHByZXNlcnZlZC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlVzZSB0aGUgYm9yZGVyIHN0eWxlcy4ifSx7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToidXJsKCkifV0sc3ludGF4OiI8J2JvcmRlci1pbWFnZS1zb3VyY2UnPiB8fCA8J2JvcmRlci1pbWFnZS1zbGljZSc+IFsgLyA8J2JvcmRlci1pbWFnZS13aWR0aCc+IHwgLyA8J2JvcmRlci1pbWFnZS13aWR0aCc+PyAvIDwnYm9yZGVyLWltYWdlLW91dHNldCc+IF0/IHx8IDwnYm9yZGVyLWltYWdlLXJlcGVhdCc+IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbWFnZSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdib3JkZXItaW1hZ2Utc291cmNlJywgJ2JvcmRlci1pbWFnZS1zbGljZScsICdib3JkZXItaW1hZ2Utd2lkdGgnLCAnYm9yZGVyLWltYWdlLW91dHNldCcgYW5kICdib3JkZXItaW1hZ2UtcmVwZWF0Jy4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJ1cmwiLCJlbnVtIl19LHtuYW1lOiJib3JkZXItaW1hZ2Utb3V0c2V0IixzeW50YXg6IlsgPGxlbmd0aD4gfCA8bnVtYmVyPiBdezEsNH0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWltYWdlLW91dHNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHZhbHVlcyBzcGVjaWZ5IHRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGJvcmRlciBpbWFnZSBhcmVhIGV4dGVuZHMgYmV5b25kIHRoZSBib3JkZXIgYm94IG9uIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIGFuZCBsZWZ0IHNpZGVzIHJlc3BlY3RpdmVseS4gSWYgdGhlIGZvdXJ0aCB2YWx1ZSBpcyBhYnNlbnQsIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBzZWNvbmQuIElmIHRoZSB0aGlyZCBvbmUgaXMgYWxzbyBhYnNlbnQsIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdC4gSWYgdGhlIHNlY29uZCBvbmUgaXMgYWxzbyBhYnNlbnQsIGl0IGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdC4gTnVtYmVycyByZXByZXNlbnQgbXVsdGlwbGVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsIm51bWJlciJdfSx7bmFtZToiYm9yZGVyLWltYWdlLXJlcGVhdCIsdmFsdWVzOlt7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifV0sc3ludGF4OiJbIHN0cmV0Y2ggfCByZXBlYXQgfCByb3VuZCB8IHNwYWNlIF17MSwyfSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW1hZ2UtcmVwZWF0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IHRoZSBpbWFnZXMgZm9yIHRoZSBzaWRlcyBhbmQgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXIgaW1hZ2UgYXJlIHNjYWxlZCBhbmQgdGlsZWQuIElmIHRoZSBzZWNvbmQga2V5d29yZCBpcyBhYnNlbnQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIGZpcnN0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYm9yZGVyLWltYWdlLXNsaWNlIix2YWx1ZXM6W3tuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBtaWRkbGUgcGFydCBvZiB0aGUgYm9yZGVyLWltYWdlIHRvIGJlIHByZXNlcnZlZC4ifV0sc3ludGF4OiI8bnVtYmVyLXBlcmNlbnRhZ2U+ezEsNH0gJiYgZmlsbD8iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWltYWdlLXNsaWNlIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaW53YXJkIG9mZnNldHMgZnJvbSB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBhbmQgbGVmdCBlZGdlcyBvZiB0aGUgaW1hZ2UsIGRpdmlkaW5nIGl0IGludG8gbmluZSByZWdpb25zOiBmb3VyIGNvcm5lcnMsIGZvdXIgZWRnZXMgYW5kIGEgbWlkZGxlLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm9yZGVyLWltYWdlLXNvdXJjZSIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlVzZSB0aGUgYm9yZGVyIHN0eWxlcy4ifV0sc3ludGF4OiJub25lIHwgPGltYWdlPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW1hZ2Utc291cmNlIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYW4gaW1hZ2UgdG8gdXNlIGluc3RlYWQgb2YgdGhlIGJvcmRlciBzdHlsZXMgZ2l2ZW4gYnkgdGhlICdib3JkZXItc3R5bGUnIHByb3BlcnRpZXMgYW5kIGFzIGFuIGFkZGl0aW9uYWwgYmFja2dyb3VuZCBsYXllciBmb3IgdGhlIGVsZW1lbnQuIElmIHRoZSB2YWx1ZSBpcyAnbm9uZScgb3IgaWYgdGhlIGltYWdlIGNhbm5vdCBiZSBkaXNwbGF5ZWQsIHRoZSBib3JkZXIgc3R5bGVzIHdpbGwgYmUgdXNlZC4iLHJlc3RyaWN0aW9uczpbImltYWdlIl19LHtuYW1lOiJib3JkZXItaW1hZ2Utd2lkdGgiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyIGltYWdlIHdpZHRoIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgaGVpZ2h0ICh3aGljaGV2ZXIgaXMgYXBwbGljYWJsZSkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1hZ2Ugc2xpY2UuIElmIHRoZSBpbWFnZSBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBpbnRyaW5zaWMgZGltZW5zaW9uIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoIGlzIHVzZWQgaW5zdGVhZC4ifV0sc3ludGF4OiJbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCA8bnVtYmVyPiB8IGF1dG8gXXsxLDR9IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbWFnZS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvdXIgdmFsdWVzIG9mICdib3JkZXItaW1hZ2Utd2lkdGgnIHNwZWNpZnkgb2Zmc2V0cyB0aGF0IGFyZSB1c2VkIHRvIGRpdmlkZSB0aGUgYm9yZGVyIGltYWdlIGFyZWEgaW50byBuaW5lIHBhcnRzLiBUaGV5IHJlcHJlc2VudCBpbndhcmQgZGlzdGFuY2VzIGZyb20gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQgc2lkZXMgb2YgdGhlIGFyZWEsIHJlc3BlY3RpdmVseS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXJpZ2h0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IHx8IDwnYm9yZGVyLXRvcC1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWxlZnQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItaW5saW5lLWVuZC1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtZW5kLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItcmlnaHQtY29sb3InLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1zdGFydC1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtc3RhcnQtY29sb3IifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1sZWZ0LWNvbG9yJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kLXN0eWxlIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1lbmQtc3R5bGUifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1yaWdodC1zdHlsZScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtc3RhcnQtc3R5bGUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atc3R5bGUnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLXN0YXJ0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItbGVmdC1zdHlsZScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kLXdpZHRoIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1lbmQtd2lkdGgifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1yaWdodC13aWR0aCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGgiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItbGVmdC13aWR0aCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1sZWZ0IixzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjgzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItbGVmdCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIGJvcmRlciB3aWR0aCwgc3R5bGUgYW5kIGNvbG9yIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItbGVmdC1jb2xvciIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NjUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1sZWZ0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgbGVmdCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWxlZnQtc3R5bGUiLHN5bnRheDoiPGxpbmUtc3R5bGU+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1sZWZ0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgbGVmdCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItbGVmdC13aWR0aCIsc3ludGF4OiI8bGluZS13aWR0aD4iLHJlbGV2YW5jZTo1OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWxlZnQtd2lkdGgifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHRoaWNrbmVzcyBvZiB0aGUgbGVmdCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSw0fSBbIC8gPGxlbmd0aC1wZXJjZW50YWdlPnsxLDR9IF0/IixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1yYWRpdXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHJhZGlpIG9mIHRoZSBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci1yaWdodCIsc3ludGF4OiI8bGluZS13aWR0aD4gfHwgPGxpbmUtc3R5bGU+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJpZ2h0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IiLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1yaWdodC1jb2xvciIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NjUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1yaWdodC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIHJpZ2h0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItcmlnaHQtc3R5bGUiLHN5bnRheDoiPGxpbmUtc3R5bGU+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1yaWdodC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgc3R5bGUgb2YgdGhlIHJpZ2h0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci1yaWdodC13aWR0aCIsc3ludGF4OiI8bGluZS13aWR0aD4iLHJlbGV2YW5jZTo1OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJpZ2h0LXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSB0aGlja25lc3Mgb2YgdGhlIHJpZ2h0IGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1zcGFjaW5nIixzeW50YXg6IjxsZW5ndGg+IDxsZW5ndGg+PyIscmVsZXZhbmNlOjY4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItc3BhY2luZyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGxlbmd0aHMgc3BlY2lmeSB0aGUgZGlzdGFuY2UgdGhhdCBzZXBhcmF0ZXMgYWRqb2luaW5nIGNlbGwgYm9yZGVycy4gSWYgb25lIGxlbmd0aCBpcyBzcGVjaWZpZWQsIGl0IGdpdmVzIGJvdGggdGhlIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHNwYWNpbmcuIElmIHR3byBhcmUgc3BlY2lmaWVkLCB0aGUgZmlyc3QgZ2l2ZXMgdGhlIGhvcml6b250YWwgc3BhY2luZyBhbmQgdGhlIHNlY29uZCB0aGUgdmVydGljYWwgc3BhY2luZy4gTGVuZ3RocyBtYXkgbm90IGJlIG5lZ2F0aXZlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiJib3JkZXItc3R5bGUiLHZhbHVlczpbXSxzeW50YXg6IjxsaW5lLXN0eWxlPnsxLDR9IixyZWxldmFuY2U6ODEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHN0eWxlIG9mIHRoZSBib3JkZXIgYXJvdW5kIGVkZ2VzIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItdG9wIixzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjg4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IiLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci10b3AtY29sb3IiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjcyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgdG9wIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItdG9wLWxlZnQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjc2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLWxlZnQtcmFkaXVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSByYWRpaSBvZiB0aGUgdG9wIGxlZnQgb3V0ZXIgYm9yZGVyIGVkZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHJhZGlpIG9mIHRoZSB0b3AgcmlnaHQgb3V0ZXIgYm9yZGVyIGVkZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3JkZXItdG9wLXN0eWxlIixzeW50YXg6IjxsaW5lLXN0eWxlPiIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgdG9wIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci10b3Atd2lkdGgiLHN5bnRheDoiPGxpbmUtd2lkdGg+IixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci10b3Atd2lkdGgifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHRoaWNrbmVzcyBvZiB0aGUgdG9wIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci13aWR0aCIsdmFsdWVzOltdLHN5bnRheDoiPGxpbmUtd2lkdGg+ezEsNH0iLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgdGhhdCBzZXRzIHRoZSBmb3VyICdib3JkZXItKi13aWR0aCcgcHJvcGVydGllcy4gSWYgaXQgaGFzIGZvdXIgdmFsdWVzLCB0aGV5IHNldCB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgaW4gdGhhdCBvcmRlci4gSWYgbGVmdCBpcyBtaXNzaW5nLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodDsgaWYgYm90dG9tIGlzIG1pc3NpbmcsIGl0IGlzIHRoZSBzYW1lIGFzIHRvcDsgaWYgcmlnaHQgaXMgbWlzc2luZywgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm90dG9tIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvdHRvbSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmYXIgYW4gYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveCdzIGJvdHRvbSBtYXJnaW4gZWRnZSBpcyBvZmZzZXQgYWJvdmUgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3gncyAnY29udGFpbmluZyBibG9jaycuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3gtZGVjb3JhdGlvbi1icmVhayIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzciLCJDMjIiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJjbG9uZSIsZGVzY3JpcHRpb246IkVhY2ggYm94IGlzIGluZGVwZW5kZW50bHkgd3JhcHBlZCB3aXRoIHRoZSBib3JkZXIgYW5kIHBhZGRpbmcuIn0se25hbWU6InNsaWNlIixkZXNjcmlwdGlvbjoiVGhlIGVmZmVjdCBpcyBhcyB0aG91Z2ggdGhlIGVsZW1lbnQgd2VyZSByZW5kZXJlZCB3aXRoIG5vIGJyZWFrcyBwcmVzZW50LCBhbmQgdGhlbiBzbGljZWQgYnkgdGhlIGJyZWFrcyBhZnRlcndhcmQuIn1dLHN5bnRheDoic2xpY2UgfCBjbG9uZSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtZGVjb3JhdGlvbi1icmVhayJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgaW5kaXZpZHVhbCBib3hlcyBhcmUgdHJlYXRlZCBhcyBicm9rZW4gcGllY2VzIG9mIG9uZSBjb250aW51b3VzIGJveCwgb3Igd2hldGhlciBlYWNoIGJveCBpcyBpbmRpdmlkdWFsbHkgd3JhcHBlZCB3aXRoIHRoZSBib3JkZXIgYW5kIHBhZGRpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJib3gtc2hhZG93Iix2YWx1ZXM6W3tuYW1lOiJpbnNldCIsZGVzY3JpcHRpb246IkNoYW5nZXMgdGhlIGRyb3Agc2hhZG93IGZyb20gYW4gb3V0ZXIgc2hhZG93IChvbmUgdGhhdCBzaGFkb3dzIHRoZSBib3ggb250byB0aGUgY2FudmFzLCBhcyBpZiBpdCB3ZXJlIGxpZnRlZCBhYm92ZSB0aGUgY2FudmFzKSB0byBhbiBpbm5lciBzaGFkb3cgKG9uZSB0aGF0IHNoYWRvd3MgdGhlIGNhbnZhcyBvbnRvIHRoZSBib3gsIGFzIGlmIHRoZSBib3ggd2VyZSBjdXQgb3V0IG9mIHRoZSBjYW52YXMgYW5kIHNoaWZ0ZWQgYmVoaW5kIGl0KS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNoYWRvdy4ifV0sc3ludGF4OiJub25lIHwgPHNoYWRvdz4jIixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1zaGFkb3cifV0sZGVzY3JpcHRpb246IkF0dGFjaGVzIG9uZSBvciBtb3JlIGRyb3Atc2hhZG93cyB0byB0aGUgYm94LiBUaGUgcHJvcGVydHkgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBzaGFkb3dzLCBlYWNoIHNwZWNpZmllZCBieSAyLTQgbGVuZ3RoIHZhbHVlcywgYW4gb3B0aW9uYWwgY29sb3IsIGFuZCBhbiBvcHRpb25hbCAnaW5zZXQnIGtleXdvcmQuIE9taXR0ZWQgbGVuZ3RocyBhcmUgMDsgb21pdHRlZCBjb2xvcnMgYXJlIGEgdXNlciBhZ2VudCBjaG9zZW4gY29sb3IuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJjb2xvciIsImVudW0iXX0se25hbWU6ImJveC1zaXppbmciLHZhbHVlczpbe25hbWU6ImJvcmRlci1ib3giLGRlc2NyaXB0aW9uOiJUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgb24gdGhpcyBlbGVtZW50IGRldGVybWluZSB0aGUgYm9yZGVyIGJveCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudC1ib3giLGRlc2NyaXB0aW9uOiJCZWhhdmlvciBvZiB3aWR0aCBhbmQgaGVpZ2h0IGFzIHNwZWNpZmllZCBieSBDU1MyLjEuIFRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBhcHBseSB0byB0aGUgd2lkdGggYW5kIGhlaWdodCByZXNwZWN0aXZlbHkgb2YgdGhlIGNvbnRlbnQgYm94IG9mIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6ImNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtc2l6aW5nIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSAnd2lkdGgnIGFuZCAnaGVpZ2h0JyBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYnJlYWstYWZ0ZXIiLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicGFnZSIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxzeW50YXg6ImF1dG8gfCBhdm9pZCB8IGFsd2F5cyB8IGFsbCB8IGF2b2lkLXBhZ2UgfCBwYWdlIHwgbGVmdCB8IHJpZ2h0IHwgcmVjdG8gfCB2ZXJzbyB8IGF2b2lkLWNvbHVtbiB8IGNvbHVtbiB8IGF2b2lkLXJlZ2lvbiB8IHJlZ2lvbiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uL3JlZ2lvbiBicmVhayBiZWhhdmlvciBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJyZWFrLWJlZm9yZSIsdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHN5bnRheDoiYXV0byB8IGF2b2lkIHwgYWx3YXlzIHwgYWxsIHwgYXZvaWQtcGFnZSB8IHBhZ2UgfCBsZWZ0IHwgcmlnaHQgfCByZWN0byB8IHZlcnNvIHwgYXZvaWQtY29sdW1uIHwgY29sdW1uIHwgYXZvaWQtcmVnaW9uIHwgcmVnaW9uIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4vcmVnaW9uIGJyZWFrIGJlaGF2aW9yIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImJyZWFrLWluc2lkZSIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkltcG9zZSBubyBhZGRpdGlvbmFsIGJyZWFraW5nIGNvbnN0cmFpbnRzIHdpdGhpbiB0aGUgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGJyZWFrcyB3aXRoaW4gdGhlIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgd2l0aGluIHRoZSBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgd2l0aGluIHRoZSBib3guIn1dLHN5bnRheDoiYXV0byB8IGF2b2lkIHwgYXZvaWQtcGFnZSB8IGF2b2lkLWNvbHVtbiB8IGF2b2lkLXJlZ2lvbiIscmVsZXZhbmNlOjUxLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uL3JlZ2lvbiBicmVhayBiZWhhdmlvciBpbnNpZGUgdGhlIHByaW5jaXBhbCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjYXB0aW9uLXNpZGUiLHZhbHVlczpbe25hbWU6ImJvdHRvbSIsZGVzY3JpcHRpb246IlBvc2l0aW9ucyB0aGUgY2FwdGlvbiBib3ggYmVsb3cgdGhlIHRhYmxlIGJveC4ifSx7bmFtZToidG9wIixkZXNjcmlwdGlvbjoiUG9zaXRpb25zIHRoZSBjYXB0aW9uIGJveCBhYm92ZSB0aGUgdGFibGUgYm94LiJ9XSxzeW50YXg6InRvcCB8IGJvdHRvbSB8IGJsb2NrLXN0YXJ0IHwgYmxvY2stZW5kIHwgaW5saW5lLXN0YXJ0IHwgaW5saW5lLWVuZCIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jYXB0aW9uLXNpZGUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgcG9zaXRpb24gb2YgdGhlIGNhcHRpb24gYm94IHdpdGggcmVzcGVjdCB0byB0aGUgdGFibGUgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY2FyZXQtY29sb3IiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxMS4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IHNlbGVjdHMgYW4gYXBwcm9wcmlhdGUgY29sb3IgZm9yIHRoZSBjYXJldC4gVGhpcyBpcyBnZW5lcmFsbHkgY3VycmVudGNvbG9yLCBidXQgdGhlIHVzZXIgYWdlbnQgbWF5IGNob29zZSBhIGRpZmZlcmVudCBjb2xvciB0byBlbnN1cmUgZ29vZCB2aXNpYmlsaXR5IGFuZCBjb250cmFzdCB3aXRoIHRoZSBzdXJyb3VuZGluZyBjb250ZW50LCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2YWx1ZSBvZiBjdXJyZW50Y29sb3IsIHRoZSBiYWNrZ3JvdW5kLCBzaGFkb3dzLCBhbmQgb3RoZXIgZmFjdG9ycy4ifV0sc3ludGF4OiJhdXRvIHwgPGNvbG9yPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jYXJldC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGNvbG9yIG9mIHRoZSB0ZXh0IGluc2VydGlvbiBpbmRpY2F0b3IuIixyZXN0cmljdGlvbnM6WyJjb2xvciIsImVudW0iXX0se25hbWU6ImNsZWFyIix2YWx1ZXM6W3tuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiVGhlIGNsZWFyYW5jZSBvZiB0aGUgZ2VuZXJhdGVkIGJveCBpcyBzZXQgdG8gdGhlIGFtb3VudCBuZWNlc3NhcnkgdG8gcGxhY2UgdGhlIHRvcCBib3JkZXIgZWRnZSBiZWxvdyB0aGUgYm90dG9tIG91dGVyIGVkZ2Ugb2YgYW55IHJpZ2h0LWZsb2F0aW5nIGFuZCBsZWZ0LWZsb2F0aW5nIGJveGVzIHRoYXQgcmVzdWx0ZWQgZnJvbSBlbGVtZW50cyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgZG9jdW1lbnQuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgY2xlYXJhbmNlIG9mIHRoZSBnZW5lcmF0ZWQgYm94IGlzIHNldCB0byB0aGUgYW1vdW50IG5lY2Vzc2FyeSB0byBwbGFjZSB0aGUgdG9wIGJvcmRlciBlZGdlIGJlbG93IHRoZSBib3R0b20gb3V0ZXIgZWRnZSBvZiBhbnkgbGVmdC1mbG9hdGluZyBib3hlcyB0aGF0IHJlc3VsdGVkIGZyb20gZWxlbWVudHMgZWFybGllciBpbiB0aGUgc291cmNlIGRvY3VtZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gY29uc3RyYWludCBvbiB0aGUgYm94J3MgcG9zaXRpb24gd2l0aCByZXNwZWN0IHRvIGZsb2F0cy4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJUaGUgY2xlYXJhbmNlIG9mIHRoZSBnZW5lcmF0ZWQgYm94IGlzIHNldCB0byB0aGUgYW1vdW50IG5lY2Vzc2FyeSB0byBwbGFjZSB0aGUgdG9wIGJvcmRlciBlZGdlIGJlbG93IHRoZSBib3R0b20gb3V0ZXIgZWRnZSBvZiBhbnkgcmlnaHQtZmxvYXRpbmcgYm94ZXMgdGhhdCByZXN1bHRlZCBmcm9tIGVsZW1lbnRzIGVhcmxpZXIgaW4gdGhlIHNvdXJjZSBkb2N1bWVudC4ifV0sc3ludGF4OiJub25lIHwgbGVmdCB8IHJpZ2h0IHwgYm90aCB8IGlubGluZS1zdGFydCB8IGlubGluZS1lbmQiLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY2xlYXIifV0sZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGljaCBzaWRlcyBvZiBhbiBlbGVtZW50J3MgYm94KGVzKSBtYXkgbm90IGJlIGFkamFjZW50IHRvIGFuIGVhcmxpZXIgZmxvYXRpbmcgYm94LiBUaGUgJ2NsZWFyJyBwcm9wZXJ0eSBkb2VzIG5vdCBjb25zaWRlciBmbG9hdHMgaW5zaWRlIHRoZSBlbGVtZW50IGl0c2VsZiBvciBpbiBvdGhlciBibG9jayBmb3JtYXR0aW5nIGNvbnRleHRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY2xpcCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGRvZXMgbm90IGNsaXAuIn0se25hbWU6InJlY3QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBvZmZzZXRzIGZyb20gdGhlIGVkZ2VzIG9mIHRoZSBib3JkZXIgYm94LiJ9XSxzeW50YXg6IjxzaGFwZT4gfCBhdXRvIixyZWxldmFuY2U6NzUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NsaXAifV0sZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIFVzZSB0aGUgJ2NsaXAtcGF0aCcgcHJvcGVydHkgd2hlbiBzdXBwb3J0IGFsbG93cy4gRGVmaW5lcyB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mIGFuIGVsZW1lbnTigJlzIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNsaXAtcGF0aCIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGNsaXBwaW5nIHBhdGggZ2V0cyBjcmVhdGVkLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IlJlZmVyZW5jZXMgYSA8Y2xpcFBhdGg+IGVsZW1lbnQgdG8gY3JlYXRlIGEgY2xpcHBpbmcgcGF0aC4ifV0sc3ludGF4OiI8Y2xpcC1zb3VyY2U+IHwgWyA8YmFzaWMtc2hhcGU+IHx8IDxnZW9tZXRyeS1ib3g+IF0gfCBub25lIixyZWxldmFuY2U6NjIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NsaXAtcGF0aCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xpcHBpbmcgcGF0aCB3aGVyZSBldmVyeXRoaW5nIGluc2lkZSB0aGUgcGF0aCBpcyB2aXNpYmxlIGFuZCBldmVyeXRoaW5nIG91dHNpZGUgaXMgY2xpcHBlZCBvdXQuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJzaGFwZSIsImdlb21ldHJ5LWJveCIsImVudW0iXX0se25hbWU6ImNsaXAtcnVsZSIsYnJvd3NlcnM6WyJFIiwiQzUiLCJGRjMiLCJJRTEwIiwiTzkiLCJTNiJdLHZhbHVlczpbe25hbWU6ImV2ZW5vZGQiLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSDigJhpbnNpZGVuZXNz4oCZIG9mIGEgcG9pbnQgb24gdGhlIGNhbnZhcyBieSBkcmF3aW5nIGEgcmF5IGZyb20gdGhhdCBwb2ludCB0byBpbmZpbml0eSBpbiBhbnkgZGlyZWN0aW9uIGFuZCBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHBhdGggc2VnbWVudHMgZnJvbSB0aGUgZ2l2ZW4gc2hhcGUgdGhhdCB0aGUgcmF5IGNyb3NzZXMuIn0se25hbWU6Im5vbnplcm8iLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSDigJhpbnNpZGVuZXNz4oCZIG9mIGEgcG9pbnQgb24gdGhlIGNhbnZhcyBieSBkcmF3aW5nIGEgcmF5IGZyb20gdGhhdCBwb2ludCB0byBpbmZpbml0eSBpbiBhbnkgZGlyZWN0aW9uIGFuZCB0aGVuIGV4YW1pbmluZyB0aGUgcGxhY2VzIHdoZXJlIGEgc2VnbWVudCBvZiB0aGUgc2hhcGUgY3Jvc3NlcyB0aGUgcmF5LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgYWxnb3JpdGhtIHdoaWNoIGlzIHRvIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgcGFydHMgb2YgdGhlIGNhbnZhcyBhcmUgaW5jbHVkZWQgaW5zaWRlIHRoZSBzaGFwZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbG9yIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo5NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIGFuIGVsZW1lbnQncyB0ZXh0IixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIixicm93c2VyczpbIkUiLCJDNSIsIkZGMyIsIklFMTAiLCJPOSIsIlM2Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbG9yIG9wZXJhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCB0byBvY2N1ciBpbiBhIHBhcnRpY3VsYXIgY29sb3Igc3BhY2UuIn0se25hbWU6ImxpbmVhclJHQiIsZGVzY3JpcHRpb246IkNvbG9yIG9wZXJhdGlvbnMgc2hvdWxkIG9jY3VyIGluIHRoZSBsaW5lYXJpemVkIFJHQiBjb2xvciBzcGFjZS4ifSx7bmFtZToic1JHQiIsZGVzY3JpcHRpb246IkNvbG9yIG9wZXJhdGlvbnMgc2hvdWxkIG9jY3VyIGluIHRoZSBzUkdCIGNvbG9yIHNwYWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgY29sb3Igc3BhY2UgZm9yIGltYWdpbmcgb3BlcmF0aW9ucyBwZXJmb3JtZWQgdmlhIGZpbHRlciBlZmZlY3RzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY29sdW1uLWNvdW50Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYnkgdGhlICdjb2x1bW4td2lkdGgnIHByb3BlcnR5IGFuZCB0aGUgZWxlbWVudCB3aWR0aC4ifV0sc3ludGF4OiI8aW50ZWdlcj4gfCBhdXRvIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1jb3VudCJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBvcHRpbWFsIG51bWJlciBvZiBjb2x1bW5zIGludG8gd2hpY2ggdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgd2lsbCBiZSBmbG93ZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiY29sdW1uLWZpbGwiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGaWxscyBjb2x1bW5zIHNlcXVlbnRpYWxseS4ifSx7bmFtZToiYmFsYW5jZSIsZGVzY3JpcHRpb246IkJhbGFuY2UgY29udGVudCBlcXVhbGx5IGJldHdlZW4gY29sdW1ucywgaWYgcG9zc2libGUuIn1dLHN5bnRheDoiYXV0byB8IGJhbGFuY2UgfCBiYWxhbmNlLWFsbCIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tZmlsbCJ9XSxkZXNjcmlwdGlvbjoiSW4gY29udGludW91cyBtZWRpYSwgdGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgYmUgY29uc3VsdGVkIGlmIHRoZSBsZW5ndGggb2YgY29sdW1ucyBoYXMgYmVlbiBjb25zdHJhaW5lZC4gT3RoZXJ3aXNlLCBjb2x1bW5zIHdpbGwgYXV0b21hdGljYWxseSBiZSBiYWxhbmNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbHVtbi1nYXAiLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlVzZXIgYWdlbnQgc3BlY2lmaWMgYW5kIHR5cGljYWxseSBlcXVpdmFsZW50IHRvIDFlbS4ifV0sc3ludGF4OiJub3JtYWwgfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTQsZGVzY3JpcHRpb246IlNldHMgdGhlIGdhcCBiZXR3ZWVuIGNvbHVtbnMuIElmIHRoZXJlIGlzIGEgY29sdW1uIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLCBpdCB3aWxsIGFwcGVhciBpbiB0aGUgbWlkZGxlIG9mIHRoZSBnYXAuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJlbnVtIl19LHtuYW1lOiJjb2x1bW4tcnVsZSIsc3ludGF4OiI8J2NvbHVtbi1ydWxlLXdpZHRoJz4gfHwgPCdjb2x1bW4tcnVsZS1zdHlsZSc+IHx8IDwnY29sdW1uLXJ1bGUtY29sb3InPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tcnVsZSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nICdjb2x1bW4tcnVsZS13aWR0aCcsICdjb2x1bW4tcnVsZS1zdHlsZScsIGFuZCAnY29sdW1uLXJ1bGUtY29sb3InIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImNvbHVtbi1ydWxlLWNvbG9yIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLXJ1bGUtY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBjb2x1bW4gcnVsZSIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImNvbHVtbi1ydWxlLXN0eWxlIixzeW50YXg6IjwnYm9yZGVyLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLXJ1bGUtc3R5bGUifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiY29sdW1uLXJ1bGUtd2lkdGgiLHN5bnRheDoiPCdib3JkZXItd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tcnVsZS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgd2lkdGggb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiY29sdW1ucyIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8J2NvbHVtbi13aWR0aCc+IHx8IDwnY29sdW1uLWNvdW50Jz4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1ucyJ9XSxkZXNjcmlwdGlvbjoiQSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBib3RoICdjb2x1bW4td2lkdGgnIGFuZCAnY29sdW1uLWNvdW50Jy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJjb2x1bW4tc3BhbiIsdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgc3BhbnMgYWNyb3NzIGFsbCBjb2x1bW5zLiBDb250ZW50IGluIHRoZSBub3JtYWwgZmxvdyB0aGF0IGFwcGVhcnMgYmVmb3JlIHRoZSBlbGVtZW50IGlzIGF1dG9tYXRpY2FsbHkgYmFsYW5jZWQgYWNyb3NzIGFsbCBjb2x1bW5zIGJlZm9yZSB0aGUgZWxlbWVudCBhcHBlYXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBkb2VzIG5vdCBzcGFuIG11bHRpcGxlIGNvbHVtbnMuIn1dLHN5bnRheDoibm9uZSB8IGFsbCIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tc3BhbiJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbHVtbi13aWR0aCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IGF1dG8iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHdpZHRoIG9mIGNvbHVtbnMgaW4gbXVsdGljb2wgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJlbnVtIl19LHtuYW1lOiJjb250YWluIixicm93c2VyczpbIkU3OSIsIkZGNjkiLCJTMTUuNCIsIkM1MiIsIk80MCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgcHJvcGVydHkgaGFzIG5vIGVmZmVjdC4ifSx7bmFtZToic3RyaWN0IixkZXNjcmlwdGlvbjoiVHVybnMgb24gYWxsIGZvcm1zIG9mIGNvbnRhaW5tZW50IGZvciB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudCIsZGVzY3JpcHRpb246IkFsbCBjb250YWlubWVudCBydWxlcyBleGNlcHQgc2l6ZSBhcmUgYXBwbGllZCB0byB0aGUgZWxlbWVudC4ifSx7bmFtZToic2l6ZSIsZGVzY3JpcHRpb246IkZvciBwcm9wZXJ0aWVzIHRoYXQgY2FuIGhhdmUgZWZmZWN0cyBvbiBtb3JlIHRoYW4ganVzdCBhbiBlbGVtZW50IGFuZCBpdHMgZGVzY2VuZGFudHMsIHRob3NlIGVmZmVjdHMgZG9uJ3QgZXNjYXBlIHRoZSBjb250YWluaW5nIGVsZW1lbnQuIn0se25hbWU6ImxheW91dCIsZGVzY3JpcHRpb246IlR1cm5zIG9uIGxheW91dCBjb250YWlubWVudCBmb3IgdGhlIGVsZW1lbnQuIn0se25hbWU6InN0eWxlIixkZXNjcmlwdGlvbjoiVHVybnMgb24gc3R5bGUgY29udGFpbm1lbnQgZm9yIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJwYWludCIsZGVzY3JpcHRpb246IlR1cm5zIG9uIHBhaW50IGNvbnRhaW5tZW50IGZvciB0aGUgZWxlbWVudC4ifV0sc3ludGF4OiJub25lIHwgc3RyaWN0IHwgY29udGVudCB8IFsgc2l6ZSB8fCBsYXlvdXQgfHwgc3R5bGUgfHwgcGFpbnQgXSIscmVsZXZhbmNlOjU5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb250YWluIn1dLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhbiBlbGVtZW50IGFuZCBpdHMgY29udGVudHMgYXJlLCBhcyBtdWNoIGFzIHBvc3NpYmxlLCBpbmRlcGVuZGVudCBvZiB0aGUgcmVzdCBvZiB0aGUgZG9jdW1lbnQgdHJlZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbnRlbnQiLHZhbHVlczpbe25hbWU6ImF0dHIoKSIsZGVzY3JpcHRpb246IlRoZSBhdHRyKG4pIGZ1bmN0aW9uIHJldHVybnMgYXMgYSBzdHJpbmcgdGhlIHZhbHVlIG9mIGF0dHJpYnV0ZSBuIGZvciB0aGUgc3ViamVjdCBvZiB0aGUgc2VsZWN0b3IuIn0se25hbWU6ImNvdW50ZXIobmFtZSkiLGRlc2NyaXB0aW9uOiJDb3VudGVycyBhcmUgZGVub3RlZCBieSBpZGVudGlmaWVycyAoc2VlIHRoZSAnY291bnRlci1pbmNyZW1lbnQnIGFuZCAnY291bnRlci1yZXNldCcgcHJvcGVydGllcykuIn0se25hbWU6Imljb24iLGRlc2NyaXB0aW9uOiJUaGUgKHBzZXVkby0pZWxlbWVudCBpcyByZXBsYWNlZCBpbiBpdHMgZW50aXJldHkgYnkgdGhlIHJlc291cmNlIHJlZmVyZW5jZWQgYnkgaXRzICdpY29uJyBwcm9wZXJ0eSwgYW5kIHRyZWF0ZWQgYXMgYSByZXBsYWNlZCBlbGVtZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiT24gZWxlbWVudHMsIHRoaXMgaW5oaWJpdHMgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50IGZyb20gYmVpbmcgcmVuZGVyZWQgYXMgY2hpbGRyZW4gb2YgdGhpcyBlbGVtZW50LCBhcyBpZiB0aGUgZWxlbWVudCB3YXMgZW1wdHkuIE9uIHBzZXVkby1lbGVtZW50cyBpdCBjYXVzZXMgdGhlIHBzZXVkby1lbGVtZW50IHRvIGhhdmUgbm8gY29udGVudC4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtY29udGVudC8jY29udGVudCBmb3IgY29tcHV0YXRpb24gcnVsZXMuIn0se25hbWU6InVybCgpIn1dLHN5bnRheDoibm9ybWFsIHwgbm9uZSB8IFsgPGNvbnRlbnQtcmVwbGFjZW1lbnQ+IHwgPGNvbnRlbnQtbGlzdD4gXSBbLyBbIDxzdHJpbmc+IHwgPGNvdW50ZXI+IF0rIF0/IixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRlbnQifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hpY2ggcGFnZS1iYXNlZCBvY2N1cnJlbmNlIG9mIGEgZ2l2ZW4gZWxlbWVudCBpcyBhcHBsaWVkIHRvIGEgY291bnRlciBvciBzdHJpbmcgdmFsdWUuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciLCJ1cmwiXX0se25hbWU6ImNvdW50ZXItaW5jcmVtZW50Iix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhpcyBlbGVtZW50IGRvZXMgbm90IGFsdGVyIHRoZSB2YWx1ZSBvZiBhbnkgY291bnRlcnMuIn1dLHN5bnRheDoiWyA8Y291bnRlci1uYW1lPiA8aW50ZWdlcj4/IF0rIHwgbm9uZSIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb3VudGVyLWluY3JlbWVudCJ9XSxkZXNjcmlwdGlvbjoiTWFuaXB1bGF0ZSB0aGUgdmFsdWUgb2YgZXhpc3RpbmcgY291bnRlcnMuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciJdfSx7bmFtZToiY291bnRlci1yZXNldCIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBjb3VudGVyIGlzIG5vdCBtb2RpZmllZC4ifV0sc3ludGF4OiJbIDxjb3VudGVyLW5hbWU+IDxpbnRlZ2VyPj8gfCA8cmV2ZXJzZWQtY291bnRlci1uYW1lPiA8aW50ZWdlcj4/IF0rIHwgbm9uZSIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb3VudGVyLXJlc2V0In1dLGRlc2NyaXB0aW9uOiJQcm9wZXJ0eSBhY2NlcHRzIG9uZSBvciBtb3JlIG5hbWVzIG9mIGNvdW50ZXJzIChpZGVudGlmaWVycyksIGVhY2ggb25lIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYW4gaW50ZWdlci4gVGhlIGludGVnZXIgZ2l2ZXMgdGhlIHZhbHVlIHRoYXQgdGhlIGNvdW50ZXIgaXMgc2V0IHRvIG9uIGVhY2ggb2NjdXJyZW5jZSBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIl19LHtuYW1lOiJjdXJzb3IiLHZhbHVlczpbe25hbWU6ImFsaWFzIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGFuIGFsaWFzIG9mL3Nob3J0Y3V0IHRvIHNvbWV0aGluZyBpcyB0byBiZSBjcmVhdGVkLiBPZnRlbiByZW5kZXJlZCBhcyBhbiBhcnJvdyB3aXRoIGEgc21hbGwgY3VydmVkIGFycm93IG5leHQgdG8gaXQuIn0se25hbWU6ImFsbC1zY3JvbGwiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgc29tZXRoaW5nIGNhbiBiZSBzY3JvbGxlZCBpbiBhbnkgZGlyZWN0aW9uLiBPZnRlbiByZW5kZXJlZCBhcyBhcnJvd3MgcG9pbnRpbmcgdXAsIGRvd24sIGxlZnQsIGFuZCByaWdodCB3aXRoIGEgZG90IGluIHRoZSBtaWRkbGUuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgVUEgZGV0ZXJtaW5lcyB0aGUgY3Vyc29yIHRvIGRpc3BsYXkgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dC4ifSx7bmFtZToiY2VsbCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGEgY2VsbCBvciBzZXQgb2YgY2VsbHMgbWF5IGJlIHNlbGVjdGVkLiBPZnRlbiByZW5kZXJlZCBhcyBhIHRoaWNrIHBsdXMtc2lnbiB3aXRoIGEgZG90IGluIHRoZSBtaWRkbGUuIn0se25hbWU6ImNvbC1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgaXRlbS9jb2x1bW4gY2FuIGJlIHJlc2l6ZWQgaG9yaXpvbnRhbGx5LiBPZnRlbiByZW5kZXJlZCBhcyBhcnJvd3MgcG9pbnRpbmcgbGVmdCBhbmQgcmlnaHQgd2l0aCBhIHZlcnRpY2FsIGJhciBzZXBhcmF0aW5nIHRoZW0uIn0se25hbWU6ImNvbnRleHQtbWVudSIsZGVzY3JpcHRpb246IkEgY29udGV4dCBtZW51IGlzIGF2YWlsYWJsZSBmb3IgdGhlIG9iamVjdCB1bmRlciB0aGUgY3Vyc29yLiBPZnRlbiByZW5kZXJlZCBhcyBhbiBhcnJvdyB3aXRoIGEgc21hbGwgbWVudS1saWtlIGdyYXBoaWMgbmV4dCB0byBpdC4ifSx7bmFtZToiY29weSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBzb21ldGhpbmcgaXMgdG8gYmUgY29waWVkLiBPZnRlbiByZW5kZXJlZCBhcyBhbiBhcnJvdyB3aXRoIGEgc21hbGwgcGx1cyBzaWduIG5leHQgdG8gaXQuIn0se25hbWU6ImNyb3NzaGFpciIsZGVzY3JpcHRpb246IkEgc2ltcGxlIGNyb3NzaGFpciAoZS5nLiwgc2hvcnQgbGluZSBzZWdtZW50cyByZXNlbWJsaW5nIGEgJysnIHNpZ24pLiBPZnRlbiB1c2VkIHRvIGluZGljYXRlIGEgdHdvIGRpbWVuc2lvbmFsIGJpdG1hcCBzZWxlY3Rpb24gbW9kZS4ifSx7bmFtZToiZGVmYXVsdCIsZGVzY3JpcHRpb246IlRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgZGVmYXVsdCBjdXJzb3IuIE9mdGVuIHJlbmRlcmVkIGFzIGFuIGFycm93LiJ9LHtuYW1lOiJlLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGVhc3QgZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToiZXctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGEgYmlkaXJlY3Rpb25hbCBlYXN0LXdlc3QgcmVzaXplIGN1cnNvci4ifSx7bmFtZToiZ3JhYiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgZ3JhYmJlZC4ifSx7bmFtZToiZ3JhYmJpbmciLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgaXMgYmVpbmcgZ3JhYmJlZC4ifSx7bmFtZToiaGVscCIsZGVzY3JpcHRpb246IkhlbHAgaXMgYXZhaWxhYmxlIGZvciB0aGUgb2JqZWN0IHVuZGVyIHRoZSBjdXJzb3IuIE9mdGVuIHJlbmRlcmVkIGFzIGEgcXVlc3Rpb24gbWFyayBvciBhIGJhbGxvb24uIn0se25hbWU6Im1vdmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgc29tZXRoaW5nIGlzIHRvIGJlIG1vdmVkLiJ9LHtuYW1lOiItbW96LWdyYWIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIGdyYWJiZWQuIn0se25hbWU6Ii1tb3otZ3JhYmJpbmciLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgaXMgYmVpbmcgZ3JhYmJlZC4ifSx7bmFtZToiLW1vei16b29tLWluIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgaW4uIn0se25hbWU6Ii1tb3otem9vbS1vdXQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIHpvb21lZCAobWFnbmlmaWVkKSBvdXQuIn0se25hbWU6Im5lLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG1vdmVtZW50IHN0YXJ0cyBmcm9tIG5vcnRoLWVhc3QgY29ybmVyLiJ9LHtuYW1lOiJuZXN3LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhIGJpZGlyZWN0aW9uYWwgbm9ydGgtZWFzdC9zb3V0aC13ZXN0IGN1cnNvci4ifSx7bmFtZToibm8tZHJvcCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBkcmFnZ2VkIGl0ZW0gY2Fubm90IGJlIGRyb3BwZWQgYXQgdGhlIGN1cnJlbnQgY3Vyc29yIGxvY2F0aW9uLiBPZnRlbiByZW5kZXJlZCBhcyBhIGhhbmQgb3IgcG9pbnRlciB3aXRoIGEgc21hbGwgY2lyY2xlIHdpdGggYSBsaW5lIHRocm91Z2ggaXQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBjdXJzb3IgaXMgcmVuZGVyZWQgZm9yIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJub3QtYWxsb3dlZCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSByZXF1ZXN0ZWQgYWN0aW9uIHdpbGwgbm90IGJlIGNhcnJpZWQgb3V0LiBPZnRlbiByZW5kZXJlZCBhcyBhIGNpcmNsZSB3aXRoIGEgbGluZSB0aHJvdWdoIGl0LiJ9LHtuYW1lOiJuLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG5vcnRoIGVkZ2UgaXMgdG8gYmUgbW92ZWQuIn0se25hbWU6Im5zLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhIGJpZGlyZWN0aW9uYWwgbm9ydGgtc291dGggY3Vyc29yLiJ9LHtuYW1lOiJudy1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBtb3ZlbWVudCBzdGFydHMgZnJvbSBub3J0aC13ZXN0IGNvcm5lci4ifSx7bmFtZToibndzZS1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYSBiaWRpcmVjdGlvbmFsIG5vcnRoLXdlc3Qvc291dGgtZWFzdCBjdXJzb3IuIn0se25hbWU6InBvaW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgY3Vyc29yIGlzIGEgcG9pbnRlciB0aGF0IGluZGljYXRlcyBhIGxpbmsuIn0se25hbWU6InByb2dyZXNzIixkZXNjcmlwdGlvbjoiQSBwcm9ncmVzcyBpbmRpY2F0b3IuIFRoZSBwcm9ncmFtIGlzIHBlcmZvcm1pbmcgc29tZSBwcm9jZXNzaW5nLCBidXQgaXMgZGlmZmVyZW50IGZyb20gJ3dhaXQnIGluIHRoYXQgdGhlIHVzZXIgbWF5IHN0aWxsIGludGVyYWN0IHdpdGggdGhlIHByb2dyYW0uIE9mdGVuIHJlbmRlcmVkIGFzIGEgc3Bpbm5pbmcgYmVhY2ggYmFsbCwgb3IgYW4gYXJyb3cgd2l0aCBhIHdhdGNoIG9yIGhvdXJnbGFzcy4ifSx7bmFtZToicm93LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBpdGVtL3JvdyBjYW4gYmUgcmVzaXplZCB2ZXJ0aWNhbGx5LiBPZnRlbiByZW5kZXJlZCBhcyBhcnJvd3MgcG9pbnRpbmcgdXAgYW5kIGRvd24gd2l0aCBhIGhvcml6b250YWwgYmFyIHNlcGFyYXRpbmcgdGhlbS4ifSx7bmFtZToic2UtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbW92ZW1lbnQgc3RhcnRzIGZyb20gc291dGgtZWFzdCBjb3JuZXIuIn0se25hbWU6InMtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc291dGggZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToic3ctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbW92ZW1lbnQgc3RhcnRzIGZyb20gc291dGgtd2VzdCBjb3JuZXIuIn0se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGV4dCB0aGF0IG1heSBiZSBzZWxlY3RlZC4gT2Z0ZW4gcmVuZGVyZWQgYXMgYSB2ZXJ0aWNhbCBJLWJlYW0uIn0se25hbWU6InZlcnRpY2FsLXRleHQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdmVydGljYWwtdGV4dCB0aGF0IG1heSBiZSBzZWxlY3RlZC4gT2Z0ZW4gcmVuZGVyZWQgYXMgYSBob3Jpem9udGFsIEktYmVhbS4ifSx7bmFtZToid2FpdCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBwcm9ncmFtIGlzIGJ1c3kgYW5kIHRoZSB1c2VyIHNob3VsZCB3YWl0LiBPZnRlbiByZW5kZXJlZCBhcyBhIHdhdGNoIG9yIGhvdXJnbGFzcy4ifSx7bmFtZToiLXdlYmtpdC1ncmFiIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSBncmFiYmVkLiJ9LHtuYW1lOiItd2Via2l0LWdyYWJiaW5nIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGlzIGJlaW5nIGdyYWJiZWQuIn0se25hbWU6Ii13ZWJraXQtem9vbS1pbiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIGluLiJ9LHtuYW1lOiItd2Via2l0LXpvb20tb3V0IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgb3V0LiJ9LHtuYW1lOiJ3LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHdlc3QgZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToiem9vbS1pbiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIGluLiJ9LHtuYW1lOiJ6b29tLW91dCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIG91dC4ifV0sc3ludGF4OiJbIFsgPHVybD4gWyA8eD4gPHk+IF0/ICwgXSogWyBhdXRvIHwgZGVmYXVsdCB8IG5vbmUgfCBjb250ZXh0LW1lbnUgfCBoZWxwIHwgcG9pbnRlciB8IHByb2dyZXNzIHwgd2FpdCB8IGNlbGwgfCBjcm9zc2hhaXIgfCB0ZXh0IHwgdmVydGljYWwtdGV4dCB8IGFsaWFzIHwgY29weSB8IG1vdmUgfCBuby1kcm9wIHwgbm90LWFsbG93ZWQgfCBlLXJlc2l6ZSB8IG4tcmVzaXplIHwgbmUtcmVzaXplIHwgbnctcmVzaXplIHwgcy1yZXNpemUgfCBzZS1yZXNpemUgfCBzdy1yZXNpemUgfCB3LXJlc2l6ZSB8IGV3LXJlc2l6ZSB8IG5zLXJlc2l6ZSB8IG5lc3ctcmVzaXplIHwgbndzZS1yZXNpemUgfCBjb2wtcmVzaXplIHwgcm93LXJlc2l6ZSB8IGFsbC1zY3JvbGwgfCB6b29tLWluIHwgem9vbS1vdXQgfCBncmFiIHwgZ3JhYmJpbmcgXSBdIixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2N1cnNvciJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGNvbnRyb2wgb3ZlciBjdXJzb3IgYXBwZWFyYW5jZSBpbiBhbiBlbGVtZW50IixyZXN0cmljdGlvbnM6WyJ1cmwiLCJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiJkaXJlY3Rpb24iLHZhbHVlczpbe25hbWU6Imx0ciIsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgZGlyZWN0aW9uLiJ9LHtuYW1lOiJydGwiLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGRpcmVjdGlvbi4ifV0sc3ludGF4OiJsdHIgfCBydGwiLHJlbGV2YW5jZTo2OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZGlyZWN0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGlubGluZSBiYXNlIGRpcmVjdGlvbiBvciBkaXJlY3Rpb25hbGl0eSBvZiBhbnkgYmlkaSBwYXJhZ3JhcGgsIGVtYmVkZGluZywgaXNvbGF0ZSwgb3Igb3ZlcnJpZGUgZXN0YWJsaXNoZWQgYnkgdGhlIGJveC4gTm90ZTogZm9yIEhUTUwgY29udGVudCB1c2UgdGhlICdkaXInIGF0dHJpYnV0ZSBhbmQgJ2JkbycgZWxlbWVudCByYXRoZXIgdGhhbiB0aGlzIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZGlzcGxheSIsdmFsdWVzOlt7bmFtZToiYmxvY2siLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBibG9jay1sZXZlbCBib3gifSx7bmFtZToiY29udGVudHMiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpdHNlbGYgZG9lcyBub3QgZ2VuZXJhdGUgYW55IGJveGVzLCBidXQgaXRzIGNoaWxkcmVuIGFuZCBwc2V1ZG8tZWxlbWVudHMgc3RpbGwgZ2VuZXJhdGUgYm94ZXMgYXMgbm9ybWFsLiJ9LHtuYW1lOiJmbGV4IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIGZsZXggY29udGFpbmVyIGJveCBhbmQgZXN0YWJsaXNoZXMgYSBmbGV4IGZvcm1hdHRpbmcgY29udGV4dC4ifSx7bmFtZToiZmxleGJveCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGxheXMgb3V0IGl0cyBjb250ZW50cyB1c2luZyBmbG93IGxheW91dCAoYmxvY2stYW5kLWlubGluZSBsYXlvdXQpLiBTdGFuZGFyZGl6ZWQgYXMgJ2ZsZXgnLiJ9LHtuYW1lOiJmbG93LXJvb3QiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBibG9jayBjb250YWluZXIgYm94LCBhbmQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0LiJ9LHtuYW1lOiJncmlkIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIGdyaWQgY29udGFpbmVyIGJveCwgYW5kIGVzdGFibGlzaGVzIGEgZ3JpZCBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6ImlubGluZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhbiBpbmxpbmUtbGV2ZWwgYm94LiJ9LHtuYW1lOiJpbmxpbmUtYmxvY2siLGRlc2NyaXB0aW9uOiJBIGJsb2NrIGJveCwgd2hpY2ggaXRzZWxmIGlzIGZsb3dlZCBhcyBhIHNpbmdsZSBpbmxpbmUgYm94LCBzaW1pbGFyIHRvIGEgcmVwbGFjZWQgZWxlbWVudC4gVGhlIGluc2lkZSBvZiBhbiBpbmxpbmUtYmxvY2sgaXMgZm9ybWF0dGVkIGFzIGEgYmxvY2sgYm94LCBhbmQgdGhlIGJveCBpdHNlbGYgaXMgZm9ybWF0dGVkIGFzIGFuIGlubGluZSBib3guIn0se25hbWU6ImlubGluZS1mbGV4IixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJpbmxpbmUtZmxleGJveCIsZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBmbGV4IGNvbnRhaW5lci4gU3RhbmRhcmRpemVkIGFzICdpbmxpbmUtZmxleCcifSx7bmFtZToiaW5saW5lLXRhYmxlIixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIHRhYmxlIHdyYXBwZXIgYm94IGNvbnRhaW5pbmcgdGFibGUgYm94LiJ9LHtuYW1lOiJsaXN0LWl0ZW0iLGRlc2NyaXB0aW9uOiJPbmUgb3IgbW9yZSBibG9jayBib3hlcyBhbmQgb25lIG1hcmtlciBib3guIn0se25hbWU6Ii1tb3otYm94IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIFN0YW5kYXJkaXplZCBhcyAnZmxleCcuIn0se25hbWU6Ii1tb3otZGVjayJ9LHtuYW1lOiItbW96LWdyaWQifSx7bmFtZToiLW1vei1ncmlkLWdyb3VwIn0se25hbWU6Ii1tb3otZ3JpZC1saW5lIn0se25hbWU6Ii1tb3otZ3JvdXBib3gifSx7bmFtZToiLW1vei1pbmxpbmUtYm94IixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGZsZXggY29udGFpbmVyLiBTdGFuZGFyZGl6ZWQgYXMgJ2lubGluZS1mbGV4JyJ9LHtuYW1lOiItbW96LWlubGluZS1ncmlkIn0se25hbWU6Ii1tb3otaW5saW5lLXN0YWNrIn0se25hbWU6Ii1tb3otbWFya2VyIn0se25hbWU6Ii1tb3otcG9wdXAifSx7bmFtZToiLW1vei1zdGFjayJ9LHtuYW1lOiItbXMtZmxleGJveCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGxheXMgb3V0IGl0cyBjb250ZW50cyB1c2luZyBmbG93IGxheW91dCAoYmxvY2stYW5kLWlubGluZSBsYXlvdXQpLiBTdGFuZGFyZGl6ZWQgYXMgJ2ZsZXgnLiJ9LHtuYW1lOiItbXMtZ3JpZCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIHByaW5jaXBhbCBncmlkIGNvbnRhaW5lciBib3gsIGFuZCBlc3RhYmxpc2hlcyBhIGdyaWQgZm9ybWF0dGluZyBjb250ZXh0LiJ9LHtuYW1lOiItbXMtaW5saW5lLWZsZXhib3giLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgZmxleCBjb250YWluZXIuIFN0YW5kYXJkaXplZCBhcyAnaW5saW5lLWZsZXgnIn0se25hbWU6Ii1tcy1pbmxpbmUtZ3JpZCIsZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBncmlkIGNvbnRhaW5lci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGFuZCBpdHMgZGVzY2VuZGFudHMgZ2VuZXJhdGVzIG5vIGJveGVzLiJ9LHtuYW1lOiJydWJ5IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIHJ1YnkgY29udGFpbmVyIGJveCwgYW5kIGVzdGFibGlzaGVzIGEgcnVieSBmb3JtYXR0aW5nIGNvbnRleHQuIn0se25hbWU6InJ1YnktYmFzZSJ9LHtuYW1lOiJydWJ5LWJhc2UtY29udGFpbmVyIn0se25hbWU6InJ1YnktdGV4dCJ9LHtuYW1lOiJydWJ5LXRleHQtY29udGFpbmVyIn0se25hbWU6InJ1bi1pbiIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGdlbmVyYXRlcyBhIHJ1bi1pbiBib3guIFJ1bi1pbiBlbGVtZW50cyBhY3QgbGlrZSBpbmxpbmVzIG9yIGJsb2NrcywgZGVwZW5kaW5nIG9uIHRoZSBzdXJyb3VuZGluZyBlbGVtZW50cy4ifSx7bmFtZToidGFibGUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBwcmluY2lwYWwgdGFibGUgd3JhcHBlciBib3ggY29udGFpbmluZyBhbiBhZGRpdGlvbmFsbHktZ2VuZXJhdGVkIHRhYmxlIGJveCwgYW5kIGVzdGFibGlzaGVzIGEgdGFibGUgZm9ybWF0dGluZyBjb250ZXh0LiJ9LHtuYW1lOiJ0YWJsZS1jYXB0aW9uIn0se25hbWU6InRhYmxlLWNlbGwifSx7bmFtZToidGFibGUtY29sdW1uIn0se25hbWU6InRhYmxlLWNvbHVtbi1ncm91cCJ9LHtuYW1lOiJ0YWJsZS1mb290ZXItZ3JvdXAifSx7bmFtZToidGFibGUtaGVhZGVyLWdyb3VwIn0se25hbWU6InRhYmxlLXJvdyJ9LHtuYW1lOiJ0YWJsZS1yb3ctZ3JvdXAifSx7bmFtZToiLXdlYmtpdC1ib3giLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgdXNpbmcgZmxvdyBsYXlvdXQgKGJsb2NrLWFuZC1pbmxpbmUgbGF5b3V0KS4gU3RhbmRhcmRpemVkIGFzICdmbGV4Jy4ifSx7bmFtZToiLXdlYmtpdC1mbGV4IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIn0se25hbWU6Ii13ZWJraXQtaW5saW5lLWJveCIsZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBmbGV4IGNvbnRhaW5lci4gU3RhbmRhcmRpemVkIGFzICdpbmxpbmUtZmxleCcifSx7bmFtZToiLXdlYmtpdC1pbmxpbmUtZmxleCIsZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBmbGV4IGNvbnRhaW5lci4ifV0sc3ludGF4OiJbIDxkaXNwbGF5LW91dHNpZGU+IHx8IDxkaXNwbGF5LWluc2lkZT4gXSB8IDxkaXNwbGF5LWxpc3RpdGVtPiB8IDxkaXNwbGF5LWludGVybmFsPiB8IDxkaXNwbGF5LWJveD4gfCA8ZGlzcGxheS1sZWdhY3k+IixyZWxldmFuY2U6OTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2Rpc3BsYXkifV0sZGVzY3JpcHRpb246IkluIGNvbWJpbmF0aW9uIHdpdGggJ2Zsb2F0JyBhbmQgJ3Bvc2l0aW9uJywgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBib3ggb3IgYm94ZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZW1wdHktY2VsbHMiLHZhbHVlczpbe25hbWU6ImhpZGUiLGRlc2NyaXB0aW9uOiJObyBib3JkZXJzIG9yIGJhY2tncm91bmRzIGFyZSBkcmF3biBhcm91bmQvYmVoaW5kIGVtcHR5IGNlbGxzLiJ9LHtuYW1lOiItbW96LXNob3ctYmFja2dyb3VuZCJ9LHtuYW1lOiJzaG93IixkZXNjcmlwdGlvbjoiQm9yZGVycyBhbmQgYmFja2dyb3VuZHMgYXJlIGRyYXduIGFyb3VuZC9iZWhpbmQgZW1wdHkgY2VsbHMgKGxpa2Ugbm9ybWFsIGNlbGxzKS4ifV0sc3ludGF4OiJzaG93IHwgaGlkZSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9lbXB0eS1jZWxscyJ9XSxkZXNjcmlwdGlvbjoiSW4gdGhlIHNlcGFyYXRlZCBib3JkZXJzIG1vZGVsLCB0aGlzIHByb3BlcnR5IGNvbnRyb2xzIHRoZSByZW5kZXJpbmcgb2YgYm9yZGVycyBhbmQgYmFja2dyb3VuZHMgYXJvdW5kIGNlbGxzIHRoYXQgaGF2ZSBubyB2aXNpYmxlIGNvbnRlbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJlbmFibGUtYmFja2dyb3VuZCIsdmFsdWVzOlt7bmFtZToiYWNjdW11bGF0ZSIsZGVzY3JpcHRpb246IklmIHRoZSBhbmNlc3RvciBjb250YWluZXIgZWxlbWVudCBoYXMgYSBwcm9wZXJ0eSBvZiBuZXcsIHRoZW4gYWxsIGdyYXBoaWNzIGVsZW1lbnRzIHdpdGhpbiB0aGUgY3VycmVudCBjb250YWluZXIgYXJlIHJlbmRlcmVkIGJvdGggb24gdGhlIHBhcmVudCdzIGJhY2tncm91bmQgaW1hZ2UgYW5kIG9udG8gdGhlIHRhcmdldC4ifSx7bmFtZToibmV3IixkZXNjcmlwdGlvbjoiQ3JlYXRlIGEgbmV3IGJhY2tncm91bmQgaW1hZ2UgY2FudmFzLiBBbGwgY2hpbGRyZW4gb2YgdGhlIGN1cnJlbnQgY29udGFpbmVyIGVsZW1lbnQgY2FuIGFjY2VzcyB0aGUgYmFja2dyb3VuZCwgYW5kIHRoZXkgd2lsbCBiZSByZW5kZXJlZCBvbnRvIGJvdGggdGhlIHBhcmVudCdzIGJhY2tncm91bmQgaW1hZ2UgY2FudmFzIGluIGFkZGl0aW9uIHRvIHRoZSB0YXJnZXQgZGV2aWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIFVzZSAnaXNvbGF0aW9uJyBwcm9wZXJ0eSBpbnN0ZWFkIHdoZW4gc3VwcG9ydCBhbGxvd3MuIFNwZWNpZmllcyBob3cgdGhlIGFjY3VtdWxhdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZSBpcyBtYW5hZ2VkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiJmYWxsYmFjayIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiI8Y291bnRlci1zdHlsZS1uYW1lPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgYSBmYWxsYmFjayBjb3VudGVyIHN0eWxlIHRvIGJlIHVzZWQgd2hlbiB0aGUgY3VycmVudCBjb3VudGVyIHN0eWxlIGNhbuKAmXQgY3JlYXRlIGEgcmVwcmVzZW50YXRpb24gZm9yIGEgZ2l2ZW4gY291bnRlciB2YWx1ZS4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiXX0se25hbWU6ImZpbGwiLHZhbHVlczpbe25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiQSBVUkwgcmVmZXJlbmNlIHRvIGEgcGFpbnQgc2VydmVyIGVsZW1lbnQsIHdoaWNoIGlzIGFuIGVsZW1lbnQgdGhhdCBkZWZpbmVzIGEgcGFpbnQgc2VydmVyOiDigJhoYXRjaOKAmSwg4oCYbGluZWFyR3JhZGllbnTigJksIOKAmG1lc2jigJksIOKAmHBhdHRlcm7igJksIOKAmHJhZGlhbEdyYWRpZW504oCZIGFuZCDigJhzb2xpZGNvbG9y4oCZLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGFpbnQgaXMgYXBwbGllZCBpbiB0aGlzIGxheWVyLiJ9XSxyZWxldmFuY2U6NzcsZGVzY3JpcHRpb246IlBhaW50cyB0aGUgaW50ZXJpb3Igb2YgdGhlIGdpdmVuIGdyYXBoaWNhbCBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiY29sb3IiLCJlbnVtIiwidXJsIl19LHtuYW1lOiJmaWxsLW9wYWNpdHkiLHJlbGV2YW5jZTo1MixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBvcGFjaXR5IG9mIHRoZSBwYWludGluZyBvcGVyYXRpb24gdXNlZCB0byBwYWludCB0aGUgaW50ZXJpb3IgdGhlIGN1cnJlbnQgb2JqZWN0LiIscmVzdHJpY3Rpb25zOlsibnVtYmVyKDAtMSkiXX0se25hbWU6ImZpbGwtcnVsZSIsdmFsdWVzOlt7bmFtZToiZXZlbm9kZCIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIOKAmGluc2lkZW5lc3PigJkgb2YgYSBwb2ludCBvbiB0aGUgY2FudmFzIGJ5IGRyYXdpbmcgYSByYXkgZnJvbSB0aGF0IHBvaW50IHRvIGluZmluaXR5IGluIGFueSBkaXJlY3Rpb24gYW5kIGNvdW50aW5nIHRoZSBudW1iZXIgb2YgcGF0aCBzZWdtZW50cyBmcm9tIHRoZSBnaXZlbiBzaGFwZSB0aGF0IHRoZSByYXkgY3Jvc3Nlcy4ifSx7bmFtZToibm9uemVybyIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIOKAmGluc2lkZW5lc3PigJkgb2YgYSBwb2ludCBvbiB0aGUgY2FudmFzIGJ5IGRyYXdpbmcgYSByYXkgZnJvbSB0aGF0IHBvaW50IHRvIGluZmluaXR5IGluIGFueSBkaXJlY3Rpb24gYW5kIHRoZW4gZXhhbWluaW5nIHRoZSBwbGFjZXMgd2hlcmUgYSBzZWdtZW50IG9mIHRoZSBzaGFwZSBjcm9zc2VzIHRoZSByYXkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSBhbGdvcml0aG0gKG9yIHdpbmRpbmcgcnVsZSkgd2hpY2ggaXMgdG8gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBwYXJ0cyBvZiB0aGUgY2FudmFzIGFyZSBpbmNsdWRlZCBpbnNpZGUgdGhlIHNoYXBlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZmlsdGVyIixicm93c2VyczpbIkUxMiIsIkZGMzUiLCJTOS4xIiwiQzUzIiwiTzQwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGZpbHRlciBlZmZlY3RzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJibHVyKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgR2F1c3NpYW4gYmx1ciB0byB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6ImJyaWdodG5lc3MoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBsaW5lYXIgbXVsdGlwbGllciB0byBpbnB1dCBpbWFnZSwgbWFraW5nIGl0IGFwcGVhciBtb3JlIG9yIGxlc3MgYnJpZ2h0LiJ9LHtuYW1lOiJjb250cmFzdCgpIixkZXNjcmlwdGlvbjoiQWRqdXN0cyB0aGUgY29udHJhc3Qgb2YgdGhlIGlucHV0LiJ9LHtuYW1lOiJkcm9wLXNoYWRvdygpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGRyb3Agc2hhZG93IGVmZmVjdCB0byB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6ImdyYXlzY2FsZSgpIixkZXNjcmlwdGlvbjoiQ29udmVydHMgdGhlIGlucHV0IGltYWdlIHRvIGdyYXlzY2FsZS4ifSx7bmFtZToiaHVlLXJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGh1ZSByb3RhdGlvbiBvbiB0aGUgaW5wdXQgaW1hZ2UuICJ9LHtuYW1lOiJpbnZlcnQoKSIsZGVzY3JpcHRpb246IkludmVydHMgdGhlIHNhbXBsZXMgaW4gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJvcGFjaXR5KCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRyYW5zcGFyZW5jeSB0byB0aGUgc2FtcGxlcyBpbiB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6InNhdHVyYXRlKCkiLGRlc2NyaXB0aW9uOiJTYXR1cmF0ZXMgdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJzZXBpYSgpIixkZXNjcmlwdGlvbjoiQ29udmVydHMgdGhlIGlucHV0IGltYWdlIHRvIHNlcGlhLiJ9LHtuYW1lOiJ1cmwoKSIsYnJvd3NlcnM6WyJFMTIiLCJGRjM1IiwiUzkuMSIsIkM1MyIsIk80MCJdLGRlc2NyaXB0aW9uOiJBIGZpbHRlciByZWZlcmVuY2UgdG8gYSA8ZmlsdGVyPiBlbGVtZW50LiJ9XSxzeW50YXg6Im5vbmUgfCA8ZmlsdGVyLWZ1bmN0aW9uLWxpc3Q+IixyZWxldmFuY2U6NjYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZpbHRlciJ9XSxkZXNjcmlwdGlvbjoiUHJvY2Vzc2VzIGFuIGVsZW1lbnTigJlzIHJlbmRlcmluZyBiZWZvcmUgaXQgaXMgZGlzcGxheWVkIGluIHRoZSBkb2N1bWVudCwgYnkgYXBwbHlpbmcgb25lIG9yIG1vcmUgZmlsdGVyIGVmZmVjdHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwidXJsIl19LHtuYW1lOiJmbGV4Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0aGUgbWFpbiBzaXplIHByb3BlcnR5IGFzIHRoZSB1c2VkICdmbGV4LWJhc2lzJy4ifSx7bmFtZToiY29udGVudCIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhdXRvbWF0aWMgc2l6aW5nLCBiYXNlZCBvbiB0aGUgZmxleCBpdGVt4oCZcyBjb250ZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRXhwYW5kcyB0byAnMCAwIGF1dG8nLiJ9XSxzeW50YXg6Im5vbmUgfCBbIDwnZmxleC1ncm93Jz4gPCdmbGV4LXNocmluayc+PyB8fCA8J2ZsZXgtYmFzaXMnPiBdIixyZWxldmFuY2U6ODAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgY29tcG9uZW50cyBvZiBhIGZsZXhpYmxlIGxlbmd0aDogdGhlIGZsZXggZ3JvdyBmYWN0b3IgYW5kIGZsZXggc2hyaW5rIGZhY3RvciwgYW5kIHRoZSBmbGV4IGJhc2lzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibnVtYmVyIiwicGVyY2VudGFnZSJdfSx7bmFtZToiZmxleC1iYXNpcyIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJldHJpZXZlcyB0aGUgdmFsdWUgb2YgdGhlIG1haW4gc2l6ZSBwcm9wZXJ0eSBhcyB0aGUgdXNlZCAnZmxleC1iYXNpcycuIn0se25hbWU6ImNvbnRlbnQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYXV0b21hdGljIHNpemluZywgYmFzZWQgb24gdGhlIGZsZXggaXRlbeKAmXMgY29udGVudC4ifV0sc3ludGF4OiJjb250ZW50IHwgPCd3aWR0aCc+IixyZWxldmFuY2U6NjUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtYmFzaXMifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGZsZXggYmFzaXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJmbGV4LWRpcmVjdGlvbiIsdmFsdWVzOlt7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBibG9jayBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToiY29sdW1uLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdjb2x1bW4nLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6InJvdyIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcuKAmXMgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgaW5saW5lIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJyb3ctcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3JvdycsIGV4Y2VwdCB0aGUgbWFpbi1zdGFydCBhbmQgbWFpbi1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifV0sc3ludGF4OiJyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlIixyZWxldmFuY2U6ODMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtZGlyZWN0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZsZXggaXRlbXMgYXJlIHBsYWNlZCBpbiB0aGUgZmxleCBjb250YWluZXIsIGJ5IHNldHRpbmcgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxleCBjb250YWluZXLigJlzIG1haW4gYXhpcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZsZXgtZmxvdyIsdmFsdWVzOlt7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBibG9jayBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToiY29sdW1uLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdjb2x1bW4nLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZS4ifSx7bmFtZToicm93IixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBpbmxpbmUgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6InJvdy1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAncm93JywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXhib3ggaXMgbXVsdGktbGluZS4ifSx7bmFtZToid3JhcC1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnd3JhcCcsIGV4Y2VwdCB0aGUgY3Jvc3Mtc3RhcnQgYW5kIGNyb3NzLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxzeW50YXg6IjwnZmxleC1kaXJlY3Rpb24nPiB8fCA8J2ZsZXgtd3JhcCc+IixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtZmxvdyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmbGV4Ym94IGl0ZW1zIGFyZSBwbGFjZWQgaW4gdGhlIGZsZXhib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmbGV4LWdyb3ciLHN5bnRheDoiPG51bWJlcj4iLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleC1ncm93In1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBmbGV4IGdyb3cgZmFjdG9yLiBOZWdhdGl2ZSBudW1iZXJzIGFyZSBpbnZhbGlkLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJmbGV4LXNocmluayIsc3ludGF4OiI8bnVtYmVyPiIscmVsZXZhbmNlOjc0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbGV4LXNocmluayJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgZmxleCBzaHJpbmsgZmFjdG9yLiBOZWdhdGl2ZSBudW1iZXJzIGFyZSBpbnZhbGlkLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJmbGV4LXdyYXAiLHZhbHVlczpbe25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZS4ifSx7bmFtZToid3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4Ym94IGlzIG11bHRpLWxpbmUuIn0se25hbWU6IndyYXAtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3dyYXAnLCBleGNlcHQgdGhlIGNyb3NzLXN0YXJ0IGFuZCBjcm9zcy1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifV0sc3ludGF4OiJub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlIixyZWxldmFuY2U6NzkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtd3JhcCJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciB0aGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUgb3IgbXVsdGktbGluZSwgYW5kIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGNyb3NzLWF4aXMsIHdoaWNoIGRldGVybWluZXMgdGhlIGRpcmVjdGlvbiBuZXcgbGluZXMgYXJlIHN0YWNrZWQgaW4uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmbG9hdCIsdmFsdWVzOlt7bmFtZToiaW5saW5lLWVuZCIsZGVzY3JpcHRpb246IkEga2V5d29yZCBpbmRpY2F0aW5nIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBmbG9hdCBvbiB0aGUgZW5kIHNpZGUgb2YgaXRzIGNvbnRhaW5pbmcgYmxvY2suIFRoYXQgaXMgdGhlIHJpZ2h0IHNpZGUgd2l0aCBsdHIgc2NyaXB0cywgYW5kIHRoZSBsZWZ0IHNpZGUgd2l0aCBydGwgc2NyaXB0cy4ifSx7bmFtZToiaW5saW5lLXN0YXJ0IixkZXNjcmlwdGlvbjoiQSBrZXl3b3JkIGluZGljYXRpbmcgdGhhdCB0aGUgZWxlbWVudCBtdXN0IGZsb2F0IG9uIHRoZSBzdGFydCBzaWRlIG9mIGl0cyBjb250YWluaW5nIGJsb2NrLiBUaGF0IGlzIHRoZSBsZWZ0IHNpZGUgd2l0aCBsdHIgc2NyaXB0cywgYW5kIHRoZSByaWdodCBzaWRlIHdpdGggcnRsIHNjcmlwdHMuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBibG9jayBib3ggdGhhdCBpcyBmbG9hdGVkIHRvIHRoZSBsZWZ0LiBDb250ZW50IGZsb3dzIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBib3gsIHN0YXJ0aW5nIGF0IHRoZSB0b3AgKHN1YmplY3QgdG8gdGhlICdjbGVhcicgcHJvcGVydHkpLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGJveCBpcyBub3QgZmxvYXRlZC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJTaW1pbGFyIHRvICdsZWZ0JywgZXhjZXB0IHRoZSBib3ggaXMgZmxvYXRlZCB0byB0aGUgcmlnaHQsIGFuZCBjb250ZW50IGZsb3dzIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGJveCwgc3RhcnRpbmcgYXQgdGhlIHRvcC4ifV0sc3ludGF4OiJsZWZ0IHwgcmlnaHQgfCBub25lIHwgaW5saW5lLXN0YXJ0IHwgaW5saW5lLWVuZCIscmVsZXZhbmNlOjkxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbG9hdCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBhIGJveCBzaG91bGQgYmUgZmxvYXRlZC4gSXQgbWF5IGJlIHNldCBmb3IgYW55IGVsZW1lbnQsIGJ1dCBvbmx5IGFwcGxpZXMgdG8gZWxlbWVudHMgdGhhdCBnZW5lcmF0ZSBib3hlcyB0aGF0IGFyZSBub3QgYWJzb2x1dGVseSBwb3NpdGlvbmVkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZmxvb2QtY29sb3IiLGJyb3dzZXJzOlsiRSIsIkM1IiwiRkYzIiwiSUUxMCIsIk85IiwiUzYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB3aGF0IGNvbG9yIHRvIHVzZSB0byBmbG9vZCB0aGUgY3VycmVudCBmaWx0ZXIgcHJpbWl0aXZlIHN1YnJlZ2lvbi4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJmbG9vZC1vcGFjaXR5Iixicm93c2VyczpbIkUiLCJDNSIsIkZGMyIsIklFMTAiLCJPOSIsIlM2Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hhdCBvcGFjaXR5IHRvIHVzZSB0byBmbG9vZCB0aGUgY3VycmVudCBmaWx0ZXIgcHJpbWl0aXZlIHN1YnJlZ2lvbi4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIiwicGVyY2VudGFnZSJdfSx7bmFtZToiZm9udCIsdmFsdWVzOlt7bmFtZToiMTAwIixkZXNjcmlwdGlvbjoiVGhpbiJ9LHtuYW1lOiIyMDAiLGRlc2NyaXB0aW9uOiJFeHRyYSBMaWdodCAoVWx0cmEgTGlnaHQpIn0se25hbWU6IjMwMCIsZGVzY3JpcHRpb246IkxpZ2h0In0se25hbWU6IjQwMCIsZGVzY3JpcHRpb246Ik5vcm1hbCJ9LHtuYW1lOiI1MDAiLGRlc2NyaXB0aW9uOiJNZWRpdW0ifSx7bmFtZToiNjAwIixkZXNjcmlwdGlvbjoiU2VtaSBCb2xkIChEZW1pIEJvbGQpIn0se25hbWU6IjcwMCIsZGVzY3JpcHRpb246IkJvbGQifSx7bmFtZToiODAwIixkZXNjcmlwdGlvbjoiRXh0cmEgQm9sZCAoVWx0cmEgQm9sZCkifSx7bmFtZToiOTAwIixkZXNjcmlwdGlvbjoiQmxhY2sgKEhlYXZ5KSJ9LHtuYW1lOiJib2xkIixkZXNjcmlwdGlvbjoiU2FtZSBhcyA3MDAifSx7bmFtZToiYm9sZGVyIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB3ZWlnaHQgb2YgdGhlIGZhY2UgYm9sZGVyIHRoYW4gdGhlIGluaGVyaXRlZCB2YWx1ZS4ifSx7bmFtZToiY2FwdGlvbiIsZGVzY3JpcHRpb246IlRoZSBmb250IHVzZWQgZm9yIGNhcHRpb25lZCBjb250cm9scyAoZS5nLiwgYnV0dG9ucywgZHJvcC1kb3ducywgZXRjLikuIn0se25hbWU6Imljb24iLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIHRvIGxhYmVsIGljb25zLiJ9LHtuYW1lOiJpdGFsaWMiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgZm9udCB0aGF0IGlzIGxhYmVsZWQgJ2l0YWxpYycsIG9yLCBpZiB0aGF0IGlzIG5vdCBhdmFpbGFibGUsIG9uZSBsYWJlbGVkICdvYmxpcXVlJy4ifSx7bmFtZToibGFyZ2UifSx7bmFtZToibGFyZ2VyIn0se25hbWU6ImxpZ2h0ZXIiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdlaWdodCBvZiB0aGUgZmFjZSBsaWdodGVyIHRoYW4gdGhlIGluaGVyaXRlZCB2YWx1ZS4ifSx7bmFtZToibWVkaXVtIn0se25hbWU6Im1lbnUiLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIGluIG1lbnVzIChlLmcuLCBkcm9wZG93biBtZW51cyBhbmQgbWVudSBsaXN0cykuIn0se25hbWU6Im1lc3NhZ2UtYm94IixkZXNjcmlwdGlvbjoiVGhlIGZvbnQgdXNlZCBpbiBkaWFsb2cgYm94ZXMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGZhY2UgdGhhdCBpcyBub3QgbGFiZWxlZCBhcyBhIHNtYWxsLWNhcHMgZm9udC4ifSx7bmFtZToib2JsaXF1ZSIsZGVzY3JpcHRpb246IlNlbGVjdHMgYSBmb250IHRoYXQgaXMgbGFiZWxlZCAnb2JsaXF1ZScuIn0se25hbWU6InNtYWxsIn0se25hbWU6InNtYWxsLWNhcHMiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBmb250IHRoYXQgaXMgbGFiZWxlZCBhcyBhIHNtYWxsLWNhcHMgZm9udC4gSWYgYSBnZW51aW5lIHNtYWxsLWNhcHMgZm9udCBpcyBub3QgYXZhaWxhYmxlLCB1c2VyIGFnZW50cyBzaG91bGQgc2ltdWxhdGUgYSBzbWFsbC1jYXBzIGZvbnQuIn0se25hbWU6InNtYWxsLWNhcHRpb24iLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIGZvciBsYWJlbGluZyBzbWFsbCBjb250cm9scy4ifSx7bmFtZToic21hbGxlciJ9LHtuYW1lOiJzdGF0dXMtYmFyIixkZXNjcmlwdGlvbjoiVGhlIGZvbnQgdXNlZCBpbiB3aW5kb3cgc3RhdHVzIGJhcnMuIn0se25hbWU6IngtbGFyZ2UifSx7bmFtZToieC1zbWFsbCJ9LHtuYW1lOiJ4eC1sYXJnZSJ9LHtuYW1lOiJ4eC1zbWFsbCJ9XSxzeW50YXg6IlsgWyA8J2ZvbnQtc3R5bGUnPiB8fCA8Zm9udC12YXJpYW50LWNzczIxPiB8fCA8J2ZvbnQtd2VpZ2h0Jz4gfHwgPCdmb250LXN0cmV0Y2gnPiBdPyA8J2ZvbnQtc2l6ZSc+IFsgLyA8J2xpbmUtaGVpZ2h0Jz4gXT8gPCdmb250LWZhbWlseSc+IF0gfCBjYXB0aW9uIHwgaWNvbiB8IG1lbnUgfCBtZXNzYWdlLWJveCB8IHNtYWxsLWNhcHRpb24gfCBzdGF0dXMtYmFyIixyZWxldmFuY2U6ODQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyAnZm9udC1zdHlsZScsICdmb250LXZhcmlhbnQnLCAnZm9udC13ZWlnaHQnLCAnZm9udC1zaXplJywgJ2xpbmUtaGVpZ2h0JywgYW5kICdmb250LWZhbWlseScsIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4gVGhlIHN5bnRheCBvZiB0aGlzIHByb3BlcnR5IGlzIGJhc2VkIG9uIGEgdHJhZGl0aW9uYWwgdHlwb2dyYXBoaWNhbCBzaG9ydGhhbmQgbm90YXRpb24gdG8gc2V0IG11bHRpcGxlIHByb3BlcnRpZXMgcmVsYXRlZCB0byBmb250cy4iLHJlc3RyaWN0aW9uczpbImZvbnQiXX0se25hbWU6ImZvbnQtZmFtaWx5Iix2YWx1ZXM6W3tuYW1lOiItYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWYifSx7bmFtZToiQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiJ9LHtuYW1lOiJDYW1icmlhLCBDb2NoaW4sIEdlb3JnaWEsIFRpbWVzLCAnVGltZXMgTmV3IFJvbWFuJywgc2VyaWYifSx7bmFtZToiJ0NvdXJpZXIgTmV3JywgQ291cmllciwgbW9ub3NwYWNlIn0se25hbWU6ImN1cnNpdmUifSx7bmFtZToiZmFudGFzeSJ9LHtuYW1lOiInRnJhbmtsaW4gR290aGljIE1lZGl1bScsICdBcmlhbCBOYXJyb3cnLCBBcmlhbCwgc2Fucy1zZXJpZiJ9LHtuYW1lOiJHZW9yZ2lhLCAnVGltZXMgTmV3IFJvbWFuJywgVGltZXMsIHNlcmlmIn0se25hbWU6IidHaWxsIFNhbnMnLCAnR2lsbCBTYW5zIE1UJywgQ2FsaWJyaSwgJ1RyZWJ1Y2hldCBNUycsIHNhbnMtc2VyaWYifSx7bmFtZToiSW1wYWN0LCBIYWV0dGVuc2Nod2VpbGVyLCAnQXJpYWwgTmFycm93IEJvbGQnLCBzYW5zLXNlcmlmIn0se25hbWU6IidMdWNpZGEgU2FucycsICdMdWNpZGEgU2FucyBSZWd1bGFyJywgJ0x1Y2lkYSBHcmFuZGUnLCAnTHVjaWRhIFNhbnMgVW5pY29kZScsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZiJ9LHtuYW1lOiJtb25vc3BhY2UifSx7bmFtZToic2Fucy1zZXJpZiJ9LHtuYW1lOiInU2Vnb2UgVUknLCBUYWhvbWEsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZiJ9LHtuYW1lOiJzZXJpZiJ9LHtuYW1lOiInVGltZXMgTmV3IFJvbWFuJywgVGltZXMsIHNlcmlmIn0se25hbWU6IidUcmVidWNoZXQgTVMnLCAnTHVjaWRhIFNhbnMgVW5pY29kZScsICdMdWNpZGEgR3JhbmRlJywgJ0x1Y2lkYSBTYW5zJywgQXJpYWwsIHNhbnMtc2VyaWYifSx7bmFtZToiVmVyZGFuYSwgR2VuZXZhLCBUYWhvbWEsIHNhbnMtc2VyaWYifV0sc3ludGF4OiI8ZmFtaWx5LW5hbWU+IixyZWxldmFuY2U6OTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtZmFtaWx5In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBwcmlvcml0aXplZCBsaXN0IG9mIGZvbnQgZmFtaWx5IG5hbWVzIG9yIGdlbmVyaWMgZmFtaWx5IG5hbWVzLiBBIHVzZXIgYWdlbnQgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgbGlzdCBvZiBmYW1pbHkgbmFtZXMgdW50aWwgaXQgbWF0Y2hlcyBhbiBhdmFpbGFibGUgZm9udCB0aGF0IGNvbnRhaW5zIGEgZ2x5cGggZm9yIHRoZSBjaGFyYWN0ZXIgdG8gYmUgcmVuZGVyZWQuIixyZXN0cmljdGlvbnM6WyJmb250Il19LHtuYW1lOiJmb250LWZlYXR1cmUtc2V0dGluZ3MiLHZhbHVlczpbe25hbWU6JyJhYWx0IicsZGVzY3JpcHRpb246IkFjY2VzcyBBbGwgQWx0ZXJuYXRlcy4ifSx7bmFtZTonImFidmYiJyxkZXNjcmlwdGlvbjoiQWJvdmUtYmFzZSBGb3Jtcy4gUmVxdWlyZWQgaW4gS2htZXIgc2NyaXB0LiJ9LHtuYW1lOiciYWJ2bSInLGRlc2NyaXB0aW9uOiJBYm92ZS1iYXNlIE1hcmsgUG9zaXRpb25pbmcuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJhYnZzIicsZGVzY3JpcHRpb246IkFib3ZlLWJhc2UgU3Vic3RpdHV0aW9ucy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImFmcmMiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRpdmUgRnJhY3Rpb25zLiJ9LHtuYW1lOiciYWtobiInLGRlc2NyaXB0aW9uOiJBa2hhbmQuIFJlcXVpcmVkIGluIG1vc3QgSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImJsd2YiJyxkZXNjcmlwdGlvbjoiQmVsb3ctYmFzZSBGb3JtLiBSZXF1aXJlZCBpbiBhIG51bWJlciBvZiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciYmx3bSInLGRlc2NyaXB0aW9uOiJCZWxvdy1iYXNlIE1hcmsgUG9zaXRpb25pbmcuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJibHdzIicsZGVzY3JpcHRpb246IkJlbG93LWJhc2UgU3Vic3RpdHV0aW9ucy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImNhbHQiJyxkZXNjcmlwdGlvbjoiQ29udGV4dHVhbCBBbHRlcm5hdGVzLiJ9LHtuYW1lOiciY2FzZSInLGRlc2NyaXB0aW9uOiJDYXNlLVNlbnNpdGl2ZSBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEV1cm9wZWFuIHNjcmlwdHM7IHBhcnRpY3VsYXJseSBwcm9taW5lbnQgaW4gU3BhbmlzaC1sYW5ndWFnZSBzZXR0aW5nLiJ9LHtuYW1lOiciY2NtcCInLGRlc2NyaXB0aW9uOiJHbHlwaCBDb21wb3NpdGlvbi9EZWNvbXBvc2l0aW9uLiJ9LHtuYW1lOiciY2ZhciInLGRlc2NyaXB0aW9uOiJDb25qdW5jdCBGb3JtIEFmdGVyIFJvLiBSZXF1aXJlZCBpbiBLaG1lciBzY3JpcHRzLiJ9LHtuYW1lOiciY2pjdCInLGRlc2NyaXB0aW9uOiJDb25qdW5jdCBGb3Jtcy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cyB0aGF0IHNob3cgc2ltaWxhcml0eSB0byBEZXZhbmFnYXJpLiJ9LHtuYW1lOiciY2xpZyInLGRlc2NyaXB0aW9uOiJDb250ZXh0dWFsIExpZ2F0dXJlcy4ifSx7bmFtZTonImNwY3QiJyxkZXNjcmlwdGlvbjoiQ2VudGVyZWQgQ0pLIFB1bmN0dWF0aW9uLiBVc2VkIHByaW1hcmlseSBpbiBDaGluZXNlIGZvbnRzLiJ9LHtuYW1lOiciY3BzcCInLGRlc2NyaXB0aW9uOiJDYXBpdGFsIFNwYWNpbmcuIFNob3VsZCBub3QgYmUgdXNlZCBpbiBjb25uZWN0aW5nIHNjcmlwdHMgKGUuZy4gbW9zdCBBcmFiaWMpLiJ9LHtuYW1lOiciY3N3aCInLGRlc2NyaXB0aW9uOiJDb250ZXh0dWFsIFN3YXNoLiJ9LHtuYW1lOiciY3VycyInLGRlc2NyaXB0aW9uOiJDdXJzaXZlIFBvc2l0aW9uaW5nLiBDYW4gYmUgdXNlZCBpbiBhbnkgY3Vyc2l2ZSBzY3JpcHQuIn0se25hbWU6JyJjMnBjIicsZGVzY3JpcHRpb246IlBldGl0ZSBDYXBpdGFscyBGcm9tIENhcGl0YWxzLiBBcHBsaWVzIG9ubHkgdG8gYmljYW1lcmFsIHNjcmlwdHMuIn0se25hbWU6JyJjMnNjIicsZGVzY3JpcHRpb246IlNtYWxsIENhcGl0YWxzIEZyb20gQ2FwaXRhbHMuIEFwcGxpZXMgb25seSB0byBiaWNhbWVyYWwgc2NyaXB0cy4ifSx7bmFtZTonImRpc3QiJyxkZXNjcmlwdGlvbjoiRGlzdGFuY2VzLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciZGxpZyInLGRlc2NyaXB0aW9uOiJEaXNjcmV0aW9uYXJ5IGxpZ2F0dXJlcy4ifSx7bmFtZTonImRub20iJyxkZXNjcmlwdGlvbjoiRGVub21pbmF0b3JzLiJ9LHtuYW1lOiciZHRscyInLGRlc2NyaXB0aW9uOiJEb3RsZXNzIEZvcm1zLiBBcHBsaWVkIHRvIG1hdGggZm9ybXVsYSBsYXlvdXQuIn0se25hbWU6JyJleHB0IicsZGVzY3JpcHRpb246IkV4cGVydCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOiciZmFsdCInLGRlc2NyaXB0aW9uOiJGaW5hbCBHbHlwaCBvbiBMaW5lIEFsdGVybmF0ZXMuIENhbiBiZSB1c2VkIGluIGFueSBjdXJzaXZlIHNjcmlwdC4ifSx7bmFtZTonImZpbjIiJyxkZXNjcmlwdGlvbjoiVGVybWluYWwgRm9ybSAjMi4gVXNlZCBvbmx5IHdpdGggdGhlIFN5cmlhYyBzY3JpcHQuIn0se25hbWU6JyJmaW4zIicsZGVzY3JpcHRpb246IlRlcm1pbmFsIEZvcm0gIzMuIFVzZWQgb25seSB3aXRoIHRoZSBTeXJpYWMgc2NyaXB0LiJ9LHtuYW1lOiciZmluYSInLGRlc2NyaXB0aW9uOiJUZXJtaW5hbCBGb3Jtcy4gQ2FuIGJlIHVzZWQgaW4gYW55IGFscGhhYmV0aWMgc2NyaXB0LiJ9LHtuYW1lOiciZmxhYyInLGRlc2NyaXB0aW9uOiJGbGF0dGVuZWQgYXNjZW50IGZvcm1zLiBBcHBsaWVkIHRvIG1hdGggZm9ybXVsYSBsYXlvdXQuIn0se25hbWU6JyJmcmFjIicsZGVzY3JpcHRpb246IkZyYWN0aW9ucy4ifSx7bmFtZTonImZ3aWQiJyxkZXNjcmlwdGlvbjoiRnVsbCBXaWR0aHMuIEFwcGxpZXMgdG8gYW55IHNjcmlwdCB3aGljaCBjYW4gdXNlIG1vbm9zcGFjZWQgZm9ybXMuIn0se25hbWU6JyJoYWxmIicsZGVzY3JpcHRpb246IkhhbGYgRm9ybXMuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMgdGhhdCBzaG93IHNpbWlsYXJpdHkgdG8gRGV2YW5hZ2FyaS4ifSx7bmFtZTonImhhbG4iJyxkZXNjcmlwdGlvbjoiSGFsYW50IEZvcm1zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciaGFsdCInLGRlc2NyaXB0aW9uOiJBbHRlcm5hdGUgSGFsZiBXaWR0aHMuIFVzZWQgb25seSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOiciaGlzdCInLGRlc2NyaXB0aW9uOiJIaXN0b3JpY2FsIEZvcm1zLiJ9LHtuYW1lOiciaGtuYSInLGRlc2NyaXB0aW9uOiJIb3Jpem9udGFsIEthbmEgQWx0ZXJuYXRlcy4gQXBwbGllcyBvbmx5IHRvIGZvbnRzIHRoYXQgc3VwcG9ydCBrYW5hIChoaXJhZ2FuYSBhbmQga2F0YWthbmEpLiJ9LHtuYW1lOiciaGxpZyInLGRlc2NyaXB0aW9uOiJIaXN0b3JpY2FsIExpZ2F0dXJlcy4ifSx7bmFtZTonImhuZ2wiJyxkZXNjcmlwdGlvbjoiSGFuZ3VsLiBLb3JlYW4gb25seS4ifSx7bmFtZTonImhvam8iJyxkZXNjcmlwdGlvbjoiSG9qbyBLYW5qaSBGb3JtcyAoSklTIFggMDIxMi0xOTkwIEthbmppIEZvcm1zKS4gVXNlZCBvbmx5IHdpdGggS2Fuamkgc2NyaXB0LiJ9LHtuYW1lOiciaHdpZCInLGRlc2NyaXB0aW9uOiJIYWxmIFdpZHRocy4gR2VuZXJhbGx5IHVzZWQgb25seSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOiciaW5pdCInLGRlc2NyaXB0aW9uOiJJbml0aWFsIEZvcm1zLiBDYW4gYmUgdXNlZCBpbiBhbnkgYWxwaGFiZXRpYyBzY3JpcHQuIn0se25hbWU6JyJpc29sIicsZGVzY3JpcHRpb246Iklzb2xhdGVkIEZvcm1zLiBDYW4gYmUgdXNlZCBpbiBhbnkgY3Vyc2l2ZSBzY3JpcHQuIn0se25hbWU6JyJpdGFsIicsZGVzY3JpcHRpb246Ikl0YWxpY3MuIEFwcGxpZXMgbW9zdGx5IHRvIExhdGluOyBub3RlIHRoYXQgbWFueSBub24tTGF0aW4gZm9udHMgY29udGFpbiBMYXRpbiBhcyB3ZWxsLiJ9LHtuYW1lOiciamFsdCInLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIEFsdGVybmF0ZXMuIENhbiBiZSB1c2VkIGluIGFueSBjdXJzaXZlIHNjcmlwdC4ifSx7bmFtZTonImpwNzgiJyxkZXNjcmlwdGlvbjoiSklTNzggRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonImpwODMiJyxkZXNjcmlwdGlvbjoiSklTODMgRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonImpwOTAiJyxkZXNjcmlwdGlvbjoiSklTOTAgRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonImpwMDQiJyxkZXNjcmlwdGlvbjoiSklTMjAwNCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOicia2VybiInLGRlc2NyaXB0aW9uOiJLZXJuaW5nLiJ9LHtuYW1lOicibGZiZCInLGRlc2NyaXB0aW9uOiJMZWZ0IEJvdW5kcy4ifSx7bmFtZTonImxpZ2EiJyxkZXNjcmlwdGlvbjoiU3RhbmRhcmQgTGlnYXR1cmVzLiJ9LHtuYW1lOicibGptbyInLGRlc2NyaXB0aW9uOiJMZWFkaW5nIEphbW8gRm9ybXMuIFJlcXVpcmVkIGZvciBIYW5ndWwgc2NyaXB0IHdoZW4gQW5jaWVudCBIYW5ndWwgd3JpdGluZyBzeXN0ZW0gaXMgc3VwcG9ydGVkLiJ9LHtuYW1lOicibG51bSInLGRlc2NyaXB0aW9uOiJMaW5pbmcgRmlndXJlcy4ifSx7bmFtZTonImxvY2wiJyxkZXNjcmlwdGlvbjoiTG9jYWxpemVkIEZvcm1zLiJ9LHtuYW1lOicibHRyYSInLGRlc2NyaXB0aW9uOiJMZWZ0LXRvLXJpZ2h0IGdseXBoIGFsdGVybmF0ZXMuIn0se25hbWU6JyJsdHJtIicsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgbWlycm9yZWQgZm9ybXMuIn0se25hbWU6JyJtYXJrIicsZGVzY3JpcHRpb246Ik1hcmsgUG9zaXRpb25pbmcuIn0se25hbWU6JyJtZWQyIicsZGVzY3JpcHRpb246Ik1lZGlhbCBGb3JtICMyLiBVc2VkIG9ubHkgd2l0aCB0aGUgU3lyaWFjIHNjcmlwdC4ifSx7bmFtZTonIm1lZGkiJyxkZXNjcmlwdGlvbjoiTWVkaWFsIEZvcm1zLiJ9LHtuYW1lOicibWdyayInLGRlc2NyaXB0aW9uOiJNYXRoZW1hdGljYWwgR3JlZWsuIn0se25hbWU6JyJta21rIicsZGVzY3JpcHRpb246Ik1hcmsgdG8gTWFyayBQb3NpdGlvbmluZy4ifSx7bmFtZTonIm5hbHQiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRlIEFubm90YXRpb24gRm9ybXMuIn0se25hbWU6JyJubGNrIicsZGVzY3JpcHRpb246Ik5MQyBLYW5qaSBGb3Jtcy4gVXNlZCBvbmx5IHdpdGggS2Fuamkgc2NyaXB0LiJ9LHtuYW1lOicibnVrdCInLGRlc2NyaXB0aW9uOiJOdWt0YSBGb3Jtcy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4uIn0se25hbWU6JyJudW1yIicsZGVzY3JpcHRpb246Ik51bWVyYXRvcnMuIn0se25hbWU6JyJvbnVtIicsZGVzY3JpcHRpb246Ik9sZHN0eWxlIEZpZ3VyZXMuIn0se25hbWU6JyJvcGJkIicsZGVzY3JpcHRpb246Ik9wdGljYWwgQm91bmRzLiJ9LHtuYW1lOicib3JkbiInLGRlc2NyaXB0aW9uOiJPcmRpbmFscy4gQXBwbGllcyBtb3N0bHkgdG8gTGF0aW4gc2NyaXB0LiJ9LHtuYW1lOicib3JubSInLGRlc2NyaXB0aW9uOiJPcm5hbWVudHMuIn0se25hbWU6JyJwYWx0IicsZGVzY3JpcHRpb246IlByb3BvcnRpb25hbCBBbHRlcm5hdGUgV2lkdGhzLiBVc2VkIG1vc3RseSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOicicGNhcCInLGRlc2NyaXB0aW9uOiJQZXRpdGUgQ2FwaXRhbHMuIn0se25hbWU6JyJwa25hIicsZGVzY3JpcHRpb246IlByb3BvcnRpb25hbCBLYW5hLiBHZW5lcmFsbHkgdXNlZCBvbmx5IGluIEphcGFuZXNlIGZvbnRzLiJ9LHtuYW1lOicicG51bSInLGRlc2NyaXB0aW9uOiJQcm9wb3J0aW9uYWwgRmlndXJlcy4ifSx7bmFtZTonInByZWYiJyxkZXNjcmlwdGlvbjoiUHJlLWJhc2UgRm9ybXMuIFJlcXVpcmVkIGluIEtobWVyIGFuZCBNeWFubWFyIChCdXJtZXNlKSBzY3JpcHRzIGFuZCBzb3V0aGVybiBJbmRpYyBzY3JpcHRzIHRoYXQgbWF5IGRpc3BsYXkgYSBwcmUtYmFzZSBmb3JtIG9mIFJhLiJ9LHtuYW1lOicicHJlcyInLGRlc2NyaXB0aW9uOiJQcmUtYmFzZSBTdWJzdGl0dXRpb25zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOicicHN0ZiInLGRlc2NyaXB0aW9uOiJQb3N0LWJhc2UgRm9ybXMuIFJlcXVpcmVkIGluIHNjcmlwdHMgb2Ygc291dGggYW5kIHNvdXRoZWFzdCBBc2lhIHRoYXQgaGF2ZSBwb3N0LWJhc2UgZm9ybXMgZm9yIGNvbnNvbmFudHMgZWc6IEd1cm11a2hpLCBNYWxheWFsYW0sIEtobWVyLiJ9LHtuYW1lOicicHN0cyInLGRlc2NyaXB0aW9uOiJQb3N0LWJhc2UgU3Vic3RpdHV0aW9ucy4ifSx7bmFtZTonInB3aWQiJyxkZXNjcmlwdGlvbjoiUHJvcG9ydGlvbmFsIFdpZHRocy4ifSx7bmFtZTonInF3aWQiJyxkZXNjcmlwdGlvbjoiUXVhcnRlciBXaWR0aHMuIEdlbmVyYWxseSB1c2VkIG9ubHkgaW4gQ0pLViBmb250cy4ifSx7bmFtZTonInJhbmQiJyxkZXNjcmlwdGlvbjoiUmFuZG9taXplLiJ9LHtuYW1lOicicmNsdCInLGRlc2NyaXB0aW9uOiJSZXF1aXJlZCBDb250ZXh0dWFsIEFsdGVybmF0ZXMuIE1heSBhcHBseSB0byBhbnkgc2NyaXB0LCBidXQgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIG1hbnkgc3R5bGVzIG9mIEFyYWJpYy4ifSx7bmFtZTonInJsaWciJyxkZXNjcmlwdGlvbjoiUmVxdWlyZWQgTGlnYXR1cmVzLiBBcHBsaWVzIHRvIEFyYWJpYyBhbmQgU3lyaWFjLiBNYXkgYXBwbHkgdG8gc29tZSBvdGhlciBzY3JpcHRzLiJ9LHtuYW1lOicicmtyZiInLGRlc2NyaXB0aW9uOiJSYWthciBGb3Jtcy4gUmVxdWlyZWQgaW4gRGV2YW5hZ2FyaSBhbmQgR3VqYXJhdGkgc2NyaXB0cy4ifSx7bmFtZTonInJwaGYiJyxkZXNjcmlwdGlvbjoiUmVwaCBGb3JtLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiBFLmcuIERldmFuYWdhcmksIEthbm5hZGEuIn0se25hbWU6JyJydGJkIicsZGVzY3JpcHRpb246IlJpZ2h0IEJvdW5kcy4ifSx7bmFtZTonInJ0bGEiJyxkZXNjcmlwdGlvbjoiUmlnaHQtdG8tbGVmdCBhbHRlcm5hdGVzLiJ9LHtuYW1lOicicnRsbSInLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IG1pcnJvcmVkIGZvcm1zLiJ9LHtuYW1lOicicnVieSInLGRlc2NyaXB0aW9uOiJSdWJ5IE5vdGF0aW9uIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gSmFwYW5lc2UuIn0se25hbWU6JyJzYWx0IicsZGVzY3JpcHRpb246IlN0eWxpc3RpYyBBbHRlcm5hdGVzLiJ9LHtuYW1lOicic2luZiInLGRlc2NyaXB0aW9uOiJTY2llbnRpZmljIEluZmVyaW9ycy4ifSx7bmFtZTonInNpemUiJyxkZXNjcmlwdGlvbjoiT3B0aWNhbCBzaXplLiJ9LHtuYW1lOicic21jcCInLGRlc2NyaXB0aW9uOiJTbWFsbCBDYXBpdGFscy4gQXBwbGllcyBvbmx5IHRvIGJpY2FtZXJhbCBzY3JpcHRzLiJ9LHtuYW1lOicic21wbCInLGRlc2NyaXB0aW9uOiJTaW1wbGlmaWVkIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gQ2hpbmVzZSBhbmQgSmFwYW5lc2UuIn0se25hbWU6JyJzc3R5IicsZGVzY3JpcHRpb246Ik1hdGggc2NyaXB0IHN0eWxlIGFsdGVybmF0ZXMuIn0se25hbWU6JyJzdGNoIicsZGVzY3JpcHRpb246IlN0cmV0Y2hpbmcgR2x5cGggRGVjb21wb3NpdGlvbi4ifSx7bmFtZTonInN1YnMiJyxkZXNjcmlwdGlvbjoiU3Vic2NyaXB0LiJ9LHtuYW1lOicic3VwcyInLGRlc2NyaXB0aW9uOiJTdXBlcnNjcmlwdC4ifSx7bmFtZTonInN3c2giJyxkZXNjcmlwdGlvbjoiU3dhc2guIERvZXMgbm90IGFwcGx5IHRvIGlkZW9ncmFwaGljIHNjcmlwdHMuIn0se25hbWU6JyJ0aXRsIicsZGVzY3JpcHRpb246IlRpdGxpbmcuIn0se25hbWU6JyJ0am1vIicsZGVzY3JpcHRpb246IlRyYWlsaW5nIEphbW8gRm9ybXMuIFJlcXVpcmVkIGZvciBIYW5ndWwgc2NyaXB0IHdoZW4gQW5jaWVudCBIYW5ndWwgd3JpdGluZyBzeXN0ZW0gaXMgc3VwcG9ydGVkLiJ9LHtuYW1lOicidG5hbSInLGRlc2NyaXB0aW9uOiJUcmFkaXRpb25hbCBOYW1lIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gSmFwYW5lc2UuIn0se25hbWU6JyJ0bnVtIicsZGVzY3JpcHRpb246IlRhYnVsYXIgRmlndXJlcy4ifSx7bmFtZTonInRyYWQiJyxkZXNjcmlwdGlvbjoiVHJhZGl0aW9uYWwgRm9ybXMuIEFwcGxpZXMgb25seSB0byBDaGluZXNlIGFuZCBKYXBhbmVzZS4ifSx7bmFtZTonInR3aWQiJyxkZXNjcmlwdGlvbjoiVGhpcmQgV2lkdGhzLiBHZW5lcmFsbHkgdXNlZCBvbmx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJ1bmljIicsZGVzY3JpcHRpb246IlVuaWNhc2UuIn0se25hbWU6JyJ2YWx0IicsZGVzY3JpcHRpb246IkFsdGVybmF0ZSBWZXJ0aWNhbCBNZXRyaWNzLiBBcHBsaWVzIG9ubHkgdG8gc2NyaXB0cyB3aXRoIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMuIn0se25hbWU6JyJ2YXR1IicsZGVzY3JpcHRpb246IlZhdHR1IFZhcmlhbnRzLiBVc2VkIGZvciBJbmRpYyBzY3JpcHRzLiBFLmcuIERldmFuYWdhcmkuIn0se25hbWU6JyJ2ZXJ0IicsZGVzY3JpcHRpb246IlZlcnRpY2FsIEFsdGVybmF0ZXMuIEFwcGxpZXMgb25seSB0byBzY3JpcHRzIHdpdGggdmVydGljYWwgd3JpdGluZyBtb2Rlcy4ifSx7bmFtZTonInZoYWwiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRlIFZlcnRpY2FsIEhhbGYgTWV0cmljcy4gVXNlZCBvbmx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJ2am1vIicsZGVzY3JpcHRpb246IlZvd2VsIEphbW8gRm9ybXMuIFJlcXVpcmVkIGZvciBIYW5ndWwgc2NyaXB0IHdoZW4gQW5jaWVudCBIYW5ndWwgd3JpdGluZyBzeXN0ZW0gaXMgc3VwcG9ydGVkLiJ9LHtuYW1lOicidmtuYSInLGRlc2NyaXB0aW9uOiJWZXJ0aWNhbCBLYW5hIEFsdGVybmF0ZXMuIEFwcGxpZXMgb25seSB0byBmb250cyB0aGF0IHN1cHBvcnQga2FuYSAoaGlyYWdhbmEgYW5kIGthdGFrYW5hKS4ifSx7bmFtZTonInZrcm4iJyxkZXNjcmlwdGlvbjoiVmVydGljYWwgS2VybmluZy4ifSx7bmFtZTonInZwYWwiJyxkZXNjcmlwdGlvbjoiUHJvcG9ydGlvbmFsIEFsdGVybmF0ZSBWZXJ0aWNhbCBNZXRyaWNzLiBVc2VkIG1vc3RseSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOicidnJ0MiInLGRlc2NyaXB0aW9uOiJWZXJ0aWNhbCBBbHRlcm5hdGVzIGFuZCBSb3RhdGlvbi4gQXBwbGllcyBvbmx5IHRvIHNjcmlwdHMgd2l0aCB2ZXJ0aWNhbCB3cml0aW5nIG1vZGVzLiJ9LHtuYW1lOiciemVybyInLGRlc2NyaXB0aW9uOiJTbGFzaGVkIFplcm8uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vIGNoYW5nZSBpbiBnbHlwaCBzdWJzdGl0dXRpb24gb3IgcG9zaXRpb25pbmcgb2NjdXJzLiJ9LHtuYW1lOiJvZmYiLGRlc2NyaXB0aW9uOiJEaXNhYmxlIGZlYXR1cmUuIn0se25hbWU6Im9uIixkZXNjcmlwdGlvbjoiRW5hYmxlIGZlYXR1cmUuIn1dLHN5bnRheDoibm9ybWFsIHwgPGZlYXR1cmUtdGFnLXZhbHVlPiMiLHJlbGV2YW5jZTo1NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1mZWF0dXJlLXNldHRpbmdzIn1dLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIE9wZW5UeXBlIGZvbnQgZmVhdHVyZXMuIEl0IGlzIGludGVuZGVkIGFzIGEgd2F5IG9mIHByb3ZpZGluZyBhY2Nlc3MgdG8gZm9udCBmZWF0dXJlcyB0aGF0IGFyZSBub3Qgd2lkZWx5IHVzZWQgYnV0IGFyZSBuZWVkZWQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZS4iLHJlc3RyaWN0aW9uczpbInN0cmluZyIsImludGVnZXIiXX0se25hbWU6ImZvbnQta2VybmluZyIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzkiLCJDMzMiLCJPMjAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoYXQga2VybmluZyBpcyBhcHBsaWVkIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZSB1c2VyIGFnZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoYXQga2VybmluZyBpcyBub3QgYXBwbGllZC4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoYXQga2VybmluZyBpcyBhcHBsaWVkLiJ9XSxzeW50YXg6ImF1dG8gfCBub3JtYWwgfCBub25lIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQta2VybmluZyJ9XSxkZXNjcmlwdGlvbjoiS2VybmluZyBpcyB0aGUgY29udGV4dHVhbCBhZGp1c3RtZW50IG9mIGludGVyLWdseXBoIHNwYWNpbmcuIFRoaXMgcHJvcGVydHkgY29udHJvbHMgbWV0cmljIGtlcm5pbmcsIGtlcm5pbmcgdGhhdCB1dGlsaXplcyBhZGp1c3RtZW50IGRhdGEgY29udGFpbmVkIGluIHRoZSBmb250LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC1sYW5ndWFnZS1vdmVycmlkZSIsYnJvd3NlcnM6WyJGRjM0Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiSW1wbGllcyB0aGF0IHdoZW4gcmVuZGVyaW5nIHdpdGggT3BlblR5cGUgZm9udHMgdGhlIGxhbmd1YWdlIG9mIHRoZSBkb2N1bWVudCBpcyB1c2VkIHRvIGluZmVyIHRoZSBPcGVuVHlwZSBsYW5ndWFnZSBzeXN0ZW0sIHVzZWQgdG8gc2VsZWN0IGxhbmd1YWdlIHNwZWNpZmljIGZlYXR1cmVzIHdoZW4gcmVuZGVyaW5nLiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxzdHJpbmc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGUifV0sZGVzY3JpcHRpb246IlRoZSB2YWx1ZSBvZiAnbm9ybWFsJyBpbXBsaWVzIHRoYXQgd2hlbiByZW5kZXJpbmcgd2l0aCBPcGVuVHlwZSBmb250cyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGRvY3VtZW50IGlzIHVzZWQgdG8gaW5mZXIgdGhlIE9wZW5UeXBlIGxhbmd1YWdlIHN5c3RlbSwgdXNlZCB0byBzZWxlY3QgbGFuZ3VhZ2Ugc3BlY2lmaWMgZmVhdHVyZXMgd2hlbiByZW5kZXJpbmcuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciXX0se25hbWU6ImZvbnQtc2l6ZSIsdmFsdWVzOlt7bmFtZToibGFyZ2UifSx7bmFtZToibGFyZ2VyIn0se25hbWU6Im1lZGl1bSJ9LHtuYW1lOiJzbWFsbCJ9LHtuYW1lOiJzbWFsbGVyIn0se25hbWU6IngtbGFyZ2UifSx7bmFtZToieC1zbWFsbCJ9LHtuYW1lOiJ4eC1sYXJnZSJ9LHtuYW1lOiJ4eC1zbWFsbCJ9XSxzeW50YXg6IjxhYnNvbHV0ZS1zaXplPiB8IDxyZWxhdGl2ZS1zaXplPiB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo5NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zaXplIn1dLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIGRlc2lyZWQgaGVpZ2h0IG9mIGdseXBocyBmcm9tIHRoZSBmb250LiBGb3Igc2NhbGFibGUgZm9udHMsIHRoZSBmb250LXNpemUgaXMgYSBzY2FsZSBmYWN0b3IgYXBwbGllZCB0byB0aGUgRU0gdW5pdCBvZiB0aGUgZm9udC4gKE5vdGUgdGhhdCBjZXJ0YWluIGdseXBocyBtYXkgYmxlZWQgb3V0c2lkZSB0aGVpciBFTSBib3guKSBGb3Igbm9uLXNjYWxhYmxlIGZvbnRzLCB0aGUgZm9udC1zaXplIGlzIGNvbnZlcnRlZCBpbnRvIGFic29sdXRlIHVuaXRzIGFuZCBtYXRjaGVkIGFnYWluc3QgdGhlIGRlY2xhcmVkIGZvbnQtc2l6ZSBvZiB0aGUgZm9udCwgdXNpbmcgdGhlIHNhbWUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBmb3IgYm90aCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJmb250LXNpemUtYWRqdXN0Iixicm93c2VyczpbIkU3OSIsIkZGNDAiLCJDNDMiLCJPMzAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRG8gbm90IHByZXNlcnZlIHRoZSBmb2504oCZcyB4LWhlaWdodC4ifV0sc3ludGF4OiJub25lIHwgWyBleC1oZWlnaHQgfCBjYXAtaGVpZ2h0IHwgY2gtd2lkdGggfCBpYy13aWR0aCB8IGljLWhlaWdodCBdPyBbIGZyb20tZm9udCB8IDxudW1iZXI+IF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zaXplLWFkanVzdCJ9XSxkZXNjcmlwdGlvbjoiUHJlc2VydmVzIHRoZSByZWFkYWJpbGl0eSBvZiB0ZXh0IHdoZW4gZm9udCBmYWxsYmFjayBvY2N1cnMgYnkgYWRqdXN0aW5nIHRoZSBmb250LXNpemUgc28gdGhhdCB0aGUgeC1oZWlnaHQgaXMgdGhlIHNhbWUgcmVnYXJkbGVzcyBvZiB0aGUgZm9udCB1c2VkLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJmb250LXN0cmV0Y2giLHZhbHVlczpbe25hbWU6ImNvbmRlbnNlZCJ9LHtuYW1lOiJleHBhbmRlZCJ9LHtuYW1lOiJleHRyYS1jb25kZW5zZWQifSx7bmFtZToiZXh0cmEtZXhwYW5kZWQifSx7bmFtZToibmFycm93ZXIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYSBuYXJyb3dlciB2YWx1ZSByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgdGhlIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiJub3JtYWwifSx7bmFtZToic2VtaS1jb25kZW5zZWQifSx7bmFtZToic2VtaS1leHBhbmRlZCJ9LHtuYW1lOiJ1bHRyYS1jb25kZW5zZWQifSx7bmFtZToidWx0cmEtZXhwYW5kZWQifSx7bmFtZToid2lkZXIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYSB3aWRlciB2YWx1ZSByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgdGhlIHBhcmVudCBlbGVtZW50LiJ9XSxzeW50YXg6Ijxmb250LXN0cmV0Y2gtYWJzb2x1dGU+ezEsMn0iLHJlbGV2YW5jZTo1NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zdHJldGNoIn1dLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgbm9ybWFsLCBjb25kZW5zZWQsIG9yIGV4cGFuZGVkIGZhY2UgZnJvbSBhIGZvbnQgZmFtaWx5LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC1zdHlsZSIsdmFsdWVzOlt7bmFtZToiaXRhbGljIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkIGFzIGFuICdpdGFsaWMnIGZhY2UsIG9yIGFuICdvYmxpcXVlJyBmYWNlIGlmIG9uZSBpcyBub3QifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZhY2UgdGhhdCBpcyBjbGFzc2lmaWVkIGFzICdub3JtYWwnLiJ9LHtuYW1lOiJvYmxpcXVlIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkIGFzIGFuICdvYmxpcXVlJyBmYWNlLCBvciBhbiAnaXRhbGljJyBmYWNlIGlmIG9uZSBpcyBub3QuIn1dLHN5bnRheDoibm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSA8YW5nbGU+ezAsMn0iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGl0YWxpYyBvciBvYmxpcXVlIGZhY2VzIHRvIGJlIHNlbGVjdGVkLiBJdGFsaWMgZm9ybXMgYXJlIGdlbmVyYWxseSBjdXJzaXZlIGluIG5hdHVyZSB3aGlsZSBvYmxpcXVlIGZhY2VzIGFyZSB0eXBpY2FsbHkgc2xvcGVkIHZlcnNpb25zIG9mIHRoZSByZWd1bGFyIGZhY2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXN5bnRoZXNpcyIsYnJvd3NlcnM6WyJFOTciLCJGRjM0IiwiUzkiLCJDOTciLCJPODMiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRGlzYWxsb3cgYWxsIHN5bnRoZXRpYyBmYWNlcy4ifSx7bmFtZToic3R5bGUiLGRlc2NyaXB0aW9uOiJBbGxvdyBzeW50aGV0aWMgaXRhbGljIGZhY2VzLiJ9LHtuYW1lOiJ3ZWlnaHQiLGRlc2NyaXB0aW9uOiJBbGxvdyBzeW50aGV0aWMgYm9sZCBmYWNlcy4ifV0sc3ludGF4OiJub25lIHwgWyB3ZWlnaHQgfHwgc3R5bGUgfHwgc21hbGwtY2FwcyBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtc3ludGhlc2lzIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIHVzZXIgYWdlbnRzIGFyZSBhbGxvd2VkIHRvIHN5bnRoZXNpemUgYm9sZCBvciBvYmxpcXVlIGZvbnQgZmFjZXMgd2hlbiBhIGZvbnQgZmFtaWx5IGxhY2tzIGJvbGQgb3IgaXRhbGljIGZhY2VzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC12YXJpYW50Iix2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBmYWNlIHRoYXQgaXMgbm90IGxhYmVsZWQgYXMgYSBzbWFsbC1jYXBzIGZvbnQuIn0se25hbWU6InNtYWxsLWNhcHMiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBmb250IHRoYXQgaXMgbGFiZWxlZCBhcyBhIHNtYWxsLWNhcHMgZm9udC4gSWYgYSBnZW51aW5lIHNtYWxsLWNhcHMgZm9udCBpcyBub3QgYXZhaWxhYmxlLCB1c2VyIGFnZW50cyBzaG91bGQgc2ltdWxhdGUgYSBzbWFsbC1jYXBzIGZvbnQuIn1dLHN5bnRheDoibm9ybWFsIHwgbm9uZSB8IFsgPGNvbW1vbi1saWctdmFsdWVzPiB8fCA8ZGlzY3JldGlvbmFyeS1saWctdmFsdWVzPiB8fCA8aGlzdG9yaWNhbC1saWctdmFsdWVzPiB8fCA8Y29udGV4dHVhbC1hbHQtdmFsdWVzPiB8fCBzdHlsaXN0aWMoPGZlYXR1cmUtdmFsdWUtbmFtZT4pIHx8IGhpc3RvcmljYWwtZm9ybXMgfHwgc3R5bGVzZXQoPGZlYXR1cmUtdmFsdWUtbmFtZT4jKSB8fCBjaGFyYWN0ZXItdmFyaWFudCg8ZmVhdHVyZS12YWx1ZS1uYW1lPiMpIHx8IHN3YXNoKDxmZWF0dXJlLXZhbHVlLW5hbWU+KSB8fCBvcm5hbWVudHMoPGZlYXR1cmUtdmFsdWUtbmFtZT4pIHx8IGFubm90YXRpb24oPGZlYXR1cmUtdmFsdWUtbmFtZT4pIHx8IFsgc21hbGwtY2FwcyB8IGFsbC1zbWFsbC1jYXBzIHwgcGV0aXRlLWNhcHMgfCBhbGwtcGV0aXRlLWNhcHMgfCB1bmljYXNlIHwgdGl0bGluZy1jYXBzIF0gfHwgPG51bWVyaWMtZmlndXJlLXZhbHVlcz4gfHwgPG51bWVyaWMtc3BhY2luZy12YWx1ZXM+IHx8IDxudW1lcmljLWZyYWN0aW9uLXZhbHVlcz4gfHwgb3JkaW5hbCB8fCBzbGFzaGVkLXplcm8gfHwgPGVhc3QtYXNpYW4tdmFyaWFudC12YWx1ZXM+IHx8IDxlYXN0LWFzaWFuLXdpZHRoLXZhbHVlcz4gfHwgcnVieSBdIixyZWxldmFuY2U6NjQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHZhcmlhbnQgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBmb250IixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtYWx0ZXJuYXRlcyIsYnJvd3NlcnM6WyJGRjM0IiwiUzkuMSJdLHZhbHVlczpbe25hbWU6ImFubm90YXRpb24oKSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBhbHRlcm5hdGUgYW5ub3RhdGlvbiBmb3Jtcy4ifSx7bmFtZToiY2hhcmFjdGVyLXZhcmlhbnQoKSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzcGVjaWZpYyBjaGFyYWN0ZXIgdmFyaWFudHMuIn0se25hbWU6Imhpc3RvcmljYWwtZm9ybXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgaGlzdG9yaWNhbCBmb3Jtcy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIn0se25hbWU6Im9ybmFtZW50cygpIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZXBsYWNlbWVudCBvZiBkZWZhdWx0IGdseXBocyB3aXRoIG9ybmFtZW50cywgaWYgcHJvdmlkZWQgaW4gdGhlIGZvbnQuIn0se25hbWU6InN0eWxlc2V0KCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgd2l0aCBzdHlsaXN0aWMgc2V0cy4ifSx7bmFtZToic3R5bGlzdGljKCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3R5bGlzdGljIGFsdGVybmF0ZXMuIn0se25hbWU6InN3YXNoKCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3dhc2ggZ2x5cGhzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgc3R5bGlzdGljKCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiApIHx8IGhpc3RvcmljYWwtZm9ybXMgfHwgc3R5bGVzZXQoIDxmZWF0dXJlLXZhbHVlLW5hbWU+IyApIHx8IGNoYXJhY3Rlci12YXJpYW50KCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiMgKSB8fCBzd2FzaCggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSB8fCBvcm5hbWVudHMoIDxmZWF0dXJlLXZhbHVlLW5hbWU+ICkgfHwgYW5ub3RhdGlvbiggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzIn1dLGRlc2NyaXB0aW9uOiJGb3IgYW55IGdpdmVuIGNoYXJhY3RlciwgZm9udHMgY2FuIHByb3ZpZGUgYSB2YXJpZXR5IG9mIGFsdGVybmF0ZSBnbHlwaHMgaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgZ2x5cGggZm9yIHRoYXQgY2hhcmFjdGVyLiBUaGlzIHByb3BlcnR5IHByb3ZpZGVzIGNvbnRyb2wgb3ZlciB0aGUgc2VsZWN0aW9uIG9mIHRoZXNlIGFsdGVybmF0ZSBnbHlwaHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtY2FwcyIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkM1MiIsIk8zOSJdLHZhbHVlczpbe25hbWU6ImFsbC1wZXRpdGUtY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBwZXRpdGUgY2FwaXRhbHMgZm9yIGJvdGggdXBwZXIgYW5kIGxvd2VyY2FzZSBsZXR0ZXJzLiJ9LHtuYW1lOiJhbGwtc21hbGwtY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzbWFsbCBjYXBpdGFscyBmb3IgYm90aCB1cHBlciBhbmQgbG93ZXJjYXNlIGxldHRlcnMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vbmUgb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLiJ9LHtuYW1lOiJwZXRpdGUtY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBwZXRpdGUgY2FwaXRhbHMuIn0se25hbWU6InNtYWxsLWNhcHMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc21hbGwgY2FwaXRhbHMuIFNtYWxsLWNhcHMgZ2x5cGhzIHR5cGljYWxseSB1c2UgdGhlIGZvcm0gb2YgdXBwZXJjYXNlIGxldHRlcnMgYnV0IGFyZSByZWR1Y2VkIHRvIHRoZSBzaXplIG9mIGxvd2VyY2FzZSBsZXR0ZXJzLiJ9LHtuYW1lOiJ0aXRsaW5nLWNhcHMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgdGl0bGluZyBjYXBpdGFscy4ifSx7bmFtZToidW5pY2FzZSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBtaXh0dXJlIG9mIHNtYWxsIGNhcGl0YWxzIGZvciB1cHBlcmNhc2UgbGV0dGVycyB3aXRoIG5vcm1hbCBsb3dlcmNhc2UgbGV0dGVycy4ifV0sc3ludGF4OiJub3JtYWwgfCBzbWFsbC1jYXBzIHwgYWxsLXNtYWxsLWNhcHMgfCBwZXRpdGUtY2FwcyB8IGFsbC1wZXRpdGUtY2FwcyB8IHVuaWNhc2UgfCB0aXRsaW5nLWNhcHMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYW50LWNhcHMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBjb250cm9sIG92ZXIgY2FwaXRhbGl6ZWQgZm9ybXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtZWFzdC1hc2lhbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkM2MyIsIk81MCJdLHZhbHVlczpbe25hbWU6ImZ1bGwtd2lkdGgiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBmdWxsLXdpZHRoIHZhcmlhbnRzLiJ9LHtuYW1lOiJqaXMwNCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzA0IGZvcm1zLiJ9LHtuYW1lOiJqaXM3OCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzc4IGZvcm1zLiJ9LHtuYW1lOiJqaXM4MyIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzgzIGZvcm1zLiJ9LHtuYW1lOiJqaXM5MCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzkwIGZvcm1zLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4ifSx7bmFtZToicHJvcG9ydGlvbmFsLXdpZHRoIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZW5kZXJpbmcgb2YgcHJvcG9ydGlvbmFsbHktc3BhY2VkIHZhcmlhbnRzLiJ9LHtuYW1lOiJydWJ5IixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHJ1YnkgdmFyaWFudCBnbHlwaHMuIn0se25hbWU6InNpbXBsaWZpZWQiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBzaW1wbGlmaWVkIGZvcm1zLiJ9LHtuYW1lOiJ0cmFkaXRpb25hbCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIHRyYWRpdGlvbmFsIGZvcm1zLiJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgPGVhc3QtYXNpYW4tdmFyaWFudC12YWx1ZXM+IHx8IDxlYXN0LWFzaWFuLXdpZHRoLXZhbHVlcz4gfHwgcnVieSBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgY29udHJvbCBvZiBnbHlwaCBzdWJzdGl0dXRlIGFuZCBwb3NpdGlvbmluZyBpbiBFYXN0IEFzaWFuIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtbGlnYXR1cmVzIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzM0IiwiTzIxIl0sdmFsdWVzOlt7bmFtZToiYWRkaXRpb25hbC1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgYWRkaXRpb25hbCBsaWdhdHVyZXMuIn0se25hbWU6ImNvbW1vbi1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgY29tbW9uIGxpZ2F0dXJlcy4ifSx7bmFtZToiY29udGV4dHVhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkMzNCIsIk8yMSJdLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgY29udGV4dHVhbCBhbHRlcm5hdGVzLiJ9LHtuYW1lOiJkaXNjcmV0aW9uYXJ5LWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBkaXNjcmV0aW9uYXJ5IGxpZ2F0dXJlcy4ifSx7bmFtZToiaGlzdG9yaWNhbC1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgaGlzdG9yaWNhbCBsaWdhdHVyZXMuIn0se25hbWU6Im5vLWFkZGl0aW9uYWwtbGlnYXR1cmVzIixkZXNjcmlwdGlvbjoiRGlzYWJsZXMgZGlzcGxheSBvZiBhZGRpdGlvbmFsIGxpZ2F0dXJlcy4ifSx7bmFtZToibm8tY29tbW9uLWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkRpc2FibGVzIGRpc3BsYXkgb2YgY29tbW9uIGxpZ2F0dXJlcy4ifSx7bmFtZToibm8tY29udGV4dHVhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkMzNCIsIk8yMSJdLGRlc2NyaXB0aW9uOiJEaXNhYmxlcyBkaXNwbGF5IG9mIGNvbnRleHR1YWwgYWx0ZXJuYXRlcy4ifSx7bmFtZToibm8tZGlzY3JldGlvbmFyeS1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJEaXNhYmxlcyBkaXNwbGF5IG9mIGRpc2NyZXRpb25hcnkgbGlnYXR1cmVzLiJ9LHtuYW1lOiJuby1oaXN0b3JpY2FsLWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkRpc2FibGVzIGRpc3BsYXkgb2YgaGlzdG9yaWNhbCBsaWdhdHVyZXMuIn0se25hbWU6Im5vbmUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNCIsIlM5LjEiLCJDMzQiLCJPMjEiXSxkZXNjcmlwdGlvbjoiRGlzYWJsZXMgYWxsIGxpZ2F0dXJlcy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiSW1wbGllcyB0aGF0IHRoZSBkZWZhdWx0cyBzZXQgYnkgdGhlIGZvbnQgYXJlIHVzZWQuIn1dLHN5bnRheDoibm9ybWFsIHwgbm9uZSB8IFsgPGNvbW1vbi1saWctdmFsdWVzPiB8fCA8ZGlzY3JldGlvbmFyeS1saWctdmFsdWVzPiB8fCA8aGlzdG9yaWNhbC1saWctdmFsdWVzPiB8fCA8Y29udGV4dHVhbC1hbHQtdmFsdWVzPiBdIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1saWdhdHVyZXMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBjb250cm9sIG92ZXIgd2hpY2ggbGlnYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBBIHZhbHVlIG9mIOKAmG5vcm1hbOKAmSBpbXBsaWVzIHRoYXQgdGhlIGRlZmF1bHRzIHNldCBieSB0aGUgZm9udCBhcmUgdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudC1udW1lcmljIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzUyIiwiTzM5Il0sdmFsdWVzOlt7bmFtZToiZGlhZ29uYWwtZnJhY3Rpb25zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxpbmluZyBkaWFnb25hbCBmcmFjdGlvbnMuIn0se25hbWU6ImxpbmluZy1udW1zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxpbmluZyBudW1lcmFscy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIn0se25hbWU6Im9sZHN0eWxlLW51bXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygb2xkLXN0eWxlIG51bWVyYWxzLiJ9LHtuYW1lOiJvcmRpbmFsIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxldHRlciBmb3JtcyB1c2VkIHdpdGggb3JkaW5hbCBudW1iZXJzLiJ9LHtuYW1lOiJwcm9wb3J0aW9uYWwtbnVtcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBwcm9wb3J0aW9uYWwgbnVtZXJhbHMuIn0se25hbWU6InNsYXNoZWQtemVybyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzbGFzaGVkIHplcm9zLiJ9LHtuYW1lOiJzdGFja2VkLWZyYWN0aW9ucyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBsaW5pbmcgc3RhY2tlZCBmcmFjdGlvbnMuIn0se25hbWU6InRhYnVsYXItbnVtcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiB0YWJ1bGFyIG51bWVyYWxzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgPG51bWVyaWMtZmlndXJlLXZhbHVlcz4gfHwgPG51bWVyaWMtc3BhY2luZy12YWx1ZXM+IHx8IDxudW1lcmljLWZyYWN0aW9uLXZhbHVlcz4gfHwgb3JkaW5hbCB8fCBzbGFzaGVkLXplcm8gXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtbnVtZXJpYyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGNvbnRyb2wgb3ZlciBudW1lcmljYWwgZm9ybXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtcG9zaXRpb24iLGJyb3dzZXJzOlsiRkYzNCIsIlM5LjEiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4ifSx7bmFtZToic3ViIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHN1YnNjcmlwdCB2YXJpYW50cyAoT3BlblR5cGUgZmVhdHVyZTogc3VicykuIn0se25hbWU6InN1cGVyIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHN1cGVyc2NyaXB0IHZhcmlhbnRzIChPcGVuVHlwZSBmZWF0dXJlOiBzdXBzKS4ifV0sc3ludGF4OiJub3JtYWwgfCBzdWIgfCBzdXBlciIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgdmVydGljYWwgcG9zaXRpb24iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtd2VpZ2h0Iix2YWx1ZXM6W3tuYW1lOiIxMDAiLGRlc2NyaXB0aW9uOiJUaGluIn0se25hbWU6IjIwMCIsZGVzY3JpcHRpb246IkV4dHJhIExpZ2h0IChVbHRyYSBMaWdodCkifSx7bmFtZToiMzAwIixkZXNjcmlwdGlvbjoiTGlnaHQifSx7bmFtZToiNDAwIixkZXNjcmlwdGlvbjoiTm9ybWFsIn0se25hbWU6IjUwMCIsZGVzY3JpcHRpb246Ik1lZGl1bSJ9LHtuYW1lOiI2MDAiLGRlc2NyaXB0aW9uOiJTZW1pIEJvbGQgKERlbWkgQm9sZCkifSx7bmFtZToiNzAwIixkZXNjcmlwdGlvbjoiQm9sZCJ9LHtuYW1lOiI4MDAiLGRlc2NyaXB0aW9uOiJFeHRyYSBCb2xkIChVbHRyYSBCb2xkKSJ9LHtuYW1lOiI5MDAiLGRlc2NyaXB0aW9uOiJCbGFjayAoSGVhdnkpIn0se25hbWU6ImJvbGQiLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDcwMCJ9LHtuYW1lOiJib2xkZXIiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdlaWdodCBvZiB0aGUgZmFjZSBib2xkZXIgdGhhbiB0aGUgaW5oZXJpdGVkIHZhbHVlLiJ9LHtuYW1lOiJsaWdodGVyIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB3ZWlnaHQgb2YgdGhlIGZhY2UgbGlnaHRlciB0aGFuIHRoZSBpbmhlcml0ZWQgdmFsdWUuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlNhbWUgYXMgNDAwIn1dLHN5bnRheDoiPGZvbnQtd2VpZ2h0LWFic29sdXRlPnsxLDJ9IixyZWxldmFuY2U6OTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtd2VpZ2h0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2VpZ2h0IG9mIGdseXBocyBpbiB0aGUgZm9udCwgdGhlaXIgZGVncmVlIG9mIGJsYWNrbmVzcyBvciBzdHJva2UgdGhpY2tuZXNzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyBnbHlwaCBvcmllbnRhdGlvbiB3aGVuIHRoZSBpbmxpbmUtcHJvZ3Jlc3Npb24tZGlyZWN0aW9uIGlzIGhvcml6b250YWwuIixyZXN0cmljdGlvbnM6WyJhbmdsZSIsIm51bWJlciJdfSx7bmFtZToiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBvcmllbnRhdGlvbiBiYXNlZCBvbiB0aGUgZnVsbHdpZHRoIG9yIG5vbi1mdWxsd2lkdGggY2hhcmFjdGVycyBhbmQgdGhlIG1vc3QgY29tbW9uIG9yaWVudGF0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIGdseXBoIG9yaWVudGF0aW9uIHdoZW4gdGhlIGlubGluZS1wcm9ncmVzc2lvbi1kaXJlY3Rpb24gaXMgdmVydGljYWwuIixyZXN0cmljdGlvbnM6WyJhbmdsZSIsIm51bWJlciIsImVudW0iXX0se25hbWU6ImdyaWQtYXJlYSIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW3igJlzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4gWyAvIDxncmlkLWxpbmU+IF17MCwzfSIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWFyZWEifV0sZGVzY3JpcHRpb246IkRldGVybWluZSBhIGdyaWQgaXRlbeKAmXMgc2l6ZSBhbmQgbG9jYXRpb24gd2l0aGluIHRoZSBncmlkIGJ5IGNvbnRyaWJ1dGluZyBhIGxpbmUsIGEgc3Bhbiwgb3Igbm90aGluZyAoYXV0b21hdGljKSB0byBpdHMgZ3JpZCBwbGFjZW1lbnQuIFNob3J0aGFuZCBmb3IgJ2dyaWQtcm93LXN0YXJ0JywgJ2dyaWQtY29sdW1uLXN0YXJ0JywgJ2dyaWQtcm93LWVuZCcsIGFuZCAnZ3JpZC1jb2x1bW4tZW5kJy4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIl19LHtuYW1lOiJncmlkIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHN5bnRheDoiPCdncmlkLXRlbXBsYXRlJz4gfCA8J2dyaWQtdGVtcGxhdGUtcm93cyc+IC8gWyBhdXRvLWZsb3cgJiYgZGVuc2U/IF0gPCdncmlkLWF1dG8tY29sdW1ucyc+PyB8IFsgYXV0by1mbG93ICYmIGRlbnNlPyBdIDwnZ3JpZC1hdXRvLXJvd3MnPj8gLyA8J2dyaWQtdGVtcGxhdGUtY29sdW1ucyc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQifV0sZGVzY3JpcHRpb246IlRoZSBncmlkIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB0aGF0IHNldHMgYWxsIG9mIHRoZSBleHBsaWNpdCBncmlkIHByb3BlcnRpZXMgKCdncmlkLXRlbXBsYXRlLXJvd3MnLCAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJywgYW5kICdncmlkLXRlbXBsYXRlLWFyZWFzJyksIGFuZCBhbGwgdGhlIGltcGxpY2l0IGdyaWQgcHJvcGVydGllcyAoJ2dyaWQtYXV0by1yb3dzJywgJ2dyaWQtYXV0by1jb2x1bW5zJywgYW5kICdncmlkLWF1dG8tZmxvdycpLCBpbiBhIHNpbmdsZSBkZWNsYXJhdGlvbi4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJsZW5ndGgiLCJwZXJjZW50YWdlIiwic3RyaW5nIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1hdXRvLWNvbHVtbnMiLHZhbHVlczpbe25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW4tY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFzIGEgbWF4aW11bSwgaWRlbnRpY2FsIHRvICdtYXgtY29udGVudCcuIEFzIGEgbWluaW11bSwgcmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW5pbXVtIHNpemUgKGFzIHNwZWNpZmllZCBieSBtaW4td2lkdGgvbWluLWhlaWdodCkgb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtaW5tYXgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYSBzaXplIHJhbmdlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW4gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXguIn1dLHN5bnRheDoiPHRyYWNrLXNpemU+KyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWF1dG8tY29sdW1ucyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplIG9mIGltcGxpY2l0bHkgY3JlYXRlZCBjb2x1bW5zLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiZ3JpZC1hdXRvLWZsb3ciLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToicm93IixkZXNjcmlwdGlvbjoiVGhlIGF1dG8tcGxhY2VtZW50IGFsZ29yaXRobSBwbGFjZXMgaXRlbXMgYnkgZmlsbGluZyBlYWNoIHJvdyBpbiB0dXJuLCBhZGRpbmcgbmV3IHJvd3MgYXMgbmVjZXNzYXJ5LiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJUaGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHBsYWNlcyBpdGVtcyBieSBmaWxsaW5nIGVhY2ggY29sdW1uIGluIHR1cm4sIGFkZGluZyBuZXcgY29sdW1ucyBhcyBuZWNlc3NhcnkuIn0se25hbWU6ImRlbnNlIixkZXNjcmlwdGlvbjoiSWYgc3BlY2lmaWVkLCB0aGUgYXV0by1wbGFjZW1lbnQgYWxnb3JpdGhtIHVzZXMgYSDigJxkZW5zZeKAnSBwYWNraW5nIGFsZ29yaXRobSwgd2hpY2ggYXR0ZW1wdHMgdG8gZmlsbCBpbiBob2xlcyBlYXJsaWVyIGluIHRoZSBncmlkIGlmIHNtYWxsZXIgaXRlbXMgY29tZSB1cCBsYXRlci4ifV0sc3ludGF4OiJbIHJvdyB8IGNvbHVtbiBdIHx8IGRlbnNlIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtYXV0by1mbG93In1dLGRlc2NyaXB0aW9uOiJDb250cm9scyBob3cgdGhlIGF1dG8tcGxhY2VtZW50IGFsZ29yaXRobSB3b3Jrcywgc3BlY2lmeWluZyBleGFjdGx5IGhvdyBhdXRvLXBsYWNlZCBpdGVtcyBnZXQgZmxvd2VkIGludG8gdGhlIGdyaWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJncmlkLWF1dG8tcm93cyIsdmFsdWVzOlt7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifV0sc3ludGF4OiI8dHJhY2stc2l6ZT4rIixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtYXV0by1yb3dzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUgb2YgaW1wbGljaXRseSBjcmVhdGVkIHJvd3MuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJncmlkLWNvbHVtbiIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW3igJlzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4gWyAvIDxncmlkLWxpbmU+IF0/IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtY29sdW1uIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yICdncmlkLWNvbHVtbi1zdGFydCcgYW5kICdncmlkLWNvbHVtbi1lbmQnLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLWNvbHVtbi1lbmQiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBwcm9wZXJ0eSBjb250cmlidXRlcyBub3RoaW5nIHRvIHRoZSBncmlkIGl0ZW3igJlzIHBsYWNlbWVudCwgaW5kaWNhdGluZyBhdXRvLXBsYWNlbWVudCwgYW4gYXV0b21hdGljIHNwYW4sIG9yIGEgZGVmYXVsdCBzcGFuIG9mIG9uZS4ifSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246IkNvbnRyaWJ1dGVzIGEgZ3JpZCBzcGFuIHRvIHRoZSBncmlkIGl0ZW3igJlzIHBsYWNlbWVudCBzdWNoIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgZWRnZSBvZiB0aGUgZ3JpZCBpdGVt4oCZcyBncmlkIGFyZWEgaXMgTiBsaW5lcyBmcm9tIGl0cyBvcHBvc2l0ZSBlZGdlLiJ9XSxzeW50YXg6IjxncmlkLWxpbmU+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtY29sdW1uLWVuZCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lIGEgZ3JpZCBpdGVt4oCZcyBzaXplIGFuZCBsb2NhdGlvbiB3aXRoaW4gdGhlIGdyaWQgYnkgY29udHJpYnV0aW5nIGEgbGluZSwgYSBzcGFuLCBvciBub3RoaW5nIChhdXRvbWF0aWMpIHRvIGl0cyBncmlkIHBsYWNlbWVudC4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1jb2x1bW4tZ2FwIixicm93c2VyczpbIkZGNTIiLCJDNTciLCJTMTAuMSIsIk80NCJdLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgZ3V0dGVycyBiZXR3ZWVuIGdyaWQgY29sdW1ucy4gUmVwbGFjZWQgYnkgJ2NvbHVtbi1nYXAnIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiJncmlkLWNvbHVtbi1zdGFydCIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW3igJlzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1jb2x1bW4tc3RhcnQifV0sZGVzY3JpcHRpb246IkRldGVybWluZSBhIGdyaWQgaXRlbeKAmXMgc2l6ZSBhbmQgbG9jYXRpb24gd2l0aGluIHRoZSBncmlkIGJ5IGNvbnRyaWJ1dGluZyBhIGxpbmUsIGEgc3Bhbiwgb3Igbm90aGluZyAoYXV0b21hdGljKSB0byBpdHMgZ3JpZCBwbGFjZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImdyaWQtZ2FwIixicm93c2VyczpbIkZGNTIiLCJDNTciLCJTMTAuMSIsIk80NCJdLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPCdncmlkLXJvdy1nYXAnPiA8J2dyaWQtY29sdW1uLWdhcCc+PyIscmVsZXZhbmNlOjMsZGVzY3JpcHRpb246IlNob3J0aGFuZCB0aGF0IHNwZWNpZmllcyB0aGUgZ3V0dGVycyBiZXR3ZWVuIGdyaWQgY29sdW1ucyBhbmQgZ3JpZCByb3dzIGluIG9uZSBkZWNsYXJhdGlvbi4gUmVwbGFjZWQgYnkgJ2dhcCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImdyaWQtcm93Iixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbeKAmXMgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiBbIC8gPGdyaWQtbGluZT4gXT8iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1yb3cifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3IgJ2dyaWQtcm93LXN0YXJ0JyBhbmQgJ2dyaWQtcm93LWVuZCcuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImdyaWQtcm93LWVuZCIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbeKAmXMgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW3igJlzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1yb3ctZW5kIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmUgYSBncmlkIGl0ZW3igJlzIHNpemUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZ3JpZCBieSBjb250cmlidXRpbmcgYSBsaW5lLCBhIHNwYW4sIG9yIG5vdGhpbmcgKGF1dG9tYXRpYykgdG8gaXRzIGdyaWQgcGxhY2VtZW50LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLXJvdy1nYXAiLGJyb3dzZXJzOlsiRkY1MiIsIkM1NyIsIlMxMC4xIiwiTzQ0Il0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6MSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBndXR0ZXJzIGJldHdlZW4gZ3JpZCByb3dzLiBSZXBsYWNlZCBieSAncm93LWdhcCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImdyaWQtcm93LXN0YXJ0Iixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVt4oCZcyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbeKAmXMgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXJvdy1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lIGEgZ3JpZCBpdGVt4oCZcyBzaXplIGFuZCBsb2NhdGlvbiB3aXRoaW4gdGhlIGdyaWQgYnkgY29udHJpYnV0aW5nIGEgbGluZSwgYSBzcGFuLCBvciBub3RoaW5nIChhdXRvbWF0aWMpIHRvIGl0cyBncmlkIHBsYWNlbWVudC4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC10ZW1wbGF0ZSIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiU2V0cyBhbGwgdGhyZWUgcHJvcGVydGllcyB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6InN1YmdyaWQiLGRlc2NyaXB0aW9uOiJTZXRzICdncmlkLXRlbXBsYXRlLXJvd3MnIGFuZCAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJyB0byAnc3ViZ3JpZCcsIGFuZCAnZ3JpZC10ZW1wbGF0ZS1hcmVhcycgdG8gaXRzIGluaXRpYWwgdmFsdWUuIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifSx7bmFtZToicmVwZWF0KCkiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGEgcmVwZWF0ZWQgZnJhZ21lbnQgb2YgdGhlIHRyYWNrIGxpc3QsIGFsbG93aW5nIGEgbGFyZ2UgbnVtYmVyIG9mIGNvbHVtbnMgb3Igcm93cyB0aGF0IGV4aGliaXQgYSByZWN1cnJpbmcgcGF0dGVybiB0byBiZSB3cml0dGVuIGluIGEgbW9yZSBjb21wYWN0IGZvcm0uIn1dLHN5bnRheDoibm9uZSB8IFsgPCdncmlkLXRlbXBsYXRlLXJvd3MnPiAvIDwnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJz4gXSB8IFsgPGxpbmUtbmFtZXM+PyA8c3RyaW5nPiA8dHJhY2stc2l6ZT4/IDxsaW5lLW5hbWVzPj8gXSsgWyAvIDxleHBsaWNpdC10cmFjay1saXN0PiBdPyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXRlbXBsYXRlIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yIHNldHRpbmcgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLCBncmlkLXRlbXBsYXRlLXJvd3MsIGFuZCBncmlkLXRlbXBsYXRlLWFyZWFzIGluIGEgc2luZ2xlIGRlY2xhcmF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiJncmlkLXRlbXBsYXRlLWFyZWFzIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZ3JpZCBjb250YWluZXIgZG9lc27igJl0IGRlZmluZSBhbnkgbmFtZWQgZ3JpZCBhcmVhcy4ifV0sc3ludGF4OiJub25lIHwgPHN0cmluZz4rIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtdGVtcGxhdGUtYXJlYXMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBuYW1lZCBncmlkIGFyZWFzLCB3aGljaCBhcmUgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgcGFydGljdWxhciBncmlkIGl0ZW0sIGJ1dCBjYW4gYmUgcmVmZXJlbmNlZCBmcm9tIHRoZSBncmlkLXBsYWNlbWVudCBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIl19LHtuYW1lOiJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBleHBsaWNpdCBncmlkOyBhbnkgcm93cy9jb2x1bW5zIHdpbGwgYmUgaW1wbGljaXRseSBnZW5lcmF0ZWQuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW4tY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFzIGEgbWF4aW11bSwgaWRlbnRpY2FsIHRvICdtYXgtY29udGVudCcuIEFzIGEgbWluaW11bSwgcmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW5pbXVtIHNpemUgKGFzIHNwZWNpZmllZCBieSBtaW4td2lkdGgvbWluLWhlaWdodCkgb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJzdWJncmlkIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGdyaWQgd2lsbCBhbGlnbiB0byBpdHMgcGFyZW50IGdyaWQgaW4gdGhhdCBheGlzLiJ9LHtuYW1lOiJtaW5tYXgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYSBzaXplIHJhbmdlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW4gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXguIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHJlcGVhdGVkIGZyYWdtZW50IG9mIHRoZSB0cmFjayBsaXN0LCBhbGxvd2luZyBhIGxhcmdlIG51bWJlciBvZiBjb2x1bW5zIG9yIHJvd3MgdGhhdCBleGhpYml0IGEgcmVjdXJyaW5nIHBhdHRlcm4gdG8gYmUgd3JpdHRlbiBpbiBhIG1vcmUgY29tcGFjdCBmb3JtLiJ9XSxzeW50YXg6Im5vbmUgfCA8dHJhY2stbGlzdD4gfCA8YXV0by10cmFjay1saXN0PiB8IHN1YmdyaWQgPGxpbmUtbmFtZS1saXN0Pj8iLHJlbGV2YW5jZTo1OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIn1dLGRlc2NyaXB0aW9uOiJzcGVjaWZpZXMsIGFzIGEgc3BhY2Utc2VwYXJhdGVkIHRyYWNrIGxpc3QsIHRoZSBsaW5lIG5hbWVzIGFuZCB0cmFjayBzaXppbmcgZnVuY3Rpb25zIG9mIHRoZSBncmlkLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiJncmlkLXRlbXBsYXRlLXJvd3MiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBleHBsaWNpdCBncmlkOyBhbnkgcm93cy9jb2x1bW5zIHdpbGwgYmUgaW1wbGljaXRseSBnZW5lcmF0ZWQuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW4tY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFzIGEgbWF4aW11bSwgaWRlbnRpY2FsIHRvICdtYXgtY29udGVudCcuIEFzIGEgbWluaW11bSwgcmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW5pbXVtIHNpemUgKGFzIHNwZWNpZmllZCBieSBtaW4td2lkdGgvbWluLWhlaWdodCkgb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJzdWJncmlkIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGdyaWQgd2lsbCBhbGlnbiB0byBpdHMgcGFyZW50IGdyaWQgaW4gdGhhdCBheGlzLiJ9LHtuYW1lOiJtaW5tYXgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYSBzaXplIHJhbmdlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW4gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXguIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHJlcGVhdGVkIGZyYWdtZW50IG9mIHRoZSB0cmFjayBsaXN0LCBhbGxvd2luZyBhIGxhcmdlIG51bWJlciBvZiBjb2x1bW5zIG9yIHJvd3MgdGhhdCBleGhpYml0IGEgcmVjdXJyaW5nIHBhdHRlcm4gdG8gYmUgd3JpdHRlbiBpbiBhIG1vcmUgY29tcGFjdCBmb3JtLiJ9XSxzeW50YXg6Im5vbmUgfCA8dHJhY2stbGlzdD4gfCA8YXV0by10cmFjay1saXN0PiB8IHN1YmdyaWQgPGxpbmUtbmFtZS1saXN0Pj8iLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC10ZW1wbGF0ZS1yb3dzIn1dLGRlc2NyaXB0aW9uOiJzcGVjaWZpZXMsIGFzIGEgc3BhY2Utc2VwYXJhdGVkIHRyYWNrIGxpc3QsIHRoZSBsaW5lIG5hbWVzIGFuZCB0cmFjayBzaXppbmcgZnVuY3Rpb25zIG9mIHRoZSBncmlkLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiJoZWlnaHQiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgaGVpZ2h0IGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9LHtuYW1lOiJmaXQtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBtaW4tY29udGVudCBpbmxpbmUgc2l6ZSBvciBtaW4tY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9XSxzeW50YXg6Ijx2aWV3cG9ydC1sZW5ndGg+ezEsMn0iLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaGVpZ2h0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGhlaWdodCBvZiB0aGUgY29udGVudCBhcmVhLCBwYWRkaW5nIGFyZWEgb3IgYm9yZGVyIGFyZWEgKGRlcGVuZGluZyBvbiAnYm94LXNpemluZycpIG9mIGNlcnRhaW4gYm94ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJoeXBoZW5zIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29uZGl0aW9uYWwgaHlwaGVuYXRpb24gY2hhcmFjdGVycyBpbnNpZGUgYSB3b3JkLCBpZiBwcmVzZW50LCB0YWtlIHByaW9yaXR5IG92ZXIgYXV0b21hdGljIHJlc291cmNlcyB3aGVuIGRldGVybWluaW5nIGh5cGhlbmF0aW9uIHBvaW50cyB3aXRoaW4gdGhlIHdvcmQuIn0se25hbWU6Im1hbnVhbCIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBvbmx5IGJyb2tlbiBhdCBsaW5lIGJyZWFrcyB3aGVyZSB0aGVyZSBhcmUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgdGhhdCBzdWdnZXN0IGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG5vdCBicm9rZW4gYXQgbGluZSBicmVha3MsIGV2ZW4gaWYgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgc3VnZ2VzdCBsaW5lIGJyZWFrIHBvaW50cy4ifV0sc3ludGF4OiJub25lIHwgbWFudWFsIHwgYXV0byIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9oeXBoZW5zIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQgdG8gY3JlYXRlIG1vcmUgYnJlYWsgb3Bwb3J0dW5pdGllcyB3aXRoaW4gYSBsaW5lIG9mIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJpbWFnZS1vcmllbnRhdGlvbiIsYnJvd3NlcnM6WyJFODEiLCJGRjI2IiwiUzEzLjEiLCJDODEiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJmbGlwIixkZXNjcmlwdGlvbjoiQWZ0ZXIgcm90YXRpbmcgYnkgdGhlIHByZWNlZGVkaW5nIGFuZ2xlLCB0aGUgaW1hZ2UgaXMgZmxpcHBlZCBob3Jpem9udGFsbHkuIERlZmF1bHRzIHRvIDBkZWcgaWYgdGhlIGFuZ2xlIGlzIG9tbWl0dGVkLiJ9LHtuYW1lOiJmcm9tLWltYWdlIixkZXNjcmlwdGlvbjoiSWYgdGhlIGltYWdlIGhhcyBhbiBvcmllbnRhdGlvbiBzcGVjaWZpZWQgaW4gaXRzIG1ldGFkYXRhLCBzdWNoIGFzIEVYSUYsIHRoaXMgdmFsdWUgY29tcHV0ZXMgdG8gdGhlIGFuZ2xlIHRoYXQgdGhlIG1ldGFkYXRhIHNwZWNpZmllcyBpcyBuZWNlc3NhcnkgdG8gY29ycmVjdGx5IG9yaWVudCB0aGUgaW1hZ2UuIn1dLHN5bnRheDoiZnJvbS1pbWFnZSB8IDxhbmdsZT4gfCBbIDxhbmdsZT4/IGZsaXAgXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbWFnZS1vcmllbnRhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGFuIG9ydGhvZ29uYWwgcm90YXRpb24gdG8gYmUgYXBwbGllZCB0byBhbiBpbWFnZSBiZWZvcmUgaXQgaXMgbGFpZCBvdXQuIixyZXN0cmljdGlvbnM6WyJhbmdsZSJdfSx7bmFtZToiaW1hZ2UtcmVuZGVyaW5nIixicm93c2VyczpbIkU3OSIsIkZGMy42IiwiUzYiLCJDMTMiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIHNob3VsZCBiZSBzY2FsZWQgd2l0aCBhbiBhbGdvcml0aG0gdGhhdCBtYXhpbWl6ZXMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGltYWdlLiJ9LHtuYW1lOiJjcmlzcC1lZGdlcyIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBtdXN0IGJlIHNjYWxlZCB3aXRoIGFuIGFsZ29yaXRobSB0aGF0IHByZXNlcnZlcyBjb250cmFzdCBhbmQgZWRnZXMgaW4gdGhlIGltYWdlLCBhbmQgd2hpY2ggZG9lcyBub3Qgc21vb3RoIGNvbG9ycyBvciBpbnRyb2R1Y2UgYmx1ciB0byB0aGUgaW1hZ2UgaW4gdGhlIHByb2Nlc3MuIn0se25hbWU6Ii1tb3otY3Jpc3AtZWRnZXMiLGJyb3dzZXJzOlsiRTc5IiwiRkYzLjYiLCJTNiIsIkMxMyIsIk8xNSJdfSx7bmFtZToib3B0aW1pemVRdWFsaXR5IixkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZC4ifSx7bmFtZToib3B0aW1pemVTcGVlZCIsZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIn0se25hbWU6InBpeGVsYXRlZCIsZGVzY3JpcHRpb246IldoZW4gc2NhbGluZyB0aGUgaW1hZ2UgdXAsIHRoZSAnbmVhcmVzdCBuZWlnaGJvcicgb3Igc2ltaWxhciBhbGdvcml0aG0gbXVzdCBiZSB1c2VkLCBzbyB0aGF0IHRoZSBpbWFnZSBhcHBlYXJzIHRvIGJlIHNpbXBseSBjb21wb3NlZCBvZiB2ZXJ5IGxhcmdlIHBpeGVscy4ifV0sc3ludGF4OiJhdXRvIHwgY3Jpc3AtZWRnZXMgfCBwaXhlbGF0ZWQiLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW1hZ2UtcmVuZGVyaW5nIn1dLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhIGhpbnQgdG8gdGhlIHVzZXItYWdlbnQgYWJvdXQgd2hhdCBhc3BlY3RzIG9mIGFuIGltYWdlIGFyZSBtb3N0IGltcG9ydGFudCB0byBwcmVzZXJ2ZSB3aGVuIHRoZSBpbWFnZSBpcyBzY2FsZWQsIHRvIGFpZCB0aGUgdXNlci1hZ2VudCBpbiB0aGUgY2hvaWNlIG9mIGFuIGFwcHJvcHJpYXRlIHNjYWxpbmcgYWxnb3JpdGhtLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiaW1lLW1vZGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYzIiwiSUU1Il0sdmFsdWVzOlt7bmFtZToiYWN0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgaXMgaW5pdGlhbGx5IGFjdGl2ZTsgdGV4dCBlbnRyeSBpcyBwZXJmb3JtZWQgdXNpbmcgaXQgdW5sZXNzIHRoZSB1c2VyIHNwZWNpZmljYWxseSBkaXNtaXNzZXMgaXQuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJObyBjaGFuZ2UgaXMgbWFkZSB0byB0aGUgY3VycmVudCBpbnB1dCBtZXRob2QgZWRpdG9yIHN0YXRlLiBUaGlzIGlzIHRoZSBkZWZhdWx0LiJ9LHtuYW1lOiJkaXNhYmxlZCIsZGVzY3JpcHRpb246IlRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGlzIGRpc2FibGVkIGFuZCBtYXkgbm90IGJlIGFjdGl2YXRlZCBieSB0aGUgdXNlci4ifSx7bmFtZToiaW5hY3RpdmUiLGRlc2NyaXB0aW9uOiJUaGUgaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBpbml0aWFsbHkgaW5hY3RpdmUsIGJ1dCB0aGUgdXNlciBtYXkgYWN0aXZhdGUgaXQgaWYgdGhleSB3aXNoLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgSU1FIHN0YXRlIHNob3VsZCBiZSBub3JtYWw7IHRoaXMgdmFsdWUgY2FuIGJlIHVzZWQgaW4gYSB1c2VyIHN0eWxlIHNoZWV0IHRvIG92ZXJyaWRlIHRoZSBwYWdlIHNldHRpbmcuIn1dLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiYXV0byB8IG5vcm1hbCB8IGFjdGl2ZSB8IGluYWN0aXZlIHwgZGlzYWJsZWQiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbWUtbW9kZSJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGZvciB0ZXh0IGZpZWxkcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImlubGluZS1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8J3dpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5saW5lLXNpemUifV0sZGVzY3JpcHRpb246IlNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Imlzb2xhdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzgiLCJDNDEiLCJPMzAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRWxlbWVudHMgYXJlIG5vdCBpc29sYXRlZCB1bmxlc3MgYW4gb3BlcmF0aW9uIGlzIGFwcGxpZWQgdGhhdCBjYXVzZXMgdGhlIGNyZWF0aW9uIG9mIGEgc3RhY2tpbmcgY29udGV4dC4ifSx7bmFtZToiaXNvbGF0ZSIsZGVzY3JpcHRpb246IkluIENTUyB3aWxsIHR1cm4gdGhlIGVsZW1lbnQgaW50byBhIHN0YWNraW5nIGNvbnRleHQuIn1dLHN5bnRheDoiYXV0byB8IGlzb2xhdGUiLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaXNvbGF0aW9uIn1dLGRlc2NyaXB0aW9uOiJJbiBDU1Mgc2V0dGluZyB0byAnaXNvbGF0ZScgd2lsbCB0dXJuIHRoZSBlbGVtZW50IGludG8gYSBzdGFja2luZyBjb250ZXh0LiBJbiBTVkcsIGl0IGRlZmluZXMgd2hldGhlciBhbiBlbGVtZW50IGlzIGlzb2xhdGVkIG9yIG5vdC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Imp1c3RpZnktY29udGVudCIsdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGluIHRoZSBtYWluIGF4aXMuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSBlbmQgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBpbiB0aGUgbWFpbiBheGlzLiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBpbiB0aGUgbWFpbiBheGlzLiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgcGFja2VkIGZsdXNoIHRvIGVhY2ggb3RoZXIgdG93YXJkIHRoZSByaWdodCBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGluIHRoZSBtYWluIGF4aXMuIn0se25hbWU6InNhZmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgc2l6ZSBvZiB0aGUgaXRlbSBvdmVyZmxvd3MgdGhlIGFsaWdubWVudCBjb250YWluZXIsIHRoZSBpdGVtIGlzIGluc3RlYWQgYWxpZ25lZCBhcyBpZiB0aGUgYWxpZ25tZW50IG1vZGUgd2VyZSBzdGFydC4ifSx7bmFtZToidW5zYWZlIixkZXNjcmlwdGlvbjoiUmVnYXJkbGVzcyBvZiB0aGUgcmVsYXRpdmUgc2l6ZXMgb2YgdGhlIGl0ZW0gYW5kIGFsaWdubWVudCBjb250YWluZXIsIHRoZSBnaXZlbiBhbGlnbm1lbnQgdmFsdWUgaXMgaG9ub3JlZC4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IklmIHRoZSBjb21iaW5lZCBzaXplIG9mIHRoZSBhbGlnbm1lbnQgc3ViamVjdHMgaXMgbGVzcyB0aGFuIHRoZSBzaXplIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyLCBhbnkgYXV0by1zaXplZCBhbGlnbm1lbnQgc3ViamVjdHMgaGF2ZSB0aGVpciBzaXplIGluY3JlYXNlZCBlcXVhbGx5IChub3QgcHJvcG9ydGlvbmFsbHkpLCB3aGlsZSBzdGlsbCByZXNwZWN0aW5nIHRoZSBjb25zdHJhaW50cyBpbXBvc2VkIGJ5IG1heC1oZWlnaHQvbWF4LXdpZHRoIChvciBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkpLCBzbyB0aGF0IHRoZSBjb21iaW5lZCBzaXplIGV4YWN0bHkgZmlsbHMgdGhlIGFsaWdubWVudCBjb250YWluZXIuIn0se25hbWU6InNwYWNlLWV2ZW5seSIsZGVzY3JpcHRpb246IlRoZSBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIHdpdGhpbiB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciBhbG9uZyB0aGUgbWFpbiBheGlzLiJ9LHtuYW1lOiJmbGV4LWVuZCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1zdGFydCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzcGFjZS1hcm91bmQiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGxpbmUsIHdpdGggaGFsZi1zaXplIHNwYWNlcyBvbiBlaXRoZXIgZW5kLiJ9LHtuYW1lOiJzcGFjZS1iZXR3ZWVuIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBwYXJ0aWNpcGF0aW9uIGluIGZpcnN0LWJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToiZmlyc3QgYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgcGFydGljaXBhdGlvbiBpbiBmaXJzdC1iYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6Imxhc3QgYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgcGFydGljaXBhdGlvbiBpbiBsYXN0LWJhc2VsaW5lIGFsaWdubWVudC4ifV0sc3ludGF4OiJub3JtYWwgfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gWyA8Y29udGVudC1wb3NpdGlvbj4gfCBsZWZ0IHwgcmlnaHQgXSIscmVsZXZhbmNlOjg1LGRlc2NyaXB0aW9uOiJBbGlnbnMgZmxleCBpdGVtcyBhbG9uZyB0aGUgbWFpbiBheGlzIG9mIHRoZSBjdXJyZW50IGxpbmUgb2YgdGhlIGZsZXggY29udGFpbmVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToia2VybmluZyIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCBhZGp1c3QgaW50ZXItZ2x5cGggc3BhY2luZyBiYXNlZCBvbiBrZXJuaW5nIHRhYmxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgZm9udCB0aGF0IHdpbGwgYmUgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgdXNlciBhZ2VudCBzaG91bGQgYWRqdXN0IGludGVyLWdseXBoIHNwYWNpbmcgYmFzZWQgb24ga2VybmluZyB0YWJsZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlbGV2YW50IGZvbnQgb3IgaW5zdGVhZCBkaXNhYmxlIGF1dG8ta2VybmluZyBhbmQgc2V0IGludGVyLWNoYXJhY3RlciBzcGFjaW5nIHRvIGEgc3BlY2lmaWMgbGVuZ3RoLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwiZW51bSJdfSx7bmFtZToibGVmdCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbCJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9sZWZ0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZhciBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94J3MgbGVmdCBtYXJnaW4gZWRnZSBpcyBvZmZzZXQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGJveCdzICdjb250YWluaW5nIGJsb2NrJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImxldHRlci1zcGFjaW5nIix2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgc3BhY2luZyBpcyB0aGUgbm9ybWFsIHNwYWNpbmcgZm9yIHRoZSBjdXJyZW50IGZvbnQuIEl0IGlzIHR5cGljYWxseSB6ZXJvLWxlbmd0aC4ifV0sc3ludGF4OiJub3JtYWwgfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjgxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9sZXR0ZXItc3BhY2luZyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtaW5pbXVtLCBtYXhpbXVtLCBhbmQgb3B0aW1hbCBzcGFjaW5nIGJldHdlZW4gZ3JhcGhlbWUgY2x1c3RlcnMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImxpZ2h0aW5nLWNvbG9yIixicm93c2VyczpbIkUiLCJDNSIsIkZGMyIsIklFMTAiLCJPOSIsIlM2Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBjb2xvciBvZiB0aGUgbGlnaHQgc291cmNlIGZvciBmaWx0ZXIgcHJpbWl0aXZlcyAnZmVEaWZmdXNlTGlnaHRpbmcnIGFuZCAnZmVTcGVjdWxhckxpZ2h0aW5nJy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJsaW5lLWJyZWFrIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIFVBIGRldGVybWluZXMgdGhlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJlc3RyaWN0aW9ucyB0byB1c2UgZm9yIENKSyBzY3JpcHRzLCBhbmQgaXQgbWF5IHZhcnkgdGhlIHJlc3RyaWN0aW9ucyBiYXNlZCBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lOyBlLmcuLCB1c2UgYSBsZXNzIHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFrIHJ1bGVzIGZvciBzaG9ydCBsaW5lcy4ifSx7bmFtZToibG9vc2UiLGRlc2NyaXB0aW9uOiJCcmVha3MgdGV4dCB1c2luZyB0aGUgbGVhc3QgcmVzdHJpY3RpdmUgc2V0IG9mIGxpbmUtYnJlYWtpbmcgcnVsZXMuIFR5cGljYWxseSB1c2VkIGZvciBzaG9ydCBsaW5lcywgc3VjaCBhcyBpbiBuZXdzcGFwZXJzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJCcmVha3MgdGV4dCB1c2luZyB0aGUgbW9zdCBjb21tb24gc2V0IG9mIGxpbmUtYnJlYWtpbmcgcnVsZXMuIn0se25hbWU6InN0cmljdCIsZGVzY3JpcHRpb246IkJyZWFrcyBDSksgc2NyaXB0cyB1c2luZyBhIG1vcmUgcmVzdHJpY3RpdmUgc2V0IG9mIGxpbmUtYnJlYWtpbmcgcnVsZXMgdGhhbiAnbm9ybWFsJy4ifV0sc3ludGF4OiJhdXRvIHwgbG9vc2UgfCBub3JtYWwgfCBzdHJpY3QgfCBhbnl3aGVyZSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saW5lLWJyZWFrIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hhdCBzZXQgb2YgbGluZSBicmVha2luZyByZXN0cmljdGlvbnMgYXJlIGluIGVmZmVjdCB3aXRoaW4gdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJsaW5lLWhlaWdodCIsdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGVsbHMgdXNlciBhZ2VudHMgdG8gc2V0IHRoZSBjb21wdXRlZCB2YWx1ZSB0byBhICdyZWFzb25hYmxlJyB2YWx1ZSBiYXNlZCBvbiB0aGUgZm9udCBzaXplIG9mIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxudW1iZXI+IHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo5MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGluZS1oZWlnaHQifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGJsb2NrLXByb2dyZXNzaW9uIGRpbWVuc2lvbiBvZiB0aGUgdGV4dCBjb250ZW50IGFyZWEgb2YgYW4gaW5saW5lIGJveC4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Imxpc3Qtc3R5bGUiLHZhbHVlczpbe25hbWU6ImFybWVuaWFuIn0se25hbWU6ImNpcmNsZSIsZGVzY3JpcHRpb246IkEgaG9sbG93IGNpcmNsZS4ifSx7bmFtZToiZGVjaW1hbCJ9LHtuYW1lOiJkZWNpbWFsLWxlYWRpbmctemVybyJ9LHtuYW1lOiJkaXNjIixkZXNjcmlwdGlvbjoiQSBmaWxsZWQgY2lyY2xlLiJ9LHtuYW1lOiJnZW9yZ2lhbiJ9LHtuYW1lOiJpbnNpZGUiLGRlc2NyaXB0aW9uOiJUaGUgbWFya2VyIGJveCBpcyBvdXRzaWRlIHRoZSBwcmluY2lwYWwgYmxvY2sgYm94LCBhcyBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb24gb24gdGhlIDo6bWFya2VyIHBzZXVkby1lbGVtZW50IGJlbG93LiJ9LHtuYW1lOiJsb3dlci1hbHBoYSJ9LHtuYW1lOiJsb3dlci1ncmVlayJ9LHtuYW1lOiJsb3dlci1sYXRpbiJ9LHtuYW1lOiJsb3dlci1yb21hbiJ9LHtuYW1lOiJub25lIn0se25hbWU6Im91dHNpZGUiLGRlc2NyaXB0aW9uOiJUaGUgOjptYXJrZXIgcHNldWRvLWVsZW1lbnQgaXMgYW4gaW5saW5lIGVsZW1lbnQgcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZSBhbGwgOjpiZWZvcmUgcHNldWRvLWVsZW1lbnRzIGluIHRoZSBwcmluY2lwYWwgYmxvY2sgYm94LCBhZnRlciB3aGljaCB0aGUgZWxlbWVudCdzIGNvbnRlbnQgZmxvd3MuIn0se25hbWU6InNxdWFyZSIsZGVzY3JpcHRpb246IkEgZmlsbGVkIHNxdWFyZS4ifSx7bmFtZToic3ltYm9scygpIixkZXNjcmlwdGlvbjoiQWxsb3dzIGEgY291bnRlciBzdHlsZSB0byBiZSBkZWZpbmVkIGlubGluZS4ifSx7bmFtZToidXBwZXItYWxwaGEifSx7bmFtZToidXBwZXItbGF0aW4ifSx7bmFtZToidXBwZXItcm9tYW4ifSx7bmFtZToidXJsKCkifV0sc3ludGF4OiI8J2xpc3Qtc3R5bGUtdHlwZSc+IHx8IDwnbGlzdC1zdHlsZS1wb3NpdGlvbic+IHx8IDwnbGlzdC1zdHlsZS1pbWFnZSc+IixyZWxldmFuY2U6ODUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xpc3Qtc3R5bGUifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3Igc2V0dGluZyAnbGlzdC1zdHlsZS10eXBlJywgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nIGFuZCAnbGlzdC1zdHlsZS1pbWFnZSciLHJlc3RyaWN0aW9uczpbImltYWdlIiwiZW51bSIsInVybCJdfSx7bmFtZToibGlzdC1zdHlsZS1pbWFnZSIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBkZWZhdWx0IGNvbnRlbnRzIG9mIHRoZSBvZiB0aGUgbGlzdCBpdGVt4oCZcyBtYXJrZXIgYXJlIGdpdmVuIGJ5ICdsaXN0LXN0eWxlLXR5cGUnIGluc3RlYWQuIn1dLHN5bnRheDoiPGltYWdlPiB8IG5vbmUiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS1pbWFnZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgaW1hZ2UgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGxpc3QgaXRlbSBtYXJrZXIuIFdoZW4gdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgaXQgd2lsbCByZXBsYWNlIHRoZSBtYXJrZXIgc2V0IHdpdGggdGhlICdsaXN0LXN0eWxlLXR5cGUnIG1hcmtlci4iLHJlc3RyaWN0aW9uczpbImltYWdlIl19LHtuYW1lOiJsaXN0LXN0eWxlLXBvc2l0aW9uIix2YWx1ZXM6W3tuYW1lOiJpbnNpZGUiLGRlc2NyaXB0aW9uOiJUaGUgbWFya2VyIGJveCBpcyBvdXRzaWRlIHRoZSBwcmluY2lwYWwgYmxvY2sgYm94LCBhcyBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb24gb24gdGhlIDo6bWFya2VyIHBzZXVkby1lbGVtZW50IGJlbG93LiJ9LHtuYW1lOiJvdXRzaWRlIixkZXNjcmlwdGlvbjoiVGhlIDo6bWFya2VyIHBzZXVkby1lbGVtZW50IGlzIGFuIGlubGluZSBlbGVtZW50IHBsYWNlZCBpbW1lZGlhdGVseSBiZWZvcmUgYWxsIDo6YmVmb3JlIHBzZXVkby1lbGVtZW50cyBpbiB0aGUgcHJpbmNpcGFsIGJsb2NrIGJveCwgYWZ0ZXIgd2hpY2ggdGhlIGVsZW1lbnQncyBjb250ZW50IGZsb3dzLiJ9XSxzeW50YXg6Imluc2lkZSB8IG91dHNpZGUiLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgJzo6bWFya2VyJyBwc2V1ZG8tZWxlbWVudCdzIGJveCBpbiB0aGUgbGlzdCBpdGVtLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToibGlzdC1zdHlsZS10eXBlIix2YWx1ZXM6W3tuYW1lOiJhcm1lbmlhbiIsZGVzY3JpcHRpb246IlRyYWRpdGlvbmFsIHVwcGVyY2FzZSBBcm1lbmlhbiBudW1iZXJpbmcuIn0se25hbWU6ImNpcmNsZSIsZGVzY3JpcHRpb246IkEgaG9sbG93IGNpcmNsZS4ifSx7bmFtZToiZGVjaW1hbCIsZGVzY3JpcHRpb246Ildlc3Rlcm4gZGVjaW1hbCBudW1iZXJzLiJ9LHtuYW1lOiJkZWNpbWFsLWxlYWRpbmctemVybyIsZGVzY3JpcHRpb246IkRlY2ltYWwgbnVtYmVycyBwYWRkZWQgYnkgaW5pdGlhbCB6ZXJvcy4ifSx7bmFtZToiZGlzYyIsZGVzY3JpcHRpb246IkEgZmlsbGVkIGNpcmNsZS4ifSx7bmFtZToiZ2VvcmdpYW4iLGRlc2NyaXB0aW9uOiJUcmFkaXRpb25hbCBHZW9yZ2lhbiBudW1iZXJpbmcuIn0se25hbWU6Imxvd2VyLWFscGhhIixkZXNjcmlwdGlvbjoiTG93ZXJjYXNlIEFTQ0lJIGxldHRlcnMuIn0se25hbWU6Imxvd2VyLWdyZWVrIixkZXNjcmlwdGlvbjoiTG93ZXJjYXNlIGNsYXNzaWNhbCBHcmVlay4ifSx7bmFtZToibG93ZXItbGF0aW4iLGRlc2NyaXB0aW9uOiJMb3dlcmNhc2UgQVNDSUkgbGV0dGVycy4ifSx7bmFtZToibG93ZXItcm9tYW4iLGRlc2NyaXB0aW9uOiJMb3dlcmNhc2UgQVNDSUkgUm9tYW4gbnVtZXJhbHMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBtYXJrZXIifSx7bmFtZToic3F1YXJlIixkZXNjcmlwdGlvbjoiQSBmaWxsZWQgc3F1YXJlLiJ9LHtuYW1lOiJzeW1ib2xzKCkiLGRlc2NyaXB0aW9uOiJBbGxvd3MgYSBjb3VudGVyIHN0eWxlIHRvIGJlIGRlZmluZWQgaW5saW5lLiJ9LHtuYW1lOiJ1cHBlci1hbHBoYSIsZGVzY3JpcHRpb246IlVwcGVyY2FzZSBBU0NJSSBsZXR0ZXJzLiJ9LHtuYW1lOiJ1cHBlci1sYXRpbiIsZGVzY3JpcHRpb246IlVwcGVyY2FzZSBBU0NJSSBsZXR0ZXJzLiJ9LHtuYW1lOiJ1cHBlci1yb21hbiIsZGVzY3JpcHRpb246IlVwcGVyY2FzZSBBU0NJSSBSb21hbiBudW1lcmFscy4ifV0sc3ludGF4OiI8Y291bnRlci1zdHlsZT4gfCA8c3RyaW5nPiB8IG5vbmUiLHJlbGV2YW5jZTo3NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS10eXBlIn1dLGRlc2NyaXB0aW9uOiJVc2VkIHRvIGNvbnN0cnVjdCB0aGUgZGVmYXVsdCBjb250ZW50cyBvZiBhIGxpc3QgaXRlbeKAmXMgbWFya2VyIixyZXN0cmljdGlvbnM6WyJlbnVtIiwic3RyaW5nIl19LHtuYW1lOiJtYXJnaW4iLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiJbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byBdezEsNH0iLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgbWFyZ2luIGFyZWEuIElmIGxlZnQgaXMgb21pdHRlZCwgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQuIElmIGJvdHRvbSBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcCwgaWYgcmlnaHQgaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIE5lZ2F0aXZlIHZhbHVlcyBmb3IgbWFyZ2luIHByb3BlcnRpZXMgYXJlIGFsbG93ZWQsIGJ1dCB0aGVyZSBtYXkgYmUgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgbGltaXRzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWJsb2NrLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ21hcmdpbi1ib3R0b20nLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tYmxvY2stc3RhcnQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjwnbWFyZ2luLWxlZnQnPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ21hcmdpbi10b3AnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tYm90dG9tIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1ib3R0b20ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWlubGluZS1lbmQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjwnbWFyZ2luLWxlZnQnPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4taW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnbWFyZ2luLXJpZ2h0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWlubGluZS1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ21hcmdpbi1sZWZ0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWxlZnQiLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWxlZnQifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLXJpZ2h0Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIG1hcmdpbiBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBOZWdhdGl2ZSB2YWx1ZXMgZm9yIG1hcmdpbiBwcm9wZXJ0aWVzIGFyZSBhbGxvd2VkLCBidXQgdGhlcmUgbWF5IGJlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGxpbWl0cy4uIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tdG9wIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi10b3AifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFya2VyIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gbWFya2VyIHN5bWJvbCB3aWxsIGJlIGRyYXduIGF0IHRoZSBnaXZlbiB2ZXJ0ZXggb3IgdmVydGljZXMuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIDxtYXJrZXI+IGVsZW1lbnQgcmVmZXJlbmNlZCB3aWxsIGJlIHVzZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXJrZXIgc3ltYm9sIHRoYXQgc2hhbGwgYmUgdXNlZCBmb3IgYWxsIHBvaW50cyBvbiB0aGUgc2V0cyB0aGUgdmFsdWUgZm9yIGFsbCB2ZXJ0aWNlcyBvbiB0aGUgZ2l2ZW4g4oCYcGF0aOKAmSBlbGVtZW50IG9yIGJhc2ljIHNoYXBlLiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXJrZXItZW5kIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gbWFya2VyIHN5bWJvbCB3aWxsIGJlIGRyYXduIGF0IHRoZSBnaXZlbiB2ZXJ0ZXggb3IgdmVydGljZXMuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIDxtYXJrZXI+IGVsZW1lbnQgcmVmZXJlbmNlZCB3aWxsIGJlIHVzZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXJrZXIgdGhhdCB3aWxsIGJlIGRyYXduIGF0IHRoZSBsYXN0IHZlcnRpY2VzIG9mIHRoZSBnaXZlbiBtYXJrYWJsZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXJrZXItbWlkIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gbWFya2VyIHN5bWJvbCB3aWxsIGJlIGRyYXduIGF0IHRoZSBnaXZlbiB2ZXJ0ZXggb3IgdmVydGljZXMuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIDxtYXJrZXI+IGVsZW1lbnQgcmVmZXJlbmNlZCB3aWxsIGJlIHVzZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXJrZXIgdGhhdCB3aWxsIGJlIGRyYXduIGF0IGFsbCB2ZXJ0aWNlcyBleGNlcHQgdGhlIGZpcnN0IGFuZCBsYXN0LiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXJrZXItc3RhcnQiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBubyBtYXJrZXIgc3ltYm9sIHdpbGwgYmUgZHJhd24gYXQgdGhlIGdpdmVuIHZlcnRleCBvciB2ZXJ0aWNlcy4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgPG1hcmtlcj4gZWxlbWVudCByZWZlcmVuY2VkIHdpbGwgYmUgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1hcmtlciB0aGF0IHdpbGwgYmUgZHJhd24gYXQgdGhlIGZpcnN0IHZlcnRpY2VzIG9mIHRoZSBnaXZlbiBtYXJrYWJsZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXNrLWltYWdlIixicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkMxIiwiTzE1Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkNvdW50cyBhcyBhIHRyYW5zcGFyZW50IGJsYWNrIGltYWdlIGxheWVyLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IlJlZmVyZW5jZSB0byBhIDxtYXNrIGVsZW1lbnQgb3IgdG8gYSBDU1MgaW1hZ2UuIn1dLHN5bnRheDoiPG1hc2stcmVmZXJlbmNlPiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1pbWFnZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgbWFzayBsYXllciBpbWFnZSBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsidXJsIiwiaW1hZ2UiLCJlbnVtIl19LHtuYW1lOiJtYXNrLW1vZGUiLGJyb3dzZXJzOlsiRkY1MyIsIlMxNS40Il0sdmFsdWVzOlt7bmFtZToiYWxwaGEiLGRlc2NyaXB0aW9uOiJBbHBoYSB2YWx1ZXMgb2YgdGhlIG1hc2sgbGF5ZXIgaW1hZ2Ugc2hvdWxkIGJlIHVzZWQgYXMgdGhlIG1hc2sgdmFsdWVzLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVXNlIGFscGhhIHZhbHVlcyBpZiAnbWFzay1pbWFnZScgaXMgYW4gaW1hZ2UsIGx1bWluYW5jZSBpZiBhIDxtYXNrPiBlbGVtZW50IG9yIGEgQ1NTIGltYWdlLiJ9LHtuYW1lOiJsdW1pbmFuY2UiLGRlc2NyaXB0aW9uOiJMdW1pbmFuY2UgdmFsdWVzIG9mIHRoZSBtYXNrIGxheWVyIGltYWdlIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBtYXNrIHZhbHVlcy4ifV0sc3ludGF4OiI8bWFza2luZy1tb2RlPiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1tb2RlIn1dLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgbWFzayBsYXllciBpbWFnZSBpcyB0cmVhdGVkIGFzIGx1bWluYW5jZSBtYXNrIG9yIGFscGhhIG1hc2suIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJpbWFnZSIsImVudW0iXX0se25hbWU6Im1hc2stb3JpZ2luIixicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkMxIiwiTzE1Il0sc3ludGF4OiI8Z2VvbWV0cnktYm94PiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1vcmlnaW4ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWFzayBwb3NpdGlvbmluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsiZ2VvbWV0cnktYm94IiwiZW51bSJdfSx7bmFtZToibWFzay1wb3NpdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjUzIiwiUzE1LjQiLCJDMSIsIk8xNSJdLHN5bnRheDoiPHBvc2l0aW9uPiMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBtYXNrIGxheWVyIGltYWdlcyBhcmUgcG9zaXRpb25lZC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFzay1yZXBlYXQiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxNS40IiwiQzEiLCJPMTUiXSxzeW50YXg6IjxyZXBlYXQtc3R5bGU+IyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLXJlcGVhdCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBtYXNrIGxheWVyIGltYWdlcyBhcmUgdGlsZWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gc2l6ZWQgYW5kIHBvc2l0aW9uZWQuIixyZXN0cmljdGlvbnM6WyJyZXBlYXQiXX0se25hbWU6Im1hc2stc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjUzIiwiUzE1LjQiLCJDNCIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXNvbHZlZCBieSB1c2luZyB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyByYXRpbyBhbmQgdGhlIHNpemUgb2YgdGhlIG90aGVyIGRpbWVuc2lvbiwgb3IgZmFpbGluZyB0aGF0LCB1c2luZyB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyBzaXplLCBvciBmYWlsaW5nIHRoYXQsIHRyZWF0aW5nIGl0IGFzIDEwMCUuIn0se25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBsYXJnZXN0IHNpemUgc3VjaCB0aGF0IGJvdGggaXRzIHdpZHRoIGFuZCBpdHMgaGVpZ2h0IGNhbiBmaXQgaW5zaWRlIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiU2NhbGUgdGhlIGltYWdlLCB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChpZiBhbnkpLCB0byB0aGUgc21hbGxlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGNvbXBsZXRlbHkgY292ZXIgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifV0sc3ludGF4OiI8Ymctc2l6ZT4jIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBtYXNrIGxheWVyIGltYWdlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiJtYXNrLXR5cGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNSIsIlM3IiwiQzI0IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYWxwaGEiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgYWxwaGEgdmFsdWVzIG9mIHRoZSBtYXNrIHNob3VsZCBiZSB1c2VkLiJ9LHtuYW1lOiJsdW1pbmFuY2UiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgbHVtaW5hbmNlIHZhbHVlcyBvZiB0aGUgbWFzayBzaG91bGQgYmUgdXNlZC4ifV0sc3ludGF4OiJsdW1pbmFuY2UgfCBhbHBoYSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLXR5cGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciB0aGUgY29udGVudCBvZiB0aGUgPG1hc2s+IGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhcyBsdW1pbmFuY2UgbWFzayBvciBhbHBoYSBtYXNrLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToibWF4LWJsb2NrLXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGxpbWl0IG9uIHRoZSB3aWR0aCBvZiB0aGUgYm94LiJ9XSxzeW50YXg6IjwnbWF4LXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF4LWJsb2NrLXNpemUifV0sZGVzY3JpcHRpb246Ik1heGltdW0gc2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gb3Bwb3NpdGUgdGhhdCBvZiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1heC1oZWlnaHQiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBsaW1pdCBvbiB0aGUgaGVpZ2h0IG9mIHRoZSBib3guIn0se25hbWU6ImZpdC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiPHZpZXdwb3J0LWxlbmd0aD4iLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF4LWhlaWdodCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgaGVpZ2h0IHRvIGEgY2VydGFpbiByYW5nZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1heC1pbmxpbmUtc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbGltaXQgb24gdGhlIGhlaWdodCBvZiB0aGUgYm94LiJ9XSxzeW50YXg6IjwnbWF4LXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF4LWlubGluZS1zaXplIn1dLGRlc2NyaXB0aW9uOiJNYXhpbXVtIHNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1heC13aWR0aCIsdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGxpbWl0IG9uIHRoZSB3aWR0aCBvZiB0aGUgYm94LiJ9LHtuYW1lOiJmaXQtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBtaW4tY29udGVudCBpbmxpbmUgc2l6ZSBvciBtaW4tY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9XSxzeW50YXg6Ijx2aWV3cG9ydC1sZW5ndGg+IixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21heC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgd2lkdGggdG8gYSBjZXJ0YWluIHJhbmdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWluLWJsb2NrLXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sc3ludGF4OiI8J21pbi13aWR0aCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21pbi1ibG9jay1zaXplIn1dLGRlc2NyaXB0aW9uOiJNaW5pbWFsIHNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIG9wcG9zaXRlIHRoYXQgb2YgdGhlIGRpcmVjdGlvbiBzcGVjaWZpZWQgYnkgJ3dyaXRpbmctbW9kZScuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtaW4taGVpZ2h0Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImZpdC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiPHZpZXdwb3J0LWxlbmd0aD4iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWluLWhlaWdodCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgaGVpZ2h0IHRvIGEgY2VydGFpbiByYW5nZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1pbi1pbmxpbmUtc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNTciLCJPNDQiXSxzeW50YXg6IjwnbWluLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWluLWlubGluZS1zaXplIn1dLGRlc2NyaXB0aW9uOiJNaW5pbWFsIHNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1pbi13aWR0aCIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJmaXQtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBtaW4tY29udGVudCBpbmxpbmUgc2l6ZSBvciBtaW4tY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9XSxzeW50YXg6Ijx2aWV3cG9ydC1sZW5ndGg+IixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21pbi13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgd2lkdGggdG8gYSBjZXJ0YWluIHJhbmdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWl4LWJsZW5kLW1vZGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiRGVmYXVsdCBhdHRyaWJ1dGUgd2hpY2ggc3BlY2lmaWVzIG5vIGJsZW5kaW5nIn0se25hbWU6Im11bHRpcGx5IixkZXNjcmlwdGlvbjoiVGhlIHNvdXJjZSBjb2xvciBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBkZXN0aW5hdGlvbiBjb2xvciBhbmQgcmVwbGFjZXMgdGhlIGRlc3RpbmF0aW9uLiJ9LHtuYW1lOiJzY3JlZW4iLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIHRoZSBjb21wbGVtZW50cyBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvciB2YWx1ZXMsIHRoZW4gY29tcGxlbWVudHMgdGhlIHJlc3VsdC4ifSx7bmFtZToib3ZlcmxheSIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgb3Igc2NyZWVucyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIGJhY2tkcm9wIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJkYXJrZW4iLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBkYXJrZXIgb2YgdGhlIGJhY2tkcm9wIGFuZCBzb3VyY2UgY29sb3JzLiJ9LHtuYW1lOiJsaWdodGVuIixkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUgbGlnaHRlciBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvcnMuIn0se25hbWU6ImNvbG9yLWRvZGdlIixkZXNjcmlwdGlvbjoiQnJpZ2h0ZW5zIHRoZSBiYWNrZHJvcCBjb2xvciB0byByZWZsZWN0IHRoZSBzb3VyY2UgY29sb3IuIn0se25hbWU6ImNvbG9yLWJ1cm4iLGRlc2NyaXB0aW9uOiJEYXJrZW5zIHRoZSBiYWNrZHJvcCBjb2xvciB0byByZWZsZWN0IHRoZSBzb3VyY2UgY29sb3IuIn0se25hbWU6ImhhcmQtbGlnaHQiLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIG9yIHNjcmVlbnMgdGhlIGNvbG9ycywgZGVwZW5kaW5nIG9uIHRoZSBzb3VyY2UgY29sb3IgdmFsdWUuIn0se25hbWU6InNvZnQtbGlnaHQiLGRlc2NyaXB0aW9uOiJEYXJrZW5zIG9yIGxpZ2h0ZW5zIHRoZSBjb2xvcnMsIGRlcGVuZGluZyBvbiB0aGUgc291cmNlIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJkaWZmZXJlbmNlIixkZXNjcmlwdGlvbjoiU3VidHJhY3RzIHRoZSBkYXJrZXIgb2YgdGhlIHR3byBjb25zdGl0dWVudCBjb2xvcnMgZnJvbSB0aGUgbGlnaHRlciBjb2xvci4uIn0se25hbWU6ImV4Y2x1c2lvbiIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGFuIGVmZmVjdCBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIERpZmZlcmVuY2UgbW9kZSBidXQgbG93ZXIgaW4gY29udHJhc3QuIn0se25hbWU6Imh1ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzgiLCJDNDEiLCJPMjgiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGh1ZSBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgc2F0dXJhdGlvbiBhbmQgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6InNhdHVyYXRpb24iLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBzYXR1cmF0aW9uIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBodWUgYW5kIGx1bWlub3NpdHkgb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9LHtuYW1lOiJjb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzgiLCJDNDEiLCJPMjgiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGh1ZSBhbmQgc2F0dXJhdGlvbiBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6Imx1bWlub3NpdHkiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBsdW1pbm9zaXR5IG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBodWUgYW5kIHNhdHVyYXRpb24gb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9XSxzeW50YXg6IjxibGVuZC1tb2RlPiIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9taXgtYmxlbmQtbW9kZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgZm9ybXVsYSB0aGF0IG11c3QgYmUgdXNlZCB0byBtaXggdGhlIGNvbG9ycyB3aXRoIHRoZSBiYWNrZHJvcC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Im1vdGlvbiIsYnJvd3NlcnM6WyJDNDYiLCJPMzMiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbW90aW9uIHBhdGggZ2V0cyBjcmVhdGVkLiJ9LHtuYW1lOiJwYXRoKCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGFuIFNWRyBwYXRoIGFzIGEgc3RyaW5nLCB3aXRoIG9wdGlvbmFsICdmaWxsLXJ1bGUnIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgcm90YXRlZCBieSB0aGUgYW5nbGUgb2YgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbW90aW9uIHBhdGguIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIHJvdGF0ZWQgYnkgdGhlIGFuZ2xlIG9mIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG1vdGlvbiBwYXRoIHBsdXMgMTgwIGRlZ3JlZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdtb3Rpb24tcGF0aCcsICdtb3Rpb24tb2Zmc2V0JyBhbmQgJ21vdGlvbi1yb3RhdGlvbicuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJsZW5ndGgiLCJwZXJjZW50YWdlIiwiYW5nbGUiLCJzaGFwZSIsImdlb21ldHJ5LWJveCIsImVudW0iXX0se25hbWU6Im1vdGlvbi1vZmZzZXQiLGJyb3dzZXJzOlsiQzQ2IiwiTzMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIGRpc3RhbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBwb3NpdGlvbiBhbG9uZyB0aGUgc3BlY2lmaWVkIG1vdGlvbiBwYXRoLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibW90aW9uLXBhdGgiLGJyb3dzZXJzOlsiQzQ2IiwiTzMzIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIG1vdGlvbiBwYXRoIGdldHMgY3JlYXRlZC4ifSx7bmFtZToicGF0aCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhbiBTVkcgcGF0aCBhcyBhIHN0cmluZywgd2l0aCBvcHRpb25hbCAnZmlsbC1ydWxlJyBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtb3Rpb24gcGF0aCB0aGUgZWxlbWVudCBnZXRzIHBvc2l0aW9uZWQgYXQuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJzaGFwZSIsImdlb21ldHJ5LWJveCIsImVudW0iXX0se25hbWU6Im1vdGlvbi1yb3RhdGlvbiIsYnJvd3NlcnM6WyJDNDYiLCJPMzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyByb3RhdGVkIGJ5IHRoZSBhbmdsZSBvZiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBtb3Rpb24gcGF0aC4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgcm90YXRlZCBieSB0aGUgYW5nbGUgb2YgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbW90aW9uIHBhdGggcGx1cyAxODAgZGVncmVlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGVsZW1lbnQgd2hpbGUgcG9zaXRpb25pbmcgYWxvbmcgdGhlIG1vdGlvbiBwYXRoLiIscmVzdHJpY3Rpb25zOlsiYW5nbGUiXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uIixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgc2l4IG9mIHRoZSBhbmltYXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsImVudW0iLCJ0aW1pbmctZnVuY3Rpb24iLCJpZGVudGlmaWVyIiwibnVtYmVyIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJGRjkiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi1kaXJlY3Rpb24iLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIHNob3VsZCBwbGF5IGluIHJldmVyc2Ugb24gYWx0ZXJuYXRlIGN5Y2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIkZGOSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbGVuZ3RoIG9mIHRpbWUgdGhhdCBhbiBhbmltYXRpb24gdGFrZXMgdG8gY29tcGxldGUgb25lIGN5Y2xlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGFuIGFuaW1hdGlvbiBjeWNsZSBpcyBwbGF5ZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG9uZSwgbWVhbmluZyB0aGUgYW5pbWF0aW9uIHdpbGwgcGxheSBmcm9tIGJlZ2lubmluZyB0byBlbmQgb25jZS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImVudW0iXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLW5hbWUiLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgbGlzdCBvZiBhbmltYXRpb25zIHRoYXQgYXBwbHkuIEVhY2ggbmFtZSBpcyB1c2VkIHRvIHNlbGVjdCB0aGUga2V5ZnJhbWUgYXQtcnVsZSB0aGF0IHByb3ZpZGVzIHRoZSBwcm9wZXJ0eSB2YWx1ZXMgZm9yIHRoZSBhbmltYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiZW51bSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24tcGxheS1zdGF0ZSIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJwYXVzZWQiLGRlc2NyaXB0aW9uOiJBIHJ1bm5pbmcgYW5pbWF0aW9uIHdpbGwgYmUgcGF1c2VkLiJ9LHtuYW1lOiJydW5uaW5nIixkZXNjcmlwdGlvbjoiUmVzdW1lIHBsYXliYWNrIG9mIGEgcGF1c2VkIGFuaW1hdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5nIG9yIHBhdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJGRjkiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGFuaW1hdGlvbiB3aWxsIHByb2dyZXNzIG92ZXIgb25lIGN5Y2xlIG9mIGl0cyBkdXJhdGlvbi4gU2VlIHRoZSAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiItbW96LWFwcGVhcmFuY2UiLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiYnV0dG9uIn0se25hbWU6ImJ1dHRvbi1hcnJvdy1kb3duIn0se25hbWU6ImJ1dHRvbi1hcnJvdy1uZXh0In0se25hbWU6ImJ1dHRvbi1hcnJvdy1wcmV2aW91cyJ9LHtuYW1lOiJidXR0b24tYXJyb3ctdXAifSx7bmFtZToiYnV0dG9uLWJldmVsIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6ImNoZWNrYm94LWNvbnRhaW5lciJ9LHtuYW1lOiJjaGVja2JveC1sYWJlbCJ9LHtuYW1lOiJkaWFsb2cifSx7bmFtZToiZ3JvdXBib3gifSx7bmFtZToibGlzdGJveCJ9LHtuYW1lOiJtZW51YXJyb3cifSx7bmFtZToibWVudWltYWdlIn0se25hbWU6Im1lbnVpdGVtIn0se25hbWU6Im1lbnVpdGVtdGV4dCJ9LHtuYW1lOiJtZW51bGlzdCJ9LHtuYW1lOiJtZW51bGlzdC1idXR0b24ifSx7bmFtZToibWVudWxpc3QtdGV4dCJ9LHtuYW1lOiJtZW51bGlzdC10ZXh0ZmllbGQifSx7bmFtZToibWVudXBvcHVwIn0se25hbWU6Im1lbnVyYWRpbyJ9LHtuYW1lOiJtZW51c2VwYXJhdG9yIn0se25hbWU6Ii1tb3otbWFjLXVuaWZpZWQtdG9vbGJhciJ9LHtuYW1lOiItbW96LXdpbi1ib3JkZXJsZXNzLWdsYXNzIn0se25hbWU6Ii1tb3otd2luLWJyb3dzZXJ0YWJiYXItdG9vbGJveCJ9LHtuYW1lOiItbW96LXdpbi1jb21tdW5pY2F0aW9ucy10b29sYm94In0se25hbWU6Ii1tb3otd2luLWdsYXNzIn0se25hbWU6Ii1tb3otd2luLW1lZGlhLXRvb2xib3gifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwcm9ncmVzc2JhciJ9LHtuYW1lOiJwcm9ncmVzc2NodW5rIn0se25hbWU6InJhZGlvIn0se25hbWU6InJhZGlvLWNvbnRhaW5lciJ9LHtuYW1lOiJyYWRpby1sYWJlbCJ9LHtuYW1lOiJyYWRpb21lbnVpdGVtIn0se25hbWU6InJlc2l6ZXIifSx7bmFtZToicmVzaXplcnBhbmVsIn0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1kb3duIn0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1sZWZ0In0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1yaWdodCJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tdXAifSx7bmFtZToic2Nyb2xsYmFyLXNtYWxsIn0se25hbWU6InNjcm9sbGJhcnRyYWNrLWhvcml6b250YWwifSx7bmFtZToic2Nyb2xsYmFydHJhY2stdmVydGljYWwifSx7bmFtZToic2VwYXJhdG9yIn0se25hbWU6InNwaW5uZXIifSx7bmFtZToic3Bpbm5lci1kb3duYnV0dG9uIn0se25hbWU6InNwaW5uZXItdGV4dGZpZWxkIn0se25hbWU6InNwaW5uZXItdXBidXR0b24ifSx7bmFtZToic3RhdHVzYmFyIn0se25hbWU6InN0YXR1c2JhcnBhbmVsIn0se25hbWU6InRhYiJ9LHtuYW1lOiJ0YWJwYW5lbHMifSx7bmFtZToidGFiLXNjcm9sbC1hcnJvdy1iYWNrIn0se25hbWU6InRhYi1zY3JvbGwtYXJyb3ctZm9yd2FyZCJ9LHtuYW1lOiJ0ZXh0ZmllbGQifSx7bmFtZToidGV4dGZpZWxkLW11bHRpbGluZSJ9LHtuYW1lOiJ0b29sYmFyIn0se25hbWU6InRvb2xib3gifSx7bmFtZToidG9vbHRpcCJ9LHtuYW1lOiJ0cmVlaGVhZGVyY2VsbCJ9LHtuYW1lOiJ0cmVlaGVhZGVyc29ydGFycm93In0se25hbWU6InRyZWVpdGVtIn0se25hbWU6InRyZWV0d2lzdHlvcGVuIn0se25hbWU6InRyZWV2aWV3In0se25hbWU6InRyZWV3aXN0eSJ9LHtuYW1lOiJ3aW5kb3cifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgYnV0dG9uIHwgYnV0dG9uLWFycm93LWRvd24gfCBidXR0b24tYXJyb3ctbmV4dCB8IGJ1dHRvbi1hcnJvdy1wcmV2aW91cyB8IGJ1dHRvbi1hcnJvdy11cCB8IGJ1dHRvbi1iZXZlbCB8IGJ1dHRvbi1mb2N1cyB8IGNhcmV0IHwgY2hlY2tib3ggfCBjaGVja2JveC1jb250YWluZXIgfCBjaGVja2JveC1sYWJlbCB8IGNoZWNrbWVudWl0ZW0gfCBkdWFsYnV0dG9uIHwgZ3JvdXBib3ggfCBsaXN0Ym94IHwgbGlzdGl0ZW0gfCBtZW51YXJyb3cgfCBtZW51YmFyIHwgbWVudWNoZWNrYm94IHwgbWVudWltYWdlIHwgbWVudWl0ZW0gfCBtZW51aXRlbXRleHQgfCBtZW51bGlzdCB8IG1lbnVsaXN0LWJ1dHRvbiB8IG1lbnVsaXN0LXRleHQgfCBtZW51bGlzdC10ZXh0ZmllbGQgfCBtZW51cG9wdXAgfCBtZW51cmFkaW8gfCBtZW51c2VwYXJhdG9yIHwgbWV0ZXJiYXIgfCBtZXRlcmNodW5rIHwgcHJvZ3Jlc3NiYXIgfCBwcm9ncmVzc2Jhci12ZXJ0aWNhbCB8IHByb2dyZXNzY2h1bmsgfCBwcm9ncmVzc2NodW5rLXZlcnRpY2FsIHwgcmFkaW8gfCByYWRpby1jb250YWluZXIgfCByYWRpby1sYWJlbCB8IHJhZGlvbWVudWl0ZW0gfCByYW5nZSB8IHJhbmdlLXRodW1iIHwgcmVzaXplciB8IHJlc2l6ZXJwYW5lbCB8IHNjYWxlLWhvcml6b250YWwgfCBzY2FsZXRodW1iZW5kIHwgc2NhbGV0aHVtYi1ob3Jpem9udGFsIHwgc2NhbGV0aHVtYnN0YXJ0IHwgc2NhbGV0aHVtYnRpY2sgfCBzY2FsZXRodW1iLXZlcnRpY2FsIHwgc2NhbGUtdmVydGljYWwgfCBzY3JvbGxiYXJidXR0b24tZG93biB8IHNjcm9sbGJhcmJ1dHRvbi1sZWZ0IHwgc2Nyb2xsYmFyYnV0dG9uLXJpZ2h0IHwgc2Nyb2xsYmFyYnV0dG9uLXVwIHwgc2Nyb2xsYmFydGh1bWItaG9yaXpvbnRhbCB8IHNjcm9sbGJhcnRodW1iLXZlcnRpY2FsIHwgc2Nyb2xsYmFydHJhY2staG9yaXpvbnRhbCB8IHNjcm9sbGJhcnRyYWNrLXZlcnRpY2FsIHwgc2VhcmNoZmllbGQgfCBzZXBhcmF0b3IgfCBzaGVldCB8IHNwaW5uZXIgfCBzcGlubmVyLWRvd25idXR0b24gfCBzcGlubmVyLXRleHRmaWVsZCB8IHNwaW5uZXItdXBidXR0b24gfCBzcGxpdHRlciB8IHN0YXR1c2JhciB8IHN0YXR1c2JhcnBhbmVsIHwgdGFiIHwgdGFicGFuZWwgfCB0YWJwYW5lbHMgfCB0YWItc2Nyb2xsLWFycm93LWJhY2sgfCB0YWItc2Nyb2xsLWFycm93LWZvcndhcmQgfCB0ZXh0ZmllbGQgfCB0ZXh0ZmllbGQtbXVsdGlsaW5lIHwgdG9vbGJhciB8IHRvb2xiYXJidXR0b24gfCB0b29sYmFyYnV0dG9uLWRyb3Bkb3duIHwgdG9vbGJhcmdyaXBwZXIgfCB0b29sYm94IHwgdG9vbHRpcCB8IHRyZWVoZWFkZXIgfCB0cmVlaGVhZGVyY2VsbCB8IHRyZWVoZWFkZXJzb3J0YXJyb3cgfCB0cmVlaXRlbSB8IHRyZWVsaW5lIHwgdHJlZXR3aXN0eSB8IHRyZWV0d2lzdHlvcGVuIHwgdHJlZXZpZXcgfCAtbW96LW1hYy11bmlmaWVkLXRvb2xiYXIgfCAtbW96LXdpbi1ib3JkZXJsZXNzLWdsYXNzIHwgLW1vei13aW4tYnJvd3NlcnRhYmJhci10b29sYm94IHwgLW1vei13aW4tY29tbXVuaWNhdGlvbnN0ZXh0IHwgLW1vei13aW4tY29tbXVuaWNhdGlvbnMtdG9vbGJveCB8IC1tb3otd2luLWV4Y2x1ZGUtZ2xhc3MgfCAtbW96LXdpbi1nbGFzcyB8IC1tb3otd2luLW1lZGlhdGV4dCB8IC1tb3otd2luLW1lZGlhLXRvb2xib3ggfCAtbW96LXdpbmRvdy1idXR0b24tYm94IHwgLW1vei13aW5kb3ctYnV0dG9uLWJveC1tYXhpbWl6ZWQgfCAtbW96LXdpbmRvdy1idXR0b24tY2xvc2UgfCAtbW96LXdpbmRvdy1idXR0b24tbWF4aW1pemUgfCAtbW96LXdpbmRvdy1idXR0b24tbWluaW1pemUgfCAtbW96LXdpbmRvdy1idXR0b24tcmVzdG9yZSB8IC1tb3otd2luZG93LWZyYW1lLWJvdHRvbSB8IC1tb3otd2luZG93LWZyYW1lLWxlZnQgfCAtbW96LXdpbmRvdy1mcmFtZS1yaWdodCB8IC1tb3otd2luZG93LXRpdGxlYmFyIHwgLW1vei13aW5kb3ctdGl0bGViYXItbWF4aW1pemVkIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVXNlZCBpbiBHZWNrbyAoRmlyZWZveCkgdG8gZGlzcGxheSBhbiBlbGVtZW50IHVzaW5nIGEgcGxhdGZvcm0tbmF0aXZlIHN0eWxpbmcgYmFzZWQgb24gdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyB0aGVtZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eSIsYnJvd3NlcnM6WyJGRjEwIl0sdmFsdWVzOlt7bmFtZToiaGlkZGVuIn0se25hbWU6InZpc2libGUifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSAnYmFjaycgc2lkZSBvZiBhIHRyYW5zZm9ybWVkIGVsZW1lbnQgaXMgdmlzaWJsZSB3aGVuIGZhY2luZyB0aGUgdmlld2VyLiBXaXRoIGFuIGlkZW50aXR5IHRyYW5zZm9ybSwgdGhlIGZyb250IHNpZGUgb2YgYW4gZWxlbWVudCBmYWNlcyB0aGUgdmlld2VyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1iYWNrZ3JvdW5kLWNsaXAiLGJyb3dzZXJzOlsiRkYxLTMuNiJdLHZhbHVlczpbe25hbWU6InBhZGRpbmcifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJib3giLCJlbnVtIl19LHtuYW1lOiItbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeSIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJib3VuZGluZy1ib3gifSx7bmFtZToiY29udGludW91cyJ9LHtuYW1lOiJlYWNoLWJveCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluIEdlY2tvLWJhc2VkIGFwcGxpY2F0aW9ucyBsaWtlIEZpcmVmb3gsIHRoZSAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIGhvdyB0aGUgYmFja2dyb3VuZCBpbWFnZSBvZiBhbiBpbmxpbmUgZWxlbWVudCBpcyBkZXRlcm1pbmVkIHdoZW4gdGhlIGNvbnRlbnQgb2YgdGhlIGlubGluZSBlbGVtZW50IHdyYXBzIG9udG8gbXVsdGlwbGUgbGluZXMuIFRoZSBjaG9pY2Ugb2YgcG9zaXRpb24gaGFzIHNpZ25pZmljYW50IGVmZmVjdHMgb24gcmVwZXRpdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYmFja2dyb3VuZC1vcmlnaW4iLGJyb3dzZXJzOlsiRkYxIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgYSBzaW5nbGUgYm94LCBzcGVjaWZpZXMgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4gRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIG11bHRpcGxlIGJveGVzIChlLmcuLCBpbmxpbmUgYm94ZXMgb24gc2V2ZXJhbCBsaW5lcywgYm94ZXMgb24gc2V2ZXJhbCBwYWdlcykgc3BlY2lmaWVzIHdoaWNoIGJveGVzICdib3gtZGVjb3JhdGlvbi1icmVhaycgb3BlcmF0ZXMgb24gdG8gZGV0ZXJtaW5lIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEocykuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6Ii1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnMiLGJyb3dzZXJzOlsiRkYxIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+KyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIGEgbGlzdCBvZiBjb2xvcnMgZm9yIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otYm9yZGVyLWltYWdlIixicm93c2VyczpbIkZGMy42Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IklmICdhdXRvJyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgYm9yZGVyIGltYWdlIHdpZHRoIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgaGVpZ2h0ICh3aGljaGV2ZXIgaXMgYXBwbGljYWJsZSkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1hZ2Ugc2xpY2UuIElmIHRoZSBpbWFnZSBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBpbnRyaW5zaWMgZGltZW5zaW9uIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoIGlzIHVzZWQgaW5zdGVhZC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgbWlkZGxlIHBhcnQgb2YgdGhlIGJvcmRlci1pbWFnZSB0byBiZSBwcmVzZXJ2ZWQuIn0se25hbWU6Im5vbmUifSx7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToidXJsKCkifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLCAnYm9yZGVyLWltYWdlLXNsaWNlJywgJ2JvcmRlci1pbWFnZS13aWR0aCcsICdib3JkZXItaW1hZ2Utb3V0c2V0JyBhbmQgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciIsInVybCIsImVudW0iXX0se25hbWU6Ii1tb3otYm9yZGVyLWxlZnQtY29sb3JzIixicm93c2VyczpbIkZGMSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPisgfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2V0cyBhIGxpc3Qgb2YgY29sb3JzIGZvciB0aGUgYm90dG9tIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbW96LWJvcmRlci1yaWdodC1jb2xvcnMiLGJyb3dzZXJzOlsiRkYxIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+KyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIGEgbGlzdCBvZiBjb2xvcnMgZm9yIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otYm9yZGVyLXRvcC1jb2xvcnMiLGJyb3dzZXJzOlsiRkYxIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+KyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTa2UgRmlyZWZveCwgLW1vei1ib3JkZXItYm90dG9tLWNvbG9ycyBzZXRzIGEgbGlzdCBvZiBjb2xvcnMgZm9yIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otYm94LWFsaWduIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiSWYgdGhpcyBib3ggb3JpZW50YXRpb24gaXMgaW5saW5lLWF4aXMgb3IgaG9yaXpvbnRhbCwgYWxsIGNoaWxkcmVuIGFyZSBwbGFjZWQgd2l0aCB0aGVpciBiYXNlbGluZXMgYWxpZ25lZCwgYW5kIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgb3IgYWZ0ZXIgYXMgbmVjZXNzYXJ5LiBGb3IgYmxvY2sgZmxvd3MsIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3Qgbm9uLWVtcHR5IGxpbmUgYm94IGxvY2F0ZWQgd2l0aGluIHRoZSBlbGVtZW50IGlzIHVzZWQuIEZvciB0YWJsZXMsIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3QgY2VsbCBpcyB1c2VkLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJBbnkgZXh0cmEgc3BhY2UgaXMgZGl2aWRlZCBldmVubHksIHdpdGggaGFsZiBwbGFjZWQgYWJvdmUgdGhlIGNoaWxkIGFuZCB0aGUgb3RoZXIgaGFsZiBwbGFjZWQgYWZ0ZXIgdGhlIGNoaWxkLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIGJvdHRvbSBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSBib3R0b20gb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGFib3ZlIHRoZSBlbGVtZW50LiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSB0b3AgZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgdG9wIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBiZWxvdyB0aGUgZWxlbWVudC4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIHRvcCBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSB0b3Agb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGJlbG93IHRoZSBlbGVtZW50LiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSBib3R0b20gZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgYm90dG9tIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBhYm92ZSB0aGUgZWxlbWVudC4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBoZWlnaHQgb2YgZWFjaCBjaGlsZCBpcyBhZGp1c3RlZCB0byB0aGF0IG9mIHRoZSBjb250YWluaW5nIGJsb2NrLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYSBYVUwgYm94IGFsaWducyBpdHMgY29udGVudHMgYWNyb3NzIChwZXJwZW5kaWN1bGFyIHRvKSB0aGUgZGlyZWN0aW9uIG9mIGl0cyBsYXlvdXQuIFRoZSBlZmZlY3Qgb2YgdGhpcyBpcyBvbmx5IHZpc2libGUgaWYgdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYm94LWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgaG9yaXpvbnRhbCBmb3IgYm94LW9yaWVudCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBsZWZ0IHRvIHJpZ2h0LiBBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgdmVydGljYWwgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gdG9wIHRvIGJvdHRvbS4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiBob3Jpem9udGFsIGZvciBib3gtb3JpZW50IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHJpZ2h0IHRvIGxlZnQuIEEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiB2ZXJ0aWNhbCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBib3R0b20gdG8gdG9wLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBub3JtYWxseSAoZnJvbSB0aGUgdG9wIG9yIGxlZnQgZWRnZSksIG9yIGluIHJldmVyc2UgKGZyb20gdGhlIGJvdHRvbSBvciByaWdodCBlZGdlKS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYm94LWZsZXgiLGJyb3dzZXJzOlsiRkYxIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGEgYm94IGdyb3dzIHRvIGZpbGwgdGhlIGJveCB0aGF0IGNvbnRhaW5zIGl0LCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBjb250YWluaW5nIGJveCdzIGxheW91dC4iLHJlc3RyaWN0aW9uczpbIm51bWJlciJdfSx7bmFtZToiLW1vei1ib3gtZmxleGdyb3VwIixicm93c2VyczpbIkZGMSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRmxleGlibGUgZWxlbWVudHMgY2FuIGJlIGFzc2lnbmVkIHRvIGZsZXggZ3JvdXBzIHVzaW5nIHRoZSAnYm94LWZsZXgtZ3JvdXAnIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1vei1ib3gtb3JkaW5hbC1ncm91cCIsYnJvd3NlcnM6WyJGRjEiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgb3JkaW5hbCBncm91cCB0aGUgZWxlbWVudCBiZWxvbmdzIHRvLiBFbGVtZW50cyB3aXRoIGEgbG93ZXIgb3JkaW5hbCBncm91cCBhcmUgZGlzcGxheWVkIGJlZm9yZSB0aG9zZSB3aXRoIGEgaGlnaGVyIG9yZGluYWwgZ3JvdXAuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbW96LWJveC1vcmllbnQiLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiYmxvY2stYXhpcyIsZGVzY3JpcHRpb246IkVsZW1lbnRzIGFyZSBvcmllbnRlZCBhbG9uZyB0aGUgYm94J3MgYXhpcy4ifSx7bmFtZToiaG9yaXpvbnRhbCIsZGVzY3JpcHRpb246IlRoZSBib3ggZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gbGVmdCB0byByaWdodCBpbiBhIGhvcml6b250YWwgbGluZS4ifSx7bmFtZToiaW5saW5lLWF4aXMiLGRlc2NyaXB0aW9uOiJFbGVtZW50cyBhcmUgb3JpZW50ZWQgdmVydGljYWxseS4ifSx7bmFtZToidmVydGljYWwiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHN0YWNrZWQgZnJvbSB0b3AgdG8gYm90dG9tIHZlcnRpY2FsbHkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIC1tb3otYm94LW9yaWVudCBzcGVjaWZpZXMgd2hldGhlciBhIGJveCBsYXlzIG91dCBpdHMgY29udGVudHMgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWJveC1wYWNrIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBleHRyYSBzcGFjZSBpcyBkaXZpZGVkIGV2ZW5seSwgd2l0aCBoYWxmIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkIGFuZCB0aGUgb3RoZXIgaGFsZiBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGFzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIHJpZ2h0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkLiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGZpcnN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgbGVmdCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJUaGUgc3BhY2UgaXMgZGl2aWRlZCBldmVubHkgaW4tYmV0d2VlbiBlYWNoIGNoaWxkLCB3aXRoIG5vbmUgb2YgdGhlIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkIG9yIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiBJZiB0aGVyZSBpcyBvbmx5IG9uZSBjaGlsZCwgdHJlYXQgdGhlIHBhY2sgdmFsdWUgYXMgaWYgaXQgd2VyZSBzdGFydC4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIGxlZnQgZWRnZSBvZiB0aGUgZmlyc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSBsZWZ0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBhZnRlciB0aGUgbGFzdCBjaGlsZC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGFzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIHJpZ2h0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYSBib3ggcGFja3MgaXRzIGNvbnRlbnRzIGluIHRoZSBkaXJlY3Rpb24gb2YgaXRzIGxheW91dC4gVGhlIGVmZmVjdCBvZiB0aGlzIGlzIG9ubHkgdmlzaWJsZSBpZiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1ib3gtc2l6aW5nIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImJvcmRlci1ib3giLGRlc2NyaXB0aW9uOiJUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgb24gdGhpcyBlbGVtZW50IGRldGVybWluZSB0aGUgYm9yZGVyIGJveCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudC1ib3giLGRlc2NyaXB0aW9uOiJCZWhhdmlvciBvZiB3aWR0aCBhbmQgaGVpZ2h0IGFzIHNwZWNpZmllZCBieSBDU1MyLjEuIFRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBhcHBseSB0byB0aGUgd2lkdGggYW5kIGhlaWdodCByZXNwZWN0aXZlbHkgb2YgdGhlIGNvbnRlbnQgYm94IG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJwYWRkaW5nLWJveCIsZGVzY3JpcHRpb246IlRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBvbiB0aGlzIGVsZW1lbnQgZGV0ZXJtaW5lIHRoZSBwYWRkaW5nIGJveCBvZiB0aGUgZWxlbWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJCb3ggTW9kZWwgYWRkaXRpb24gaW4gQ1NTMy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otY29sdW1uLWNvdW50Iixicm93c2VyczpbIkZGMy41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIGJ5IHRoZSAnY29sdW1uLXdpZHRoJyBwcm9wZXJ0eSBhbmQgdGhlIGVsZW1lbnQgd2lkdGguIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBvcHRpbWFsIG51bWJlciBvZiBjb2x1bW5zIGludG8gd2hpY2ggdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgd2lsbCBiZSBmbG93ZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbW96LWNvbHVtbi1nYXAiLGJyb3dzZXJzOlsiRkYzLjUiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJVc2VyIGFnZW50IHNwZWNpZmljIGFuZCB0eXBpY2FsbHkgZXF1aXZhbGVudCB0byAxZW0uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgZ2FwIGJldHdlZW4gY29sdW1ucy4gSWYgdGhlcmUgaXMgYSBjb2x1bW4gcnVsZSBiZXR3ZWVuIGNvbHVtbnMsIGl0IHdpbGwgYXBwZWFyIGluIHRoZSBtaWRkbGUgb2YgdGhlIGdhcC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1vei1jb2x1bW4tcnVsZSIsYnJvd3NlcnM6WyJGRjMuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nICdjb2x1bW4tcnVsZS13aWR0aCcsICdjb2x1bW4tcnVsZS1zdHlsZScsIGFuZCAnY29sdW1uLXJ1bGUtY29sb3InIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6Ii1tb3otY29sdW1uLXJ1bGUtY29sb3IiLGJyb3dzZXJzOlsiRkYzLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBjb2x1bW4gcnVsZSIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otY29sdW1uLXJ1bGUtc3R5bGUiLGJyb3dzZXJzOlsiRkYzLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiLW1vei1jb2x1bW4tcnVsZS13aWR0aCIsYnJvd3NlcnM6WyJGRjMuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgd2lkdGggb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiLW1vei1jb2x1bW5zIixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBib3RoICdjb2x1bW4td2lkdGgnIGFuZCAnY29sdW1uLWNvdW50Jy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImludGVnZXIiXX0se25hbWU6Ii1tb3otY29sdW1uLXdpZHRoIixicm93c2VyczpbIkZGMy41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGlzIHByb3BlcnR5IGRlc2NyaWJlcyB0aGUgd2lkdGggb2YgY29sdW1ucyBpbiBtdWx0aWNvbCBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3MiLGJyb3dzZXJzOlsiRkY0Il0sdmFsdWVzOlt7bmFtZTonImMyY3MiJ30se25hbWU6JyJkbGlnIid9LHtuYW1lOicia2VybiInfSx7bmFtZTonImxpZ2EiJ30se25hbWU6JyJsbnVtIid9LHtuYW1lOicib251bSInfSx7bmFtZTonInNtY3AiJ30se25hbWU6JyJzd3NoIid9LHtuYW1lOicidG51bSInfSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGluIGdseXBoIHN1YnN0aXR1dGlvbiBvciBwb3NpdGlvbmluZyBvY2N1cnMuIn0se25hbWU6Im9mZiIsYnJvd3NlcnM6WyJGRjQiXX0se25hbWU6Im9uIixicm93c2VyczpbIkZGNCJdfV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIE9wZW5UeXBlIGZvbnQgZmVhdHVyZXMuIEl0IGlzIGludGVuZGVkIGFzIGEgd2F5IG9mIHByb3ZpZGluZyBhY2Nlc3MgdG8gZm9udCBmZWF0dXJlcyB0aGF0IGFyZSBub3Qgd2lkZWx5IHVzZWQgYnV0IGFyZSBuZWVkZWQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZS4iLHJlc3RyaWN0aW9uczpbInN0cmluZyIsImludGVnZXIiXX0se25hbWU6Ii1tb3otaHlwaGVucyIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29uZGl0aW9uYWwgaHlwaGVuYXRpb24gY2hhcmFjdGVycyBpbnNpZGUgYSB3b3JkLCBpZiBwcmVzZW50LCB0YWtlIHByaW9yaXR5IG92ZXIgYXV0b21hdGljIHJlc291cmNlcyB3aGVuIGRldGVybWluaW5nIGh5cGhlbmF0aW9uIHBvaW50cyB3aXRoaW4gdGhlIHdvcmQuIn0se25hbWU6Im1hbnVhbCIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBvbmx5IGJyb2tlbiBhdCBsaW5lIGJyZWFrcyB3aGVyZSB0aGVyZSBhcmUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgdGhhdCBzdWdnZXN0IGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG5vdCBicm9rZW4gYXQgbGluZSBicmVha3MsIGV2ZW4gaWYgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgc3VnZ2VzdCBsaW5lIGJyZWFrIHBvaW50cy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQgdG8gY3JlYXRlIG1vcmUgYnJlYWsgb3Bwb3J0dW5pdGllcyB3aXRoaW4gYSBsaW5lIG9mIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LXBlcnNwZWN0aXZlIixicm93c2VyczpbIkZGMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGVyc3BlY3RpdmUgdHJhbnNmb3JtIGlzIGFwcGxpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQXBwbGllcyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMgdGhlIHBlcnNwZWN0aXZlKDxudW1iZXI+KSB0cmFuc2Zvcm0gZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IGl0IGFwcGxpZXMgb25seSB0byB0aGUgcG9zaXRpb25lZCBvciB0cmFuc2Zvcm1lZCBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudCwgbm90IHRvIHRoZSB0cmFuc2Zvcm0gb24gdGhlIGVsZW1lbnQgaXRzZWxmLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbW96LXBlcnNwZWN0aXZlLW9yaWdpbiIsYnJvd3NlcnM6WyJGRjEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggYW5kIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbW96LXRleHQtYWxpZ24tbGFzdCIsYnJvd3NlcnM6WyJGRjEyIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHRleHQgaXMganVzdGlmaWVkIGFjY29yZGluZyB0byB0aGUgbWV0aG9kIHNwZWNpZmllZCBieSB0aGUgJ3RleHQtanVzdGlmeScgcHJvcGVydHkuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAnbGVmdCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdyaWdodCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBlbmQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGxhc3QgbGluZSBvZiBhIGJsb2NrIG9yIGEgbGluZSByaWdodCBiZWZvcmUgYSBmb3JjZWQgbGluZSBicmVhayBpcyBhbGlnbmVkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LXRleHQtZGVjb3JhdGlvbi1jb2xvciIsYnJvd3NlcnM6WyJGRjYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgY29sb3Igb2YgdGV4dCBkZWNvcmF0aW9uICh1bmRlcmxpbmVzIG92ZXJsaW5lcywgYW5kIGxpbmUtdGhyb3VnaHMpIHNldCBvbiB0aGUgZWxlbWVudCB3aXRoIHRleHQtZGVjb3JhdGlvbi1saW5lLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otdGV4dC1kZWNvcmF0aW9uLWxpbmUiLGJyb3dzZXJzOlsiRkY2Il0sdmFsdWVzOlt7bmFtZToibGluZS10aHJvdWdoIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSB0aHJvdWdoIHRoZSBtaWRkbGUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJOZWl0aGVyIHByb2R1Y2VzIG5vciBpbmhpYml0cyB0ZXh0IGRlY29yYXRpb24uIn0se25hbWU6Im92ZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSBhYm92ZSBpdC4ifSx7bmFtZToidW5kZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaXMgdW5kZXJsaW5lZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hhdCBsaW5lIGRlY29yYXRpb25zLCBpZiBhbnksIGFyZSBhZGRlZCB0byB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otdGV4dC1kZWNvcmF0aW9uLXN0eWxlIixicm93c2VyczpbIkZGNiJdLHZhbHVlczpbe25hbWU6ImRhc2hlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZGFzaGVkIGxpbmUgc3R5bGUuIn0se25hbWU6ImRvdHRlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG90dGVkIGxpbmUuIn0se25hbWU6ImRvdWJsZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG91YmxlIGxpbmUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBubyBsaW5lLiJ9LHtuYW1lOiJzb2xpZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgc29saWQgbGluZS4ifSx7bmFtZToid2F2eSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgd2F2eSBsaW5lLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbGluZSBzdHlsZSBmb3IgdW5kZXJsaW5lLCBsaW5lLXRocm91Z2ggYW5kIG92ZXJsaW5lIHRleHQgZGVjb3JhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otdGV4dC1zaXplLWFkanVzdCIsYnJvd3NlcnM6WyJGRiJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZW5kZXJlcnMgbXVzdCB1c2UgdGhlIGRlZmF1bHQgc2l6ZSBhZGp1c3RtZW50IHdoZW4gZGlzcGxheWluZyBvbiBhIHNtYWxsIGRldmljZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IG5vdCBkbyBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNpemUgYWRqdXN0bWVudCBmb3IgZGlzcGxheWluZyB0ZXh0IGNvbnRlbnQgaW4gbW9iaWxlIGJyb3dzZXJzLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tb3otdHJhbnNmb3JtIixicm93c2VyczpbIkZGMy41Il0sdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwZXJzcGVjdGl2ZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHBlcnNwZWN0aXZlIHByb2plY3Rpb24gbWF0cml4LiJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei10cmFuc2Zvcm0tb3JpZ2luIixicm93c2VyczpbIkZGMy41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIG9mIHRyYW5zZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbW96LXRyYW5zaXRpb24iLGJyb3dzZXJzOlsiRkY0Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIGZvdXIgb2YgdGhlIHRyYW5zaXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsInByb3BlcnR5IiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSJdfSx7bmFtZToiLW1vei10cmFuc2l0aW9uLWRlbGF5Iixicm93c2VyczpbIkZGNCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSB0cmFuc2l0aW9uIHdpbGwgc3RhcnQuIEl0IGFsbG93cyBhIHRyYW5zaXRpb24gdG8gYmVnaW4gZXhlY3V0aW9uIHNvbWUgcGVyaW9kIG9mIHRpbWUgZnJvbSB3aGVuIGl0IGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItbW96LXRyYW5zaXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiRkY0Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGxvbmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHZhbHVlIHRvIHRoZSBuZXcgdmFsdWUgc2hvdWxkIHRha2UuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItbW96LXRyYW5zaXRpb24tcHJvcGVydHkiLGJyb3dzZXJzOlsiRkY0Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdG8gd2hpY2ggdGhlIHRyYW5zaXRpb24gaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInByb3BlcnR5Il19LHtuYW1lOiItbW96LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIkZGNCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyB1c2VkIGR1cmluZyBhIHRyYW5zaXRpb24gd2lsbCBiZSBjYWxjdWxhdGVkLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiItbW96LXVzZXItZm9jdXMiLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiaWdub3JlIn0se25hbWU6Im5vcm1hbCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Imlnbm9yZSB8IG5vcm1hbCB8IHNlbGVjdC1hZnRlciB8IHNlbGVjdC1iZWZvcmUgfCBzZWxlY3QtbWVudSB8IHNlbGVjdC1zYW1lIHwgc2VsZWN0LWFsbCB8IG5vbmUiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LXVzZXItZm9jdXMifV0sZGVzY3JpcHRpb246IlVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgZWxlbWVudCBjYW4gaGF2ZSBmb2N1cy4ifSx7bmFtZToiLW1vei11c2VyLXNlbGVjdCIsYnJvd3NlcnM6WyJGRjEuNSJdLHZhbHVlczpbe25hbWU6ImFsbCJ9LHtuYW1lOiJlbGVtZW50In0se25hbWU6ImVsZW1lbnRzIn0se25hbWU6Ii1tb3otYWxsIn0se25hbWU6Ii1tb3otbm9uZSJ9LHtuYW1lOiJub25lIn0se25hbWU6InRleHQifSx7bmFtZToidG9nZ2xlIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWFjY2VsZXJhdG9yIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiZmFsc2UiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGFuIGFjY2VsZXJhdG9yIGtleSBzZXF1ZW5jZS4ifSx7bmFtZToidHJ1ZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGNvbnRhaW5zIGFuIGFjY2VsZXJhdG9yIGtleSBzZXF1ZW5jZS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJmYWxzZSB8IHRydWUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJRSBvbmx5LiBIYXMgdGhlIGFiaWxpdHkgdG8gdHVybiBvZmYgaXRzIHN5c3RlbSB1bmRlcmxpbmVzIGZvciBhY2NlbGVyYXRvciBrZXlzIHVudGlsIHRoZSBBTFQga2V5IGlzIHByZXNzZWQiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1iZWhhdmlvciIsYnJvd3NlcnM6WyJJRTgiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IklFIG9ubHkuIFVzZWQgdG8gZXh0ZW5kIGJlaGF2aW9ycyBvZiB0aGUgYnJvd3NlciIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiItbXMtYmxvY2stcHJvZ3Jlc3Npb24iLGJyb3dzZXJzOlsiSUU4Il0sdmFsdWVzOlt7bmFtZToiYnQiLGRlc2NyaXB0aW9uOiJCb3R0b20tdG8tdG9wIGJsb2NrIGZsb3cuIExheW91dCBpcyBob3Jpem9udGFsLiJ9LHtuYW1lOiJsciIsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgZGlyZWN0aW9uLiBUaGUgZmxvdyBvcmllbnRhdGlvbiBpcyB2ZXJ0aWNhbC4ifSx7bmFtZToicmwiLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGRpcmVjdGlvbi4gVGhlIGZsb3cgb3JpZW50YXRpb24gaXMgdmVydGljYWwuIn0se25hbWU6InRiIixkZXNjcmlwdGlvbjoiVG9wLXRvLWJvdHRvbSBkaXJlY3Rpb24uIFRoZSBmbG93IG9yaWVudGF0aW9uIGlzIGhvcml6b250YWwuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoidGIgfCBybCB8IGJ0IHwgbHIiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBibG9jay1wcm9ncmVzc2lvbiB2YWx1ZSBhbmQgdGhlIGZsb3cgb3JpZW50YXRpb24iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tY2hhaW5pbmciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjaGFpbmVkIixkZXNjcmlwdGlvbjoiVGhlIG5lYXJlc3Qgem9vbWFibGUgcGFyZW50IGVsZW1lbnQgYmVnaW5zIHpvb21pbmcgd2hlbiB0aGUgdXNlciBoaXRzIGEgem9vbSBsaW1pdCBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIE5vIGJvdW5jZSBlZmZlY3QgaXMgc2hvd24uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJBIGJvdW5jZSBlZmZlY3QgaXMgc2hvd24gd2hlbiB0aGUgdXNlciBoaXRzIGEgem9vbSBsaW1pdCBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGNoYWluZWQiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHpvb20gYmVoYXZpb3IgdGhhdCBvY2N1cnMgd2hlbiBhIHVzZXIgaGl0cyB0aGUgem9vbSBsaW1pdCBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIn0se25hbWU6Ii1tcy1jb250ZW50LXpvb21pbmciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgbm90IHpvb21hYmxlLiJ9LHtuYW1lOiJ6b29tIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgem9vbWFibGUuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IHpvb20iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB6b29taW5nIGlzIGVuYWJsZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtY29udGVudC16b29tLWxpbWl0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1jb250ZW50LXpvb20tbGltaXQtbWluJz4gPCctbXMtY29udGVudC16b29tLWxpbWl0LW1heCc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciB0aGUgLW1zLWNvbnRlbnQtem9vbS1saW1pdC1taW4gYW5kIC1tcy1jb250ZW50LXpvb20tbGltaXQtbWF4IHByb3BlcnRpZXMuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtY29udGVudC16b29tLWxpbWl0LW1heCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXhpbXVtIHpvb20gZmFjdG9yLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLWNvbnRlbnQtem9vbS1saW1pdC1taW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWluaW11bSB6b29tIGZhY3Rvci4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tc25hcCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im1hbmRhdG9yeSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBtb3Rpb24gb2YgdGhlIGNvbnRlbnQgYWZ0ZXIgdGhlIGNvbnRhY3QgaXMgcGlja2VkIHVwIGlzIGFsd2F5cyBhZGp1c3RlZCBzbyB0aGF0IGl0IGxhbmRzIG9uIGEgc25hcC1wb2ludC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHpvb21pbmcgaXMgdW5hZmZlY3RlZCBieSBhbnkgZGVmaW5lZCBzbmFwLXBvaW50cy4ifSx7bmFtZToicHJveGltaXR5IixkZXNjcmlwdGlvbjonSW5kaWNhdGVzIHRoYXQgdGhlIG1vdGlvbiBvZiB0aGUgY29udGVudCBhZnRlciB0aGUgY29udGFjdCBpcyBwaWNrZWQgdXAgbWF5IGJlIGFkanVzdGVkIGlmIHRoZSBjb250ZW50IHdvdWxkIG5vcm1hbGx5IHN0b3AgImNsb3NlIGVub3VnaCIgdG8gYSBzbmFwLXBvaW50Lid9LHtuYW1lOiJzbmFwSW50ZXJ2YWwoMTAwJSwgMTAwJSkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hlcmUgdGhlIHNuYXAtcG9pbnRzIHdpbGwgYmUgcGxhY2VkLiJ9LHtuYW1lOiJzbmFwTGlzdCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBvZiBpbmRpdmlkdWFsIHNuYXAtcG9pbnRzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygem9vbSBmYWN0b3JzLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjwnLW1zLWNvbnRlbnQtem9vbS1zbmFwLXR5cGUnPiB8fCA8Jy1tcy1jb250ZW50LXpvb20tc25hcC1wb2ludHMnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgdGhlIC1tcy1jb250ZW50LXpvb20tc25hcC10eXBlIGFuZCAtbXMtY29udGVudC16b29tLXNuYXAtcG9pbnRzIHByb3BlcnRpZXMuIn0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tc25hcC1wb2ludHMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJzbmFwSW50ZXJ2YWwoMTAwJSwgMTAwJSkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hlcmUgdGhlIHNuYXAtcG9pbnRzIHdpbGwgYmUgcGxhY2VkLiJ9LHtuYW1lOiJzbmFwTGlzdCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBvZiBpbmRpdmlkdWFsIHNuYXAtcG9pbnRzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygem9vbSBmYWN0b3JzLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InNuYXBJbnRlcnZhbCggPHBlcmNlbnRhZ2U+LCA8cGVyY2VudGFnZT4gKSB8IHNuYXBMaXN0KCA8cGVyY2VudGFnZT4jICkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXJlIHpvb20gc25hcC1wb2ludHMgYXJlIGxvY2F0ZWQuIn0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tc25hcC10eXBlIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibWFuZGF0b3J5IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIG1vdGlvbiBvZiB0aGUgY29udGVudCBhZnRlciB0aGUgY29udGFjdCBpcyBwaWNrZWQgdXAgaXMgYWx3YXlzIGFkanVzdGVkIHNvIHRoYXQgaXQgbGFuZHMgb24gYSBzbmFwLXBvaW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgem9vbWluZyBpcyB1bmFmZmVjdGVkIGJ5IGFueSBkZWZpbmVkIHNuYXAtcG9pbnRzLiJ9LHtuYW1lOiJwcm94aW1pdHkiLGRlc2NyaXB0aW9uOidJbmRpY2F0ZXMgdGhhdCB0aGUgbW90aW9uIG9mIHRoZSBjb250ZW50IGFmdGVyIHRoZSBjb250YWN0IGlzIHBpY2tlZCB1cCBtYXkgYmUgYWRqdXN0ZWQgaWYgdGhlIGNvbnRlbnQgd291bGQgbm9ybWFsbHkgc3RvcCAiY2xvc2UgZW5vdWdoIiB0byBhIHNuYXAtcG9pbnQuJ31dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IHByb3hpbWl0eSB8IG1hbmRhdG9yeSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgem9vbWluZyBpcyBhZmZlY3RlZCBieSBkZWZpbmVkIHNuYXAtcG9pbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZpbHRlciIsYnJvd3NlcnM6WyJJRTgtOSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHN0cmluZz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJRSBvbmx5LiBVc2VkIHRvIHByb2R1Y2UgdmlzdWFsIGVmZmVjdHMuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciXX0se25hbWU6Ii1tcy1mbGV4Iixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0aGUgbWFpbiBzaXplIHByb3BlcnR5IGFzIHRoZSB1c2VkICdmbGV4LWJhc2lzJy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkV4cGFuZHMgdG8gJzAgMCBhdXRvJy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJzcGVjaWZpZXMgdGhlIHBhcmFtZXRlcnMgb2YgYSBmbGV4aWJsZSBsZW5ndGg6IHRoZSBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgZmxleGliaWxpdHksIGFuZCB0aGUgcHJlZmVycmVkIHNpemUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtZmxleC1hbGlnbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgZmxleCBpdGVt4oCZcyBpbmxpbmUgYXhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MgYXhpcywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ2ZsZXgtc3RhcnQnLiBPdGhlcndpc2UsIGl0IHBhcnRpY2lwYXRlcyBpbiBiYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGl0ZW3igJlzIG1hcmdpbiBib3ggaXMgY2VudGVyZWQgaW4gdGhlIGNyb3NzIGF4aXMgd2l0aGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3MtZW5kIG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLWVuZCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1zdGFydCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleGJveCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1zdGFydCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNyb3NzIHNpemUgcHJvcGVydHkgb2YgdGhlIGZsZXhib3ggaXRlbSBpcyBhbnl0aGluZyBvdGhlciB0aGFuICdhdXRvJywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ3N0YXJ0Jy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBbGlnbnMgZmxleCBpdGVtcyBhbG9uZyB0aGUgY3Jvc3MgYXhpcyBvZiB0aGUgY3VycmVudCBsaW5lIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVy4oCZcyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBibG9jayBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToiY29sdW1uLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdjb2x1bW4nLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6InJvdyIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcuKAmXMgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgaW5saW5lIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJyb3ctcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3JvdycsIGV4Y2VwdCB0aGUgbWFpbi1zdGFydCBhbmQgbWFpbi1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZsZXggaXRlbXMgYXJlIHBsYWNlZCBpbiB0aGUgZmxleCBjb250YWluZXIsIGJ5IHNldHRpbmcgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxleCBjb250YWluZXLigJlzIG1haW4gYXhpcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LWZsb3ciLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcuKAmXMgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgYmxvY2sgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6ImNvbHVtbi1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnY29sdW1uJywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9LHtuYW1lOiJub3dyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUuIn0se25hbWU6InJvdyIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcuKAmXMgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgaW5saW5lIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXhib3ggaXMgbXVsdGktbGluZS4ifSx7bmFtZToid3JhcC1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnd3JhcCcsIGV4Y2VwdCB0aGUgY3Jvc3Mtc3RhcnQgYW5kIGNyb3NzLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmxleGJveCBpdGVtcyBhcmUgcGxhY2VkIGluIHRoZSBmbGV4Ym94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtaXRlbS1hbGlnbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbXB1dGVzIHRvIHRoZSB2YWx1ZSBvZiAnYWxpZ24taXRlbXMnIG9uIHRoZSBlbGVtZW504oCZcyBwYXJlbnQsIG9yICdzdHJldGNoJyBpZiB0aGUgZWxlbWVudCBoYXMgbm8gcGFyZW50LiBPbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZWxlbWVudHMsIGl0IGNvbXB1dGVzIHRvIGl0c2VsZi4ifSx7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgZmxleCBpdGVt4oCZcyBpbmxpbmUgYXhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MgYXhpcywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ2ZsZXgtc3RhcnQnLiBPdGhlcndpc2UsIGl0IHBhcnRpY2lwYXRlcyBpbiBiYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGl0ZW3igJlzIG1hcmdpbiBib3ggaXMgY2VudGVyZWQgaW4gdGhlIGNyb3NzIGF4aXMgd2l0aGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3MtZW5kIG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLWVuZCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1zdGFydCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1zdGFydCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNyb3NzIHNpemUgcHJvcGVydHkgb2YgdGhlIGZsZXggaXRlbSBjb21wdXRlcyB0byBhdXRvLCBhbmQgbmVpdGhlciBvZiB0aGUgY3Jvc3MtYXhpcyBtYXJnaW5zIGFyZSBhdXRvLCB0aGUgZmxleCBpdGVtIGlzIHN0cmV0Y2hlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBbGxvd3MgdGhlIGRlZmF1bHQgYWxpZ25tZW50IGFsb25nIHRoZSBjcm9zcyBheGlzIHRvIGJlIG92ZXJyaWRkZW4gZm9yIGluZGl2aWR1YWwgZmxleCBpdGVtcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LWxpbmUtcGFjayIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIGNlbnRlciBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6ImRpc3RyaWJ1dGUiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBmbGV4IGNvbnRhaW5lciwgd2l0aCBoYWxmLXNpemUgc3BhY2VzIG9uIGVpdGhlciBlbmQuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBlbmQgb2YgdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBpbiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IkxpbmVzIHN0cmV0Y2ggdG8gdGFrZSB1cCB0aGUgcmVtYWluaW5nIHNwYWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyBhIGZsZXggY29udGFpbmVy4oCZcyBsaW5lcyB3aXRoaW4gdGhlIGZsZXggY29udGFpbmVyIHdoZW4gdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGNyb3NzLWF4aXMsIHNpbWlsYXIgdG8gaG93ICdqdXN0aWZ5LWNvbnRlbnQnIGFsaWducyBpbmRpdmlkdWFsIGl0ZW1zIHdpdGhpbiB0aGUgbWFpbi1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtb3JkZXIiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIG9yZGVyIGluIHdoaWNoIGNoaWxkcmVuIG9mIGEgZmxleCBjb250YWluZXIgYXBwZWFyIHdpdGhpbiB0aGUgZmxleCBjb250YWluZXIsIGJ5IGFzc2lnbmluZyB0aGVtIHRvIG9yZGluYWwgZ3JvdXBzLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWZsZXgtcGFjayIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgY2VudGVyIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJkaXN0cmlidXRlIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBsaW5lLCB3aXRoIGhhbGYtc2l6ZSBzcGFjZXMgb24gZWl0aGVyIGVuZC4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgZW5kIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyBmbGV4IGl0ZW1zIGFsb25nIHRoZSBtYWluIGF4aXMgb2YgdGhlIGN1cnJlbnQgbGluZSBvZiB0aGUgZmxleCBjb250YWluZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxleC13cmFwIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub3dyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUuIn0se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleGJveCBpcyBtdWx0aS1saW5lLiJ9LHtuYW1lOiJ3cmFwLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICd3cmFwJywgZXhjZXB0IHRoZSBjcm9zcy1zdGFydCBhbmQgY3Jvc3MtZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciB0aGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUgb3IgbXVsdGktbGluZSwgYW5kIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGNyb3NzLWF4aXMsIHdoaWNoIGRldGVybWluZXMgdGhlIGRpcmVjdGlvbiBuZXcgbGluZXMgYXJlIHN0YWNrZWQgaW4uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxvdy1mcm9tIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBibG9jayBjb250YWluZXIgaXMgbm90IGEgQ1NTIFJlZ2lvbi4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIG5vbmUgfCA8Y3VzdG9tLWlkZW50PiBdIyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246Ik1ha2VzIGEgYmxvY2sgY29udGFpbmVyIGEgcmVnaW9uIGFuZCBhc3NvY2lhdGVzIGl0IHdpdGggYSBuYW1lZCBmbG93LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciJdfSx7bmFtZToiLW1zLWZsb3ctaW50byIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBub3QgbW92ZWQgdG8gYSBuYW1lZCBmbG93IGFuZCBub3JtYWwgQ1NTIHByb2Nlc3NpbmcgdGFrZXMgcGxhY2UuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyBub25lIHwgPGN1c3RvbS1pZGVudD4gXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJQbGFjZXMgYW4gZWxlbWVudCBvciBpdHMgY29udGVudHMgaW50byBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIl19LHtuYW1lOiItbXMtZ3JpZC1jb2x1bW4iLGJyb3dzZXJzOlsiRTEyIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiZW5kIn0se25hbWU6InN0YXJ0In1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVXNlZCB0byBwbGFjZSBncmlkIGl0ZW1zIGFuZCBleHBsaWNpdGx5IGRlZmluZWQgZ3JpZCBjZWxscyBpbiB0aGUgR3JpZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiItbXMtZ3JpZC1jb2x1bW4tYWxpZ24iLGJyb3dzZXJzOlsiRTEyIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlBsYWNlcyB0aGUgY2VudGVyIG9mIHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IGF0IHRoZSBjZW50ZXIgb2YgdGhlIEdyaWQgSXRlbSdzIGNvbHVtbi4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBlbmQgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCB0byB0aGUgZW5kIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIGNvbHVtbi4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIHN0YXJ0aW5nIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggdG8gdGhlIHN0YXJ0aW5nIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIGNvbHVtbi4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IkVuc3VyZXMgdGhhdCB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCBpcyBlcXVhbCB0byB0aGUgc2l6ZSBvZiB0aGUgR3JpZCBJdGVtJ3MgY29sdW1uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyB0aGUgY29sdW1ucyBpbiBhIGdyaWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZ3JpZC1jb2x1bW5zIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgPHRyYWNrLWxpc3Q+IHwgPGF1dG8tdHJhY2stbGlzdD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJMYXlzIG91dCB0aGUgY29sdW1ucyBvZiB0aGUgZ3JpZC4ifSx7bmFtZToiLW1zLWdyaWQtY29sdW1uLXNwYW4iLGJyb3dzZXJzOlsiRTEyIiwiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBzcGFuLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWdyaWQtbGF5ZXIiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdyaWQtbGF5ZXIgaXMgc2ltaWxhciBpbiBjb25jZXB0IHRvIHotaW5kZXgsIGJ1dCBhdm9pZHMgb3ZlcmxvYWRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIHotaW5kZXggcHJvcGVydHksIHdoaWNoIGlzIGFwcGxpY2FibGUgb25seSB0byBwb3NpdGlvbmVkIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWdyaWQtcm93Iixicm93c2VyczpbIkUxMiIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImVuZCJ9LHtuYW1lOiJzdGFydCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246ImdyaWQtcm93IGlzIHVzZWQgdG8gcGxhY2UgZ3JpZCBpdGVtcyBhbmQgZXhwbGljaXRseSBkZWZpbmVkIGdyaWQgY2VsbHMgaW4gdGhlIEdyaWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwic3RyaW5nIiwiZW51bSJdfSx7bmFtZToiLW1zLWdyaWQtcm93LWFsaWduIixicm93c2VyczpbIkUxMiIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJQbGFjZXMgdGhlIGNlbnRlciBvZiB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCBhdCB0aGUgY2VudGVyIG9mIHRoZSBHcmlkIEl0ZW0ncyByb3cuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkFsaWducyB0aGUgZW5kIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggdG8gdGhlIGVuZCBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyByb3cuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBzdGFydGluZyBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IHRvIHRoZSBzdGFydGluZyBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyByb3cuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJFbnN1cmVzIHRoYXQgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggaXMgZXF1YWwgdG8gdGhlIHNpemUgb2YgdGhlIEdyaWQgSXRlbSdzIHJvdy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIHJvd3MgaW4gYSBncmlkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWdyaWQtcm93cyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IDx0cmFjay1saXN0PiB8IDxhdXRvLXRyYWNrLWxpc3Q+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiTGF5cyBvdXQgdGhlIGNvbHVtbnMgb2YgdGhlIGdyaWQuIn0se25hbWU6Ii1tcy1ncmlkLXJvdy1zcGFuIixicm93c2VyczpbIkUxMiIsIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJvd3MgdG8gc3Bhbi4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii1tcy1oaWdoLWNvbnRyYXN0LWFkanVzdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJQcm9wZXJ0aWVzIHdpbGwgYmUgYWRqdXN0ZWQgYXMgYXBwbGljYWJsZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFkanVzdG1lbnRzIHdpbGwgYmUgYXBwbGllZC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBpZiBwcm9wZXJ0aWVzIHNob3VsZCBiZSBhZGp1c3RlZCBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtaHlwaGVuYXRlLWxpbWl0LWNoYXJzIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGNob29zZXMgYSB2YWx1ZSB0aGF0IGFkYXB0cyB0byB0aGUgY3VycmVudCBsYXlvdXQuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IDxpbnRlZ2VyPnsxLDN9IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGEgaHlwaGVuYXRlZCB3b3JkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWh5cGhlbmF0ZS1saW1pdC1saW5lcyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vLWxpbWl0IixkZXNjcmlwdGlvbjoiVGhlcmUgaXMgbm8gbGltaXQuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm8tbGltaXQgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHN1Y2Nlc3NpdmUgaHlwaGVuYXRlZCBsaW5lcyBpbiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWh5cGhlbmF0ZS1saW1pdC16b25lIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWF4aW11bSBhbW91bnQgb2YgdW5maWxsZWQgc3BhY2UgKGJlZm9yZSBqdXN0aWZpY2F0aW9uKSB0aGF0IG1heSBiZSBsZWZ0IGluIHRoZSBsaW5lIGJveCBiZWZvcmUgaHlwaGVuYXRpb24gaXMgdHJpZ2dlcmVkIHRvIHB1bGwgcGFydCBvZiBhIHdvcmQgZnJvbSB0aGUgbmV4dCBsaW5lIGJhY2sgdXAgaW50byB0aGUgY3VycmVudCBsaW5lLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLWh5cGhlbnMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29uZGl0aW9uYWwgaHlwaGVuYXRpb24gY2hhcmFjdGVycyBpbnNpZGUgYSB3b3JkLCBpZiBwcmVzZW50LCB0YWtlIHByaW9yaXR5IG92ZXIgYXV0b21hdGljIHJlc291cmNlcyB3aGVuIGRldGVybWluaW5nIGh5cGhlbmF0aW9uIHBvaW50cyB3aXRoaW4gdGhlIHdvcmQuIn0se25hbWU6Im1hbnVhbCIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBvbmx5IGJyb2tlbiBhdCBsaW5lIGJyZWFrcyB3aGVyZSB0aGVyZSBhcmUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgdGhhdCBzdWdnZXN0IGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG5vdCBicm9rZW4gYXQgbGluZSBicmVha3MsIGV2ZW4gaWYgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgc3VnZ2VzdCBsaW5lIGJyZWFrIHBvaW50cy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQgdG8gY3JlYXRlIG1vcmUgYnJlYWsgb3Bwb3J0dW5pdGllcyB3aXRoaW4gYSBsaW5lIG9mIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtaW1lLW1vZGUiLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImFjdGl2ZSIsZGVzY3JpcHRpb246IlRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGlzIGluaXRpYWxseSBhY3RpdmU7IHRleHQgZW50cnkgaXMgcGVyZm9ybWVkIHVzaW5nIGl0IHVubGVzcyB0aGUgdXNlciBzcGVjaWZpY2FsbHkgZGlzbWlzc2VzIGl0LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGlzIG1hZGUgdG8gdGhlIGN1cnJlbnQgaW5wdXQgbWV0aG9kIGVkaXRvciBzdGF0ZS4gVGhpcyBpcyB0aGUgZGVmYXVsdC4ifSx7bmFtZToiZGlzYWJsZWQiLGRlc2NyaXB0aW9uOiJUaGUgaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBkaXNhYmxlZCBhbmQgbWF5IG5vdCBiZSBhY3RpdmF0ZWQgYnkgdGhlIHVzZXIuIn0se25hbWU6ImluYWN0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgaXMgaW5pdGlhbGx5IGluYWN0aXZlLCBidXQgdGhlIHVzZXIgbWF5IGFjdGl2YXRlIGl0IGlmIHRoZXkgd2lzaC4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGhlIElNRSBzdGF0ZSBzaG91bGQgYmUgbm9ybWFsOyB0aGlzIHZhbHVlIGNhbiBiZSB1c2VkIGluIGEgdXNlciBzdHlsZSBzaGVldCB0byBvdmVycmlkZSB0aGUgcGFnZSBzZXR0aW5nLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBzdGF0ZSBvZiB0aGUgaW5wdXQgbWV0aG9kIGVkaXRvciBmb3IgdGV4dCBmaWVsZHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtaW50ZXJwb2xhdGlvbi1tb2RlIixicm93c2VyczpbIklFNyJdLHZhbHVlczpbe25hbWU6ImJpY3ViaWMifSx7bmFtZToibmVhcmVzdC1uZWlnaGJvciJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyB0aGUgaW50ZXJwb2xhdGlvbiAocmVzYW1wbGluZykgbWV0aG9kIHVzZWQgdG8gc3RyZXRjaCBpbWFnZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjaGFyIixkZXNjcmlwdGlvbjoiQW55IG9mIHRoZSByYW5nZSBvZiBjaGFyYWN0ZXIgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLWNoYXIgcHJvcGVydHkuIn0se25hbWU6ImxpbmUiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIGxpbmUgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLWxpbmUgcHJvcGVydHkuIn0se25hbWU6Im1vZGUiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIG1vZGUgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLW1vZGUgcHJvcGVydHkuIn0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIHR5cGUgdmFsdWVzIGF2YWlsYWJsZSB0byB0aGUgLW1zLWxheW91dC1ncmlkLXR5cGUgcHJvcGVydHkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIGNvbXBvc2l0ZSBkb2N1bWVudCBncmlkIHByb3BlcnRpZXMgdGhhdCBzcGVjaWZ5IHRoZSBsYXlvdXQgb2YgdGV4dCBjaGFyYWN0ZXJzLiJ9LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQtY2hhciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJMYXJnZXN0IGNoYXJhY3RlciBpbiB0aGUgZm9udCBvZiB0aGUgZWxlbWVudCBpcyB1c2VkIHRvIHNldCB0aGUgY2hhcmFjdGVyIGdyaWQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJEZWZhdWx0LiBObyBjaGFyYWN0ZXIgZ3JpZCBpcyBzZXQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIHNpemUgb2YgdGhlIGNoYXJhY3RlciBncmlkIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgdGV4dCBjb250ZW50IG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLWxheW91dC1ncmlkLWxpbmUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTGFyZ2VzdCBjaGFyYWN0ZXIgaW4gdGhlIGZvbnQgb2YgdGhlIGVsZW1lbnQgaXMgdXNlZCB0byBzZXQgdGhlIGNoYXJhY3RlciBncmlkLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRGVmYXVsdC4gTm8gZ3JpZCBsaW5lIGlzIHNldC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIG9yIHJldHJpZXZlcyB0aGUgZ3JpZGxpbmUgdmFsdWUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLWxheW91dC1ncmlkLW1vZGUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiRGVmYXVsdC4gQm90aCB0aGUgY2hhciBhbmQgbGluZSBncmlkIG1vZGVzIGFyZSBlbmFibGVkLiBUaGlzIHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGZ1bGx5IGVuYWJsZSB0aGUgbGF5b3V0IGdyaWQgb24gYW4gZWxlbWVudC4ifSx7bmFtZToiY2hhciIsZGVzY3JpcHRpb246Ik9ubHkgYSBjaGFyYWN0ZXIgZ3JpZCBpcyB1c2VkLiBUaGlzIGlzIHJlY29tbWVuZGVkIGZvciB1c2Ugd2l0aCBibG9jay1sZXZlbCBlbGVtZW50cywgc3VjaCBhcyBhIGJsb2NrcXVvdGUsIHdoZXJlIHRoZSBsaW5lIGdyaWQgaXMgaW50ZW5kZWQgdG8gYmUgZGlzYWJsZWQuIn0se25hbWU6ImxpbmUiLGRlc2NyaXB0aW9uOiJPbmx5IGEgbGluZSBncmlkIGlzIHVzZWQuIFRoaXMgaXMgcmVjb21tZW5kZWQgZm9yIHVzZSB3aXRoIGlubGluZSBlbGVtZW50cywgc3VjaCBhcyBhIHNwYW4sIHRvIGRpc2FibGUgdGhlIGhvcml6b250YWwgZ3JpZCBvbiBydW5zIG9mIHRleHQgdGhhdCBhY3QgYXMgYSBzaW5nbGUgZW50aXR5IGluIHRoZSBncmlkIGxheW91dC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGdyaWQgaXMgdXNlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgd2hldGhlciB0aGUgdGV4dCBsYXlvdXQgZ3JpZCB1c2VzIHR3byBkaW1lbnNpb25zLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWxheW91dC1ncmlkLXR5cGUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IkdyaWQgdXNlZCBmb3IgbW9ub3NwYWNlZCBsYXlvdXQuIEFsbCBub25jdXJzaXZlIGNoYXJhY3RlcnMgYXJlIHRyZWF0ZWQgYXMgZXF1YWw7IGV2ZXJ5IGNoYXJhY3RlciBpcyBjZW50ZXJlZCB3aXRoaW4gYSBzaW5nbGUgZ3JpZCBzcGFjZSBieSBkZWZhdWx0LiJ9LHtuYW1lOiJsb29zZSIsZGVzY3JpcHRpb246IkRlZmF1bHQuIEdyaWQgdXNlZCBmb3IgSmFwYW5lc2UgYW5kIEtvcmVhbiBjaGFyYWN0ZXJzLiJ9LHtuYW1lOiJzdHJpY3QiLGRlc2NyaXB0aW9uOiJHcmlkIHVzZWQgZm9yIENoaW5lc2UsIGFzIHdlbGwgYXMgSmFwYW5lc2UgKEdlbmtvKSBhbmQgS29yZWFuIGNoYXJhY3RlcnMuIE9ubHkgdGhlIGlkZW9ncmFwaHMsIGthbmFzLCBhbmQgd2lkZSBjaGFyYWN0ZXJzIGFyZSBzbmFwcGVkIHRvIHRoZSBncmlkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgb3IgcmV0cmlldmVzIHRoZSB0eXBlIG9mIGdyaWQgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1saW5lLWJyZWFrIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBVQSBkZXRlcm1pbmVzIHRoZSBzZXQgb2YgbGluZS1icmVha2luZyByZXN0cmljdGlvbnMgdG8gdXNlIGZvciBDSksgc2NyaXB0cywgYW5kIGl0IG1heSB2YXJ5IHRoZSByZXN0cmljdGlvbnMgYmFzZWQgb24gdGhlIGxlbmd0aCBvZiB0aGUgbGluZTsgZS5nLiwgdXNlIGEgbGVzcyByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVhayBydWxlcyBmb3Igc2hvcnQgbGluZXMuIn0se25hbWU6ImtlZXAtYWxsIixkZXNjcmlwdGlvbjoiU2VxdWVuY2VzIG9mIENKSyBjaGFyYWN0ZXJzIGNhbiBubyBsb25nZXIgYnJlYWsgb24gaW1wbGllZCBicmVhayBwb2ludHMuIFRoaXMgb3B0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlcmUgdGhlIHByZXNlbmNlIG9mIHdvcmQgc2VwYXJhdG9yIGNoYXJhY3RlcnMgc3RpbGwgY3JlYXRlcyBsaW5lLWJyZWFraW5nIG9wcG9ydHVuaXRpZXMsIGFzIGluIEtvcmVhbi4ifSx7bmFtZToibmV3c3BhcGVyIixkZXNjcmlwdGlvbjoiQnJlYWtzIENKSyBzY3JpcHRzIHVzaW5nIHRoZSBsZWFzdCByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcy4gVHlwaWNhbGx5IHVzZWQgZm9yIHNob3J0IGxpbmVzLCBzdWNoIGFzIGluIG5ld3NwYXBlcnMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkJyZWFrcyBDSksgc2NyaXB0cyB1c2luZyBhIG5vcm1hbCBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcy4ifSx7bmFtZToic3RyaWN0IixkZXNjcmlwdGlvbjoiQnJlYWtzIENKSyBzY3JpcHRzIHVzaW5nIGEgbW9yZSByZXN0cmljdGl2ZSBzZXQgb2YgbGluZS1icmVha2luZyBydWxlcyB0aGFuICdub3JtYWwnLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGF0IHNldCBvZiBsaW5lIGJyZWFraW5nIHJlc3RyaWN0aW9ucyBhcmUgaW4gZWZmZWN0IHdpdGhpbiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1vdmVyZmxvdy1zdHlsZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJObyBwcmVmZXJlbmNlLCBVQSBzaG91bGQgdXNlIHRoZSBmaXJzdCBzY3JvbGxpbmcgbWV0aG9kIGluIHRoZSBsaXN0IHRoYXQgaXQgc3VwcG9ydHMuIn0se25hbWU6Ii1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhciIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgZWxlbWVudCBkaXNwbGF5cyBhdXRvLWhpZGluZyBzY3JvbGxiYXJzIGR1cmluZyBtb3VzZSBpbnRlcmFjdGlvbnMgYW5kIHBhbm5pbmcgaW5kaWNhdG9ycyBkdXJpbmcgdG91Y2ggYW5kIGtleWJvYXJkIGludGVyYWN0aW9ucy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgZWxlbWVudCBkb2VzIG5vdCBkaXNwbGF5IHNjcm9sbGJhcnMgb3IgcGFubmluZyBpbmRpY2F0b3JzLCBldmVuIHdoZW4gaXRzIGNvbnRlbnQgb3ZlcmZsb3dzLiJ9LHtuYW1lOiJzY3JvbGxiYXIiLGRlc2NyaXB0aW9uOidTY3JvbGxiYXJzIGFyZSB0eXBpY2FsbHkgbmFycm93IHN0cmlwcyBpbnNlcnRlZCBvbiBvbmUgb3IgdHdvIGVkZ2VzIG9mIGFuIGVsZW1lbnQgYW5kIHdoaWNoIG9mdGVuIGhhdmUgYXJyb3dzIHRvIGNsaWNrIG9uIGFuZCBhICJ0aHVtYiIgdG8gZHJhZyB1cCBhbmQgZG93biAob3IgbGVmdCBhbmQgcmlnaHQpIHRvIG1vdmUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbGVtZW50Lid9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCBub25lIHwgc2Nyb2xsYmFyIHwgLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmeSB3aGV0aGVyIGNvbnRlbnQgaXMgY2xpcHBlZCB3aGVuIGl0IG92ZXJmbG93cyB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYXJlYS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1wZXJzcGVjdGl2ZSIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHBlcnNwZWN0aXZlIHRyYW5zZm9ybSBpcyBhcHBsaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFwcGxpZXMgdGhlIHNhbWUgdHJhbnNmb3JtIGFzIHRoZSBwZXJzcGVjdGl2ZSg8bnVtYmVyPikgdHJhbnNmb3JtIGZ1bmN0aW9uLCBleGNlcHQgdGhhdCBpdCBhcHBsaWVzIG9ubHkgdG8gdGhlIHBvc2l0aW9uZWQgb3IgdHJhbnNmb3JtZWQgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQsIG5vdCB0byB0aGUgdHJhbnNmb3JtIG9uIHRoZSBlbGVtZW50IGl0c2VsZi4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLXBlcnNwZWN0aXZlLW9yaWdpbiIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggYW5kIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtcGVyc3BlY3RpdmUtb3JpZ2luLXgiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBmb3IgdGhlIHBlcnNwZWN0aXZlIHByb3BlcnR5LiBJdCBlZmZlY3RpdmVseSBzZXRzIHRoZSBYICBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii1tcy1wZXJzcGVjdGl2ZS1vcmlnaW4teSIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtcHJvZ3Jlc3MtYXBwZWFyYW5jZSIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYmFyIn0se25hbWU6InJpbmcifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHNwZWNpZmllcyB3aGV0aGVyIGEgcHJvZ3Jlc3MgY29udHJvbCBkaXNwbGF5cyBhcyBhIGJhciBvciBhIHJpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLTNkbGlnaHQtY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRvcCBhbmQgbGVmdCBlZGdlcyBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1hcnJvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTgiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgYXJyb3cgZWxlbWVudHMgb2YgYSBzY3JvbGwgYXJyb3cuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1iYXNlLWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBtYWluIGVsZW1lbnRzIG9mIGEgc2Nyb2xsIGJhciwgd2hpY2ggaW5jbHVkZSB0aGUgc2Nyb2xsIGJveCwgdHJhY2ssIGFuZCBzY3JvbGwgYXJyb3dzLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItZGFya3NoYWRvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTgiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgZ3V0dGVyIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLWZhY2UtY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItaGlnaGxpZ2h0LWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYW5kIGxlZnQgZWRnZXMgb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItc2hhZG93LWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gYW5kIHJpZ2h0IGVkZ2VzIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLXRyYWNrLWNvbG9yIixicm93c2VyczpbIklFNSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tcy1zY3JvbGxiYXItdHJhY2stY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0cmFjayBlbGVtZW50IG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsLWNoYWluaW5nIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2hhaW5lZCJ9LHtuYW1lOiJub25lIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiY2hhaW5lZCB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGluZGljYXRlcyB0aGUgc2Nyb2xsaW5nIGJlaGF2aW9yIHRoYXQgb2NjdXJzIHdoZW4gYSB1c2VyIGhpdHMgdGhlIGNvbnRlbnQgYm91bmRhcnkgZHVyaW5nIGEgbWFuaXB1bGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1saW1pdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1zY3JvbGwtbGltaXQteC1taW4nPiA8Jy1tcy1zY3JvbGwtbGltaXQteS1taW4nPiA8Jy1tcy1zY3JvbGwtbGltaXQteC1tYXgnPiA8Jy1tcy1zY3JvbGwtbGltaXQteS1tYXgnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHNob3J0aGFuZCB2YWx1ZSB0aGF0IHNldHMgdmFsdWVzIGZvciB0aGUgLW1zLXNjcm9sbC1saW1pdC14LW1pbiwgLW1zLXNjcm9sbC1saW1pdC15LW1pbiwgLW1zLXNjcm9sbC1saW1pdC14LW1heCwgYW5kIC1tcy1zY3JvbGwtbGltaXQteS1tYXggcHJvcGVydGllcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1saW1pdC14LW1heCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIHNjcm9sbExlZnQgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tcy1zY3JvbGwtbGltaXQteC1taW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIG1pbmltdW0gdmFsdWUgZm9yIHRoZSBzY3JvbGxMZWZ0IHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLWxpbWl0LXktbWF4Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgc2Nyb2xsVG9wIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLWxpbWl0LXktbWluIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0aGUgc2Nyb2xsVG9wIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLXJhaWxzIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSJ9LHtuYW1lOiJyYWlsZWQifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgcmFpbGVkIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBvciBub3Qgc21hbGwgbW90aW9ucyBwZXJwZW5kaWN1bGFyIHRvIHRoZSBwcmltYXJ5IGF4aXMgb2YgbW90aW9uIHdpbGwgcmVzdWx0IGluIGVpdGhlciBjaGFuZ2VzIHRvIGJvdGggdGhlIHNjcm9sbFRvcCBhbmQgc2Nyb2xsTGVmdCBwcm9wZXJ0aWVzIG9yIGEgY2hhbmdlIHRvIHRoZSBwcmltYXJ5IGF4aXMgKGZvciBpbnN0YW5jZSwgZWl0aGVyIHRoZSBzY3JvbGxUb3Agb3Igc2Nyb2xsTGVmdCBwcm9wZXJ0aWVzIHdpbGwgY2hhbmdlLCBidXQgbm90IGJvdGgpLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXBvaW50cy14Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIn0se25hbWU6InNuYXBMaXN0KCkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJzbmFwSW50ZXJ2YWwoIDxsZW5ndGgtcGVyY2VudGFnZT4sIDxsZW5ndGgtcGVyY2VudGFnZT4gKSB8IHNuYXBMaXN0KCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IyApIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBkZWZpbmVzIHdoZXJlIHNuYXAtcG9pbnRzIHdpbGwgYmUgbG9jYXRlZCBhbG9uZyB0aGUgeC1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXBvaW50cy15Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIn0se25hbWU6InNuYXBMaXN0KCkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJzbmFwSW50ZXJ2YWwoIDxsZW5ndGgtcGVyY2VudGFnZT4sIDxsZW5ndGgtcGVyY2VudGFnZT4gKSB8IHNuYXBMaXN0KCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IyApIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBkZWZpbmVzIHdoZXJlIHNuYXAtcG9pbnRzIHdpbGwgYmUgbG9jYXRlZCBhbG9uZyB0aGUgeS1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXR5cGUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgbXVzdCBpZ25vcmUgc25hcCBwb2ludHMsIGlmIGFueSwgd2hlbiBzY3JvbGxlZC4ifSx7bmFtZToibWFuZGF0b3J5IixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgZ3VhcmFudGVlZCB0byByZXN0IG9uIGEgc25hcCBwb2ludCB3aGVuIHRoZXJlIGFyZSBubyBhY3RpdmUgc2Nyb2xsaW5nIG9wZXJhdGlvbnMuIn0se25hbWU6InByb3hpbWl0eSIsZGVzY3JpcHRpb246IlRoZSB2aXN1YWwgdmlld3BvcnQgb2YgdGhpcyBzY3JvbGwgY29udGFpbmVyIG1heSBjb21lIHRvIHJlc3Qgb24gYSBzbmFwIHBvaW50IGF0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhIHNjcm9sbCBhdCB0aGUgZGlzY3JldGlvbiBvZiB0aGUgVUEgZ2l2ZW4gdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNjcm9sbC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgcHJveGltaXR5IHwgbWFuZGF0b3J5IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBkZWZpbmVzIHdoYXQgdHlwZSBvZiBzbmFwLXBvaW50IHNob3VsZCBiZSB1c2VkIGZvciB0aGUgY3VycmVudCBlbGVtZW50LiBUaGVyZSBhcmUgdHdvIHR5cGUgb2Ygc25hcC1wb2ludHMsIHdpdGggdGhlIHByaW1hcnkgZGlmZmVyZW5jZSBiZWluZyB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBpcyBndWFyYW50ZWVkIHRvIGFsd2F5cyBzdG9wIG9uIGEgc25hcC1wb2ludC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGwtc25hcC14Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibWFuZGF0b3J5In0se25hbWU6Im5vbmUifSx7bmFtZToicHJveGltaXR5In0se25hbWU6InNuYXBJbnRlcnZhbCgxMDAlLCAxMDAlKSJ9LHtuYW1lOiJzbmFwTGlzdCgpIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCctbXMtc2Nyb2xsLXNuYXAtdHlwZSc+IDwnLW1zLXNjcm9sbC1zbmFwLXBvaW50cy14Jz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSBzaG9ydGhhbmQgdmFsdWUgdGhhdCBzZXRzIHZhbHVlcyBmb3IgdGhlIC1tcy1zY3JvbGwtc25hcC10eXBlIGFuZCAtbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXggcHJvcGVydGllcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGwtc25hcC15Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibWFuZGF0b3J5In0se25hbWU6Im5vbmUifSx7bmFtZToicHJveGltaXR5In0se25hbWU6InNuYXBJbnRlcnZhbCgxMDAlLCAxMDAlKSJ9LHtuYW1lOiJzbmFwTGlzdCgpIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPCctbXMtc2Nyb2xsLXNuYXAtdHlwZSc+IDwnLW1zLXNjcm9sbC1zbmFwLXBvaW50cy15Jz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSBzaG9ydGhhbmQgdmFsdWUgdGhhdCBzZXRzIHZhbHVlcyBmb3IgdGhlIC1tcy1zY3JvbGwtc25hcC10eXBlIGFuZCAtbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXkgcHJvcGVydGllcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGwtdHJhbnNsYXRpb24iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6InZlcnRpY2FsLXRvLWhvcml6b250YWwifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgdmVydGljYWwtdG8taG9yaXpvbnRhbCIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgdmVydGljYWwtdG8taG9yaXpvbnRhbCBzY3JvbGwgd2hlZWwgdHJhbnNsYXRpb24gb2NjdXJzIG9uIHRoZSBzcGVjaWZpZWQgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10ZXh0LWFsaWduLWxhc3QiLGJyb3dzZXJzOlsiRSIsIklFOCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgY2VudGVyZWQgd2l0aGluIHRoZSBsaW5lIGJveC4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IlRoZSB0ZXh0IGlzIGp1c3RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIG1ldGhvZCBzcGVjaWZpZWQgYnkgdGhlICd0ZXh0LWp1c3RpZnknIHByb3BlcnR5LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ2xlZnQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgc3RhcnQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAncmlnaHQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgZW5kIGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBsYXN0IGxpbmUgb2YgYSBibG9jayBvciBhIGxpbmUgcmlnaHQgYmVmb3JlIGEgZm9yY2VkIGxpbmUgYnJlYWsgaXMgYWxpZ25lZCB3aGVuICd0ZXh0LWFsaWduJyBpcyBzZXQgdG8gJ2p1c3RpZnknLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRleHQtYXV0b3NwYWNlIixicm93c2VyczpbIkUiLCJJRTgiXSx2YWx1ZXM6W3tuYW1lOiJpZGVvZ3JhcGgtYWxwaGEiLGRlc2NyaXB0aW9uOiJDcmVhdGVzIDEvNGVtIGV4dHJhIHNwYWNpbmcgYmV0d2VlbiBydW5zIG9mIGlkZW9ncmFwaGljIGxldHRlcnMgYW5kIG5vbi1pZGVvZ3JhcGhpYyBsZXR0ZXJzLCBzdWNoIGFzIExhdGluLWJhc2VkLCBDeXJpbGxpYywgR3JlZWssIEFyYWJpYyBvciBIZWJyZXcuIn0se25hbWU6ImlkZW9ncmFwaC1udW1lcmljIixkZXNjcmlwdGlvbjoiQ3JlYXRlcyAxLzRlbSBleHRyYSBzcGFjaW5nIGJldHdlZW4gcnVucyBvZiBpZGVvZ3JhcGhpYyBsZXR0ZXJzIGFuZCBudW1lcmljIGdseXBocy4ifSx7bmFtZToiaWRlb2dyYXBoLXBhcmVudGhlc2lzIixkZXNjcmlwdGlvbjoiQ3JlYXRlcyBleHRyYSBzcGFjaW5nIGJldHdlZW4gbm9ybWFsIChub24gd2lkZSkgcGFyZW50aGVzaXMgYW5kIGlkZW9ncmFwaHMuIn0se25hbWU6ImlkZW9ncmFwaC1zcGFjZSIsZGVzY3JpcHRpb246IkV4dGVuZHMgdGhlIHdpZHRoIG9mIHRoZSBzcGFjZSBjaGFyYWN0ZXIgd2hpbGUgc3Vycm91bmRlZCBieSBpZGVvZ3JhcGhzLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZXh0cmEgc3BhY2UgaXMgY3JlYXRlZC4ifSx7bmFtZToicHVuY3R1YXRpb24iLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGV4dHJhIG5vbi1icmVha2luZyBzcGFjaW5nIGFyb3VuZCBwdW5jdHVhdGlvbiBhcyByZXF1aXJlZCBieSBsYW5ndWFnZS1zcGVjaWZpYyB0eXBvZ3JhcGhpYyBjb252ZW50aW9ucy4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgaWRlb2dyYXBoLWFscGhhIHwgaWRlb2dyYXBoLW51bWVyaWMgfCBpZGVvZ3JhcGgtcGFyZW50aGVzaXMgfCBpZGVvZ3JhcGgtc3BhY2UiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGEgZnVsbC13aWR0aCBwdW5jdHVhdGlvbiBtYXJrIGNoYXJhY3RlciBzaG91bGQgYmUgdHJpbW1lZCBpZiBpdCBhcHBlYXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLCBzbyB0aGF0IGl0cyAnaW5rJyBsaW5lcyB1cCB3aXRoIHRoZSBmaXJzdCBnbHlwaCBpbiB0aGUgbGluZSBhYm92ZSBhbmQgYmVsb3cuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdGV4dC1jb21iaW5lLWhvcml6b250YWwiLGJyb3dzZXJzOlsiRSIsIklFMTEiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJBdHRlbXB0IHRvIHR5cGVzZXQgaG9yaXpvbnRhbGx5IGFsbCBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgYm94IHN1Y2ggdGhhdCB0aGV5IHRha2UgdXAgdGhlIHNwYWNlIG9mIGEgc2luZ2xlIGNoYXJhY3RlciB3aXRoaW4gdGhlIHZlcnRpY2FsIGxpbmUgYm94LiJ9LHtuYW1lOiJkaWdpdHMiLGRlc2NyaXB0aW9uOiJBdHRlbXB0IHRvIHR5cGVzZXQgaG9yaXpvbnRhbGx5IGVhY2ggbWF4aW1hbCBzZXF1ZW5jZSBvZiBjb25zZWN1dGl2ZSBBU0NJSSBkaWdpdHMgKFUrMDAzMOKAk1UrMDAzOSkgdGhhdCBoYXMgYXMgbWFueSBvciBmZXdlciBjaGFyYWN0ZXJzIHRoYW4gdGhlIHNwZWNpZmllZCBpbnRlZ2VyIHN1Y2ggdGhhdCBpdCB0YWtlcyB1cCB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIHdpdGhpbiB0aGUgdmVydGljYWwgbGluZSBib3guIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBzcGVjaWFsIHByb2Nlc3NpbmcuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGNvbWJpbmF0aW9uIG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgaW50byB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImludGVnZXIiXX0se25hbWU6Ii1tcy10ZXh0LWp1c3RpZnkiLGJyb3dzZXJzOlsiRSIsIklFOCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgVUEgZGV0ZXJtaW5lcyB0aGUganVzdGlmaWNhdGlvbiBhbGdvcml0aG0gdG8gZm9sbG93LCBiYXNlZCBvbiBhIGJhbGFuY2UgYmV0d2VlbiBwZXJmb3JtYW5jZSBhbmQgYWRlcXVhdGUgcHJlc2VudGF0aW9uIHF1YWxpdHkuIn0se25hbWU6ImRpc3RyaWJ1dGUiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYm90aCBhdCB3b3JkIHNlcGFyYXRvcnMgYW5kIGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcyBpbiBhbGwgc2NyaXB0cyBleGNlcHQgdGhvc2UgaW4gdGhlIGNvbm5lY3RlZCBhbmQgY3Vyc2l2ZSBncm91cHMuIFRoaXMgdmFsdWUgaXMgc29tZXRpbWVzIHVzZWQgaW4gZS5nLiBKYXBhbmVzZSwgb2Z0ZW4gd2l0aCB0aGUgJ3RleHQtYWxpZ24tbGFzdCcgcHJvcGVydHkuIn0se25hbWU6ImludGVyLWNsdXN0ZXIiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYXQgd29yZCBzZXBhcmF0b3JzIGFuZCBhdCBncmFwaGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMgaW4gY2x1c3RlcmVkIHNjcmlwdHMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIFNvdXRoZWFzdCBBc2lhbiBzY3JpcHRzIHN1Y2ggYXMgVGhhaS4ifSx7bmFtZToiaW50ZXItaWRlb2dyYXBoIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGF0IHdvcmQgc2VwYXJhdG9ycyBhbmQgYXQgaW50ZXItZ3JhcGhlbWljIGJvdW5kYXJpZXMgaW4gc2NyaXB0cyB0aGF0IHVzZSBubyB3b3JkIHNwYWNlcy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgQ0pLIGxhbmd1YWdlcy4ifSx7bmFtZToiaW50ZXItd29yZCIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBhdCB3b3JkIHNlcGFyYXRvcnMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IHNlcGFyYXRlIHdvcmRzIHVzaW5nIHNwYWNlcywgbGlrZSBFbmdsaXNoIG9yIChzb21ldGltZXMpIEtvcmVhbi4ifSx7bmFtZToia2FzaGlkYSIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IHN0cmV0Y2hlcyBBcmFiaWMgYW5kIHJlbGF0ZWQgc2NyaXB0cyB0aHJvdWdoIHRoZSB1c2Ugb2Yga2FzaGlkYSBvciBvdGhlciBjYWxsaWdyYXBoaWMgZWxvbmdhdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBqdXN0aWZpY2F0aW9uIGFsZ29yaXRobSB1c2VkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIFRoZSBwcm9wZXJ0eSBhcHBsaWVzIHRvIGJsb2NrIGNvbnRhaW5lcnMsIGJ1dCB0aGUgVUEgbWF5IChidXQgaXMgbm90IHJlcXVpcmVkIHRvKSBhbHNvIHN1cHBvcnQgaXQgb24gaW5saW5lIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRleHQta2FzaGlkYS1zcGFjZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIHJhdGlvIG9mIGthc2hpZGEgZXhwYW5zaW9uIHRvIHdoaXRlIHNwYWNlIGV4cGFuc2lvbiB3aGVuIGp1c3RpZnlpbmcgbGluZXMgb2YgdGV4dCBpbiB0aGUgb2JqZWN0LiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRleHQtb3ZlcmZsb3ciLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNsaXAiLGRlc2NyaXB0aW9uOiJDbGlwIGlubGluZSBjb250ZW50IHRoYXQgb3ZlcmZsb3dzLiBDaGFyYWN0ZXJzIG1heSBiZSBvbmx5IHBhcnRpYWxseSByZW5kZXJlZC4ifSx7bmFtZToiZWxsaXBzaXMiLGRlc2NyaXB0aW9uOiJSZW5kZXIgYW4gZWxsaXBzaXMgY2hhcmFjdGVyIChVKzIwMjYpIHRvIHJlcHJlc2VudCBjbGlwcGVkIGlubGluZSBjb250ZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRleHQgY2FuIG92ZXJmbG93IGZvciBleGFtcGxlIHdoZW4gaXQgaXMgcHJldmVudGVkIGZyb20gd3JhcHBpbmciLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10ZXh0LXNpemUtYWRqdXN0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IHVzZSB0aGUgZGVmYXVsdCBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiUmVuZGVyZXJzIG11c3Qgbm90IGRvIHNpemUgYWRqdXN0bWVudCB3aGVuIGRpc3BsYXlpbmcgb24gYSBzbWFsbCBkZXZpY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2l6ZSBhZGp1c3RtZW50IGZvciBkaXNwbGF5aW5nIHRleHQgY29udGVudCBpbiBtb2JpbGUgYnJvd3NlcnMuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRleHQtdW5kZXJsaW5lLXBvc2l0aW9uIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYWxwaGFiZXRpYyIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSBhbHBoYWJldGljIGJhc2VsaW5lLiBJbiB0aGlzIGNhc2UgdGhlIHVuZGVybGluZSBpcyBsaWtlbHkgdG8gY3Jvc3Mgc29tZSBkZXNjZW5kZXJzLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IHVzZSBhbnkgYWxnb3JpdGhtIHRvIGRldGVybWluZSB0aGUgdW5kZXJsaW5lJ3MgcG9zaXRpb24uIEluIGhvcml6b250YWwgbGluZSBsYXlvdXQsIHRoZSB1bmRlcmxpbmUgc2hvdWxkIGJlIGFsaWduZWQgYXMgZm9yIGFscGhhYmV0aWMuIEluIHZlcnRpY2FsIGxpbmUgbGF5b3V0LCBpZiB0aGUgbGFuZ3VhZ2UgaXMgc2V0IHRvIEphcGFuZXNlIG9yIEtvcmVhbiwgdGhlIHVuZGVybGluZSBzaG91bGQgYmUgYWxpZ25lZCBhcyBmb3Igb3Zlci4ifSx7bmFtZToib3ZlciIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSAndG9wJyAocmlnaHQgaW4gdmVydGljYWwgd3JpdGluZykgZWRnZSBvZiB0aGUgZWxlbWVudCdzIGVtLWJveC4gSW4gdGhpcyBtb2RlLCBhbiBvdmVybGluZSBhbHNvIHN3aXRjaGVzIHNpZGVzLiJ9LHtuYW1lOiJ1bmRlciIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSAnYm90dG9tJyAobGVmdCBpbiB2ZXJ0aWNhbCB3cml0aW5nKSBlZGdlIG9mIHRoZSBlbGVtZW50J3MgZW0tYm94LiBJbiB0aGlzIGNhc2UgdGhlIHVuZGVybGluZSB1c3VhbGx5IGRvZXMgbm90IGNyb3NzIHRoZSBkZXNjZW5kZXJzLiBUaGlzIGlzIHNvbWV0aW1lcyBjYWxsZWQgJ2FjY291bnRpbmcnIHVuZGVybGluZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBwb3NpdGlvbiBvZiBhbiB1bmRlcmxpbmUgc3BlY2lmaWVkIG9uIHRoZSBzYW1lIGVsZW1lbnQ6IGl0IGRvZXMgbm90IGFmZmVjdCB1bmRlcmxpbmVzIHNwZWNpZmllZCBieSBhbmNlc3RvciBlbGVtZW50cy5UaGlzIHByb3BlcnR5IGlzIHR5cGljYWxseSB1c2VkIGluIHZlcnRpY2FsIHdyaXRpbmcgY29udGV4dHMgc3VjaCBhcyBpbiBKYXBhbmVzZSBkb2N1bWVudHMgd2hlcmUgaXQgb2Z0ZW4gZGVzaXJlZCB0byBoYXZlIHRoZSB1bmRlcmxpbmUgYXBwZWFyICdvdmVyJyAodG8gdGhlIHJpZ2h0IG9mKSB0aGUgYWZmZWN0ZWQgcnVuIG9mIHRleHQiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10b3VjaC1hY3Rpb24iLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBhIHBhc3NpdmUgZWxlbWVudCwgd2l0aCBzZXZlcmFsIGV4Y2VwdGlvbnMuIn0se25hbWU6ImRvdWJsZS10YXAtem9vbSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHdpbGwgem9vbSBvbiBkb3VibGUtdGFwLiJ9LHtuYW1lOiJtYW5pcHVsYXRpb24iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBhIG1hbmlwdWxhdGlvbi1jYXVzaW5nIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBhIG1hbmlwdWxhdGlvbi1ibG9ja2luZyBlbGVtZW50LiJ9LHtuYW1lOiJwYW4teCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHBlcm1pdHMgdG91Y2gtZHJpdmVuIHBhbm5pbmcgb24gdGhlIGhvcml6b250YWwgYXhpcy4gVGhlIHRvdWNoIHBhbiBpcyBwZXJmb3JtZWQgb24gdGhlIG5lYXJlc3QgYW5jZXN0b3Igd2l0aCBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZSBjb250ZW50LiJ9LHtuYW1lOiJwYW4teSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHBlcm1pdHMgdG91Y2gtZHJpdmVuIHBhbm5pbmcgb24gdGhlIHZlcnRpY2FsIGF4aXMuIFRoZSB0b3VjaCBwYW4gaXMgcGVyZm9ybWVkIG9uIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHdpdGggdmVydGljYWxseSBzY3JvbGxhYmxlIGNvbnRlbnQuIn0se25hbWU6InBpbmNoLXpvb20iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBwZXJtaXRzIHBpbmNoLXpvb21pbmcuIFRoZSBwaW5jaC16b29tIGlzIHBlcmZvcm1lZCBvbiB0aGUgbmVhcmVzdCBhbmNlc3RvciB3aXRoIHpvb21hYmxlIGNvbnRlbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBhbmQgaG93IGEgZ2l2ZW4gcmVnaW9uIGNhbiBiZSBtYW5pcHVsYXRlZCBieSB0aGUgdXNlci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10b3VjaC1zZWxlY3QiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJncmlwcGVycyIsZGVzY3JpcHRpb246IkdyaXBwZXJzIGFyZSBhbHdheXMgb24uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJHcmlwcGVycyBhcmUgYWx3YXlzIG9mZi4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJncmlwcGVycyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHRvZ2dsZXMgdGhlICdncmlwcGVyJyB2aXN1YWwgZWxlbWVudHMgdGhhdCBlbmFibGUgdG91Y2ggdGV4dCBzZWxlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdHJhbnNmb3JtIixicm93c2VyczpbIklFOS05Il0sdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRyYW5zZm9ybS1vcmlnaW4iLGJyb3dzZXJzOlsiSUU5LTkiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gb2YgdHJhbnNmb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy10cmFuc2Zvcm0tb3JpZ2luLXgiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtdHJhbnNmb3JtLW9yaWdpbi15Iixicm93c2VyczpbIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRyYW5zZm9ybS1vcmlnaW4teiIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgeiBjb29yZGluYXRlIG9mIHRoZSBvcmlnaW4gZm9yIHRyYW5zZm9ybXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggcmVzcGVjdCB0byBpdHMgYm9yZGVyIGJveC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy11c2VyLXNlbGVjdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImVsZW1lbnQifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJ0ZXh0In1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGVsZW1lbnQgfCB0ZXh0IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXdvcmQtYnJlYWsiLGJyb3dzZXJzOlsiSUU4Il0sdmFsdWVzOlt7bmFtZToiYnJlYWstYWxsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIGJldHdlZW4gYW55IHR3byBncmFwaGVtZSBjbHVzdGVycyBmb3Igbm9uLUNKSyBzY3JpcHRzLiJ9LHtuYW1lOiJrZWVwLWFsbCIsZGVzY3JpcHRpb246IkJsb2NrIGNoYXJhY3RlcnMgY2FuIG5vIGxvbmdlciBjcmVhdGUgaW1wbGllZCBicmVhayBwb2ludHMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkJyZWFrcyBub24tQ0pLIHNjcmlwdHMgYWNjb3JkaW5nIHRvIHRoZWlyIG93biBydWxlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgbGluZSBicmVhayBvcHBvcnR1bml0aWVzIGZvciBub24tQ0pLIHNjcmlwdHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtd29yZC13cmFwIixicm93c2VyczpbIklFOCJdLHZhbHVlczpbe25hbWU6ImJyZWFrLXdvcmQiLGRlc2NyaXB0aW9uOiJBbiB1bmJyZWFrYWJsZSAnd29yZCcgbWF5IGJlIGJyb2tlbiBhdCBhbiBhcmJpdHJhcnkgcG9pbnQgaWYgdGhlcmUgYXJlIG5vIG90aGVyd2lzZS1hY2NlcHRhYmxlIGJyZWFrIHBvaW50cyBpbiB0aGUgbGluZS4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIG9ubHkgYXQgYWxsb3dlZCBicmVhayBwb2ludHMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFVBIG1heSBicmVhayB3aXRoaW4gYSB3b3JkIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2hlbiBhbiBvdGhlcndpc2UtdW5icmVha2FibGUgc3RyaW5nIGlzIHRvbyBsb25nIHRvIGZpdC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy13cmFwLWZsb3ciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIGZsb2F0cyBhbiBleGNsdXNpb24gaXMgY3JlYXRlZCwgZm9yIGFsbCBvdGhlciBlbGVtZW50cyBhbiBleGNsdXNpb24gaXMgbm90IGNyZWF0ZWQuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiBmbG93IG9uIGFsbCBzaWRlcyBvZiB0aGUgZXhjbHVzaW9uLiJ9LHtuYW1lOiJjbGVhciIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIG9ubHkgd3JhcCBvbiB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgZXhjbHVzaW9uIGFuZCBtdXN0IGxlYXZlIHRoZSBhcmVhcyB0byB0aGUgc3RhcnQgYW5kIGVuZCBlZGdlcyBvZiB0aGUgZXhjbHVzaW9uIGJveCBlbXB0eS4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiSW5saW5lIGZsb3cgY29udGVudCBjYW4gd3JhcCBvbiB0aGUgZW5kIHNpZGUgb2YgdGhlIGV4Y2x1c2lvbiBhcmVhIGJ1dCBtdXN0IGxlYXZlIHRoZSBhcmVhIHRvIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBleGNsdXNpb24gYXJlYSBlbXB0eS4ifSx7bmFtZToibWF4aW11bSIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIHdyYXAgb24gdGhlIHNpZGUgb2YgdGhlIGV4Y2x1c2lvbiB3aXRoIHRoZSBsYXJnZXN0IGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIGdpdmVuIGxpbmUsIGFuZCBtdXN0IGxlYXZlIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBleGNsdXNpb24gZW1wdHkuIn0se25hbWU6Im1pbmltdW0iLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiBmbG93IGFyb3VuZCB0aGUgZWRnZSBvZiB0aGUgZXhjbHVzaW9uIHdpdGggdGhlIHNtYWxsZXN0IGF2YWlsYWJsZSBzcGFjZSB3aXRoaW4gdGhlIGZsb3cgY29udGVudOKAmXMgY29udGFpbmluZyBibG9jaywgYW5kIG11c3QgbGVhdmUgdGhlIG90aGVyIGVkZ2Ugb2YgdGhlIGV4Y2x1c2lvbiBlbXB0eS4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiB3cmFwIG9uIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBleGNsdXNpb24gYXJlYSBidXQgbXVzdCBsZWF2ZSB0aGUgYXJlYSB0byBlbmQgZWRnZSBvZiB0aGUgZXhjbHVzaW9uIGFyZWEgZW1wdHkuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IGJvdGggfCBzdGFydCB8IGVuZCB8IG1heGltdW0gfCBjbGVhciIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkFuIGVsZW1lbnQgYmVjb21lcyBhbiBleGNsdXNpb24gd2hlbiBpdHMgJ3dyYXAtZmxvdycgcHJvcGVydHkgaGFzIGEgY29tcHV0ZWQgdmFsdWUgb3RoZXIgdGhhbiAnYXV0bycuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtd3JhcC1tYXJnaW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBpcyB1c2VkIHRvIG9mZnNldCB0aGUgaW5uZXIgd3JhcCBzaGFwZSBmcm9tIG90aGVyIHNoYXBlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy13cmFwLXRocm91Z2giLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGV4Y2x1c2lvbiBlbGVtZW50IGRvZXMgbm90IGluaGVyaXQgaXRzIHBhcmVudCBub2RlJ3Mgd3JhcHBpbmcgY29udGV4dC4gSXRzIGRlc2NlbmRhbnRzIGFyZSBvbmx5IHN1YmplY3QgdG8gZXhjbHVzaW9uIHNoYXBlcyBkZWZpbmVkIGluc2lkZSB0aGUgZWxlbWVudC4ifSx7bmFtZToid3JhcCIsZGVzY3JpcHRpb246IlRoZSBleGNsdXNpb24gZWxlbWVudCBpbmhlcml0cyBpdHMgcGFyZW50IG5vZGUncyB3cmFwcGluZyBjb250ZXh0LiBJdHMgZGVzY2VuZGFudCBpbmxpbmUgY29udGVudCB3cmFwcyBhcm91bmQgZXhjbHVzaW9ucyBkZWZpbmVkIG91dHNpZGUgdGhlIGVsZW1lbnQuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoid3JhcCB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaWYgYW4gZWxlbWVudCBpbmhlcml0cyBpdHMgcGFyZW50IHdyYXBwaW5nIGNvbnRleHQuIEluIG90aGVyIHdvcmRzIGlmIGl0IGlzIHN1YmplY3QgdG8gdGhlIGV4Y2x1c2lvbnMgZGVmaW5lZCBvdXRzaWRlIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXdyaXRpbmctbW9kZSIsYnJvd3NlcnM6WyJJRTgiXSx2YWx1ZXM6W3tuYW1lOiJidC1sciJ9LHtuYW1lOiJidC1ybCJ9LHtuYW1lOiJsci1idCJ9LHtuYW1lOiJsci10YiJ9LHtuYW1lOiJybC1idCJ9LHtuYW1lOiJybC10YiJ9LHtuYW1lOiJ0Yi1sciJ9LHtuYW1lOiJ0Yi1ybCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgYm90aCAnZGlyZWN0aW9uJyBhbmQgJ2Jsb2NrLXByb2dyZXNzaW9uJy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy16b29tIixicm93c2VyczpbIklFOCJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgb3IgcmV0cmlldmVzIHRoZSBtYWduaWZpY2F0aW9uIHNjYWxlIG9mIHRoZSBvYmplY3QuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaW50ZWdlciIsIm51bWJlciIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy16b29tLWFuaW1hdGlvbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiZGVmYXVsdCJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBhbiBhbmltYXRpb24gaXMgdXNlZCB3aGVuIHpvb21pbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJuYXYtZG93biIsYnJvd3NlcnM6WyJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGljaCBlbGVtZW50IHRvIG5hdmlnYXRlIHRoZSBmb2N1cyB0byBpbiByZXNwb25zZSB0byBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uYWwgaW5wdXQuIn0se25hbWU6ImN1cnJlbnQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmcmFtZSB0aGF0IHRoZSBlbGVtZW50IGlzIGluLiJ9LHtuYW1lOiJyb290IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnVsbCB3aW5kb3cuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gd2F5IHRvIGNvbnRyb2wgZGlyZWN0aW9uYWwgZm9jdXMgbmF2aWdhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpZGVudGlmaWVyIiwic3RyaW5nIl19LHtuYW1lOiJuYXYtaW5kZXgiLGJyb3dzZXJzOlsiTzkuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCdzIHNlcXVlbnRpYWwgbmF2aWdhdGlvbiBvcmRlciBpcyBhc3NpZ25lZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSB1c2VyIGFnZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIGlucHV0LW1ldGhvZC1uZXV0cmFsIHdheSBvZiBzcGVjaWZ5aW5nIHRoZSBzZXF1ZW50aWFsIG5hdmlnYXRpb24gb3JkZXIgKGFsc28ga25vd24gYXMgJ3RhYmJpbmcgb3JkZXInKS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciJdfSx7bmFtZToibmF2LWxlZnQiLGJyb3dzZXJzOlsiTzkuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBhdXRvbWF0aWNhbGx5IGRldGVybWluZXMgd2hpY2ggZWxlbWVudCB0byBuYXZpZ2F0ZSB0aGUgZm9jdXMgdG8gaW4gcmVzcG9uc2UgdG8gZGlyZWN0aW9uYWwgbmF2aWdhdGlvbmFsIGlucHV0LiJ9LHtuYW1lOiJjdXJyZW50IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnJhbWUgdGhhdCB0aGUgZWxlbWVudCBpcyBpbi4ifSx7bmFtZToicm9vdCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZ1bGwgd2luZG93LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIHdheSB0byBjb250cm9sIGRpcmVjdGlvbmFsIGZvY3VzIG5hdmlnYXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaWRlbnRpZmllciIsInN0cmluZyJdfSx7bmFtZToibmF2LXJpZ2h0Iixicm93c2VyczpbIk85LjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgYXV0b21hdGljYWxseSBkZXRlcm1pbmVzIHdoaWNoIGVsZW1lbnQgdG8gbmF2aWdhdGUgdGhlIGZvY3VzIHRvIGluIHJlc3BvbnNlIHRvIGRpcmVjdGlvbmFsIG5hdmlnYXRpb25hbCBpbnB1dC4ifSx7bmFtZToiY3VycmVudCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZyYW1lIHRoYXQgdGhlIGVsZW1lbnQgaXMgaW4uIn0se25hbWU6InJvb3QiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmdWxsIHdpbmRvdy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbiB3YXkgdG8gY29udHJvbCBkaXJlY3Rpb25hbCBmb2N1cyBuYXZpZ2F0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImlkZW50aWZpZXIiLCJzdHJpbmciXX0se25hbWU6Im5hdi11cCIsYnJvd3NlcnM6WyJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGljaCBlbGVtZW50IHRvIG5hdmlnYXRlIHRoZSBmb2N1cyB0byBpbiByZXNwb25zZSB0byBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uYWwgaW5wdXQuIn0se25hbWU6ImN1cnJlbnQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmcmFtZSB0aGF0IHRoZSBlbGVtZW50IGlzIGluLiJ9LHtuYW1lOiJyb290IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnVsbCB3aW5kb3cuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gd2F5IHRvIGNvbnRyb2wgZGlyZWN0aW9uYWwgZm9jdXMgbmF2aWdhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpZGVudGlmaWVyIiwic3RyaW5nIl19LHtuYW1lOiJuZWdhdGl2ZSIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiI8c3ltYm9sPiA8c3ltYm9sPj8iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gRGVmaW5lcyBob3cgdG8gYWx0ZXIgdGhlIHJlcHJlc2VudGF0aW9uIHdoZW4gdGhlIGNvdW50ZXIgdmFsdWUgaXMgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsImlkZW50aWZpZXIiLCJzdHJpbmciXX0se25hbWU6Ii1vLWFuaW1hdGlvbiIsYnJvd3NlcnM6WyJPMTIiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIHNpeCBvZiB0aGUgYW5pbWF0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJlbnVtIiwidGltaW5nLWZ1bmN0aW9uIiwiaWRlbnRpZmllciIsIm51bWJlciJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLWRlbGF5Iixicm93c2VyczpbIk8xMiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSBhbmltYXRpb24gd2lsbCBzdGFydC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1kaXJlY3Rpb24iLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIHNob3VsZCBwbGF5IGluIHJldmVyc2Ugb24gYWx0ZXJuYXRlIGN5Y2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1kdXJhdGlvbiIsYnJvd3NlcnM6WyJPMTIiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGxlbmd0aCBvZiB0aW1lIHRoYXQgYW4gYW5pbWF0aW9uIHRha2VzIHRvIGNvbXBsZXRlIG9uZSBjeWNsZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1maWxsLW1vZGUiLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBjaGFuZ2UgdG8gdGhlIHByb3BlcnR5IHZhbHVlIGJldHdlZW4gdGhlIHRpbWUgdGhlIGFuaW1hdGlvbiBpcyBhcHBsaWVkIGFuZCB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGJlZ2lucyBwbGF5aW5nIG9yIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hhdCB2YWx1ZXMgYXJlIGFwcGxpZWQgYnkgdGhlIGFuaW1hdGlvbiBvdXRzaWRlIHRoZSB0aW1lIGl0IGlzIGV4ZWN1dGluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgdGltZXMgYW4gYW5pbWF0aW9uIGN5Y2xlIGlzIHBsYXllZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgb25lLCBtZWFuaW5nIHRoZSBhbmltYXRpb24gd2lsbCBwbGF5IGZyb20gYmVnaW5uaW5nIHRvIGVuZCBvbmNlLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIiwiZW51bSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLW5hbWUiLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgbGlzdCBvZiBhbmltYXRpb25zIHRoYXQgYXBwbHkuIEVhY2ggbmFtZSBpcyB1c2VkIHRvIHNlbGVjdCB0aGUga2V5ZnJhbWUgYXQtcnVsZSB0aGF0IHByb3ZpZGVzIHRoZSBwcm9wZXJ0eSB2YWx1ZXMgZm9yIHRoZSBhbmltYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiZW51bSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLXBsYXktc3RhdGUiLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToicGF1c2VkIixkZXNjcmlwdGlvbjoiQSBydW5uaW5nIGFuaW1hdGlvbiB3aWxsIGJlIHBhdXNlZC4ifSx7bmFtZToicnVubmluZyIsZGVzY3JpcHRpb246IlJlc3VtZSBwbGF5YmFjayBvZiBhIHBhdXNlZCBhbmltYXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIHRoZSBhbmltYXRpb24gaXMgcnVubmluZyBvciBwYXVzZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItby1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIk8xMiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgYW5pbWF0aW9uIHdpbGwgcHJvZ3Jlc3Mgb3ZlciBvbmUgY3ljbGUgb2YgaXRzIGR1cmF0aW9uLiBTZWUgdGhlICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicuIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6Im9iamVjdC1maXQiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlMxMCIsIkMzMiIsIk8xOSJdLHZhbHVlczpbe25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBzaXplZCB0byBtYWludGFpbiBpdHMgYXNwZWN0IHJhdGlvIHdoaWxlIGZpdHRpbmcgd2l0aGluIHRoZSBlbGVtZW504oCZcyBjb250ZW50IGJveDogaXRzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHJlc29sdmVkIGFzIGEgY29udGFpbiBjb25zdHJhaW50IGFnYWluc3QgdGhlIGVsZW1lbnQncyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgc2l6ZWQgdG8gbWFpbnRhaW4gaXRzIGFzcGVjdCByYXRpbyB3aGlsZSBmaWxsaW5nIHRoZSBlbGVtZW50J3MgZW50aXJlIGNvbnRlbnQgYm94OiBpdHMgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgcmVzb2x2ZWQgYXMgYSBjb3ZlciBjb25zdHJhaW50IGFnYWluc3QgdGhlIGVsZW1lbnTigJlzIHVzZWQgd2lkdGggYW5kIGhlaWdodC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIHNpemVkIHRvIGZpbGwgdGhlIGVsZW1lbnTigJlzIGNvbnRlbnQgYm94OiB0aGUgb2JqZWN0J3MgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgdGhlIGVsZW1lbnQncyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBub3QgcmVzaXplZCB0byBmaXQgaW5zaWRlIHRoZSBlbGVtZW50J3MgY29udGVudCBib3gifSx7bmFtZToic2NhbGUtZG93biIsZGVzY3JpcHRpb246IlNpemUgdGhlIGNvbnRlbnQgYXMgaWYg4oCYbm9uZeKAmSBvciDigJhjb250YWlu4oCZIHdlcmUgc3BlY2lmaWVkLCB3aGljaGV2ZXIgd291bGQgcmVzdWx0IGluIGEgc21hbGxlciBjb25jcmV0ZSBvYmplY3Qgc2l6ZS4ifV0sc3ludGF4OiJmaWxsIHwgY29udGFpbiB8IGNvdmVyIHwgbm9uZSB8IHNjYWxlLWRvd24iLHJlbGV2YW5jZTo2OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2JqZWN0LWZpdCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB0aGUgY29udGVudHMgb2YgYSByZXBsYWNlZCBlbGVtZW50IHNob3VsZCBiZSBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlIGJveCBlc3RhYmxpc2hlZCBieSBpdHMgdXNlZCBoZWlnaHQgYW5kIHdpZHRoLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToib2JqZWN0LXBvc2l0aW9uIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTMTAiLCJDMzIiLCJPMTkiXSxzeW50YXg6Ijxwb3NpdGlvbj4iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2JqZWN0LXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHJlcGxhY2VkIGVsZW1lbnQgaW5zaWRlIGl0cyBib3guIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1vLWJvcmRlci1pbWFnZSIsYnJvd3NlcnM6WyJPMTEuNiJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJZiAnYXV0bycgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGJvcmRlciBpbWFnZSB3aWR0aCBpcyB0aGUgaW50cmluc2ljIHdpZHRoIG9yIGhlaWdodCAod2hpY2hldmVyIGlzIGFwcGxpY2FibGUpIG9mIHRoZSBjb3JyZXNwb25kaW5nIGltYWdlIHNsaWNlLiBJZiB0aGUgaW1hZ2UgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWlyZWQgaW50cmluc2ljIGRpbWVuc2lvbiB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aCBpcyB1c2VkIGluc3RlYWQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXItaW1hZ2UgdG8gYmUgcHJlc2VydmVkLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InJlcGVhdCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgaW1hZ2UgaXMgcmVzY2FsZWQgc28gdGhhdCBpdCBkb2VzLiJ9LHtuYW1lOiJzcGFjZSIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGV4dHJhIHNwYWNlIGlzIGRpc3RyaWJ1dGVkIGFyb3VuZCB0aGUgdGlsZXMuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgc3RyZXRjaGVkIHRvIGZpbGwgdGhlIGFyZWEuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdib3JkZXItaW1hZ2Utc291cmNlJywgJ2JvcmRlci1pbWFnZS1zbGljZScsICdib3JkZXItaW1hZ2Utd2lkdGgnLCAnYm9yZGVyLWltYWdlLW91dHNldCcgYW5kICdib3JkZXItaW1hZ2UtcmVwZWF0Jy4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJpbWFnZSIsImVudW0iXX0se25hbWU6Ii1vLW9iamVjdC1maXQiLGJyb3dzZXJzOlsiTzEwLjYiXSx2YWx1ZXM6W3tuYW1lOiJjb250YWluIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgc2l6ZWQgdG8gbWFpbnRhaW4gaXRzIGFzcGVjdCByYXRpbyB3aGlsZSBmaXR0aW5nIHdpdGhpbiB0aGUgZWxlbWVudOKAmXMgY29udGVudCBib3g6IGl0cyBjb25jcmV0ZSBvYmplY3Qgc2l6ZSBpcyByZXNvbHZlZCBhcyBhIGNvbnRhaW4gY29uc3RyYWludCBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgdXNlZCB3aWR0aCBhbmQgaGVpZ2h0LiJ9LHtuYW1lOiJjb3ZlciIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIHNpemVkIHRvIG1haW50YWluIGl0cyBhc3BlY3QgcmF0aW8gd2hpbGUgZmlsbGluZyB0aGUgZWxlbWVudCdzIGVudGlyZSBjb250ZW50IGJveDogaXRzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHJlc29sdmVkIGFzIGEgY292ZXIgY29uc3RyYWludCBhZ2FpbnN0IHRoZSBlbGVtZW504oCZcyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBzaXplZCB0byBmaWxsIHRoZSBlbGVtZW504oCZcyBjb250ZW50IGJveDogdGhlIG9iamVjdCdzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHRoZSBlbGVtZW50J3MgdXNlZCB3aWR0aCBhbmQgaGVpZ2h0LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgbm90IHJlc2l6ZWQgdG8gZml0IGluc2lkZSB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYm94In0se25hbWU6InNjYWxlLWRvd24iLGRlc2NyaXB0aW9uOiJTaXplIHRoZSBjb250ZW50IGFzIGlmIOKAmG5vbmXigJkgb3Ig4oCYY29udGFpbuKAmSB3ZXJlIHNwZWNpZmllZCwgd2hpY2hldmVyIHdvdWxkIHJlc3VsdCBpbiBhIHNtYWxsZXIgY29uY3JldGUgb2JqZWN0IHNpemUuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB0aGUgY29udGVudHMgb2YgYSByZXBsYWNlZCBlbGVtZW50IHNob3VsZCBiZSBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlIGJveCBlc3RhYmxpc2hlZCBieSBpdHMgdXNlZCBoZWlnaHQgYW5kIHdpZHRoLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tb2JqZWN0LXBvc2l0aW9uIixicm93c2VyczpbIk8xMC42Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHJlcGxhY2VkIGVsZW1lbnQgaW5zaWRlIGl0cyBib3guIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im9wYWNpdHkiLHN5bnRheDoiPGFscGhhLXZhbHVlPiIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vcGFjaXR5In1dLGRlc2NyaXB0aW9uOiJPcGFjaXR5IG9mIGFuIGVsZW1lbnQncyB0ZXh0LCB3aGVyZSAxIGlzIG9wYXF1ZSBhbmQgMCBpcyBlbnRpcmVseSB0cmFuc3BhcmVudC4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIl19LHtuYW1lOiJvcmRlciIsc3ludGF4OiI8aW50ZWdlcj4iLHJlbGV2YW5jZTo2MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3JkZXIifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBvcmRlciBpbiB3aGljaCBjaGlsZHJlbiBvZiBhIGZsZXggY29udGFpbmVyIGFwcGVhciB3aXRoaW4gdGhlIGZsZXggY29udGFpbmVyLCBieSBhc3NpZ25pbmcgdGhlbSB0byBvcmRpbmFsIGdyb3Vwcy4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Im9ycGhhbnMiLGJyb3dzZXJzOlsiRTEyIiwiUzEuMyIsIkMyNSIsIklFOCIsIk85LjIiXSxzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vcnBoYW5zIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGxpbmUgYm94ZXMgaW4gYSBibG9jayBjb250YWluZXIgdGhhdCBtdXN0IGJlIGxlZnQgaW4gYSBmcmFnbWVudCBiZWZvcmUgYSBmcmFnbWVudGF0aW9uIGJyZWFrLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW8tdGFibGUtYmFzZWxpbmUiLGJyb3dzZXJzOlsiTzkuNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGljaCByb3cgb2YgYSBpbmxpbmUtdGFibGUgc2hvdWxkIGJlIHVzZWQgYXMgYmFzZWxpbmUgb2YgaW5saW5lLXRhYmxlLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW8tdGFiLXNpemUiLGJyb3dzZXJzOlsiTzEwLjYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoaXMgcHJvcGVydHkgZGV0ZXJtaW5lcyB0aGUgd2lkdGggb2YgdGhlIHRhYiBjaGFyYWN0ZXIgKFUrMDAwOSksIGluIHNwYWNlIGNoYXJhY3RlcnMgKFUrMDAyMCksIHdoZW4gcmVuZGVyZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwibGVuZ3RoIl19LHtuYW1lOiItby10ZXh0LW92ZXJmbG93Iixicm93c2VyczpbIk8xMCJdLHZhbHVlczpbe25hbWU6ImNsaXAiLGRlc2NyaXB0aW9uOiJDbGlwIGlubGluZSBjb250ZW50IHRoYXQgb3ZlcmZsb3dzLiBDaGFyYWN0ZXJzIG1heSBiZSBvbmx5IHBhcnRpYWxseSByZW5kZXJlZC4ifSx7bmFtZToiZWxsaXBzaXMiLGRlc2NyaXB0aW9uOiJSZW5kZXIgYW4gZWxsaXBzaXMgY2hhcmFjdGVyIChVKzIwMjYpIHRvIHJlcHJlc2VudCBjbGlwcGVkIGlubGluZSBjb250ZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRleHQgY2FuIG92ZXJmbG93IGZvciBleGFtcGxlIHdoZW4gaXQgaXMgcHJldmVudGVkIGZyb20gd3JhcHBpbmciLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLXRyYW5zZm9ybSIsYnJvd3NlcnM6WyJPMTAuNSJdLHZhbHVlczpbe25hbWU6Im1hdHJpeCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNmb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggb2Ygc2l4IHZhbHVlcy4gbWF0cml4KGEsYixjLGQsZSxmKSBpcyBlcXVpdmFsZW50IHRvIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggW2EgYiBjIGQgZSBmXSJ9LHtuYW1lOiJtYXRyaXgzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNmb3JtYXRpb24gYXMgYSA0eDQgaG9tb2dlbmVvdXMgbWF0cml4IG9mIDE2IHZhbHVlcyBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuIn0se25hbWU6Im5vbmUifSx7bmFtZToicm90YXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIHRoZSBwYXJhbWV0ZXIgYWJvdXQgdGhlIG9yaWdpbiBvZiB0aGUgZWxlbWVudCwgYXMgZGVmaW5lZCBieSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBwcm9wZXJ0eS4ifSx7bmFtZToicm90YXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSAzRCByb3RhdGlvbiBieSB0aGUgYW5nbGUgc3BlY2lmaWVkIGluIGxhc3QgcGFyYW1ldGVyIGFib3V0IHRoZSBbeCx5LHpdIGRpcmVjdGlvbiB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSBmaXJzdCAzIHBhcmFtZXRlcnMuIn0se25hbWU6InJvdGF0ZVgoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBYIGF4aXMuIn0se25hbWU6InJvdGF0ZVkoJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBZIGF4aXMuIn0se25hbWU6InJvdGF0ZVooJ2FuZ2xlJykiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2Ugcm90YXRpb24gYnkgdGhlIGdpdmVuIGFuZ2xlIGFib3V0IHRoZSBaIGF4aXMuIn0se25hbWU6InNjYWxlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeV0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAyIHBhcmFtZXRlcnMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBwcm92aWRlZCwgaXQgaXMgdGFrZXMgYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3QuIn0se25hbWU6InNjYWxlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5LHN6XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDMgcGFyYW1ldGVycy4ifSx7bmFtZToic2NhbGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeCwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ggaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFtzeSwxXSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3kgaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2NhbGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzY2FsZSBvcGVyYXRpb24gdXNpbmcgdGhlIFsxLDEsc3pdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeiBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJza2V3KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGFuZCBZIGF4ZXMuIFRoZSBmaXJzdCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBYIGF4aXMuIFRoZSBzZWNvbmQgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWSBheGlzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgZ2l2ZW4gdGhlbiBhIHZhbHVlIG9mIDAgaXMgdXNlZCBmb3IgdGhlIFkgYW5nbGUgKGllOiBubyBza2V3IG9uIHRoZSBZIGF4aXMpLiJ9LHtuYW1lOiJza2V3WCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToic2tld1koKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFkgYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InRyYW5zbGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsIHR5XSwgd2hlcmUgdHggaXMgdGhlIGZpcnN0IHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlciBhbmQgdHkgaXMgdGhlIG9wdGlvbmFsIHNlY29uZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIuIn0se25hbWU6InRyYW5zbGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCx0eSx0el0sIHdpdGggdHgsIHR5IGFuZCB0eiBiZWluZyB0aGUgZmlyc3QsIHNlY29uZCBhbmQgdGhpcmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVycyByZXNwZWN0aXZlbHkuIn0se25hbWU6InRyYW5zbGF0ZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFggZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBZIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWiBkaXJlY3Rpb24uIE5vdGUgdGhhdCBwZXJjZW50YWdlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIHRyYW5zbGF0ZVogdHJhbnNsYXRpb24tdmFsdWUsIGFuZCBpZiBwcmVzZW50IGFyZSBldmFsdWF0ZWQgYXMgMC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIHR3by1kaW1lbnNpb25hbCB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgdGhyb3VnaCB0aGUgJ3RyYW5zZm9ybScgcHJvcGVydHkuIFRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBsaXN0IG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgc2ltaWxhciB0byB0aG9zZSBhbGxvd2VkIGJ5IFNWRy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1vLXRyYW5zZm9ybS1vcmlnaW4iLGJyb3dzZXJzOlsiTzEwLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gb2YgdHJhbnNmb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdG9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW8tdHJhbnNpdGlvbiIsYnJvd3NlcnM6WyJPMTEuNSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBmb3VyIG9mIHRoZSB0cmFuc2l0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJwcm9wZXJ0eSIsInRpbWluZy1mdW5jdGlvbiIsImVudW0iXX0se25hbWU6Ii1vLXRyYW5zaXRpb24tZGVsYXkiLGJyb3dzZXJzOlsiTzExLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgdHJhbnNpdGlvbiB3aWxsIHN0YXJ0LiBJdCBhbGxvd3MgYSB0cmFuc2l0aW9uIHRvIGJlZ2luIGV4ZWN1dGlvbiBzb21lIHBlcmlvZCBvZiB0aW1lIGZyb20gd2hlbiBpdCBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW8tdHJhbnNpdGlvbi1kdXJhdGlvbiIsYnJvd3NlcnM6WyJPMTEuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBsb25nIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIG9sZCB2YWx1ZSB0byB0aGUgbmV3IHZhbHVlIHNob3VsZCB0YWtlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eSIsYnJvd3NlcnM6WyJPMTEuNSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgQ1NTIHByb3BlcnR5IHRvIHdoaWNoIHRoZSB0cmFuc2l0aW9uIGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJwcm9wZXJ0eSJdfSx7bmFtZToiLW8tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiTzExLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgdXNlZCBkdXJpbmcgYSB0cmFuc2l0aW9uIHdpbGwgYmUgY2FsY3VsYXRlZC4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToib2Zmc2V0LWJsb2NrLWVuZCIsYnJvd3NlcnM6WyJGRjQxIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3R0b20nLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJvZmZzZXQtYmxvY2stc3RhcnQiLGJyb3dzZXJzOlsiRkY0MSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTG9naWNhbCAndG9wJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToib2Zmc2V0LWlubGluZS1lbmQiLGJyb3dzZXJzOlsiRkY0MSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTG9naWNhbCAncmlnaHQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJvZmZzZXQtaW5saW5lLXN0YXJ0Iixicm93c2VyczpbIkZGNDEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2xlZnQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJvdXRsaW5lIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUGVybWl0cyB0aGUgdXNlciBhZ2VudCB0byByZW5kZXIgYSBjdXN0b20gb3V0bGluZSBzdHlsZSwgdHlwaWNhbGx5IHRoZSBkZWZhdWx0IHBsYXRmb3JtIHN0eWxlLiJ9LHtuYW1lOiJpbnZlcnQiLGRlc2NyaXB0aW9uOiJQZXJmb3JtcyBhIGNvbG9yIGludmVyc2lvbiBvbiB0aGUgcGl4ZWxzIG9uIHRoZSBzY3JlZW4uIn1dLHN5bnRheDoiWyA8J291dGxpbmUtY29sb3InPiB8fCA8J291dGxpbmUtc3R5bGUnPiB8fCA8J291dGxpbmUtd2lkdGgnPiBdIixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL291dGxpbmUifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgJ291dGxpbmUtc3R5bGUnLCAnb3V0bGluZS13aWR0aCcsIGFuZCAnb3V0bGluZS1jb2xvcicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIiwiZW51bSJdfSx7bmFtZToib3V0bGluZS1jb2xvciIsdmFsdWVzOlt7bmFtZToiaW52ZXJ0IixkZXNjcmlwdGlvbjoiUGVyZm9ybXMgYSBjb2xvciBpbnZlcnNpb24gb24gdGhlIHBpeGVscyBvbiB0aGUgc2NyZWVuLiJ9XSxzeW50YXg6Ijxjb2xvcj4gfCBpbnZlcnQiLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3V0bGluZS1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNvbG9yIG9mIHRoZSBvdXRsaW5lLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImNvbG9yIl19LHtuYW1lOiJvdXRsaW5lLW9mZnNldCIsYnJvd3NlcnM6WyJFMTUiLCJGRjEuNSIsIlMxLjIiLCJDMSIsIk85LjUiXSxzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NjkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL291dGxpbmUtb2Zmc2V0In1dLGRlc2NyaXB0aW9uOiJPZmZzZXQgdGhlIG91dGxpbmUgYW5kIGRyYXcgaXQgYmV5b25kIHRoZSBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToib3V0bGluZS1zdHlsZSIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlBlcm1pdHMgdGhlIHVzZXIgYWdlbnQgdG8gcmVuZGVyIGEgY3VzdG9tIG91dGxpbmUgc3R5bGUsIHR5cGljYWxseSB0aGUgZGVmYXVsdCBwbGF0Zm9ybSBzdHlsZS4ifV0sc3ludGF4OiJhdXRvIHwgPCdib3JkZXItc3R5bGUnPiIscmVsZXZhbmNlOjYxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdXRsaW5lLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTdHlsZSBvZiB0aGUgb3V0bGluZS4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiLCJlbnVtIl19LHtuYW1lOiJvdXRsaW5lLXdpZHRoIixzeW50YXg6IjxsaW5lLXdpZHRoPiIscmVsZXZhbmNlOjYxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdXRsaW5lLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJXaWR0aCBvZiB0aGUgb3V0bGluZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6Im92ZXJmbG93Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGJlaGF2aW9yIG9mIHRoZSAnYXV0bycgdmFsdWUgaXMgVUEtZGVwZW5kZW50LCBidXQgc2hvdWxkIGNhdXNlIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSB0byBiZSBwcm92aWRlZCBmb3Igb3ZlcmZsb3dpbmcgYm94ZXMuIn0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgbm8gc2Nyb2xsaW5nIG1lY2hhbmlzbSBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdmlldyB0aGUgY29udGVudCBvdXRzaWRlIHRoZSBjbGlwcGluZyByZWdpb24uIn0se25hbWU6Ii1tb3otaGlkZGVuLXVuc2Nyb2xsYWJsZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgdGhlIHN0YW5kYXJkaXplZCAnY2xpcCcsIGV4Y2VwdCBkb2VzbuKAmXQgZXN0YWJsaXNoIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LiJ9LHtuYW1lOiJzY3JvbGwiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIGlmIHRoZSB1c2VyIGFnZW50IHVzZXMgYSBzY3JvbGxpbmcgbWVjaGFuaXNtIHRoYXQgaXMgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIChzdWNoIGFzIGEgc2Nyb2xsIGJhciBvciBhIHBhbm5lciksIHRoYXQgbWVjaGFuaXNtIHNob3VsZCBiZSBkaXNwbGF5ZWQgZm9yIGEgYm94IHdoZXRoZXIgb3Igbm90IGFueSBvZiBpdHMgY29udGVudCBpcyBjbGlwcGVkLiJ9LHtuYW1lOiJ2aXNpYmxlIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBub3QgY2xpcHBlZCwgaS5lLiwgaXQgbWF5IGJlIHJlbmRlcmVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94LiJ9XSxzeW50YXg6IlsgdmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIF17MSwyfSIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdyJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nICdvdmVyZmxvdy14JyBhbmQgJ292ZXJmbG93LXknLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToib3ZlcmZsb3ctd3JhcCIsdmFsdWVzOlt7bmFtZToiYnJlYWstd29yZCIsZGVzY3JpcHRpb246IkFuIG90aGVyd2lzZSB1bmJyZWFrYWJsZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG1heSBiZSBicm9rZW4gYXQgYW4gYXJiaXRyYXJ5IHBvaW50IGlmIHRoZXJlIGFyZSBubyBvdGhlcndpc2UtYWNjZXB0YWJsZSBicmVhayBwb2ludHMgaW4gdGhlIGxpbmUuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkxpbmVzIG1heSBicmVhayBvbmx5IGF0IGFsbG93ZWQgYnJlYWsgcG9pbnRzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IGJyZWFrLXdvcmQgfCBhbnl3aGVyZSIscmVsZXZhbmNlOjY2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy13cmFwIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgVUEgbWF5IGJyZWFrIHdpdGhpbiBhIHdvcmQgdG8gcHJldmVudCBvdmVyZmxvdyB3aGVuIGFuIG90aGVyd2lzZS11bmJyZWFrYWJsZSBzdHJpbmcgaXMgdG9vIGxvbmcgdG8gZml0IHdpdGhpbiB0aGUgbGluZSBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJvdmVyZmxvdy14Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGJlaGF2aW9yIG9mIHRoZSAnYXV0bycgdmFsdWUgaXMgVUEtZGVwZW5kZW50LCBidXQgc2hvdWxkIGNhdXNlIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSB0byBiZSBwcm92aWRlZCBmb3Igb3ZlcmZsb3dpbmcgYm94ZXMuIn0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgbm8gc2Nyb2xsaW5nIG1lY2hhbmlzbSBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdmlldyB0aGUgY29udGVudCBvdXRzaWRlIHRoZSBjbGlwcGluZyByZWdpb24uIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgaWYgdGhlIHVzZXIgYWdlbnQgdXNlcyBhIHNjcm9sbGluZyBtZWNoYW5pc20gdGhhdCBpcyB2aXNpYmxlIG9uIHRoZSBzY3JlZW4gKHN1Y2ggYXMgYSBzY3JvbGwgYmFyIG9yIGEgcGFubmVyKSwgdGhhdCBtZWNoYW5pc20gc2hvdWxkIGJlIGRpc3BsYXllZCBmb3IgYSBib3ggd2hldGhlciBvciBub3QgYW55IG9mIGl0cyBjb250ZW50IGlzIGNsaXBwZWQuIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIG5vdCBjbGlwcGVkLCBpLmUuLCBpdCBtYXkgYmUgcmVuZGVyZWQgb3V0c2lkZSB0aGUgY29udGVudCBib3guIn1dLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIixyZWxldmFuY2U6ODEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LXgifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToib3ZlcmZsb3cteSIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBiZWhhdmlvciBvZiB0aGUgJ2F1dG8nIHZhbHVlIGlzIFVBLWRlcGVuZGVudCwgYnV0IHNob3VsZCBjYXVzZSBhIHNjcm9sbGluZyBtZWNoYW5pc20gdG8gYmUgcHJvdmlkZWQgZm9yIG92ZXJmbG93aW5nIGJveGVzLiJ9LHtuYW1lOiJoaWRkZW4iLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIG5vIHNjcm9sbGluZyBtZWNoYW5pc20gc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHZpZXcgdGhlIGNvbnRlbnQgb3V0c2lkZSB0aGUgY2xpcHBpbmcgcmVnaW9uLiJ9LHtuYW1lOiJzY3JvbGwiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIGlmIHRoZSB1c2VyIGFnZW50IHVzZXMgYSBzY3JvbGxpbmcgbWVjaGFuaXNtIHRoYXQgaXMgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIChzdWNoIGFzIGEgc2Nyb2xsIGJhciBvciBhIHBhbm5lciksIHRoYXQgbWVjaGFuaXNtIHNob3VsZCBiZSBkaXNwbGF5ZWQgZm9yIGEgYm94IHdoZXRoZXIgb3Igbm90IGFueSBvZiBpdHMgY29udGVudCBpcyBjbGlwcGVkLiJ9LHtuYW1lOiJ2aXNpYmxlIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBub3QgY2xpcHBlZCwgaS5lLiwgaXQgbWF5IGJlIHJlbmRlcmVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94LiJ9XSxzeW50YXg6InZpc2libGUgfCBoaWRkZW4gfCBjbGlwIHwgc2Nyb2xsIHwgYXV0byIscmVsZXZhbmNlOjgzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy15In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGhhbmRsaW5nIG9mIG92ZXJmbG93IGluIHRoZSB2ZXJ0aWNhbCBkaXJlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwYWQiLGJyb3dzZXJzOlsiRkYzMyJdLHN5bnRheDoiPGludGVnZXI+ICYmIDxzeW1ib2w+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyBhIOKAnGZpeGVkLXdpZHRo4oCdIGNvdW50ZXIgc3R5bGUsIHdoZXJlIHJlcHJlc2VudGF0aW9ucyBzaG9ydGVyIHRoYW4gdGhlIHBhZCB2YWx1ZSBhcmUgcGFkZGVkIHdpdGggYSBwYXJ0aWN1bGFyIDxzeW1ib2w+IixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJwYWRkaW5nIix2YWx1ZXM6W10sc3ludGF4OiJbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IF17MSw0fSIscmVsZXZhbmNlOjk2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctYm90dG9tIixzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6ODkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctYmxvY2stZW5kIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWJsb2NrLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAncGFkZGluZy1ib3R0b20nLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWJsb2NrLXN0YXJ0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdwYWRkaW5nLXRvcCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnTigJlzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctaW5saW5lLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwncGFkZGluZy1sZWZ0Jz4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdwYWRkaW5nLXJpZ2h0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudOKAmXMgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToicGFkZGluZy1pbmxpbmUtc3RhcnQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J3BhZGRpbmctbGVmdCc+IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctaW5saW5lLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdwYWRkaW5nLWxlZnQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW504oCZcyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWxlZnQiLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo5MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1sZWZ0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctcmlnaHQiLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIHBhZGRpbmcgYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gVGhlIHZhbHVlIG1heSBub3QgYmUgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLXRvcCIsc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjkwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLXRvcCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIHBhZGRpbmcgYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gVGhlIHZhbHVlIG1heSBub3QgYmUgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWdlLWJyZWFrLWFmdGVyIix2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZSBicmVhayBhZnRlciBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxzeW50YXg6ImF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IHJlY3RvIHwgdmVyc28iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFnZS1icmVhay1hZnRlciJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBydWxlcyBmb3IgcGFnZSBicmVha3MgYWZ0ZXIgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InBhZ2UtYnJlYWstYmVmb3JlIix2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UgYnJlYWsgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxzeW50YXg6ImF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IHJlY3RvIHwgdmVyc28iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFnZS1icmVhay1iZWZvcmUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgcnVsZXMgZm9yIHBhZ2UgYnJlYWtzIGJlZm9yZSBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicGFnZS1icmVhay1pbnNpZGUiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9XSxzeW50YXg6ImF1dG8gfCBhdm9pZCIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWdlLWJyZWFrLWluc2lkZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBydWxlcyBmb3IgcGFnZSBicmVha3MgaW5zaWRlIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwYWludC1vcmRlciIsYnJvd3NlcnM6WyJFMTciLCJGRjYwIiwiUzgiLCJDMzUiLCJPMjIiXSx2YWx1ZXM6W3tuYW1lOiJmaWxsIn0se25hbWU6Im1hcmtlcnMifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgcGFpbnRlZCB3aXRoIHRoZSBzdGFuZGFyZCBvcmRlciBvZiBwYWludGluZyBvcGVyYXRpb25zOiB0aGUgJ2ZpbGwnIGlzIHBhaW50ZWQgZmlyc3QsIHRoZW4gaXRzICdzdHJva2UnIGFuZCBmaW5hbGx5IGl0cyBtYXJrZXJzLiJ9LHtuYW1lOiJzdHJva2UifV0sc3ludGF4OiJub3JtYWwgfCBbIGZpbGwgfHwgc3Ryb2tlIHx8IG1hcmtlcnMgXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWludC1vcmRlciJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIG9yZGVyIHRoYXQgdGhlIHRocmVlIHBhaW50IG9wZXJhdGlvbnMgdGhhdCBzaGFwZXMgYW5kIHRleHQgYXJlIHJlbmRlcmVkIHdpdGg6IHRoZWlyIGZpbGwsIHRoZWlyIHN0cm9rZSBhbmQgYW55IG1hcmtlcnMgdGhleSBtaWdodCBoYXZlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicGVyc3BlY3RpdmUiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm0gaXMgYXBwbGllZC4ifV0sc3ludGF4OiJub25lIHwgPGxlbmd0aD4iLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGVyc3BlY3RpdmUifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgdGhlIHNhbWUgdHJhbnNmb3JtIGFzIHRoZSBwZXJzcGVjdGl2ZSg8bnVtYmVyPikgdHJhbnNmb3JtIGZ1bmN0aW9uLCBleGNlcHQgdGhhdCBpdCBhcHBsaWVzIG9ubHkgdG8gdGhlIHBvc2l0aW9uZWQgb3IgdHJhbnNmb3JtZWQgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQsIG5vdCB0byB0aGUgdHJhbnNmb3JtIG9uIHRoZSBlbGVtZW50IGl0c2VsZi4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImVudW0iXX0se25hbWU6InBlcnNwZWN0aXZlLW9yaWdpbiIsc3ludGF4OiI8cG9zaXRpb24+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BlcnNwZWN0aXZlLW9yaWdpbiJ9XSxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBmb3IgdGhlIHBlcnNwZWN0aXZlIHByb3BlcnR5LiBJdCBlZmZlY3RpdmVseSBzZXRzIHRoZSBYIGFuZCBZIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSB2aWV3ZXIgYXBwZWFycyB0byBiZSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToicG9pbnRlci1ldmVudHMiLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW5ldmVyIHRoZSBwb2ludGVyIGlzIG92ZXIgZWl0aGVyIHRoZSBpbnRlcmlvciBvciB0aGUgcGVyaW1ldGVyIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbmV2ZXIgdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGUgaW50ZXJpb3Igb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBkb2VzIG5vdCByZWNlaXZlIHBvaW50ZXIgZXZlbnRzLiJ9LHtuYW1lOiJwYWludGVkIixkZXNjcmlwdGlvbjonVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbiB0aGUgcG9pbnRlciBpcyBvdmVyIGEgInBhaW50ZWQiIGFyZWEuICd9LHtuYW1lOiJzdHJva2UiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuZXZlciB0aGUgcG9pbnRlciBpcyBvdmVyIHRoZSBwZXJpbWV0ZXIgb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuIHRoZSDigJh2aXNpYmlsaXR54oCZIHByb3BlcnR5IGlzIHNldCB0byB2aXNpYmxlIGFuZCB0aGUgcG9pbnRlciBpcyBvdmVyIGVpdGhlciB0aGUgaW50ZXJpb3Igb3IgdGhlIHBlcmltZXRlciBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToidmlzaWJsZUZpbGwiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuIHRoZSDigJh2aXNpYmlsaXR54oCZIHByb3BlcnR5IGlzIHNldCB0byB2aXNpYmxlIGFuZCB3aGVuIHRoZSBwb2ludGVyIGlzIG92ZXIgdGhlIGludGVyaW9yIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJ2aXNpYmxlUGFpbnRlZCIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW4gdGhlIOKAmHZpc2liaWxpdHnigJkgcHJvcGVydHkgaXMgc2V0IHRvIHZpc2libGUgYW5kIHdoZW4gdGhlIHBvaW50ZXIgaXMgb3ZlciBhIOKAmHBhaW50ZWTigJkgYXJlYS4ifSx7bmFtZToidmlzaWJsZVN0cm9rZSIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW4gdGhlIOKAmHZpc2liaWxpdHnigJkgcHJvcGVydHkgaXMgc2V0IHRvIHZpc2libGUgYW5kIHdoZW4gdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGUgcGVyaW1ldGVyIG9mIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6ImF1dG8gfCBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNpYmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwgcGFpbnRlZCB8IGZpbGwgfCBzdHJva2UgfCBhbGwgfCBpbmhlcml0IixyZWxldmFuY2U6ODIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BvaW50ZXItZXZlbnRzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIGEgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBhIHBvaW50ZXIgZXZlbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwb3NpdGlvbiIsdmFsdWVzOlt7bmFtZToiYWJzb2x1dGUiLGRlc2NyaXB0aW9uOiJUaGUgYm94J3MgcG9zaXRpb24gKGFuZCBwb3NzaWJseSBzaXplKSBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCBhbmQgJ2xlZnQnIHByb3BlcnRpZXMuIFRoZXNlIHByb3BlcnRpZXMgc3BlY2lmeSBvZmZzZXRzIHdpdGggcmVzcGVjdCB0byB0aGUgYm94J3MgJ2NvbnRhaW5pbmcgYmxvY2snLiJ9LHtuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlRoZSBib3gncyBwb3NpdGlvbiBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgJ2Fic29sdXRlJyBtb2RlbCwgYnV0IGluIGFkZGl0aW9uLCB0aGUgYm94IGlzIGZpeGVkIHdpdGggcmVzcGVjdCB0byBzb21lIHJlZmVyZW5jZS4gQXMgd2l0aCB0aGUgJ2Fic29sdXRlJyBtb2RlbCwgdGhlIGJveCdzIG1hcmdpbnMgZG8gbm90IGNvbGxhcHNlIHdpdGggYW55IG90aGVyIG1hcmdpbnMuIn0se25hbWU6Ii1tcy1wYWdlIixkZXNjcmlwdGlvbjoiVGhlIGJveCdzIHBvc2l0aW9uIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSAnYWJzb2x1dGUnIG1vZGVsLiJ9LHtuYW1lOiJyZWxhdGl2ZSIsZGVzY3JpcHRpb246IlRoZSBib3gncyBwb3NpdGlvbiBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgbm9ybWFsIGZsb3cgKHRoaXMgaXMgY2FsbGVkIHRoZSBwb3NpdGlvbiBpbiBub3JtYWwgZmxvdykuIFRoZW4gdGhlIGJveCBpcyBvZmZzZXQgcmVsYXRpdmUgdG8gaXRzIG5vcm1hbCBwb3NpdGlvbi4ifSx7bmFtZToic3RhdGljIixkZXNjcmlwdGlvbjoiVGhlIGJveCBpcyBhIG5vcm1hbCBib3gsIGxhaWQgb3V0IGFjY29yZGluZyB0byB0aGUgbm9ybWFsIGZsb3cuIFRoZSAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsIGFuZCAnbGVmdCcgcHJvcGVydGllcyBkbyBub3QgYXBwbHkuIn0se25hbWU6InN0aWNreSIsZGVzY3JpcHRpb246IlRoZSBib3gncyBwb3NpdGlvbiBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgbm9ybWFsIGZsb3cuIFRoZW4gdGhlIGJveCBpcyBvZmZzZXQgcmVsYXRpdmUgdG8gaXRzIGZsb3cgcm9vdCBhbmQgY29udGFpbmluZyBibG9jayBhbmQgaW4gYWxsIGNhc2VzLCBpbmNsdWRpbmcgdGFibGUgZWxlbWVudHMsIGRvZXMgbm90IGFmZmVjdCB0aGUgcG9zaXRpb24gb2YgYW55IGZvbGxvd2luZyBib3hlcy4ifSx7bmFtZToiLXdlYmtpdC1zdGlja3kiLGRlc2NyaXB0aW9uOiJUaGUgYm94J3MgcG9zaXRpb24gaXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gdGhlIG5vcm1hbCBmbG93LiBUaGVuIHRoZSBib3ggaXMgb2Zmc2V0IHJlbGF0aXZlIHRvIGl0cyBmbG93IHJvb3QgYW5kIGNvbnRhaW5pbmcgYmxvY2sgYW5kIGluIGFsbCBjYXNlcywgaW5jbHVkaW5nIHRhYmxlIGVsZW1lbnRzLCBkb2VzIG5vdCBhZmZlY3QgdGhlIHBvc2l0aW9uIG9mIGFueSBmb2xsb3dpbmcgYm94ZXMuIn1dLHN5bnRheDoic3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8IHN0aWNreSB8IGZpeGVkIixyZWxldmFuY2U6OTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Bvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJUaGUgcG9zaXRpb24gQ1NTIHByb3BlcnR5IHNldHMgaG93IGFuIGVsZW1lbnQgaXMgcG9zaXRpb25lZCBpbiBhIGRvY3VtZW50LiBUaGUgdG9wLCByaWdodCwgYm90dG9tLCBhbmQgbGVmdCBwcm9wZXJ0aWVzIGRldGVybWluZSB0aGUgZmluYWwgbG9jYXRpb24gb2YgcG9zaXRpb25lZCBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InByZWZpeCIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiI8c3ltYm9sPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgYSA8c3ltYm9sPiB0aGF0IGlzIHByZXBlbmRlZCB0byB0aGUgbWFya2VyIHJlcHJlc2VudGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJxdW90ZXMiLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgJ29wZW4tcXVvdGUnIGFuZCAnY2xvc2UtcXVvdGUnIHZhbHVlcyBvZiB0aGUgJ2NvbnRlbnQnIHByb3BlcnR5IHByb2R1Y2Ugbm8gcXVvdGF0aW9ucyBtYXJrcywgYXMgaWYgdGhleSB3ZXJlICduby1vcGVuLXF1b3RlJyBhbmQgJ25vLWNsb3NlLXF1b3RlJyByZXNwZWN0aXZlbHkuIn1dLHN5bnRheDoibm9uZSB8IGF1dG8gfCBbIDxzdHJpbmc+IDxzdHJpbmc+IF0rIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3F1b3RlcyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHF1b3RhdGlvbiBtYXJrcyBmb3IgYW55IG51bWJlciBvZiBlbWJlZGRlZCBxdW90YXRpb25zLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIl19LHtuYW1lOiJyYW5nZSIsYnJvd3NlcnM6WyJGRjMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSByYW5nZSBkZXBlbmRzIG9uIHRoZSBjb3VudGVyIHN5c3RlbS4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJJZiB1c2VkIGFzIHRoZSBmaXJzdCB2YWx1ZSBpbiBhIHJhbmdlLCBpdCByZXByZXNlbnRzIG5lZ2F0aXZlIGluZmluaXR5OyBpZiB1c2VkIGFzIHRoZSBzZWNvbmQgdmFsdWUsIGl0IHJlcHJlc2VudHMgcG9zaXRpdmUgaW5maW5pdHkuIn1dLHN5bnRheDoiWyBbIDxpbnRlZ2VyPiB8IGluZmluaXRlIF17Mn0gXSMgfCBhdXRvIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIERlZmluZXMgdGhlIHJhbmdlcyBvdmVyIHdoaWNoIHRoZSBjb3VudGVyIHN0eWxlIGlzIGRlZmluZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToicmVzaXplIixicm93c2VyczpbIkU3OSIsIkZGNCIsIlMzIiwiQzEiLCJPMTIuMSJdLHZhbHVlczpbe25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJUaGUgVUEgcHJlc2VudHMgYSBiaWRpcmVjdGlvbmFsIHJlc2l6aW5nIG1lY2hhbmlzbSB0byBhbGxvdyB0aGUgdXNlciB0byBhZGp1c3QgYm90aCB0aGUgaGVpZ2h0IGFuZCB0aGUgd2lkdGggb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6Imhvcml6b250YWwiLGRlc2NyaXB0aW9uOiJUaGUgVUEgcHJlc2VudHMgYSB1bmlkaXJlY3Rpb25hbCBob3Jpem9udGFsIHJlc2l6aW5nIG1lY2hhbmlzbSB0byBhbGxvdyB0aGUgdXNlciB0byBhZGp1c3Qgb25seSB0aGUgd2lkdGggb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgVUEgZG9lcyBub3QgcHJlc2VudCBhIHJlc2l6aW5nIG1lY2hhbmlzbSBvbiB0aGUgZWxlbWVudCwgYW5kIHRoZSB1c2VyIGlzIGdpdmVuIG5vIGRpcmVjdCBtYW5pcHVsYXRpb24gbWVjaGFuaXNtIHRvIHJlc2l6ZSB0aGUgZWxlbWVudC4ifSx7bmFtZToidmVydGljYWwiLGRlc2NyaXB0aW9uOiJUaGUgVUEgcHJlc2VudHMgYSB1bmlkaXJlY3Rpb25hbCB2ZXJ0aWNhbCByZXNpemluZyBtZWNoYW5pc20gdG8gYWxsb3cgdGhlIHVzZXIgdG8gYWRqdXN0IG9ubHkgdGhlIGhlaWdodCBvZiB0aGUgZWxlbWVudC4ifV0sc3ludGF4OiJub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGJsb2NrIHwgaW5saW5lIixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Jlc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IGFuIGVsZW1lbnQgaXMgcmVzaXphYmxlIGJ5IHRoZSB1c2VyLCBhbmQgaWYgc28sIGFsb25nIHdoaWNoIGF4aXMvYXhlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InJpZ2h0Iix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3JpZ2h0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZhciBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94J3MgcmlnaHQgbWFyZ2luIGVkZ2UgaXMgb2Zmc2V0IHRvIHRoZSBsZWZ0IG9mIHRoZSByaWdodCBlZGdlIG9mIHRoZSBib3gncyAnY29udGFpbmluZyBibG9jaycuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJydWJ5LWFsaWduIixicm93c2VyczpbIkZGMzgiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixicm93c2VyczpbIkZGMzgiXSxkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgZGV0ZXJtaW5lcyBob3cgdGhlIHJ1YnkgY29udGVudHMgYXJlIGFsaWduZWQuIFRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBydWJ5IGNvbnRlbnQgaXMgY2VudGVyZWQgd2l0aGluIGl0cyBib3guIn0se25hbWU6ImRpc3RyaWJ1dGUtbGV0dGVyIixicm93c2VyczpbIkZGMzgiXSxkZXNjcmlwdGlvbjoiSWYgdGhlIHdpZHRoIG9mIHRoZSBydWJ5IHRleHQgaXMgc21hbGxlciB0aGFuIHRoYXQgb2YgdGhlIGJhc2UsIHRoZW4gdGhlIHJ1YnkgdGV4dCBjb250ZW50cyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIGJhc2UsIHdpdGggdGhlIGZpcnN0IGFuZCBsYXN0IHJ1YnkgdGV4dCBnbHlwaHMgbGluaW5nIHVwIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZmlyc3QgYW5kIGxhc3QgYmFzZSBnbHlwaHMuIElmIHRoZSB3aWR0aCBvZiB0aGUgcnVieSB0ZXh0IGlzIGF0IGxlYXN0IHRoZSB3aWR0aCBvZiB0aGUgYmFzZSwgdGhlbiB0aGUgbGV0dGVycyBvZiB0aGUgYmFzZSBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIHJ1YnkgdGV4dC4ifSx7bmFtZToiZGlzdHJpYnV0ZS1zcGFjZSIsYnJvd3NlcnM6WyJGRjM4Il0sZGVzY3JpcHRpb246IklmIHRoZSB3aWR0aCBvZiB0aGUgcnVieSB0ZXh0IGlzIHNtYWxsZXIgdGhhbiB0aGF0IG9mIHRoZSBiYXNlLCB0aGVuIHRoZSBydWJ5IHRleHQgY29udGVudHMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIHdpZHRoIG9mIHRoZSBiYXNlLCB3aXRoIGEgY2VydGFpbiBhbW91bnQgb2Ygd2hpdGUgc3BhY2UgcHJlY2VkaW5nIHRoZSBmaXJzdCBhbmQgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgcnVieSB0ZXh0LiBUaGF0IGFtb3VudCBvZiB3aGl0ZSBzcGFjZSBpcyBub3JtYWxseSBlcXVhbCB0byBoYWxmIHRoZSBhbW91bnQgb2YgaW50ZXItY2hhcmFjdGVyIHNwYWNlIG9mIHRoZSBydWJ5IHRleHQuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGNvbnRlbnQgaXMgYWxpZ25lZCB3aXRoIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBiYXNlLiJ9LHtuYW1lOiJsaW5lLWVkZ2UiLGJyb3dzZXJzOlsiRkYzOCJdLGRlc2NyaXB0aW9uOiJJZiB0aGUgcnVieSB0ZXh0IGlzIG5vdCBhZGphY2VudCB0byBhIGxpbmUgZWRnZSwgaXQgaXMgYWxpZ25lZCBhcyBpbiAnYXV0bycuIElmIGl0IGlzIGFkamFjZW50IHRvIGEgbGluZSBlZGdlLCB0aGVuIGl0IGlzIHN0aWxsIGFsaWduZWQgYXMgaW4gYXV0bywgYnV0IHRoZSBzaWRlIG9mIHRoZSBydWJ5IHRleHQgdGhhdCB0b3VjaGVzIHRoZSBlbmQgb2YgdGhlIGxpbmUgaXMgbGluZWQgdXAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBiYXNlLiJ9LHtuYW1lOiJyaWdodCIsYnJvd3NlcnM6WyJGRjM4Il0sZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY29udGVudCBpcyBhbGlnbmVkIHdpdGggdGhlIGVuZCBlZGdlIG9mIHRoZSBiYXNlLiJ9LHtuYW1lOiJzdGFydCIsYnJvd3NlcnM6WyJGRjM4Il0sZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY29udGVudCBpcyBhbGlnbmVkIHdpdGggdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGJhc2UuIn0se25hbWU6InNwYWNlLWJldHdlZW4iLGJyb3dzZXJzOlsiRkYzOCJdLGRlc2NyaXB0aW9uOiJUaGUgcnVieSBjb250ZW50IGV4cGFuZHMgYXMgZGVmaW5lZCBmb3Igbm9ybWFsIHRleHQganVzdGlmaWNhdGlvbiAoYXMgZGVmaW5lZCBieSAndGV4dC1qdXN0aWZ5JyksIn0se25hbWU6InNwYWNlLWFyb3VuZCIsYnJvd3NlcnM6WyJGRjM4Il0sZGVzY3JpcHRpb246IkFzIGZvciAnc3BhY2UtYmV0d2VlbicgZXhjZXB0IHRoYXQgdGhlcmUgZXhpc3RzIGFuIGV4dHJhIGp1c3RpZmljYXRpb24gb3Bwb3J0dW5pdGllcyB3aG9zZSBzcGFjZSBpcyBkaXN0cmlidXRlZCBoYWxmIGJlZm9yZSBhbmQgaGFsZiBhZnRlciB0aGUgcnVieSBjb250ZW50LiJ9XSxzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJzdGFydCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcnVieS1hbGlnbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB0ZXh0IGlzIGRpc3RyaWJ1dGVkIHdpdGhpbiB0aGUgdmFyaW91cyBydWJ5IGJveGVzIHdoZW4gdGhlaXIgY29udGVudHMgZG8gbm90IGV4YWN0bHkgZmlsbCB0aGVpciByZXNwZWN0aXZlIGJveGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicnVieS1vdmVyaGFuZyIsYnJvd3NlcnM6WyJGRjEwIiwiSUU1Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY2FuIG92ZXJoYW5nIHRleHQgYWRqYWNlbnQgdG8gdGhlIGJhc2Ugb24gZWl0aGVyIHNpZGUuIFRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY2FuIG92ZXJoYW5nIHRoZSB0ZXh0IHRoYXQgZm9sbG93cyBpdC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY2Fubm90IG92ZXJoYW5nIGFueSB0ZXh0IGFkamFjZW50IHRvIGl0cyBiYXNlLCBvbmx5IGl0cyBvd24gYmFzZS4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGNhbiBvdmVyaGFuZyB0aGUgdGV4dCB0aGF0IHByZWNlZGVzIGl0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciwgYW5kIG9uIHdoaWNoIHNpZGUsIHJ1YnkgdGV4dCBpcyBhbGxvd2VkIHRvIHBhcnRpYWxseSBvdmVyaGFuZyBhbnkgYWRqYWNlbnQgdGV4dCBpbiBhZGRpdGlvbiB0byBpdHMgb3duIGJhc2UsIHdoZW4gdGhlIHJ1YnkgdGV4dCBpcyB3aWRlciB0aGFuIHRoZSBydWJ5IGJhc2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJydWJ5LXBvc2l0aW9uIixicm93c2VyczpbIkU4NCIsIkZGMzgiLCJTNyIsIkM4NCIsIk83MCJdLHZhbHVlczpbe25hbWU6ImFmdGVyIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBhcHBlYXJzIGFmdGVyIHRoZSBiYXNlLiBUaGlzIGlzIGEgcmVsYXRpdmVseSByYXJlIHNldHRpbmcgdXNlZCBpbiBpZGVvZ3JhcGhpYyBFYXN0IEFzaWFuIHdyaXRpbmcgc3lzdGVtcywgbW9zdCBlYXNpbHkgZm91bmQgaW4gZWR1Y2F0aW9uYWwgdGV4dC4ifSx7bmFtZToiYmVmb3JlIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBhcHBlYXJzIGJlZm9yZSB0aGUgYmFzZS4gVGhpcyBpcyB0aGUgbW9zdCBjb21tb24gc2V0dGluZyB1c2VkIGluIGlkZW9ncmFwaGljIEVhc3QgQXNpYW4gd3JpdGluZyBzeXN0ZW1zLiJ9LHtuYW1lOiJpbmxpbmUifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGFwcGVhcnMgb24gdGhlIHJpZ2h0IG9mIHRoZSBiYXNlLiBVbmxpa2UgJ2JlZm9yZScgYW5kICdhZnRlcicsIHRoaXMgdmFsdWUgaXMgbm90IHJlbGF0aXZlIHRvIHRoZSB0ZXh0IGZsb3cgZGlyZWN0aW9uLiJ9XSxzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIGFsdGVybmF0ZSB8fCBbIG92ZXIgfCB1bmRlciBdIF0gfCBpbnRlci1jaGFyYWN0ZXIiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcnVieS1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVXNlZCBieSB0aGUgcGFyZW50IG9mIGVsZW1lbnRzIHdpdGggZGlzcGxheTogcnVieS10ZXh0IHRvIGNvbnRyb2wgdGhlIHBvc2l0aW9uIG9mIHRoZSBydWJ5IHRleHQgd2l0aCByZXNwZWN0IHRvIGl0cyBiYXNlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicnVieS1zcGFuIixicm93c2VyczpbIkZGMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdHRyKHgpIixkZXNjcmlwdGlvbjoiVGhlIHZhbHVlIG9mIGF0dHJpYnV0ZSAneCcgaXMgYSBzdHJpbmcgdmFsdWUuIFRoZSBzdHJpbmcgdmFsdWUgaXMgZXZhbHVhdGVkIGFzIGEgPG51bWJlcj4gdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgcnVieSBiYXNlIGVsZW1lbnRzIHRvIGJlIHNwYW5uZWQgYnkgdGhlIGFubm90YXRpb24gZWxlbWVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNwYW5uaW5nLiBUaGUgY29tcHV0ZWQgdmFsdWUgaXMgJzEnLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciwgYW5kIG9uIHdoaWNoIHNpZGUsIHJ1YnkgdGV4dCBpcyBhbGxvd2VkIHRvIHBhcnRpYWxseSBvdmVyaGFuZyBhbnkgYWRqYWNlbnQgdGV4dCBpbiBhZGRpdGlvbiB0byBpdHMgb3duIGJhc2UsIHdoZW4gdGhlIHJ1YnkgdGV4dCBpcyB3aWRlciB0aGFuIHRoZSBydWJ5IGJhc2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzY3JvbGxiYXItM2RsaWdodC1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci0zZGxpZ2h0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgdG9wIGFuZCBsZWZ0IGVkZ2VzIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItYXJyb3ctY29sb3IiLGJyb3dzZXJzOlsiSUU1Il0scmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItYXJyb3ctY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBhcnJvdyBlbGVtZW50cyBvZiBhIHNjcm9sbCBhcnJvdy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItYmFzZS1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1iYXNlLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgbWFpbiBlbGVtZW50cyBvZiBhIHNjcm9sbCBiYXIsIHdoaWNoIGluY2x1ZGUgdGhlIHNjcm9sbCBib3gsIHRyYWNrLCBhbmQgc2Nyb2xsIGFycm93cy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItZGFya3NoYWRvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1kYXJrc2hhZG93LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgZ3V0dGVyIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItZmFjZS1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1mYWNlLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic2Nyb2xsYmFyLWhpZ2hsaWdodC1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1oaWdobGlnaHQtY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYW5kIGxlZnQgZWRnZXMgb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1zaGFkb3ctY29sb3IiLGJyb3dzZXJzOlsiSUU1Il0scmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItc2hhZG93LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgYm90dG9tIGFuZCByaWdodCBlZGdlcyBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic2Nyb2xsYmFyLXRyYWNrLWNvbG9yIixicm93c2VyczpbIklFNiJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRyYWNrIGVsZW1lbnQgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbC1iZWhhdmlvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzE1LjQiLCJDNjEiLCJPNDgiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiU2Nyb2xscyBpbiBhbiBpbnN0YW50IGZhc2hpb24uIn0se25hbWU6InNtb290aCIsZGVzY3JpcHRpb246IlNjcm9sbHMgaW4gYSBzbW9vdGggZmFzaGlvbiB1c2luZyBhIHVzZXItYWdlbnQtZGVmaW5lZCB0aW1pbmcgZnVuY3Rpb24gYW5kIHRpbWUgcGVyaW9kLiJ9XSxzeW50YXg6ImF1dG8gfCBzbW9vdGgiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLWJlaGF2aW9yIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNjcm9sbGluZyBiZWhhdmlvciBmb3IgYSBzY3JvbGxpbmcgYm94LCB3aGVuIHNjcm9sbGluZyBoYXBwZW5zIGR1ZSB0byBuYXZpZ2F0aW9uIG9yIENTU09NIHNjcm9sbGluZyBBUElzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtY29vcmRpbmF0ZSIsYnJvd3NlcnM6WyJGRjM5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGF0IHRoaXMgZWxlbWVudCBkb2VzIG5vdCBjb250cmlidXRlIGEgc25hcCBwb2ludC4ifV0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJub25lIHwgPHBvc2l0aW9uPiMiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtc25hcC1jb29yZGluYXRlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSB4IGFuZCB5IGNvb3JkaW5hdGUgd2l0aGluIHRoZSBlbGVtZW50IHdoaWNoIHdpbGwgYWxpZ24gd2l0aCB0aGUgbmVhcmVzdCBhbmNlc3RvciBzY3JvbGwgY29udGFpbmVy4oCZcyBzbmFwLWRlc3RpbmF0aW9uIGZvciB0aGUgcmVzcGVjdGl2ZSBheGlzLiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIiwiZW51bSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtZGVzdGluYXRpb24iLGJyb3dzZXJzOlsiRkYzOSJdLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPHBvc2l0aW9uPiIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLWRlc3RpbmF0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmUgdGhlIHggYW5kIHkgY29vcmRpbmF0ZSB3aXRoaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIHZpc3VhbCB2aWV3cG9ydCB3aGljaCBlbGVtZW50IHNuYXAgcG9pbnRzIHdpbGwgYWxpZ24gd2l0aC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtcG9pbnRzLXgiLGJyb3dzZXJzOlsiRkYzOSIsIlM5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNuYXAgcG9pbnRzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgc2Nyb2xsIGNvbnRhaW5lci4ifSx7bmFtZToicmVwZWF0KCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGFuIGludGVydmFsIGF0IHdoaWNoIHNuYXAgcG9pbnRzIGFyZSBkZWZpbmVkLCBzdGFydGluZyBmcm9tIHRoZSBjb250YWluZXLigJlzIHJlbGV2YW50IHN0YXJ0IGVkZ2UuIn1dLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoibm9uZSB8IHJlcGVhdCggPGxlbmd0aC1wZXJjZW50YWdlPiApIixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtcG9pbnRzLXgifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHBvc2l0aW9uaW5nIG9mIHNuYXAgcG9pbnRzIGFsb25nIHRoZSB4IGF4aXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIgaXQgaXMgYXBwbGllZCB0by4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNjcm9sbC1zbmFwLXBvaW50cy15Iixicm93c2VyczpbIkZGMzkiLCJTOSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBzbmFwIHBvaW50cyBhcmUgZGVmaW5lZCBieSB0aGlzIHNjcm9sbCBjb250YWluZXIuIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhbiBpbnRlcnZhbCBhdCB3aGljaCBzbmFwIHBvaW50cyBhcmUgZGVmaW5lZCwgc3RhcnRpbmcgZnJvbSB0aGUgY29udGFpbmVy4oCZcyByZWxldmFudCBzdGFydCBlZGdlLiJ9XSxzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Im5vbmUgfCByZXBlYXQoIDxsZW5ndGgtcGVyY2VudGFnZT4gKSIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLXBvaW50cy15In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBwb3NpdGlvbmluZyBvZiBzbmFwIHBvaW50cyBhbG9uZyB0aGUgeSBheGlzIG9mIHRoZSBzY3JvbGwgY29udGFpbmVyIGl0IGlzIGFwcGxpZWQgdG8uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzY3JvbGwtc25hcC10eXBlIix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgbXVzdCBpZ25vcmUgc25hcCBwb2ludHMsIGlmIGFueSwgd2hlbiBzY3JvbGxlZC4ifSx7bmFtZToibWFuZGF0b3J5IixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgZ3VhcmFudGVlZCB0byByZXN0IG9uIGEgc25hcCBwb2ludCB3aGVuIHRoZXJlIGFyZSBubyBhY3RpdmUgc2Nyb2xsaW5nIG9wZXJhdGlvbnMuIn0se25hbWU6InByb3hpbWl0eSIsZGVzY3JpcHRpb246IlRoZSB2aXN1YWwgdmlld3BvcnQgb2YgdGhpcyBzY3JvbGwgY29udGFpbmVyIG1heSBjb21lIHRvIHJlc3Qgb24gYSBzbmFwIHBvaW50IGF0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhIHNjcm9sbCBhdCB0aGUgZGlzY3JldGlvbiBvZiB0aGUgVUEgZ2l2ZW4gdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNjcm9sbC4ifV0sc3ludGF4OiJub25lIHwgWyB4IHwgeSB8IGJsb2NrIHwgaW5saW5lIHwgYm90aCBdIFsgbWFuZGF0b3J5IHwgcHJveGltaXR5IF0/IixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLXR5cGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgaG93IHN0cmljdGx5IHNuYXAgcG9pbnRzIGFyZSBlbmZvcmNlZCBvbiB0aGUgc2Nyb2xsIGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNoYXBlLWltYWdlLXRocmVzaG9sZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjYyIiwiUzEwLjEiLCJDMzciLCJPMjQiXSxzeW50YXg6IjxhbHBoYS12YWx1ZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2hhcGUtaW1hZ2UtdGhyZXNob2xkIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBhbHBoYSBjaGFubmVsIHRocmVzaG9sZCB1c2VkIHRvIGV4dHJhY3QgdGhlIHNoYXBlIHVzaW5nIGFuIGltYWdlLiBBIHZhbHVlIG9mIDAuNSBtZWFucyB0aGF0IHRoZSBzaGFwZSB3aWxsIGVuY2xvc2UgYWxsIHRoZSBwaXhlbHMgdGhhdCBhcmUgbW9yZSB0aGFuIDUwJSBvcGFxdWUuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6InNoYXBlLW1hcmdpbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjYyIiwiUzEwLjEiLCJDMzciLCJPMjQiXSxzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2hhcGUtbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJBZGRzIGEgbWFyZ2luIHRvIGEgJ3NoYXBlLW91dHNpZGUnLiBUaGlzIGRlZmluZXMgYSBuZXcgc2hhcGUgdGhhdCBpcyB0aGUgc21hbGxlc3QgY29udG91ciB0aGF0IGluY2x1ZGVzIGFsbCB0aGUgcG9pbnRzIHRoYXQgYXJlIHRoZSAnc2hhcGUtbWFyZ2luJyBkaXN0YW5jZSBvdXR3YXJkIGluIHRoZSBwZXJwZW5kaWN1bGFyIGRpcmVjdGlvbiBmcm9tIGEgcG9pbnQgb24gdGhlIHVuZGVybHlpbmcgc2hhcGUuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJzaGFwZS1vdXRzaWRlIixicm93c2VyczpbIkU3OSIsIkZGNjIiLCJTMTAuMSIsIkMzNyIsIk8yNCJdLHZhbHVlczpbe25hbWU6Im1hcmdpbi1ib3giLGRlc2NyaXB0aW9uOiJUaGUgYmFja2dyb3VuZCBpcyBwYWludGVkIHdpdGhpbiAoY2xpcHBlZCB0bykgdGhlIG1hcmdpbiBib3guIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZmxvYXQgYXJlYSBpcyB1bmFmZmVjdGVkLiJ9XSxzeW50YXg6Im5vbmUgfCBbIDxzaGFwZS1ib3g+IHx8IDxiYXNpYy1zaGFwZT4gXSB8IDxpbWFnZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2hhcGUtb3V0c2lkZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGFuIG9ydGhvZ29uYWwgcm90YXRpb24gdG8gYmUgYXBwbGllZCB0byBhbiBpbWFnZSBiZWZvcmUgaXQgaXMgbGFpZCBvdXQuIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsImJveCIsInNoYXBlIiwiZW51bSJdfSx7bmFtZToic2hhcGUtcmVuZGVyaW5nIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiU3VwcHJlc3NlcyBhdXJhbCByZW5kZXJpbmcuIn0se25hbWU6ImNyaXNwRWRnZXMiLGRlc2NyaXB0aW9uOiJFbXBoYXNpemUgdGhlIGNvbnRyYXN0IGJldHdlZW4gY2xlYW4gZWRnZXMgb2YgYXJ0d29yayBvdmVyIHJlbmRlcmluZyBzcGVlZCBhbmQgZ2VvbWV0cmljIHByZWNpc2lvbi4ifSx7bmFtZToiZ2VvbWV0cmljUHJlY2lzaW9uIixkZXNjcmlwdGlvbjoiRW1waGFzaXplIGdlb21ldHJpYyBwcmVjaXNpb24gb3ZlciBzcGVlZCBhbmQgY3Jpc3AgZWRnZXMuIn0se25hbWU6Im9wdGltaXplU3BlZWQiLGRlc2NyaXB0aW9uOiJFbXBoYXNpemUgcmVuZGVyaW5nIHNwZWVkIG92ZXIgZ2VvbWV0cmljIHByZWNpc2lvbiBhbmQgY3Jpc3AgZWRnZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgaGludHMgYWJvdXQgd2hhdCB0cmFkZW9mZnMgdG8gbWFrZSBhcyBpdCByZW5kZXJzIHZlY3RvciBncmFwaGljcyBlbGVtZW50cyBzdWNoIGFzIDxwYXRoPiBlbGVtZW50cyBhbmQgYmFzaWMgc2hhcGVzIHN1Y2ggYXMgY2lyY2xlcyBhbmQgcmVjdGFuZ2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNpemUiLGJyb3dzZXJzOlsiQyIsIk84Il0sc3ludGF4OiI8bGVuZ3RoPnsxLDJ9IHwgYXV0byB8IFsgPHBhZ2Utc2l6ZT4gfHwgWyBwb3J0cmFpdCB8IGxhbmRzY2FwZSBdIF0iLHJlbGV2YW5jZTo1MyxkZXNjcmlwdGlvbjoiVGhlIHNpemUgQ1NTIGF0LXJ1bGUgZGVzY3JpcHRvciwgdXNlZCB3aXRoIHRoZSBAcGFnZSBhdC1ydWxlLCBkZWZpbmVzIHRoZSBzaXplIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgYm94IHdoaWNoIGlzIHVzZWQgdG8gcmVwcmVzZW50IGEgcGFnZS4gTW9zdCBvZiB0aGUgdGltZSwgdGhpcyBzaXplIGNvcnJlc3BvbmRzIHRvIHRoZSB0YXJnZXQgc2l6ZSBvZiB0aGUgcHJpbnRlZCBwYWdlIGlmIGFwcGxpY2FibGUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6InNyYyIsdmFsdWVzOlt7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJSZWZlcmVuY2UgZm9udCBieSBVUkwifSx7bmFtZToiZm9ybWF0KCkiLGRlc2NyaXB0aW9uOiJPcHRpb25hbCBoaW50IGRlc2NyaWJpbmcgdGhlIGZvcm1hdCBvZiB0aGUgZm9udCByZXNvdXJjZS4ifSx7bmFtZToibG9jYWwoKSIsZGVzY3JpcHRpb246IkZvcm1hdC1zcGVjaWZpYyBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgbG9jYWxseSBhdmFpbGFibGUgY29weSBvZiBhIGdpdmVuIGZvbnQuIn1dLHN5bnRheDoiWyA8dXJsPiBbIGZvcm1hdCggPHN0cmluZz4jICkgXT8gfCBsb2NhbCggPGZhbWlseS1uYW1lPiApIF0jIixyZWxldmFuY2U6ODcsZGVzY3JpcHRpb246IkBmb250LWZhY2UgZGVzY3JpcHRvci4gU3BlY2lmaWVzIHRoZSByZXNvdXJjZSBjb250YWluaW5nIGZvbnQgZGF0YS4gSXQgaXMgcmVxdWlyZWQsIHdoZXRoZXIgdGhlIGZvbnQgaXMgZG93bmxvYWRhYmxlIG9yIGxvY2FsbHkgaW5zdGFsbGVkLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsInVybCIsImlkZW50aWZpZXIiXX0se25hbWU6InN0b3AtY29sb3IiLHJlbGV2YW5jZTo1MSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoYXQgY29sb3IgdG8gdXNlIGF0IHRoYXQgZ3JhZGllbnQgc3RvcC4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzdG9wLW9wYWNpdHkiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgb3BhY2l0eSBvZiBhIGdpdmVuIGdyYWRpZW50IHN0b3AuIixyZXN0cmljdGlvbnM6WyJudW1iZXIoMC0xKSJdfSx7bmFtZToic3Ryb2tlIix2YWx1ZXM6W3tuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IkEgVVJMIHJlZmVyZW5jZSB0byBhIHBhaW50IHNlcnZlciBlbGVtZW50LCB3aGljaCBpcyBhbiBlbGVtZW50IHRoYXQgZGVmaW5lcyBhIHBhaW50IHNlcnZlcjog4oCYaGF0Y2jigJksIOKAmGxpbmVhckdyYWRpZW504oCZLCDigJhtZXNo4oCZLCDigJhwYXR0ZXJu4oCZLCDigJhyYWRpYWxHcmFkaWVudOKAmSBhbmQg4oCYc29saWRjb2xvcuKAmS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHBhaW50IGlzIGFwcGxpZWQgaW4gdGhpcyBsYXllci4ifV0scmVsZXZhbmNlOjY1LGRlc2NyaXB0aW9uOiJQYWludHMgYWxvbmcgdGhlIG91dGxpbmUgb2YgdGhlIGdpdmVuIGdyYXBoaWNhbCBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiY29sb3IiLCJlbnVtIiwidXJsIl19LHtuYW1lOiJzdHJva2UtZGFzaGFycmF5Iix2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gZGFzaGluZyBpcyB1c2VkLiJ9XSxyZWxldmFuY2U6NTgsZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBwYXR0ZXJuIG9mIGRhc2hlcyBhbmQgZ2FwcyB1c2VkIHRvIHN0cm9rZSBwYXRocy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiJzdHJva2UtZGFzaG9mZnNldCIscmVsZXZhbmNlOjU5LGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGRpc3RhbmNlIGludG8gdGhlIGRhc2ggcGF0dGVybiB0byBzdGFydCB0aGUgZGFzaC4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6InN0cm9rZS1saW5lY2FwIix2YWx1ZXM6W3tuYW1lOiJidXR0IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHN0cm9rZSBmb3IgZWFjaCBzdWJwYXRoIGRvZXMgbm90IGV4dGVuZCBiZXlvbmQgaXRzIHR3byBlbmRwb2ludHMuIn0se25hbWU6InJvdW5kIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgYXQgZWFjaCBlbmQgb2YgZWFjaCBzdWJwYXRoLCB0aGUgc2hhcGUgcmVwcmVzZW50aW5nIHRoZSBzdHJva2Ugd2lsbCBiZSBleHRlbmRlZCBieSBhIGhhbGYgY2lyY2xlIHdpdGggYSByYWRpdXMgZXF1YWwgdG8gdGhlIHN0cm9rZSB3aWR0aC4ifSx7bmFtZToic3F1YXJlIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgYXQgdGhlIGVuZCBvZiBlYWNoIHN1YnBhdGgsIHRoZSBzaGFwZSByZXByZXNlbnRpbmcgdGhlIHN0cm9rZSB3aWxsIGJlIGV4dGVuZGVkIGJ5IGEgcmVjdGFuZ2xlIHdpdGggdGhlIHNhbWUgd2lkdGggYXMgdGhlIHN0cm9rZSB3aWR0aCBhbmQgd2hvc2UgbGVuZ3RoIGlzIGhhbGYgb2YgdGhlIHN0cm9rZSB3aWR0aC4ifV0scmVsZXZhbmNlOjUzLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNoYXBlIHRvIGJlIHVzZWQgYXQgdGhlIGVuZCBvZiBvcGVuIHN1YnBhdGhzIHdoZW4gdGhleSBhcmUgc3Ryb2tlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InN0cm9rZS1saW5lam9pbiIsdmFsdWVzOlt7bmFtZToiYmV2ZWwiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhIGJldmVsbGVkIGNvcm5lciBpcyB0byBiZSB1c2VkIHRvIGpvaW4gcGF0aCBzZWdtZW50cy4ifSx7bmFtZToibWl0ZXIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhIHNoYXJwIGNvcm5lciBpcyB0byBiZSB1c2VkIHRvIGpvaW4gcGF0aCBzZWdtZW50cy4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhIHJvdW5kIGNvcm5lciBpcyB0byBiZSB1c2VkIHRvIGpvaW4gcGF0aCBzZWdtZW50cy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNoYXBlIHRvIGJlIHVzZWQgYXQgdGhlIGNvcm5lcnMgb2YgcGF0aHMgb3IgYmFzaWMgc2hhcGVzIHdoZW4gdGhleSBhcmUgc3Ryb2tlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InN0cm9rZS1taXRlcmxpbWl0IixyZWxldmFuY2U6NTEsZGVzY3JpcHRpb246IldoZW4gdHdvIGxpbmUgc2VnbWVudHMgbWVldCBhdCBhIHNoYXJwIGFuZ2xlIGFuZCBtaXRlciBqb2lucyBoYXZlIGJlZW4gc3BlY2lmaWVkIGZvciAnc3Ryb2tlLWxpbmVqb2luJywgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBtaXRlciB0byBleHRlbmQgZmFyIGJleW9uZCB0aGUgdGhpY2tuZXNzIG9mIHRoZSBsaW5lIHN0cm9raW5nIHRoZSBwYXRoLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIl19LHtuYW1lOiJzdHJva2Utb3BhY2l0eSIscmVsZXZhbmNlOjUyLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG9wYWNpdHkgb2YgdGhlIHBhaW50aW5nIG9wZXJhdGlvbiB1c2VkIHRvIHN0cm9rZSB0aGUgY3VycmVudCBvYmplY3QuIixyZXN0cmljdGlvbnM6WyJudW1iZXIoMC0xKSJdfSx7bmFtZToic3Ryb2tlLXdpZHRoIixyZWxldmFuY2U6NjEsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIHN0cm9rZSBvbiB0aGUgY3VycmVudCBvYmplY3QuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiJzdWZmaXgiLGJyb3dzZXJzOlsiRkYzMyJdLHN5bnRheDoiPHN5bWJvbD4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gU3BlY2lmaWVzIGEgPHN5bWJvbD4gdGhhdCBpcyBhcHBlbmRlZCB0byB0aGUgbWFya2VyIHJlcHJlc2VudGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJzeXN0ZW0iLGJyb3dzZXJzOlsiRkYzMyJdLHZhbHVlczpbe25hbWU6ImFkZGl0aXZlIixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyDigJxzaWduLXZhbHVl4oCdIG51bWJlcmluZyBzeXN0ZW1zLCB3aGljaCwgcmF0aGVyIHRoYW4gdXNpbmcgcmV1c2luZyBkaWdpdHMgaW4gZGlmZmVyZW50IHBvc2l0aW9ucyB0byBjaGFuZ2UgdGhlaXIgdmFsdWUsIGRlZmluZSBhZGRpdGlvbmFsIGRpZ2l0cyB3aXRoIG11Y2ggbGFyZ2VyIHZhbHVlcywgc28gdGhhdCB0aGUgdmFsdWUgb2YgdGhlIG51bWJlciBjYW4gYmUgb2J0YWluZWQgYnkgYWRkaW5nIGFsbCB0aGUgZGlnaXRzIHRvZ2V0aGVyLiJ9LHtuYW1lOiJhbHBoYWJldGljIixkZXNjcmlwdGlvbjonSW50ZXJwcmV0cyB0aGUgbGlzdCBvZiBjb3VudGVyIHN5bWJvbHMgYXMgZGlnaXRzIHRvIGFuIGFscGhhYmV0aWMgbnVtYmVyaW5nIHN5c3RlbSwgc2ltaWxhciB0byB0aGUgZGVmYXVsdCBsb3dlci1hbHBoYSBjb3VudGVyIHN0eWxlLCB3aGljaCB3cmFwcyBmcm9tICJhIiwgImIiLCAiYyIsIHRvICJhYSIsICJhYiIsICJhYyIuJ30se25hbWU6ImN5Y2xpYyIsZGVzY3JpcHRpb246IkN5Y2xlcyByZXBlYXRlZGx5IHRocm91Z2ggaXRzIHByb3ZpZGVkIHN5bWJvbHMsIGxvb3BpbmcgYmFjayB0byB0aGUgYmVnaW5uaW5nIHdoZW4gaXQgcmVhY2hlcyB0aGUgZW5kIG9mIHRoZSBsaXN0LiJ9LHtuYW1lOiJleHRlbmRzIixkZXNjcmlwdGlvbjoiVXNlIHRoZSBhbGdvcml0aG0gb2YgYW5vdGhlciBjb3VudGVyIHN0eWxlLCBidXQgYWx0ZXIgb3RoZXIgYXNwZWN0cy4ifSx7bmFtZToiZml4ZWQiLGRlc2NyaXB0aW9uOiJSdW5zIHRocm91Z2ggaXRzIGxpc3Qgb2YgY291bnRlciBzeW1ib2xzIG9uY2UsIHRoZW4gZmFsbHMgYmFjay4ifSx7bmFtZToibnVtZXJpYyIsZGVzY3JpcHRpb246YGludGVycHJldHMgdGhlIGxpc3Qgb2YgY291bnRlciBzeW1ib2xzIGFzIGRpZ2l0cyB0byBhICJwbGFjZS12YWx1ZSIgbnVtYmVyaW5nIHN5c3RlbSwgc2ltaWxhciB0byB0aGUgZGVmYXVsdCAnZGVjaW1hbCcgY291bnRlciBzdHlsZS5gfSx7bmFtZToic3ltYm9saWMiLGRlc2NyaXB0aW9uOiJDeWNsZXMgcmVwZWF0ZWRseSB0aHJvdWdoIGl0cyBwcm92aWRlZCBzeW1ib2xzLCBkb3VibGluZywgdHJpcGxpbmcsIGV0Yy4gdGhlIHN5bWJvbHMgb24gZWFjaCBzdWNjZXNzaXZlIHBhc3MgdGhyb3VnaCB0aGUgbGlzdC4ifV0sc3ludGF4OiJjeWNsaWMgfCBudW1lcmljIHwgYWxwaGFiZXRpYyB8IHN5bWJvbGljIHwgYWRkaXRpdmUgfCBbIGZpeGVkIDxpbnRlZ2VyPj8gXSB8IFsgZXh0ZW5kcyA8Y291bnRlci1zdHlsZS1uYW1lPiBdIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyB3aGljaCBhbGdvcml0aG0gd2lsbCBiZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgY291bnRlcuKAmXMgcmVwcmVzZW50YXRpb24gYmFzZWQgb24gdGhlIGNvdW50ZXIgdmFsdWUuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaW50ZWdlciJdfSx7bmFtZToic3ltYm9scyIsYnJvd3NlcnM6WyJGRjMzIl0sc3ludGF4OiI8c3ltYm9sPisiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gU3BlY2lmaWVzIHRoZSBzeW1ib2xzIHVzZWQgYnkgdGhlIG1hcmtlci1jb25zdHJ1Y3Rpb24gYWxnb3JpdGhtIHNwZWNpZmllZCBieSB0aGUgc3lzdGVtIGRlc2NyaXB0b3IuIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsInN0cmluZyIsImlkZW50aWZpZXIiXX0se25hbWU6InRhYmxlLWxheW91dCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlVzZSBhbnkgYXV0b21hdGljIHRhYmxlIGxheW91dCBhbGdvcml0aG0uIn0se25hbWU6ImZpeGVkIixkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXhlZCB0YWJsZSBsYXlvdXQgYWxnb3JpdGhtLiJ9XSxzeW50YXg6ImF1dG8gfCBmaXhlZCIscmVsZXZhbmNlOjYwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90YWJsZS1sYXlvdXQifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBhbGdvcml0aG0gdXNlZCB0byBsYXkgb3V0IHRoZSB0YWJsZSBjZWxscywgcm93cywgYW5kIGNvbHVtbnMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0YWItc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjkxIiwiUzciLCJDMjEiLCJPMTUiXSxzeW50YXg6IjxpbnRlZ2VyPiB8IDxsZW5ndGg+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RhYi1zaXplIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSB3aWR0aCBvZiB0aGUgdGFiIGNoYXJhY3RlciAoVSswMDA5KSwgaW4gc3BhY2UgY2hhcmFjdGVycyAoVSswMDIwKSwgd2hlbiByZW5kZXJlZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJsZW5ndGgiXX0se25hbWU6InRleHQtYWxpZ24iLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgbGluZSBib3guIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIGVuZCBlZGdlIG9mIHRoZSBsaW5lIGJveC4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IlRoZSB0ZXh0IGlzIGp1c3RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIG1ldGhvZCBzcGVjaWZpZWQgYnkgdGhlICd0ZXh0LWp1c3RpZnknIHByb3BlcnR5LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ2xlZnQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgc3RhcnQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAncmlnaHQnIGFsaWducyB0byB0aGUgZWRnZSBvZiB0aGUgbGluZSBib3ggdGhhdCB3b3VsZCBiZSB0aGUgZW5kIGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBsaW5lIGJveC4ifV0sc3ludGF4OiJzdGFydCB8IGVuZCB8IGxlZnQgfCByaWdodCB8IGNlbnRlciB8IGp1c3RpZnkgfCBtYXRjaC1wYXJlbnQiLHJlbGV2YW5jZTo5NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyBpbmxpbmUgY29udGVudHMgb2YgYSBibG9jayBhcmUgaG9yaXpvbnRhbGx5IGFsaWduZWQgaWYgdGhlIGNvbnRlbnRzIGRvIG5vdCBjb21wbGV0ZWx5IGZpbGwgdGhlIGxpbmUgYm94LiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIl19LHtuYW1lOiJ0ZXh0LWFsaWduLWxhc3QiLGJyb3dzZXJzOlsiRTEyIiwiRkY0OSIsIkM0NyIsIklFNS41IiwiTzM0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbnRlbnQgb24gdGhlIGFmZmVjdGVkIGxpbmUgaXMgYWxpZ25lZCBwZXIgJ3RleHQtYWxpZ24nIHVubGVzcyAndGV4dC1hbGlnbicgaXMgc2V0IHRvICdqdXN0aWZ5JywgaW4gd2hpY2ggY2FzZSBpdCBpcyAnc3RhcnQtYWxpZ25lZCcuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgbGluZSBib3guIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJUaGUgdGV4dCBpcyBqdXN0aWZpZWQgYWNjb3JkaW5nIHRvIHRoZSBtZXRob2Qgc3BlY2lmaWVkIGJ5IHRoZSAndGV4dC1qdXN0aWZ5JyBwcm9wZXJ0eS4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdsZWZ0JyBhbGlnbnMgdG8gdGhlIGVkZ2Ugb2YgdGhlIGxpbmUgYm94IHRoYXQgd291bGQgYmUgdGhlIHN0YXJ0IGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ3JpZ2h0JyBhbGlnbnMgdG8gdGhlIGVkZ2Ugb2YgdGhlIGxpbmUgYm94IHRoYXQgd291bGQgYmUgdGhlIGVuZCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn1dLHN5bnRheDoiYXV0byB8IHN0YXJ0IHwgZW5kIHwgbGVmdCB8IHJpZ2h0IHwgY2VudGVyIHwganVzdGlmeSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduLWxhc3QifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGxhc3QgbGluZSBvZiBhIGJsb2NrIG9yIGEgbGluZSByaWdodCBiZWZvcmUgYSBmb3JjZWQgbGluZSBicmVhayBpcyBhbGlnbmVkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LWFuY2hvciIsdmFsdWVzOlt7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiVGhlIHJlbmRlcmVkIGNoYXJhY3RlcnMgYXJlIGFsaWduZWQgc3VjaCB0aGF0IHRoZSBlbmQgb2YgdGhlIHJlc3VsdGluZyByZW5kZXJlZCB0ZXh0IGlzIGF0IHRoZSBpbml0aWFsIGN1cnJlbnQgdGV4dCBwb3NpdGlvbi4ifSx7bmFtZToibWlkZGxlIixkZXNjcmlwdGlvbjoiVGhlIHJlbmRlcmVkIGNoYXJhY3RlcnMgYXJlIGFsaWduZWQgc3VjaCB0aGF0IHRoZSBnZW9tZXRyaWMgbWlkZGxlIG9mIHRoZSByZXN1bHRpbmcgcmVuZGVyZWQgdGV4dCBpcyBhdCB0aGUgaW5pdGlhbCBjdXJyZW50IHRleHQgcG9zaXRpb24uIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIHJlbmRlcmVkIGNoYXJhY3RlcnMgYXJlIGFsaWduZWQgc3VjaCB0aGF0IHRoZSBzdGFydCBvZiB0aGUgcmVzdWx0aW5nIHJlbmRlcmVkIHRleHQgaXMgYXQgdGhlIGluaXRpYWwgY3VycmVudCB0ZXh0IHBvc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlVzZWQgdG8gYWxpZ24gKHN0YXJ0LSwgbWlkZGxlLSBvciBlbmQtYWxpZ25tZW50KSBhIHN0cmluZyBvZiB0ZXh0IHJlbGF0aXZlIHRvIGEgZ2l2ZW4gcG9pbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24iLHZhbHVlczpbe25hbWU6ImRhc2hlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZGFzaGVkIGxpbmUgc3R5bGUuIn0se25hbWU6ImRvdHRlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG90dGVkIGxpbmUuIn0se25hbWU6ImRvdWJsZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG91YmxlIGxpbmUuIn0se25hbWU6ImxpbmUtdGhyb3VnaCIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGhhcyBhIGxpbmUgdGhyb3VnaCB0aGUgbWlkZGxlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgbm8gbGluZS4ifSx7bmFtZToib3ZlcmxpbmUiLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBoYXMgYSBsaW5lIGFib3ZlIGl0LiJ9LHtuYW1lOiJzb2xpZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgc29saWQgbGluZS4ifSx7bmFtZToidW5kZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaXMgdW5kZXJsaW5lZC4ifSx7bmFtZToid2F2eSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgd2F2eSBsaW5lLiJ9XSxzeW50YXg6IjwndGV4dC1kZWNvcmF0aW9uLWxpbmUnPiB8fCA8J3RleHQtZGVjb3JhdGlvbi1zdHlsZSc+IHx8IDwndGV4dC1kZWNvcmF0aW9uLWNvbG9yJz4gfHwgPCd0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzJz4iLHJlbGV2YW5jZTo5MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZWNvcmF0aW9ucyBhcHBsaWVkIHRvIGZvbnQgdXNlZCBmb3IgYW4gZWxlbWVudCdzIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiY29sb3IiXX0se25hbWU6InRleHQtZGVjb3JhdGlvbi1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzEyLjEiLCJDNTciLCJPNDQiXSxzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGNvbG9yIG9mIHRleHQgZGVjb3JhdGlvbiAodW5kZXJsaW5lcyBvdmVybGluZXMsIGFuZCBsaW5lLXRocm91Z2hzKSBzZXQgb24gdGhlIGVsZW1lbnQgd2l0aCB0ZXh0LWRlY29yYXRpb24tbGluZS4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24tbGluZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzEyLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJsaW5lLXRocm91Z2giLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBoYXMgYSBsaW5lIHRocm91Z2ggdGhlIG1pZGRsZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5laXRoZXIgcHJvZHVjZXMgbm9yIGluaGliaXRzIHRleHQgZGVjb3JhdGlvbi4ifSx7bmFtZToib3ZlcmxpbmUiLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBoYXMgYSBsaW5lIGFib3ZlIGl0LiJ9LHtuYW1lOiJ1bmRlcmxpbmUiLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBpcyB1bmRlcmxpbmVkLiJ9XSxzeW50YXg6Im5vbmUgfCBbIHVuZGVybGluZSB8fCBvdmVybGluZSB8fCBsaW5lLXRocm91Z2ggfHwgYmxpbmsgXSB8IHNwZWxsaW5nLWVycm9yIHwgZ3JhbW1hci1lcnJvciIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWRlY29yYXRpb24tbGluZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoYXQgbGluZSBkZWNvcmF0aW9ucywgaWYgYW55LCBhcmUgYWRkZWQgdG8gdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24tc3R5bGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiZGFzaGVkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkYXNoZWQgbGluZSBzdHlsZS4ifSx7bmFtZToiZG90dGVkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkb3R0ZWQgbGluZS4ifSx7bmFtZToiZG91YmxlIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkb3VibGUgbGluZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIG5vIGxpbmUuIn0se25hbWU6InNvbGlkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBzb2xpZCBsaW5lLiJ9LHtuYW1lOiJ3YXZ5IixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSB3YXZ5IGxpbmUuIn1dLHN5bnRheDoic29saWQgfCBkb3VibGUgfCBkb3R0ZWQgfCBkYXNoZWQgfCB3YXZ5IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbi1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBsaW5lIHN0eWxlIGZvciB1bmRlcmxpbmUsIGxpbmUtdGhyb3VnaCBhbmQgb3ZlcmxpbmUgdGV4dCBkZWNvcmF0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1pbmRlbnQiLHZhbHVlczpbXSxzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4gJiYgaGFuZ2luZz8gJiYgZWFjaC1saW5lPyIscmVsZXZhbmNlOjY4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWluZGVudCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBpbmRlbnRhdGlvbiBhcHBsaWVkIHRvIGxpbmVzIG9mIGlubGluZSBjb250ZW50IGluIGEgYmxvY2suIFRoZSBpbmRlbnRhdGlvbiBvbmx5IGFmZmVjdHMgdGhlIGZpcnN0IGxpbmUgb2YgaW5saW5lIGNvbnRlbnQgaW4gdGhlIGJsb2NrIHVubGVzcyB0aGUgJ2hhbmdpbmcnIGtleXdvcmQgaXMgc3BlY2lmaWVkLCBpbiB3aGljaCBjYXNlIGl0IGFmZmVjdHMgYWxsIGxpbmVzIGV4Y2VwdCB0aGUgZmlyc3QuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiJ0ZXh0LWp1c3RpZnkiLGJyb3dzZXJzOlsiRTEyIiwiRkY1NSIsIkMzMiIsIklFMTEiLCJPMTkiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIFVBIGRldGVybWluZXMgdGhlIGp1c3RpZmljYXRpb24gYWxnb3JpdGhtIHRvIGZvbGxvdywgYmFzZWQgb24gYSBiYWxhbmNlIGJldHdlZW4gcGVyZm9ybWFuY2UgYW5kIGFkZXF1YXRlIHByZXNlbnRhdGlvbiBxdWFsaXR5LiJ9LHtuYW1lOiJkaXN0cmlidXRlIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGJvdGggYXQgd29yZCBzZXBhcmF0b3JzIGFuZCBhdCBncmFwaGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMgaW4gYWxsIHNjcmlwdHMgZXhjZXB0IHRob3NlIGluIHRoZSBjb25uZWN0ZWQgYW5kIGN1cnNpdmUgZ3JvdXBzLiBUaGlzIHZhbHVlIGlzIHNvbWV0aW1lcyB1c2VkIGluIGUuZy4gSmFwYW5lc2UsIG9mdGVuIHdpdGggdGhlICd0ZXh0LWFsaWduLWxhc3QnIHByb3BlcnR5LiJ9LHtuYW1lOiJkaXN0cmlidXRlLWFsbC1saW5lcyJ9LHtuYW1lOiJpbnRlci1jbHVzdGVyIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGF0IHdvcmQgc2VwYXJhdG9ycyBhbmQgYXQgZ3JhcGhlbWUgY2x1c3RlciBib3VuZGFyaWVzIGluIGNsdXN0ZXJlZCBzY3JpcHRzLiBUaGlzIHZhbHVlIGlzIHR5cGljYWxseSB1c2VkIGZvciBTb3V0aGVhc3QgQXNpYW4gc2NyaXB0cyBzdWNoIGFzIFRoYWkuIn0se25hbWU6ImludGVyLWlkZW9ncmFwaCIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBhdCB3b3JkIHNlcGFyYXRvcnMgYW5kIGF0IGludGVyLWdyYXBoZW1pYyBib3VuZGFyaWVzIGluIHNjcmlwdHMgdGhhdCB1c2Ugbm8gd29yZCBzcGFjZXMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIENKSyBsYW5ndWFnZXMuIn0se25hbWU6ImludGVyLXdvcmQiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYXQgd29yZCBzZXBhcmF0b3JzLiBUaGlzIHZhbHVlIGlzIHR5cGljYWxseSB1c2VkIGZvciBsYW5ndWFnZXMgdGhhdCBzZXBhcmF0ZSB3b3JkcyB1c2luZyBzcGFjZXMsIGxpa2UgRW5nbGlzaCBvciAoc29tZXRpbWVzKSBLb3JlYW4uIn0se25hbWU6Imthc2hpZGEiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBzdHJldGNoZXMgQXJhYmljIGFuZCByZWxhdGVkIHNjcmlwdHMgdGhyb3VnaCB0aGUgdXNlIG9mIGthc2hpZGEgb3Igb3RoZXIgY2FsbGlncmFwaGljIGVsb25nYXRpb24uIn0se25hbWU6Im5ld3NwYXBlciJ9XSxzeW50YXg6ImF1dG8gfCBpbnRlci1jaGFyYWN0ZXIgfCBpbnRlci13b3JkIHwgbm9uZSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWp1c3RpZnkifV0sZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIGp1c3RpZmljYXRpb24gYWxnb3JpdGhtIHVzZWQgd2hlbiAndGV4dC1hbGlnbicgaXMgc2V0IHRvICdqdXN0aWZ5Jy4gVGhlIHByb3BlcnR5IGFwcGxpZXMgdG8gYmxvY2sgY29udGFpbmVycywgYnV0IHRoZSBVQSBtYXkgKGJ1dCBpcyBub3QgcmVxdWlyZWQgdG8pIGFsc28gc3VwcG9ydCBpdCBvbiBpbmxpbmUgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LW9yaWVudGF0aW9uIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTQiLCJDNDgiLCJPMzUiXSx2YWx1ZXM6W3tuYW1lOiJzaWRld2F5cyIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzE0IiwiQzQ4IiwiTzM1Il0sZGVzY3JpcHRpb246IlRoaXMgdmFsdWUgaXMgZXF1aXZhbGVudCB0byAnc2lkZXdheXMtcmlnaHQnIGluICd2ZXJ0aWNhbC1ybCcgd3JpdGluZyBtb2RlIGFuZCBlcXVpdmFsZW50IHRvICdzaWRld2F5cy1sZWZ0JyBpbiAndmVydGljYWwtbHInIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToic2lkZXdheXMtcmlnaHQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxNCIsIkM0OCIsIk8zNSJdLGRlc2NyaXB0aW9uOiJJbiB2ZXJ0aWNhbCB3cml0aW5nIG1vZGVzLCB0aGlzIGNhdXNlcyB0ZXh0IHRvIGJlIHNldCBhcyBpZiBpbiBhIGhvcml6b250YWwgbGF5b3V0LCBidXQgcm90YXRlZCA5MMKwIGNsb2Nrd2lzZS4ifSx7bmFtZToidXByaWdodCIsZGVzY3JpcHRpb246IkluIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMsIGNoYXJhY3RlcnMgZnJvbSBob3Jpem9udGFsLW9ubHkgc2NyaXB0cyBhcmUgcmVuZGVyZWQgdXByaWdodCwgaS5lLiBpbiB0aGVpciBzdGFuZGFyZCBob3Jpem9udGFsIG9yaWVudGF0aW9uLiJ9XSxzeW50YXg6Im1peGVkIHwgdXByaWdodCB8IHNpZGV3YXlzIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtb3JpZW50YXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgb3JpZW50YXRpb24gb2YgdGV4dCB3aXRoaW4gYSBsaW5lLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1vdmVyZmxvdyIsdmFsdWVzOlt7bmFtZToiY2xpcCIsZGVzY3JpcHRpb246IkNsaXAgaW5saW5lIGNvbnRlbnQgdGhhdCBvdmVyZmxvd3MuIENoYXJhY3RlcnMgbWF5IGJlIG9ubHkgcGFydGlhbGx5IHJlbmRlcmVkLiJ9LHtuYW1lOiJlbGxpcHNpcyIsZGVzY3JpcHRpb246IlJlbmRlciBhbiBlbGxpcHNpcyBjaGFyYWN0ZXIgKFUrMjAyNikgdG8gcmVwcmVzZW50IGNsaXBwZWQgaW5saW5lIGNvbnRlbnQuIn1dLHN5bnRheDoiWyBjbGlwIHwgZWxsaXBzaXMgfCA8c3RyaW5nPiBdezEsMn0iLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1vdmVyZmxvdyJ9XSxkZXNjcmlwdGlvbjoiVGV4dCBjYW4gb3ZlcmZsb3cgZm9yIGV4YW1wbGUgd2hlbiBpdCBpcyBwcmV2ZW50ZWQgZnJvbSB3cmFwcGluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJzdHJpbmciXX0se25hbWU6InRleHQtcmVuZGVyaW5nIixicm93c2VyczpbIkU3OSIsIkZGMSIsIlM1IiwiQzQiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Imdlb21ldHJpY1ByZWNpc2lvbiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNoYWxsIGVtcGhhc2l6ZSBnZW9tZXRyaWMgcHJlY2lzaW9uIG92ZXIgbGVnaWJpbGl0eSBhbmQgcmVuZGVyaW5nIHNwZWVkLiJ9LHtuYW1lOiJvcHRpbWl6ZUxlZ2liaWxpdHkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaGFsbCBlbXBoYXNpemUgbGVnaWJpbGl0eSBvdmVyIHJlbmRlcmluZyBzcGVlZCBhbmQgZ2VvbWV0cmljIHByZWNpc2lvbi4ifSx7bmFtZToib3B0aW1pemVTcGVlZCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNoYWxsIGVtcGhhc2l6ZSByZW5kZXJpbmcgc3BlZWQgb3ZlciBsZWdpYmlsaXR5IGFuZCBnZW9tZXRyaWMgcHJlY2lzaW9uLiJ9XSxzeW50YXg6ImF1dG8gfCBvcHRpbWl6ZVNwZWVkIHwgb3B0aW1pemVMZWdpYmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9uIixyZWxldmFuY2U6NzAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtcmVuZGVyaW5nIn1dLGRlc2NyaXB0aW9uOiJUaGUgY3JlYXRvciBvZiBTVkcgY29udGVudCBtaWdodCB3YW50IHRvIHByb3ZpZGUgYSBoaW50IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBhYm91dCB3aGF0IHRyYWRlb2ZmcyB0byBtYWtlIGFzIGl0IHJlbmRlcnMgdGV4dC4gVGhlIOKAmHRleHQtcmVuZGVyaW5n4oCZIHByb3BlcnR5IHByb3ZpZGVzIHRoZXNlIGhpbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1zaGFkb3ciLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBzaGFkb3cuIn1dLHN5bnRheDoibm9uZSB8IDxzaGFkb3ctdD4jIixyZWxldmFuY2U6NzQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtc2hhZG93In1dLGRlc2NyaXB0aW9uOiJFbmFibGVzIHNoYWRvdyBlZmZlY3RzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRleHQgb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJjb2xvciJdfSx7bmFtZToidGV4dC10cmFuc2Zvcm0iLHZhbHVlczpbe25hbWU6ImNhcGl0YWxpemUiLGRlc2NyaXB0aW9uOiJQdXRzIHRoZSBmaXJzdCB0eXBvZ3JhcGhpYyBsZXR0ZXIgdW5pdCBvZiBlYWNoIHdvcmQgaW4gdGl0bGVjYXNlLiJ9LHtuYW1lOiJsb3dlcmNhc2UiLGRlc2NyaXB0aW9uOiJQdXRzIGFsbCBsZXR0ZXJzIGluIGxvd2VyY2FzZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGVmZmVjdHMuIn0se25hbWU6InVwcGVyY2FzZSIsZGVzY3JpcHRpb246IlB1dHMgYWxsIGxldHRlcnMgaW4gdXBwZXJjYXNlLiJ9XSxzeW50YXg6Im5vbmUgfCBjYXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgZnVsbC13aWR0aCB8IGZ1bGwtc2l6ZS1rYW5hIixyZWxldmFuY2U6ODYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtdHJhbnNmb3JtIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyBjYXBpdGFsaXphdGlvbiBlZmZlY3RzIG9mIGFuIGVsZW1lbnTigJlzIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LXVuZGVybGluZS1wb3NpdGlvbiIsdmFsdWVzOlt7bmFtZToiYWJvdmUifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IG1heSB1c2UgYW55IGFsZ29yaXRobSB0byBkZXRlcm1pbmUgdGhlIHVuZGVybGluZeKAmXMgcG9zaXRpb24uIEluIGhvcml6b250YWwgbGluZSBsYXlvdXQsIHRoZSB1bmRlcmxpbmUgc2hvdWxkIGJlIGFsaWduZWQgYXMgZm9yIGFscGhhYmV0aWMuIEluIHZlcnRpY2FsIGxpbmUgbGF5b3V0LCBpZiB0aGUgbGFuZ3VhZ2UgaXMgc2V0IHRvIEphcGFuZXNlIG9yIEtvcmVhbiwgdGhlIHVuZGVybGluZSBzaG91bGQgYmUgYWxpZ25lZCBhcyBmb3Igb3Zlci4ifSx7bmFtZToiYmVsb3ciLGRlc2NyaXB0aW9uOiJUaGUgdW5kZXJsaW5lIGlzIGFsaWduZWQgd2l0aCB0aGUgdW5kZXIgZWRnZSBvZiB0aGUgZWxlbWVudOKAmXMgY29udGVudCBib3guIn1dLHN5bnRheDoiYXV0byB8IGZyb20tZm9udCB8IFsgdW5kZXIgfHwgWyBsZWZ0IHwgcmlnaHQgXSBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtdW5kZXJsaW5lLXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBwb3NpdGlvbiBvZiBhbiB1bmRlcmxpbmUgc3BlY2lmaWVkIG9uIHRoZSBzYW1lIGVsZW1lbnQ6IGl0IGRvZXMgbm90IGFmZmVjdCB1bmRlcmxpbmVzIHNwZWNpZmllZCBieSBhbmNlc3RvciBlbGVtZW50cy4gVGhpcyBwcm9wZXJ0eSBpcyB0eXBpY2FsbHkgdXNlZCBpbiB2ZXJ0aWNhbCB3cml0aW5nIGNvbnRleHRzIHN1Y2ggYXMgaW4gSmFwYW5lc2UgZG9jdW1lbnRzIHdoZXJlIGl0IG9mdGVuIGRlc2lyZWQgdG8gaGF2ZSB0aGUgdW5kZXJsaW5lIGFwcGVhciAnb3ZlcicgKHRvIHRoZSByaWdodCBvZikgdGhlIGFmZmVjdGVkIHJ1biBvZiB0ZXh0IixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0b3AiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdG9wIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZhciBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94J3MgdG9wIG1hcmdpbiBlZGdlIGlzIG9mZnNldCBiZWxvdyB0aGUgdG9wIGVkZ2Ugb2YgdGhlIGJveCdzICdjb250YWluaW5nIGJsb2NrJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InRvdWNoLWFjdGlvbiIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IG1heSBkZXRlcm1pbmUgYW55IHBlcm1pdHRlZCB0b3VjaCBiZWhhdmlvcnMgZm9yIHRvdWNoZXMgdGhhdCBiZWdpbiBvbiB0aGUgZWxlbWVudC4ifSx7bmFtZToiY3Jvc3Mtc2xpZGUteCJ9LHtuYW1lOiJjcm9zcy1zbGlkZS15In0se25hbWU6ImRvdWJsZS10YXAtem9vbSJ9LHtuYW1lOiJtYW5pcHVsYXRpb24iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgY29uc2lkZXIgdG91Y2hlcyB0aGF0IGJlZ2luIG9uIHRoZSBlbGVtZW50IG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZiBzY3JvbGxpbmcgYW5kIGNvbnRpbnVvdXMgem9vbWluZy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRvdWNoZXMgdGhhdCBiZWdpbiBvbiB0aGUgZWxlbWVudCBtdXN0IG5vdCB0cmlnZ2VyIGRlZmF1bHQgdG91Y2ggYmVoYXZpb3JzLiJ9LHtuYW1lOiJwYW4teCIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IG1heSBjb25zaWRlciB0b3VjaGVzIHRoYXQgYmVnaW4gb24gdGhlIGVsZW1lbnQgb25seSBmb3IgdGhlIHB1cnBvc2VzIG9mIGhvcml6b250YWxseSBzY3JvbGxpbmcgdGhlIGVsZW1lbnTigJlzIG5lYXJlc3QgYW5jZXN0b3Igd2l0aCBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZSBjb250ZW50LiJ9LHtuYW1lOiJwYW4teSIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IG1heSBjb25zaWRlciB0b3VjaGVzIHRoYXQgYmVnaW4gb24gdGhlIGVsZW1lbnQgb25seSBmb3IgdGhlIHB1cnBvc2VzIG9mIHZlcnRpY2FsbHkgc2Nyb2xsaW5nIHRoZSBlbGVtZW504oCZcyBuZWFyZXN0IGFuY2VzdG9yIHdpdGggdmVydGljYWxseSBzY3JvbGxhYmxlIGNvbnRlbnQuIn0se25hbWU6InBpbmNoLXpvb20ifV0sc3ludGF4OiJhdXRvIHwgbm9uZSB8IFsgWyBwYW4teCB8IHBhbi1sZWZ0IHwgcGFuLXJpZ2h0IF0gfHwgWyBwYW4teSB8IHBhbi11cCB8IHBhbi1kb3duIF0gfHwgcGluY2gtem9vbSBdIHwgbWFuaXB1bGF0aW9uIixyZWxldmFuY2U6NjcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RvdWNoLWFjdGlvbiJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGV0aGVyIHRvdWNoIGlucHV0IG1heSB0cmlnZ2VyIGRlZmF1bHQgYmVoYXZpb3Igc3VwcGxpZWQgYnkgdXNlciBhZ2VudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRyYW5zZm9ybSIsdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwZXJzcGVjdGl2ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgcGVyc3BlY3RpdmUgcHJvamVjdGlvbiBtYXRyaXguIn0se25hbWU6InJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiB0aGUgcGFyYW1ldGVyIGFib3V0IHRoZSBvcmlnaW4gb2YgdGhlIGVsZW1lbnQsIGFzIGRlZmluZWQgYnkgdGhlIHRyYW5zZm9ybS1vcmlnaW4gcHJvcGVydHkuIn0se25hbWU6InJvdGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2UgM0Qgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiBsYXN0IHBhcmFtZXRlciBhYm91dCB0aGUgW3gseSx6XSBkaXJlY3Rpb24gdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgZmlyc3QgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJyb3RhdGVYKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWCBheGlzLiJ9LHtuYW1lOiJyb3RhdGVZKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWSBheGlzLiJ9LHtuYW1lOiJyb3RhdGVaKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWiBheGlzLiJ9LHtuYW1lOiJzY2FsZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ldIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMiBwYXJhbWV0ZXJzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgcHJvdmlkZWQsIGl0IGlzIHRha2VzIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGZpcnN0LiJ9LHtuYW1lOiJzY2FsZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeSxzel0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAzIHBhcmFtZXRlcnMuIn0se25hbWU6InNjYWxlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3gsMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN4IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3ksMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN5IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbMSwxLHN6XSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ogaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2tldygpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBhbmQgWSBheGVzLiBUaGUgZmlyc3QgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWCBheGlzLiBUaGUgc2Vjb25kIGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFkgYXhpcy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IGdpdmVuIHRoZW4gYSB2YWx1ZSBvZiAwIGlzIHVzZWQgZm9yIHRoZSBZIGFuZ2xlIChpZTogbm8gc2tldyBvbiB0aGUgWSBheGlzKS4ifSx7bmFtZToic2tld1goKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InNrZXdZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBZIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJ0cmFuc2xhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LCB0eV0sIHdoZXJlIHR4IGlzIHRoZSBmaXJzdCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIgYW5kIHR5IGlzIHRoZSBvcHRpb25hbCBzZWNvbmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJ0cmFuc2xhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsdHksdHpdLCB3aXRoIHR4LCB0eSBhbmQgdHogYmVpbmcgdGhlIGZpcnN0LCBzZWNvbmQgYW5kIHRoaXJkIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlcnMgcmVzcGVjdGl2ZWx5LiJ9LHtuYW1lOiJ0cmFuc2xhdGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBYIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWSBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFogZGlyZWN0aW9uLiBOb3RlIHRoYXQgcGVyY2VudGFnZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSB0cmFuc2xhdGVaIHRyYW5zbGF0aW9uLXZhbHVlLCBhbmQgaWYgcHJlc2VudCBhcmUgZXZhbHVhdGVkIGFzIDAuIn1dLHN5bnRheDoibm9uZSB8IDx0cmFuc2Zvcm0tbGlzdD4iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNmb3JtIn1dLGRlc2NyaXB0aW9uOiJBIHR3by1kaW1lbnNpb25hbCB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgdGhyb3VnaCB0aGUgJ3RyYW5zZm9ybScgcHJvcGVydHkuIFRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBsaXN0IG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgc2ltaWxhciB0byB0aG9zZSBhbGxvd2VkIGJ5IFNWRy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRyYW5zZm9ybS1vcmlnaW4iLHN5bnRheDoiWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgdG9wIHwgYm90dG9tIF0gfCBbIFsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IGxlZnQgfCBjZW50ZXIgfCByaWdodCBdICYmIFsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IHRvcCB8IGNlbnRlciB8IGJvdHRvbSBdIF0gPGxlbmd0aD4/IixyZWxldmFuY2U6NzcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybS1vcmlnaW4ifV0sZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gb2YgdHJhbnNmb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InRyYW5zZm9ybS1zdHlsZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDMzYiLCJPMjMiXSx2YWx1ZXM6W3tuYW1lOiJmbGF0IixkZXNjcmlwdGlvbjoiQWxsIGNoaWxkcmVuIG9mIHRoaXMgZWxlbWVudCBhcmUgcmVuZGVyZWQgZmxhdHRlbmVkIGludG8gdGhlIDJEIHBsYW5lIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJwcmVzZXJ2ZS0zZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDMzYiLCJPMjMiXSxkZXNjcmlwdGlvbjoiRmxhdHRlbmluZyBpcyBub3QgcGVyZm9ybWVkLCBzbyBjaGlsZHJlbiBtYWludGFpbiB0aGVpciBwb3NpdGlvbiBpbiAzRCBzcGFjZS4ifV0sc3ludGF4OiJmbGF0IHwgcHJlc2VydmUtM2QiLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNmb3JtLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGhvdyBuZXN0ZWQgZWxlbWVudHMgYXJlIHJlbmRlcmVkIGluIDNEIHNwYWNlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidHJhbnNpdGlvbiIsdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHN5bnRheDoiPHNpbmdsZS10cmFuc2l0aW9uPiMiLHJlbGV2YW5jZTo4OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIGZvdXIgb2YgdGhlIHRyYW5zaXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsInByb3BlcnR5IiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSJdfSx7bmFtZToidHJhbnNpdGlvbi1kZWxheSIsc3ludGF4OiI8dGltZT4jIixyZWxldmFuY2U6NjQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb24tZGVsYXkifV0sZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgdHJhbnNpdGlvbiB3aWxsIHN0YXJ0LiBJdCBhbGxvd3MgYSB0cmFuc2l0aW9uIHRvIGJlZ2luIGV4ZWN1dGlvbiBzb21lIHBlcmlvZCBvZiB0aW1lIGZyb20gd2hlbiBpdCBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToidHJhbnNpdGlvbi1kdXJhdGlvbiIsc3ludGF4OiI8dGltZT4jIixyZWxldmFuY2U6NjQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb24tZHVyYXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgbG9uZyB0aGUgdHJhbnNpdGlvbiBmcm9tIHRoZSBvbGQgdmFsdWUgdG8gdGhlIG5ldyB2YWx1ZSBzaG91bGQgdGFrZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6InRyYW5zaXRpb24tcHJvcGVydHkiLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxzeW50YXg6Im5vbmUgfCA8c2luZ2xlLXRyYW5zaXRpb24tcHJvcGVydHk+IyIscmVsZXZhbmNlOjY0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uLXByb3BlcnR5In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIENTUyBwcm9wZXJ0eSB0byB3aGljaCB0aGUgdHJhbnNpdGlvbiBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsicHJvcGVydHkiXX0se25hbWU6InRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIixzeW50YXg6IjxlYXNpbmctZnVuY3Rpb24+IyIscmVsZXZhbmNlOjY0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyB1c2VkIGR1cmluZyBhIHRyYW5zaXRpb24gd2lsbCBiZSBjYWxjdWxhdGVkLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiJ1bmljb2RlLWJpZGkiLHZhbHVlczpbe25hbWU6ImJpZGktb3ZlcnJpZGUiLGRlc2NyaXB0aW9uOiJJbnNpZGUgdGhlIGVsZW1lbnQsIHJlb3JkZXJpbmcgaXMgc3RyaWN0bHkgaW4gc2VxdWVuY2UgYWNjb3JkaW5nIHRvIHRoZSAnZGlyZWN0aW9uJyBwcm9wZXJ0eTsgdGhlIGltcGxpY2l0IHBhcnQgb2YgdGhlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtIGlzIGlnbm9yZWQuIn0se25hbWU6ImVtYmVkIixkZXNjcmlwdGlvbjoiSWYgdGhlIGVsZW1lbnQgaXMgaW5saW5lLWxldmVsLCB0aGlzIHZhbHVlIG9wZW5zIGFuIGFkZGl0aW9uYWwgbGV2ZWwgb2YgZW1iZWRkaW5nIHdpdGggcmVzcGVjdCB0byB0aGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0uIFRoZSBkaXJlY3Rpb24gb2YgdGhpcyBlbWJlZGRpbmcgbGV2ZWwgaXMgZ2l2ZW4gYnkgdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5LiJ9LHtuYW1lOiJpc29sYXRlIixkZXNjcmlwdGlvbjoiVGhlIGNvbnRlbnRzIG9mIHRoZSBlbGVtZW50IGFyZSBjb25zaWRlcmVkIHRvIGJlIGluc2lkZSBhIHNlcGFyYXRlLCBpbmRlcGVuZGVudCBwYXJhZ3JhcGguIn0se25hbWU6Imlzb2xhdGUtb3ZlcnJpZGUiLGRlc2NyaXB0aW9uOiJUaGlzIGNvbWJpbmVzIHRoZSBpc29sYXRpb24gYmVoYXZpb3Igb2YgJ2lzb2xhdGUnIHdpdGggdGhlIGRpcmVjdGlvbmFsIG92ZXJyaWRlIGJlaGF2aW9yIG9mICdiaWRpLW92ZXJyaWRlJyJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBkb2VzIG5vdCBvcGVuIGFuIGFkZGl0aW9uYWwgbGV2ZWwgb2YgZW1iZWRkaW5nIHdpdGggcmVzcGVjdCB0byB0aGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0uIEZvciBpbmxpbmUtbGV2ZWwgZWxlbWVudHMsIGltcGxpY2l0IHJlb3JkZXJpbmcgd29ya3MgYWNyb3NzIGVsZW1lbnQgYm91bmRhcmllcy4ifSx7bmFtZToicGxhaW50ZXh0IixkZXNjcmlwdGlvbjoiRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUgVW5pY29kZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobSwgdGhlIGJhc2UgZGlyZWN0aW9uYWxpdHkgb2YgZWFjaCBiaWRpIHBhcmFncmFwaCBmb3Igd2hpY2ggdGhlIGVsZW1lbnQgZm9ybXMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgZGV0ZXJtaW5lZCBub3QgYnkgdGhlIGVsZW1lbnQncyBjb21wdXRlZCAnZGlyZWN0aW9uJy4ifV0sc3ludGF4OiJub3JtYWwgfCBlbWJlZCB8IGlzb2xhdGUgfCBiaWRpLW92ZXJyaWRlIHwgaXNvbGF0ZS1vdmVycmlkZSB8IHBsYWludGV4dCIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy91bmljb2RlLWJpZGkifV0sZGVzY3JpcHRpb246IlRoZSBsZXZlbCBvZiBlbWJlZGRpbmcgd2l0aCByZXNwZWN0IHRvIHRoZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InVuaWNvZGUtcmFuZ2UiLHZhbHVlczpbe25hbWU6IlUrMjYiLGRlc2NyaXB0aW9uOiJBbXBlcnNhbmQuIn0se25hbWU6IlUrMjAtMjRGLCBVKzJCMC0yRkYsIFUrMzcwLTRGRiwgVSsxRTAwLTFFRkYsIFUrMjAwMC0yMENGLCBVKzIxMDAtMjNGRiwgVSsyNTAwLTI2RkYsIFUrRTAwMC1GOEZGLCBVK0ZCMDDigJNGQjRGIixkZXNjcmlwdGlvbjoiV0dMNCBjaGFyYWN0ZXIgc2V0IChQYW4tRXVyb3BlYW4pLiJ9LHtuYW1lOiJVKzIwLTE3RiwgVSsyQjAtMkZGLCBVKzIwMDAtMjA2RiwgVSsyMEEwLTIwQ0YsIFUrMjEwMC0yMUZGLCBVKzI2MDAtMjZGRiIsZGVzY3JpcHRpb246IlRoZSBNdWx0aWxpbmd1YWwgRXVyb3BlYW4gU3Vic2V0IE5vLiAxLiBMYXRpbi4gQ292ZXJzIH40NCBsYW5ndWFnZXMuIn0se25hbWU6IlUrMjAtMkZGLCBVKzM3MC00RkYsIFUrMUUwMC0yMENGLCBVKzIxMDAtMjNGRiwgVSsyNTAwLTI2RkYsIFUrRkIwMC1GQjRGLCBVK0ZGRjAtRkZGRCIsZGVzY3JpcHRpb246IlRoZSBNdWx0aWxpbmd1YWwgRXVyb3BlYW4gU3Vic2V0IE5vLiAyLiBMYXRpbiwgR3JlZWssIGFuZCBDeXJpbGxpYy4gQ292ZXJzIH4xMjggbGFuZ3VhZ2UuIn0se25hbWU6IlUrMjAtNEZGLCBVKzUzMC01OEYsIFUrMTBEMC0xMEZGLCBVKzFFMDAtMjNGRiwgVSsyNDQwLTI0NUYsIFUrMjUwMC0yNkZGLCBVK0ZCMDAtRkI0RiwgVStGRTIwLUZFMkYsIFUrRkZGMC1GRkZEIixkZXNjcmlwdGlvbjoiVGhlIE11bHRpbGluZ3VhbCBFdXJvcGVhbiBTdWJzZXQgTm8uIDMuIENvdmVycyBhbGwgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gRXVyb3BlYW4gc2NyaXB0cy4ifSx7bmFtZToiVSswMC03RiIsZGVzY3JpcHRpb246IkJhc2ljIExhdGluIChBU0NJSSkuIn0se25hbWU6IlUrODAtRkYiLGRlc2NyaXB0aW9uOiJMYXRpbi0xIFN1cHBsZW1lbnQuIEFjY2VudGVkIGNoYXJhY3RlcnMgZm9yIFdlc3Rlcm4gRXVyb3BlYW4gbGFuZ3VhZ2VzLCBjb21tb24gcHVuY3R1YXRpb24gY2hhcmFjdGVycywgbXVsdGlwbGljYXRpb24gYW5kIGRpdmlzaW9uIHNpZ25zLiJ9LHtuYW1lOiJVKzEwMC0xN0YiLGRlc2NyaXB0aW9uOiJMYXRpbiBFeHRlbmRlZC1BLiBBY2NlbnRlZCBjaGFyYWN0ZXJzIGZvciBmb3IgQ3plY2gsIER1dGNoLCBQb2xpc2gsIGFuZCBUdXJraXNoLiJ9LHtuYW1lOiJVKzE4MC0yNEYiLGRlc2NyaXB0aW9uOiJMYXRpbiBFeHRlbmRlZC1CLiBDcm9hdGlhbiwgU2xvdmVuaWFuLCBSb21hbmlhbiwgTm9uLUV1cm9wZWFuIGFuZCBoaXN0b3JpYyBsYXRpbiwgS2hvaXNhbiwgUGlueWluLCBMaXZvbmlhbiwgU2lub2xvZ3kuIn0se25hbWU6IlUrMUUwMC0xRUZGIixkZXNjcmlwdGlvbjoiTGF0aW4gRXh0ZW5kZWQgQWRkaXRpb25hbC4gVmlldG5hbWVzZSwgR2VybWFuIGNhcHRpYWwgc2hhcnAgcywgTWVkaWV2YWxpc3QsIExhdGluIGdlbmVyYWwgdXNlLiJ9LHtuYW1lOiJVKzI1MC0yQUYiLGRlc2NyaXB0aW9uOiJJbnRlcm5hdGlvbmFsIFBob25ldGljIEFscGhhYmV0IEV4dGVuc2lvbnMuIn0se25hbWU6IlUrMzcwLTNGRiIsZGVzY3JpcHRpb246IkdyZWVrIGFuZCBDb3B0aWMuIn0se25hbWU6IlUrMUYwMC0xRkZGIixkZXNjcmlwdGlvbjoiR3JlZWsgRXh0ZW5kZWQuIEFjY2VudGVkIGNoYXJhY3RlcnMgZm9yIHBvbHl0b25pYyBHcmVlay4ifSx7bmFtZToiVSs0MDAtNEZGIixkZXNjcmlwdGlvbjoiQ3lyaWxsaWMuIn0se25hbWU6IlUrNTAwLTUyRiIsZGVzY3JpcHRpb246IkN5cmlsbGljIFN1cHBsZW1lbnQuIEV4dHJhIGxldHRlcnMgZm9yIEtvbWksIEtoYW50eSwgQ2h1a2NoaSwgTW9yZHZpbiwgS3VyZGlzaCwgQWxldXQsIENodXZhc2gsIEFia2hheiwgQXplcmJhaWphbmksIGFuZCBPcm9rLiJ9LHtuYW1lOiJVKzAwLTUyRiwgVSsxRTAwLTFGRkYsIFUrMjIwMOKAkzIyRkYiLGRlc2NyaXB0aW9uOiJMYXRpbiwgR3JlZWssIEN5cmlsbGljLCBzb21lIHB1bmN0dWF0aW9uIGFuZCBzeW1ib2xzLiJ9LHtuYW1lOiJVKzUzMOKAkzU4RiIsZGVzY3JpcHRpb246IkFybWVuaWFuLiJ9LHtuYW1lOiJVKzU5MOKAkzVGRiIsZGVzY3JpcHRpb246IkhlYnJldy4ifSx7bmFtZToiVSs2MDDigJM2RkYiLGRlc2NyaXB0aW9uOiJBcmFiaWMuIn0se25hbWU6IlUrNzUw4oCTNzdGIixkZXNjcmlwdGlvbjoiQXJhYmljIFN1cHBsZW1lbnQuIEFkZGl0aW9uYWwgbGV0dGVycyBmb3IgQWZyaWNhbiBsYW5ndWFnZXMsIEtob3dhciwgVG9yd2FsaSwgQnVydXNoYXNraSwgYW5kIGVhcmx5IFBlcnNpYW4uIn0se25hbWU6IlUrOEEw4oCTOEZGIixkZXNjcmlwdGlvbjoiQXJhYmljIEV4dGVuZGVkLUEuIEFkZGl0aW9uYWwgbGV0dGVycyBmb3IgQWZyaWNhbiBsYW5ndWFnZXMsIEV1cm9wZWFuIGFuZCBDZW50cmFsIEFzaWFuIGxhbmd1YWdlcywgUm9oaW5neWEsIFRhbWF6aWdodCwgQXJ3aSwgYW5kIEtvcmFuaWMgYW5ub3RhdGlvbiBzaWducy4ifSx7bmFtZToiVSs3MDDigJM3NEYiLGRlc2NyaXB0aW9uOiJTeXJpYWMuIn0se25hbWU6IlUrOTAw4oCTOTdGIixkZXNjcmlwdGlvbjoiRGV2YW5hZ2FyaS4ifSx7bmFtZToiVSs5ODDigJM5RkYiLGRlc2NyaXB0aW9uOiJCZW5nYWxpLiJ9LHtuYW1lOiJVK0EwMOKAk0E3RiIsZGVzY3JpcHRpb246Ikd1cm11a2hpLiJ9LHtuYW1lOiJVK0E4MOKAk0FGRiIsZGVzY3JpcHRpb246Ikd1amFyYXRpLiJ9LHtuYW1lOiJVK0IwMOKAk0I3RiIsZGVzY3JpcHRpb246Ik9yaXlhLiJ9LHtuYW1lOiJVK0I4MOKAk0JGRiIsZGVzY3JpcHRpb246IlRhbWlsLiJ9LHtuYW1lOiJVK0MwMOKAk0M3RiIsZGVzY3JpcHRpb246IlRlbHVndS4ifSx7bmFtZToiVStDODDigJNDRkYiLGRlc2NyaXB0aW9uOiJLYW5uYWRhLiJ9LHtuYW1lOiJVK0QwMOKAk0Q3RiIsZGVzY3JpcHRpb246Ik1hbGF5YWxhbS4ifSx7bmFtZToiVStEODDigJNERkYiLGRlc2NyaXB0aW9uOiJTaW5oYWxhLiJ9LHtuYW1lOiJVKzExOEEw4oCTMTE4RkYiLGRlc2NyaXB0aW9uOiJXYXJhbmcgQ2l0aS4ifSx7bmFtZToiVStFMDDigJNFN0YiLGRlc2NyaXB0aW9uOiJUaGFpLiJ9LHtuYW1lOiJVKzFBMjDigJMxQUFGIixkZXNjcmlwdGlvbjoiVGFpIFRoYW0uIn0se25hbWU6IlUrQUE4MOKAk0FBREYiLGRlc2NyaXB0aW9uOiJUYWkgVmlldC4ifSx7bmFtZToiVStFODDigJNFRkYiLGRlc2NyaXB0aW9uOiJMYW8uIn0se25hbWU6IlUrRjAw4oCTRkZGIixkZXNjcmlwdGlvbjoiVGliZXRhbi4ifSx7bmFtZToiVSsxMDAw4oCTMTA5RiIsZGVzY3JpcHRpb246Ik15YW5tYXIgKEJ1cm1lc2UpLiJ9LHtuYW1lOiJVKzEwQTDigJMxMEZGIixkZXNjcmlwdGlvbjoiR2VvcmdpYW4uIn0se25hbWU6IlUrMTIwMOKAkzEzN0YiLGRlc2NyaXB0aW9uOiJFdGhpb3BpYy4ifSx7bmFtZToiVSsxMzgw4oCTMTM5RiIsZGVzY3JpcHRpb246IkV0aGlvcGljIFN1cHBsZW1lbnQuIEV4dHJhIFN5bGxhYmxlcyBmb3IgU2ViYXRiZWl0LCBhbmQgVG9uYWwgbWFya3MifSx7bmFtZToiVSsyRDgw4oCTMkRERiIsZGVzY3JpcHRpb246IkV0aGlvcGljIEV4dGVuZGVkLiBFeHRyYSBTeWxsYWJsZXMgZm9yIE1lJ2VuLCBCbGluLCBhbmQgU2ViYXRiZWl0LiJ9LHtuYW1lOiJVK0FCMDDigJNBQjJGIixkZXNjcmlwdGlvbjoiRXRoaW9waWMgRXh0ZW5kZWQtQS4gRXh0cmEgY2hhcmFjdGVycyBmb3IgR2Ftby1Hb2ZhLURhd3JvLCBCYXNrZXRvLCBhbmQgR3VtdXouIn0se25hbWU6IlUrMTc4MOKAkzE3RkYiLGRlc2NyaXB0aW9uOiJLaG1lci4ifSx7bmFtZToiVSsxODAw4oCTMThBRiIsZGVzY3JpcHRpb246Ik1vbmdvbGlhbi4ifSx7bmFtZToiVSsxQjgw4oCTMUJCRiIsZGVzY3JpcHRpb246IlN1bmRhbmVzZS4ifSx7bmFtZToiVSsxQ0Mw4oCTMUNDRiIsZGVzY3JpcHRpb246IlN1bmRhbmVzZSBTdXBwbGVtZW50LiBQdW5jdHVhdGlvbi4ifSx7bmFtZToiVSs0RTAw4oCTOUZENSIsZGVzY3JpcHRpb246IkNKSyAoQ2hpbmVzZSwgSmFwYW5lc2UsIEtvcmVhbikgVW5pZmllZCBJZGVvZ3JhcGhzLiBNb3N0IGNvbW1vbiBpZGVvZ3JhcGhzIGZvciBtb2Rlcm4gQ2hpbmVzZSBhbmQgSmFwYW5lc2UuIn0se25hbWU6IlUrMzQwMOKAkzREQjUiLGRlc2NyaXB0aW9uOiJDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBBLiBSYXJlIGlkZW9ncmFwaHMuIn0se25hbWU6IlUrMkYwMOKAkzJGREYiLGRlc2NyaXB0aW9uOiJLYW5neGkgUmFkaWNhbHMuIn0se25hbWU6IlUrMkU4MOKAkzJFRkYiLGRlc2NyaXB0aW9uOiJDSksgUmFkaWNhbHMgU3VwcGxlbWVudC4gQWx0ZXJuYXRpdmUgZm9ybXMgb2YgS2FuZ3hpIFJhZGljYWxzLiJ9LHtuYW1lOiJVKzExMDDigJMxMUZGIixkZXNjcmlwdGlvbjoiSGFuZ3VsIEphbW8uIn0se25hbWU6IlUrQUMwMOKAk0Q3QUYiLGRlc2NyaXB0aW9uOiJIYW5ndWwgU3lsbGFibGVzLiJ9LHtuYW1lOiJVKzMwNDDigJMzMDlGIixkZXNjcmlwdGlvbjoiSGlyYWdhbmEuIn0se25hbWU6IlUrMzBBMOKAkzMwRkYiLGRlc2NyaXB0aW9uOiJLYXRha2FuYS4ifSx7bmFtZToiVStBNSwgVSs0RTAwLTlGRkYsIFUrMzA/PywgVStGRjAwLUZGOUYiLGRlc2NyaXB0aW9uOiJKYXBhbmVzZSBLYW5qaSwgSGlyYWdhbmEgYW5kIEthdGFrYW5hIGNoYXJhY3RlcnMgcGx1cyBZZW4vWXVhbiBzeW1ib2wuIn0se25hbWU6IlUrQTREMOKAk0E0RkYiLGRlc2NyaXB0aW9uOiJMaXN1LiJ9LHtuYW1lOiJVK0EwMDDigJNBNDhGIixkZXNjcmlwdGlvbjoiWWkgU3lsbGFibGVzLiJ9LHtuYW1lOiJVK0E0OTDigJNBNENGIixkZXNjcmlwdGlvbjoiWWkgUmFkaWNhbHMuIn0se25hbWU6IlUrMjAwMC0yMDZGIixkZXNjcmlwdGlvbjoiR2VuZXJhbCBQdW5jdHVhdGlvbi4ifSx7bmFtZToiVSszMDAw4oCTMzAzRiIsZGVzY3JpcHRpb246IkNKSyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvbi4ifSx7bmFtZToiVSsyMDcw4oCTMjA5RiIsZGVzY3JpcHRpb246IlN1cGVyc2NyaXB0cyBhbmQgU3Vic2NyaXB0cy4ifSx7bmFtZToiVSsyMEEw4oCTMjBDRiIsZGVzY3JpcHRpb246IkN1cnJlbmN5IFN5bWJvbHMuIn0se25hbWU6IlUrMjEwMOKAkzIxNEYiLGRlc2NyaXB0aW9uOiJMZXR0ZXJsaWtlIFN5bWJvbHMuIn0se25hbWU6IlUrMjE1MOKAkzIxOEYiLGRlc2NyaXB0aW9uOiJOdW1iZXIgRm9ybXMuIn0se25hbWU6IlUrMjE5MOKAkzIxRkYiLGRlc2NyaXB0aW9uOiJBcnJvd3MuIn0se25hbWU6IlUrMjIwMOKAkzIyRkYiLGRlc2NyaXB0aW9uOiJNYXRoZW1hdGljYWwgT3BlcmF0b3JzLiJ9LHtuYW1lOiJVKzIzMDDigJMyM0ZGIixkZXNjcmlwdGlvbjoiTWlzY2VsbGFuZW91cyBUZWNobmljYWwuIn0se25hbWU6IlUrRTAwMC1GOEZGIixkZXNjcmlwdGlvbjoiUHJpdmF0ZSBVc2UgQXJlYS4ifSx7bmFtZToiVStGQjAw4oCTRkI0RiIsZGVzY3JpcHRpb246IkFscGhhYmV0aWMgUHJlc2VudGF0aW9uIEZvcm1zLiBMaWdhdHVyZXMgZm9yIGxhdGluLCBBcm1lbmlhbiwgYW5kIEhlYnJldy4ifSx7bmFtZToiVStGQjUw4oCTRkRGRiIsZGVzY3JpcHRpb246IkFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQS4gQ29udGV4dHVhbCBmb3JtcyAvIGxpZ2F0dXJlcyBmb3IgUGVyc2lhbiwgVXJkdSwgU2luZGhpLCBDZW50cmFsIEFzaWFuIGxhbmd1YWdlcywgZXRjLCBBcmFiaWMgcGVkYWdvZ2ljYWwgc3ltYm9scywgd29yZCBsaWdhdHVyZXMuIn0se25hbWU6IlUrMUY2MDDigJMxRjY0RiIsZGVzY3JpcHRpb246IkVtb2ppOiBFbW90aWNvbnMuIn0se25hbWU6IlUrMjYwMOKAkzI2RkYiLGRlc2NyaXB0aW9uOiJFbW9qaTogTWlzY2VsbGFuZW91cyBTeW1ib2xzLiJ9LHtuYW1lOiJVKzFGMzAw4oCTMUY1RkYiLGRlc2NyaXB0aW9uOiJFbW9qaTogTWlzY2VsbGFuZW91cyBTeW1ib2xzIGFuZCBQaWN0b2dyYXBocy4ifSx7bmFtZToiVSsxRjkwMOKAkzFGOUZGIixkZXNjcmlwdGlvbjoiRW1vamk6IFN1cHBsZW1lbnRhbCBTeW1ib2xzIGFuZCBQaWN0b2dyYXBocy4ifSx7bmFtZToiVSsxRjY4MOKAkzFGNkZGIixkZXNjcmlwdGlvbjoiRW1vamk6IFRyYW5zcG9ydCBhbmQgTWFwIFN5bWJvbHMuIn1dLHN5bnRheDoiPHVuaWNvZGUtcmFuZ2U+IyIscmVsZXZhbmNlOjczLGRlc2NyaXB0aW9uOiJAZm9udC1mYWNlIGRlc2NyaXB0b3IuIERlZmluZXMgdGhlIHNldCBvZiBVbmljb2RlIGNvZGVwb2ludHMgdGhhdCBtYXkgYmUgc3VwcG9ydGVkIGJ5IHRoZSBmb250IGZhY2UgZm9yIHdoaWNoIGl0IGlzIGRlY2xhcmVkLiIscmVzdHJpY3Rpb25zOlsidW5pY29kZS1yYW5nZSJdfSx7bmFtZToidXNlci1zZWxlY3QiLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IlRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IG11c3QgYmUgc2VsZWN0ZWQgYXRvbWljYWxseSJ9LHtuYW1lOiJhdXRvIn0se25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJVQXMgbXVzdCBub3QgYWxsb3cgYSBzZWxlY3Rpb24gd2hpY2ggaXMgc3RhcnRlZCBpbiB0aGlzIGVsZW1lbnQgdG8gYmUgZXh0ZW5kZWQgb3V0c2lkZSBvZiB0aGlzIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgVUEgbXVzdCBub3QgYWxsb3cgc2VsZWN0aW9ucyB0byBiZSBzdGFydGVkIGluIHRoaXMgZWxlbWVudC4ifSx7bmFtZToidGV4dCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGltcG9zZXMgbm8gY29uc3RyYWludCBvbiB0aGUgc2VsZWN0aW9uLiJ9XSxzeW50YXg6ImF1dG8gfCB0ZXh0IHwgbm9uZSB8IGNvbnRhaW4gfCBhbGwiLHJlbGV2YW5jZTo3OCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdXNlci1zZWxlY3QifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBhcHBlYXJhbmNlIG9mIHNlbGVjdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InZlcnRpY2FsLWFsaWduIix2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlIGRvbWluYW50IGJhc2VsaW5lIG9mIHRoZSBwYXJlbnQgYm94IHdpdGggdGhlIGVxdWl2YWxlbnQsIG9yIGhldXJpc3RpY2FsbHkgcmVjb25zdHJ1Y3RlZCwgYmFzZWxpbmUgb2YgdGhlIGVsZW1lbnQgaW5saW5lIGJveC4ifSx7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJBbGlnbiB0aGUgJ2FscGhhYmV0aWMnIGJhc2VsaW5lIG9mIHRoZSBlbGVtZW50IHdpdGggdGhlICdhbHBoYWJldGljJyBiYXNlbGluZSBvZiB0aGUgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6ImJvdHRvbSIsZGVzY3JpcHRpb246IkFsaWduIHRoZSBhZnRlciBlZGdlIG9mIHRoZSBleHRlbmRlZCBpbmxpbmUgYm94IHdpdGggdGhlIGFmdGVyLWVkZ2Ugb2YgdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJtaWRkbGUiLGRlc2NyaXB0aW9uOiJBbGlnbiB0aGUgJ21pZGRsZScgYmFzZWxpbmUgb2YgdGhlIGlubGluZSBlbGVtZW50IHdpdGggdGhlIG1pZGRsZSBiYXNlbGluZSBvZiB0aGUgcGFyZW50LiJ9LHtuYW1lOiJzdWIiLGRlc2NyaXB0aW9uOiJMb3dlciB0aGUgYmFzZWxpbmUgb2YgdGhlIGJveCB0byB0aGUgcHJvcGVyIHBvc2l0aW9uIGZvciBzdWJzY3JpcHRzIG9mIHRoZSBwYXJlbnQncyBib3guIChUaGlzIHZhbHVlIGhhcyBubyBlZmZlY3Qgb24gdGhlIGZvbnQgc2l6ZSBvZiB0aGUgZWxlbWVudCdzIHRleHQuKSJ9LHtuYW1lOiJzdXBlciIsZGVzY3JpcHRpb246IlJhaXNlIHRoZSBiYXNlbGluZSBvZiB0aGUgYm94IHRvIHRoZSBwcm9wZXIgcG9zaXRpb24gZm9yIHN1cGVyc2NyaXB0cyBvZiB0aGUgcGFyZW50J3MgYm94LiAoVGhpcyB2YWx1ZSBoYXMgbm8gZWZmZWN0IG9uIHRoZSBmb250IHNpemUgb2YgdGhlIGVsZW1lbnQncyB0ZXh0LikifSx7bmFtZToidGV4dC1ib3R0b20iLGRlc2NyaXB0aW9uOiJBbGlnbiB0aGUgYm90dG9tIG9mIHRoZSBib3ggd2l0aCB0aGUgYWZ0ZXItZWRnZSBvZiB0aGUgcGFyZW50IGVsZW1lbnQncyBmb250LiJ9LHtuYW1lOiJ0ZXh0LXRvcCIsZGVzY3JpcHRpb246IkFsaWduIHRoZSB0b3Agb2YgdGhlIGJveCB3aXRoIHRoZSBiZWZvcmUtZWRnZSBvZiB0aGUgcGFyZW50IGVsZW1lbnQncyBmb250LiJ9LHtuYW1lOiJ0b3AiLGRlc2NyaXB0aW9uOiJBbGlnbiB0aGUgYmVmb3JlIGVkZ2Ugb2YgdGhlIGV4dGVuZGVkIGlubGluZSBib3ggd2l0aCB0aGUgYmVmb3JlLWVkZ2Ugb2YgdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiItd2Via2l0LWJhc2VsaW5lLW1pZGRsZSJ9XSxzeW50YXg6ImJhc2VsaW5lIHwgc3ViIHwgc3VwZXIgfCB0ZXh0LXRvcCB8IHRleHQtYm90dG9tIHwgbWlkZGxlIHwgdG9wIHwgYm90dG9tIHwgPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4iLHJlbGV2YW5jZTo5MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdmVydGljYWwtYWxpZ24ifV0sZGVzY3JpcHRpb246IkFmZmVjdHMgdGhlIHZlcnRpY2FsIHBvc2l0aW9uaW5nIG9mIHRoZSBpbmxpbmUgYm94ZXMgZ2VuZXJhdGVkIGJ5IGFuIGlubGluZS1sZXZlbCBlbGVtZW50IGluc2lkZSBhIGxpbmUgYm94LiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToidmlzaWJpbGl0eSIsdmFsdWVzOlt7bmFtZToiY29sbGFwc2UiLGRlc2NyaXB0aW9uOiJUYWJsZS1zcGVjaWZpYy4gSWYgdXNlZCBvbiBlbGVtZW50cyBvdGhlciB0aGFuIHJvd3MsIHJvdyBncm91cHMsIGNvbHVtbnMsIG9yIGNvbHVtbiBncm91cHMsICdjb2xsYXBzZScgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgJ2hpZGRlbicuIn0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IlRoZSBnZW5lcmF0ZWQgYm94IGlzIGludmlzaWJsZSAoZnVsbHkgdHJhbnNwYXJlbnQsIG5vdGhpbmcgaXMgZHJhd24pLCBidXQgc3RpbGwgYWZmZWN0cyBsYXlvdXQuIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJUaGUgZ2VuZXJhdGVkIGJveCBpcyB2aXNpYmxlLiJ9XSxzeW50YXg6InZpc2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZSIscmVsZXZhbmNlOjg4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy92aXNpYmlsaXR5In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgYm94ZXMgZ2VuZXJhdGVkIGJ5IGFuIGVsZW1lbnQgYXJlIHJlbmRlcmVkLiBJbnZpc2libGUgYm94ZXMgc3RpbGwgYWZmZWN0IGxheW91dCAoc2V0IHRoZSDigJhkaXNwbGF54oCZIHByb3BlcnR5IHRvIOKAmG5vbmXigJkgdG8gc3VwcHJlc3MgYm94IGdlbmVyYXRpb24gYWx0b2dldGhlcikuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIHNpeCBvZiB0aGUgYW5pbWF0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJlbnVtIiwidGltaW5nLWZ1bmN0aW9uIiwiaWRlbnRpZmllciIsIm51bWJlciJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tZGVsYXkiLGJyb3dzZXJzOlsiQyIsIlM1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIGFuaW1hdGlvbiB3aWxsIHN0YXJ0LiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFuaW1hdGlvbiBzaG91bGQgcGxheSBpbiByZXZlcnNlIG9uIGFsdGVybmF0ZSBjeWNsZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGxlbmd0aCBvZiB0aW1lIHRoYXQgYW4gYW5pbWF0aW9uIHRha2VzIHRvIGNvbXBsZXRlIG9uZSBjeWNsZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZSIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZXJlIGlzIG5vIGNoYW5nZSB0byB0aGUgcHJvcGVydHkgdmFsdWUgYmV0d2VlbiB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGlzIGFwcGxpZWQgYW5kIHRoZSB0aW1lIHRoZSBhbmltYXRpb24gYmVnaW5zIHBsYXlpbmcgb3IgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGF0IHZhbHVlcyBhcmUgYXBwbGllZCBieSB0aGUgYW5pbWF0aW9uIG91dHNpZGUgdGhlIHRpbWUgaXQgaXMgZXhlY3V0aW5nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGFuIGFuaW1hdGlvbiBjeWNsZSBpcyBwbGF5ZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG9uZSwgbWVhbmluZyB0aGUgYW5pbWF0aW9uIHdpbGwgcGxheSBmcm9tIGJlZ2lubmluZyB0byBlbmQgb25jZS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLW5hbWUiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgbGlzdCBvZiBhbmltYXRpb25zIHRoYXQgYXBwbHkuIEVhY2ggbmFtZSBpcyB1c2VkIHRvIHNlbGVjdCB0aGUga2V5ZnJhbWUgYXQtcnVsZSB0aGF0IHByb3ZpZGVzIHRoZSBwcm9wZXJ0eSB2YWx1ZXMgZm9yIHRoZSBhbmltYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tcGxheS1zdGF0ZSIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJwYXVzZWQiLGRlc2NyaXB0aW9uOiJBIHJ1bm5pbmcgYW5pbWF0aW9uIHdpbGwgYmUgcGF1c2VkLiJ9LHtuYW1lOiJydW5uaW5nIixkZXNjcmlwdGlvbjoiUmVzdW1lIHBsYXliYWNrIG9mIGEgcGF1c2VkIGFuaW1hdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5nIG9yIHBhdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGFuaW1hdGlvbiB3aWxsIHByb2dyZXNzIG92ZXIgb25lIGN5Y2xlIG9mIGl0cyBkdXJhdGlvbi4gU2VlIHRoZSAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiItd2Via2l0LWFwcGVhcmFuY2UiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYnV0dG9uIn0se25hbWU6ImJ1dHRvbi1iZXZlbCJ9LHtuYW1lOiJjYXBzLWxvY2staW5kaWNhdG9yIn0se25hbWU6ImNhcmV0In0se25hbWU6ImNoZWNrYm94In0se25hbWU6ImRlZmF1bHQtYnV0dG9uIn0se25hbWU6Imxpc3Rib3gifSx7bmFtZToibGlzdGl0ZW0ifSx7bmFtZToibWVkaWEtZnVsbHNjcmVlbi1idXR0b24ifSx7bmFtZToibWVkaWEtbXV0ZS1idXR0b24ifSx7bmFtZToibWVkaWEtcGxheS1idXR0b24ifSx7bmFtZToibWVkaWEtc2Vlay1iYWNrLWJ1dHRvbiJ9LHtuYW1lOiJtZWRpYS1zZWVrLWZvcndhcmQtYnV0dG9uIn0se25hbWU6Im1lZGlhLXNsaWRlciJ9LHtuYW1lOiJtZWRpYS1zbGlkZXJ0aHVtYiJ9LHtuYW1lOiJtZW51bGlzdCJ9LHtuYW1lOiJtZW51bGlzdC1idXR0b24ifSx7bmFtZToibWVudWxpc3QtdGV4dCJ9LHtuYW1lOiJtZW51bGlzdC10ZXh0ZmllbGQifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwdXNoLWJ1dHRvbiJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tZG93biJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tbGVmdCJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tcmlnaHQifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLXVwIn0se25hbWU6InNjcm9sbGJhcmdyaXBwZXItaG9yaXpvbnRhbCJ9LHtuYW1lOiJzY3JvbGxiYXJncmlwcGVyLXZlcnRpY2FsIn0se25hbWU6InNjcm9sbGJhcnRodW1iLWhvcml6b250YWwifSx7bmFtZToic2Nyb2xsYmFydGh1bWItdmVydGljYWwifSx7bmFtZToic2Nyb2xsYmFydHJhY2staG9yaXpvbnRhbCJ9LHtuYW1lOiJzY3JvbGxiYXJ0cmFjay12ZXJ0aWNhbCJ9LHtuYW1lOiJzZWFyY2hmaWVsZCJ9LHtuYW1lOiJzZWFyY2hmaWVsZC1jYW5jZWwtYnV0dG9uIn0se25hbWU6InNlYXJjaGZpZWxkLWRlY29yYXRpb24ifSx7bmFtZToic2VhcmNoZmllbGQtcmVzdWx0cy1idXR0b24ifSx7bmFtZToic2VhcmNoZmllbGQtcmVzdWx0cy1kZWNvcmF0aW9uIn0se25hbWU6InNsaWRlci1ob3Jpem9udGFsIn0se25hbWU6InNsaWRlcnRodW1iLWhvcml6b250YWwifSx7bmFtZToic2xpZGVydGh1bWItdmVydGljYWwifSx7bmFtZToic2xpZGVyLXZlcnRpY2FsIn0se25hbWU6InNxdWFyZS1idXR0b24ifSx7bmFtZToidGV4dGFyZWEifSx7bmFtZToidGV4dGZpZWxkIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGJ1dHRvbiB8IGJ1dHRvbi1iZXZlbCB8IGNhcmV0IHwgY2hlY2tib3ggfCBkZWZhdWx0LWJ1dHRvbiB8IGlubmVyLXNwaW4tYnV0dG9uIHwgbGlzdGJveCB8IGxpc3RpdGVtIHwgbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZCB8IG1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYmFja2dyb3VuZCB8IG1lZGlhLWN1cnJlbnQtdGltZS1kaXNwbGF5IHwgbWVkaWEtZW50ZXItZnVsbHNjcmVlbi1idXR0b24gfCBtZWRpYS1leGl0LWZ1bGxzY3JlZW4tYnV0dG9uIHwgbWVkaWEtZnVsbHNjcmVlbi1idXR0b24gfCBtZWRpYS1tdXRlLWJ1dHRvbiB8IG1lZGlhLW92ZXJsYXktcGxheS1idXR0b24gfCBtZWRpYS1wbGF5LWJ1dHRvbiB8IG1lZGlhLXNlZWstYmFjay1idXR0b24gfCBtZWRpYS1zZWVrLWZvcndhcmQtYnV0dG9uIHwgbWVkaWEtc2xpZGVyIHwgbWVkaWEtc2xpZGVydGh1bWIgfCBtZWRpYS10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHwgbWVkaWEtdG9nZ2xlLWNsb3NlZC1jYXB0aW9ucy1idXR0b24gfCBtZWRpYS12b2x1bWUtc2xpZGVyIHwgbWVkaWEtdm9sdW1lLXNsaWRlci1jb250YWluZXIgfCBtZWRpYS12b2x1bWUtc2xpZGVydGh1bWIgfCBtZW51bGlzdCB8IG1lbnVsaXN0LWJ1dHRvbiB8IG1lbnVsaXN0LXRleHQgfCBtZW51bGlzdC10ZXh0ZmllbGQgfCBtZXRlciB8IHByb2dyZXNzLWJhciB8IHByb2dyZXNzLWJhci12YWx1ZSB8IHB1c2gtYnV0dG9uIHwgcmFkaW8gfCBzZWFyY2hmaWVsZCB8IHNlYXJjaGZpZWxkLWNhbmNlbC1idXR0b24gfCBzZWFyY2hmaWVsZC1kZWNvcmF0aW9uIHwgc2VhcmNoZmllbGQtcmVzdWx0cy1idXR0b24gfCBzZWFyY2hmaWVsZC1yZXN1bHRzLWRlY29yYXRpb24gfCBzbGlkZXItaG9yaXpvbnRhbCB8IHNsaWRlci12ZXJ0aWNhbCB8IHNsaWRlcnRodW1iLWhvcml6b250YWwgfCBzbGlkZXJ0aHVtYi12ZXJ0aWNhbCB8IHNxdWFyZS1idXR0b24gfCB0ZXh0YXJlYSB8IHRleHRmaWVsZCB8IC1hcHBsZS1wYXktYnV0dG9uIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiQ2hhbmdlcyB0aGUgYXBwZWFyYW5jZSBvZiBidXR0b25zIGFuZCBvdGhlciBjb250cm9scyB0byByZXNlbWJsZSBuYXRpdmUgY29udHJvbHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJhY2tkcm9wLWZpbHRlciIsYnJvd3NlcnM6WyJTOSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBmaWx0ZXIgZWZmZWN0cyBhcmUgYXBwbGllZC4ifSx7bmFtZToiYmx1cigpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIEdhdXNzaWFuIGJsdXIgdG8gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJicmlnaHRuZXNzKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgbGluZWFyIG11bHRpcGxpZXIgdG8gaW5wdXQgaW1hZ2UsIG1ha2luZyBpdCBhcHBlYXIgbW9yZSBvciBsZXNzIGJyaWdodC4ifSx7bmFtZToiY29udHJhc3QoKSIsZGVzY3JpcHRpb246IkFkanVzdHMgdGhlIGNvbnRyYXN0IG9mIHRoZSBpbnB1dC4ifSx7bmFtZToiZHJvcC1zaGFkb3coKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBkcm9wIHNoYWRvdyBlZmZlY3QgdG8gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJncmF5c2NhbGUoKSIsZGVzY3JpcHRpb246IkNvbnZlcnRzIHRoZSBpbnB1dCBpbWFnZSB0byBncmF5c2NhbGUuIn0se25hbWU6Imh1ZS1yb3RhdGUoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBodWUgcm90YXRpb24gb24gdGhlIGlucHV0IGltYWdlLiAifSx7bmFtZToiaW52ZXJ0KCkiLGRlc2NyaXB0aW9uOiJJbnZlcnRzIHRoZSBzYW1wbGVzIGluIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToib3BhY2l0eSgpIixkZXNjcmlwdGlvbjoiQXBwbGllcyB0cmFuc3BhcmVuY3kgdG8gdGhlIHNhbXBsZXMgaW4gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJzYXR1cmF0ZSgpIixkZXNjcmlwdGlvbjoiU2F0dXJhdGVzIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToic2VwaWEoKSIsZGVzY3JpcHRpb246IkNvbnZlcnRzIHRoZSBpbnB1dCBpbWFnZSB0byBzZXBpYS4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJBIGZpbHRlciByZWZlcmVuY2UgdG8gYSA8ZmlsdGVyPiBlbGVtZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBmaWx0ZXIgZWZmZWN0IHdoZXJlIHRoZSBmaXJzdCBmaWx0ZXIgaW4gdGhlIGxpc3QgdGFrZXMgdGhlIGVsZW1lbnQncyBiYWNrZ3JvdW5kIGltYWdlIGFzIHRoZSBpbnB1dCBpbWFnZS4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJ1cmwiXX0se25hbWU6Ii13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eSIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJoaWRkZW4ifSx7bmFtZToidmlzaWJsZSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlICdiYWNrJyBzaWRlIG9mIGEgdHJhbnNmb3JtZWQgZWxlbWVudCBpcyB2aXNpYmxlIHdoZW4gZmFjaW5nIHRoZSB2aWV3ZXIuIFdpdGggYW4gaWRlbnRpdHkgdHJhbnNmb3JtLCB0aGUgZnJvbnQgc2lkZSBvZiBhbiBlbGVtZW50IGZhY2VzIHRoZSB2aWV3ZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJhY2tncm91bmQtY2xpcCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGJhY2tncm91bmQgcGFpbnRpbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiLXdlYmtpdC1iYWNrZ3JvdW5kLWNvbXBvc2l0ZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJib3JkZXIifSx7bmFtZToicGFkZGluZyJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1iYWNrZ3JvdW5kLW9yaWdpbiIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkZvciBlbGVtZW50cyByZW5kZXJlZCBhcyBhIHNpbmdsZSBib3gsIHNwZWNpZmllcyB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiBGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgbXVsdGlwbGUgYm94ZXMgKGUuZy4sIGlubGluZSBib3hlcyBvbiBzZXZlcmFsIGxpbmVzLCBib3hlcyBvbiBzZXZlcmFsIHBhZ2VzKSBzcGVjaWZpZXMgd2hpY2ggYm94ZXMgJ2JveC1kZWNvcmF0aW9uLWJyZWFrJyBvcGVyYXRlcyBvbiB0byBkZXRlcm1pbmUgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYShzKS4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiLXdlYmtpdC1ib3JkZXItaW1hZ2UiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IklmICdhdXRvJyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgYm9yZGVyIGltYWdlIHdpZHRoIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgaGVpZ2h0ICh3aGljaGV2ZXIgaXMgYXBwbGljYWJsZSkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1hZ2Ugc2xpY2UuIElmIHRoZSBpbWFnZSBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBpbnRyaW5zaWMgZGltZW5zaW9uIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoIGlzIHVzZWQgaW5zdGVhZC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgbWlkZGxlIHBhcnQgb2YgdGhlIGJvcmRlci1pbWFnZSB0byBiZSBwcmVzZXJ2ZWQuIn0se25hbWU6Im5vbmUifSx7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToidXJsKCkifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLCAnYm9yZGVyLWltYWdlLXNsaWNlJywgJ2JvcmRlci1pbWFnZS13aWR0aCcsICdib3JkZXItaW1hZ2Utb3V0c2V0JyBhbmQgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciIsInVybCIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtYm94LWFsaWduIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiSWYgdGhpcyBib3ggb3JpZW50YXRpb24gaXMgaW5saW5lLWF4aXMgb3IgaG9yaXpvbnRhbCwgYWxsIGNoaWxkcmVuIGFyZSBwbGFjZWQgd2l0aCB0aGVpciBiYXNlbGluZXMgYWxpZ25lZCwgYW5kIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgb3IgYWZ0ZXIgYXMgbmVjZXNzYXJ5LiBGb3IgYmxvY2sgZmxvd3MsIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3Qgbm9uLWVtcHR5IGxpbmUgYm94IGxvY2F0ZWQgd2l0aGluIHRoZSBlbGVtZW50IGlzIHVzZWQuIEZvciB0YWJsZXMsIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3QgY2VsbCBpcyB1c2VkLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJBbnkgZXh0cmEgc3BhY2UgaXMgZGl2aWRlZCBldmVubHksIHdpdGggaGFsZiBwbGFjZWQgYWJvdmUgdGhlIGNoaWxkIGFuZCB0aGUgb3RoZXIgaGFsZiBwbGFjZWQgYWZ0ZXIgdGhlIGNoaWxkLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIGJvdHRvbSBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSBib3R0b20gb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGFib3ZlIHRoZSBlbGVtZW50LiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSB0b3AgZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgdG9wIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBiZWxvdyB0aGUgZWxlbWVudC4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIHRvcCBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSB0b3Agb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGJlbG93IHRoZSBlbGVtZW50LiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSBib3R0b20gZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgYm90dG9tIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBhYm92ZSB0aGUgZWxlbWVudC4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBoZWlnaHQgb2YgZWFjaCBjaGlsZCBpcyBhZGp1c3RlZCB0byB0aGF0IG9mIHRoZSBjb250YWluaW5nIGJsb2NrLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgYWxpZ25tZW50IG9mIG5lc3RlZCBlbGVtZW50cyB3aXRoaW4gYW4gb3V0ZXIgZmxleGlibGUgYm94IGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJveC1kaXJlY3Rpb24iLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIGhvcml6b250YWwgZm9yIGJveC1vcmllbnQgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gbGVmdCB0byByaWdodC4gQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIHZlcnRpY2FsIGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHRvcCB0byBib3R0b20uIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgaG9yaXpvbnRhbCBmb3IgYm94LW9yaWVudCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSByaWdodCB0byBsZWZ0LiBBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgdmVydGljYWwgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gYm90dG9tIHRvIHRvcC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbiB3ZWJraXQgYXBwbGljYXRpb25zLCAtd2Via2l0LWJveC1kaXJlY3Rpb24gc3BlY2lmaWVzIHdoZXRoZXIgYSBib3ggbGF5cyBvdXQgaXRzIGNvbnRlbnRzIG5vcm1hbGx5IChmcm9tIHRoZSB0b3Agb3IgbGVmdCBlZGdlKSwgb3IgaW4gcmV2ZXJzZSAoZnJvbSB0aGUgYm90dG9tIG9yIHJpZ2h0IGVkZ2UpLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1ib3gtZmxleCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhbiBlbGVtZW50J3MgZmxleGliaWxpdHkuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6Ii13ZWJraXQtYm94LWZsZXgtZ3JvdXAiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJGbGV4aWJsZSBlbGVtZW50cyBjYW4gYmUgYXNzaWduZWQgdG8gZmxleCBncm91cHMgdXNpbmcgdGhlICdib3gtZmxleC1ncm91cCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSBvcmRpbmFsIGdyb3VwIHRoZSBlbGVtZW50IGJlbG9uZ3MgdG8uIEVsZW1lbnRzIHdpdGggYSBsb3dlciBvcmRpbmFsIGdyb3VwIGFyZSBkaXNwbGF5ZWQgYmVmb3JlIHRob3NlIHdpdGggYSBoaWdoZXIgb3JkaW5hbCBncm91cC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii13ZWJraXQtYm94LW9yaWVudCIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJibG9jay1heGlzIixkZXNjcmlwdGlvbjoiRWxlbWVudHMgYXJlIG9yaWVudGVkIGFsb25nIHRoZSBib3gncyBheGlzLiJ9LHtuYW1lOiJob3Jpem9udGFsIixkZXNjcmlwdGlvbjoiVGhlIGJveCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBsZWZ0IHRvIHJpZ2h0IGluIGEgaG9yaXpvbnRhbCBsaW5lLiJ9LHtuYW1lOiJpbmxpbmUtYXhpcyIsZGVzY3JpcHRpb246IkVsZW1lbnRzIGFyZSBvcmllbnRlZCB2ZXJ0aWNhbGx5LiJ9LHtuYW1lOiJ2ZXJ0aWNhbCIsZGVzY3JpcHRpb246IlRoZSBib3ggZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gc3RhY2tlZCBmcm9tIHRvcCB0byBib3R0b20gdmVydGljYWxseS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbiB3ZWJraXQgYXBwbGljYXRpb25zLCAtd2Via2l0LWJveC1vcmllbnQgc3BlY2lmaWVzIHdoZXRoZXIgYSBib3ggbGF5cyBvdXQgaXRzIGNvbnRlbnRzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1ib3gtcGFjayIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgZXh0cmEgc3BhY2UgaXMgZGl2aWRlZCBldmVubHksIHdpdGggaGFsZiBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZCBhbmQgdGhlIG90aGVyIGhhbGYgcGxhY2VkIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxhc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSByaWdodCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgbGVmdCBlZGdlIG9mIHRoZSBmaXJzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIGxlZnQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHNwYWNlIGlzIGRpdmlkZWQgZXZlbmx5IGluLWJldHdlZW4gZWFjaCBjaGlsZCwgd2l0aCBub25lIG9mIHRoZSBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZCBvciBhZnRlciB0aGUgbGFzdCBjaGlsZC4gSWYgdGhlcmUgaXMgb25seSBvbmUgY2hpbGQsIHRyZWF0IHRoZSBwYWNrIHZhbHVlIGFzIGlmIGl0IHdlcmUgc3RhcnQuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGZpcnN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgbGVmdCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIEZvciByZXZlcnNlIGRpcmVjdGlvbiBib3hlcywgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxhc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSByaWdodCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYWxpZ25tZW50IG9mIGNoaWxkIGVsZW1lbnRzIHdpdGhpbiB0aGUgY3VycmVudCBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gb2Ygb3JpZW50YXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJveC1yZWZsZWN0Iixicm93c2VyczpbIkU3OSIsIlM0IiwiQzQiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJhYm92ZSIsZGVzY3JpcHRpb246IlRoZSByZWZsZWN0aW9uIGFwcGVhcnMgYWJvdmUgdGhlIGJvcmRlciBib3guIn0se25hbWU6ImJlbG93IixkZXNjcmlwdGlvbjoiVGhlIHJlZmxlY3Rpb24gYXBwZWFycyBiZWxvdyB0aGUgYm9yZGVyIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSByZWZsZWN0aW9uIGFwcGVhcnMgdG8gdGhlIGxlZnQgb2YgdGhlIGJvcmRlciBib3guIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIHJlZmxlY3Rpb24gYXBwZWFycyB0byB0aGUgcmlnaHQgb2YgdGhlIGJvcmRlciBib3guIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyBhYm92ZSB8IGJlbG93IHwgcmlnaHQgfCBsZWZ0IF0/IDxsZW5ndGg+PyA8aW1hZ2U+PyIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtYm94LXJlZmxlY3QifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYSByZWZsZWN0aW9uIG9mIGEgYm9yZGVyIGJveC4ifSx7bmFtZToiLXdlYmtpdC1ib3gtc2l6aW5nIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImJvcmRlci1ib3giLGRlc2NyaXB0aW9uOiJUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgb24gdGhpcyBlbGVtZW50IGRldGVybWluZSB0aGUgYm9yZGVyIGJveCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudC1ib3giLGRlc2NyaXB0aW9uOiJCZWhhdmlvciBvZiB3aWR0aCBhbmQgaGVpZ2h0IGFzIHNwZWNpZmllZCBieSBDU1MyLjEuIFRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBhcHBseSB0byB0aGUgd2lkdGggYW5kIGhlaWdodCByZXNwZWN0aXZlbHkgb2YgdGhlIGNvbnRlbnQgYm94IG9mIHRoZSBlbGVtZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkJveCBNb2RlbCBhZGRpdGlvbiBpbiBDU1MzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1icmVhay1hZnRlciIsYnJvd3NlcnM6WyJTNyJdLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InBhZ2UiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJyZWFrLWJlZm9yZSIsYnJvd3NlcnM6WyJTNyJdLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InBhZ2UiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJyZWFrLWluc2lkZSIsYnJvd3NlcnM6WyJTNyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlL2NvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXJlZ2lvbiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0ZXIiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXJlZ2lvbiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicGFnZSIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJyZWdpb24ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9yZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcmVnaW9uIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlL2NvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXJlZ2lvbiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tY291bnQiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIGJ5IHRoZSAnY29sdW1uLXdpZHRoJyBwcm9wZXJ0eSBhbmQgdGhlIGVsZW1lbnQgd2lkdGguIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBvcHRpbWFsIG51bWJlciBvZiBjb2x1bW5zIGludG8gd2hpY2ggdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgd2lsbCBiZSBmbG93ZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1nYXAiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVXNlciBhZ2VudCBzcGVjaWZpYyBhbmQgdHlwaWNhbGx5IGVxdWl2YWxlbnQgdG8gMWVtLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIGdhcCBiZXR3ZWVuIGNvbHVtbnMuIElmIHRoZXJlIGlzIGEgY29sdW1uIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLCBpdCB3aWxsIGFwcGVhciBpbiB0aGUgbWlkZGxlIG9mIHRoZSBnYXAuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLXJ1bGUiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGlzIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIGZvciBzZXR0aW5nICdjb2x1bW4tcnVsZS13aWR0aCcsICdjb2x1bW4tcnVsZS1zdHlsZScsIGFuZCAnY29sdW1uLXJ1bGUtY29sb3InIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLXJ1bGUtY29sb3IiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgY29sdW1uIHJ1bGUiLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1ydWxlLXN0eWxlIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgc3R5bGUgb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1ydWxlLXdpZHRoIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgd2lkdGggb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW5zIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBib3RoICdjb2x1bW4td2lkdGgnIGFuZCAnY29sdW1uLWNvdW50Jy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImludGVnZXIiXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLXNwYW4iLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgc3BhbnMgYWNyb3NzIGFsbCBjb2x1bW5zLiBDb250ZW50IGluIHRoZSBub3JtYWwgZmxvdyB0aGF0IGFwcGVhcnMgYmVmb3JlIHRoZSBlbGVtZW50IGlzIGF1dG9tYXRpY2FsbHkgYmFsYW5jZWQgYWNyb3NzIGFsbCBjb2x1bW5zIGJlZm9yZSB0aGUgZWxlbWVudCBhcHBlYXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBkb2VzIG5vdCBzcGFuIG11bHRpcGxlIGNvbHVtbnMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLXdpZHRoIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBkZXNjcmliZXMgdGhlIHdpZHRoIG9mIGNvbHVtbnMgaW4gbXVsdGljb2wgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtZmlsdGVyIixicm93c2VyczpbIkMxOCIsIk8xNSIsIlM2Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGZpbHRlciBlZmZlY3RzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJibHVyKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgR2F1c3NpYW4gYmx1ciB0byB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6ImJyaWdodG5lc3MoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBsaW5lYXIgbXVsdGlwbGllciB0byBpbnB1dCBpbWFnZSwgbWFraW5nIGl0IGFwcGVhciBtb3JlIG9yIGxlc3MgYnJpZ2h0LiJ9LHtuYW1lOiJjb250cmFzdCgpIixkZXNjcmlwdGlvbjoiQWRqdXN0cyB0aGUgY29udHJhc3Qgb2YgdGhlIGlucHV0LiJ9LHtuYW1lOiJkcm9wLXNoYWRvdygpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGRyb3Agc2hhZG93IGVmZmVjdCB0byB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6ImdyYXlzY2FsZSgpIixkZXNjcmlwdGlvbjoiQ29udmVydHMgdGhlIGlucHV0IGltYWdlIHRvIGdyYXlzY2FsZS4ifSx7bmFtZToiaHVlLXJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGh1ZSByb3RhdGlvbiBvbiB0aGUgaW5wdXQgaW1hZ2UuICJ9LHtuYW1lOiJpbnZlcnQoKSIsZGVzY3JpcHRpb246IkludmVydHMgdGhlIHNhbXBsZXMgaW4gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJvcGFjaXR5KCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRyYW5zcGFyZW5jeSB0byB0aGUgc2FtcGxlcyBpbiB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6InNhdHVyYXRlKCkiLGRlc2NyaXB0aW9uOiJTYXR1cmF0ZXMgdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJzZXBpYSgpIixkZXNjcmlwdGlvbjoiQ29udmVydHMgdGhlIGlucHV0IGltYWdlIHRvIHNlcGlhLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IkEgZmlsdGVyIHJlZmVyZW5jZSB0byBhIDxmaWx0ZXI+IGVsZW1lbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvY2Vzc2VzIGFuIGVsZW1lbnTigJlzIHJlbmRlcmluZyBiZWZvcmUgaXQgaXMgZGlzcGxheWVkIGluIHRoZSBkb2N1bWVudCwgYnkgYXBwbHlpbmcgb25lIG9yIG1vcmUgZmlsdGVyIGVmZmVjdHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwidXJsIl19LHtuYW1lOiItd2Via2l0LWZsb3ctZnJvbSIsYnJvd3NlcnM6WyJTNi4xIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBibG9jayBjb250YWluZXIgaXMgbm90IGEgQ1NTIFJlZ2lvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJNYWtlcyBhIGJsb2NrIGNvbnRhaW5lciBhIHJlZ2lvbiBhbmQgYXNzb2NpYXRlcyBpdCB3aXRoIGEgbmFtZWQgZmxvdy4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiXX0se25hbWU6Ii13ZWJraXQtZmxvdy1pbnRvIixicm93c2VyczpbIlM2LjEiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgbm90IG1vdmVkIHRvIGEgbmFtZWQgZmxvdyBhbmQgbm9ybWFsIENTUyBwcm9jZXNzaW5nIHRha2VzIHBsYWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlBsYWNlcyBhbiBlbGVtZW50IG9yIGl0cyBjb250ZW50cyBpbnRvIGEgbmFtZWQgZmxvdy4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiXX0se25hbWU6Ii13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzIixicm93c2VyczpbIkMxNiJdLHZhbHVlczpbe25hbWU6JyJjMmNzIid9LHtuYW1lOiciZGxpZyInfSx7bmFtZTonImtlcm4iJ30se25hbWU6JyJsaWdhIid9LHtuYW1lOicibG51bSInfSx7bmFtZTonIm9udW0iJ30se25hbWU6JyJzbWNwIid9LHtuYW1lOicic3dzaCInfSx7bmFtZTonInRudW0iJ30se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vIGNoYW5nZSBpbiBnbHlwaCBzdWJzdGl0dXRpb24gb3IgcG9zaXRpb25pbmcgb2NjdXJzLiJ9LHtuYW1lOiJvZmYifSx7bmFtZToib24ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGlzIHByb3BlcnR5IHByb3ZpZGVzIGxvdy1sZXZlbCBjb250cm9sIG92ZXIgT3BlblR5cGUgZm9udCBmZWF0dXJlcy4gSXQgaXMgaW50ZW5kZWQgYXMgYSB3YXkgb2YgcHJvdmlkaW5nIGFjY2VzcyB0byBmb250IGZlYXR1cmVzIHRoYXQgYXJlIG5vdCB3aWRlbHkgdXNlZCBidXQgYXJlIG5lZWRlZCBmb3IgYSBwYXJ0aWN1bGFyIHVzZSBjYXNlLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIiwiaW50ZWdlciJdfSx7bmFtZToiLXdlYmtpdC1oeXBoZW5zIixicm93c2VyczpbIlM1LjEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29uZGl0aW9uYWwgaHlwaGVuYXRpb24gY2hhcmFjdGVycyBpbnNpZGUgYSB3b3JkLCBpZiBwcmVzZW50LCB0YWtlIHByaW9yaXR5IG92ZXIgYXV0b21hdGljIHJlc291cmNlcyB3aGVuIGRldGVybWluaW5nIGh5cGhlbmF0aW9uIHBvaW50cyB3aXRoaW4gdGhlIHdvcmQuIn0se25hbWU6Im1hbnVhbCIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBvbmx5IGJyb2tlbiBhdCBsaW5lIGJyZWFrcyB3aGVyZSB0aGVyZSBhcmUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgdGhhdCBzdWdnZXN0IGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG5vdCBicm9rZW4gYXQgbGluZSBicmVha3MsIGV2ZW4gaWYgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgc3VnZ2VzdCBsaW5lIGJyZWFrIHBvaW50cy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQgdG8gY3JlYXRlIG1vcmUgYnJlYWsgb3Bwb3J0dW5pdGllcyB3aXRoaW4gYSBsaW5lIG9mIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWxpbmUtYnJlYWsiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYWZ0ZXItd2hpdGUtc3BhY2UifSx7bmFtZToibm9ybWFsIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGxpbmUtYnJlYWtpbmcgcnVsZXMgZm9yIENKSyAoQ2hpbmVzZSwgSmFwYW5lc2UsIGFuZCBLb3JlYW4pIHRleHQuIn0se25hbWU6Ii13ZWJraXQtbWFyZ2luLWJvdHRvbS1jb2xsYXBzZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJjb2xsYXBzZSJ9LHtuYW1lOiJkaXNjYXJkIn0se25hbWU6InNlcGFyYXRlIn1dLHJlbGV2YW5jZTo1MCxyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LW1hcmdpbi1jb2xsYXBzZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJjb2xsYXBzZSJ9LHtuYW1lOiJkaXNjYXJkIn0se25hbWU6InNlcGFyYXRlIn1dLHJlbGV2YW5jZTo1MCxyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LW1hcmdpbi1zdGFydCIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHJlbGV2YW5jZTo1MCxyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItd2Via2l0LW1hcmdpbi10b3AtY29sbGFwc2UiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiY29sbGFwc2UifSx7bmFtZToiZGlzY2FyZCJ9LHtuYW1lOiJzZXBhcmF0ZSJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1tYXNrLWNsaXAiLGJyb3dzZXJzOlsiQyIsIk8xNSIsIlM0Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIDxib3g+IHwgYm9yZGVyIHwgcGFkZGluZyB8IGNvbnRlbnQgfCB0ZXh0IF0jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgbWFzayBwYWludGluZyBhcmVhLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBhcmVhIHRoYXQgaXMgYWZmZWN0ZWQgYnkgdGhlIG1hc2suIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6Ii13ZWJraXQtbWFzay1pbWFnZSIsYnJvd3NlcnM6WyJDIiwiTzE1IiwiUzQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiQ291bnRzIGFzIGEgdHJhbnNwYXJlbnQgYmxhY2sgaW1hZ2UgbGF5ZXIuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiUmVmZXJlbmNlIHRvIGEgPG1hc2sgZWxlbWVudCBvciB0byBhIENTUyBpbWFnZS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8bWFzay1yZWZlcmVuY2U+IyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNldHMgdGhlIG1hc2sgbGF5ZXIgaW1hZ2Ugb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInVybCIsImltYWdlIiwiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1tYXNrLW9yaWdpbiIsYnJvd3NlcnM6WyJDIiwiTzE1IiwiUzQiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IlsgPGJveD4gfCBib3JkZXIgfCBwYWRkaW5nIHwgY29udGVudCBdIyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWFzayBwb3NpdGlvbmluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsiYm94Il19LHtuYW1lOiItd2Via2l0LW1hc2stcmVwZWF0Iixicm93c2VyczpbIkMiLCJPMTUiLCJTNCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHJlcGVhdC1zdHlsZT4jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBtYXNrIGxheWVyIGltYWdlcyBhcmUgdGlsZWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gc2l6ZWQgYW5kIHBvc2l0aW9uZWQuIixyZXN0cmljdGlvbnM6WyJyZXBlYXQiXX0se25hbWU6Ii13ZWJraXQtbWFzay1zaXplIixicm93c2VyczpbIkMiLCJPMTUiLCJTNCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXNvbHZlZCBieSB1c2luZyB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyByYXRpbyBhbmQgdGhlIHNpemUgb2YgdGhlIG90aGVyIGRpbWVuc2lvbiwgb3IgZmFpbGluZyB0aGF0LCB1c2luZyB0aGUgaW1hZ2XigJlzIGludHJpbnNpYyBzaXplLCBvciBmYWlsaW5nIHRoYXQsIHRyZWF0aW5nIGl0IGFzIDEwMCUuIn0se25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBsYXJnZXN0IHNpemUgc3VjaCB0aGF0IGJvdGggaXRzIHdpZHRoIGFuZCBpdHMgaGVpZ2h0IGNhbiBmaXQgaW5zaWRlIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiU2NhbGUgdGhlIGltYWdlLCB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChpZiBhbnkpLCB0byB0aGUgc21hbGxlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGNvbXBsZXRlbHkgY292ZXIgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Ymctc2l6ZT4jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBtYXNrIGxheWVyIGltYWdlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiItd2Via2l0LW5ic3AtbW9kZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwifSx7bmFtZToic3BhY2UifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBiZWhhdmlvciBvZiBub25icmVha2luZyBzcGFjZXMgd2l0aGluIHRleHQuIn0se25hbWU6Ii13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToidG91Y2gifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgdG91Y2giLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIG5hdGl2ZS1zdHlsZSBzY3JvbGxpbmcgaW4gYW4gb3ZlcmZsb3c6c2Nyb2xsIGVsZW1lbnQuIn0se25hbWU6Ii13ZWJraXQtcGFkZGluZy1zdGFydCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLXdlYmtpdC1wZXJzcGVjdGl2ZSIsYnJvd3NlcnM6WyJDIiwiUzQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGVyc3BlY3RpdmUgdHJhbnNmb3JtIGlzIGFwcGxpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQXBwbGllcyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMgdGhlIHBlcnNwZWN0aXZlKDxudW1iZXI+KSB0cmFuc2Zvcm0gZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IGl0IGFwcGxpZXMgb25seSB0byB0aGUgcG9zaXRpb25lZCBvciB0cmFuc2Zvcm1lZCBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudCwgbm90IHRvIHRoZSB0cmFuc2Zvcm0gb24gdGhlIGVsZW1lbnQgaXRzZWxmLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbiIsYnJvd3NlcnM6WyJDIiwiUzQiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gZm9yIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eS4gSXQgZWZmZWN0aXZlbHkgc2V0cyB0aGUgWCBhbmQgWSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtcmVnaW9uLWZyYWdtZW50Iixicm93c2VyczpbIlM3Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbnRlbnQgZmxvd3MgYXMgaXQgd291bGQgaW4gYSByZWd1bGFyIGNvbnRlbnQgYm94LiJ9LHtuYW1lOiJicmVhayIsZGVzY3JpcHRpb246IklmIHRoZSBjb250ZW50IGZpdHMgd2l0aGluIHRoZSBDU1MgUmVnaW9uLCB0aGVuIHRoaXMgcHJvcGVydHkgaGFzIG5vIGVmZmVjdC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgJ3JlZ2lvbi1mcmFnbWVudCcgcHJvcGVydHkgY29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBsYXN0IHJlZ2lvbiBhc3NvY2lhdGVkIHdpdGggYSBuYW1lZCBmbG93LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIixicm93c2VyczpbIkUxMiIsIkMxNiIsIk8xNSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciJ9XSxyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLXdlYmtpdC10ZXh0LWZpbGwtY29sb3IiLGJyb3dzZXJzOlsiRTEyIiwiRkY0OSIsIlMzIiwiQzEiLCJPMTUiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LXRleHQtZmlsbC1jb2xvciJ9XSxyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0Iixicm93c2VyczpbIkUiLCJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmVuZGVyZXJzIG11c3QgdXNlIHRoZSBkZWZhdWx0IHNpemUgYWRqdXN0bWVudCB3aGVuIGRpc3BsYXlpbmcgb24gYSBzbWFsbCBkZXZpY2UuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJSZW5kZXJlcnMgbXVzdCBub3QgZG8gc2l6ZSBhZGp1c3RtZW50IHdoZW4gZGlzcGxheWluZyBvbiBhIHNtYWxsIGRldmljZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzaXplIGFkanVzdG1lbnQgZm9yIGRpc3BsYXlpbmcgdGV4dCBjb250ZW50IGluIG1vYmlsZSBicm93c2Vycy4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiXX0se25hbWU6Ii13ZWJraXQtdGV4dC1zdHJva2UiLGJyb3dzZXJzOlsiRTE1IiwiRkY0OSIsIlMzIiwiQzQiLCJPMTUiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxsZW5ndGg+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LXRleHQtc3Ryb2tlIn1dLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJjb2xvciIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii13ZWJraXQtdGV4dC1zdHJva2UtY29sb3IiLGJyb3dzZXJzOlsiRTE1IiwiRkY0OSIsIlMzIiwiQzEiLCJPMTUiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yIn1dLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoIixicm93c2VyczpbIkUxNSIsIkZGNDkiLCJTMyIsIkMxIiwiTzE1Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGgifV0scmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii13ZWJraXQtdG91Y2gtY2FsbG91dCIsYnJvd3NlcnM6WyJTMyJdLHZhbHVlczpbe25hbWU6Im5vbmUifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJkZWZhdWx0IHwgbm9uZSIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdG91Y2gtY2FsbG91dCJ9XSxyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybSIsYnJvd3NlcnM6WyJDIiwiTzEyIiwiUzMuMSJdLHZhbHVlczpbe25hbWU6Im1hdHJpeCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNmb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggb2Ygc2l4IHZhbHVlcy4gbWF0cml4KGEsYixjLGQsZSxmKSBpcyBlcXVpdmFsZW50IHRvIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggW2EgYiBjIGQgZSBmXSJ9LHtuYW1lOiJtYXRyaXgzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNmb3JtYXRpb24gYXMgYSA0eDQgaG9tb2dlbmVvdXMgbWF0cml4IG9mIDE2IHZhbHVlcyBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuIn0se25hbWU6Im5vbmUifSx7bmFtZToicGVyc3BlY3RpdmUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHBlcnNwZWN0aXZlIHByb2plY3Rpb24gbWF0cml4LiJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luIixicm93c2VyczpbIkMiLCJPMTUiLCJTMy4xIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIG9mIHRyYW5zZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teCIsYnJvd3NlcnM6WyJDIiwiUzMuMSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teSIsYnJvd3NlcnM6WyJDIiwiUzMuMSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teiIsYnJvd3NlcnM6WyJDIiwiUzQiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB6IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGUiLGJyb3dzZXJzOlsiQyIsIlM0Il0sdmFsdWVzOlt7bmFtZToiZmxhdCIsZGVzY3JpcHRpb246IkFsbCBjaGlsZHJlbiBvZiB0aGlzIGVsZW1lbnQgYXJlIHJlbmRlcmVkIGZsYXR0ZW5lZCBpbnRvIHRoZSAyRCBwbGFuZSBvZiB0aGUgZWxlbWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGhvdyBuZXN0ZWQgZWxlbWVudHMgYXJlIHJlbmRlcmVkIGluIDNEIHNwYWNlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2l0aW9uIixicm93c2VyczpbIkMiLCJPMTIiLCJTNSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBmb3VyIG9mIHRoZSB0cmFuc2l0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJwcm9wZXJ0eSIsInRpbWluZy1mdW5jdGlvbiIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtdHJhbnNpdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJDIiwiTzEyIiwiUzUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgdHJhbnNpdGlvbiB3aWxsIHN0YXJ0LiBJdCBhbGxvd3MgYSB0cmFuc2l0aW9uIHRvIGJlZ2luIGV4ZWN1dGlvbiBzb21lIHBlcmlvZCBvZiB0aW1lIGZyb20gd2hlbiBpdCBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIkMiLCJPMTIiLCJTNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBsb25nIHRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIG9sZCB2YWx1ZSB0byB0aGUgbmV3IHZhbHVlIHNob3VsZCB0YWtlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5Iixicm93c2VyczpbIkMiLCJPMTIiLCJTNSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkV2ZXJ5IHByb3BlcnR5IHRoYXQgaXMgYWJsZSB0byB1bmRlcmdvIGEgdHJhbnNpdGlvbiB3aWxsIGRvIHNvLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcHJvcGVydHkgd2lsbCB0cmFuc2l0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgQ1NTIHByb3BlcnR5IHRvIHdoaWNoIHRoZSB0cmFuc2l0aW9uIGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJwcm9wZXJ0eSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJDIiwiTzEyIiwiUzUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgdXNlZCBkdXJpbmcgYSB0cmFuc2l0aW9uIHdpbGwgYmUgY2FsY3VsYXRlZC4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToiLXdlYmtpdC11c2VyLWRyYWciLGJyb3dzZXJzOlsiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImVsZW1lbnQifSx7bmFtZToibm9uZSJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC11c2VyLW1vZGlmeSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJyZWFkLW9ubHkifSx7bmFtZToicmVhZC13cml0ZSJ9LHtuYW1lOiJyZWFkLXdyaXRlLXBsYWludGV4dC1vbmx5In1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoicmVhZC1vbmx5IHwgcmVhZC13cml0ZSB8IHJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgYSB1c2VyIGNhbiBlZGl0IHRoZSBjb250ZW50IG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXVzZXItc2VsZWN0Iixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJ0ZXh0In1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToid2lkb3dzIixicm93c2VyczpbIkUxMiIsIlMxLjMiLCJDMjUiLCJJRTgiLCJPOS4yIl0sc3ludGF4OiI8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd2lkb3dzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGxpbmUgYm94ZXMgb2YgYSBibG9jayBjb250YWluZXIgdGhhdCBtdXN0IGJlIGxlZnQgaW4gYSBmcmFnbWVudCBhZnRlciBhIGJyZWFrLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToid2lkdGgiLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn0se25hbWU6ImZpdC1jb250ZW50IixkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiPHZpZXdwb3J0LWxlbmd0aD57MSwyfSIscmVsZXZhbmNlOjk2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB3aWR0aCBvZiB0aGUgY29udGVudCBhcmVhLCBwYWRkaW5nIGFyZWEgb3IgYm9yZGVyIGFyZWEgKGRlcGVuZGluZyBvbiAnYm94LXNpemluZycpIG9mIGNlcnRhaW4gYm94ZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJ3aWxsLWNoYW5nZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzkuMSIsIkMzNiIsIk8yNCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJFeHByZXNzZXMgbm8gcGFydGljdWxhciBpbnRlbnQuIn0se25hbWU6ImNvbnRlbnRzIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGF1dGhvciBleHBlY3RzIHRvIGFuaW1hdGUgb3IgY2hhbmdlIHNvbWV0aGluZyBhYm91dCB0aGUgZWxlbWVudOKAmXMgY29udGVudHMgaW4gdGhlIG5lYXIgZnV0dXJlLiJ9LHtuYW1lOiJzY3JvbGwtcG9zaXRpb24iLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgYXV0aG9yIGV4cGVjdHMgdG8gYW5pbWF0ZSBvciBjaGFuZ2UgdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgZWxlbWVudCBpbiB0aGUgbmVhciBmdXR1cmUuIn1dLHN5bnRheDoiYXV0byB8IDxhbmltYXRlYWJsZS1mZWF0dXJlPiMiLHJlbGV2YW5jZTo2MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd2lsbC1jaGFuZ2UifV0sZGVzY3JpcHRpb246IlByb3ZpZGVzIGEgcmVuZGVyaW5nIGhpbnQgdG8gdGhlIHVzZXIgYWdlbnQsIHN0YXRpbmcgd2hhdCBraW5kcyBvZiBjaGFuZ2VzIHRoZSBhdXRob3IgZXhwZWN0cyB0byBwZXJmb3JtIG9uIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImlkZW50aWZpZXIiXX0se25hbWU6IndvcmQtYnJlYWsiLHZhbHVlczpbe25hbWU6ImJyZWFrLWFsbCIsZGVzY3JpcHRpb246IkxpbmVzIG1heSBicmVhayBiZXR3ZWVuIGFueSB0d28gZ3JhcGhlbWUgY2x1c3RlcnMgZm9yIG5vbi1DSksgc2NyaXB0cy4ifSx7bmFtZToia2VlcC1hbGwiLGRlc2NyaXB0aW9uOiJCbG9jayBjaGFyYWN0ZXJzIGNhbiBubyBsb25nZXIgY3JlYXRlIGltcGxpZWQgYnJlYWsgcG9pbnRzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJCcmVha3Mgbm9uLUNKSyBzY3JpcHRzIGFjY29yZGluZyB0byB0aGVpciBvd24gcnVsZXMuIn1dLHN5bnRheDoibm9ybWFsIHwgYnJlYWstYWxsIHwga2VlcC1hbGwgfCBicmVhay13b3JkIixyZWxldmFuY2U6NzUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3dvcmQtYnJlYWsifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBsaW5lIGJyZWFrIG9wcG9ydHVuaXRpZXMgZm9yIG5vbi1DSksgc2NyaXB0cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6IndvcmQtc3BhY2luZyIsdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm8gYWRkaXRpb25hbCBzcGFjaW5nIGlzIGFwcGxpZWQuIENvbXB1dGVzIHRvIHplcm8uIn1dLHN5bnRheDoibm9ybWFsIHwgPGxlbmd0aD4iLHJlbGV2YW5jZTo1NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd29yZC1zcGFjaW5nIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYWRkaXRpb25hbCBzcGFjaW5nIGJldHdlZW4g4oCcd29yZHPigJ0uIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJ3b3JkLXdyYXAiLHZhbHVlczpbe25hbWU6ImJyZWFrLXdvcmQiLGRlc2NyaXB0aW9uOiJBbiBvdGhlcndpc2UgdW5icmVha2FibGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBtYXkgYmUgYnJva2VuIGF0IGFuIGFyYml0cmFyeSBwb2ludCBpZiB0aGVyZSBhcmUgbm8gb3RoZXJ3aXNlLWFjY2VwdGFibGUgYnJlYWsgcG9pbnRzIGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJMaW5lcyBtYXkgYnJlYWsgb25seSBhdCBhbGxvd2VkIGJyZWFrIHBvaW50cy4ifV0sc3ludGF4OiJub3JtYWwgfCBicmVhay13b3JkIixyZWxldmFuY2U6NzgsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHRoZSBVQSBtYXkgYnJlYWsgd2l0aGluIGEgd29yZCB0byBwcmV2ZW50IG92ZXJmbG93IHdoZW4gYW4gb3RoZXJ3aXNlLXVuYnJlYWthYmxlIHN0cmluZyBpcyB0b28gbG9uZyB0byBmaXQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ3cml0aW5nLW1vZGUiLHZhbHVlczpbe25hbWU6Imhvcml6b250YWwtdGIiLGRlc2NyaXB0aW9uOiJUb3AtdG8tYm90dG9tIGJsb2NrIGZsb3cgZGlyZWN0aW9uLiBUaGUgd3JpdGluZyBtb2RlIGlzIGhvcml6b250YWwuIn0se25hbWU6InNpZGV3YXlzLWxyIixkZXNjcmlwdGlvbjoiTGVmdC10by1yaWdodCBibG9jayBmbG93IGRpcmVjdGlvbi4gVGhlIHdyaXRpbmcgbW9kZSBpcyB2ZXJ0aWNhbCwgd2hpbGUgdGhlIHR5cG9ncmFwaGljIG1vZGUgaXMgaG9yaXpvbnRhbC4ifSx7bmFtZToic2lkZXdheXMtcmwiLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGJsb2NrIGZsb3cgZGlyZWN0aW9uLiBUaGUgd3JpdGluZyBtb2RlIGlzIHZlcnRpY2FsLCB3aGlsZSB0aGUgdHlwb2dyYXBoaWMgbW9kZSBpcyBob3Jpem9udGFsLiJ9LHtuYW1lOiJ2ZXJ0aWNhbC1sciIsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgYmxvY2sgZmxvdyBkaXJlY3Rpb24uIFRoZSB3cml0aW5nIG1vZGUgaXMgdmVydGljYWwuIn0se25hbWU6InZlcnRpY2FsLXJsIixkZXNjcmlwdGlvbjoiUmlnaHQtdG8tbGVmdCBibG9jayBmbG93IGRpcmVjdGlvbi4gVGhlIHdyaXRpbmcgbW9kZSBpcyB2ZXJ0aWNhbC4ifV0sc3ludGF4OiJob3Jpem9udGFsLXRiIHwgdmVydGljYWwtcmwgfCB2ZXJ0aWNhbC1sciB8IHNpZGV3YXlzLXJsIHwgc2lkZXdheXMtbHIiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd3JpdGluZy1tb2RlIn1dLGRlc2NyaXB0aW9uOiJUaGlzIGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBib3RoICdkaXJlY3Rpb24nIGFuZCAnYmxvY2stcHJvZ3Jlc3Npb24nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiei1pbmRleCIsdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBzdGFjayBsZXZlbCBvZiB0aGUgZ2VuZXJhdGVkIGJveCBpbiB0aGUgY3VycmVudCBzdGFja2luZyBjb250ZXh0IGlzIDAuIFRoZSBib3ggZG9lcyBub3QgZXN0YWJsaXNoIGEgbmV3IHN0YWNraW5nIGNvbnRleHQgdW5sZXNzIGl0IGlzIHRoZSByb290IGVsZW1lbnQuIn1dLHN5bnRheDoiYXV0byB8IDxpbnRlZ2VyPiIscmVsZXZhbmNlOjkyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy96LWluZGV4In1dLGRlc2NyaXB0aW9uOiJGb3IgYSBwb3NpdGlvbmVkIGJveCwgdGhlICd6LWluZGV4JyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHN0YWNrIGxldmVsIG9mIHRoZSBib3ggaW4gdGhlIGN1cnJlbnQgc3RhY2tpbmcgY29udGV4dCBhbmQgd2hldGhlciB0aGUgYm94IGVzdGFibGlzaGVzIGEgbG9jYWwgc3RhY2tpbmcgY29udGV4dC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Inpvb20iLGJyb3dzZXJzOlsiRTEyIiwiUzMuMSIsIkMxIiwiSUU1LjUiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwifV0sc3ludGF4OiJhdXRvIHwgPG51bWJlcj4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo2NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvem9vbSJ9XSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBTcGVjaWZpZXMgdGhlIG1hZ25pZmljYXRpb24gc2NhbGUgb2YgdGhlIG9iamVjdC4gU2VlICd0cmFuc2Zvcm06IHNjYWxlKCknIGZvciBhIHN0YW5kYXJkcy1iYXNlZCBhbHRlcm5hdGl2ZS4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpbnRlZ2VyIiwibnVtYmVyIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLWltZS1hbGlnbiIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgYWZ0ZXIiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIElucHV0IE1ldGhvZCBFZGl0b3IgKElNRSkgY2FuZGlkYXRlIHdpbmRvdyBib3ggcmVsYXRpdmUgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIElNRSBjb21wb3NpdGlvbiBpcyBhY3RpdmUuIn0se25hbWU6Ii1tb3otYmluZGluZyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8dXJsPiB8IG5vbmUiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otYmluZGluZyJ9XSxkZXNjcmlwdGlvbjoiVGhlIC1tb3otYmluZGluZyBDU1MgcHJvcGVydHkgaXMgdXNlZCBieSBNb3ppbGxhLWJhc2VkIGFwcGxpY2F0aW9ucyB0byBhdHRhY2ggYW4gWEJMIGJpbmRpbmcgdG8gYSBET00gZWxlbWVudC4ifSx7bmFtZToiLW1vei1jb250ZXh0LXByb3BlcnRpZXMiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IFsgZmlsbCB8IGZpbGwtb3BhY2l0eSB8IHN0cm9rZSB8IHN0cm9rZS1vcGFjaXR5IF0jIixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGNTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1jb250ZXh0LXByb3BlcnRpZXMifV0sZGVzY3JpcHRpb246YElmIHlvdSByZWZlcmVuY2UgYW4gU1ZHIGltYWdlIGluIGEgd2VicGFnZSAoc3VjaCBhcyB3aXRoIHRoZSA8aW1nPiBlbGVtZW50IG9yIGFzIGEgYmFja2dyb3VuZCBpbWFnZSksIHRoZSBTVkcgaW1hZ2UgY2FuIGNvb3JkaW5hdGUgd2l0aCB0aGUgZW1iZWRkaW5nIGVsZW1lbnQgKGl0cyBjb250ZXh0KSB0byBoYXZlIHRoZSBpbWFnZSBhZG9wdCBwcm9wZXJ0eSB2YWx1ZXMgc2V0IG9uIHRoZSBlbWJlZGRpbmcgZWxlbWVudC4gVG8gZG8gdGhpcyB0aGUgZW1iZWRkaW5nIGVsZW1lbnQgbmVlZHMgdG8gbGlzdCB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSB0byBiZSBtYWRlIGF2YWlsYWJsZSB0byB0aGUgaW1hZ2UgYnkgbGlzdGluZyB0aGVtIGFzIHZhbHVlcyBvZiB0aGUgLW1vei1jb250ZXh0LXByb3BlcnRpZXMgcHJvcGVydHksIGFuZCB0aGUgaW1hZ2UgbmVlZHMgdG8gb3B0IGluIHRvIHVzaW5nIHRob3NlIHByb3BlcnRpZXMgYnkgdXNpbmcgdmFsdWVzIHN1Y2ggYXMgdGhlIGNvbnRleHQtZmlsbCB2YWx1ZS4KClRoaXMgZmVhdHVyZSBpcyBhdmFpbGFibGUgc2luY2UgRmlyZWZveCA1NSwgYnV0IGlzIG9ubHkgY3VycmVudGx5IHN1cHBvcnRlZCB3aXRoIFNWRyBpbWFnZXMgbG9hZGVkIHZpYSBjaHJvbWU6Ly8gb3IgcmVzb3VyY2U6Ly8gVVJMcy4gVG8gZXhwZXJpbWVudCB3aXRoIHRoZSBmZWF0dXJlIGluIFNWRyBvbiB0aGUgV2ViIGl0IGlzIG5lY2Vzc2FyeSB0byBzZXQgdGhlIHN2Zy5jb250ZXh0LXByb3BlcnRpZXMuY29udGVudC5lbmFibGVkIHByZWYgdG8gdHJ1ZS5gfSx7bmFtZToiLW1vei1mbG9hdC1lZGdlIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImJvcmRlci1ib3ggfCBjb250ZW50LWJveCB8IG1hcmdpbi1ib3ggfCBwYWRkaW5nLWJveCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1mbG9hdC1lZGdlIn1dLGRlc2NyaXB0aW9uOiJUaGUgbm9uLXN0YW5kYXJkIC1tb3otZmxvYXQtZWRnZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGhlaWdodCBhbmQgd2lkdGggcHJvcGVydGllcyBvZiB0aGUgZWxlbWVudCBpbmNsdWRlIHRoZSBtYXJnaW4sIGJvcmRlciwgb3IgcGFkZGluZyB0aGlja25lc3MuIn0se25hbWU6Ii1tb3otZm9yY2UtYnJva2VuLWltYWdlLWljb24iLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiMCB8IDEiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otZm9yY2UtYnJva2VuLWltYWdlLWljb24ifV0sZGVzY3JpcHRpb246IlRoZSAtbW96LWZvcmNlLWJyb2tlbi1pbWFnZS1pY29uIGV4dGVuZGVkIENTUyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBmb3JjZSB0aGUgYnJva2VuIGltYWdlIGljb24gdG8gYmUgc2hvd24gZXZlbiB3aGVuIGEgYnJva2VuIGltYWdlIGhhcyBhbiBhbHQgYXR0cmlidXRlLiJ9LHtuYW1lOiItbW96LWltYWdlLXJlZ2lvbiIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8c2hhcGU+IHwgYXV0byIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1pbWFnZS1yZWdpb24ifV0sZGVzY3JpcHRpb246IkZvciBjZXJ0YWluIFhVTCBlbGVtZW50cyBhbmQgcHNldWRvLWVsZW1lbnRzIHRoYXQgdXNlIGFuIGltYWdlIGZyb20gdGhlIGxpc3Qtc3R5bGUtaW1hZ2UgcHJvcGVydHksIHRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIGEgcmVnaW9uIG9mIHRoZSBpbWFnZSB0aGF0IGlzIHVzZWQgaW4gcGxhY2Ugb2YgdGhlIHdob2xlIGltYWdlLiBUaGlzIGFsbG93cyBlbGVtZW50cyB0byB1c2UgZGlmZmVyZW50IHBpZWNlcyBvZiB0aGUgc2FtZSBpbWFnZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLiJ9LHtuYW1lOiItbW96LW9yaWVudCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJpbmxpbmUgfCBibG9jayB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1vcmllbnQifV0sZGVzY3JpcHRpb246IlRoZSAtbW96LW9yaWVudCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgZWxlbWVudCB0byB3aGljaCBpdCdzIGFwcGxpZWQuIn0se25hbWU6Ii1tb3otb3V0bGluZS1yYWRpdXMiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPnsxLDR9IFsgLyA8b3V0bGluZS1yYWRpdXM+ezEsNH0gXT8iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otb3V0bGluZS1yYWRpdXMifV0sZGVzY3JpcHRpb246IkluIE1vemlsbGEgYXBwbGljYXRpb25zIGxpa2UgRmlyZWZveCwgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMgQ1NTIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIGdpdmUgYW4gZWxlbWVudCdzIG91dGxpbmUgcm91bmRlZCBjb3JuZXJzLiJ9LHtuYW1lOiItbW96LW91dGxpbmUtcmFkaXVzLWJvdHRvbWxlZnQiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1vdXRsaW5lLXJhZGl1cy1ib3R0b21sZWZ0In1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMtYm90dG9tbGVmdCBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gcm91bmQgdGhlIGJvdHRvbS1sZWZ0IGNvcm5lciBvZiBhbiBlbGVtZW50J3Mgb3V0bGluZS4ifSx7bmFtZToiLW1vei1vdXRsaW5lLXJhZGl1cy1ib3R0b21yaWdodCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8b3V0bGluZS1yYWRpdXM+IixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LW91dGxpbmUtcmFkaXVzLWJvdHRvbXJpZ2h0In1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMtYm90dG9tcmlnaHQgQ1NTIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIHJvdW5kIHRoZSBib3R0b20tcmlnaHQgY29ybmVyIG9mIGFuIGVsZW1lbnQncyBvdXRsaW5lLiJ9LHtuYW1lOiItbW96LW91dGxpbmUtcmFkaXVzLXRvcGxlZnQiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1vdXRsaW5lLXJhZGl1cy10b3BsZWZ0In1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMtdG9wbGVmdCBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gcm91bmQgdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiBhbiBlbGVtZW50J3Mgb3V0bGluZS4ifSx7bmFtZToiLW1vei1vdXRsaW5lLXJhZGl1cy10b3ByaWdodCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8b3V0bGluZS1yYWRpdXM+IixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LW91dGxpbmUtcmFkaXVzLXRvcHJpZ2h0In1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMtdG9wcmlnaHQgQ1NTIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIHJvdW5kIHRoZSB0b3AtcmlnaHQgY29ybmVyIG9mIGFuIGVsZW1lbnQncyBvdXRsaW5lLiJ9LHtuYW1lOiItbW96LXN0YWNrLXNpemluZyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJpZ25vcmUgfCBzdHJldGNoLXRvLWZpdCIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246Ii1tb3otc3RhY2stc2l6aW5nIGlzIGFuIGV4dGVuZGVkIENTUyBwcm9wZXJ0eS4gTm9ybWFsbHksIGEgc3RhY2sgd2lsbCBjaGFuZ2UgaXRzIHNpemUgc28gdGhhdCBhbGwgb2YgaXRzIGNoaWxkIGVsZW1lbnRzIGFyZSBjb21wbGV0ZWx5IHZpc2libGUuIEZvciBleGFtcGxlLCBtb3ZpbmcgYSBjaGlsZCBvZiB0aGUgc3RhY2sgZmFyIHRvIHRoZSByaWdodCB3aWxsIHdpZGVuIHRoZSBzdGFjayBzbyB0aGUgY2hpbGQgcmVtYWlucyB2aXNpYmxlLiJ9LHtuYW1lOiItbW96LXRleHQtYmxpbmsiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGJsaW5rIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC1tb3otdGV4dC1ibGluayBub24tc3RhbmRhcmQgTW96aWxsYSBDU1MgZXh0ZW5zaW9uIHNwZWNpZmllcyB0aGUgYmxpbmsgbW9kZS4ifSx7bmFtZToiLW1vei11c2VyLWlucHV0IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCBub25lIHwgZW5hYmxlZCB8IGRpc2FibGVkIixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LXVzZXItaW5wdXQifV0sZGVzY3JpcHRpb246IkluIE1vemlsbGEgYXBwbGljYXRpb25zLCAtbW96LXVzZXItaW5wdXQgZGV0ZXJtaW5lcyBpZiBhbiBlbGVtZW50IHdpbGwgYWNjZXB0IHVzZXIgaW5wdXQuIn0se25hbWU6Ii1tb3otdXNlci1tb2RpZnkiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoicmVhZC1vbmx5IHwgcmVhZC13cml0ZSB8IHdyaXRlLW9ubHkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLW1vei11c2VyLW1vZGlmeSBwcm9wZXJ0eSBoYXMgbm8gZWZmZWN0LiBJdCB3YXMgb3JpZ2luYWxseSBwbGFubmVkIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgY29udGVudCBvZiBhbiBlbGVtZW50IGNhbiBiZSBlZGl0ZWQgYnkgYSB1c2VyLiJ9LHtuYW1lOiItbW96LXdpbmRvdy1kcmFnZ2luZyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJkcmFnIHwgbm8tZHJhZyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlRoZSAtbW96LXdpbmRvdy1kcmFnZ2luZyBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYSB3aW5kb3cgaXMgZHJhZ2dhYmxlIG9yIG5vdC4gSXQgb25seSB3b3JrcyBpbiBDaHJvbWUgY29kZSwgYW5kIG9ubHkgb24gTWFjIE9TIFguIn0se25hbWU6Ii1tb3otd2luZG93LXNoYWRvdyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJkZWZhdWx0IHwgbWVudSB8IHRvb2x0aXAgfCBzaGVldCB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLW1vei13aW5kb3ctc2hhZG93IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhIHdpbmRvdyB3aWxsIGhhdmUgYSBzaGFkb3cuIEl0IG9ubHkgd29ya3Mgb24gTWFjIE9TIFguIn0se25hbWU6Ii13ZWJraXQtYm9yZGVyLWJlZm9yZSIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8J2JvcmRlci13aWR0aCc+IHx8IDwnYm9yZGVyLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFNzkiLCJTNS4xIiwiQzgiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1ib3JkZXItYmVmb3JlIn1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1ib3JkZXItYmVmb3JlIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyB0aGUgaW5kaXZpZHVhbCBsb2dpY2FsIGJsb2NrIHN0YXJ0IGJvcmRlciBwcm9wZXJ0eSB2YWx1ZXMgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiItd2Via2l0LWJvcmRlci1iZWZvcmUtY29sb3IiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LWJvcmRlci1iZWZvcmUtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBpbmRpdmlkdWFsIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYm9yZGVyIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiLXdlYmtpdC1ib3JkZXItYmVmb3JlLXN0eWxlIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjwnYm9yZGVyLXN0eWxlJz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1ib3JkZXItYmVmb3JlLXN0eWxlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBzdHlsZSBvZiB0aGUgaW5kaXZpZHVhbCBsb2dpY2FsIGJsb2NrIHN0YXJ0IGJvcmRlciBpbiBhIHNpbmdsZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIn0se25hbWU6Ii13ZWJraXQtYm9yZGVyLWJlZm9yZS13aWR0aCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8J2JvcmRlci13aWR0aCc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtYm9yZGVyLWJlZm9yZS13aWR0aCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGluZGl2aWR1YWwgbG9naWNhbCBibG9jayBzdGFydCBib3JkZXIgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiItd2Via2l0LWxpbmUtY2xhbXAiLHN5bnRheDoibm9uZSB8IDxpbnRlZ2VyPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE3IiwiRkY2OCIsIlM1IiwiQzYiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1saW5lLWNsYW1wIn1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1saW5lLWNsYW1wIENTUyBwcm9wZXJ0eSBhbGxvd3MgbGltaXRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIGEgYmxvY2sgY29udGFpbmVyIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGxpbmVzLiJ9LHtuYW1lOiItd2Via2l0LW1hc2siLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8bWFzay1yZWZlcmVuY2U+IHx8IDxwb3NpdGlvbj4gWyAvIDxiZy1zaXplPiBdPyB8fCA8cmVwZWF0LXN0eWxlPiB8fCBbIDxib3g+IHwgYm9yZGVyIHwgcGFkZGluZyB8IGNvbnRlbnQgfCB0ZXh0IF0gfHwgWyA8Ym94PiB8IGJvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50IF0gXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgbWFzayBDU1MgcHJvcGVydHkgYWx0ZXJzIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgYnkgZWl0aGVyIHBhcnRpYWxseSBvciBmdWxseSBoaWRpbmcgaXQuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGVpdGhlciBtYXNraW5nIG9yIGNsaXBwaW5nIHRoZSBpbWFnZSBhdCBzcGVjaWZpYyBwb2ludHMuIn0se25hbWU6Ii13ZWJraXQtbWFzay1hdHRhY2htZW50IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxhdHRhY2htZW50PiMiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiUzQiLCJDMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW1hc2stYXR0YWNobWVudCJ9XSxkZXNjcmlwdGlvbjoiSWYgYSAtd2Via2l0LW1hc2staW1hZ2UgaXMgc3BlY2lmaWVkLCAtd2Via2l0LW1hc2stYXR0YWNobWVudCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1hc2sgaW1hZ2UncyBwb3NpdGlvbiBpcyBmaXhlZCB3aXRoaW4gdGhlIHZpZXdwb3J0LCBvciBzY3JvbGxzIGFsb25nIHdpdGggaXRzIGNvbnRhaW5pbmcgYmxvY2suIn0se25hbWU6Ii13ZWJraXQtbWFzay1jb21wb3NpdGUiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbXBvc2l0ZS1zdHlsZT4jIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIkZGNTMiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLWNvbXBvc2l0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbWFzay1jb21wb3NpdGUgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBtYW5uZXIgaW4gd2hpY2ggbXVsdGlwbGUgbWFzayBpbWFnZXMgYXBwbGllZCB0byB0aGUgc2FtZSBlbGVtZW50IGFyZSBjb21wb3NpdGVkIHdpdGggb25lIGFub3RoZXIuIE1hc2sgaW1hZ2VzIGFyZSBjb21wb3NpdGVkIGluIHRoZSBvcHBvc2l0ZSBvcmRlciB0aGF0IHRoZXkgYXJlIGRlY2xhcmVkIHdpdGggdGhlIC13ZWJraXQtbWFzay1pbWFnZSBwcm9wZXJ0eS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXBvc2l0aW9uIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxwb3NpdGlvbj4jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIG1hc2stcG9zaXRpb24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGluaXRpYWwgcG9zaXRpb24sIHJlbGF0aXZlIHRvIHRoZSBtYXNrIHBvc2l0aW9uIGxheWVyIGRlZmluZWQgYnkgbWFzay1vcmlnaW4sIGZvciBlYWNoIGRlZmluZWQgbWFzayBpbWFnZS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXgiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgbGVmdCB8IGNlbnRlciB8IHJpZ2h0IF0jIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIkZGNDkiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXgifV0sZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LW1hc2stcG9zaXRpb24teCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaW5pdGlhbCBob3Jpem9udGFsIHBvc2l0aW9uIG9mIGEgbWFzayBpbWFnZS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXkiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgdG9wIHwgY2VudGVyIHwgYm90dG9tIF0jIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIkZGNDkiLCJTMy4xIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXkifV0sZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LW1hc2stcG9zaXRpb24teSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaW5pdGlhbCB2ZXJ0aWNhbCBwb3NpdGlvbiBvZiBhIG1hc2sgaW1hZ2UuIn0se25hbWU6Ii13ZWJraXQtbWFzay1yZXBlYXQteCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJyZXBlYXQgfCBuby1yZXBlYXQgfCBzcGFjZSB8IHJvdW5kIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIlM1IiwiQzMiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1tYXNrLXJlcGVhdC14In1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1tYXNrLXJlcGVhdC14IHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGFuZCBob3cgYSBtYXNrIGltYWdlIGlzIHJlcGVhdGVkICh0aWxlZCkgaG9yaXpvbnRhbGx5LiJ9LHtuYW1lOiItd2Via2l0LW1hc2stcmVwZWF0LXkiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoicmVwZWF0IHwgbm8tcmVwZWF0IHwgc3BhY2UgfCByb3VuZCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTgiLCJTNSIsIkMzIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtbWFzay1yZXBlYXQteSJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbWFzay1yZXBlYXQteSBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhbmQgaG93IGEgbWFzayBpbWFnZSBpcyByZXBlYXRlZCAodGlsZWQpIHZlcnRpY2FsbHkuIn0se25hbWU6ImFjY2VudC1jb2xvciIsc3ludGF4OiJhdXRvIHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTkzIiwiRkY5MiIsIlMxNS40IiwiQzkzIiwiTzc5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FjY2VudC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGVsZW1lbnRzIGFjY2VudCJ9LHtuYW1lOiJhbGlnbi10cmFja3MiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Ilsgbm9ybWFsIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyA8Y29udGVudC1wb3NpdGlvbj4gXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYWxpZ24tdHJhY2tzIn1dLGRlc2NyaXB0aW9uOiJUaGUgYWxpZ24tdHJhY2tzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBhbGlnbm1lbnQgaW4gdGhlIG1hc29ucnkgYXhpcyBmb3IgZ3JpZCBjb250YWluZXJzIHRoYXQgaGF2ZSBtYXNvbnJ5IGluIHRoZWlyIGJsb2NrIGF4aXMuIn0se25hbWU6ImFuaW1hdGlvbi10aW1lbGluZSIsc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbi10aW1lbGluZT4jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjk3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi10aW1lbGluZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBuYW1lcyBvZiBvbmUgb3IgbW9yZSBAc2Nyb2xsLXRpbWVsaW5lIGF0LXJ1bGVzIHRvIGRlc2NyaWJlIHRoZSBlbGVtZW50J3Mgc2Nyb2xsIGFuaW1hdGlvbnMuIn0se25hbWU6ImFwcGVhcmFuY2UiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCBhdXRvIHwgdGV4dGZpZWxkIHwgbWVudWxpc3QtYnV0dG9uIHwgPGNvbXBhdC1hdXRvPiIscmVsZXZhbmNlOjYyLGJyb3dzZXJzOlsiRTg0IiwiRkY4MCIsIlMxNS40IiwiQzg0IiwiTzcwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FwcGVhcmFuY2UifV0sZGVzY3JpcHRpb246IkNoYW5nZXMgdGhlIGFwcGVhcmFuY2Ugb2YgYnV0dG9ucyBhbmQgb3RoZXIgY29udHJvbHMgdG8gcmVzZW1ibGUgbmF0aXZlIGNvbnRyb2xzLiJ9LHtuYW1lOiJhc3BlY3QtcmF0aW8iLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6ImF1dG8gfCA8cmF0aW8+IixyZWxldmFuY2U6NTIsYnJvd3NlcnM6WyJFODgiLCJGRjg5IiwiUzE1IiwiQzg4IiwiTzc0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FzcGVjdC1yYXRpbyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGFzcGVjdC1yYXRpbyAgIENTUyBwcm9wZXJ0eSBzZXRzIGEgcHJlZmVycmVkIGFzcGVjdCByYXRpbyBmb3IgdGhlIGJveCwgd2hpY2ggd2lsbCBiZSB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbiBvZiBhdXRvIHNpemVzIGFuZCBzb21lIG90aGVyIGxheW91dCBmdW5jdGlvbnMuIn0se25hbWU6ImF6aW11dGgiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPGFuZ2xlPiB8IFsgWyBsZWZ0LXNpZGUgfCBmYXItbGVmdCB8IGxlZnQgfCBjZW50ZXItbGVmdCB8IGNlbnRlciB8IGNlbnRlci1yaWdodCB8IHJpZ2h0IHwgZmFyLXJpZ2h0IHwgcmlnaHQtc2lkZSBdIHx8IGJlaGluZCBdIHwgbGVmdHdhcmRzIHwgcmlnaHR3YXJkcyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkluIGNvbWJpbmF0aW9uIHdpdGggZWxldmF0aW9uLCB0aGUgYXppbXV0aCBDU1MgcHJvcGVydHkgZW5hYmxlcyBkaWZmZXJlbnQgYXVkaW8gc291cmNlcyB0byBiZSBwb3NpdGlvbmVkIHNwYXRpYWxseSBmb3IgYXVyYWwgcHJlc2VudGF0aW9uLiBUaGlzIGlzIGltcG9ydGFudCBpbiB0aGF0IGl0IHByb3ZpZGVzIGEgbmF0dXJhbCB3YXkgdG8gdGVsbCBzZXZlcmFsIHZvaWNlcyBhcGFydCwgYXMgZWFjaCBjYW4gYmUgcG9zaXRpb25lZCB0byBvcmlnaW5hdGUgYXQgYSBkaWZmZXJlbnQgbG9jYXRpb24gb24gdGhlIHNvdW5kIHN0YWdlLiBTdGVyZW8gb3V0cHV0IHByb2R1Y2UgYSBsYXRlcmFsIHNvdW5kIHN0YWdlLCB3aGlsZSBiaW5hdXJhbCBoZWFkcGhvbmVzIGFuZCBtdWx0aS1zcGVha2VyIHNldHVwcyBhbGxvdyBmb3IgYSBmdWxseSB0aHJlZS1kaW1lbnNpb25hbCBzdGFnZS4ifSx7bmFtZToiYmFja2Ryb3AtZmlsdGVyIixzeW50YXg6Im5vbmUgfCA8ZmlsdGVyLWZ1bmN0aW9uLWxpc3Q+IixyZWxldmFuY2U6NTMsYnJvd3NlcnM6WyJFMTciLCJGRjcwIiwiUzkiLCJDNzYiLCJPNjMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2Ryb3AtZmlsdGVyIn1dLGRlc2NyaXB0aW9uOiJUaGUgYmFja2Ryb3AtZmlsdGVyIENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBhcHBseSBncmFwaGljYWwgZWZmZWN0cyBzdWNoIGFzIGJsdXJyaW5nIG9yIGNvbG9yIHNoaWZ0aW5nIHRvIHRoZSBhcmVhIGJlaGluZCBhbiBlbGVtZW50LiBCZWNhdXNlIGl0IGFwcGxpZXMgdG8gZXZlcnl0aGluZyBiZWhpbmQgdGhlIGVsZW1lbnQsIHRvIHNlZSB0aGUgZWZmZWN0IHlvdSBtdXN0IG1ha2UgdGhlIGVsZW1lbnQgb3IgaXRzIGJhY2tncm91bmQgYXQgbGVhc3QgcGFydGlhbGx5IHRyYW5zcGFyZW50LiJ9LHtuYW1lOiJib3JkZXItYmxvY2siLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1ibG9jayBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgdGhlIGluZGl2aWR1YWwgbG9naWNhbCBibG9jayBib3JkZXIgcHJvcGVydHkgdmFsdWVzIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiYm9yZGVyLWJsb2NrLWNvbG9yIixzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stY29sb3IifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2stY29sb3IgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGNvbG9yIG9mIHRoZSBsb2dpY2FsIGJsb2NrIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciBjb2xvciBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3AtY29sb3IgYW5kIGJvcmRlci1ib3R0b20tY29sb3IsIG9yIGJvcmRlci1yaWdodC1jb2xvciBhbmQgYm9yZGVyLWxlZnQtY29sb3IgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItYmxvY2stc3R5bGUiLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stc3R5bGUifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2stc3R5bGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHN0eWxlIG9mIHRoZSBsb2dpY2FsIGJsb2NrIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciBzdHlsZSBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3Atc3R5bGUgYW5kIGJvcmRlci1ib3R0b20tc3R5bGUsIG9yIGJvcmRlci1sZWZ0LXN0eWxlIGFuZCBib3JkZXItcmlnaHQtc3R5bGUgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1ibG9jay13aWR0aCIsc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1ibG9jay13aWR0aCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIGxvZ2ljYWwgYmxvY2sgYm9yZGVycyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHdpZHRoIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgYm9yZGVyLXRvcC13aWR0aCBhbmQgYm9yZGVyLWJvdHRvbS13aWR0aCwgb3IgYm9yZGVyLWxlZnQtd2lkdGgsIGFuZCBib3JkZXItcmlnaHQtd2lkdGggcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItZW5kLWVuZC1yYWRpdXMiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODkiLCJGRjY2IiwiUzE1IiwiQzg5IiwiTzc1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1lbmQtZW5kLXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1lbmQtZW5kLXJhZGl1cyBDU1MgcHJvcGVydHkgZGVmaW5lcyBhIGxvZ2ljYWwgYm9yZGVyIHJhZGl1cyBvbiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHJhZGl1cyB0aGF0IGRlcGVuZHMgb24gb24gdGhlIGVsZW1lbnQncyB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1lbmQtc3RhcnQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg5IiwiRkY2NiIsIlMxNSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItZW5kLXN0YXJ0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1lbmQtc3RhcnQtcmFkaXVzIENTUyBwcm9wZXJ0eSBkZWZpbmVzIGEgbG9naWNhbCBib3JkZXIgcmFkaXVzIG9uIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgcmFkaXVzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWlubGluZSIsc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiB8fCA8J2JvcmRlci10b3Atc3R5bGUnPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIHRoZSBpbmRpdmlkdWFsIGxvZ2ljYWwgaW5saW5lIGJvcmRlciBwcm9wZXJ0eSB2YWx1ZXMgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiJib3JkZXItaW5saW5lLWNvbG9yIixzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyLWlubGluZS1jb2xvciBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgY29sb3Igb2YgdGhlIGxvZ2ljYWwgaW5saW5lIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciBjb2xvciBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3AtY29sb3IgYW5kIGJvcmRlci1ib3R0b20tY29sb3IsIG9yIGJvcmRlci1yaWdodC1jb2xvciBhbmQgYm9yZGVyLWxlZnQtY29sb3IgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItaW5saW5lLXN0eWxlIixzeW50YXg6IjwnYm9yZGVyLXRvcC1zdHlsZSc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUtc3R5bGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHN0eWxlIG9mIHRoZSBsb2dpY2FsIGlubGluZSBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgc3R5bGUgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLXN0eWxlIGFuZCBib3JkZXItYm90dG9tLXN0eWxlLCBvciBib3JkZXItbGVmdC1zdHlsZSBhbmQgYm9yZGVyLXJpZ2h0LXN0eWxlIHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItaW5saW5lLXdpZHRoIixzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUtd2lkdGggQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBsb2dpY2FsIGlubGluZSBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgd2lkdGggZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLXdpZHRoIGFuZCBib3JkZXItYm90dG9tLXdpZHRoLCBvciBib3JkZXItbGVmdC13aWR0aCwgYW5kIGJvcmRlci1yaWdodC13aWR0aCBwcm9wZXJ0eSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1zdGFydC1lbmQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg5IiwiRkY2NiIsIlMxNSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItc3RhcnQtZW5kLXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1zdGFydC1lbmQtcmFkaXVzIENTUyBwcm9wZXJ0eSBkZWZpbmVzIGEgbG9naWNhbCBib3JkZXIgcmFkaXVzIG9uIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgcmFkaXVzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1cyIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4OSIsIkZGNjYiLCJTMTUiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1zdGFydC1zdGFydC1yYWRpdXMgQ1NTIHByb3BlcnR5IGRlZmluZXMgYSBsb2dpY2FsIGJvcmRlciByYWRpdXMgb24gYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciByYWRpdXMgdGhhdCBkZXBlbmRzIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3gtYWxpZ24iLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoic3RhcnQgfCBjZW50ZXIgfCBlbmQgfCBiYXNlbGluZSB8IHN0cmV0Y2giLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtYWxpZ24ifV0sZGVzY3JpcHRpb246IlRoZSBib3gtYWxpZ24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBob3cgYW4gZWxlbWVudCBhbGlnbnMgaXRzIGNvbnRlbnRzIGFjcm9zcyBpdHMgbGF5b3V0IGluIGEgcGVycGVuZGljdWxhciBkaXJlY3Rpb24uIFRoZSBlZmZlY3Qgb2YgdGhlIHByb3BlcnR5IGlzIG9ubHkgdmlzaWJsZSBpZiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgYm94LiJ9LHtuYW1lOiJib3gtZGlyZWN0aW9uIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vcm1hbCB8IHJldmVyc2UgfCBpbmhlcml0IixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LWRpcmVjdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1kaXJlY3Rpb24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBub3JtYWxseSAoZnJvbSB0aGUgdG9wIG9yIGxlZnQgZWRnZSksIG9yIGluIHJldmVyc2UgKGZyb20gdGhlIGJvdHRvbSBvciByaWdodCBlZGdlKS4ifSx7bmFtZToiYm94LWZsZXgiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG51bWJlcj4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtZmxleCJ9XSxkZXNjcmlwdGlvbjoiVGhlIC1tb3otYm94LWZsZXggYW5kIC13ZWJraXQtYm94LWZsZXggQ1NTIHByb3BlcnRpZXMgc3BlY2lmeSBob3cgYSAtbW96LWJveCBvciAtd2Via2l0LWJveCBncm93cyB0byBmaWxsIHRoZSBib3ggdGhhdCBjb250YWlucyBpdCwgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgY29udGFpbmluZyBib3gncyBsYXlvdXQuIn0se25hbWU6ImJveC1mbGV4LWdyb3VwIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1mbGV4LWdyb3VwIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LWZsZXgtZ3JvdXAgQ1NTIHByb3BlcnR5IGFzc2lnbnMgdGhlIGZsZXhib3gncyBjaGlsZCBlbGVtZW50cyB0byBhIGZsZXggZ3JvdXAuIn0se25hbWU6ImJveC1saW5lcyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJzaW5nbGUgfCBtdWx0aXBsZSIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1saW5lcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1saW5lcyBDU1MgcHJvcGVydHkgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBib3ggbWF5IGhhdmUgYSBzaW5nbGUgb3IgbXVsdGlwbGUgbGluZXMgKHJvd3MgZm9yIGhvcml6b250YWxseSBvcmllbnRlZCBib3hlcywgY29sdW1ucyBmb3IgdmVydGljYWxseSBvcmllbnRlZCBib3hlcykuIn0se25hbWU6ImJveC1vcmRpbmFsLWdyb3VwIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1vcmRpbmFsLWdyb3VwIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LW9yZGluYWwtZ3JvdXAgQ1NTIHByb3BlcnR5IGFzc2lnbnMgdGhlIGZsZXhib3gncyBjaGlsZCBlbGVtZW50cyB0byBhbiBvcmRpbmFsIGdyb3VwLiJ9LHtuYW1lOiJib3gtb3JpZW50IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Imhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcyB8IGluaGVyaXQiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtb3JpZW50In1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LW9yaWVudCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYW4gZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkuIn0se25hbWU6ImJveC1wYWNrIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InN0YXJ0IHwgY2VudGVyIHwgZW5kIHwganVzdGlmeSIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1wYWNrIn1dLGRlc2NyaXB0aW9uOiJUaGUgLW1vei1ib3gtcGFjayBhbmQgLXdlYmtpdC1ib3gtcGFjayBDU1MgcHJvcGVydGllcyBzcGVjaWZ5IGhvdyBhIC1tb3otYm94IG9yIC13ZWJraXQtYm94IHBhY2tzIGl0cyBjb250ZW50cyBpbiB0aGUgZGlyZWN0aW9uIG9mIGl0cyBsYXlvdXQuIFRoZSBlZmZlY3Qgb2YgdGhpcyBpcyBvbmx5IHZpc2libGUgaWYgdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGJveC4ifSx7bmFtZToicHJpbnQtY29sb3ItYWRqdXN0IixzeW50YXg6ImVjb25vbXkgfCBleGFjdCIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY5NyIsIlMxNS40IiwiQzE3IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3ByaW50LWNvbG9yLWFkanVzdCJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGF0IG9wdGltaXphdGlvbiB0aGUgdXNlciBhZ2VudCBpcyBhbGxvd2VkIHRvIGRvIHdoZW4gYWRqdXN0aW5nIHRoZSBhcHBlYXJhbmNlIGZvciBhbiBvdXRwdXQgZGV2aWNlLiJ9LHtuYW1lOiJjb2xvci1zY2hlbWUiLHN5bnRheDoibm9ybWFsIHwgWyBsaWdodCB8IGRhcmsgfCA8Y3VzdG9tLWlkZW50PiBdKyAmJiBvbmx5PyIscmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiRTgxIiwiRkY5NiIsIlMxMyIsIkM4MSIsIk82OCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2xvci1zY2hlbWUifV0sZGVzY3JpcHRpb246IlRoZSBjb2xvci1zY2hlbWUgQ1NTIHByb3BlcnR5IGFsbG93cyBhbiBlbGVtZW50IHRvIGluZGljYXRlIHdoaWNoIGNvbG9yIHNjaGVtZXMgaXQgY2FuIGNvbWZvcnRhYmx5IGJlIHJlbmRlcmVkIGluLiJ9LHtuYW1lOiJjb250ZW50LXZpc2liaWxpdHkiLHN5bnRheDoidmlzaWJsZSB8IGF1dG8gfCBoaWRkZW4iLHJlbGV2YW5jZTo1MSxicm93c2VyczpbIkU4NSIsIlMxNS40IiwiQzg1IiwiTzcxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRlbnQtdmlzaWJpbGl0eSJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciBvciBub3QgYW4gZWxlbWVudCByZW5kZXJzIGl0cyBjb250ZW50cyBhdCBhbGwsIGFsb25nIHdpdGggZm9yY2luZyBhIHN0cm9uZyBzZXQgb2YgY29udGFpbm1lbnRzLCBhbGxvd2luZyB1c2VyIGFnZW50cyB0byBwb3RlbnRpYWxseSBvbWl0IGxhcmdlIHN3YXRoZXMgb2YgbGF5b3V0IGFuZCByZW5kZXJpbmcgd29yayB1bnRpbCBpdCBiZWNvbWVzIG5lZWRlZC4ifSx7bmFtZToiY291bnRlci1zZXQiLHN5bnRheDoiWyA8Y291bnRlci1uYW1lPiA8aW50ZWdlcj4/IF0rIHwgbm9uZSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg1IiwiRkY2OCIsIkM4NSIsIk83MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb3VudGVyLXNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNvdW50ZXItc2V0IENTUyBwcm9wZXJ0eSBzZXRzIGEgQ1NTIGNvdW50ZXIgdG8gYSBnaXZlbiB2YWx1ZS4gSXQgbWFuaXB1bGF0ZXMgdGhlIHZhbHVlIG9mIGV4aXN0aW5nIGNvdW50ZXJzLCBhbmQgd2lsbCBvbmx5IGNyZWF0ZSBuZXcgY291bnRlcnMgaWYgdGhlcmUgaXNuJ3QgYWxyZWFkeSBhIGNvdW50ZXIgb2YgdGhlIGdpdmVuIG5hbWUgb24gdGhlIGVsZW1lbnQuIn0se25hbWU6ImZvbnQtb3B0aWNhbC1zaXppbmciLHN5bnRheDoiYXV0byB8IG5vbmUiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxNyIsIkZGNjIiLCJTMTEiLCJDNzkiLCJPNjYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1vcHRpY2FsLXNpemluZyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtb3B0aWNhbC1zaXppbmcgQ1NTIHByb3BlcnR5IGFsbG93cyBkZXZlbG9wZXJzIHRvIGNvbnRyb2wgd2hldGhlciBicm93c2VycyByZW5kZXIgdGV4dCB3aXRoIHNsaWdodGx5IGRpZmZlcmluZyB2aXN1YWwgcmVwcmVzZW50YXRpb25zIHRvIG9wdGltaXplIHZpZXdpbmcgYXQgZGlmZmVyZW50IHNpemVzLCBvciBub3QuIFRoaXMgb25seSB3b3JrcyBmb3IgZm9udHMgdGhhdCBoYXZlIGFuIG9wdGljYWwgc2l6ZSB2YXJpYXRpb24gYXhpcy4ifSx7bmFtZToiZm9udC12YXJpYXRpb24tc2V0dGluZ3MiLHN5bnRheDoibm9ybWFsIHwgWyA8c3RyaW5nPiA8bnVtYmVyPiBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE3IiwiRkY2MiIsIlMxMSIsIkM2MiIsIk80OSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhdGlvbi1zZXR0aW5ncyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIENTUyBwcm9wZXJ0eSBwcm92aWRlcyBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIE9wZW5UeXBlIG9yIFRydWVUeXBlIGZvbnQgdmFyaWF0aW9ucywgYnkgc3BlY2lmeWluZyB0aGUgZm91ciBsZXR0ZXIgYXhpcyBuYW1lcyBvZiB0aGUgZmVhdHVyZXMgeW91IHdhbnQgdG8gdmFyeSwgYWxvbmcgd2l0aCB0aGVpciB2YXJpYXRpb24gdmFsdWVzLiJ9LHtuYW1lOiJmb250LXNtb290aCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgbmV2ZXIgfCBhbHdheXMgfCA8YWJzb2x1dGUtc2l6ZT4gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFNzkiLCJGRjI1IiwiUzQiLCJDNSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXNtb290aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtc21vb3RoIENTUyBwcm9wZXJ0eSBjb250cm9scyB0aGUgYXBwbGljYXRpb24gb2YgYW50aS1hbGlhc2luZyB3aGVuIGZvbnRzIGFyZSByZW5kZXJlZC4ifSx7bmFtZToiZm9yY2VkLWNvbG9yLWFkanVzdCIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiYXV0byB8IG5vbmUiLHJlbGV2YW5jZTo1Mixicm93c2VyczpbIkU3OSIsIkM4OSIsIklFMTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9yY2VkLWNvbG9yLWFkanVzdCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gb3B0IGNlcnRhaW4gZWxlbWVudHMgb3V0IG9mIGZvcmNlZCBjb2xvcnMgbW9kZS4gVGhpcyB0aGVuIHJlc3RvcmVzIHRoZSBjb250cm9sIG9mIHRob3NlIHZhbHVlcyB0byBDU1MifSx7bmFtZToiZ2FwIixzeW50YXg6Ijwncm93LWdhcCc+IDwnY29sdW1uLWdhcCc+PyIscmVsZXZhbmNlOjU1LGJyb3dzZXJzOlsiRTg0IiwiRkY2MyIsIlMxNC4xIiwiQzg0IiwiTzcwIl0sZGVzY3JpcHRpb246IlRoZSBnYXAgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciByb3ctZ2FwIGFuZCBjb2x1bW4tZ2FwIHNwZWNpZnlpbmcgdGhlIGd1dHRlcnMgYmV0d2VlbiBncmlkIHJvd3MgYW5kIGNvbHVtbnMuIn0se25hbWU6ImhhbmdpbmctcHVuY3R1YXRpb24iLHN5bnRheDoibm9uZSB8IFsgZmlyc3QgfHwgWyBmb3JjZS1lbmQgfCBhbGxvdy1lbmQgXSB8fCBsYXN0IF0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIlMxMCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9oYW5naW5nLXB1bmN0dWF0aW9uIn1dLGRlc2NyaXB0aW9uOiJUaGUgaGFuZ2luZy1wdW5jdHVhdGlvbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYSBwdW5jdHVhdGlvbiBtYXJrIHNob3VsZCBoYW5nIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgYSBsaW5lIG9mIHRleHQuIEhhbmdpbmcgcHVuY3R1YXRpb24gbWF5IGJlIHBsYWNlZCBvdXRzaWRlIHRoZSBsaW5lIGJveC4ifSx7bmFtZToiaHlwaGVuYXRlLWNoYXJhY3RlciIsc3ludGF4OiJhdXRvIHwgPHN0cmluZz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGOTgiLCJTNS4xIiwiQzYiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaHlwaGVuYXRlLWNoYXJhY3RlciJ9XSxkZXNjcmlwdGlvbjoiQSBoeXBoZW5hdGUgY2hhcmFjdGVyIHVzZWQgYXQgdGhlIGVuZCBvZiBhIGxpbmUuIn0se25hbWU6ImltYWdlLXJlc29sdXRpb24iLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgZnJvbS1pbWFnZSB8fCA8cmVzb2x1dGlvbj4gXSAmJiBzbmFwPyIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UtcmVzb2x1dGlvbiBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGludHJpbnNpYyByZXNvbHV0aW9uIG9mIGFsbCByYXN0ZXIgaW1hZ2VzIHVzZWQgaW4gb3Igb24gdGhlIGVsZW1lbnQuIEl0IGFmZmVjdHMgYm90aCBjb250ZW50IGltYWdlcyAoZS5nLiByZXBsYWNlZCBlbGVtZW50cyBhbmQgZ2VuZXJhdGVkIGNvbnRlbnQpIGFuZCBkZWNvcmF0aXZlIGltYWdlcyAoc3VjaCBhcyBiYWNrZ3JvdW5kLWltYWdlKS4gVGhlIGludHJpbnNpYyByZXNvbHV0aW9uIG9mIGFuIGltYWdlIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZeKAmXMgaW50cmluc2ljIGRpbWVuc2lvbnMuIn0se25hbWU6ImluaXRpYWwtbGV0dGVyIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub3JtYWwgfCBbIDxudW1iZXI+IDxpbnRlZ2VyPj8gXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiUzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5pdGlhbC1sZXR0ZXIifV0sZGVzY3JpcHRpb246IlRoZSBpbml0aWFsLWxldHRlciBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHN0eWxpbmcgZm9yIGRyb3BwZWQsIHJhaXNlZCwgYW5kIHN1bmtlbiBpbml0aWFsIGxldHRlcnMuIn0se25hbWU6ImluaXRpYWwtbGV0dGVyLWFsaWduIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIGF1dG8gfCBhbHBoYWJldGljIHwgaGFuZ2luZyB8IGlkZW9ncmFwaGljIF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5pdGlhbC1sZXR0ZXItYWxpZ24ifV0sZGVzY3JpcHRpb246IlRoZSBpbml0aWFsLWxldHRlci1hbGlnbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBhbGlnbm1lbnQgb2YgaW5pdGlhbCBsZXR0ZXJzIHdpdGhpbiBhIHBhcmFncmFwaC4ifSx7bmFtZToiaW5wdXQtc2VjdXJpdHkiLHN5bnRheDoiYXV0byB8IG5vbmUiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgb2JzY3VyaW5nIGEgc2Vuc2l0aXZlIHRlc3QgaW5wdXQuIn0se25hbWU6Imluc2V0IixzeW50YXg6IjwndG9wJz57MSw0fSIscmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0In1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgYW5kIGlubGluZSBzdGFydCBhbmQgZW5kIG9mZnNldHMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwIHRvIHBoeXNpY2FsIG9mZnNldHMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AgYW5kIGJvdHRvbSwgb3IgcmlnaHQgYW5kIGxlZnQgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imluc2V0LWJsb2NrIixzeW50YXg6IjwndG9wJz57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtYmxvY2sgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYW5kIGVuZCBvZmZzZXRzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gcGh5c2ljYWwgb2Zmc2V0cyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIHRvcCBhbmQgYm90dG9tLCBvciByaWdodCBhbmQgbGVmdCBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtYmxvY2stZW5kIixzeW50YXg6IjwndG9wJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjMiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldC1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1ibG9jay1lbmQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgZW5kIG9mZnNldCBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgb2Zmc2V0IGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBvciBsZWZ0IHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtYmxvY2stc3RhcnQiLHN5bnRheDoiPCd0b3AnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtYmxvY2stc3RhcnQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgc3RhcnQgb2Zmc2V0IG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBvZmZzZXQgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIG9yIGxlZnQgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJpbnNldC1pbmxpbmUiLHN5bnRheDoiPCd0b3AnPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjYzIiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5zZXQtaW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5zZXQtaW5saW5lIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGJsb2NrIHN0YXJ0IGFuZCBlbmQgb2Zmc2V0cyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIG9mZnNldHMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AgYW5kIGJvdHRvbSwgb3IgcmlnaHQgYW5kIGxlZnQgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imluc2V0LWlubGluZS1lbmQiLHN5bnRheDoiPCd0b3AnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWlubGluZS1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1pbmxpbmUtZW5kIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGlubGluZSBlbmQgaW5zZXQgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGluc2V0IGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBvciBsZWZ0IHByb3BlcnR5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtaW5saW5lLXN0YXJ0IixzeW50YXg6IjwndG9wJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjMiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldC1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1pbmxpbmUtc3RhcnQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgaW5saW5lIHN0YXJ0IGluc2V0IG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBvZmZzZXQgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIG9yIGxlZnQgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJqdXN0aWZ5LXRyYWNrcyIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBub3JtYWwgfCA8Y29udGVudC1kaXN0cmlidXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gWyA8Y29udGVudC1wb3NpdGlvbj4gfCBsZWZ0IHwgcmlnaHQgXSBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY3NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9qdXN0aWZ5LXRyYWNrcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGp1c3RpZnktdHJhY2tzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBhbGlnbm1lbnQgaW4gdGhlIG1hc29ucnkgYXhpcyBmb3IgZ3JpZCBjb250YWluZXJzIHRoYXQgaGF2ZSBtYXNvbnJ5IGluIHRoZWlyIGlubGluZSBheGlzIn0se25hbWU6ImxpbmUtY2xhbXAiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIGxpbmUtY2xhbXAgcHJvcGVydHkgYWxsb3dzIGxpbWl0aW5nIHRoZSBjb250ZW50cyBvZiBhIGJsb2NrIGNvbnRhaW5lciB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBsaW5lczsgcmVtYWluaW5nIGNvbnRlbnQgaXMgZnJhZ21lbnRlZCBhd2F5IGFuZCBuZWl0aGVyIHJlbmRlcmVkIG5vciBtZWFzdXJlZC4gT3B0aW9uYWxseSwgaXQgYWxzbyBhbGxvd3MgaW5zZXJ0aW5nIGNvbnRlbnQgaW50byB0aGUgbGFzdCBsaW5lIGJveCB0byBpbmRpY2F0ZSB0aGUgY29udGludWl0eSBvZiB0cnVuY2F0ZWQvaW50ZXJydXB0ZWQgY29udGVudC4ifSx7bmFtZToibGluZS1oZWlnaHQtc3RlcCIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkM2MCIsIk80NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saW5lLWhlaWdodC1zdGVwIn1dLGRlc2NyaXB0aW9uOiJUaGUgbGluZS1oZWlnaHQtc3RlcCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgc3RlcCB1bml0cyBmb3IgbGluZSBib3ggaGVpZ2h0cy4gV2hlbiB0aGUgc3RlcCB1bml0IGlzIHBvc2l0aXZlLCBsaW5lIGJveCBoZWlnaHRzIGFyZSByb3VuZGVkIHVwIHRvIHRoZSBjbG9zZXN0IG11bHRpcGxlIG9mIHRoZSB1bml0LiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIGludmFsaWQuIn0se25hbWU6Im1hcmdpbi1ibG9jayIsc3ludGF4OiI8J21hcmdpbi1sZWZ0Jz57MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hcmdpbi1ibG9jayBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBibG9jayBzdGFydCBhbmQgZW5kIG1hcmdpbnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBwaHlzaWNhbCBtYXJnaW5zIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiJ9LHtuYW1lOiJtYXJnaW4taW5saW5lIixzeW50YXg6IjwnbWFyZ2luLWxlZnQnPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hcmdpbi1pbmxpbmUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgaW5saW5lIHN0YXJ0IGFuZCBlbmQgbWFyZ2lucyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIG1hcmdpbnMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIn0se25hbWU6Im1hcmdpbi10cmltIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgaW4tZmxvdyB8IGFsbCIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tdHJpbSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hcmdpbi10cmltIHByb3BlcnR5IGFsbG93cyB0aGUgY29udGFpbmVyIHRvIHRyaW0gdGhlIG1hcmdpbnMgb2YgaXRzIGNoaWxkcmVuIHdoZXJlIHRoZXkgYWRqb2luIHRoZSBjb250YWluZXLigJlzIGVkZ2VzLiJ9LHtuYW1lOiJtYXNrIixzeW50YXg6IjxtYXNrLWxheWVyPiMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGMiIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzayBDU1MgcHJvcGVydHkgYWx0ZXJzIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgYnkgZWl0aGVyIHBhcnRpYWxseSBvciBmdWxseSBoaWRpbmcgaXQuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGVpdGhlciBtYXNraW5nIG9yIGNsaXBwaW5nIHRoZSBpbWFnZSBhdCBzcGVjaWZpYyBwb2ludHMuIn0se25hbWU6Im1hc2stYm9yZGVyIixzeW50YXg6IjwnbWFzay1ib3JkZXItc291cmNlJz4gfHwgPCdtYXNrLWJvcmRlci1zbGljZSc+IFsgLyA8J21hc2stYm9yZGVyLXdpZHRoJz4/IFsgLyA8J21hc2stYm9yZGVyLW91dHNldCc+IF0/IF0/IHx8IDwnbWFzay1ib3JkZXItcmVwZWF0Jz4gfHwgPCdtYXNrLWJvcmRlci1tb2RlJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlciJ9XSxkZXNjcmlwdGlvbjpgVGhlIG1hc2stYm9yZGVyIENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBjcmVhdGUgYSBtYXNrIGFsb25nIHRoZSBlZGdlIG9mIGFuIGVsZW1lbnQncyBib3JkZXIuCgpUaGlzIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIGZvciBtYXNrLWJvcmRlci1zb3VyY2UsIG1hc2stYm9yZGVyLXNsaWNlLCBtYXNrLWJvcmRlci13aWR0aCwgbWFzay1ib3JkZXItb3V0c2V0LCBtYXNrLWJvcmRlci1yZXBlYXQsIGFuZCBtYXNrLWJvcmRlci1tb2RlLiBBcyB3aXRoIGFsbCBzaG9ydGhhbmQgcHJvcGVydGllcywgYW55IG9taXR0ZWQgc3ViLXZhbHVlcyB3aWxsIGJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlLmB9LHtuYW1lOiJtYXNrLWJvcmRlci1tb2RlIixzeW50YXg6Imx1bWluYW5jZSB8IGFscGhhIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlci1tb2RlIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGJsZW5kaW5nIG1vZGUgdXNlZCBpbiBhIG1hc2sgYm9yZGVyLiJ9LHtuYW1lOiJtYXNrLWJvcmRlci1vdXRzZXQiLHN5bnRheDoiWyA8bGVuZ3RoPiB8IDxudW1iZXI+IF17MSw0fSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzMuMSIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLW91dHNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stYm9yZGVyLW91dHNldCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBkaXN0YW5jZSBieSB3aGljaCBhbiBlbGVtZW50J3MgbWFzayBib3JkZXIgaXMgc2V0IG91dCBmcm9tIGl0cyBib3JkZXIgYm94LiJ9LHtuYW1lOiJtYXNrLWJvcmRlci1yZXBlYXQiLHN5bnRheDoiWyBzdHJldGNoIHwgcmVwZWF0IHwgcm91bmQgfCBzcGFjZSBdezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlci1yZXBlYXQifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlci1yZXBlYXQgQ1NTIHByb3BlcnR5IGRlZmluZXMgaG93IHRoZSBlZGdlIHJlZ2lvbnMgb2YgYSBzb3VyY2UgaW1hZ2UgYXJlIGFkanVzdGVkIHRvIGZpdCB0aGUgZGltZW5zaW9ucyBvZiBhbiBlbGVtZW50J3MgbWFzayBib3JkZXIuIn0se25hbWU6Im1hc2stYm9yZGVyLXNsaWNlIixzeW50YXg6IjxudW1iZXItcGVyY2VudGFnZT57MSw0fSBmaWxsPyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzMuMSIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLXNsaWNlIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1ib3JkZXItc2xpY2UgQ1NTIHByb3BlcnR5IGRpdmlkZXMgdGhlIGltYWdlIHNwZWNpZmllZCBieSBtYXNrLWJvcmRlci1zb3VyY2UgaW50byByZWdpb25zLiBUaGVzZSByZWdpb25zIGFyZSB1c2VkIHRvIGZvcm0gdGhlIGNvbXBvbmVudHMgb2YgYW4gZWxlbWVudCdzIG1hc2sgYm9yZGVyLiJ9LHtuYW1lOiJtYXNrLWJvcmRlci1zb3VyY2UiLHN5bnRheDoibm9uZSB8IDxpbWFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlci1zb3VyY2UifV0sZGVzY3JpcHRpb246YFRoZSBtYXNrLWJvcmRlci1zb3VyY2UgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgc291cmNlIGltYWdlIHVzZWQgdG8gY3JlYXRlIGFuIGVsZW1lbnQncyBtYXNrIGJvcmRlci4KClRoZSBtYXNrLWJvcmRlci1zbGljZSBwcm9wZXJ0eSBpcyB1c2VkIHRvIGRpdmlkZSB0aGUgc291cmNlIGltYWdlIGludG8gcmVnaW9ucywgd2hpY2ggYXJlIHRoZW4gZHluYW1pY2FsbHkgYXBwbGllZCB0byB0aGUgZmluYWwgbWFzayBib3JkZXIuYH0se25hbWU6Im1hc2stYm9yZGVyLXdpZHRoIixzeW50YXg6IlsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IDxudW1iZXI+IHwgYXV0byBdezEsNH0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlci13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stYm9yZGVyLXdpZHRoIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIGFuIGVsZW1lbnQncyBtYXNrIGJvcmRlci4ifSx7bmFtZToibWFzay1jbGlwIixzeW50YXg6IlsgPGdlb21ldHJ5LWJveD4gfCBuby1jbGlwIF0jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjUzIiwiUzE1LjQiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWNsaXAifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWNsaXAgQ1NTIHByb3BlcnR5IGRldGVybWluZXMgdGhlIGFyZWEsIHdoaWNoIGlzIGFmZmVjdGVkIGJ5IGEgbWFzay4gVGhlIHBhaW50ZWQgY29udGVudCBvZiBhbiBlbGVtZW50IG11c3QgYmUgcmVzdHJpY3RlZCB0byB0aGlzIGFyZWEuIn0se25hbWU6Im1hc2stY29tcG9zaXRlIixzeW50YXg6Ijxjb21wb3NpdGluZy1vcGVyYXRvcj4jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTgiLCJGRjUzIiwiUzE1LjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1jb21wb3NpdGUifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWNvbXBvc2l0ZSBDU1MgcHJvcGVydHkgcmVwcmVzZW50cyBhIGNvbXBvc2l0aW5nIG9wZXJhdGlvbiB1c2VkIG9uIHRoZSBjdXJyZW50IG1hc2sgbGF5ZXIgd2l0aCB0aGUgbWFzayBsYXllcnMgYmVsb3cgaXQuIn0se25hbWU6Im1hc29ucnktYXV0by1mbG93IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIHBhY2sgfCBuZXh0IF0gfHwgWyBkZWZpbml0ZS1maXJzdCB8IG9yZGVyZWQgXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNvbnJ5LWF1dG8tZmxvdyJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc29ucnktYXV0by1mbG93IENTUyBwcm9wZXJ0eSBtb2RpZmllcyBob3cgaXRlbXMgYXJlIHBsYWNlZCB3aGVuIHVzaW5nIG1hc29ucnkgaW4gQ1NTIEdyaWQgTGF5b3V0LiJ9LHtuYW1lOiJtYXRoLXN0eWxlIixzeW50YXg6Im5vcm1hbCB8IGNvbXBhY3QiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGODMiLCJTMTQuMSIsIkM4MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXRoLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWF0aC1zdHlsZSBwcm9wZXJ0eSBpbmRpY2F0ZXMgd2hldGhlciBNYXRoTUwgZXF1YXRpb25zIHNob3VsZCByZW5kZXIgd2l0aCBub3JtYWwgb3IgY29tcGFjdCBoZWlnaHQuIn0se25hbWU6Im1heC1saW5lcyIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9uZSB8IDxpbnRlZ2VyPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgbWF4LWxpZW5zIHByb3BlcnR5IGZvcmNlcyBhIGJyZWFrIGFmdGVyIGEgc2V0IG51bWJlciBvZiBsaW5lcyJ9LHtuYW1lOiJvZmZzZXQiLHN5bnRheDoiWyA8J29mZnNldC1wb3NpdGlvbic+PyBbIDwnb2Zmc2V0LXBhdGgnPiBbIDwnb2Zmc2V0LWRpc3RhbmNlJz4gfHwgPCdvZmZzZXQtcm90YXRlJz4gXT8gXT8gXSEgWyAvIDwnb2Zmc2V0LWFuY2hvcic+IF0/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjcyIiwiQzU1IiwiTzQyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29mZnNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG9mZnNldCBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgZm9yIGFuaW1hdGluZyBhbiBlbGVtZW50IGFsb25nIGEgZGVmaW5lZCBwYXRoLiJ9LHtuYW1lOiJvZmZzZXQtYW5jaG9yIixzeW50YXg6ImF1dG8gfCA8cG9zaXRpb24+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjcyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29mZnNldC1hbmNob3IifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYW4gYW5jaG9yIHBvaW50IG9mIHRoZSBib3ggcG9zaXRpb25lZCBhbG9uZyB0aGUgcGF0aC4gVGhlIGFuY2hvciBwb2ludCBzcGVjaWZpZXMgdGhlIHBvaW50IG9mIHRoZSBib3ggd2hpY2ggaXMgdG8gYmUgY29uc2lkZXJlZCBhcyB0aGUgcG9pbnQgdGhhdCBpcyBtb3ZlZCBhbG9uZyB0aGUgcGF0aC4ifSx7bmFtZToib2Zmc2V0LWRpc3RhbmNlIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzIiLCJDNTUiLCJPNDIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2Zmc2V0LWRpc3RhbmNlIn1dLGRlc2NyaXB0aW9uOiJUaGUgb2Zmc2V0LWRpc3RhbmNlIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgYSBwb3NpdGlvbiBhbG9uZyBhbiBvZmZzZXQtcGF0aC4ifSx7bmFtZToib2Zmc2V0LXBhdGgiLHN5bnRheDoibm9uZSB8IHJheSggWyA8YW5nbGU+ICYmIDxzaXplPiAmJiBjb250YWluPyBdICkgfCA8cGF0aCgpPiB8IDx1cmw+IHwgWyA8YmFzaWMtc2hhcGU+IHx8IDxnZW9tZXRyeS1ib3g+IF0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzIiLCJDNTUiLCJPNDUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2Zmc2V0LXBhdGgifV0sZGVzY3JpcHRpb246YFRoZSBvZmZzZXQtcGF0aCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBvZmZzZXQgcGF0aCB3aGVyZSB0aGUgZWxlbWVudCBnZXRzIHBvc2l0aW9uZWQuIFRoZSBleGFjdCBlbGVtZW504oCZcyBwb3NpdGlvbiBvbiB0aGUgb2Zmc2V0IHBhdGggaXMgZGV0ZXJtaW5lZCBieSB0aGUgb2Zmc2V0LWRpc3RhbmNlIHByb3BlcnR5LiBBbiBvZmZzZXQgcGF0aCBpcyBlaXRoZXIgYSBzcGVjaWZpZWQgcGF0aCB3aXRoIG9uZSBvciBtdWx0aXBsZSBzdWItcGF0aHMgb3IgdGhlIGdlb21ldHJ5IG9mIGEgbm90LXN0eWxlZCBiYXNpYyBzaGFwZS4gRWFjaCBzaGFwZSBvciBwYXRoIG11c3QgZGVmaW5lIGFuIGluaXRpYWwgcG9zaXRpb24gZm9yIHRoZSBjb21wdXRlZCB2YWx1ZSBvZiAiMCIgZm9yIG9mZnNldC1kaXN0YW5jZSBhbmQgYW4gaW5pdGlhbCBkaXJlY3Rpb24gd2hpY2ggc3BlY2lmaWVzIHRoZSByb3RhdGlvbiBvZiB0aGUgb2JqZWN0IHRvIHRoZSBpbml0aWFsIHBvc2l0aW9uLgoKSW4gdGhpcyBzcGVjaWZpY2F0aW9uLCBhIGRpcmVjdGlvbiAob3Igcm90YXRpb24pIG9mIDAgZGVncmVlcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHBvc2l0aXZlIHgtYXhpcyBpbiB0aGUgb2JqZWN04oCZcyBsb2NhbCBjb29yZGluYXRlIHN5c3RlbS4gSW4gb3RoZXIgd29yZHMsIGEgcm90YXRpb24gb2YgMCBkZWdyZWUgcG9pbnRzIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSBVQSBpZiB0aGUgb2JqZWN0IGFuZCBpdHMgYW5jZXN0b3JzIGhhdmUgbm8gdHJhbnNmb3JtYXRpb24gYXBwbGllZC5gfSx7bmFtZToib2Zmc2V0LXBvc2l0aW9uIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJhdXRvIHwgPHBvc2l0aW9uPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiB0aGUgb2Zmc2V0IHBhdGguIElmIHBvc2l0aW9uIGlzIHNwZWNpZmllZCB3aXRoIHN0YXRpYywgb2Zmc2V0LXBvc2l0aW9uIHdvdWxkIGJlIGlnbm9yZWQuIn0se25hbWU6Im9mZnNldC1yb3RhdGUiLHN5bnRheDoiWyBhdXRvIHwgcmV2ZXJzZSBdIHx8IDxhbmdsZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzIiLCJDNTYiLCJPNDMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2Zmc2V0LXJvdGF0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG9mZnNldC1yb3RhdGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgZWxlbWVudCB3aGlsZSBwb3NpdGlvbmluZyBhbG9uZyB0aGUgb2Zmc2V0IHBhdGguIn0se25hbWU6Im92ZXJmbG93LWFuY2hvciIsc3ludGF4OiJhdXRvIHwgbm9uZSIscmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiRTc5IiwiRkY2NiIsIkM1NiIsIk80MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy1hbmNob3IifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyZmxvdy1hbmNob3IgQ1NTIHByb3BlcnR5IHByb3ZpZGVzIGEgd2F5IHRvIG9wdCBvdXQgYnJvd3NlciBzY3JvbGwgYW5jaG9yaW5nIGJlaGF2aW9yIHdoaWNoIGFkanVzdHMgc2Nyb2xsIHBvc2l0aW9uIHRvIG1pbmltaXplIGNvbnRlbnQgc2hpZnRzLiJ9LHtuYW1lOiJvdmVyZmxvdy1ibG9jayIsc3ludGF4OiJ2aXNpYmxlIHwgaGlkZGVuIHwgY2xpcCB8IHNjcm9sbCB8IGF1dG8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNjkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcmZsb3ctYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyZmxvdy1ibG9jayBDU1MgbWVkaWEgZmVhdHVyZSBjYW4gYmUgdXNlZCB0byB0ZXN0IGhvdyB0aGUgb3V0cHV0IGRldmljZSBoYW5kbGVzIGNvbnRlbnQgdGhhdCBvdmVyZmxvd3MgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayBhbG9uZyB0aGUgYmxvY2sgYXhpcy4ifSx7bmFtZToib3ZlcmZsb3ctY2xpcC1ib3giLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoicGFkZGluZy1ib3ggfCBjb250ZW50LWJveCIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjI5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9Nb3ppbGxhL0dlY2tvL0Nocm9tZS9DU1Mvb3ZlcmZsb3ctY2xpcC1ib3gifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyZmxvdy1jbGlwLWJveCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHJlbGF0aXZlIHRvIHdoaWNoIGJveCB0aGUgY2xpcHBpbmcgaGFwcGVucyB3aGVuIHRoZXJlIGlzIGFuIG92ZXJmbG93LiBJdCBpcyBzaG9ydCBoYW5kIGZvciB0aGUgb3ZlcmZsb3ctY2xpcC1ib3gtaW5saW5lIGFuZCBvdmVyZmxvdy1jbGlwLWJveC1ibG9jayBwcm9wZXJ0aWVzLiJ9LHtuYW1lOiJvdmVyZmxvdy1jbGlwLW1hcmdpbiIsc3ludGF4OiI8dmlzdWFsLWJveD4gfHwgPGxlbmd0aCBbMCziiJ5dPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTkwIiwiQzkwIiwiTzc2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LWNsaXAtbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcmZsb3ctY2xpcC1tYXJnaW4gQ1NTIHByb3BlcnR5IGRldGVybWluZXMgaG93IGZhciBvdXRzaWRlIGl0cyBib3VuZHMgYW4gZWxlbWVudCB3aXRoIG92ZXJmbG93OiBjbGlwIG1heSBiZSBwYWludGVkIGJlZm9yZSBiZWluZyBjbGlwcGVkLiJ9LHtuYW1lOiJvdmVyZmxvdy1pbmxpbmUiLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjY5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJmbG93LWlubGluZSBDU1MgbWVkaWEgZmVhdHVyZSBjYW4gYmUgdXNlZCB0byB0ZXN0IGhvdyB0aGUgb3V0cHV0IGRldmljZSBoYW5kbGVzIGNvbnRlbnQgdGhhdCBvdmVyZmxvd3MgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayBhbG9uZyB0aGUgaW5saW5lIGF4aXMuIn0se25hbWU6Im92ZXJzY3JvbGwtYmVoYXZpb3IiLHN5bnRheDoiWyBjb250YWluIHwgbm9uZSB8IGF1dG8gXXsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTgiLCJGRjU5IiwiQzYzIiwiTzUwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJzY3JvbGwtYmVoYXZpb3IifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yIENTUyBwcm9wZXJ0eSBpcyBzaG9ydGhhbmQgZm9yIHRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yLXggYW5kIG92ZXJzY3JvbGwtYmVoYXZpb3IteSBwcm9wZXJ0aWVzLCB3aGljaCBhbGxvdyB5b3UgdG8gY29udHJvbCB0aGUgYnJvd3NlcidzIHNjcm9sbCBvdmVyZmxvdyBiZWhhdmlvciDigJQgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEgaXMgcmVhY2hlZC4ifSx7bmFtZToib3ZlcnNjcm9sbC1iZWhhdmlvci1ibG9jayIsc3ludGF4OiJjb250YWluIHwgbm9uZSB8IGF1dG8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzMiLCJDNzciLCJPNjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcnNjcm9sbC1iZWhhdmlvci1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJzY3JvbGwtYmVoYXZpb3ItYmxvY2sgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJyb3dzZXIncyBiZWhhdmlvciB3aGVuIHRoZSBibG9jayBkaXJlY3Rpb24gYm91bmRhcnkgb2YgYSBzY3JvbGxpbmcgYXJlYSBpcyByZWFjaGVkLiJ9LHtuYW1lOiJvdmVyc2Nyb2xsLWJlaGF2aW9yLWlubGluZSIsc3ludGF4OiJjb250YWluIHwgbm9uZSB8IGF1dG8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzMiLCJDNzciLCJPNjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcnNjcm9sbC1iZWhhdmlvci1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yLWlubGluZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYnJvd3NlcidzIGJlaGF2aW9yIHdoZW4gdGhlIGlubGluZSBkaXJlY3Rpb24gYm91bmRhcnkgb2YgYSBzY3JvbGxpbmcgYXJlYSBpcyByZWFjaGVkLiJ9LHtuYW1lOiJvdmVyc2Nyb2xsLWJlaGF2aW9yLXgiLHN5bnRheDoiY29udGFpbiB8IG5vbmUgfCBhdXRvIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTgiLCJGRjU5IiwiQzYzIiwiTzUwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJzY3JvbGwtYmVoYXZpb3IteCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJzY3JvbGwtYmVoYXZpb3IteCBDU1MgcHJvcGVydHkgaXMgYWxsb3dzIHlvdSB0byBjb250cm9sIHRoZSBicm93c2VyJ3Mgc2Nyb2xsIG92ZXJmbG93IGJlaGF2aW9yIOKAlCB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgYm91bmRhcnkgb2YgYSBzY3JvbGxpbmcgYXJlYSBpcyByZWFjaGVkIOKAlCBpbiB0aGUgeCBheGlzIGRpcmVjdGlvbi4ifSx7bmFtZToib3ZlcnNjcm9sbC1iZWhhdmlvci15IixzeW50YXg6ImNvbnRhaW4gfCBub25lIHwgYXV0byIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE4IiwiRkY1OSIsIkM2MyIsIk81MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXkifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yLXkgQ1NTIHByb3BlcnR5IGlzIGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgYnJvd3NlcidzIHNjcm9sbCBvdmVyZmxvdyBiZWhhdmlvciDigJQgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEgaXMgcmVhY2hlZCDigJQgaW4gdGhlIHkgYXhpcyBkaXJlY3Rpb24uIn0se25hbWU6InBhZGRpbmctYmxvY2siLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIHBhZGRpbmctYmxvY2sgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYW5kIGVuZCBwYWRkaW5nIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gcGh5c2ljYWwgcGFkZGluZyBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiJ9LHtuYW1lOiJwYWRkaW5nLWlubGluZSIsc3ludGF4OiI8J3BhZGRpbmctbGVmdCc+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHBhZGRpbmctaW5saW5lIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGlubGluZSBzdGFydCBhbmQgZW5kIHBhZGRpbmcgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBwaHlzaWNhbCBwYWRkaW5nIHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIn0se25hbWU6InBsYWNlLWNvbnRlbnQiLHN5bnRheDoiPCdhbGlnbi1jb250ZW50Jz4gPCdqdXN0aWZ5LWNvbnRlbnQnPj8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNDUiLCJTOSIsIkM1OSIsIk80NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wbGFjZS1jb250ZW50In1dLGRlc2NyaXB0aW9uOiJUaGUgcGxhY2UtY29udGVudCBDU1Mgc2hvcnRoYW5kIHByb3BlcnR5IHNldHMgYm90aCB0aGUgYWxpZ24tY29udGVudCBhbmQganVzdGlmeS1jb250ZW50IHByb3BlcnRpZXMuIn0se25hbWU6InBsYWNlLWl0ZW1zIixzeW50YXg6IjwnYWxpZ24taXRlbXMnPiA8J2p1c3RpZnktaXRlbXMnPj8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNDUiLCJTMTEiLCJDNTkiLCJPNDYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGxhY2UtaXRlbXMifV0sZGVzY3JpcHRpb246IlRoZSBDU1MgcGxhY2UtaXRlbXMgc2hvcnRoYW5kIHByb3BlcnR5IHNldHMgYm90aCB0aGUgYWxpZ24taXRlbXMgYW5kIGp1c3RpZnktaXRlbXMgcHJvcGVydGllcy4gVGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBhbGlnbi1pdGVtcyBwcm9wZXJ0eSB2YWx1ZSwgdGhlIHNlY29uZCB0aGUganVzdGlmeS1pdGVtcyBvbmUuIElmIHRoZSBzZWNvbmQgdmFsdWUgaXMgbm90IHByZXNlbnQsIHRoZSBmaXJzdCB2YWx1ZSBpcyBhbHNvIHVzZWQgZm9yIGl0LiJ9LHtuYW1lOiJwbGFjZS1zZWxmIixzeW50YXg6IjwnYWxpZ24tc2VsZic+IDwnanVzdGlmeS1zZWxmJz4/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjQ1IiwiUzExIiwiQzU5IiwiTzQ2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BsYWNlLXNlbGYifV0sZGVzY3JpcHRpb246IlRoZSBwbGFjZS1zZWxmIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBzZXRzIGJvdGggdGhlIGFsaWduLXNlbGYgYW5kIGp1c3RpZnktc2VsZiBwcm9wZXJ0aWVzLiBUaGUgZmlyc3QgdmFsdWUgaXMgdGhlIGFsaWduLXNlbGYgcHJvcGVydHkgdmFsdWUsIHRoZSBzZWNvbmQgdGhlIGp1c3RpZnktc2VsZiBvbmUuIElmIHRoZSBzZWNvbmQgdmFsdWUgaXMgbm90IHByZXNlbnQsIHRoZSBmaXJzdCB2YWx1ZSBpcyBhbHNvIHVzZWQgZm9yIGl0LiJ9LHtuYW1lOiJyb3RhdGUiLHN5bnRheDoibm9uZSB8IDxhbmdsZT4gfCBbIHggfCB5IHwgeiB8IDxudW1iZXI+ezN9IF0gJiYgPGFuZ2xlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY3MiIsIlMxNC4xIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3JvdGF0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHJvdGF0ZSBDU1MgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHJvdGF0aW9uIHRyYW5zZm9ybXMgaW5kaXZpZHVhbGx5IGFuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSB0cmFuc2Zvcm0gcHJvcGVydHkuIFRoaXMgbWFwcyBiZXR0ZXIgdG8gdHlwaWNhbCB1c2VyIGludGVyZmFjZSB1c2FnZSwgYW5kIHNhdmVzIGhhdmluZyB0byByZW1lbWJlciB0aGUgZXhhY3Qgb3JkZXIgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyB0byBzcGVjaWZ5IGluIHRoZSB0cmFuc2Zvcm0gdmFsdWUuIn0se25hbWU6InJvdy1nYXAiLHN5bnRheDoibm9ybWFsIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTg0IiwiRkY2MyIsIlMxNC4xIiwiQzg0IiwiTzcwIl0sZGVzY3JpcHRpb246IlRoZSByb3ctZ2FwIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGd1dHRlciBiZXR3ZWVuIGdyaWQgcm93cy4ifSx7bmFtZToicnVieS1tZXJnZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoic2VwYXJhdGUgfCBjb2xsYXBzZSB8IGF1dG8iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBjb250cm9scyBob3cgcnVieSBhbm5vdGF0aW9uIGJveGVzIHNob3VsZCBiZSByZW5kZXJlZCB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGluIGEgcnVieSBjb250YWluZXIgYm94OiB3aGV0aGVyIGVhY2ggcGFpciBzaG91bGQgYmUga2VwdCBzZXBhcmF0ZSwgdGhlIGFubm90YXRpb25zIHNob3VsZCBiZSBjb2xsYXBzZWQgYW5kIHJlbmRlcmVkIGFzIGEgZ3JvdXAsIG9yIHRoZSBzZXBhcmF0aW9uIHNob3VsZCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBzcGFjZSBhdmFpbGFibGUuIn0se25hbWU6InNjYWxlIixzeW50YXg6Im5vbmUgfCA8bnVtYmVyPnsxLDN9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjcyIiwiUzE0LjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2NhbGUifV0sZGVzY3JpcHRpb246IlRoZSBzY2FsZSBDU1MgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHNjYWxlIHRyYW5zZm9ybXMgaW5kaXZpZHVhbGx5IGFuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSB0cmFuc2Zvcm0gcHJvcGVydHkuIFRoaXMgbWFwcyBiZXR0ZXIgdG8gdHlwaWNhbCB1c2VyIGludGVyZmFjZSB1c2FnZSwgYW5kIHNhdmVzIGhhdmluZyB0byByZW1lbWJlciB0aGUgZXhhY3Qgb3JkZXIgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyB0byBzcGVjaWZ5IGluIHRoZSB0cmFuc2Zvcm0gdmFsdWUuIn0se25hbWU6InNjcm9sbGJhci1jb2xvciIsc3ludGF4OiJhdXRvIHwgPGNvbG9yPnsyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY2NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItY29sb3IifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGxiYXItY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBzY3JvbGxiYXIgdHJhY2sgYW5kIHRodW1iLiJ9LHtuYW1lOiJzY3JvbGxiYXItZ3V0dGVyIixzeW50YXg6ImF1dG8gfCBzdGFibGUgJiYgYm90aC1lZGdlcz8iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5NCIsIkZGOTciLCJDOTQiLCJPODAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWd1dHRlciJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbGJhci1ndXR0ZXIgQ1NTIHByb3BlcnR5IGFsbG93cyBhdXRob3JzIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzY3JvbGxiYXIsIHByZXZlbnRpbmcgdW53YW50ZWQgbGF5b3V0IGNoYW5nZXMgYXMgdGhlIGNvbnRlbnQgZ3Jvd3Mgd2hpbGUgYWxzbyBhdm9pZGluZyB1bm5lY2Vzc2FyeSB2aXN1YWxzIHdoZW4gc2Nyb2xsaW5nIGlzbid0IG5lZWRlZC4ifSx7bmFtZToic2Nyb2xsYmFyLXdpZHRoIixzeW50YXg6ImF1dG8gfCB0aGluIHwgbm9uZSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRkY2NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItd2lkdGgifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGxiYXItd2lkdGggcHJvcGVydHkgYWxsb3dzIHRoZSBhdXRob3IgdG8gc2V0IHRoZSBtYXhpbXVtIHRoaWNrbmVzcyBvZiBhbiBlbGVtZW504oCZcyBzY3JvbGxiYXJzIHdoZW4gdGhleSBhcmUgc2hvd24uICJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luIixzeW50YXg6IjxsZW5ndGg+ezEsNH0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGOTAiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbiBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIGFsbCBvZiB0aGUgc2Nyb2xsLW1hcmdpbiBsb25naGFuZHMsIGFzc2lnbmluZyB2YWx1ZXMgbXVjaCBsaWtlIHRoZSBtYXJnaW4gcHJvcGVydHkgZG9lcyBmb3IgdGhlIG1hcmdpbi0qIGxvbmdoYW5kcy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1ibG9jayIsc3ludGF4OiI8bGVuZ3RoPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tYmxvY2sgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyB0aGUgc2Nyb2xsLW1hcmdpbiBsb25naGFuZHMgaW4gdGhlIGJsb2NrIGRpbWVuc2lvbi4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1ibG9jay1zdGFydCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLWJsb2NrLXN0YXJ0IHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgc3RhcnQgb2YgdGhlIGJsb2NrIGRpbWVuc2lvbiB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWJsb2NrLWVuZCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYmxvY2stZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1ibG9jay1lbmQgcHJvcGVydHkgZGVmaW5lcyB0aGUgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrIGRpbWVuc2lvbiB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWJvdHRvbSIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1ib3R0b20gcHJvcGVydHkgZGVmaW5lcyB0aGUgYm90dG9tIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWlubGluZSIsc3ludGF4OiI8bGVuZ3RoPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLWlubGluZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIHRoZSBzY3JvbGwtbWFyZ2luIGxvbmdoYW5kcyBpbiB0aGUgaW5saW5lIGRpbWVuc2lvbi4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1pbmxpbmUtc3RhcnQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0IHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgc3RhcnQgb2YgdGhlIGlubGluZSBkaW1lbnNpb24gdGhhdCBpcyB1c2VkIGZvciBzbmFwcGluZyB0aGlzIGJveCB0byB0aGUgc25hcHBvcnQuIFRoZSBzY3JvbGwgc25hcCBhcmVhIGlzIGRldGVybWluZWQgYnkgdGFraW5nIHRoZSB0cmFuc2Zvcm1lZCBib3JkZXIgYm94LCBmaW5kaW5nIGl0cyByZWN0YW5ndWxhciBib3VuZGluZyBib3ggKGF4aXMtYWxpZ25lZCBpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcuKAmXMgY29vcmRpbmF0ZSBzcGFjZSksIHRoZW4gYWRkaW5nIHRoZSBzcGVjaWZpZWQgb3V0c2V0cy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kIHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgZW5kIG9mIHRoZSBpbmxpbmUgZGltZW5zaW9uIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1tYXJnaW4tbGVmdCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tbGVmdCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tbGVmdCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsZWZ0IG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLXJpZ2h0IixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tcmlnaHQgcHJvcGVydHkgZGVmaW5lcyB0aGUgcmlnaHQgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1tYXJnaW4tdG9wIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi10b3AifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLXRvcCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB0b3AgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nIixzeW50YXg6IlsgYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4gXXsxLDR9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmcifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIGFsbCBvZiB0aGUgc2Nyb2xsLXBhZGRpbmcgbG9uZ2hhbmRzLCBhc3NpZ25pbmcgdmFsdWVzIG11Y2ggbGlrZSB0aGUgcGFkZGluZyBwcm9wZXJ0eSBkb2VzIGZvciB0aGUgcGFkZGluZy0qIGxvbmdoYW5kcy4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctYmxvY2siLHN5bnRheDoiWyBhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiBdezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1ibG9jayBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIHRoZSBzY3JvbGwtcGFkZGluZyBsb25naGFuZHMgZm9yIHRoZSBibG9jayBkaW1lbnNpb24uIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0IixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctYmxvY2stc3RhcnQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgc3RhcnQgZWRnZSBpbiB0aGUgYmxvY2sgZGltZW5zaW9uIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWJsb2NrLWVuZCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1ibG9jay1lbmQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgZW5kIGVkZ2UgaW4gdGhlIGJsb2NrIGRpbWVuc2lvbiBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1ib3R0b20iLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1ib3R0b20ifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1ib3R0b20gcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgYm90dG9tIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWlubGluZSIsc3ludGF4OiJbIGF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IF17MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1pbmxpbmUgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyB0aGUgc2Nyb2xsLXBhZGRpbmcgbG9uZ2hhbmRzIGZvciB0aGUgaW5saW5lIGRpbWVuc2lvbi4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctaW5saW5lLXN0YXJ0IixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCBwcm9wZXJ0eSBkZWZpbmVzIG9mZnNldHMgZm9yIHRoZSBzdGFydCBlZGdlIGluIHRoZSBpbmxpbmUgZGltZW5zaW9uIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWlubGluZS1lbmQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctaW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLWlubGluZS1lbmQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgZW5kIGVkZ2UgaW4gdGhlIGlubGluZSBkaW1lbnNpb24gb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctbGVmdCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWxlZnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1sZWZ0IHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIGxlZnQgb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctcmlnaHQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLXJpZ2h0IHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIHJpZ2h0IG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLXRvcCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLXRvcCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLXRvcCBwcm9wZXJ0eSBkZWZpbmVzIG9mZnNldHMgZm9yIHRoZSB0b3Agb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXNuYXAtYWxpZ24iLHN5bnRheDoiWyBub25lIHwgc3RhcnQgfCBlbmQgfCBjZW50ZXIgXXsxLDJ9IixyZWxldmFuY2U6NTIsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzExIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLWFsaWduIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXNuYXAtYWxpZ24gcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBib3jigJlzIHNuYXAgcG9zaXRpb24gYXMgYW4gYWxpZ25tZW50IG9mIGl0cyBzbmFwIGFyZWEgKGFzIHRoZSBhbGlnbm1lbnQgc3ViamVjdCkgd2l0aGluIGl0cyBzbmFwIGNvbnRhaW5lcuKAmXMgc25hcHBvcnQgKGFzIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyKS4gVGhlIHR3byB2YWx1ZXMgc3BlY2lmeSB0aGUgc25hcHBpbmcgYWxpZ25tZW50IGluIHRoZSBibG9jayBheGlzIGFuZCBpbmxpbmUgYXhpcywgcmVzcGVjdGl2ZWx5LiBJZiBvbmx5IG9uZSB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBzZWNvbmQgdmFsdWUgZGVmYXVsdHMgdG8gdGhlIHNhbWUgdmFsdWUuIn0se25hbWU6InNjcm9sbC1zbmFwLXN0b3AiLHN5bnRheDoibm9ybWFsIHwgYWx3YXlzIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMTUiLCJDNzUiLCJPNjIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtc3RvcCJ9XSxkZXNjcmlwdGlvbjonVGhlIHNjcm9sbC1zbmFwLXN0b3AgQ1NTIHByb3BlcnR5IGRlZmluZXMgd2hldGhlciB0aGUgc2Nyb2xsIGNvbnRhaW5lciBpcyBhbGxvd2VkIHRvICJwYXNzIG92ZXIiIHBvc3NpYmxlIHNuYXAgcG9zaXRpb25zLid9LHtuYW1lOiJzY3JvbGwtc25hcC10eXBlLXgiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoibm9uZSB8IG1hbmRhdG9yeSB8IHByb3hpbWl0eSIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjM5IiwiUzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtdHlwZS14In1dLGRlc2NyaXB0aW9uOmBUaGUgc2Nyb2xsLXNuYXAtdHlwZS14IENTUyBwcm9wZXJ0eSBkZWZpbmVzIGhvdyBzdHJpY3RseSBzbmFwIHBvaW50cyBhcmUgZW5mb3JjZWQgb24gdGhlIGhvcml6b250YWwgYXhpcyBvZiB0aGUgc2Nyb2xsIGNvbnRhaW5lciBpbiBjYXNlIHRoZXJlIGlzIG9uZS4KClNwZWNpZnlpbmcgYW55IHByZWNpc2UgYW5pbWF0aW9ucyBvciBwaHlzaWNzIHVzZWQgdG8gZW5mb3JjZSB0aG9zZSBzbmFwIHBvaW50cyBpcyBub3QgY292ZXJlZCBieSB0aGlzIHByb3BlcnR5IGJ1dCBpbnN0ZWFkIGxlZnQgdXAgdG8gdGhlIHVzZXIgYWdlbnQuYH0se25hbWU6InNjcm9sbC1zbmFwLXR5cGUteSIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJub25lIHwgbWFuZGF0b3J5IHwgcHJveGltaXR5IixyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXNuYXAtdHlwZS15In1dLGRlc2NyaXB0aW9uOmBUaGUgc2Nyb2xsLXNuYXAtdHlwZS15IENTUyBwcm9wZXJ0eSBkZWZpbmVzIGhvdyBzdHJpY3RseSBzbmFwIHBvaW50cyBhcmUgZW5mb3JjZWQgb24gdGhlIHZlcnRpY2FsIGF4aXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIgaW4gY2FzZSB0aGVyZSBpcyBvbmUuCgpTcGVjaWZ5aW5nIGFueSBwcmVjaXNlIGFuaW1hdGlvbnMgb3IgcGh5c2ljcyB1c2VkIHRvIGVuZm9yY2UgdGhvc2Ugc25hcCBwb2ludHMgaXMgbm90IGNvdmVyZWQgYnkgdGhpcyBwcm9wZXJ0eSBidXQgaW5zdGVhZCBsZWZ0IHVwIHRvIHRoZSB1c2VyIGFnZW50LmB9LHtuYW1lOiJ0ZXh0LWNvbWJpbmUtdXByaWdodCIsc3ludGF4OiJub25lIHwgYWxsIHwgWyBkaWdpdHMgPGludGVnZXI+PyBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtY29tYmluZS11cHJpZ2h0In1dLGRlc2NyaXB0aW9uOmBUaGUgdGV4dC1jb21iaW5lLXVwcmlnaHQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgY29tYmluYXRpb24gb2YgbXVsdGlwbGUgY2hhcmFjdGVycyBpbnRvIHRoZSBzcGFjZSBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIuIElmIHRoZSBjb21iaW5lZCB0ZXh0IGlzIHdpZGVyIHRoYW4gMWVtLCB0aGUgdXNlciBhZ2VudCBtdXN0IGZpdCB0aGUgY29udGVudHMgd2l0aGluIDFlbS4gVGhlIHJlc3VsdGluZyBjb21wb3NpdGlvbiBpcyB0cmVhdGVkIGFzIGEgc2luZ2xlIHVwcmlnaHQgZ2x5cGggZm9yIGxheW91dCBhbmQgZGVjb3JhdGlvbi4gVGhpcyBwcm9wZXJ0eSBvbmx5IGhhcyBhbiBlZmZlY3QgaW4gdmVydGljYWwgd3JpdGluZyBtb2Rlcy4KClRoaXMgaXMgdXNlZCB0byBwcm9kdWNlIGFuIGVmZmVjdCB0aGF0IGlzIGtub3duIGFzIHRhdGUtY2jFqy15b2tvICjnuKbkuK3mqKopIGluIEphcGFuZXNlLCBvciBhcyDnm7Tmm7jmqavlkJEgaW4gQ2hpbmVzZS5gfSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLXNraXAiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCBbIG9iamVjdHMgfHwgWyBzcGFjZXMgfCBbIGxlYWRpbmctc3BhY2VzIHx8IHRyYWlsaW5nLXNwYWNlcyBdIF0gfHwgZWRnZXMgfHwgYm94LWRlY29yYXRpb24gXSIscmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiUzEyLjEiLCJDNTciLCJPNDQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLXNraXAifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWRlY29yYXRpb24tc2tpcCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoYXQgcGFydHMgb2YgdGhlIGVsZW1lbnTigJlzIGNvbnRlbnQgYW55IHRleHQgZGVjb3JhdGlvbiBhZmZlY3RpbmcgdGhlIGVsZW1lbnQgbXVzdCBza2lwIG92ZXIuIEl0IGNvbnRyb2xzIGFsbCB0ZXh0IGRlY29yYXRpb24gbGluZXMgZHJhd24gYnkgdGhlIGVsZW1lbnQgYW5kIGFsc28gYW55IHRleHQgZGVjb3JhdGlvbiBsaW5lcyBkcmF3biBieSBpdHMgYW5jZXN0b3JzLiJ9LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24tc2tpcC1pbmsiLHN5bnRheDoiYXV0byB8IGFsbCB8IG5vbmUiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzAiLCJTMTUuNCIsIkM2NCIsIk81MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWRlY29yYXRpb24tc2tpcC1pbmsifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWRlY29yYXRpb24tc2tpcC1pbmsgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBob3cgb3ZlcmxpbmVzIGFuZCB1bmRlcmxpbmVzIGFyZSBkcmF3biB3aGVuIHRoZXkgcGFzcyBvdmVyIGdseXBoIGFzY2VuZGVycyBhbmQgZGVzY2VuZGVycy4ifSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyIsc3ludGF4OiJhdXRvIHwgZnJvbS1mb250IHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODkiLCJGRjcwIiwiUzEyLjEiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3MgQ1NTIHByb3BlcnR5IHNldHMgdGhlIHRoaWNrbmVzcywgb3Igd2lkdGgsIG9mIHRoZSBkZWNvcmF0aW9uIGxpbmUgdGhhdCBpcyB1c2VkIG9uIHRleHQgaW4gYW4gZWxlbWVudCwgc3VjaCBhcyBhIGxpbmUtdGhyb3VnaCwgdW5kZXJsaW5lLCBvciBvdmVybGluZS4ifSx7bmFtZToidGV4dC1lbXBoYXNpcyIsc3ludGF4OiI8J3RleHQtZW1waGFzaXMtc3R5bGUnPiB8fCA8J3RleHQtZW1waGFzaXMtY29sb3InPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY0NiIsIlM3IiwiQzI1IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZW1waGFzaXMifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWVtcGhhc2lzIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyB0ZXh0LWVtcGhhc2lzLXN0eWxlIGFuZCB0ZXh0LWVtcGhhc2lzLWNvbG9yIGluIG9uZSBkZWNsYXJhdGlvbi4gVGhpcyBwcm9wZXJ0eSB3aWxsIGFwcGx5IHRoZSBzcGVjaWZpZWQgZW1waGFzaXMgbWFyayB0byBlYWNoIGNoYXJhY3RlciBvZiB0aGUgZWxlbWVudCdzIHRleHQsIGV4Y2VwdCBzZXBhcmF0b3IgY2hhcmFjdGVycywgbGlrZSBzcGFjZXMsICBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLiJ9LHtuYW1lOiJ0ZXh0LWVtcGhhc2lzLWNvbG9yIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNDYiLCJTNyIsIkMyNSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWVtcGhhc2lzLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1lbXBoYXNpcy1jb2xvciBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgY29sb3IgdXNlZCB0byBkcmF3IGVtcGhhc2lzIG1hcmtzIG9uIHRleHQgYmVpbmcgcmVuZGVyZWQgaW4gdGhlIEhUTUwgZG9jdW1lbnQuIFRoaXMgdmFsdWUgY2FuIGFsc28gYmUgc2V0IGFuZCByZXNldCB1c2luZyB0aGUgdGV4dC1lbXBoYXNpcyBzaG9ydGhhbmQuIn0se25hbWU6InRleHQtZW1waGFzaXMtcG9zaXRpb24iLHN5bnRheDoiWyBvdmVyIHwgdW5kZXIgXSAmJiBbIHJpZ2h0IHwgbGVmdCBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjQ2IiwiUzciLCJDMjUiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1lbXBoYXNpcy1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtZW1waGFzaXMtcG9zaXRpb24gQ1NTIHByb3BlcnR5IGRlc2NyaWJlcyB3aGVyZSBlbXBoYXNpcyBtYXJrcyBhcmUgZHJhd24gYXQuIFRoZSBlZmZlY3Qgb2YgZW1waGFzaXMgbWFya3Mgb24gdGhlIGxpbmUgaGVpZ2h0IGlzIHRoZSBzYW1lIGFzIGZvciBydWJ5IHRleHQ6IGlmIHRoZXJlIGlzbid0IGVub3VnaCBwbGFjZSwgdGhlIGxpbmUgaGVpZ2h0IGlzIGluY3JlYXNlZC4ifSx7bmFtZToidGV4dC1lbXBoYXNpcy1zdHlsZSIsc3ludGF4OiJub25lIHwgWyBbIGZpbGxlZCB8IG9wZW4gXSB8fCBbIGRvdCB8IGNpcmNsZSB8IGRvdWJsZS1jaXJjbGUgfCB0cmlhbmdsZSB8IHNlc2FtZSBdIF0gfCA8c3RyaW5nPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY0NiIsIlM3IiwiQzI1IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZW1waGFzaXMtc3R5bGUifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWVtcGhhc2lzLXN0eWxlIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB0eXBlIG9mIGVtcGhhc2lzIHVzZWQuIEl0IGNhbiBhbHNvIGJlIHNldCwgYW5kIHJlc2V0LCB1c2luZyB0aGUgdGV4dC1lbXBoYXNpcyBzaG9ydGhhbmQuIn0se25hbWU6InRleHQtc2l6ZS1hZGp1c3QiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCBhdXRvIHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTcsYnJvd3NlcnM6WyJFNzkiLCJDNTQiLCJPNDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1zaXplLWFkanVzdCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtc2l6ZS1hZGp1c3QgQ1NTIHByb3BlcnR5IGNvbnRyb2xzIHRoZSB0ZXh0IGluZmxhdGlvbiBhbGdvcml0aG0gdXNlZCBvbiBzb21lIHNtYXJ0cGhvbmVzIGFuZCB0YWJsZXRzLiBPdGhlciBicm93c2VycyB3aWxsIGlnbm9yZSB0aGlzIHByb3BlcnR5LiJ9LHtuYW1lOiJ0ZXh0LXVuZGVybGluZS1vZmZzZXQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+ICIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY3MCIsIlMxMi4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtdW5kZXJsaW5lLW9mZnNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtdW5kZXJsaW5lLW9mZnNldCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgb2Zmc2V0IGRpc3RhbmNlIG9mIGFuIHVuZGVybGluZSB0ZXh0IGRlY29yYXRpb24gbGluZSAoYXBwbGllZCB1c2luZyB0ZXh0LWRlY29yYXRpb24pIGZyb20gaXRzIG9yaWdpbmFsIHBvc2l0aW9uLiJ9LHtuYW1lOiJ0cmFuc2Zvcm0tYm94IixzeW50YXg6ImNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCB8IGZpbGwtYm94IHwgc3Ryb2tlLWJveCB8IHZpZXctYm94IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjU1IiwiUzExIiwiQzY0IiwiTzUxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybS1ib3gifV0sZGVzY3JpcHRpb246IlRoZSB0cmFuc2Zvcm0tYm94IENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsYXlvdXQgYm94IHRvIHdoaWNoIHRoZSB0cmFuc2Zvcm0gYW5kIHRyYW5zZm9ybS1vcmlnaW4gcHJvcGVydGllcyByZWxhdGUuIn0se25hbWU6InRyYW5zbGF0ZSIsc3ludGF4OiJub25lIHwgPGxlbmd0aC1wZXJjZW50YWdlPiBbIDxsZW5ndGgtcGVyY2VudGFnZT4gPGxlbmd0aD4/IF0/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjcyIiwiUzE0LjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNsYXRlIn1dLGRlc2NyaXB0aW9uOiJUaGUgdHJhbnNsYXRlIENTUyBwcm9wZXJ0eSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdHJhbnNsYXRpb24gdHJhbnNmb3JtcyBpbmRpdmlkdWFsbHkgYW5kIGluZGVwZW5kZW50bHkgb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eS4gVGhpcyBtYXBzIGJldHRlciB0byB0eXBpY2FsIHVzZXIgaW50ZXJmYWNlIHVzYWdlLCBhbmQgc2F2ZXMgaGF2aW5nIHRvIHJlbWVtYmVyIHRoZSBleGFjdCBvcmRlciBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHRvIHNwZWNpZnkgaW4gdGhlIHRyYW5zZm9ybSB2YWx1ZS4ifSx7bmFtZToid2hpdGUtc3BhY2UiLHN5bnRheDoibm9ybWFsIHwgcHJlIHwgbm93cmFwIHwgcHJlLXdyYXAgfCBwcmUtbGluZSB8IGJyZWFrLXNwYWNlcyIscmVsZXZhbmNlOjkwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93aGl0ZS1zcGFjZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB3aGl0ZXNwYWNlIGlzIGhhbmRsZWQgaW4gYW4gZWxlbWVudC4ifSx7bmFtZToic3BlYWstYXMiLHN5bnRheDoiYXV0byB8IGJ1bGxldHMgfCBudW1iZXJzIHwgd29yZHMgfCBzcGVsbC1vdXQgfCA8Y291bnRlci1zdHlsZS1uYW1lPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgc3BlYWstYXMgZGVzY3JpcHRvciBzcGVjaWZpZXMgaG93IGEgY291bnRlciBzeW1ib2wgY29uc3RydWN0ZWQgd2l0aCBhIGdpdmVuIEBjb3VudGVyLXN0eWxlIHdpbGwgYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHNwb2tlbiBmb3JtLiBGb3IgZXhhbXBsZSwgYW4gYXV0aG9yIGNhbiBzcGVjaWZ5IGEgY291bnRlciBzeW1ib2wgdG8gYmUgZWl0aGVyIHNwb2tlbiBhcyBpdHMgbnVtZXJpY2FsIHZhbHVlIG9yIGp1c3QgcmVwcmVzZW50ZWQgd2l0aCBhbiBhdWRpbyBjdWUuIn0se25hbWU6ImFzY2VudC1vdmVycmlkZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9ybWFsIHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgYXNjZW50IG1ldHJpYyBvZiBhIGZvbnQuIn0se25hbWU6ImRlc2NlbnQtb3ZlcnJpZGUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vcm1hbCB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIGRlc2NlbnQgbWV0cmljIG9mIGEgZm9udC4ifSx7bmFtZToiZm9udC1kaXNwbGF5IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIGF1dG8gfCBibG9jayB8IHN3YXAgfCBmYWxsYmFjayB8IG9wdGlvbmFsIF0iLHJlbGV2YW5jZTo3MCxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtZGlzcGxheSBkZXNjcmlwdG9yIGRldGVybWluZXMgaG93IGEgZm9udCBmYWNlIGlzIGRpc3BsYXllZCBiYXNlZCBvbiB3aGV0aGVyIGFuZCB3aGVuIGl0IGlzIGRvd25sb2FkZWQgYW5kIHJlYWR5IHRvIHVzZS4ifSx7bmFtZToibGluZS1nYXAtb3ZlcnJpZGUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vcm1hbCB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIGxpbmUtZ2FwIG1ldHJpYyBvZiBhIGZvbnQuIn0se25hbWU6InNpemUtYWRqdXN0IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiI8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSBtdWx0aXBsaWVyIGZvciBnbHlwaCBvdXRsaW5lcyBhbmQgbWV0cmljcyBvZiBhIGZvbnQuIn0se25hbWU6ImJsZWVkIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgYmxlZWQgQ1NTIGF0LXJ1bGUgZGVzY3JpcHRvciwgdXNlZCB3aXRoIHRoZSBAcGFnZSBhdC1ydWxlLCBzcGVjaWZpZXMgdGhlIGV4dGVudCBvZiB0aGUgcGFnZSBibGVlZCBhcmVhIG91dHNpZGUgdGhlIHBhZ2UgYm94LiBUaGlzIHByb3BlcnR5IG9ubHkgaGFzIGVmZmVjdCBpZiBjcm9wIG1hcmtzIGFyZSBlbmFibGVkIHVzaW5nIHRoZSBtYXJrcyBwcm9wZXJ0eS4ifSx7bmFtZToibWFya3MiLHN5bnRheDoibm9uZSB8IFsgY3JvcCB8fCBjcm9zcyBdIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBtYXJrcyBDU1MgYXQtcnVsZSBkZXNjcmlwdG9yLCB1c2VkIHdpdGggdGhlIEBwYWdlIGF0LXJ1bGUsIGFkZHMgY3JvcCBhbmQvb3IgY3Jvc3MgbWFya3MgdG8gdGhlIHByZXNlbnRhdGlvbiBvZiB0aGUgZG9jdW1lbnQuIENyb3AgbWFya3MgaW5kaWNhdGUgd2hlcmUgdGhlIHBhZ2Ugc2hvdWxkIGJlIGN1dC4gQ3Jvc3MgbWFya3MgYXJlIHVzZWQgdG8gYWxpZ24gc2hlZXRzLiJ9LHtuYW1lOiJzeW50YXgiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IjxzdHJpbmc+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc3ludGF4IG9mIHRoZSBjdXN0b20gcHJvcGVydHkgcmVnaXN0cmF0aW9uIHJlcHJlc2VudGVkIGJ5IHRoZSBAcHJvcGVydHkgcnVsZSwgY29udHJvbGxpbmcgaG93IHRoZSBwcm9wZXJ0eeKAmXMgdmFsdWUgaXMgcGFyc2VkIGF0IGNvbXB1dGVkIHZhbHVlIHRpbWUuIn0se25hbWU6ImluaGVyaXRzIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJ0cnVlIHwgZmFsc2UiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBpbmhlcml0IGZsYWcgb2YgdGhlIGN1c3RvbSBwcm9wZXJ0eSByZWdpc3RyYXRpb24gcmVwcmVzZW50ZWQgYnkgdGhlIEBwcm9wZXJ0eSBydWxlLCBjb250cm9sbGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgcHJvcGVydHkgaW5oZXJpdHMgYnkgZGVmYXVsdC4ifSx7bmFtZToiaW5pdGlhbC12YWx1ZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiPHN0cmluZz4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBjdXN0b20gcHJvcGVydHkgcmVnaXN0cmF0aW9uIHJlcHJlc2VudGVkIGJ5IHRoZSBAcHJvcGVydHkgcnVsZSwgY29udHJvbGxpbmcgdGhlIHByb3BlcnR54oCZcyBpbml0aWFsIHZhbHVlLiJ9LHtuYW1lOiJtYXgtem9vbSIsc3ludGF4OiJhdXRvIHwgPG51bWJlcj4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjpgVGhlIG1heC16b29tIENTUyBkZXNjcmlwdG9yIHNldHMgdGhlIG1heGltdW0gem9vbSBmYWN0b3Igb2YgYSBkb2N1bWVudCBkZWZpbmVkIGJ5IHRoZSBAdmlld3BvcnQgYXQtcnVsZS4gVGhlIGJyb3dzZXIgd2lsbCBub3Qgem9vbSBpbiBhbnkgZnVydGhlciB0aGFuIHRoaXMsIHdoZXRoZXIgYXV0b21hdGljYWxseSBvciBhdCB0aGUgdXNlcidzIHJlcXVlc3QuCgpBIHpvb20gZmFjdG9yIG9mIDEuMCBvciAxMDAlIGNvcnJlc3BvbmRzIHRvIG5vIHpvb21pbmcuIExhcmdlciB2YWx1ZXMgYXJlIHpvb21lZCBpbi4gU21hbGxlciB2YWx1ZXMgYXJlIHpvb21lZCBvdXQuYH0se25hbWU6Im1pbi16b29tIixzeW50YXg6ImF1dG8gfCA8bnVtYmVyPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOmBUaGUgbWluLXpvb20gQ1NTIGRlc2NyaXB0b3Igc2V0cyB0aGUgbWluaW11bSB6b29tIGZhY3RvciBvZiBhIGRvY3VtZW50IGRlZmluZWQgYnkgdGhlIEB2aWV3cG9ydCBhdC1ydWxlLiBUaGUgYnJvd3NlciB3aWxsIG5vdCB6b29tIG91dCBhbnkgZnVydGhlciB0aGFuIHRoaXMsIHdoZXRoZXIgYXV0b21hdGljYWxseSBvciBhdCB0aGUgdXNlcidzIHJlcXVlc3QuCgpBIHpvb20gZmFjdG9yIG9mIDEuMCBvciAxMDAlIGNvcnJlc3BvbmRzIHRvIG5vIHpvb21pbmcuIExhcmdlciB2YWx1ZXMgYXJlIHpvb21lZCBpbi4gU21hbGxlciB2YWx1ZXMgYXJlIHpvb21lZCBvdXQuYH0se25hbWU6Im9yaWVudGF0aW9uIixzeW50YXg6ImF1dG8gfCBwb3J0cmFpdCB8IGxhbmRzY2FwZSIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgb3JpZW50YXRpb24gQ1NTIEBtZWRpYSBtZWRpYSBmZWF0dXJlIGNhbiBiZSB1c2VkIHRvIGFwcGx5IHN0eWxlcyBiYXNlZCBvbiB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHZpZXdwb3J0IChvciB0aGUgcGFnZSBib3gsIGZvciBwYWdlZCBtZWRpYSkuIn0se25hbWU6InVzZXItem9vbSIsc3ludGF4OiJ6b29tIHwgZml4ZWQiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHVzZXItem9vbSBDU1MgZGVzY3JpcHRvciBjb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBjYW4gY2hhbmdlIHRoZSB6b29tIGZhY3RvciBvZiBhIGRvY3VtZW50IGRlZmluZWQgYnkgQHZpZXdwb3J0LiJ9LHtuYW1lOiJ2aWV3cG9ydC1maXQiLHN5bnRheDoiYXV0byB8IGNvbnRhaW4gfCBjb3ZlciIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyLWJsb2NrLXN0eWxlIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBzdHlsZSBvZiB0aGUgbG9naWNhbCBibG9jayBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgc3R5bGUgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIn1dLGF0RGlyZWN0aXZlczpbe25hbWU6IkBjaGFyc2V0IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGNoYXJzZXQifV0sZGVzY3JpcHRpb246IkRlZmluZXMgY2hhcmFjdGVyIHNldCBvZiB0aGUgZG9jdW1lbnQuIn0se25hbWU6IkBjb3VudGVyLXN0eWxlIixicm93c2VyczpbIkU5MSIsIkZGMzMiLCJDOTEiLCJPNzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGNvdW50ZXItc3R5bGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYSBjdXN0b20gY291bnRlciBzdHlsZS4ifSx7bmFtZToiQGZvbnQtZmFjZSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0Bmb250LWZhY2UifV0sZGVzY3JpcHRpb246IkFsbG93cyBmb3IgbGlua2luZyB0byBmb250cyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCB3aGVuIG5lZWRlZC4gVGhpcyBwZXJtaXRzIGF1dGhvcnMgdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb24gb2YgJ3dlYi1zYWZlJyBmb250cywgYWxsb3dpbmcgZm9yIGNvbnNpc3RlbnQgcmVuZGVyaW5nIGluZGVwZW5kZW50IG9mIHRoZSBmb250cyBhdmFpbGFibGUgaW4gYSBnaXZlbiB1c2VyJ3MgZW52aXJvbm1lbnQuIn0se25hbWU6IkBmb250LWZlYXR1cmUtdmFsdWVzIixicm93c2VyczpbIkZGMzQiLCJTOS4xIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0Bmb250LWZlYXR1cmUtdmFsdWVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIG5hbWVkIHZhbHVlcyBmb3IgdGhlIGluZGljZXMgdXNlZCB0byBzZWxlY3QgYWx0ZXJuYXRlIGdseXBocyBmb3IgYSBnaXZlbiBmb250IGZhbWlseS4ifSx7bmFtZToiQGltcG9ydCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BpbXBvcnQifV0sZGVzY3JpcHRpb246IkluY2x1ZGVzIGNvbnRlbnQgb2YgYW5vdGhlciBmaWxlLiJ9LHtuYW1lOiJAa2V5ZnJhbWVzIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGtleWZyYW1lcyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBzZXQgb2YgYW5pbWF0aW9uIGtleSBmcmFtZXMuIn0se25hbWU6IkBtZWRpYSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BtZWRpYSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHN0eWxlc2hlZXQgZm9yIGEgcGFydGljdWxhciBtZWRpYSB0eXBlLiJ9LHtuYW1lOiJALW1vei1kb2N1bWVudCIsYnJvd3NlcnM6WyJGRjEuOCJdLGRlc2NyaXB0aW9uOiJHZWNrby1zcGVjaWZpYyBhdC1ydWxlIHRoYXQgcmVzdHJpY3RzIHRoZSBzdHlsZSBydWxlcyBjb250YWluZWQgd2l0aGluIGl0IGJhc2VkIG9uIHRoZSBVUkwgb2YgdGhlIGRvY3VtZW50LiJ9LHtuYW1lOiJALW1vei1rZXlmcmFtZXMiLGJyb3dzZXJzOlsiRkY1Il0sZGVzY3JpcHRpb246IkRlZmluZXMgc2V0IG9mIGFuaW1hdGlvbiBrZXkgZnJhbWVzLiJ9LHtuYW1lOiJALW1zLXZpZXdwb3J0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2l6ZSwgem9vbSBmYWN0b3IsIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgdmlld3BvcnQuIn0se25hbWU6IkBuYW1lc3BhY2UiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AbmFtZXNwYWNlIn1dLGRlc2NyaXB0aW9uOiJEZWNsYXJlcyBhIHByZWZpeCBhbmQgYXNzb2NpYXRlcyBpdCB3aXRoIGEgbmFtZXNwYWNlIG5hbWUuIn0se25hbWU6IkAtby1rZXlmcmFtZXMiLGJyb3dzZXJzOlsiTzEyIl0sZGVzY3JpcHRpb246IkRlZmluZXMgc2V0IG9mIGFuaW1hdGlvbiBrZXkgZnJhbWVzLiJ9LHtuYW1lOiJALW8tdmlld3BvcnQiLGJyb3dzZXJzOlsiTzExIl0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2l6ZSwgem9vbSBmYWN0b3IsIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgdmlld3BvcnQuIn0se25hbWU6IkBwYWdlIixicm93c2VyczpbIkUxMiIsIkZGMTkiLCJDMiIsIklFOCIsIk82Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BwYWdlIn1dLGRlc2NyaXB0aW9uOiJEaXJlY3RpdmUgZGVmaW5lcyB2YXJpb3VzIHBhZ2UgcGFyYW1ldGVycy4ifSx7bmFtZToiQHN1cHBvcnRzIixicm93c2VyczpbIkUxMiIsIkZGMjIiLCJTOSIsIkMyOCIsIk8xMi4xIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BzdXBwb3J0cyJ9XSxkZXNjcmlwdGlvbjoiQSBjb25kaXRpb25hbCBncm91cCBydWxlIHdob3NlIGNvbmRpdGlvbiB0ZXN0cyB3aGV0aGVyIHRoZSB1c2VyIGFnZW50IHN1cHBvcnRzIENTUyBwcm9wZXJ0eTp2YWx1ZSBwYWlycy4ifSx7bmFtZToiQC13ZWJraXQta2V5ZnJhbWVzIixicm93c2VyczpbIkMiLCJTNCJdLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHNldCBvZiBhbmltYXRpb24ga2V5IGZyYW1lcy4ifV0scHNldWRvQ2xhc3Nlczpbe25hbWU6IjphY3RpdmUiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86YWN0aXZlIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHdoaWxlIGFuIGVsZW1lbnQgaXMgYmVpbmcgYWN0aXZhdGVkIGJ5IHRoZSB1c2VyLiBGb3IgZXhhbXBsZSwgYmV0d2VlbiB0aGUgdGltZXMgdGhlIHVzZXIgcHJlc3NlcyB0aGUgbW91c2UgYnV0dG9uIGFuZCByZWxlYXNlcyBpdC4ifSx7bmFtZToiOmFueS1saW5rIixicm93c2VyczpbIkU3OSIsIkZGNTAiLCJTOSIsIkM2NSIsIk81MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86YW55LWxpbmsifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGFjdHMgYXMgdGhlIHNvdXJjZSBhbmNob3Igb2YgYSBoeXBlcmxpbmsuIEFwcGxpZXMgdG8gYm90aCB2aXNpdGVkIGFuZCB1bnZpc2l0ZWQgbGlua3MuIn0se25hbWU6IjpjaGVja2VkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmNoZWNrZWQifV0sZGVzY3JpcHRpb246IlJhZGlvIGFuZCBjaGVja2JveCBlbGVtZW50cyBjYW4gYmUgdG9nZ2xlZCBieSB0aGUgdXNlci4gU29tZSBtZW51IGl0ZW1zIGFyZSAnY2hlY2tlZCcgd2hlbiB0aGUgdXNlciBzZWxlY3RzIHRoZW0uIFdoZW4gc3VjaCBlbGVtZW50cyBhcmUgdG9nZ2xlZCAnb24nIHRoZSA6Y2hlY2tlZCBwc2V1ZG8tY2xhc3MgYXBwbGllcy4ifSx7bmFtZToiOmNvcm5lci1wcmVzZW50Iixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIHNjcm9sbGJhciBjb3JuZXIgaXMgcHJlc2VudC4ifSx7bmFtZToiOmRlY3JlbWVudCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcy4gSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBidXR0b24gb3IgdHJhY2sgcGllY2Ugd2lsbCBkZWNyZW1lbnQgdGhlIHZpZXfigJlzIHBvc2l0aW9uIHdoZW4gdXNlZC4ifSx7bmFtZToiOmRlZmF1bHQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0IiwiUzUiLCJDMTAiLCJPMTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmRlZmF1bHQifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgdG8gdGhlIG9uZSBvciBtb3JlIFVJIGVsZW1lbnRzIHRoYXQgYXJlIHRoZSBkZWZhdWx0IGFtb25nIGEgc2V0IG9mIHNpbWlsYXIgZWxlbWVudHMuIFR5cGljYWxseSBhcHBsaWVzIHRvIGNvbnRleHQgbWVudSBpdGVtcywgYnV0dG9ucywgYW5kIHNlbGVjdCBsaXN0cy9tZW51cy4ifSx7bmFtZToiOmRpc2FibGVkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmRpc2FibGVkIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHVzZXIgaW50ZXJmYWNlIGVsZW1lbnRzIHRoYXQgYXJlIGluIGEgZGlzYWJsZWQgc3RhdGU7IHN1Y2ggZWxlbWVudHMgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgZW5hYmxlZCBzdGF0ZS4ifSx7bmFtZToiOmRvdWJsZS1idXR0b24iLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBidXR0b25zIGFuZCB0cmFjayBwaWVjZXMuIEFwcGxpZXMgd2hlbiBib3RoIGJ1dHRvbnMgYXJlIGRpc3BsYXllZCB0b2dldGhlciBhdCB0aGUgc2FtZSBlbmQgb2YgdGhlIHNjcm9sbGJhci4ifSx7bmFtZToiOmVtcHR5IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmVtcHR5In1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgbm8gY2hpbGRyZW4gYXQgYWxsLiJ9LHtuYW1lOiI6ZW5hYmxlZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzplbmFibGVkIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHVzZXIgaW50ZXJmYWNlIGVsZW1lbnRzIHRoYXQgYXJlIGluIGFuIGVuYWJsZWQgc3RhdGU7IHN1Y2ggZWxlbWVudHMgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgZGlzYWJsZWQgc3RhdGUuIn0se25hbWU6IjplbmQiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBidXR0b25zIGFuZCB0cmFjayBwaWVjZXMuIEluZGljYXRlcyB3aGV0aGVyIHRoZSBvYmplY3QgaXMgcGxhY2VkIGFmdGVyIHRoZSB0aHVtYi4ifSx7bmFtZToiOmZpcnN0Iixicm93c2VyczpbIkUxMiIsIlM2IiwiQzE4IiwiSUU4IiwiTzkuMiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Zmlyc3QifV0sZGVzY3JpcHRpb246IldoZW4gcHJpbnRpbmcgZG91YmxlLXNpZGVkIGRvY3VtZW50cywgdGhlIHBhZ2UgYm94ZXMgb24gbGVmdCBhbmQgcmlnaHQgcGFnZXMgbWF5IGJlIGRpZmZlcmVudC4gVGhpcyBjYW4gYmUgZXhwcmVzc2VkIHRocm91Z2ggQ1NTIHBzZXVkby1jbGFzc2VzIGRlZmluZWQgaW4gdGhlICBwYWdlIGNvbnRleHQuIn0se25hbWU6IjpmaXJzdC1jaGlsZCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmaXJzdC1jaGlsZCJ9XSxkZXNjcmlwdGlvbjoiU2FtZSBhcyA6bnRoLWNoaWxkKDEpLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgZmlyc3QgY2hpbGQgb2Ygc29tZSBvdGhlciBlbGVtZW50LiJ9LHtuYW1lOiI6Zmlyc3Qtb2YtdHlwZSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmaXJzdC1vZi10eXBlIn1dLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDpudGgtb2YtdHlwZSgxKS4gUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgdGhlIGZpcnN0IHNpYmxpbmcgb2YgaXRzIHR5cGUgaW4gdGhlIGxpc3Qgb2YgY2hpbGRyZW4gb2YgaXRzIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6Zm9jdXMiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Zm9jdXMifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgd2hpbGUgYW4gZWxlbWVudCBoYXMgdGhlIGZvY3VzIChhY2NlcHRzIGtleWJvYXJkIG9yIG1vdXNlIGV2ZW50cywgb3Igb3RoZXIgZm9ybXMgb2YgaW5wdXQpLiJ9LHtuYW1lOiI6ZnVsbHNjcmVlbiIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmdWxsc2NyZWVuIn1dLGRlc2NyaXB0aW9uOiJNYXRjaGVzIGFueSBlbGVtZW50IHRoYXQgaGFzIGl0cyBmdWxsc2NyZWVuIGZsYWcgc2V0LiJ9LHtuYW1lOiI6ZnV0dXJlIixicm93c2VyczpbIlM3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmdXR1cmUifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW55IGVsZW1lbnQgdGhhdCBpcyBkZWZpbmVkIHRvIG9jY3VyIGVudGlyZWx5IGFmdGVyIGEgOmN1cnJlbnQgZWxlbWVudC4ifSx7bmFtZToiOmhvcml6b250YWwiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBhbnkgc2Nyb2xsYmFyIHBpZWNlcyB0aGF0IGhhdmUgYSBob3Jpem9udGFsIG9yaWVudGF0aW9uLiJ9LHtuYW1lOiI6aG9zdCIsYnJvd3NlcnM6WyJFNzkiLCJGRjYzIiwiUzEwIiwiQzU0IiwiTzQxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpob3N0In1dLGRlc2NyaXB0aW9uOiJXaGVuIGV2YWx1YXRlZCBpbiB0aGUgY29udGV4dCBvZiBhIHNoYWRvdyB0cmVlLCBtYXRjaGVzIHRoZSBzaGFkb3cgdHJlZeKAmXMgaG9zdCBlbGVtZW50LiJ9LHtuYW1lOiI6aG9zdCgpIixicm93c2VyczpbIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJXaGVuIGV2YWx1YXRlZCBpbiB0aGUgY29udGV4dCBvZiBhIHNoYWRvdyB0cmVlLCBpdCBtYXRjaGVzIHRoZSBzaGFkb3cgdHJlZeKAmXMgaG9zdCBlbGVtZW50IGlmIHRoZSBob3N0IGVsZW1lbnQsIGluIGl0cyBub3JtYWwgY29udGV4dCwgbWF0Y2hlcyB0aGUgc2VsZWN0b3IgYXJndW1lbnQuIn0se25hbWU6Ijpob3N0LWNvbnRleHQoKSIsYnJvd3NlcnM6WyJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiVGVzdHMgd2hldGhlciB0aGVyZSBpcyBhbiBhbmNlc3Rvciwgb3V0c2lkZSB0aGUgc2hhZG93IHRyZWUsIHdoaWNoIG1hdGNoZXMgYSBwYXJ0aWN1bGFyIHNlbGVjdG9yLiJ9LHtuYW1lOiI6aG92ZXIiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aG92ZXIifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgd2hpbGUgdGhlIHVzZXIgZGVzaWduYXRlcyBhbiBlbGVtZW50IHdpdGggYSBwb2ludGluZyBkZXZpY2UsIGJ1dCBkb2VzIG5vdCBuZWNlc3NhcmlseSBhY3RpdmF0ZSBpdC4gRm9yIGV4YW1wbGUsIGEgdmlzdWFsIHVzZXIgYWdlbnQgY291bGQgYXBwbHkgdGhpcyBwc2V1ZG8tY2xhc3Mgd2hlbiB0aGUgY3Vyc29yIChtb3VzZSBwb2ludGVyKSBob3ZlcnMgb3ZlciBhIGJveCBnZW5lcmF0ZWQgYnkgdGhlIGVsZW1lbnQuIn0se25hbWU6IjppbmNyZW1lbnQiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBidXR0b25zIGFuZCB0cmFjayBwaWVjZXMuIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgYnV0dG9uIG9yIHRyYWNrIHBpZWNlIHdpbGwgaW5jcmVtZW50IHRoZSB2aWV34oCZcyBwb3NpdGlvbiB3aGVuIHVzZWQuIn0se25hbWU6IjppbmRldGVybWluYXRlIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmluZGV0ZXJtaW5hdGUifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgdG8gVUkgZWxlbWVudHMgd2hvc2UgdmFsdWUgaXMgaW4gYW4gaW5kZXRlcm1pbmF0ZSBzdGF0ZS4ifSx7bmFtZToiOmluLXJhbmdlIixicm93c2VyczpbIkUxMyIsIkZGMjkiLCJTNS4xIiwiQzEwIiwiTzExIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzppbi1yYW5nZSJ9XSxkZXNjcmlwdGlvbjoiVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBtaW4gYW5kIG1heCBhdHRyaWJ1dGVzLCB3aGV0aGVyIG9uIGEgcmFuZ2UgaW5wdXQsIGEgbnVtYmVyIGZpZWxkLCBvciBhbnkgb3RoZXIgdHlwZXMgdGhhdCBhY2NlcHQgdGhvc2UgYXR0cmlidXRlcy4ifSx7bmFtZToiOmludmFsaWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aW52YWxpZCJ9XSxkZXNjcmlwdGlvbjoiQW4gZWxlbWVudCBpcyA6dmFsaWQgb3IgOmludmFsaWQgd2hlbiBpdCBpcywgcmVzcGVjdGl2ZWx5LCB2YWxpZCBvciBpbnZhbGlkIHdpdGggcmVzcGVjdCB0byBkYXRhIHZhbGlkaXR5IHNlbWFudGljcyBkZWZpbmVkIGJ5IGEgZGlmZmVyZW50IHNwZWNpZmljYXRpb24uIn0se25hbWU6IjpsYW5nKCkiLGJyb3dzZXJzOlsiRSIsIkMiLCJGRjEiLCJJRTgiLCJPOCIsIlMzIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIGluIGxhbmd1YWdlIHNwZWNpZmllZC4ifSx7bmFtZToiOmxhc3QtY2hpbGQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86bGFzdC1jaGlsZCJ9XSxkZXNjcmlwdGlvbjoiU2FtZSBhcyA6bnRoLWxhc3QtY2hpbGQoMSkuIFJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBsYXN0IGNoaWxkIG9mIHNvbWUgb3RoZXIgZWxlbWVudC4ifSx7bmFtZToiOmxhc3Qtb2YtdHlwZSIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpsYXN0LW9mLXR5cGUifV0sZGVzY3JpcHRpb246IlNhbWUgYXMgOm50aC1sYXN0LW9mLXR5cGUoMSkuIFJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBsYXN0IHNpYmxpbmcgb2YgaXRzIHR5cGUgaW4gdGhlIGxpc3Qgb2YgY2hpbGRyZW4gb2YgaXRzIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6bGVmdCIsYnJvd3NlcnM6WyJFMTIiLCJTNS4xIiwiQzYiLCJJRTgiLCJPOS4yIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpsZWZ0In1dLGRlc2NyaXB0aW9uOiJXaGVuIHByaW50aW5nIGRvdWJsZS1zaWRlZCBkb2N1bWVudHMsIHRoZSBwYWdlIGJveGVzIG9uIGxlZnQgYW5kIHJpZ2h0IHBhZ2VzIG1heSBiZSBkaWZmZXJlbnQuIFRoaXMgY2FuIGJlIGV4cHJlc3NlZCB0aHJvdWdoIENTUyBwc2V1ZG8tY2xhc3NlcyBkZWZpbmVkIGluIHRoZSAgcGFnZSBjb250ZXh0LiJ9LHtuYW1lOiI6bGluayIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpsaW5rIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRvIGxpbmtzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gdmlzaXRlZC4ifSx7bmFtZToiOm1hdGNoZXMoKSIsYnJvd3NlcnM6WyJTOSJdLGRlc2NyaXB0aW9uOiJUYWtlcyBhIHNlbGVjdG9yIGxpc3QgYXMgaXRzIGFyZ3VtZW50LiBJdCByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyByZXByZXNlbnRlZCBieSBpdHMgYXJndW1lbnQuIn0se25hbWU6IjotbW96LWFueSgpIixicm93c2VyczpbIkZGNCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyByZXByZXNlbnRlZCBieSB0aGUgc2VsZWN0b3IgbGlzdCBwYXNzZWQgYXMgaXRzIGFyZ3VtZW50LiBTdGFuZGFyZGl6ZWQgYXMgOm1hdGNoZXMoKS4ifSx7bmFtZToiOi1tb3otYW55LWxpbmsiLGJyb3dzZXJzOlsiRkYxIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGFjdHMgYXMgdGhlIHNvdXJjZSBhbmNob3Igb2YgYSBoeXBlcmxpbmsuIEFwcGxpZXMgdG8gYm90aCB2aXNpdGVkIGFuZCB1bnZpc2l0ZWQgbGlua3MuIn0se25hbWU6IjotbW96LWJyb2tlbiIsYnJvd3NlcnM6WyJGRjMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOi1tb3otYnJva2VuIn1dLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgZWxlbWVudHMgcmVwcmVzZW50aW5nIGJyb2tlbiBpbWFnZXMuIn0se25hbWU6IjotbW96LWRyYWctb3ZlciIsYnJvd3NlcnM6WyJGRjEiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzIHdoZW4gYSBkcmFnLW92ZXIgZXZlbnQgYXBwbGllcyB0byBpdC4ifSx7bmFtZToiOi1tb3otZmlyc3Qtbm9kZSIsYnJvd3NlcnM6WyJGRjEiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgZmlyc3QgY2hpbGQgbm9kZSBvZiBzb21lIG90aGVyIGVsZW1lbnQuIn0se25hbWU6IjotbW96LWZvY3VzcmluZyIsYnJvd3NlcnM6WyJGRjQiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGFuIGVsZW1lbnQgdGhhdCBoYXMgZm9jdXMgYW5kIGZvY3VzIHJpbmcgZHJhd2luZyBpcyBlbmFibGVkIGluIHRoZSBicm93c2VyLiJ9LHtuYW1lOiI6LW1vei1mdWxsLXNjcmVlbiIsYnJvd3NlcnM6WyJGRjkiXSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyBhbnkgZWxlbWVudCB0aGF0IGhhcyBpdHMgZnVsbHNjcmVlbiBmbGFnIHNldC4gU3RhbmRhcmRpemVkIGFzIDpmdWxsc2NyZWVuLiJ9LHtuYW1lOiI6LW1vei1sYXN0LW5vZGUiLGJyb3dzZXJzOlsiRkYxIl0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgdGhlIGxhc3QgY2hpbGQgbm9kZSBvZiBzb21lIG90aGVyIGVsZW1lbnQuIn0se25hbWU6IjotbW96LWxvYWRpbmciLGJyb3dzZXJzOlsiRkYzIl0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBlbGVtZW50cywgc3VjaCBhcyBpbWFnZXMsIHRoYXQgaGF2ZW7igJl0IHN0YXJ0ZWQgbG9hZGluZyB5ZXQuIn0se25hbWU6IjotbW96LW9ubHktd2hpdGVzcGFjZSIsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOi1tb3otb25seS13aGl0ZXNwYWNlIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2FtZSBhcyA6ZW1wdHksIGV4Y2VwdCB0aGF0IGl0IGFkZGl0aW9uYWxseSBtYXRjaGVzIGVsZW1lbnRzIHRoYXQgb25seSBjb250YWluIGNvZGUgcG9pbnRzIGFmZmVjdGVkIGJ5IHdoaXRlc3BhY2UgcHJvY2Vzc2luZy4gU3RhbmRhcmRpemVkIGFzIDpibGFuay4ifSx7bmFtZToiOi1tb3otcGxhY2Vob2xkZXIiLGJyb3dzZXJzOlsiRkY0Il0sZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIFJlcHJlc2VudHMgcGxhY2Vob2xkZXIgdGV4dCBpbiBhbiBpbnB1dCBmaWVsZC4gVXNlIDo6LW1vei1wbGFjZWhvbGRlciBmb3IgRmlyZWZveCAxOSsuIn0se25hbWU6IjotbW96LXN1Ym1pdC1pbnZhbGlkIixicm93c2VyczpbIkZGODgiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOi1tb3otc3VibWl0LWludmFsaWQifV0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gUmVwcmVzZW50cyBhbnkgc3VibWl0IGJ1dHRvbiB3aGVuIHRoZSBjb250ZW50cyBvZiB0aGUgYXNzb2NpYXRlZCBmb3JtIGFyZSBub3QgdmFsaWQuIn0se25hbWU6IjotbW96LXN1cHByZXNzZWQiLGJyb3dzZXJzOlsiRkYzIl0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBlbGVtZW50cyByZXByZXNlbnRpbmcgaW1hZ2VzIHRoYXQgaGF2ZSBiZWVuIGJsb2NrZWQgZnJvbSBsb2FkaW5nLiJ9LHtuYW1lOiI6LW1vei11aS1pbnZhbGlkIixicm93c2VyczpbIkZGNCJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIFJlcHJlc2VudHMgYW55IHZhbGlkYXRlZCBmb3JtIGVsZW1lbnQgd2hvc2UgdmFsdWUgaXNuJ3QgdmFsaWQgIn0se25hbWU6IjotbW96LXVpLXZhbGlkIixicm93c2VyczpbIkZGNCJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIFJlcHJlc2VudHMgYW55IHZhbGlkYXRlZCBmb3JtIGVsZW1lbnQgd2hvc2UgdmFsdWUgaXMgdmFsaWQgIn0se25hbWU6IjotbW96LXVzZXItZGlzYWJsZWQiLGJyb3dzZXJzOlsiRkYzIl0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBlbGVtZW50cyByZXByZXNlbnRpbmcgaW1hZ2VzIHRoYXQgaGF2ZSBiZWVuIGRpc2FibGVkIGR1ZSB0byB0aGUgdXNlcuKAmXMgcHJlZmVyZW5jZXMuIn0se25hbWU6IjotbW96LXdpbmRvdy1pbmFjdGl2ZSIsYnJvd3NlcnM6WyJGRjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOi1tb3otd2luZG93LWluYWN0aXZlIn1dLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgZWxlbWVudHMgaW4gYW4gaW5hY3RpdmUgd2luZG93LiJ9LHtuYW1lOiI6LW1zLWZ1bGxzY3JlZW4iLGJyb3dzZXJzOlsiSUUxMSJdLGRlc2NyaXB0aW9uOiJNYXRjaGVzIGFueSBlbGVtZW50IHRoYXQgaGFzIGl0cyBmdWxsc2NyZWVuIGZsYWcgc2V0LiJ9LHtuYW1lOiI6LW1zLWlucHV0LXBsYWNlaG9sZGVyIixicm93c2VyczpbIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBwbGFjZWhvbGRlciB0ZXh0IGluIGFuIGlucHV0IGZpZWxkLiBOb3RlOiBmb3IgRWRnZSB1c2UgdGhlIHBzZXVkby1lbGVtZW50IDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLiBTdGFuZGFyZGl6ZWQgYXMgOjpwbGFjZWhvbGRlci4ifSx7bmFtZToiOi1tcy1rZXlib2FyZC1hY3RpdmUiLGJyb3dzZXJzOlsiSUUxMCJdLGRlc2NyaXB0aW9uOiJXaW5kb3dzIFN0b3JlIGFwcHMgb25seS4gQXBwbGllcyBvbmUgb3IgbW9yZSBzdHlsZXMgdG8gYW4gZWxlbWVudCB3aGVuIGl0IGhhcyBmb2N1cyBhbmQgdGhlIHVzZXIgcHJlc3NlcyB0aGUgc3BhY2UgYmFyLiJ9LHtuYW1lOiI6LW1zLWxhbmcoKSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyBpbiB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkLiBBY2NlcHRzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgbGFuZ3VhZ2UgdG9rZW5zLiJ9LHtuYW1lOiI6bm8tYnV0dG9uIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gdHJhY2sgcGllY2VzLiBBcHBsaWVzIHdoZW4gdGhlcmUgaXMgbm8gYnV0dG9uIGF0IHRoYXQgZW5kIG9mIHRoZSB0cmFjay4ifSx7bmFtZToiOm5vdCgpIixicm93c2VyczpbIkUiLCJDIiwiRkYxIiwiSUU5IiwiTzkuNSIsIlMyIl0sZGVzY3JpcHRpb246IlRoZSBuZWdhdGlvbiBwc2V1ZG8tY2xhc3MsIDpub3QoWCksIGlzIGEgZnVuY3Rpb25hbCBub3RhdGlvbiB0YWtpbmcgYSBzaW1wbGUgc2VsZWN0b3IgKGV4Y2x1ZGluZyB0aGUgbmVnYXRpb24gcHNldWRvLWNsYXNzIGl0c2VsZikgYXMgYW4gYXJndW1lbnQuIEl0IHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIG5vdCByZXByZXNlbnRlZCBieSBpdHMgYXJndW1lbnQuIn0se25hbWU6IjpudGgtY2hpbGQoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMy41IiwiSUU5IiwiTzkuNSIsIlMzLjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIGFuK2ItMSBzaWJsaW5ncyBiZWZvcmUgaXQgaW4gdGhlIGRvY3VtZW50IHRyZWUsIGZvciBhbnkgcG9zaXRpdmUgaW50ZWdlciBvciB6ZXJvIHZhbHVlIG9mIG4sIGFuZCBoYXMgYSBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOm50aC1sYXN0LWNoaWxkKCkiLGJyb3dzZXJzOlsiRSIsIkMiLCJGRjMuNSIsIklFOSIsIk85LjUiLCJTMy4xIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBhbitiLTEgc2libGluZ3MgYWZ0ZXIgaXQgaW4gdGhlIGRvY3VtZW50IHRyZWUsIGZvciBhbnkgcG9zaXRpdmUgaW50ZWdlciBvciB6ZXJvIHZhbHVlIG9mIG4sIGFuZCBoYXMgYSBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOm50aC1sYXN0LW9mLXR5cGUoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMy41IiwiSUU5IiwiTzkuNSIsIlMzLjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIGFuK2ItMSBzaWJsaW5ncyB3aXRoIHRoZSBzYW1lIGV4cGFuZGVkIGVsZW1lbnQgbmFtZSBhZnRlciBpdCBpbiB0aGUgZG9jdW1lbnQgdHJlZSwgZm9yIGFueSB6ZXJvIG9yIHBvc2l0aXZlIGludGVnZXIgdmFsdWUgb2YgbiwgYW5kIGhhcyBhIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6bnRoLW9mLXR5cGUoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMy41IiwiSUU5IiwiTzkuNSIsIlMzLjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIGFuK2ItMSBzaWJsaW5ncyB3aXRoIHRoZSBzYW1lIGV4cGFuZGVkIGVsZW1lbnQgbmFtZSBiZWZvcmUgaXQgaW4gdGhlIGRvY3VtZW50IHRyZWUsIGZvciBhbnkgemVybyBvciBwb3NpdGl2ZSBpbnRlZ2VyIHZhbHVlIG9mIG4sIGFuZCBoYXMgYSBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOm9ubHktY2hpbGQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86b25seS1jaGlsZCJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIGEgcGFyZW50IGVsZW1lbnQgYW5kIHdob3NlIHBhcmVudCBlbGVtZW50IGhhcyBubyBvdGhlciBlbGVtZW50IGNoaWxkcmVuLiBTYW1lIGFzIDpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkIG9yIDpudGgtY2hpbGQoMSk6bnRoLWxhc3QtY2hpbGQoMSksIGJ1dCB3aXRoIGEgbG93ZXIgc3BlY2lmaWNpdHkuIn0se25hbWU6Ijpvbmx5LW9mLXR5cGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86b25seS1vZi10eXBlIn1dLGRlc2NyaXB0aW9uOiJNYXRjaGVzIGV2ZXJ5IGVsZW1lbnQgdGhhdCBpcyB0aGUgb25seSBjaGlsZCBvZiBpdHMgdHlwZSwgb2YgaXRzIHBhcmVudC4gU2FtZSBhcyA6Zmlyc3Qtb2YtdHlwZTpsYXN0LW9mLXR5cGUgb3IgOm50aC1vZi10eXBlKDEpOm50aC1sYXN0LW9mLXR5cGUoMSksIGJ1dCB3aXRoIGEgbG93ZXIgc3BlY2lmaWNpdHkuIn0se25hbWU6IjpvcHRpb25hbCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpvcHRpb25hbCJ9XSxkZXNjcmlwdGlvbjoiQSBmb3JtIGVsZW1lbnQgaXMgOnJlcXVpcmVkIG9yIDpvcHRpb25hbCBpZiBhIHZhbHVlIGZvciBpdCBpcywgcmVzcGVjdGl2ZWx5LCByZXF1aXJlZCBvciBvcHRpb25hbCBiZWZvcmUgdGhlIGZvcm0gaXQgYmVsb25ncyB0byBpcyBzdWJtaXR0ZWQuIEVsZW1lbnRzIHRoYXQgYXJlIG5vdCBmb3JtIGVsZW1lbnRzIGFyZSBuZWl0aGVyIHJlcXVpcmVkIG5vciBvcHRpb25hbC4ifSx7bmFtZToiOm91dC1vZi1yYW5nZSIsYnJvd3NlcnM6WyJFMTMiLCJGRjI5IiwiUzUuMSIsIkMxMCIsIk8xMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86b3V0LW9mLXJhbmdlIn1dLGRlc2NyaXB0aW9uOiJVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIG1pbiBhbmQgbWF4IGF0dHJpYnV0ZXMsIHdoZXRoZXIgb24gYSByYW5nZSBpbnB1dCwgYSBudW1iZXIgZmllbGQsIG9yIGFueSBvdGhlciB0eXBlcyB0aGF0IGFjY2VwdCB0aG9zZSBhdHRyaWJ1dGVzLiJ9LHtuYW1lOiI6cGFzdCIsYnJvd3NlcnM6WyJTNyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cGFzdCJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbnkgZWxlbWVudCB0aGF0IGlzIGRlZmluZWQgdG8gb2NjdXIgZW50aXJlbHkgcHJpb3IgdG8gYSA6Y3VycmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6cmVhZC1vbmx5Iixicm93c2VyczpbIkUxMyIsIkZGNzgiLCJTNCIsIkMxIiwiTzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnJlYWQtb25seSJ9XSxkZXNjcmlwdGlvbjoiQW4gZWxlbWVudCB3aG9zZSBjb250ZW50cyBhcmUgbm90IHVzZXItYWx0ZXJhYmxlIGlzIDpyZWFkLW9ubHkuIEhvd2V2ZXIsIGVsZW1lbnRzIHdob3NlIGNvbnRlbnRzIGFyZSB1c2VyLWFsdGVyYWJsZSAoc3VjaCBhcyB0ZXh0IGlucHV0IGZpZWxkcykgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW4gYSA6cmVhZC13cml0ZSBzdGF0ZS4gSW4gdHlwaWNhbCBkb2N1bWVudHMsIG1vc3QgZWxlbWVudHMgYXJlIDpyZWFkLW9ubHkuIn0se25hbWU6IjpyZWFkLXdyaXRlIixicm93c2VyczpbIkUxMyIsIkZGNzgiLCJTNCIsIkMxIiwiTzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnJlYWQtd3JpdGUifV0sZGVzY3JpcHRpb246IkFuIGVsZW1lbnQgd2hvc2UgY29udGVudHMgYXJlIG5vdCB1c2VyLWFsdGVyYWJsZSBpcyA6cmVhZC1vbmx5LiBIb3dldmVyLCBlbGVtZW50cyB3aG9zZSBjb250ZW50cyBhcmUgdXNlci1hbHRlcmFibGUgKHN1Y2ggYXMgdGV4dCBpbnB1dCBmaWVsZHMpIGFyZSBjb25zaWRlcmVkIHRvIGJlIGluIGEgOnJlYWQtd3JpdGUgc3RhdGUuIEluIHR5cGljYWwgZG9jdW1lbnRzLCBtb3N0IGVsZW1lbnRzIGFyZSA6cmVhZC1vbmx5LiJ9LHtuYW1lOiI6cmVxdWlyZWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cmVxdWlyZWQifV0sZGVzY3JpcHRpb246IkEgZm9ybSBlbGVtZW50IGlzIDpyZXF1aXJlZCBvciA6b3B0aW9uYWwgaWYgYSB2YWx1ZSBmb3IgaXQgaXMsIHJlc3BlY3RpdmVseSwgcmVxdWlyZWQgb3Igb3B0aW9uYWwgYmVmb3JlIHRoZSBmb3JtIGl0IGJlbG9uZ3MgdG8gaXMgc3VibWl0dGVkLiBFbGVtZW50cyB0aGF0IGFyZSBub3QgZm9ybSBlbGVtZW50cyBhcmUgbmVpdGhlciByZXF1aXJlZCBub3Igb3B0aW9uYWwuIn0se25hbWU6IjpyaWdodCIsYnJvd3NlcnM6WyJFMTIiLCJTNS4xIiwiQzYiLCJJRTgiLCJPOS4yIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpyaWdodCJ9XSxkZXNjcmlwdGlvbjoiV2hlbiBwcmludGluZyBkb3VibGUtc2lkZWQgZG9jdW1lbnRzLCB0aGUgcGFnZSBib3hlcyBvbiBsZWZ0IGFuZCByaWdodCBwYWdlcyBtYXkgYmUgZGlmZmVyZW50LiBUaGlzIGNhbiBiZSBleHByZXNzZWQgdGhyb3VnaCBDU1MgcHNldWRvLWNsYXNzZXMgZGVmaW5lZCBpbiB0aGUgIHBhZ2UgY29udGV4dC4ifSx7bmFtZToiOnJvb3QiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cm9vdCJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgdGhlIHJvb3Qgb2YgdGhlIGRvY3VtZW50LiBJbiBIVE1MIDQsIHRoaXMgaXMgYWx3YXlzIHRoZSBIVE1MIGVsZW1lbnQuIn0se25hbWU6IjpzY29wZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzciLCJDMjciLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnNjb3BlIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFueSBlbGVtZW50IHRoYXQgaXMgaW4gdGhlIGNvbnRleHR1YWwgcmVmZXJlbmNlIGVsZW1lbnQgc2V0LiJ9LHtuYW1lOiI6c2luZ2xlLWJ1dHRvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcy4gQXBwbGllcyB3aGVuIGJvdGggYnV0dG9ucyBhcmUgZGlzcGxheWVkIHNlcGFyYXRlbHkgYXQgZWl0aGVyIGVuZCBvZiB0aGUgc2Nyb2xsYmFyLiJ9LHtuYW1lOiI6c3RhcnQiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBidXR0b25zIGFuZCB0cmFjayBwaWVjZXMuIEluZGljYXRlcyB3aGV0aGVyIHRoZSBvYmplY3QgaXMgcGxhY2VkIGJlZm9yZSB0aGUgdGh1bWIuIn0se25hbWU6Ijp0YXJnZXQiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86dGFyZ2V0In1dLGRlc2NyaXB0aW9uOiJTb21lIFVSSXMgcmVmZXIgdG8gYSBsb2NhdGlvbiB3aXRoaW4gYSByZXNvdXJjZS4gVGhpcyBraW5kIG9mIFVSSSBlbmRzIHdpdGggYSAnbnVtYmVyIHNpZ24nICgjKSBmb2xsb3dlZCBieSBhbiBhbmNob3IgaWRlbnRpZmllciAoY2FsbGVkIHRoZSBmcmFnbWVudCBpZGVudGlmaWVyKS4ifSx7bmFtZToiOnZhbGlkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnZhbGlkIn1dLGRlc2NyaXB0aW9uOiJBbiBlbGVtZW50IGlzIDp2YWxpZCBvciA6aW52YWxpZCB3aGVuIGl0IGlzLCByZXNwZWN0aXZlbHksIHZhbGlkIG9yIGludmFsaWQgd2l0aCByZXNwZWN0IHRvIGRhdGEgdmFsaWRpdHkgc2VtYW50aWNzIGRlZmluZWQgYnkgYSBkaWZmZXJlbnQgc3BlY2lmaWNhdGlvbi4ifSx7bmFtZToiOnZlcnRpY2FsIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYW55IHNjcm9sbGJhciBwaWVjZXMgdGhhdCBoYXZlIGEgdmVydGljYWwgb3JpZW50YXRpb24uIn0se25hbWU6Ijp2aXNpdGVkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnZpc2l0ZWQifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgb25jZSB0aGUgbGluayBoYXMgYmVlbiB2aXNpdGVkIGJ5IHRoZSB1c2VyLiJ9LHtuYW1lOiI6LXdlYmtpdC1hbnkoKSIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkgdGhlIHNlbGVjdG9yIGxpc3QgcGFzc2VkIGFzIGl0cyBhcmd1bWVudC4gU3RhbmRhcmRpemVkIGFzIDptYXRjaGVzKCkuIn0se25hbWU6Ijotd2Via2l0LWZ1bGwtc2NyZWVuIixicm93c2VyczpbIkMiLCJTNiJdLGRlc2NyaXB0aW9uOiJNYXRjaGVzIGFueSBlbGVtZW50IHRoYXQgaGFzIGl0cyBmdWxsc2NyZWVuIGZsYWcgc2V0LiBTdGFuZGFyZGl6ZWQgYXMgOmZ1bGxzY3JlZW4uIn0se25hbWU6Ijp3aW5kb3ctaW5hY3RpdmUiLGJyb3dzZXJzOlsiQyIsIlMzIl0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBhbGwgc2Nyb2xsYmFyIHBpZWNlcy4gSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSB3aW5kb3cgY29udGFpbmluZyB0aGUgc2Nyb2xsYmFyIGlzIGN1cnJlbnRseSBhY3RpdmUuIn0se25hbWU6IjpjdXJyZW50IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsZGVzY3JpcHRpb246IlRoZSA6Y3VycmVudCBDU1MgcHNldWRvLWNsYXNzIHNlbGVjdG9yIGlzIGEgdGltZS1kaW1lbnNpb25hbCBwc2V1ZG8tY2xhc3MgdGhhdCByZXByZXNlbnRzIHRoZSBlbGVtZW50LCBvciBhbiBhbmNlc3RvciBvZiB0aGUgZWxlbWVudCwgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgZGlzcGxheWVkIn0se25hbWU6IjpibGFuayIsc3RhdHVzOiJleHBlcmltZW50YWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86YmxhbmsifV0sZGVzY3JpcHRpb246IlRoZSA6YmxhbmsgQ1NTIHBzZXVkby1jbGFzcyBzZWxlY3RzIGVtcHR5IHVzZXIgaW5wdXQgZWxlbWVudHMgKGVnLiA8aW5wdXQ+IG9yIDx0ZXh0YXJlYT4pLiJ9LHtuYW1lOiI6ZGVmaW5lZCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTc5IiwiRkY2MyIsIlMxMCIsIkM1NCIsIk80MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZGVmaW5lZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpkZWZpbmVkIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbnkgZWxlbWVudCB0aGF0IGhhcyBiZWVuIGRlZmluZWQuIFRoaXMgaW5jbHVkZXMgYW55IHN0YW5kYXJkIGVsZW1lbnQgYnVpbHQgaW4gdG8gdGhlIGJyb3dzZXIsIGFuZCBjdXN0b20gZWxlbWVudHMgdGhhdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGRlZmluZWQgKGkuZS4gd2l0aCB0aGUgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmRlZmluZSgpIG1ldGhvZCkuIn0se25hbWU6IjpkaXIiLGJyb3dzZXJzOlsiRkY0OSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZGlyIn1dLGRlc2NyaXB0aW9uOiJUaGUgOmRpcigpIENTUyBwc2V1ZG8tY2xhc3MgbWF0Y2hlcyBlbGVtZW50cyBiYXNlZCBvbiB0aGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIHRleHQgY29udGFpbmVkIGluIHRoZW0uIn0se25hbWU6Ijpmb2N1cy12aXNpYmxlIixicm93c2VyczpbIkU4NiIsIkZGODUiLCJTMTUuNCIsIkM4NiIsIk83MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Zm9jdXMtdmlzaWJsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpmb2N1cy12aXNpYmxlIHBzZXVkby1jbGFzcyBhcHBsaWVzIHdoaWxlIGFuIGVsZW1lbnQgbWF0Y2hlcyB0aGUgOmZvY3VzIHBzZXVkby1jbGFzcyBhbmQgdGhlIFVBIGRldGVybWluZXMgdmlhIGhldXJpc3RpY3MgdGhhdCB0aGUgZm9jdXMgc2hvdWxkIGJlIG1hZGUgZXZpZGVudCBvbiB0aGUgZWxlbWVudC4ifSx7bmFtZToiOmZvY3VzLXdpdGhpbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjUyIiwiUzEwLjEiLCJDNjAiLCJPNDciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZvY3VzLXdpdGhpbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpmb2N1cy13aXRoaW4gcHNldWRvLWNsYXNzIGFwcGxpZXMgdG8gYW55IGVsZW1lbnQgZm9yIHdoaWNoIHRoZSA6Zm9jdXMgcHNldWRvIGNsYXNzIGFwcGxpZXMgYXMgd2VsbCBhcyB0byBhbiBlbGVtZW50IHdob3NlIGRlc2NlbmRhbnQgaW4gdGhlIGZsYXQgdHJlZSAoaW5jbHVkaW5nIG5vbi1lbGVtZW50IG5vZGVzLCBzdWNoIGFzIHRleHQgbm9kZXMpIG1hdGNoZXMgdGhlIGNvbmRpdGlvbnMgZm9yIG1hdGNoaW5nIDpmb2N1cy4ifSx7bmFtZToiOmhhcyIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiUzE1LjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmhhcyJ9XSxkZXNjcmlwdGlvbjoiOlRoZSA6aGFzKCkgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgaWYgYW55IG9mIHRoZSBzZWxlY3RvcnMgcGFzc2VkIGFzIHBhcmFtZXRlcnMgKHJlbGF0aXZlIHRvIHRoZSA6c2NvcGUgb2YgdGhlIGdpdmVuIGVsZW1lbnQpLCBtYXRjaCBhdCBsZWFzdCBvbmUgZWxlbWVudC4ifSx7bmFtZToiOmlzIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFODgiLCJGRjc4IiwiUzE0IiwiQzg4IiwiTzc0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzppcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIDppcygpIENTUyBwc2V1ZG8tY2xhc3MgZnVuY3Rpb24gdGFrZXMgYSBzZWxlY3RvciBsaXN0IGFzIGl0cyBhcmd1bWVudCwgYW5kIHNlbGVjdHMgYW55IGVsZW1lbnQgdGhhdCBjYW4gYmUgc2VsZWN0ZWQgYnkgb25lIG9mIHRoZSBzZWxlY3RvcnMgaW4gdGhhdCBsaXN0LiBUaGlzIGlzIHVzZWZ1bCBmb3Igd3JpdGluZyBsYXJnZSBzZWxlY3RvcnMgaW4gYSBtb3JlIGNvbXBhY3QgZm9ybS4ifSx7bmFtZToiOmxvY2FsLWxpbmsiLHN0YXR1czoiZXhwZXJpbWVudGFsIixkZXNjcmlwdGlvbjoiVGhlIDpsb2NhbC1saW5rIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbiBsaW5rIHRvIHRoZSBzYW1lIGRvY3VtZW50In0se25hbWU6IjpudGgtY29sIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsZGVzY3JpcHRpb246IlRoZSA6bnRoLWNvbCgpIENTUyBwc2V1ZG8tY2xhc3MgaXMgZGVzaWduZWQgZm9yIHRhYmxlcyBhbmQgZ3JpZHMuIEl0IGFjY2VwdHMgdGhlIEFuK0Igbm90YXRpb24gc3VjaCBhcyB1c2VkIHdpdGggdGhlIDpudGgtY2hpbGQgc2VsZWN0b3IsIHVzaW5nIHRoaXMgdG8gdGFyZ2V0IGV2ZXJ5IG50aCBjb2x1bW4uICJ9LHtuYW1lOiI6bnRoLWxhc3QtY29sIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsZGVzY3JpcHRpb246IlRoZSA6bnRoLWxhc3QtY29sKCkgQ1NTIHBzZXVkby1jbGFzcyBpcyBkZXNpZ25lZCBmb3IgdGFibGVzIGFuZCBncmlkcy4gSXQgYWNjZXB0cyB0aGUgQW4rQiBub3RhdGlvbiBzdWNoIGFzIHVzZWQgd2l0aCB0aGUgOm50aC1jaGlsZCBzZWxlY3RvciwgdXNpbmcgdGhpcyB0byB0YXJnZXQgZXZlcnkgbnRoIGNvbHVtbiBiZWZvcmUgaXQsIHRoZXJlZm9yZSBjb3VudGluZyBiYWNrIGZyb20gdGhlIGVuZCBvZiB0aGUgc2V0IG9mIGNvbHVtbnMuIn0se25hbWU6IjpwYXVzZWQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixkZXNjcmlwdGlvbjoiVGhlIDpwYXVzZWQgQ1NTIHBzZXVkby1jbGFzcyBzZWxlY3RvciBpcyBhIHJlc291cmNlIHN0YXRlIHBzZXVkby1jbGFzcyB0aGF0IHdpbGwgbWF0Y2ggYW4gYXVkaW8sIHZpZGVvLCBvciBzaW1pbGFyIHJlc291cmNlIHRoYXQgaXMgY2FwYWJsZSBvZiBiZWluZyDigJxwbGF5ZWTigJ0gb3Ig4oCccGF1c2Vk4oCdLCB3aGVuIHRoYXQgZWxlbWVudCBpcyDigJxwYXVzZWTigJ0uIn0se25hbWU6IjpwbGFjZWhvbGRlci1zaG93biIsc3RhdHVzOiJleHBlcmltZW50YWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cGxhY2Vob2xkZXItc2hvd24ifV0sZGVzY3JpcHRpb246IlRoZSA6cGxhY2Vob2xkZXItc2hvd24gQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFueSA8aW5wdXQ+IG9yIDx0ZXh0YXJlYT4gZWxlbWVudCB0aGF0IGlzIGN1cnJlbnRseSBkaXNwbGF5aW5nIHBsYWNlaG9sZGVyIHRleHQuIn0se25hbWU6IjpwbGF5aW5nIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsZGVzY3JpcHRpb246IlRoZSA6cGxheWluZyBDU1MgcHNldWRvLWNsYXNzIHNlbGVjdG9yIGlzIGEgcmVzb3VyY2Ugc3RhdGUgcHNldWRvLWNsYXNzIHRoYXQgd2lsbCBtYXRjaCBhbiBhdWRpbywgdmlkZW8sIG9yIHNpbWlsYXIgcmVzb3VyY2UgdGhhdCBpcyBjYXBhYmxlIG9mIGJlaW5nIOKAnHBsYXllZOKAnSBvciDigJxwYXVzZWTigJ0sIHdoZW4gdGhhdCBlbGVtZW50IGlzIOKAnHBsYXlpbmfigJ0uICJ9LHtuYW1lOiI6dGFyZ2V0LXdpdGhpbiIsc3RhdHVzOiJleHBlcmltZW50YWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86dGFyZ2V0LXdpdGhpbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIDp0YXJnZXQtd2l0aGluIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaXMgYSB0YXJnZXQgZWxlbWVudCBvciBjb250YWlucyBhbiBlbGVtZW50IHRoYXQgaXMgYSB0YXJnZXQuIEEgdGFyZ2V0IGVsZW1lbnQgaXMgYSB1bmlxdWUgZWxlbWVudCB3aXRoIGFuIGlkIG1hdGNoaW5nIHRoZSBVUkwncyBmcmFnbWVudC4ifSx7bmFtZToiOnVzZXItaW52YWxpZCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRkY4OCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86dXNlci1pbnZhbGlkIn1dLGRlc2NyaXB0aW9uOiJUaGUgOnVzZXItaW52YWxpZCBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW55IHZhbGlkYXRlZCBmb3JtIGVsZW1lbnQgd2hvc2UgdmFsdWUgaXNuJ3QgdmFsaWQgYmFzZWQgb24gdGhlaXIgdmFsaWRhdGlvbiBjb25zdHJhaW50cywgYWZ0ZXIgdGhlIHVzZXIgaGFzIGludGVyYWN0ZWQgd2l0aCBpdC4ifSx7bmFtZToiOnVzZXItdmFsaWQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkZGODgiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnVzZXItdmFsaWQifV0sZGVzY3JpcHRpb246IlRoZSA6dXNlci12YWxpZCBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW55IHZhbGlkYXRlZCBmb3JtIGVsZW1lbnQgd2hvc2UgdmFsdWUgdmFsaWRhdGVzIGNvcnJlY3RseSBiYXNlZCBvbiBpdHMgdmFsaWRhdGlvbiBjb25zdHJhaW50cy4gSG93ZXZlciwgdW5saWtlIDp2YWxpZCBpdCBvbmx5IG1hdGNoZXMgb25jZSB0aGUgdXNlciBoYXMgaW50ZXJhY3RlZCB3aXRoIGl0LiJ9LHtuYW1lOiI6d2hlcmUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkU4OCIsIkZGNzgiLCJTMTQiLCJDODgiLCJPNzQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOndoZXJlIn1dLGRlc2NyaXB0aW9uOiJUaGUgOndoZXJlKCkgQ1NTIHBzZXVkby1jbGFzcyBmdW5jdGlvbiB0YWtlcyBhIHNlbGVjdG9yIGxpc3QgYXMgaXRzIGFyZ3VtZW50LCBhbmQgc2VsZWN0cyBhbnkgZWxlbWVudCB0aGF0IGNhbiBiZSBzZWxlY3RlZCBieSBvbmUgb2YgdGhlIHNlbGVjdG9ycyBpbiB0aGF0IGxpc3QuIn0se25hbWU6IjpwaWN0dXJlLWluLXBpY3R1cmUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixkZXNjcmlwdGlvbjoiVGhlIDpwaWN0dXJlLWluLXBpY3R1cmUgQ1NTIHBzZXVkby1jbGFzcyBtYXRjaGVzIHRoZSBlbGVtZW50IHdoaWNoIGlzIGN1cnJlbnRseSBpbiBwaWN0dXJlLWluLXBpY3R1cmUgbW9kZS4ifV0scHNldWRvRWxlbWVudHM6W3tuYW1lOiI6OmFmdGVyIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjphZnRlciJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHN0eWxlYWJsZSBjaGlsZCBwc2V1ZG8tZWxlbWVudCBpbW1lZGlhdGVseSBhZnRlciB0aGUgb3JpZ2luYXRpbmcgZWxlbWVudOKAmXMgYWN0dWFsIGNvbnRlbnQuIn0se25hbWU6Ijo6YmFja2Ryb3AiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OmJhY2tkcm9wIn1dLGRlc2NyaXB0aW9uOiJVc2VkIHRvIGNyZWF0ZSBhIGJhY2tkcm9wIHRoYXQgaGlkZXMgdGhlIHVuZGVybHlpbmcgZG9jdW1lbnQgZm9yIGFuIGVsZW1lbnQgaW4gYSB0b3AgbGF5ZXIgKHN1Y2ggYXMgYW4gZWxlbWVudCB0aGF0IGlzIGRpc3BsYXllZCBmdWxsc2NyZWVuKS4ifSx7bmFtZToiOjpiZWZvcmUiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OmJlZm9yZSJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHN0eWxlYWJsZSBjaGlsZCBwc2V1ZG8tZWxlbWVudCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIG9yaWdpbmF0aW5nIGVsZW1lbnTigJlzIGFjdHVhbCBjb250ZW50LiJ9LHtuYW1lOiI6OmNvbnRlbnQiLGJyb3dzZXJzOlsiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIE1hdGNoZXMgdGhlIGRpc3RyaWJ1dGlvbiBsaXN0IGl0c2VsZiwgb24gZWxlbWVudHMgdGhhdCBoYXZlIG9uZS4gVXNlIDo6c2xvdHRlZCBmb3IgZm9yd2FyZCBjb21wYXRpYmlsaXR5LiJ9LHtuYW1lOiI6OmN1ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjU1IiwiUzciLCJDMjYiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpjdWUifV19LHtuYW1lOiI6OmN1ZSgpIixicm93c2VyczpbIkMiLCJPMTYiLCJTNiJdfSx7bmFtZToiOjpjdWUtcmVnaW9uIixicm93c2VyczpbIkMiLCJPMTYiLCJTNiJdfSx7bmFtZToiOjpjdWUtcmVnaW9uKCkiLGJyb3dzZXJzOlsiQyIsIk8xNiIsIlM2Il19LHtuYW1lOiI6OmZpcnN0LWxldHRlciIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6Zmlyc3QtbGV0dGVyIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBmaXJzdCBsZXR0ZXIgb2YgYW4gZWxlbWVudCwgaWYgaXQgaXMgbm90IHByZWNlZGVkIGJ5IGFueSBvdGhlciBjb250ZW50IChzdWNoIGFzIGltYWdlcyBvciBpbmxpbmUgdGFibGVzKSBvbiBpdHMgbGluZS4ifSx7bmFtZToiOjpmaXJzdC1saW5lIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpmaXJzdC1saW5lIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaXJzdCBmb3JtYXR0ZWQgbGluZSBvZiBpdHMgb3JpZ2luYXRpbmcgZWxlbWVudC4ifSx7bmFtZToiOjotbW96LWZvY3VzLWlubmVyIixicm93c2VyczpbIkZGNCJdfSx7bmFtZToiOjotbW96LWZvY3VzLW91dGVyIixicm93c2VyczpbIkZGNCJdfSx7bmFtZToiOjotbW96LWxpc3QtYnVsbGV0Iixicm93c2VyczpbIkZGMSJdLGRlc2NyaXB0aW9uOiJVc2VkIHRvIHN0eWxlIHRoZSBidWxsZXQgb2YgYSBsaXN0IGVsZW1lbnQuIFNpbWlsYXIgdG8gdGhlIHN0YW5kYXJkaXplZCA6Om1hcmtlci4ifSx7bmFtZToiOjotbW96LWxpc3QtbnVtYmVyIixicm93c2VyczpbIkZGMSJdLGRlc2NyaXB0aW9uOiJVc2VkIHRvIHN0eWxlIHRoZSBudW1iZXJzIG9mIGEgbGlzdCBlbGVtZW50LiBTaW1pbGFyIHRvIHRoZSBzdGFuZGFyZGl6ZWQgOjptYXJrZXIuIn0se25hbWU6Ijo6LW1vei1wbGFjZWhvbGRlciIsYnJvd3NlcnM6WyJGRjE5Il0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgcGxhY2Vob2xkZXIgdGV4dCBpbiBhbiBpbnB1dCBmaWVsZCJ9LHtuYW1lOiI6Oi1tb3otcHJvZ3Jlc3MtYmFyIixicm93c2VyczpbIkZGOSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBiYXIgcG9ydGlvbiBvZiBhIHByb2dyZXNzIGJhci4ifSx7bmFtZToiOjotbW96LXNlbGVjdGlvbiIsYnJvd3NlcnM6WyJGRjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcG9ydGlvbiBvZiBhIGRvY3VtZW50IHRoYXQgaGFzIGJlZW4gaGlnaGxpZ2h0ZWQgYnkgdGhlIHVzZXIuIn0se25hbWU6Ijo6LW1zLWJhY2tkcm9wIixicm93c2VyczpbIklFMTEiXSxkZXNjcmlwdGlvbjoiVXNlZCB0byBjcmVhdGUgYSBiYWNrZHJvcCB0aGF0IGhpZGVzIHRoZSB1bmRlcmx5aW5nIGRvY3VtZW50IGZvciBhbiBlbGVtZW50IGluIGEgdG9wIGxheWVyIChzdWNoIGFzIGFuIGVsZW1lbnQgdGhhdCBpcyBkaXNwbGF5ZWQgZnVsbHNjcmVlbikuIn0se25hbWU6Ijo6LW1zLWJyb3dzZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBicm93c2UgYnV0dG9uIG9mIGFuIGlucHV0IHR5cGU9ZmlsZSBjb250cm9sLiJ9LHtuYW1lOiI6Oi1tcy1jaGVjayIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBjaGVjayBvZiBhIGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbiBpbnB1dCBjb250cm9sLiJ9LHtuYW1lOiI6Oi1tcy1jbGVhciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBjbGVhciBidXR0b24gb2YgYSB0ZXh0IGlucHV0IGNvbnRyb2wifSx7bmFtZToiOjotbXMtZXhwYW5kIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGRyb3AtZG93biBidXR0b24gb2YgYSBzZWxlY3QgY29udHJvbC4ifSx7bmFtZToiOjotbXMtZmlsbCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBiYXIgcG9ydGlvbiBvZiBhIHByb2dyZXNzIGJhci4ifSx7bmFtZToiOjotbXMtZmlsbC1sb3dlciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBwb3J0aW9uIG9mIHRoZSBzbGlkZXIgdHJhY2sgZnJvbSBpdHMgc21hbGxlc3QgdmFsdWUgdXAgdG8gdGhlIHZhbHVlIGN1cnJlbnRseSBzZWxlY3RlZCBieSB0aGUgdGh1bWIuIEluIGEgbGVmdC10by1yaWdodCBsYXlvdXQsIHRoaXMgaXMgdGhlIHBvcnRpb24gb2YgdGhlIHNsaWRlciB0cmFjayB0byB0aGUgbGVmdCBvZiB0aGUgdGh1bWIuIn0se25hbWU6Ijo6LW1zLWZpbGwtdXBwZXIiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcG9ydGlvbiBvZiB0aGUgc2xpZGVyIHRyYWNrIGZyb20gdGhlIHZhbHVlIGN1cnJlbnRseSBzZWxlY3RlZCBieSB0aGUgdGh1bWIgdXAgdG8gdGhlIHNsaWRlcidzIGxhcmdlc3QgdmFsdWUuIEluIGEgbGVmdC10by1yaWdodCBsYXlvdXQsIHRoaXMgaXMgdGhlIHBvcnRpb24gb2YgdGhlIHNsaWRlciB0cmFjayB0byB0aGUgcmlnaHQgb2YgdGhlIHRodW1iLiJ9LHtuYW1lOiI6Oi1tcy1yZXZlYWwiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcGFzc3dvcmQgcmV2ZWFsIGJ1dHRvbiBvZiBhbiBpbnB1dCB0eXBlPXBhc3N3b3JkIGNvbnRyb2wuIn0se25hbWU6Ijo6LW1zLXRodW1iIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHBvcnRpb24gb2YgcmFuZ2UgaW5wdXQgY29udHJvbCAoYWxzbyBrbm93biBhcyBhIHNsaWRlciBjb250cm9sKSB0aGF0IHRoZSB1c2VyIGRyYWdzLiJ9LHtuYW1lOiI6Oi1tcy10aWNrcy1hZnRlciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSB0aWNrIG1hcmtzIG9mIGEgc2xpZGVyIHRoYXQgYmVnaW4ganVzdCBhZnRlciB0aGUgdGh1bWIgYW5kIGNvbnRpbnVlIHVwIHRvIHRoZSBzbGlkZXIncyBsYXJnZXN0IHZhbHVlLiBJbiBhIGxlZnQtdG8tcmlnaHQgbGF5b3V0LCB0aGVzZSBhcmUgdGhlIHRpY2tzIHRvIHRoZSByaWdodCBvZiB0aGUgdGh1bWIuIn0se25hbWU6Ijo6LW1zLXRpY2tzLWJlZm9yZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSB0aWNrIG1hcmtzIG9mIGEgc2xpZGVyIHRoYXQgcmVwcmVzZW50IGl0cyBzbWFsbGVzdCB2YWx1ZXMgdXAgdG8gdGhlIHZhbHVlIGN1cnJlbnRseSBzZWxlY3RlZCBieSB0aGUgdGh1bWIuIEluIGEgbGVmdC10by1yaWdodCBsYXlvdXQsIHRoZXNlIGFyZSB0aGUgdGlja3MgdG8gdGhlIGxlZnQgb2YgdGhlIHRodW1iLiJ9LHtuYW1lOiI6Oi1tcy10b29sdGlwIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHRvb2x0aXAgb2YgYSBzbGlkZXIgKGlucHV0IHR5cGU9cmFuZ2UpLiJ9LHtuYW1lOiI6Oi1tcy10cmFjayIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSB0cmFjayBvZiBhIHNsaWRlci4ifSx7bmFtZToiOjotbXMtdmFsdWUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgY29udGVudCBvZiBhIHRleHQgb3IgcGFzc3dvcmQgaW5wdXQgY29udHJvbCwgb3IgYSBzZWxlY3QgY29udHJvbC4ifSx7bmFtZToiOjpzZWxlY3Rpb24iLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnNlbGVjdGlvbiJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcG9ydGlvbiBvZiBhIGRvY3VtZW50IHRoYXQgaGFzIGJlZW4gaGlnaGxpZ2h0ZWQgYnkgdGhlIHVzZXIuIn0se25hbWU6Ijo6c2hhZG93Iixicm93c2VyczpbIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJNYXRjaGVzIHRoZSBzaGFkb3cgcm9vdCBpZiBhbiBlbGVtZW50IGhhcyBhIHNoYWRvdyB0cmVlLiJ9LHtuYW1lOiI6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiIsYnJvd3NlcnM6WyJFNzkiLCJTNSIsIkM2IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiJ9XX0se25hbWU6Ijo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIsYnJvd3NlcnM6WyJDIiwiUzQiXX0se25hbWU6Ijo6LXdlYmtpdC1rZXlnZW4tc2VsZWN0Iixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC1tZXRlci1iYXIiLGJyb3dzZXJzOlsiRTc5IiwiUzUuMSIsIkMxMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtbWV0ZXItYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LW1ldGVyLWV2ZW4tbGVzcy1nb29kLXZhbHVlIixicm93c2VyczpbIkU3OSIsIlM1LjEiLCJDMTIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LW1ldGVyLWV2ZW4tbGVzcy1nb29kLXZhbHVlIn1dfSx7bmFtZToiOjotd2Via2l0LW1ldGVyLW9wdGltdW0tdmFsdWUiLGJyb3dzZXJzOlsiRTc5IiwiUzUuMSIsIkMxMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtbWV0ZXItb3B0aW11bS12YWx1ZSJ9XX0se25hbWU6Ijo6LXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIixicm93c2VyczpbIkU3OSIsIlM1LjEiLCJDMTIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUifV19LHtuYW1lOiI6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24iLGJyb3dzZXJzOlsiUzUiLCJDNiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ifV19LHtuYW1lOiI6Oi13ZWJraXQtcHJvZ3Jlc3MtYmFyIixicm93c2VyczpbIkU3OSIsIlM3IiwiQzI1IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1wcm9ncmVzcy1iYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtcHJvZ3Jlc3MtaW5uZXItZWxlbWVudCIsYnJvd3NlcnM6WyJFNzkiLCJTNyIsIkMyMyIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtcHJvZ3Jlc3MtaW5uZXItZWxlbWVudCJ9XX0se25hbWU6Ijo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSIsYnJvd3NlcnM6WyJFNzkiLCJTNyIsIkMyNSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUifV19LHtuYW1lOiI6Oi13ZWJraXQtcmVzaXplciIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2Nyb2xsYmFyIixicm93c2VyczpbIkU3OSIsIlM0IiwiQzIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNjcm9sbGJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uIixicm93c2VyczpbIkU3OSIsIlM0IiwiQzIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNjcm9sbGJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIixicm93c2VyczpbIkU3OSIsIlM0IiwiQzIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNjcm9sbGJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIiLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhci10cmFjayIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIixicm93c2VyczpbIkU3OSIsIlM0IiwiQzIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNjcm9sbGJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiIsYnJvd3NlcnM6WyJFNzkiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzQiXX0se25hbWU6Ijo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24iLGJyb3dzZXJzOlsiRTc5IiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIn1dfSx7bmFtZToiOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24iLGJyb3dzZXJzOlsiQyIsIlM0Il19LHtuYW1lOiI6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC1zbGlkZXItdGh1bWIiLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXRleHRmaWVsZC1kZWNvcmF0aW9uLWNvbnRhaW5lciIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUiLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWFycm93Iixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdy1jbGlwcGVyIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1oZWFkaW5nIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS10ZXh0LWJsb2NrIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6dGFyZ2V0LXRleHQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkU4OSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnRhcmdldC10ZXh0In1dLGRlc2NyaXB0aW9uOiJUaGUgOjp0YXJnZXQtdGV4dCBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyB0aGUgdGV4dCB0aGF0IGhhcyBiZWVuIHNjcm9sbGVkIHRvIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzIHNjcm9sbC10by10ZXh0IGZyYWdtZW50cy4gSXQgYWxsb3dzIGF1dGhvcnMgdG8gY2hvb3NlIGhvdyB0byBoaWdobGlnaHQgdGhhdCBzZWN0aW9uIG9mIHRleHQuIn0se25hbWU6Ijo6LW1vei1yYW5nZS1wcm9ncmVzcyIsc3RhdHVzOiJub25zdGFuZGFyZCIsYnJvd3NlcnM6WyJGRjIyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LW1vei1yYW5nZS1wcm9ncmVzcyJ9XSxkZXNjcmlwdGlvbjonVGhlIDo6LW1vei1yYW5nZS1wcm9ncmVzcyBDU1MgcHNldWRvLWVsZW1lbnQgaXMgYSBNb3ppbGxhIGV4dGVuc2lvbiB0aGF0IHJlcHJlc2VudHMgdGhlIGxvd2VyIHBvcnRpb24gb2YgdGhlIHRyYWNrIChpLmUuLCBncm9vdmUpIGluIHdoaWNoIHRoZSBpbmRpY2F0b3Igc2xpZGVzIGluIGFuIDxpbnB1dD4gb2YgdHlwZT0icmFuZ2UiLiBUaGlzIHBvcnRpb24gY29ycmVzcG9uZHMgdG8gdmFsdWVzIGxvd2VyIHRoYW4gdGhlIHZhbHVlIGN1cnJlbnRseSBzZWxlY3RlZCBieSB0aGUgdGh1bWIgKGkuZS4sIHZpcnR1YWwga25vYikuJ30se25hbWU6Ijo6LW1vei1yYW5nZS10aHVtYiIsc3RhdHVzOiJub25zdGFuZGFyZCIsYnJvd3NlcnM6WyJGRjIxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LW1vei1yYW5nZS10aHVtYiJ9XSxkZXNjcmlwdGlvbjpgVGhlIDo6LW1vei1yYW5nZS10aHVtYiBDU1MgcHNldWRvLWVsZW1lbnQgaXMgYSBNb3ppbGxhIGV4dGVuc2lvbiB0aGF0IHJlcHJlc2VudHMgdGhlIHRodW1iIChpLmUuLCB2aXJ0dWFsIGtub2IpIG9mIGFuIDxpbnB1dD4gb2YgdHlwZT0icmFuZ2UiLiBUaGUgdXNlciBjYW4gbW92ZSB0aGUgdGh1bWIgYWxvbmcgdGhlIGlucHV0J3MgdHJhY2sgdG8gYWx0ZXIgaXRzIG51bWVyaWNhbCB2YWx1ZS5gfSx7bmFtZToiOjotbW96LXJhbmdlLXRyYWNrIixzdGF0dXM6Im5vbnN0YW5kYXJkIixicm93c2VyczpbIkZGMjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotbW96LXJhbmdlLXRyYWNrIn1dLGRlc2NyaXB0aW9uOidUaGUgOjotbW96LXJhbmdlLXRyYWNrIENTUyBwc2V1ZG8tZWxlbWVudCBpcyBhIE1vemlsbGEgZXh0ZW5zaW9uIHRoYXQgcmVwcmVzZW50cyB0aGUgdHJhY2sgKGkuZS4sIGdyb292ZSkgaW4gd2hpY2ggdGhlIGluZGljYXRvciBzbGlkZXMgaW4gYW4gPGlucHV0PiBvZiB0eXBlPSJyYW5nZSIuJ30se25hbWU6Ijo6LXdlYmtpdC1wcm9ncmVzcy1pbm5lci12YWx1ZSIsc3RhdHVzOiJub25zdGFuZGFyZCIsZGVzY3JpcHRpb246YFRoZSA6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgdGhlIGZpbGxlZC1pbiBwb3J0aW9uIG9mIHRoZSBiYXIgb2YgYSA8cHJvZ3Jlc3M+IGVsZW1lbnQuIEl0IGlzIGEgY2hpbGQgb2YgdGhlIDo6LXdlYmtpdC1wcm9ncmVzcy1iYXIgcHNldWRvLWVsZW1lbnQuCgpJbiBvcmRlciB0byBsZXQgOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHRha2UgZWZmZWN0LCAtd2Via2l0LWFwcGVhcmFuY2UgbmVlZHMgdG8gYmUgc2V0IHRvIG5vbmUgb24gdGhlIDxwcm9ncmVzcz4gZWxlbWVudC5gfSx7bmFtZToiOjpncmFtbWFyLWVycm9yIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6Z3JhbW1hci1lcnJvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6Z3JhbW1hci1lcnJvciBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyBhIHRleHQgc2VnbWVudCB3aGljaCB0aGUgdXNlciBhZ2VudCBoYXMgZmxhZ2dlZCBhcyBncmFtbWF0aWNhbGx5IGluY29ycmVjdC4ifSx7bmFtZToiOjptYXJrZXIiLGJyb3dzZXJzOlsiRTg2IiwiRkY2OCIsIlMxMS4xIiwiQzg2IiwiTzcyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6bWFya2VyIn1dLGRlc2NyaXB0aW9uOiJUaGUgOjptYXJrZXIgQ1NTIHBzZXVkby1lbGVtZW50IHNlbGVjdHMgdGhlIG1hcmtlciBib3ggb2YgYSBsaXN0IGl0ZW0sIHdoaWNoIHR5cGljYWxseSBjb250YWlucyBhIGJ1bGxldCBvciBudW1iZXIuIEl0IHdvcmtzIG9uIGFueSBlbGVtZW50IG9yIHBzZXVkby1lbGVtZW50IHNldCB0byBkaXNwbGF5OiBsaXN0LWl0ZW0sIHN1Y2ggYXMgdGhlIDxsaT4gYW5kIDxzdW1tYXJ5PiBlbGVtZW50cy4ifSx7bmFtZToiOjpwYXJ0IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjcyIiwiUzEzLjEiLCJDNzMiLCJPNjAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpwYXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgOjpwYXJ0IENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGFueSBlbGVtZW50IHdpdGhpbiBhIHNoYWRvdyB0cmVlIHRoYXQgaGFzIGEgbWF0Y2hpbmcgcGFydCBhdHRyaWJ1dGUuIn0se25hbWU6Ijo6cGxhY2Vob2xkZXIiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MSIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6cGxhY2Vob2xkZXIifV0sZGVzY3JpcHRpb246IlRoZSA6OnBsYWNlaG9sZGVyIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIHRoZSBwbGFjZWhvbGRlciB0ZXh0IG9mIGEgZm9ybSBlbGVtZW50LiJ9LHtuYW1lOiI6OnNsb3R0ZWQiLGJyb3dzZXJzOlsiRTc5IiwiRkY2MyIsIlMxMCIsIkM1MCIsIk8zNyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnNsb3R0ZWQifV0sZGVzY3JpcHRpb246IlRoZSA6c2xvdHRlZCgpIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGFueSBlbGVtZW50IHRoYXQgaGFzIGJlZW4gcGxhY2VkIGludG8gYSBzbG90IGluc2lkZSBhbiBIVE1MIHRlbXBsYXRlLiJ9LHtuYW1lOiI6OnNwZWxsaW5nLWVycm9yIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6c3BlbGxpbmctZXJyb3IifV0sZGVzY3JpcHRpb246IlRoZSA6OnNwZWxsaW5nLWVycm9yIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGEgdGV4dCBzZWdtZW50IHdoaWNoIHRoZSB1c2VyIGFnZW50IGhhcyBmbGFnZ2VkIGFzIGluY29ycmVjdGx5IHNwZWxsZWQuIn1dfSxoYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dGhpcy5fcHJvcGVydGllcz1bXSx0aGlzLl9hdERpcmVjdGl2ZXM9W10sdGhpcy5fcHNldWRvQ2xhc3Nlcz1bXSx0aGlzLl9wc2V1ZG9FbGVtZW50cz1bXSx0aGlzLmFkZERhdGEoZSl9cmV0dXJuIHQucHJvdG90eXBlLnByb3ZpZGVQcm9wZXJ0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnRpZXN9LHQucHJvdG90eXBlLnByb3ZpZGVBdERpcmVjdGl2ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXREaXJlY3RpdmVzfSx0LnByb3RvdHlwZS5wcm92aWRlUHNldWRvQ2xhc3Nlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wc2V1ZG9DbGFzc2VzfSx0LnByb3RvdHlwZS5wcm92aWRlUHNldWRvRWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHNldWRvRWxlbWVudHN9LHQucHJvdG90eXBlLmFkZERhdGE9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlLnByb3BlcnRpZXMpKWZvcih2YXIgbj0wLHI9ZS5wcm9wZXJ0aWVzO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dO2ZmKGkpJiZ0aGlzLl9wcm9wZXJ0aWVzLnB1c2goaSl9aWYoQXJyYXkuaXNBcnJheShlLmF0RGlyZWN0aXZlcykpZm9yKHZhciBzPTAsYT1lLmF0RGlyZWN0aXZlcztzPGEubGVuZ3RoO3MrKyl7dmFyIGk9YVtzXTttZihpKSYmdGhpcy5fYXREaXJlY3RpdmVzLnB1c2goaSl9aWYoQXJyYXkuaXNBcnJheShlLnBzZXVkb0NsYXNzZXMpKWZvcih2YXIgbz0wLGw9ZS5wc2V1ZG9DbGFzc2VzO288bC5sZW5ndGg7bysrKXt2YXIgaT1sW29dO2dmKGkpJiZ0aGlzLl9wc2V1ZG9DbGFzc2VzLnB1c2goaSl9aWYoQXJyYXkuaXNBcnJheShlLnBzZXVkb0VsZW1lbnRzKSlmb3IodmFyIGM9MCxoPWUucHNldWRvRWxlbWVudHM7YzxoLmxlbmd0aDtjKyspe3ZhciBpPWhbY107YmYoaSkmJnRoaXMuX3BzZXVkb0VsZW1lbnRzLnB1c2goaSl9fSx0fSgpO2Z1bmN0aW9uIGZmKHQpe3JldHVybiB0eXBlb2YgdC5uYW1lPT0ic3RyaW5nIn1mdW5jdGlvbiBtZih0KXtyZXR1cm4gdHlwZW9mIHQubmFtZT09InN0cmluZyJ9ZnVuY3Rpb24gZ2YodCl7cmV0dXJuIHR5cGVvZiB0Lm5hbWU9PSJzdHJpbmcifWZ1bmN0aW9uIGJmKHQpe3JldHVybiB0eXBlb2YgdC5uYW1lPT0ic3RyaW5nIn12YXIgbnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3RoaXMuZGF0YVByb3ZpZGVycz1bXSx0aGlzLl9wcm9wZXJ0eVNldD17fSx0aGlzLl9hdERpcmVjdGl2ZVNldD17fSx0aGlzLl9wc2V1ZG9DbGFzc1NldD17fSx0aGlzLl9wc2V1ZG9FbGVtZW50U2V0PXt9LHRoaXMuX3Byb3BlcnRpZXM9W10sdGhpcy5fYXREaXJlY3RpdmVzPVtdLHRoaXMuX3BzZXVkb0NsYXNzZXM9W10sdGhpcy5fcHNldWRvRWxlbWVudHM9W10sdGhpcy5zZXREYXRhUHJvdmlkZXJzKGU/LnVzZURlZmF1bHREYXRhUHJvdmlkZXIhPT0hMSxlPy5jdXN0b21EYXRhUHJvdmlkZXJzfHxbXSl9cmV0dXJuIHQucHJvdG90eXBlLnNldERhdGFQcm92aWRlcnM9ZnVuY3Rpb24oZSxuKXt2YXIgcjt0aGlzLmRhdGFQcm92aWRlcnM9W10sZSYmdGhpcy5kYXRhUHJvdmlkZXJzLnB1c2gobmV3IGhjKHBmKSksKHI9dGhpcy5kYXRhUHJvdmlkZXJzKS5wdXNoLmFwcGx5KHIsbiksdGhpcy5jb2xsZWN0RGF0YSgpfSx0LnByb3RvdHlwZS5jb2xsZWN0RGF0YT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5fcHJvcGVydHlTZXQ9e30sdGhpcy5fYXREaXJlY3RpdmVTZXQ9e30sdGhpcy5fcHNldWRvQ2xhc3NTZXQ9e30sdGhpcy5fcHNldWRvRWxlbWVudFNldD17fSx0aGlzLmRhdGFQcm92aWRlcnMuZm9yRWFjaChmdW5jdGlvbihuKXtuLnByb3ZpZGVQcm9wZXJ0aWVzKCkuZm9yRWFjaChmdW5jdGlvbihyKXtlLl9wcm9wZXJ0eVNldFtyLm5hbWVdfHwoZS5fcHJvcGVydHlTZXRbci5uYW1lXT1yKX0pLG4ucHJvdmlkZUF0RGlyZWN0aXZlcygpLmZvckVhY2goZnVuY3Rpb24ocil7ZS5fYXREaXJlY3RpdmVTZXRbci5uYW1lXXx8KGUuX2F0RGlyZWN0aXZlU2V0W3IubmFtZV09cil9KSxuLnByb3ZpZGVQc2V1ZG9DbGFzc2VzKCkuZm9yRWFjaChmdW5jdGlvbihyKXtlLl9wc2V1ZG9DbGFzc1NldFtyLm5hbWVdfHwoZS5fcHNldWRvQ2xhc3NTZXRbci5uYW1lXT1yKX0pLG4ucHJvdmlkZVBzZXVkb0VsZW1lbnRzKCkuZm9yRWFjaChmdW5jdGlvbihyKXtlLl9wc2V1ZG9FbGVtZW50U2V0W3IubmFtZV18fChlLl9wc2V1ZG9FbGVtZW50U2V0W3IubmFtZV09cil9KX0pLHRoaXMuX3Byb3BlcnRpZXM9bXIodGhpcy5fcHJvcGVydHlTZXQpLHRoaXMuX2F0RGlyZWN0aXZlcz1tcih0aGlzLl9hdERpcmVjdGl2ZVNldCksdGhpcy5fcHNldWRvQ2xhc3Nlcz1tcih0aGlzLl9wc2V1ZG9DbGFzc1NldCksdGhpcy5fcHNldWRvRWxlbWVudHM9bXIodGhpcy5fcHNldWRvRWxlbWVudFNldCl9LHQucHJvdG90eXBlLmdldFByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wcm9wZXJ0eVNldFtlXX0sdC5wcm90b3R5cGUuZ2V0QXREaXJlY3RpdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F0RGlyZWN0aXZlU2V0W2VdfSx0LnByb3RvdHlwZS5nZXRQc2V1ZG9DbGFzcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcHNldWRvQ2xhc3NTZXRbZV19LHQucHJvdG90eXBlLmdldFBzZXVkb0VsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BzZXVkb0VsZW1lbnRTZXRbZV19LHQucHJvdG90eXBlLmdldFByb3BlcnRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcGVydGllc30sdC5wcm90b3R5cGUuZ2V0QXREaXJlY3RpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F0RGlyZWN0aXZlc30sdC5wcm90b3R5cGUuZ2V0UHNldWRvQ2xhc3Nlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wc2V1ZG9DbGFzc2VzfSx0LnByb3RvdHlwZS5nZXRQc2V1ZG9FbGVtZW50cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wc2V1ZG9FbGVtZW50c30sdC5wcm90b3R5cGUuaXNLbm93blByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKClpbiB0aGlzLl9wcm9wZXJ0eVNldH0sdC5wcm90b3R5cGUuaXNTdGFuZGFyZFByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmlzS25vd25Qcm9wZXJ0eShlKSYmKCF0aGlzLl9wcm9wZXJ0eVNldFtlLnRvTG93ZXJDYXNlKCldLnN0YXR1c3x8dGhpcy5fcHJvcGVydHlTZXRbZS50b0xvd2VyQ2FzZSgpXS5zdGF0dXM9PT0ic3RhbmRhcmQiKX0sdH0oKTtmdW5jdGlvbiB2Zih0LGUsbil7ZnVuY3Rpb24gcihzKXtmb3IodmFyIGE9aShzKSxvPXZvaWQgMCxsPWEubGVuZ3RoLTE7bD49MDtsLS0pbz1kci5jcmVhdGUoaWUuY3JlYXRlKHQucG9zaXRpb25BdChhW2xdWzBdKSx0LnBvc2l0aW9uQXQoYVtsXVsxXSkpLG8pO3JldHVybiBvfHwobz1kci5jcmVhdGUoaWUuY3JlYXRlKHMscykpKSxvfXJldHVybiBlLm1hcChyKTtmdW5jdGlvbiBpKHMpe3ZhciBhPXQub2Zmc2V0QXQocyksbz1uLmZpbmRDaGlsZEF0T2Zmc2V0KGEsITApO2lmKCFvKXJldHVybltdO2Zvcih2YXIgbD1bXTtvOyl7aWYoby5wYXJlbnQmJm8ub2Zmc2V0PT09by5wYXJlbnQub2Zmc2V0JiZvLmVuZD09PW8ucGFyZW50LmVuZCl7bz1vLnBhcmVudDtjb250aW51ZX1vLnR5cGU9PT12LkRlY2xhcmF0aW9ucyYmYT5vLm9mZnNldCYmYTxvLmVuZCYmbC5wdXNoKFtvLm9mZnNldCsxLG8uZW5kLTFdKSxsLnB1c2goW28ub2Zmc2V0LG8uZW5kXSksbz1vLnBhcmVudH1yZXR1cm4gbH19dmFyIHlmPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24ocixpKXtyLl9fcHJvdG9fXz1pfXx8ZnVuY3Rpb24ocixpKXtmb3IodmFyIHMgaW4gaSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxzKSYmKHJbc109aVtzXSl9LHQoZSxuKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYodHlwZW9mIG4hPSJmdW5jdGlvbiImJm4hPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7dChlLG4pO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9ZS5wcm90b3R5cGU9bj09PW51bGw/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0oKSx3Zj1mdW5jdGlvbih0LGUsbixyKXtmdW5jdGlvbiBpKHMpe3JldHVybiBzIGluc3RhbmNlb2Ygbj9zOm5ldyBuKGZ1bmN0aW9uKGEpe2Eocyl9KX1yZXR1cm4gbmV3KG58fChuPVByb21pc2UpKShmdW5jdGlvbihzLGEpe2Z1bmN0aW9uIG8oaCl7dHJ5e2Moci5uZXh0KGgpKX1jYXRjaCh1KXthKHUpfX1mdW5jdGlvbiBsKGgpe3RyeXtjKHIudGhyb3coaCkpfWNhdGNoKHUpe2EodSl9fWZ1bmN0aW9uIGMoaCl7aC5kb25lP3MoaC52YWx1ZSk6aShoLnZhbHVlKS50aGVuKG8sbCl9Yygocj1yLmFwcGx5KHQsW10pKS5uZXh0KCkpfSl9LHhmPWZ1bmN0aW9uKHQsZSl7dmFyIG49e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHNbMF0mMSl0aHJvdyBzWzFdO3JldHVybiBzWzFdfSx0cnlzOltdLG9wczpbXX0scixpLHMsYTtyZXR1cm4gYT17bmV4dDpvKDApLHRocm93Om8oMSkscmV0dXJuOm8oMil9LHR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gbyhjKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIGwoW2MsaF0pfX1mdW5jdGlvbiBsKGMpe2lmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7bjspdHJ5e2lmKHI9MSxpJiYocz1jWzBdJjI/aS5yZXR1cm46Y1swXT9pLnRocm93fHwoKHM9aS5yZXR1cm4pJiZzLmNhbGwoaSksMCk6aS5uZXh0KSYmIShzPXMuY2FsbChpLGNbMV0pKS5kb25lKXJldHVybiBzO3N3aXRjaChpPTAscyYmKGM9W2NbMF0mMixzLnZhbHVlXSksY1swXSl7Y2FzZSAwOmNhc2UgMTpzPWM7YnJlYWs7Y2FzZSA0OnJldHVybiBuLmxhYmVsKysse3ZhbHVlOmNbMV0sZG9uZTohMX07Y2FzZSA1Om4ubGFiZWwrKyxpPWNbMV0sYz1bMF07Y29udGludWU7Y2FzZSA3OmM9bi5vcHMucG9wKCksbi50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYocz1uLnRyeXMsIShzPXMubGVuZ3RoPjAmJnNbcy5sZW5ndGgtMV0pJiYoY1swXT09PTZ8fGNbMF09PT0yKSl7bj0wO2NvbnRpbnVlfWlmKGNbMF09PT0zJiYoIXN8fGNbMV0+c1swXSYmY1sxXTxzWzNdKSl7bi5sYWJlbD1jWzFdO2JyZWFrfWlmKGNbMF09PT02JiZuLmxhYmVsPHNbMV0pe24ubGFiZWw9c1sxXSxzPWM7YnJlYWt9aWYocyYmbi5sYWJlbDxzWzJdKXtuLmxhYmVsPXNbMl0sbi5vcHMucHVzaChjKTticmVha31zWzJdJiZuLm9wcy5wb3AoKSxuLnRyeXMucG9wKCk7Y29udGludWV9Yz1lLmNhbGwodCxuKX1jYXRjaChoKXtjPVs2LGhdLGk9MH1maW5hbGx5e3I9cz0wfWlmKGNbMF0mNSl0aHJvdyBjWzFdO3JldHVybnt2YWx1ZTpjWzBdP2NbMV06dm9pZCAwLGRvbmU6ITB9fX0sU2Y9ZnVuY3Rpb24odCl7eWYoZSx0KTtmdW5jdGlvbiBlKG4pe3JldHVybiB0LmNhbGwodGhpcyxuLCEwKXx8dGhpc31yZXR1cm4gZS5wcm90b3R5cGUuaXNSYXdTdHJpbmdEb2N1bWVudExpbmtOb2RlPWZ1bmN0aW9uKG4pe3JldHVybiB0LnByb3RvdHlwZS5pc1Jhd1N0cmluZ0RvY3VtZW50TGlua05vZGUuY2FsbCh0aGlzLG4pfHxuLnR5cGU9PT12LlVzZXx8bi50eXBlPT09di5Gb3J3YXJkfSxlLnByb3RvdHlwZS5yZXNvbHZlUmVsYXRpdmVSZWZlcmVuY2U9ZnVuY3Rpb24obixyLGkscyl7cmV0dXJuIHdmKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe2Z1bmN0aW9uIGEodSl7aWYodS5wYXRoIT09IiImJiEodS5wYXRoLmVuZHNXaXRoKCIuc2NzcyIpfHx1LnBhdGguZW5kc1dpdGgoIi5jc3MiKSkpe2lmKHUucGF0aC5lbmRzV2l0aCgiLyIpKXJldHVyblt1LndpdGgoe3BhdGg6dS5wYXRoKyJpbmRleC5zY3NzIn0pLnRvU3RyaW5nKCksdS53aXRoKHtwYXRoOnUucGF0aCsiX2luZGV4LnNjc3MifSkudG9TdHJpbmcoKV07dmFyIGY9dS5wYXRoLnNwbGl0KCIvIiksbT1mW2YubGVuZ3RoLTFdLGc9dS5wYXRoLnNsaWNlKDAsLW0ubGVuZ3RoKTtpZihtLnN0YXJ0c1dpdGgoIl8iKSlyZXR1cm4gdS5wYXRoLmVuZHNXaXRoKCIuc2NzcyIpP3ZvaWQgMDpbdS53aXRoKHtwYXRoOnUucGF0aCsiLnNjc3MifSkudG9TdHJpbmcoKV07dmFyIGI9bSsiLnNjc3MiLHk9ZnVuY3Rpb24oUCl7cmV0dXJuIHUud2l0aCh7cGF0aDpnK1B9KS50b1N0cmluZygpfSxDPXkoYiksaz15KCJfIitiKSx3PXkoYi5zbGljZSgwLC01KSsiL2luZGV4LnNjc3MiKSxGPXkoYi5zbGljZSgwLC01KSsiL19pbmRleC5zY3NzIiksXz15KGIuc2xpY2UoMCwtNSkrIi5jc3MiKTtyZXR1cm5bQyxrLHcsRixfXX19dmFyIG8sbCxjLGg7cmV0dXJuIHhmKHRoaXMsZnVuY3Rpb24odSl7c3dpdGNoKHUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gZ2Uobiwic2FzczoiKT9bMix2b2lkIDBdOls0LHQucHJvdG90eXBlLnJlc29sdmVSZWxhdGl2ZVJlZmVyZW5jZS5jYWxsKHRoaXMsbixyLGkscyldO2Nhc2UgMTppZihvPXUuc2VudCgpLCEodGhpcy5maWxlU3lzdGVtUHJvdmlkZXImJm8mJnMpKXJldHVyblszLDhdO2w9emkucGFyc2UobyksdS5sYWJlbD0yO2Nhc2UgMjppZih1LnRyeXMucHVzaChbMiw3LCw4XSksYz1hKGwpLCFjKXJldHVyblszLDZdO2g9MCx1LmxhYmVsPTM7Y2FzZSAzOnJldHVybiBoPGMubGVuZ3RoP1s0LHRoaXMuZmlsZUV4aXN0cyhjW2hdKV06WzMsNl07Y2FzZSA0OmlmKHUuc2VudCgpKXJldHVyblsyLGNbaF1dO3UubGFiZWw9NTtjYXNlIDU6cmV0dXJuIGgrKyxbMywzXTtjYXNlIDY6cmV0dXJuWzMsOF07Y2FzZSA3OnJldHVybiB1LnNlbnQoKSxbMyw4XTtjYXNlIDg6cmV0dXJuWzIsb119fSl9KX0sZX0ocWkpO2Z1bmN0aW9uIENmKHQpe3JldHVybiBuZXcgaGModCl9ZnVuY3Rpb24gcnModCxlLG4scixpLHMsYSl7cmV0dXJue2NvbmZpZ3VyZTpmdW5jdGlvbihvKXtzLmNvbmZpZ3VyZShvKSxlLmNvbmZpZ3VyZShvPy5jb21wbGV0aW9uKSxuLmNvbmZpZ3VyZShvPy5ob3Zlcil9LHNldERhdGFQcm92aWRlcnM6YS5zZXREYXRhUHJvdmlkZXJzLmJpbmQoYSksZG9WYWxpZGF0aW9uOnMuZG9WYWxpZGF0aW9uLmJpbmQocykscGFyc2VTdHlsZXNoZWV0OnQucGFyc2VTdHlsZXNoZWV0LmJpbmQodCksZG9Db21wbGV0ZTplLmRvQ29tcGxldGUuYmluZChlKSxkb0NvbXBsZXRlMjplLmRvQ29tcGxldGUyLmJpbmQoZSksc2V0Q29tcGxldGlvblBhcnRpY2lwYW50czplLnNldENvbXBsZXRpb25QYXJ0aWNpcGFudHMuYmluZChlKSxkb0hvdmVyOm4uZG9Ib3Zlci5iaW5kKG4pLGZvcm1hdDpsZixmaW5kRGVmaW5pdGlvbjpyLmZpbmREZWZpbml0aW9uLmJpbmQociksZmluZFJlZmVyZW5jZXM6ci5maW5kUmVmZXJlbmNlcy5iaW5kKHIpLGZpbmREb2N1bWVudEhpZ2hsaWdodHM6ci5maW5kRG9jdW1lbnRIaWdobGlnaHRzLmJpbmQociksZmluZERvY3VtZW50TGlua3M6ci5maW5kRG9jdW1lbnRMaW5rcy5iaW5kKHIpLGZpbmREb2N1bWVudExpbmtzMjpyLmZpbmREb2N1bWVudExpbmtzMi5iaW5kKHIpLGZpbmREb2N1bWVudFN5bWJvbHM6ci5maW5kRG9jdW1lbnRTeW1ib2xzLmJpbmQociksZG9Db2RlQWN0aW9uczppLmRvQ29kZUFjdGlvbnMuYmluZChpKSxkb0NvZGVBY3Rpb25zMjppLmRvQ29kZUFjdGlvbnMyLmJpbmQoaSksZmluZERvY3VtZW50Q29sb3JzOnIuZmluZERvY3VtZW50Q29sb3JzLmJpbmQociksZ2V0Q29sb3JQcmVzZW50YXRpb25zOnIuZ2V0Q29sb3JQcmVzZW50YXRpb25zLmJpbmQociksZG9SZW5hbWU6ci5kb1JlbmFtZS5iaW5kKHIpLGdldEZvbGRpbmdSYW5nZXM6cmYsZ2V0U2VsZWN0aW9uUmFuZ2VzOnZmfX12YXIgaXM9e307ZnVuY3Rpb24ga2YodCl7dD09PXZvaWQgMCYmKHQ9aXMpO3ZhciBlPW5ldyBucyh0KTtyZXR1cm4gcnMobmV3IE5pLG5ldyBXaShudWxsLHQsZSksbmV3IEJpKHQmJnQuY2xpZW50Q2FwYWJpbGl0aWVzLGUpLG5ldyBxaSh0JiZ0LmZpbGVTeXN0ZW1Qcm92aWRlciwhMSksbmV3IGppKGUpLG5ldyBHaShlKSxlKX1mdW5jdGlvbiBfZih0KXt0PT09dm9pZCAwJiYodD1pcyk7dmFyIGU9bmV3IG5zKHQpO3JldHVybiBycyhuZXcgJHAsbmV3IEdwKHQsZSksbmV3IEJpKHQmJnQuY2xpZW50Q2FwYWJpbGl0aWVzLGUpLG5ldyBTZih0JiZ0LmZpbGVTeXN0ZW1Qcm92aWRlciksbmV3IGppKGUpLG5ldyBHaShlKSxlKX1mdW5jdGlvbiBFZih0KXt0PT09dm9pZCAwJiYodD1pcyk7dmFyIGU9bmV3IG5zKHQpO3JldHVybiBycyhuZXcgZWYsbmV3IG5mKHQsZSksbmV3IEJpKHQmJnQuY2xpZW50Q2FwYWJpbGl0aWVzLGUpLG5ldyBxaSh0JiZ0LmZpbGVTeXN0ZW1Qcm92aWRlciwhMCksbmV3IGppKGUpLG5ldyBHaShlKSxlKX12YXIgUmY9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9jdHg9dCx0aGlzLl9sYW5ndWFnZVNldHRpbmdzPWUub3B0aW9ucyx0aGlzLl9sYW5ndWFnZUlkPWUubGFuZ3VhZ2VJZDtjb25zdCBuPWUub3B0aW9ucy5kYXRhLHI9bj8udXNlRGVmYXVsdERhdGFQcm92aWRlcixpPVtdO2lmKG4/LmRhdGFQcm92aWRlcnMpZm9yKGNvbnN0IGEgaW4gbi5kYXRhUHJvdmlkZXJzKWkucHVzaChDZihuLmRhdGFQcm92aWRlcnNbYV0pKTtjb25zdCBzPXtjdXN0b21EYXRhUHJvdmlkZXJzOmksdXNlRGVmYXVsdERhdGFQcm92aWRlcjpyfTtzd2l0Y2godGhpcy5fbGFuZ3VhZ2VJZCl7Y2FzZSJjc3MiOnRoaXMuX2xhbmd1YWdlU2VydmljZT1rZihzKTticmVhaztjYXNlImxlc3MiOnRoaXMuX2xhbmd1YWdlU2VydmljZT1FZihzKTticmVhaztjYXNlInNjc3MiOnRoaXMuX2xhbmd1YWdlU2VydmljZT1fZihzKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsYW5ndWFnZSBpZDogIit0aGlzLl9sYW5ndWFnZUlkKX10aGlzLl9sYW5ndWFnZVNlcnZpY2UuY29uZmlndXJlKHRoaXMuX2xhbmd1YWdlU2V0dGluZ3MpfWFzeW5jIGRvVmFsaWRhdGlvbih0KXtjb25zdCBlPXRoaXMuX2dldFRleHREb2N1bWVudCh0KTtpZihlKXtjb25zdCBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQoZSkscj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9WYWxpZGF0aW9uKGUsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKX1hc3luYyBkb0NvbXBsZXRlKHQsZSl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQodCk7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvQ29tcGxldGUobixlLHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZG9Ib3Zlcih0LGUpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KHQpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb0hvdmVyKG4sZSxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmREZWZpbml0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQodCk7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREZWZpbml0aW9uKG4sZSxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmRSZWZlcmVuY2VzKHQsZSl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQodCk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmRSZWZlcmVuY2VzKG4sZSxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmREb2N1bWVudEhpZ2hsaWdodHModCxlKXtjb25zdCBuPXRoaXMuX2dldFRleHREb2N1bWVudCh0KTtpZighbilyZXR1cm5bXTtjb25zdCByPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQobiksaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhuLGUscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kRG9jdW1lbnRTeW1ib2xzKHQpe2NvbnN0IGU9dGhpcy5fZ2V0VGV4dERvY3VtZW50KHQpO2lmKCFlKXJldHVybltdO2NvbnN0IG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChlKSxyPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRG9jdW1lbnRTeW1ib2xzKGUsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1hc3luYyBkb0NvZGVBY3Rpb25zKHQsZSxuKXtjb25zdCByPXRoaXMuX2dldFRleHREb2N1bWVudCh0KTtpZighcilyZXR1cm5bXTtjb25zdCBpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQocikscz10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9Db2RlQWN0aW9ucyhyLGUsbixpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHMpfWFzeW5jIGZpbmREb2N1bWVudENvbG9ycyh0KXtjb25zdCBlPXRoaXMuX2dldFRleHREb2N1bWVudCh0KTtpZighZSlyZXR1cm5bXTtjb25zdCBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQoZSkscj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50Q29sb3JzKGUsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1hc3luYyBnZXRDb2xvclByZXNlbnRhdGlvbnModCxlLG4pe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dERvY3VtZW50KHQpO2lmKCFyKXJldHVybltdO2NvbnN0IGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChyKSxzPXRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRDb2xvclByZXNlbnRhdGlvbnMocixpLGUsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShzKX1hc3luYyBnZXRGb2xkaW5nUmFuZ2VzKHQsZSl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQodCk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0Rm9sZGluZ1JhbmdlcyhuLGUpO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZ2V0U2VsZWN0aW9uUmFuZ2VzKHQsZSl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQodCk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldFNlbGVjdGlvblJhbmdlcyhuLGUscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBkb1JlbmFtZSh0LGUsbil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQodCk7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3QgaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KHIpLHM9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvUmVuYW1lKHIsZSxuLGkpO3JldHVybiBQcm9taXNlLnJlc29sdmUocyl9YXN5bmMgZm9ybWF0KHQsZSxuKXtjb25zdCByPXRoaXMuX2dldFRleHREb2N1bWVudCh0KTtpZighcilyZXR1cm5bXTtjb25zdCBpPXsuLi50aGlzLl9sYW5ndWFnZVNldHRpbmdzLmZvcm1hdCwuLi5ufSxzPXRoaXMuX2xhbmd1YWdlU2VydmljZS5mb3JtYXQocixlLGkpO3JldHVybiBQcm9taXNlLnJlc29sdmUocyl9X2dldFRleHREb2N1bWVudCh0KXtjb25zdCBlPXRoaXMuX2N0eC5nZXRNaXJyb3JNb2RlbHMoKTtmb3IoY29uc3QgbiBvZiBlKWlmKG4udXJpLnRvU3RyaW5nKCk9PT10KXJldHVybiBEaS5jcmVhdGUodCx0aGlzLl9sYW5ndWFnZUlkLG4udmVyc2lvbixuLmdldFZhbHVlKCkpO3JldHVybiBudWxsfX07c2VsZi5vbm1lc3NhZ2U9KCk9PntzbygodCxlKT0+bmV3IFJmKHQsZSkpfX0pKCk7Cg==",c=Z=>Uint8Array.from(atob(Z),l=>l.charCodeAt(0)),G=typeof window<"u"&&window.Blob&&new Blob([c(W)],{type:"text/javascript;charset=utf-8"});function d(Z){let l;try{if(l=G&&(window.URL||window.webkitURL).createObjectURL(G),!l)throw"";const b=new Worker(l,{name:Z?.name});return b.addEventListener("error",()=>{(window.URL||window.webkitURL).revokeObjectURL(l)}),b}catch{return new Worker("data:text/javascript;base64,"+W,{name:Z?.name})}finally{l&&(window.URL||window.webkitURL).revokeObjectURL(l)}}export{d as default};
|