diff --git a/addons/cetmix_tower_server/models/cx_tower_file_template.py b/addons/cetmix_tower_server/models/cx_tower_file_template.py new file mode 100644 index 0000000..0b7edb8 --- /dev/null +++ b/addons/cetmix_tower_server/models/cx_tower_file_template.py @@ -0,0 +1 @@ +IyBDb3B5cmlnaHQgKEMpIDIwMjQgQ2V0bWl4IE/DnAojIExpY2Vuc2UgQUdQTC0zLjAgb3IgbGF0ZXIgKGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsKS4KCmZyb20gb2RvbyBpbXBvcnQgXywgYXBpLCBmaWVsZHMsIG1vZGVscwpmcm9tIG9kb28uZXhjZXB0aW9ucyBpbXBvcnQgVmFsaWRhdGlvbkVycm9yCgpmcm9tIC5jeF90b3dlcl9maWxlIGltcG9ydCBURU1QTEFURV9GSUxFX0ZJRUxEX01BUFBJTkcKCgpjbGFzcyBDeFRvd2VyRmlsZVRlbXBsYXRlKG1vZGVscy5Nb2RlbCk6CiAgICAiIiJGaWxlIHRlbXBsYXRlIHRvIG1hbmFnZSBtdWx0aXBsZSBmaWxlcyBhdCBvbmNlIiIiCgogICAgX25hbWUgPSAiY3gudG93ZXIuZmlsZS50ZW1wbGF0ZSIKICAgIF9pbmhlcml0ID0gWwogICAgICAgICJjeC50b3dlci5yZWZlcmVuY2UubWl4aW4iLAogICAgICAgICJjeC50b3dlci5rZXkubWl4aW4iLAogICAgICAgICJjeC50b3dlci50ZW1wbGF0ZS5taXhpbiIsCiAgICAgICAgImN4LnRvd2VyLmFjY2Vzcy5yb2xlLm1peGluIiwKICAgICAgICAiY3gudG93ZXIudGFnLm1peGluIiwKICAgIF0KICAgIF9kZXNjcmlwdGlvbiA9ICJDZXRtaXggVG93ZXIgRmlsZSBUZW1wbGF0ZSIKICAgIF9vcmRlciA9ICJuYW1lIgoKICAgIGFjdGl2ZSA9IGZpZWxkcy5Cb29sZWFuKGRlZmF1bHQ9VHJ1ZSkKICAgIGZpbGVfbmFtZSA9IGZpZWxkcy5DaGFyKAogICAgICAgIGhlbHA9IkRlZmF1bHQgZnVsbCBmaWxlIG5hbWUgd2l0aCBmaWxlIHR5cGUgZm9yIGV4YW1wbGU6IHRlc3QudHh0IiwKICAgICkKICAgIGNvZGUgPSBmaWVsZHMuVGV4dChzdHJpbmc9IkZpbGUgY29udGVudCIpCiAgICBzZXJ2ZXJfZGlyID0gZmllbGRzLkNoYXIoc3RyaW5nPSJEaXJlY3Rvcnkgb24gc2VydmVyIikKICAgIGZpbGVfaWRzID0gZmllbGRzLk9uZTJtYW55KCJjeC50b3dlci5maWxlIiwgInRlbXBsYXRlX2lkIikKICAgIGZpbGVfY291bnQgPSBmaWVsZHMuSW50ZWdlcigKICAgICAgICAiRmlsZShzKSIsCiAgICAgICAgY29tcHV0ZT0iX2NvbXB1dGVfZmlsZV9jb3VudCIsCiAgICApCiAgICB0YWdfaWRzID0gZmllbGRzLk1hbnkybWFueSgKICAgICAgICByZWxhdGlvbj0iY3hfdG93ZXJfZmlsZV90ZW1wbGF0ZV90YWdfcmVsIiwKICAgICAgICBjb2x1bW4xPSJmaWxlX3RlbXBsYXRlX2lkIiwKICAgICAgICBjb2x1bW4yPSJ0YWdfaWQiLAogICAgKQogICAgbm90ZSA9IGZpZWxkcy5UZXh0KGhlbHA9IlRoaXMgZmllbGQgaXMgdXNlZCB0byBwdXQgc29tZSBub3RlcyByZWdhcmRpbmcgdGVtcGxhdGUuIikKICAgIGtlZXBfd2hlbl9kZWxldGVkID0gZmllbGRzLkJvb2xlYW4oCiAgICAgICAgaGVscD0iRmlsZSB3aWxsIGJlIGtlcHQgb24gc2VydmVyIHdoZW4gZGVsZXRlZCBpbiBUb3dlciIsCiAgICApCiAgICBhdXRvX3N5bmMgPSBmaWVsZHMuQm9vbGVhbigKICAgICAgICBoZWxwPSJJZiBlbmFibGVkLCBmaWxlcyBjcmVhdGVkIGZyb20gdGhpcyB0ZW1wbGF0ZSB3aWxsIGhhdmUgIgogICAgICAgICJBdXRvIFN5bmMgZW5hYmxlZCBieSBkZWZhdWx0LiBVc2VkIG9ubHkgd2l0aCAnVG93ZXInIHNvdXJjZS4iLAogICAgKQogICAgZmlsZV90eXBlID0gZmllbGRzLlNlbGVjdGlvbigKICAgICAgICBzZWxlY3Rpb249bGFtYmRhIHNlbGY6IHNlbGYuZW52WyJjeC50b3dlci5maWxlIl0uX3NlbGVjdGlvbl9maWxlX3R5cGUoKSwKICAgICAgICBkZWZhdWx0PWxhbWJkYSBzZWxmOiBzZWxmLmVudlsiY3gudG93ZXIuZmlsZSJdLl9kZWZhdWx0X2ZpbGVfdHlwZSgpLAogICAgICAgIHJlcXVpcmVkPVRydWUsCiAgICApCiAgICBzb3VyY2UgPSBmaWVsZHMuU2VsZWN0aW9uKAogICAgICAgIFsKICAgICAgICAgICAgKCJ0b3dlciIsICJUb3dlciIpLAogICAgICAgICAgICAoInNlcnZlciIsICJTZXJ2ZXIiKSwKICAgICAgICBdLAogICAgICAgIHJlcXVpcmVkPVRydWUsCiAgICAgICAgZGVmYXVsdD0idG93ZXIiLAogICAgKQogICAgdmFyaWFibGVfaWRzID0gZmllbGRzLk1hbnkybWFueSgKICAgICAgICBjb21vZGVsX25hbWU9ImN4LnRvd2VyLnZhcmlhYmxlIiwKICAgICAgICByZWxhdGlvbj0iY3hfdG93ZXJfZmlsZV90ZW1wbGF0ZV92YXJpYWJsZV9yZWwiLAogICAgICAgIGNvbHVtbjE9ImZpbGVfdGVtcGxhdGVfaWQiLAogICAgICAgIGNvbHVtbjI9InZhcmlhYmxlX2lkIiwKICAgICkKCiAgICAjIC0tLS0gQWNjZXNzLiBBZGQgcmVsYXRpb24gZm9yIG1peGluIGZpZWxkcwogICAgdXNlcl9pZHMgPSBmaWVsZHMuTWFueTJtYW55KAogICAgICAgIHJlbGF0aW9uPSJjeF90b3dlcl9maWxlX3RlbXBsYXRlX3VzZXJfcmVsIiwKICAgICAgICBkb21haW49bGFtYmRhIHNlbGY6IFsKICAgICAgICAgICAgKCJncm91cHNfaWQiLCAiaW4iLCBbc2VsZi5lbnYucmVmKCJjZXRtaXhfdG93ZXJfc2VydmVyLmdyb3VwX21hbmFnZXIiKS5pZF0pCiAgICAgICAgXSwKICAgICkKICAgIG1hbmFnZXJfaWRzID0gZmllbGRzLk1hbnkybWFueSgKICAgICAgICByZWxhdGlvbj0iY3hfdG93ZXJfZmlsZV90ZW1wbGF0ZV9tYW5hZ2VyX3JlbCIsCiAgICApCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX2dldF9kZXBlbmRzX2ZpZWxkcyhjbHMpOgogICAgICAgICIiIgogICAgICAgIERlZmluZSBkZXBlbmRlbnQgZmllbGRzIGZvciBjb21wdXRpbmcKICAgICAgICBgdmFyaWFibGVfaWRzYCBpbiBmaWxlIHRlbXBsYXRlLXJlbGF0ZWQgbW9kZWxzLgoKICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIHNwZWNpZmllcyB0aGF0IHRoZSBmaWVsZHMgYGNvZGVgLCBgc2VydmVyX2RpcmAsCiAgICAgICAgYW5kIGBmaWxlX25hbWVgIGFyZSB1c2VkIHRvIGNvbXB1dGUgdGhlCiAgICAgICAgdmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aCBhIGZpbGUgdGVtcGxhdGUuCgogICAgICAgIFJldHVybnM6CiAgICAgICAgICAgIGxpc3Q6IEEgbGlzdCBvZiBmaWVsZCBuYW1lcyAoc3RyKSByZXByZXNlbnRpbmcgdGhlIGRlcGVuZGVuY2llcy4KCiAgICAgICAgRXhhbXBsZToKICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWVsZHMgdHJpZ2dlciByZWNvbXB1dGF0aW9uCiAgICAgICAgICAgIG9mIGB2YXJpYWJsZV9pZHNgOgogICAgICAgICAgICAtIGBjb2RlYDogVGhlIHRlbXBsYXRlIGNvbnRlbnQgZm9yIHRoZSBmaWxlLgogICAgICAgICAgICAtIGBzZXJ2ZXJfZGlyYDogVGhlIHRhcmdldCBkaXJlY3Rvcnkgb24gdGhlCiAgICAgICAgICAgIHNlcnZlciB3aGVyZSB0aGUgdGVtcGxhdGUgaXMgYXBwbGllZC4KICAgICAgICAgICAgLSBgZmlsZV9uYW1lYDogVGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBmaWxlLgogICAgICAgICIiIgogICAgICAgIHJldHVybiBbImNvZGUiLCAic2VydmVyX2RpciIsICJmaWxlX25hbWUiXQoKICAgICMgLS0gQ29tcHV0ZXMKICAgIEBhcGkuZGVwZW5kcygiZmlsZV9pZHMiKQogICAgZGVmIF9jb21wdXRlX2ZpbGVfY291bnQoc2VsZik6CiAgICAgICAgIiIiCiAgICAgICAgQ29tcHV0ZSB0b3RhbCB0ZW1wbGF0ZSBmaWxlcwogICAgICAgICIiIgogICAgICAgIGZvciB0ZW1wbGF0ZSBpbiBzZWxmOgogICAgICAgICAgICB0ZW1wbGF0ZS5maWxlX2NvdW50ID0gbGVuKHRlbXBsYXRlLmZpbGVfaWRzKQoKICAgICMgLS0gQ3JlYXRlL1dyaXRlL1VubGluawogICAgZGVmIHdyaXRlKHNlbGYsIHZhbHMpOgogICAgICAgICIiIgogICAgICAgIE92ZXJyaWRlIHRvIHVwZGF0ZSBmaWxlcyByZWxhdGVkIHdpdGggdGhlIHRlbXBsYXRlcwogICAgICAgICIiIgogICAgICAgIHJlc3VsdCA9IHN1cGVyKCkud3JpdGUodmFscykKICAgICAgICBpZiBhbnkoZmllbGRfIGluIHZhbHMgZm9yIGZpZWxkXyBpbiBURU1QTEFURV9GSUxFX0ZJRUxEX01BUFBJTkcpOgogICAgICAgICAgICBmb3IgZmlsZSBpbiBzZWxmLm1hcHBlZCgiZmlsZV9pZHMiKToKICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZmlsZS5fZ2V0X2ZpbGVfdmFsdWVzX2Zyb21fcmVsYXRlZF90ZW1wbGF0ZSgpKQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICAjIC0tIEFjdGlvbnMKICAgIGRlZiBhY3Rpb25fb3Blbl9maWxlcyhzZWxmKToKICAgICAgICAiIiIKICAgICAgICBPcGVuIGN1cnJlbnQgdGVtcGxhdGUgZmlsZXMKICAgICAgICAiIiIKICAgICAgICBhY3Rpb24gPSBzZWxmLmVudlsiaXIuYWN0aW9ucy5hY3Rpb25zIl0uX2Zvcl94bWxfaWQoCiAgICAgICAgICAgICJjZXRtaXhfdG93ZXJfc2VydmVyLmN4X3Rvd2VyX2ZpbGVfYWN0aW9uIgogICAgICAgICkKICAgICAgICBhY3Rpb25bImRvbWFpbiJdID0gWygiaWQiLCAiaW4iLCBzZWxmLmZpbGVfaWRzLmlkcyldCiAgICAgICAgcmV0dXJuIGFjdGlvbgoKICAgICMgLS0gQnVzaW5lc3MgbG9naWMKICAgIGRlZiBjcmVhdGVfZmlsZSgKICAgICAgICBzZWxmLCBzZXJ2ZXIsIHNlcnZlcl9kaXI9IiIsIGlmX2ZpbGVfZXhpc3RzPSJyYWlzZSIsIGpldF90ZW1wbGF0ZT1Ob25lLCBqZXQ9Tm9uZQogICAgKToKICAgICAgICAiIiIKICAgICAgICBDcmVhdGUgYSBuZXcgZmlsZSB1c2luZyB0aGUgY3VycmVudCB0ZW1wbGF0ZSBmb3IgdGhlIHNlbGVjdGVkIHNlcnZlci4KICAgICAgICBJZiB0aGUgc2FtZSBmaWxlIGFscmVhZHkgZXhpc3RzLCBqdXN0IGlnbm9yZSBpdCBvciByYWlzZSBhbiBlcnJvciBiYXNlZCBvbiB0aGUKICAgICAgICBwYXJhbWV0ZXIuCgogICAgICAgIDpwYXJhbSBzZXJ2ZXI6IHJlY29yZHNldAogICAgICAgICAgICBUaGUgc2VydmVyIChjeC50b3dlci5zZXJ2ZXIpIG9uIHdoaWNoIHRoZSBmaWxlIHNob3VsZCBiZSBjcmVhdGVkLiBUaGlzIGlzIGEKICAgICAgICAgICAgcmVxdWlyZWQgcGFyYW1ldGVyLgogICAgICAgIDpwYXJhbSBpZl9maWxlX2V4aXN0czogc3RyLCBvcHRpb25hbAogICAgICAgICAgICBEZWZpbmVzIHRoZSBiZWhhdmlvciBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgc2VydmVyLgogICAgICAgIDpwYXJhbSBzZXJ2ZXJfZGlyOiBzdHIsIG9wdGlvbmFsCiAgICAgICAgICAgIFRoZSBkaXJlY3Rvcnkgb24gdGhlIHNlcnZlciB3aGVyZSB0aGUgZmlsZSBzaG91bGQgYmUgY3JlYXRlZC4gSWYgbm90IHNldCwKICAgICAgICAgICAgdGhlIHNlcnZlcl9kaXIgZmllbGQgb2YgdGhlIHRlbXBsYXRlIHdpbGwgYmUgdXNlZC4KICAgICAgICA6cGFyYW0gamV0X3RlbXBsYXRlOiBjeC50b3dlci5qZXQudGVtcGxhdGUsIG9wdGlvbmFsCiAgICAgICAgICAgIFRoZSBqZXQgdGVtcGxhdGUgdG8gdXNlIGZvciBjcmVhdGluZyB0aGUgbmV3IGZpbGUuCiAgICAgICAgOnBhcmFtIGpldDogY3gudG93ZXIuamV0LCBvcHRpb25hbAogICAgICAgICAgICBUaGUgamV0IHRvIHVzZSBmb3IgY3JlYXRpbmcgdGhlIG5ldyBmaWxlLgoKICAgICAgICA6cmV0dXJuOiBjeC50b3dlci5maWxlCiAgICAgICAgICAgIFJldHVybnMgdGhlIG5ld2x5IGNyZWF0ZWQgZmlsZSByZWNvcmQgKGN4LnRvd2VyLmZpbGUpIGlmIHRoZSBmaWxlIHdhcwogICAgICAgICAgICBjcmVhdGVkIHN1Y2Nlc3NmdWxseSBvciBpZl9maWxlX2V4aXN0cyBpcyBzZXQgdG8gIm92ZXJ3cml0ZSIuCiAgICAgICAgICAgIFJldHVybnMgdGhlIGV4aXN0aW5nIGZpbGUgcmVjb3JkIGlmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzCiAgICAgICAgICAgIGFuZCBpZl9maWxlX2V4aXN0cyBpcyBzZXQgdG8gInNraXAiLgoKICAgICAgICA6cmFpc2VzIFZhbGlkYXRpb25FcnJvcjoKICAgICAgICAgICAgSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgb24gdGhlIHNlcnZlciBpZl9maWxlX2V4aXN0cyBpcyBzZXQgdG8gInJhaXNlIi4KICAgICAgICAiIiIKICAgICAgICBzZWxmLmVuc3VyZV9vbmUoKQogICAgICAgICMgRXhwbGljaXQgZ3VhcmQgYWdhaW5zdCBpbnZhbGlkIGJlaGF2aW9yIHZhbHVlcwogICAgICAgIHZhbGlkX2JlaGF2aW9ycyA9IHsic2tpcCIsICJyYWlzZSIsICJvdmVyd3JpdGUifQogICAgICAgIGlmIGlmX2ZpbGVfZXhpc3RzIG5vdCBpbiB2YWxpZF9iZWhhdmlvcnM6CiAgICAgICAgICAgIHJhaXNlIFZhbGlkYXRpb25FcnJvcigKICAgICAgICAgICAgICAgIGYiSW52YWxpZCBpZl9maWxlX2V4aXN0cyB2YWx1ZToge2lmX2ZpbGVfZXhpc3RzfS4gIgogICAgICAgICAgICAgICAgZiJFeHBlY3RlZCBvbmUgb2Yge3ZhbGlkX2JlaGF2aW9yc30uIgogICAgICAgICAgICApCiAgICAgICAgZmlsZV9tb2RlbCA9IHNlbGYuZW52WyJjeC50b3dlci5maWxlIl0KICAgICAgICBleGlzdGluZ19maWxlcyA9IGZpbGVfbW9kZWwuc2VhcmNoKAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAoInNlcnZlcl9pZCIsICI9Iiwgc2VydmVyLmlkKSwKICAgICAgICAgICAgICAgICgic291cmNlIiwgIj0iLCBzZWxmLnNvdXJjZSksCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIG9yZGVyPSJpZCBERVNDIiwKICAgICAgICApCiAgICAgICAgZXhpc3RpbmdfZGlyID0gc2VydmVyX2RpciBvciBzZWxmLnNlcnZlcl9kaXIKCiAgICAgICAgIyBSZW5kZXIgdGhlIHNlcnZlciBkaXJlY3RvcnkgYW5kIGZpbGUgbmFtZSBmcm9tIHRoZSB0ZW1wbGF0ZQogICAgICAgIHZhcmlhYmxlcyA9IGxpc3QoCiAgICAgICAgICAgIHNldCgKICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3ZhcmlhYmxlc19mcm9tX2NvZGUoc2VsZi5maWxlX25hbWUpCiAgICAgICAgICAgICAgICArIHNlbGYuZ2V0X3ZhcmlhYmxlc19mcm9tX2NvZGUoZXhpc3RpbmdfZGlyKQogICAgICAgICAgICApCiAgICAgICAgKQogICAgICAgIHZhcl92YWxzID0gc2VsZi5lbnZbImN4LnRvd2VyLnZhcmlhYmxlIl0uX2dldF92YXJpYWJsZV92YWx1ZXNfYnlfcmVmZXJlbmNlcygKICAgICAgICAgICAgdmFyaWFibGVzLAogICAgICAgICAgICBzZXJ2ZXI9c2VydmVyLAogICAgICAgICAgICBqZXRfdGVtcGxhdGU9amV0X3RlbXBsYXRlLAogICAgICAgICAgICBqZXQ9amV0LAogICAgICAgICkKCiAgICAgICAgdW5yZW5kZXJlZF9wYXRoID0gKAogICAgICAgICAgICBmIntleGlzdGluZ19kaXJ9L3tzZWxmLmZpbGVfbmFtZX0iIGlmIGV4aXN0aW5nX2RpciBlbHNlIHNlbGYuZmlsZV9uYW1lCiAgICAgICAgKQogICAgICAgIHJlbmRlcmVkX3BhdGggPSBzZWxmLnJlbmRlcl9jb2RlX2N1c3RvbSh1bnJlbmRlcmVkX3BhdGgsICoqdmFyX3ZhbHMpCgogICAgICAgICMgRmlsdGVyIGV4aXN0aW5nIGZpbGVzIGJ5IHJlbmRlcmVkIHBhdGgKICAgICAgICBleGlzdGluZ19maWxlcyA9IGV4aXN0aW5nX2ZpbGVzLmZpbHRlcmVkKAogICAgICAgICAgICBsYW1iZGEgZjogZi5mdWxsX3NlcnZlcl9wYXRoID09IHJlbmRlcmVkX3BhdGgKICAgICAgICApCgogICAgICAgICMgRmlsdGVyIGV4aXN0aW5nIGZpbGVzIGJ5IHRlbXBsYXRlIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHRha2UgdGhlIGZpcnN0IG9uZQogICAgICAgIGV4aXN0aW5nX2ZpbGUgPSAoCiAgICAgICAgICAgIGV4aXN0aW5nX2ZpbGVzLmZpbHRlcmVkKGxhbWJkYSBmOiBmLnRlbXBsYXRlX2lkID09IHNlbGYpWzoxXQogICAgICAgICAgICBvciBleGlzdGluZ19maWxlc1s6MV0KICAgICAgICApCgogICAgICAgIGlmIGV4aXN0aW5nX2ZpbGUgYW5kIGlmX2ZpbGVfZXhpc3RzID09ICJza2lwIjoKICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nX2ZpbGUud2l0aF9jb250ZXh0KGZpbGVfY3JlYXRpb25fc2tpcHBlZD1UcnVlKQoKICAgICAgICBpZiBleGlzdGluZ19maWxlIGFuZCBpZl9maWxlX2V4aXN0cyA9PSAicmFpc2UiOgogICAgICAgICAgICByYWlzZSBWYWxpZGF0aW9uRXJyb3IoXygiRmlsZSBhbHJlYWR5IGV4aXN0cyBvbiBzZXJ2ZXIuIikpCgogICAgICAgIGlmIGV4aXN0aW5nX2ZpbGUgYW5kIGlmX2ZpbGVfZXhpc3RzID09ICJvdmVyd3JpdGUiOgogICAgICAgICAgICBleGlzdGluZ19maWxlLndpdGhfY29udGV4dChpc19jdXN0b21fc2VydmVyX2Rpcj1UcnVlKS53cml0ZSgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidGVtcGxhdGVfaWQiOiBzZWxmLmlkLCAgIyBweWxpbnQ6IGRpc2FibGU9bm8tbWVtYmVyCiAgICAgICAgICAgICAgICAgICAgImpldF90ZW1wbGF0ZV9pZCI6IGpldF90ZW1wbGF0ZS5pZCBpZiBqZXRfdGVtcGxhdGUgZWxzZSBOb25lLAogICAgICAgICAgICAgICAgICAgICJqZXRfaWQiOiBqZXQuaWQgaWYgamV0IGVsc2UgTm9uZSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKQogICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdfZmlsZQoKICAgICAgICB2YWxzID0gewogICAgICAgICAgICAibmFtZSI6IHNlbGYuZmlsZV9uYW1lLAogICAgICAgICAgICAic2VydmVyX2lkIjogc2VydmVyLmlkLAogICAgICAgICAgICAic2VydmVyX2RpciI6IGV4aXN0aW5nX2RpciwKICAgICAgICAgICAgInRlbXBsYXRlX2lkIjogc2VsZi5pZCwgICMgcHlsaW50OiBkaXNhYmxlPW5vLW1lbWJlcgogICAgICAgICAgICAiY29kZSI6IHNlbGYuY29kZSwKICAgICAgICAgICAgImZpbGVfdHlwZSI6IHNlbGYuZmlsZV90eXBlLAogICAgICAgICAgICAic291cmNlIjogc2VsZi5zb3VyY2UsCiAgICAgICAgICAgICJhdXRvX3N5bmMiOiBzZWxmLmF1dG9fc3luYywKICAgICAgICAgICAgImpldF90ZW1wbGF0ZV9pZCI6IGpldF90ZW1wbGF0ZS5pZCBpZiBqZXRfdGVtcGxhdGUgZWxzZSBOb25lLAogICAgICAgICAgICAiamV0X2lkIjogamV0LmlkIGlmIGpldCBlbHNlIE5vbmUsCiAgICAgICAgfQoKICAgICAgICBuZXdfZmlsZSA9IGZpbGVfbW9kZWwud2l0aF9jb250ZXh0KGlzX2N1c3RvbV9zZXJ2ZXJfZGlyPVRydWUpLmNyZWF0ZSh2YWxzKQogICAgICAgICMgUmV0dXJuIG5ld19maWxlIGlmIG5vIGZpbGUgZXhpc3RzCiAgICAgICAgcmV0dXJuIG5ld19maWxlCg== \ No newline at end of file