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CiAgICAiPEVsZW1lbnQgJ3RcXHhlNGcnIGF0IDB4Li4uPiIKICAgID4+PiBlbGVtZW50ID0gRVQuRWxlbWVudCgidGFnIiwga2V5PSJ2YWx1ZSIpCgogICAgTWFrZSBzdXJlIGFsbCBzdGFuZGFyZCBlbGVtZW50IG1ldGhvZHMgZXhpc3QuCgogICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LmFwcGVuZCkKICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5leHRlbmQpCiAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaW5zZXJ0KQogICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LnJlbW92ZSkKICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5nZXRjaGlsZHJlbikKICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5maW5kKQogICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXJmaW5kKQogICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LmZpbmRhbGwpCiAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuZmluZHRleHQpCiAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuY2xlYXIpCiAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuZ2V0KQogICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LnNldCkKICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5rZXlzKQogICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZW1zKQogICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXIpCiAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlcnRleHQpCiAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuZ2V0aXRlcmF0b3IpCgogICAgVGhlc2UgbWV0aG9kcyByZXR1cm4gYW4gaXRlcmFibGUuIFNlZSBidWcgNjQ3Mi4KCiAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlcigidGFnIikubmV4dCkKICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyZmluZCgidGFnIikubmV4dCkKICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyZmluZCgiKiIpLm5leHQpCiAgICA+Pj4gY2hlY2tfbWV0aG9kKHRyZWUuaXRlcigidGFnIikubmV4dCkKICAgID4+PiBjaGVja19tZXRob2QodHJlZS5pdGVyZmluZCgidGFnIikubmV4dCkKICAgID4+PiBjaGVja19tZXRob2QodHJlZS5pdGVyZmluZCgiKiIpLm5leHQpCgogICAgVGhlc2UgYWxpYXNlcyBhcmUgcHJvdmlkZWQ6CgogICAgPj4+IGFzc2VydCBFVC5YTUwgPT0gRVQuZnJvbXN0cmluZwogICAgPj4+IGFzc2VydCBFVC5QSSA9PSBFVC5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KICAgID4+PiBhc3NlcnQgRVQuWE1MUGFyc2VyID09IEVULlhNTFRyZWVCdWlsZGVyCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQJAAAAaW50ZXJmYWNligAAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHNLBgAACiAgICBCYXNpYyBtZXRob2Qgc2FuaXR5IGNoZWNrcy4KCiAgICA+Pj4gZWxlbSA9IEVULlhNTCgiPGJvZHk+PHRhZy8+PC9ib2R5PiIpCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCiAgICAnPGJvZHk+PHRhZyAvPjwvYm9keT4nCiAgICA+Pj4gZSA9IEVULkVsZW1lbnQoInRhZzIiKQogICAgPj4+IGVsZW0uYXBwZW5kKGUpCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCiAgICAnPGJvZHk+PHRhZyAvPjx0YWcyIC8+PC9ib2R5PicKICAgID4+PiBlbGVtLnJlbW92ZShlKQogICAgPj4+IHNlcmlhbGl6ZShlbGVtKQogICAgJzxib2R5Pjx0YWcgLz48L2JvZHk+JwogICAgPj4+IGVsZW0uaW5zZXJ0KDAsIGUpCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCiAgICAnPGJvZHk+PHRhZzIgLz48dGFnIC8+PC9ib2R5PicKICAgID4+PiBlbGVtLnJlbW92ZShlKQogICAgPj4+IGVsZW0uZXh0ZW5kKFtlXSkKICAgID4+PiBzZXJpYWxpemUoZWxlbSkKICAgICc8Ym9keT48dGFnIC8+PHRhZzIgLz48L2JvZHk+JwogICAgPj4+IGVsZW0ucmVtb3ZlKGUpCgogICAgPj4+IGVsZW1lbnQgPSBFVC5FbGVtZW50KCJ0YWciLCBrZXk9InZhbHVlIikKICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkgIyAxCiAgICAnPHRhZyBrZXk9InZhbHVlIiAvPicKICAgID4+PiBzdWJlbGVtZW50ID0gRVQuRWxlbWVudCgic3VidGFnIikKICAgID4+PiBlbGVtZW50LmFwcGVuZChzdWJlbGVtZW50KQogICAgPj4+IHNlcmlhbGl6ZShlbGVtZW50KSAjIDIKICAgICc8dGFnIGtleT0idmFsdWUiPjxzdWJ0YWcgLz48L3RhZz4nCiAgICA+Pj4gZWxlbWVudC5pbnNlcnQoMCwgc3ViZWxlbWVudCkKICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkgIyAzCiAgICAnPHRhZyBrZXk9InZhbHVlIj48c3VidGFnIC8+PHN1YnRhZyAvPjwvdGFnPicKICAgID4+PiBlbGVtZW50LnJlbW92ZShzdWJlbGVtZW50KQogICAgPj4+IHNlcmlhbGl6ZShlbGVtZW50KSAjIDQKICAgICc8dGFnIGtleT0idmFsdWUiPjxzdWJ0YWcgLz48L3RhZz4nCiAgICA+Pj4gZWxlbWVudC5yZW1vdmUoc3ViZWxlbWVudCkKICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkgIyA1CiAgICAnPHRhZyBrZXk9InZhbHVlIiAvPicKICAgID4+PiBlbGVtZW50LnJlbW92ZShzdWJlbGVtZW50KQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgVmFsdWVFcnJvcjogbGlzdC5yZW1vdmUoeCk6IHggbm90IGluIGxpc3QKICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkgIyA2CiAgICAnPHRhZyBrZXk9InZhbHVlIiAvPicKICAgID4+PiBlbGVtZW50WzA6MF0gPSBbc3ViZWxlbWVudCwgc3ViZWxlbWVudCwgc3ViZWxlbWVudF0KICAgID4+PiBzZXJpYWxpemUoZWxlbWVudFsxXSkKICAgICc8c3VidGFnIC8+JwogICAgPj4+IGVsZW1lbnRbMTo5XSA9PSBbZWxlbWVudFsxXSwgZWxlbWVudFsyXV0KICAgIFRydWUKICAgID4+PiBlbGVtZW50Wzo5OjJdID09IFtlbGVtZW50WzBdLCBlbGVtZW50WzJdXQogICAgVHJ1ZQogICAgPj4+IGRlbCBlbGVtZW50WzE6Ml0KICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkKICAgICc8dGFnIGtleT0idmFsdWUiPjxzdWJ0YWcgLz48c3VidGFnIC8+PC90YWc+JwogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0CQAAAHNpbXBsZW9wc70AAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzGQEAAAogICAgVGVzdCBDREFUQSBoYW5kbGluZyAoZXRjKS4KCiAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgiPHRhZz5oZWxsbzwvdGFnPiIpKQogICAgJzx0YWc+aGVsbG88L3RhZz4nCiAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgiPHRhZz4mIzEwNDsmIzEwMTsmIzEwODsmIzEwODsmIzExMTs8L3RhZz4iKSkKICAgICc8dGFnPmhlbGxvPC90YWc+JwogICAgPj4+IHNlcmlhbGl6ZShFVC5YTUwoIjx0YWc+PCFbQ0RBVEFbaGVsbG9dXT48L3RhZz4iKSkKICAgICc8dGFnPmhlbGxvPC90YWc+JwogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0BQAAAGNkYXRh9QAAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHOZAwAACiAgICBUZXN0IGZpbmQgbWV0aG9kcyB1c2luZyB0aGUgZWxlbWVudHBhdGggZmFsbGJhY2suCgogICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZQoKICAgID4+PiBDdXJyZW50RWxlbWVudFBhdGggPSBFbGVtZW50VHJlZS5FbGVtZW50UGF0aAogICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoID0gRWxlbWVudFRyZWUuX1NpbXBsZUVsZW1lbnRQYXRoKCkKICAgID4+PiBlbGVtID0gRWxlbWVudFRyZWUuWE1MKFNBTVBMRV9YTUwpCiAgICA+Pj4gZWxlbS5maW5kKCJ0YWciKS50YWcKICAgICd0YWcnCiAgICA+Pj4gRWxlbWVudFRyZWUuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgidGFnIikudGFnCiAgICAndGFnJwogICAgPj4+IGVsZW0uZmluZHRleHQoInRhZyIpCiAgICAndGV4dCcKICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0b2ciKQogICAgPj4+IGVsZW0uZmluZHRleHQoInRvZyIsICJkZWZhdWx0IikKICAgICdkZWZhdWx0JwogICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRUcmVlKGVsZW0pLmZpbmR0ZXh0KCJ0YWciKQogICAgJ3RleHQnCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ0YWciKSkKICAgIFsndGFnJywgJ3RhZyddCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWciKSkKICAgIFsndGFnJywgJ3RhZycsICd0YWcnXQoKICAgIFBhdGggc3ludGF4IGRvZXNuJ3Qgd29yayBpbiB0aGlzIGNhc2UuCgogICAgPj4+IGVsZW0uZmluZCgic2VjdGlvbi90YWciKQogICAgPj4+IGVsZW0uZmluZHRleHQoInNlY3Rpb24vdGFnIikKICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInNlY3Rpb24vdGFnIikpCiAgICBbXQoKICAgID4+PiBFbGVtZW50VHJlZS5FbGVtZW50UGF0aCA9IEN1cnJlbnRFbGVtZW50UGF0aAogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0CgAAAHNpbXBsZWZpbmQCAQAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc24PAAAKICAgIFRlc3QgZmluZCBtZXRob2RzIChpbmNsdWRpbmcgeHBhdGggc3ludGF4KS4KCiAgICA+Pj4gZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQogICAgPj4+IGVsZW0uZmluZCgidGFnIikudGFnCiAgICAndGFnJwogICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoInRhZyIpLnRhZwogICAgJ3RhZycKICAgID4+PiBlbGVtLmZpbmQoInNlY3Rpb24vdGFnIikudGFnCiAgICAndGFnJwogICAgPj4+IGVsZW0uZmluZCgiLi90YWciKS50YWcKICAgICd0YWcnCiAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgiLi90YWciKS50YWcKICAgICd0YWcnCiAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgiL3RhZyIpLnRhZwogICAgJ3RhZycKICAgID4+PiBlbGVtWzJdID0gRVQuWE1MKFNBTVBMRV9TRUNUSU9OKQogICAgPj4+IGVsZW0uZmluZCgic2VjdGlvbi9uZXh0dGFnIikudGFnCiAgICAnbmV4dHRhZycKICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCJzZWN0aW9uL3RhZyIpLnRhZwogICAgJ3RhZycKICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCJ0b2ciKQogICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoInRvZy9mb28iKQogICAgPj4+IGVsZW0uZmluZHRleHQoInRhZyIpCiAgICAndGV4dCcKICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJzZWN0aW9uL25leHR0YWciKQogICAgJycKICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJzZWN0aW9uL25leHR0YWciLCAiZGVmYXVsdCIpCiAgICAnJwogICAgPj4+IGVsZW0uZmluZHRleHQoInRvZyIpCiAgICA+Pj4gZWxlbS5maW5kdGV4dCgidG9nIiwgImRlZmF1bHQiKQogICAgJ2RlZmF1bHQnCiAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoInRhZyIpCiAgICAndGV4dCcKICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgidG9nL2ZvbyIpCiAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoInRvZy9mb28iLCAiZGVmYXVsdCIpCiAgICAnZGVmYXVsdCcKICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgiLi90YWciKQogICAgJ3RleHQnCiAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoIi90YWciKQogICAgJ3RleHQnCiAgICA+Pj4gZWxlbS5maW5kdGV4dCgic2VjdGlvbi90YWciKQogICAgJ3N1YnRleHQnCiAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoInNlY3Rpb24vdGFnIikKICAgICdzdWJ0ZXh0JwogICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLiIpKQogICAgWydib2R5J10KICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInRhZyIpKQogICAgWyd0YWcnLCAndGFnJ10KICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInRvZyIpKQogICAgW10KICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInRvZy9mb28iKSkKICAgIFtdCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIqIikpCiAgICBbJ3RhZycsICd0YWcnLCAnc2VjdGlvbiddCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWciKSkKICAgIFsndGFnJywgJ3RhZycsICd0YWcnLCAndGFnJ10KICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInNlY3Rpb24vdGFnIikpCiAgICBbJ3RhZyddCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uLy90YWciKSkKICAgIFsndGFnJywgJ3RhZyddCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uLyoiKSkKICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nXQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgic2VjdGlvbi8vKiIpKQogICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbicsICd0YWcnXQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgic2VjdGlvbi8uLy8qIikpCiAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJywgJ3RhZyddCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIqLyoiKSkKICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nXQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiKi8vKiIpKQogICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbicsICd0YWcnXQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiKi90YWciKSkKICAgIFsndGFnJ10KICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIiovLi90YWciKSkKICAgIFsndGFnJ10KICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vdGFnIikpCiAgICBbJ3RhZycsICd0YWcnXQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vdGFnIikpCiAgICBbJ3RhZycsICd0YWcnLCAndGFnJywgJ3RhZyddCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy4vdGFnIikpCiAgICBbJ3RhZycsICd0YWcnXQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vdGFnW0BjbGFzc10iKSkKICAgIFsndGFnJywgJ3RhZycsICd0YWcnXQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vdGFnW0BjbGFzcz0nYSddIikpCiAgICBbJ3RhZyddCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWdbQGNsYXNzPSdiJ10iKSkKICAgIFsndGFnJywgJ3RhZyddCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWdbQGlkXSIpKQogICAgWyd0YWcnXQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vc2VjdGlvblt0YWddIikpCiAgICBbJ3NlY3Rpb24nXQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vc2VjdGlvbltlbGVtZW50XSIpKQogICAgW10KICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4uL3RhZyIpKQogICAgW10KICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInNlY3Rpb24vLi4vdGFnIikpCiAgICBbJ3RhZycsICd0YWcnXQogICAgPj4+IHN1bW1hcml6ZV9saXN0KEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmRhbGwoIi4vdGFnIikpCiAgICBbJ3RhZycsICd0YWcnXQoKICAgIEZvbGxvd2luZyBleGFtcGxlIGlzIGludmFsaWQgaW4gMS4yLgogICAgQSBsZWFkaW5nICcqJyBpcyBhc3N1bWVkIGluIDEuMy4KCiAgICA+Pj4gZWxlbS5maW5kYWxsKCJzZWN0aW9uLy8iKSA9PSBlbGVtLmZpbmRhbGwoInNlY3Rpb24vLyoiKQogICAgVHJ1ZQoKICAgIEVUJ3MgUGF0aCBtb2R1bGUgaGFuZGxlcyB0aGlzIGNhc2UgaW5jb3JyZWN0bHk7IHRoaXMgZ2l2ZXMKICAgIGEgd2FybmluZyBpbiAxLjMsIGFuZCB0aGUgYmVoYXZpb3VyIHdpbGwgYmUgbW9kaWZpZWQgaW4gMS40LgoKICAgID4+PiBzdW1tYXJpemVfbGlzdChFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kYWxsKCIvdGFnIikpCiAgICBbJ3RhZycsICd0YWcnXQoKICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUxfTlMpCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ0YWciKSkKICAgIFtdCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnIikpCiAgICBbJ3todHRwOi8vZWZmYm90Lm9yZy9uc310YWcnLCAne2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZyddCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy97aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnIikpCiAgICBbJ3todHRwOi8vZWZmYm90Lm9yZy9uc310YWcnLCAne2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZycsICd7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnJ10KICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dAQAAABmaW5kJQEAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHN/AQAACiAgICA+Pj4gaW1wb3J0IFN0cmluZ0lPCgogICAgPj4+IHN0cmluZ2ZpbGUgPSBTdHJpbmdJTy5TdHJpbmdJTyhTQU1QTEVfWE1MKQogICAgPj4+IHRyZWUgPSBFVC5FbGVtZW50VHJlZShmaWxlPXN0cmluZ2ZpbGUpCiAgICA+Pj4gdHJlZS5maW5kKCJ0YWciKS50YWcKICAgICd0YWcnCiAgICA+Pj4gdHJlZS5maW5kKCJzZWN0aW9uL3RhZyIpLnRhZwogICAgJ3RhZycKCiAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnRUcmVlKGZpbGU9U0lNUExFX1hNTEZJTEUpCiAgICA+Pj4gdHJlZS5maW5kKCJlbGVtZW50IikudGFnCiAgICAnZWxlbWVudCcKICAgID4+PiB0cmVlLmZpbmQoImVsZW1lbnQvLi4vZW1wdHktZWxlbWVudCIpLnRhZwogICAgJ2VtcHR5LWVsZW1lbnQnCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQJAAAAZmlsZV9pbml0nwEAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHPQAAAACiAgICBDaGVjayBiYWQgb3IgdW5zdXBwb3J0ZWQgcGF0aCBleHByZXNzaW9ucy4KCiAgICA+Pj4gZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQogICAgPj4+IGVsZW0uZmluZGFsbCgiL3RhZyIpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICBTeW50YXhFcnJvcjogY2Fubm90IHVzZSBhYnNvbHV0ZSBwYXRoIG9uIGVsZW1lbnQKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dAgAAABiYWRfZmluZLEBAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzPgIAAAogICAgQ2hlY2sgdGhhdCB0aGUgcGF0aCBjYWNoZSBiZWhhdmVzIHNhbmVseS4KCiAgICA+Pj4gZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQogICAgPj4+IGZvciBpIGluIHJhbmdlKDEwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKICAgID4+PiBjYWNoZV9sZW5fMTAgPSBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKQogICAgPj4+IGZvciBpIGluIHJhbmdlKDEwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKICAgID4+PiBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKSA9PSBjYWNoZV9sZW5fMTAKICAgIFRydWUKICAgID4+PiBmb3IgaSBpbiByYW5nZSgyMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCiAgICA+Pj4gbGVuKEVULkVsZW1lbnRQYXRoLl9jYWNoZSkgPiBjYWNoZV9sZW5fMTAKICAgIFRydWUKICAgID4+PiBmb3IgaSBpbiByYW5nZSg2MDApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQogICAgPj4+IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpIDwgNTAwCiAgICBUcnVlCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQKAAAAcGF0aF9jYWNoZbsBAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzYAEAAAogICAgVGVzdCBjb3B5IGhhbmRsaW5nIChldGMpLgoKICAgID4+PiBpbXBvcnQgY29weQogICAgPj4+IGUxID0gRVQuWE1MKCI8dGFnPmhlbGxvPGZvby8+PC90YWc+IikKICAgID4+PiBlMiA9IGNvcHkuY29weShlMSkKICAgID4+PiBlMyA9IGNvcHkuZGVlcGNvcHkoZTEpCiAgICA+Pj4gZTEuZmluZCgiZm9vIikudGFnID0gImJhciIKICAgID4+PiBzZXJpYWxpemUoZTEpCiAgICAnPHRhZz5oZWxsbzxiYXIgLz48L3RhZz4nCiAgICA+Pj4gc2VyaWFsaXplKGUyKQogICAgJzx0YWc+aGVsbG88YmFyIC8+PC90YWc+JwogICAgPj4+IHNlcmlhbGl6ZShlMykKICAgICc8dGFnPmhlbGxvPGZvbyAvPjwvdGFnPicKCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQEAAAAY29wec0BAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABz3AUAAAogICAgVGVzdCBhdHRyaWJ1dGUgaGFuZGxpbmcuCgogICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQogICAgPj4+IGVsZW0uZ2V0KCJrZXkiKSAjIDEuMQogICAgPj4+IGVsZW0uZ2V0KCJrZXkiLCAiZGVmYXVsdCIpICMgMS4yCiAgICAnZGVmYXVsdCcKICAgID4+PiBlbGVtLnNldCgia2V5IiwgInZhbHVlIikKICAgID4+PiBlbGVtLmdldCgia2V5IikgIyAxLjMKICAgICd2YWx1ZScKCiAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoInRhZyIsIGtleT0idmFsdWUiKQogICAgPj4+IGVsZW0uZ2V0KCJrZXkiKSAjIDIuMQogICAgJ3ZhbHVlJwogICAgPj4+IGVsZW0uYXR0cmliICMgMi4yCiAgICB7J2tleSc6ICd2YWx1ZSd9CgogICAgPj4+IGF0dHJpYiA9IHsia2V5IjogInZhbHVlIn0KICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIiwgYXR0cmliKQogICAgPj4+IGF0dHJpYi5jbGVhcigpICMgY2hlY2sgZm9yIGFsaWFzaW5nIGlzc3VlcwogICAgPj4+IGVsZW0uZ2V0KCJrZXkiKSAjIDMuMQogICAgJ3ZhbHVlJwogICAgPj4+IGVsZW0uYXR0cmliICMgMy4yCiAgICB7J2tleSc6ICd2YWx1ZSd9CgogICAgPj4+IGF0dHJpYiA9IHsia2V5IjogInZhbHVlIn0KICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIiwgKiphdHRyaWIpCiAgICA+Pj4gYXR0cmliLmNsZWFyKCkgIyBjaGVjayBmb3IgYWxpYXNpbmcgaXNzdWVzCiAgICA+Pj4gZWxlbS5nZXQoImtleSIpICMgNC4xCiAgICAndmFsdWUnCiAgICA+Pj4gZWxlbS5hdHRyaWIgIyA0LjIKICAgIHsna2V5JzogJ3ZhbHVlJ30KCiAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoInRhZyIsIHsia2V5IjogIm90aGVyIn0sIGtleT0idmFsdWUiKQogICAgPj4+IGVsZW0uZ2V0KCJrZXkiKSAjIDUuMQogICAgJ3ZhbHVlJwogICAgPj4+IGVsZW0uYXR0cmliICMgNS4yCiAgICB7J2tleSc6ICd2YWx1ZSd9CgogICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCd0ZXN0JykKICAgID4+PiBlbGVtLnRleHQgPSAiYWEiCiAgICA+Pj4gZWxlbS5zZXQoJ3Rlc3RhJywgJ3Rlc3R2YWwnKQogICAgPj4+IGVsZW0uc2V0KCd0ZXN0YicsICd0ZXN0MicpCiAgICA+Pj4gRVQudG9zdHJpbmcoZWxlbSkKICAgICc8dGVzdCB0ZXN0YT0idGVzdHZhbCIgdGVzdGI9InRlc3QyIj5hYTwvdGVzdD4nCiAgICA+Pj4gc29ydGVkKGVsZW0ua2V5cygpKQogICAgWyd0ZXN0YScsICd0ZXN0YiddCiAgICA+Pj4gc29ydGVkKGVsZW0uaXRlbXMoKSkKICAgIFsoJ3Rlc3RhJywgJ3Rlc3R2YWwnKSwgKCd0ZXN0YicsICd0ZXN0MicpXQogICAgPj4+IGVsZW0uYXR0cmliWyd0ZXN0YiddCiAgICAndGVzdDInCiAgICA+Pj4gZWxlbS5hdHRyaWJbJ3Rlc3RiJ10gPSAndGVzdDEnCiAgICA+Pj4gZWxlbS5hdHRyaWJbJ3Rlc3RjJ10gPSAndGVzdDInCiAgICA+Pj4gRVQudG9zdHJpbmcoZWxlbSkKICAgICc8dGVzdCB0ZXN0YT0idGVzdHZhbCIgdGVzdGI9InRlc3QxIiB0ZXN0Yz0idGVzdDIiPmFhPC90ZXN0PicKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5Ui0AAADfAQAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAczADAAAKICAgIFRlc3QgbWFrZWVsZW1lbnQgaGFuZGxpbmcuCgogICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQogICAgPj4+IGF0dHJpYiA9IHsia2V5IjogInZhbHVlIn0KICAgID4+PiBzdWJlbGVtID0gZWxlbS5tYWtlZWxlbWVudCgic3VidGFnIiwgYXR0cmliKQogICAgPj4+IGlmIHN1YmVsZW0uYXR0cmliIGlzIGF0dHJpYjoKICAgIC4uLiAgICAgcHJpbnQgImF0dHJpYiBhbGlhc2luZyIKICAgID4+PiBlbGVtLmFwcGVuZChzdWJlbGVtKQogICAgPj4+IHNlcmlhbGl6ZShlbGVtKQogICAgJzx0YWc+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjwvdGFnPicKCiAgICA+Pj4gZWxlbS5jbGVhcigpCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCiAgICAnPHRhZyAvPicKICAgID4+PiBlbGVtLmFwcGVuZChzdWJlbGVtKQogICAgPj4+IHNlcmlhbGl6ZShlbGVtKQogICAgJzx0YWc+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjwvdGFnPicKICAgID4+PiBlbGVtLmV4dGVuZChbc3ViZWxlbSwgc3ViZWxlbV0pCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCiAgICAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjxzdWJ0YWcga2V5PSJ2YWx1ZSIgLz48L3RhZz4nCiAgICA+Pj4gZWxlbVs6XSA9IFtzdWJlbGVtXQogICAgPj4+IHNlcmlhbGl6ZShlbGVtKQogICAgJzx0YWc+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjwvdGFnPicKICAgID4+PiBlbGVtWzpdID0gdHVwbGUoW3N1YmVsZW1dKQogICAgPj4+IHNlcmlhbGl6ZShlbGVtKQogICAgJzx0YWc+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjwvdGFnPicKCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQLAAAAbWFrZWVsZW1lbnQZAgAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc4gFAAAKICAgIFRlc3QgcGFyc2luZyBmcm9tIGZpbGUuCgogICAgPj4+IHRyZWUgPSBFVC5wYXJzZShTSU1QTEVfWE1MRklMRSkKICAgID4+PiBub3JtYWxpemVfY3JsZih0cmVlKQogICAgPj4+IHRyZWUud3JpdGUoc3lzLnN0ZG91dCkKICAgIDxyb290PgogICAgICAgPGVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvZWxlbWVudD4KICAgICAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbAogICAgICAgPGVtcHR5LWVsZW1lbnQgLz4KICAgIDwvcm9vdD4KICAgID4+PiB0cmVlID0gRVQucGFyc2UoU0lNUExFX05TX1hNTEZJTEUpCiAgICA+Pj4gbm9ybWFsaXplX2NybGYodHJlZSkKICAgID4+PiB0cmVlLndyaXRlKHN5cy5zdGRvdXQpCiAgICA8bnMwOnJvb3QgeG1sbnM6bnMwPSJuYW1lc3BhY2UiPgogICAgICAgPG5zMDplbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L25zMDplbGVtZW50PgogICAgICAgPG5zMDplbGVtZW50PnRleHQ8L25zMDplbGVtZW50PnRhaWwKICAgICAgIDxuczA6ZW1wdHktZWxlbWVudCAvPgogICAgPC9uczA6cm9vdD4KCiAgICA+Pj4gd2l0aCBvcGVuKFNJTVBMRV9YTUxGSUxFKSBhcyBmOgogICAgLi4uICAgICBkYXRhID0gZi5yZWFkKCkKCiAgICA+Pj4gcGFyc2VyID0gRVQuWE1MUGFyc2VyKCkKICAgID4+PiBwYXJzZXIudmVyc2lvbiAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKICAgICdFeHBhdCAuLi4nCiAgICA+Pj4gcGFyc2VyLmZlZWQoZGF0YSkKICAgID4+PiBwcmludCBzZXJpYWxpemUocGFyc2VyLmNsb3NlKCkpCiAgICA8cm9vdD4KICAgICAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+CiAgICAgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWwKICAgICAgIDxlbXB0eS1lbGVtZW50IC8+CiAgICA8L3Jvb3Q+CgogICAgPj4+IHBhcnNlciA9IEVULlhNTFRyZWVCdWlsZGVyKCkgIyAxLjIgY29tcGF0aWJpbGl0eQogICAgPj4+IHBhcnNlci5mZWVkKGRhdGEpCiAgICA+Pj4gcHJpbnQgc2VyaWFsaXplKHBhcnNlci5jbG9zZSgpKQogICAgPHJvb3Q+CiAgICAgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PgogICAgICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsCiAgICAgICA8ZW1wdHktZWxlbWVudCAvPgogICAgPC9yb290PgoKICAgID4+PiB0YXJnZXQgPSBFVC5UcmVlQnVpbGRlcigpCiAgICA+Pj4gcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD10YXJnZXQpCiAgICA+Pj4gcGFyc2VyLmZlZWQoZGF0YSkKICAgID4+PiBwcmludCBzZXJpYWxpemUocGFyc2VyLmNsb3NlKCkpCiAgICA8cm9vdD4KICAgICAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+CiAgICAgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWwKICAgICAgIDxlbXB0eS1lbGVtZW50IC8+CiAgICA8L3Jvb3Q+CiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQJAAAAcGFyc2VmaWxlOAIAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHN3AwAACiAgICA+Pj4gZWxlbWVudCA9IEVULlhNTCgiPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+IikKICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShzeXMuc3Rkb3V0KQogICAgPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+CiAgICA+Pj4gZWxlbWVudCA9IEVULmZyb21zdHJpbmcoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCiAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3lzLnN0ZG91dCkKICAgIDxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPgogICAgPj4+IHNlcXVlbmNlID0gWyI8aHRtbD48Ym9keT4iLCAidGV4dDwvYm8iLCAiZHk+PC9odG1sPiJdCiAgICA+Pj4gZWxlbWVudCA9IEVULmZyb21zdHJpbmdsaXN0KHNlcXVlbmNlKQogICAgPj4+IHByaW50IEVULnRvc3RyaW5nKGVsZW1lbnQpCiAgICA8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4KICAgID4+PiBwcmludCAiIi5qb2luKEVULnRvc3RyaW5nbGlzdChlbGVtZW50KSkKICAgIDxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPgogICAgPj4+IEVULnRvc3RyaW5nKGVsZW1lbnQsICJhc2NpaSIpCiAgICAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nYXNjaWknPz5cbjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIKICAgID4+PiBfLCBpZHMgPSBFVC5YTUxJRCgiPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+IikKICAgID4+PiBsZW4oaWRzKQogICAgMAogICAgPj4+IF8sIGlkcyA9IEVULlhNTElEKCI8aHRtbD48Ym9keSBpZD0nYm9keSc+dGV4dDwvYm9keT48L2h0bWw+IikKICAgID4+PiBsZW4oaWRzKQogICAgMQogICAgPj4+IGlkc1siYm9keSJdLnRhZwogICAgJ2JvZHknCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQMAAAAcGFyc2VsaXRlcmFsbwIAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHN8CgAACiAgICBUZXN0IGl0ZXJwYXJzZSBpbnRlcmZhY2UuCgogICAgPj4+IGl0ZXJwYXJzZSA9IEVULml0ZXJwYXJzZQoKICAgID4+PiBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFKQogICAgPj4+IGFjdGlvbiwgZWxlbSA9IG5leHQoY29udGV4dCkKICAgID4+PiBwcmludCBhY3Rpb24sIGVsZW0udGFnCiAgICBlbmQgZWxlbWVudAogICAgPj4+IGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dDoKICAgIC4uLiAgIHByaW50IGFjdGlvbiwgZWxlbS50YWcKICAgIGVuZCBlbGVtZW50CiAgICBlbmQgZW1wdHktZWxlbWVudAogICAgZW5kIHJvb3QKICAgID4+PiBjb250ZXh0LnJvb3QudGFnCiAgICAncm9vdCcKCiAgICA+Pj4gY29udGV4dCA9IGl0ZXJwYXJzZShTSU1QTEVfTlNfWE1MRklMRSkKICAgID4+PiBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHQ6CiAgICAuLi4gICBwcmludCBhY3Rpb24sIGVsZW0udGFnCiAgICBlbmQge25hbWVzcGFjZX1lbGVtZW50CiAgICBlbmQge25hbWVzcGFjZX1lbGVtZW50CiAgICBlbmQge25hbWVzcGFjZX1lbXB0eS1lbGVtZW50CiAgICBlbmQge25hbWVzcGFjZX1yb290CgogICAgPj4+IGV2ZW50cyA9ICgpCiAgICA+Pj4gY29udGV4dCA9IGl0ZXJwYXJzZShTSU1QTEVfWE1MRklMRSwgZXZlbnRzKQogICAgPj4+IGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dDoKICAgIC4uLiAgIHByaW50IGFjdGlvbiwgZWxlbS50YWcKCiAgICA+Pj4gZXZlbnRzID0gKCkKICAgID4+PiBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFLCBldmVudHM9ZXZlbnRzKQogICAgPj4+IGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dDoKICAgIC4uLiAgIHByaW50IGFjdGlvbiwgZWxlbS50YWcKCiAgICA+Pj4gZXZlbnRzID0gKCJzdGFydCIsICJlbmQiKQogICAgPj4+IGNvbnRleHQgPSBpdGVycGFyc2UoU0lNUExFX1hNTEZJTEUsIGV2ZW50cykKICAgID4+PiBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHQ6CiAgICAuLi4gICBwcmludCBhY3Rpb24sIGVsZW0udGFnCiAgICBzdGFydCByb290CiAgICBzdGFydCBlbGVtZW50CiAgICBlbmQgZWxlbWVudAogICAgc3RhcnQgZWxlbWVudAogICAgZW5kIGVsZW1lbnQKICAgIHN0YXJ0IGVtcHR5LWVsZW1lbnQKICAgIGVuZCBlbXB0eS1lbGVtZW50CiAgICBlbmQgcm9vdAoKICAgID4+PiBldmVudHMgPSAoInN0YXJ0IiwgImVuZCIsICJzdGFydC1ucyIsICJlbmQtbnMiKQogICAgPj4+IGNvbnRleHQgPSBpdGVycGFyc2UoU0lNUExFX05TX1hNTEZJTEUsIGV2ZW50cykKICAgID4+PiBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHQ6CiAgICAuLi4gICBpZiBhY3Rpb24gaW4gKCJzdGFydCIsICJlbmQiKToKICAgIC4uLiAgICAgcHJpbnQgYWN0aW9uLCBlbGVtLnRhZwogICAgLi4uICAgZWxzZToKICAgIC4uLiAgICAgcHJpbnQgYWN0aW9uLCBlbGVtCiAgICBzdGFydC1ucyAoJycsICduYW1lc3BhY2UnKQogICAgc3RhcnQge25hbWVzcGFjZX1yb290CiAgICBzdGFydCB7bmFtZXNwYWNlfWVsZW1lbnQKICAgIGVuZCB7bmFtZXNwYWNlfWVsZW1lbnQKICAgIHN0YXJ0IHtuYW1lc3BhY2V9ZWxlbWVudAogICAgZW5kIHtuYW1lc3BhY2V9ZWxlbWVudAogICAgc3RhcnQge25hbWVzcGFjZX1lbXB0eS1lbGVtZW50CiAgICBlbmQge25hbWVzcGFjZX1lbXB0eS1lbGVtZW50CiAgICBlbmQge25hbWVzcGFjZX1yb290CiAgICBlbmQtbnMgTm9uZQoKICAgID4+PiBldmVudHMgPSAoInN0YXJ0IiwgImVuZCIsICJib2d1cyIpCiAgICA+Pj4gd2l0aCBvcGVuKFNJTVBMRV9YTUxGSUxFLCAicmIiKSBhcyBmOgogICAgLi4uICAgICBpdGVycGFyc2UoZiwgZXZlbnRzKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgVmFsdWVFcnJvcjogdW5rbm93biBldmVudCAnYm9ndXMnCgogICAgPj4+IGltcG9ydCBTdHJpbmdJTwoKICAgID4+PiBzb3VyY2UgPSBTdHJpbmdJTy5TdHJpbmdJTygKICAgIC4uLiAgICAgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz5cbiIKICAgIC4uLiAgICAgIjxib2R5IHhtbG5zPSdodHRwOi8vJiMyMzM7ZmZib3Qub3JnL25zJ1xuIgogICAgLi4uICAgICAiICAgICAgeG1sbnM6Y2xceGU5PSdodHRwOi8vZWZmYm90Lm9yZy9ucyc+dGV4dDwvYm9keT5cbiIpCiAgICA+Pj4gZXZlbnRzID0gKCJzdGFydC1ucyIsKQogICAgPj4+IGNvbnRleHQgPSBpdGVycGFyc2Uoc291cmNlLCBldmVudHMpCiAgICA+Pj4gZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0OgogICAgLi4uICAgICBwcmludCBhY3Rpb24sIGVsZW0KICAgIHN0YXJ0LW5zICgnJywgdSdodHRwOi8vXHhlOWZmYm90Lm9yZy9ucycpCiAgICBzdGFydC1ucyAodSdjbFx4ZTknLCAnaHR0cDovL2VmZmJvdC5vcmcvbnMnKQoKICAgID4+PiBzb3VyY2UgPSBTdHJpbmdJTy5TdHJpbmdJTygiPGRvY3VtZW50IC8+anVuayIpCiAgICA+Pj4gdHJ5OgogICAgLi4uICAgZm9yIGFjdGlvbiwgZWxlbSBpbiBpdGVycGFyc2Uoc291cmNlKToKICAgIC4uLiAgICAgcHJpbnQgYWN0aW9uLCBlbGVtLnRhZwogICAgLi4uIGV4Y2VwdCBFVC5QYXJzZUVycm9yLCB2OgogICAgLi4uICAgcHJpbnQgdgogICAgZW5kIGRvY3VtZW50CiAgICBqdW5rIGFmdGVyIGRvY3VtZW50IGVsZW1lbnQ6IGxpbmUgMSwgY29sdW1uIDEyCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQJAAAAaXRlcnBhcnNliQIAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHNSAgAACiAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCiAgICA+Pj4gZWxlbS50ZXh0ID0gInRleHQiCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCiAgICAnPHRhZz50ZXh0PC90YWc+JwogICAgPj4+IEVULlN1YkVsZW1lbnQoZWxlbSwgInN1YnRhZyIpLnRleHQgPSAic3VidGV4dCIKICAgID4+PiBzZXJpYWxpemUoZWxlbSkKICAgICc8dGFnPnRleHQ8c3VidGFnPnN1YnRleHQ8L3N1YnRhZz48L3RhZz4nCgogICAgVGVzdCB0YWcgc3VwcHJlc3Npb24KICAgID4+PiBlbGVtLnRhZyA9IE5vbmUKICAgID4+PiBzZXJpYWxpemUoZWxlbSkKICAgICd0ZXh0PHN1YnRhZz5zdWJ0ZXh0PC9zdWJ0YWc+JwogICAgPj4+IGVsZW0uaW5zZXJ0KDAsIEVULkNvbW1lbnQoImNvbW1lbnQiKSkKICAgID4+PiBzZXJpYWxpemUoZWxlbSkgICAgICMgYXNzdW1lcyAxLjMKICAgICd0ZXh0PCEtLWNvbW1lbnQtLT48c3VidGFnPnN1YnRleHQ8L3N1YnRhZz4nCiAgICA+Pj4gZWxlbVswXSA9IEVULlBJKCJrZXkiLCAidmFsdWUiKQogICAgPj4+IHNlcmlhbGl6ZShlbGVtKQogICAgJ3RleHQ8P2tleSB2YWx1ZT8+PHN1YnRhZz5zdWJ0ZXh0PC9zdWJ0YWc+JwogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0CQAAAHdyaXRlZmlsZekCAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzewUAAAogICAgVGVzdCBwYXJzZXIgdy4gY3VzdG9tIGJ1aWxkZXIuCgogICAgPj4+IHdpdGggb3BlbihTSU1QTEVfWE1MRklMRSkgYXMgZjoKICAgIC4uLiAgICAgZGF0YSA9IGYucmVhZCgpCiAgICA+Pj4gY2xhc3MgQnVpbGRlcjoKICAgIC4uLiAgICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cmliKToKICAgIC4uLiAgICAgICAgIHByaW50ICJzdGFydCIsIHRhZwogICAgLi4uICAgICBkZWYgZW5kKHNlbGYsIHRhZyk6CiAgICAuLi4gICAgICAgICBwcmludCAiZW5kIiwgdGFnCiAgICAuLi4gICAgIGRlZiBkYXRhKHNlbGYsIHRleHQpOgogICAgLi4uICAgICAgICAgcGFzcwogICAgPj4+IGJ1aWxkZXIgPSBCdWlsZGVyKCkKICAgID4+PiBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PWJ1aWxkZXIpCiAgICA+Pj4gcGFyc2VyLmZlZWQoZGF0YSkKICAgIHN0YXJ0IHJvb3QKICAgIHN0YXJ0IGVsZW1lbnQKICAgIGVuZCBlbGVtZW50CiAgICBzdGFydCBlbGVtZW50CiAgICBlbmQgZWxlbWVudAogICAgc3RhcnQgZW1wdHktZWxlbWVudAogICAgZW5kIGVtcHR5LWVsZW1lbnQKICAgIGVuZCByb290CgogICAgPj4+IHdpdGggb3BlbihTSU1QTEVfTlNfWE1MRklMRSkgYXMgZjoKICAgIC4uLiAgICAgZGF0YSA9IGYucmVhZCgpCiAgICA+Pj4gY2xhc3MgQnVpbGRlcjoKICAgIC4uLiAgICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cmliKToKICAgIC4uLiAgICAgICAgIHByaW50ICJzdGFydCIsIHRhZwogICAgLi4uICAgICBkZWYgZW5kKHNlbGYsIHRhZyk6CiAgICAuLi4gICAgICAgICBwcmludCAiZW5kIiwgdGFnCiAgICAuLi4gICAgIGRlZiBkYXRhKHNlbGYsIHRleHQpOgogICAgLi4uICAgICAgICAgcGFzcwogICAgLi4uICAgICBkZWYgcGkoc2VsZiwgdGFyZ2V0LCBkYXRhKToKICAgIC4uLiAgICAgICAgIHByaW50ICJwaSIsIHRhcmdldCwgcmVwcihkYXRhKQogICAgLi4uICAgICBkZWYgY29tbWVudChzZWxmLCBkYXRhKToKICAgIC4uLiAgICAgICAgIHByaW50ICJjb21tZW50IiwgcmVwcihkYXRhKQogICAgPj4+IGJ1aWxkZXIgPSBCdWlsZGVyKCkKICAgID4+PiBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PWJ1aWxkZXIpCiAgICA+Pj4gcGFyc2VyLmZlZWQoZGF0YSkKICAgIHBpIHBpICdkYXRhJwogICAgY29tbWVudCAnIGNvbW1lbnQgJwogICAgc3RhcnQge25hbWVzcGFjZX1yb290CiAgICBzdGFydCB7bmFtZXNwYWNlfWVsZW1lbnQKICAgIGVuZCB7bmFtZXNwYWNlfWVsZW1lbnQKICAgIHN0YXJ0IHtuYW1lc3BhY2V9ZWxlbWVudAogICAgZW5kIHtuYW1lc3BhY2V9ZWxlbWVudAogICAgc3RhcnQge25hbWVzcGFjZX1lbXB0eS1lbGVtZW50CiAgICBlbmQge25hbWVzcGFjZX1lbXB0eS1lbGVtZW50CiAgICBlbmQge25hbWVzcGFjZX1yb290CgogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0DgAAAGN1c3RvbV9idWlsZGVy/wIAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHO/AwAACiAgICBUZXN0IEVsZW1lbnQuZ2V0Y2hpbGRyZW4oKQoKICAgID4+PiB3aXRoIG9wZW4oU0lNUExFX1hNTEZJTEUsICJyIikgYXMgZjoKICAgIC4uLiAgICAgdHJlZSA9IEVULnBhcnNlKGYpCiAgICA+Pj4gZm9yIGVsZW0gaW4gdHJlZS5nZXRyb290KCkuaXRlcigpOgogICAgLi4uICAgICBzdW1tYXJpemVfbGlzdChlbGVtLmdldGNoaWxkcmVuKCkpCiAgICBbJ2VsZW1lbnQnLCAnZWxlbWVudCcsICdlbXB0eS1lbGVtZW50J10KICAgIFtdCiAgICBbXQogICAgW10KICAgID4+PiBmb3IgZWxlbSBpbiB0cmVlLmdldGl0ZXJhdG9yKCk6CiAgICAuLi4gICAgIHN1bW1hcml6ZV9saXN0KGVsZW0uZ2V0Y2hpbGRyZW4oKSkKICAgIFsnZWxlbWVudCcsICdlbGVtZW50JywgJ2VtcHR5LWVsZW1lbnQnXQogICAgW10KICAgIFtdCiAgICBbXQoKICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCiAgICA+Pj4gbGVuKGVsZW0uZ2V0Y2hpbGRyZW4oKSkKICAgIDMKICAgID4+PiBsZW4oZWxlbVsyXS5nZXRjaGlsZHJlbigpKQogICAgMQogICAgPj4+IGVsZW1bOl0gPT0gZWxlbS5nZXRjaGlsZHJlbigpCiAgICBUcnVlCiAgICA+Pj4gY2hpbGQxID0gZWxlbVswXQogICAgPj4+IGNoaWxkMiA9IGVsZW1bMl0KICAgID4+PiBkZWwgZWxlbVsxOjJdCiAgICA+Pj4gbGVuKGVsZW0uZ2V0Y2hpbGRyZW4oKSkKICAgIDIKICAgID4+PiBjaGlsZDEgPT0gZWxlbVswXQogICAgVHJ1ZQogICAgPj4+IGNoaWxkMiA9PSBlbGVtWzFdCiAgICBUcnVlCiAgICA+Pj4gZWxlbVswOjJdID0gW2NoaWxkMiwgY2hpbGQxXQogICAgPj4+IGNoaWxkMiA9PSBlbGVtWzBdCiAgICBUcnVlCiAgICA+Pj4gY2hpbGQxID09IGVsZW1bMV0KICAgIFRydWUKICAgID4+PiBjaGlsZDEgPT0gZWxlbVswXQogICAgRmFsc2UKICAgID4+PiBlbGVtLmNsZWFyKCkKICAgID4+PiBlbGVtLmdldGNoaWxkcmVuKCkKICAgIFtdCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQLAAAAZ2V0Y2hpbGRyZW41AwAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc/oAAAAKICAgID4+PiBlbGVtID0gRVQuWE1MKCI8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4iKQogICAgPj4+IEVULnRvc3RyaW5nKGVsZW0pCiAgICAnPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+JwogICAgPj4+IGVsZW0gPSBFVC5mcm9tc3RyaW5nKCI8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4iKQogICAgPj4+IEVULnRvc3RyaW5nKGVsZW0pCiAgICAnPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+JwogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0CwAAAHdyaXRlc3RyaW5nZAMAAHMAAAAAYwEAAAABAAAAAwAAAEMAAABzFQAAAHQAAGoBAGQBAHwAABaDAQABZAIAUygDAAAAc84BAAAKICAgID4+PiBjaGVja19lbmNvZGluZygiYXNjaWkiKQogICAgPj4+IGNoZWNrX2VuY29kaW5nKCJ1cy1hc2NpaSIpCiAgICA+Pj4gY2hlY2tfZW5jb2RpbmcoImlzby04ODU5LTEiKQogICAgPj4+IGNoZWNrX2VuY29kaW5nKCJpc28tODg1OS0xNSIpCiAgICA+Pj4gY2hlY2tfZW5jb2RpbmcoImNwNDM3IikKICAgID4+PiBjaGVja19lbmNvZGluZygibWFjLXJvbWFuIikKICAgID4+PiBjaGVja19lbmNvZGluZygiZ2JrIikKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIFZhbHVlRXJyb3I6IG11bHRpLWJ5dGUgZW5jb2RpbmdzIGFyZSBub3Qgc3VwcG9ydGVkCiAgICA+Pj4gY2hlY2tfZW5jb2RpbmcoImNwMDM3IikKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIFBhcnNlRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6IGxpbmUgMSwgY29sdW1uIDMwCiAgICBzKgAAADw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+PHhtbCAvPk4oAgAAAFILAAAAdAMAAABYTUwoAQAAAHQIAAAAZW5jb2RpbmcoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0DgAAAGNoZWNrX2VuY29kaW5nbgMAAHMCAAAAAA9jAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc04IAAAKICAgIFRlc3QgZW5jb2RpbmcgaXNzdWVzLgoKICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKICAgID4+PiBlbGVtLnRleHQgPSB1ImFiYyIKICAgID4+PiBzZXJpYWxpemUoZWxlbSkKICAgICc8dGFnPmFiYzwvdGFnPicKICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKICAgICc8dGFnPmFiYzwvdGFnPicKICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikKICAgICc8dGFnPmFiYzwvdGFnPicKICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQogICAgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz5cbjx0YWc+YWJjPC90YWc+IgoKICAgID4+PiBlbGVtLnRleHQgPSAiPCZcIlwnPiIKICAgID4+PiBzZXJpYWxpemUoZWxlbSkKICAgICc8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCiAgICAnPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwogICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSAjIGNkYXRhIGNoYXJhY3RlcnMKICAgICc8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKICAgICc8P3htbCB2ZXJzaW9uPVwnMS4wXCcgZW5jb2Rpbmc9XCdpc28tODg1OS0xXCc/PlxuPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwoKICAgID4+PiBlbGVtLmF0dHJpYlsia2V5Il0gPSAiPCZcIlwnPiIKICAgID4+PiBlbGVtLnRleHQgPSBOb25lCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCiAgICAnPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCiAgICAnPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCiAgICAnPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKICAgICc8P3htbCB2ZXJzaW9uPVwnMS4wXCcgZW5jb2Rpbmc9XCdpc28tODg1OS0xXCc/PlxuPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCgogICAgPj4+IGVsZW0udGV4dCA9IHUnXHhlNVx4ZjZceGY2PD4nCiAgICA+Pj4gZWxlbS5hdHRyaWIuY2xlYXIoKQogICAgPj4+IHNlcmlhbGl6ZShlbGVtKQogICAgJzx0YWc+JiMyMjk7JiMyNDY7JiMyNDY7Jmx0OyZndDs8L3RhZz4nCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCiAgICAnPHRhZz5ceGMzXHhhNVx4YzNceGI2XHhjM1x4YjYmbHQ7Jmd0OzwvdGFnPicKICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikKICAgICc8dGFnPiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7PC90YWc+JwogICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCiAgICAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/PlxuPHRhZz5ceGU1XHhmNlx4ZjYmbHQ7Jmd0OzwvdGFnPiIKCiAgICA+Pj4gZWxlbS5hdHRyaWJbImtleSJdID0gdSdceGU1XHhmNlx4ZjY8PicKICAgID4+PiBlbGVtLnRleHQgPSBOb25lCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCiAgICAnPHRhZyBrZXk9IiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7IiAvPicKICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKICAgICc8dGFnIGtleT0iXHhjM1x4YTVceGMzXHhiNlx4YzNceGI2Jmx0OyZndDsiIC8+JwogICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKQogICAgJzx0YWcga2V5PSImIzIyOTsmIzI0NjsmIzI0NjsmbHQ7Jmd0OyIgLz4nCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKICAgICc8P3htbCB2ZXJzaW9uPVwnMS4wXCcgZW5jb2Rpbmc9XCdpc28tODg1OS0xXCc/PlxuPHRhZyBrZXk9Ilx4ZTVceGY2XHhmNiZsdDsmZ3Q7IiAvPicKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5UkQAAAB/AwAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAcwcCAAAKICAgIFRlc3Qgc2VyaWFsaXphdGlvbiBtZXRob2RzLgoKICAgID4+PiBlID0gRVQuWE1MKCI8aHRtbD48bGluay8+PHNjcmlwdD4xICZsdDsgMjwvc2NyaXB0PjwvaHRtbD4iKQogICAgPj4+IGUudGFpbCA9ICJcbiIKICAgID4+PiBzZXJpYWxpemUoZSkKICAgICc8aHRtbD48bGluayAvPjxzY3JpcHQ+MSAmbHQ7IDI8L3NjcmlwdD48L2h0bWw+XG4nCiAgICA+Pj4gc2VyaWFsaXplKGUsIG1ldGhvZD1Ob25lKQogICAgJzxodG1sPjxsaW5rIC8+PHNjcmlwdD4xICZsdDsgMjwvc2NyaXB0PjwvaHRtbD5cbicKICAgID4+PiBzZXJpYWxpemUoZSwgbWV0aG9kPSJ4bWwiKQogICAgJzxodG1sPjxsaW5rIC8+PHNjcmlwdD4xICZsdDsgMjwvc2NyaXB0PjwvaHRtbD5cbicKICAgID4+PiBzZXJpYWxpemUoZSwgbWV0aG9kPSJodG1sIikKICAgICc8aHRtbD48bGluaz48c2NyaXB0PjEgPCAyPC9zY3JpcHQ+PC9odG1sPlxuJwogICAgPj4+IHNlcmlhbGl6ZShlLCBtZXRob2Q9InRleHQiKQogICAgJzEgPCAyXG4nCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQHAAAAbWV0aG9kc7oDAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzLwMAAAogICAgVGVzdCBpdGVyYXRvcnMuCgogICAgPj4+IGUgPSBFVC5YTUwoIjxodG1sPjxib2R5PnRoaXMgaXMgYSA8aT5wYXJhZ3JhcGg8L2k+LjwvYm9keT4uLjwvaHRtbD4iKQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGUuaXRlcigpKQogICAgWydodG1sJywgJ2JvZHknLCAnaSddCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZS5maW5kKCJib2R5IikuaXRlcigpKQogICAgWydib2R5JywgJ2knXQogICAgPj4+IHN1bW1hcml6ZShuZXh0KGUuaXRlcigpKSkKICAgICdodG1sJwogICAgPj4+ICIiLmpvaW4oZS5pdGVydGV4dCgpKQogICAgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguLi4nCiAgICA+Pj4gIiIuam9pbihlLmZpbmQoImJvZHkiKS5pdGVydGV4dCgpKQogICAgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguJwogICAgPj4+IG5leHQoZS5pdGVydGV4dCgpKQogICAgJ3RoaXMgaXMgYSAnCgogICAgTWV0aG9kIGl0ZXJwYXJzZSBzaG91bGQgcmV0dXJuIGFuIGl0ZXJhdG9yLiBTZWUgYnVnIDY0NzIuCgogICAgPj4+IHNvdXJjZWZpbGUgPSBzZXJpYWxpemUoZSwgdG9fc3RyaW5nPUZhbHNlKQogICAgPj4+IG5leHQoRVQuaXRlcnBhcnNlKHNvdXJjZWZpbGUpKSAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKICAgICgnZW5kJywgPEVsZW1lbnQgJ2knIGF0IDB4Li4uPikKCiAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnRUcmVlKE5vbmUpCiAgICA+Pj4gdHJlZS5pdGVyKCkKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIEF0dHJpYnV0ZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdpdGVyJwogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0CQAAAGl0ZXJhdG9yc8wDAABzAAAAAHN5AAAAPCFET0NUWVBFIHBvaW50cyBbCjwhRU5USVRZICUgdXNlci1lbnRpdGllcyBTWVNURU0gJ3VzZXItZW50aXRpZXMueG1sJz4KJXVzZXItZW50aXRpZXM7Cl0+Cjxkb2N1bWVudD4mZW50aXR5OzwvZG9jdW1lbnQ+CmMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABztAIAAAogICAgVGVzdCBlbnRpdHkgaGFuZGxpbmcuCgogICAgMSkgZ29vZCBlbnRpdGllcwoKICAgID4+PiBlID0gRVQuWE1MKCI8ZG9jdW1lbnQgdGl0bGU9JyYjeDgyMzA7Jz50ZXN0PC9kb2N1bWVudD4iKQogICAgPj4+IHNlcmlhbGl6ZShlKQogICAgJzxkb2N1bWVudCB0aXRsZT0iJiMzMzMyODsiPnRlc3Q8L2RvY3VtZW50PicKCiAgICAyKSBiYWQgZW50aXRpZXMKCiAgICA+Pj4gRVQuWE1MKCI8ZG9jdW1lbnQ+JmVudGl0eTs8L2RvY3VtZW50PiIpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICBQYXJzZUVycm9yOiB1bmRlZmluZWQgZW50aXR5OiBsaW5lIDEsIGNvbHVtbiAxMAoKICAgID4+PiBFVC5YTUwoRU5USVRZX1hNTCkKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIFBhcnNlRXJyb3I6IHVuZGVmaW5lZCBlbnRpdHkgJmVudGl0eTs6IGxpbmUgNSwgY29sdW1uIDEwCgogICAgMykgY3VzdG9tIGVudGl0eQoKICAgID4+PiBwYXJzZXIgPSBFVC5YTUxQYXJzZXIoKQogICAgPj4+IHBhcnNlci5lbnRpdHlbImVudGl0eSJdID0gInRleHQiCiAgICA+Pj4gcGFyc2VyLmZlZWQoRU5USVRZX1hNTCkKICAgID4+PiByb290ID0gcGFyc2VyLmNsb3NlKCkKICAgID4+PiBzZXJpYWxpemUocm9vdCkKICAgICc8ZG9jdW1lbnQ+dGV4dDwvZG9jdW1lbnQ+JwogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0BgAAAGVudGl0efIDAABzAAAAAGMBAAAAAQAAAAUAAABDAAAAczAAAAB5EQB0AABqAQB8AACDAQABV24YAAR0AABqAgBrCgByKwABAQF0AwBqBABTWGQBAFMoAgAAAHPlAAAACgogICAgVGVzdCBlcnJvciBoYW5kbGluZy4KCiAgICA+Pj4gaXNzdWJjbGFzcyhFVC5QYXJzZUVycm9yLCBTeW50YXhFcnJvcikKICAgIFRydWUKICAgID4+PiBlcnJvcigiZm9vIikucG9zaXRpb24KICAgICgxLCAwKQogICAgPj4+IGVycm9yKCI8dGFnPiZmb287PC90YWc+IikucG9zaXRpb24KICAgICgxLCA1KQogICAgPj4+IGVycm9yKCJmb29iYXI8IikucG9zaXRpb24KICAgICgxLCA2KQoKICAgIE4oBQAAAFILAAAAUkMAAAB0CgAAAFBhcnNlRXJyb3J0AwAAAHN5c3QJAAAAZXhjX3ZhbHVlKAEAAAB0AwAAAHhtbCgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQFAAAAZXJyb3IQBAAAcwgAAAAADwMBEQEQAWMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzIAQAAAogICAgVGVzdCBuYW1lc3BhY2UgaXNzdWVzLgoKICAgIDEpIHhtbCBuYW1lc3BhY2UKCiAgICA+Pj4gZWxlbSA9IEVULlhNTCgiPHRhZyB4bWw6bGFuZz0nZW4nIC8+IikKICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAxLjEKICAgICc8dGFnIHhtbDpsYW5nPSJlbiIgLz4nCgogICAgMikgb3RoZXIgIndlbGwta25vd24iIG5hbWVzcGFjZXMKCiAgICA+Pj4gZWxlbSA9IEVULlhNTCgiPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjJyAvPiIpCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMi4xCiAgICAnPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiAvPicKCiAgICA+Pj4gZWxlbSA9IEVULlhNTCgiPGh0bWw6aHRtbCB4bWxuczpodG1sPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyAvPiIpCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMi4yCiAgICAnPGh0bWw6aHRtbCB4bWxuczpodG1sPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiAvPicKCiAgICA+Pj4gZWxlbSA9IEVULlhNTCgiPHNvYXA6RW52ZWxvcGUgeG1sbnM6c29hcD0naHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZScgLz4iKQogICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDIuMwogICAgJzxuczA6RW52ZWxvcGUgeG1sbnM6bnMwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlIiAvPicKCiAgICAzKSB1bmtub3duIG5hbWVzcGFjZXMKICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUxfTlMpCiAgICA+Pj4gcHJpbnQgc2VyaWFsaXplKGVsZW0pCiAgICA8bnMwOmJvZHkgeG1sbnM6bnMwPSJodHRwOi8vZWZmYm90Lm9yZy9ucyI+CiAgICAgIDxuczA6dGFnPnRleHQ8L25zMDp0YWc+CiAgICAgIDxuczA6dGFnIC8+CiAgICAgIDxuczA6c2VjdGlvbj4KICAgICAgICA8bnMwOnRhZz5zdWJ0ZXh0PC9uczA6dGFnPgogICAgICA8L25zMDpzZWN0aW9uPgogICAgPC9uczA6Ym9keT4KICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dAkAAABuYW1lc3BhY2UkBAAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAczEIAAAKICAgIFRlc3QgUU5hbWUgaGFuZGxpbmcuCgogICAgMSkgZGVjb3JhdGVkIHRhZ3MKCiAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoInt1cml9dGFnIikKICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAxLjEKICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgLz4nCiAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoRVQuUU5hbWUoInt1cml9dGFnIikpCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMS4yCiAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIC8+JwogICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KEVULlFOYW1lKCJ1cmkiLCAidGFnIikpCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMS4zCiAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIC8+JwogICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KEVULlFOYW1lKCJ1cmkiLCAidGFnIikpCiAgICA+Pj4gc3ViZWxlbSA9IEVULlN1YkVsZW1lbnQoZWxlbSwgRVQuUU5hbWUoInVyaSIsICJ0YWcxIikpCiAgICA+Pj4gc3ViZWxlbSA9IEVULlN1YkVsZW1lbnQoZWxlbSwgRVQuUU5hbWUoInVyaSIsICJ0YWcyIikpCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMS40CiAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiPjxuczA6dGFnMSAvPjxuczA6dGFnMiAvPjwvbnMwOnRhZz4nCgogICAgMikgZGVjb3JhdGVkIGF0dHJpYnV0ZXMKCiAgICA+Pj4gZWxlbS5jbGVhcigpCiAgICA+Pj4gZWxlbS5hdHRyaWJbInt1cml9a2V5Il0gPSAidmFsdWUiCiAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMi4xCiAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIG5zMDprZXk9InZhbHVlIiAvPicKCiAgICA+Pj4gZWxlbS5jbGVhcigpCiAgICA+Pj4gZWxlbS5hdHRyaWJbRVQuUU5hbWUoInt1cml9a2V5IildID0gInZhbHVlIgogICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDIuMgogICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiBuczA6a2V5PSJ2YWx1ZSIgLz4nCgogICAgMykgZGVjb3JhdGVkIHZhbHVlcyBhcmUgbm90IGNvbnZlcnRlZCBieSBkZWZhdWx0LCBidXQgdGhlCiAgICAgICBRTmFtZSB3cmFwcGVyIGNhbiBiZSB1c2VkIGZvciB2YWx1ZXMKCiAgICA+Pj4gZWxlbS5jbGVhcigpCiAgICA+Pj4gZWxlbS5hdHRyaWJbInt1cml9a2V5Il0gPSAie3VyaX12YWx1ZSIKICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAzLjEKICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgbnMwOmtleT0ie3VyaX12YWx1ZSIgLz4nCgogICAgPj4+IGVsZW0uY2xlYXIoKQogICAgPj4+IGVsZW0uYXR0cmliWyJ7dXJpfWtleSJdID0gRVQuUU5hbWUoInt1cml9dmFsdWUiKQogICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDMuMgogICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiBuczA6a2V5PSJuczA6dmFsdWUiIC8+JwoKICAgID4+PiBlbGVtLmNsZWFyKCkKICAgID4+PiBzdWJlbGVtID0gRVQuRWxlbWVudCgidGFnIikKICAgID4+PiBzdWJlbGVtLmF0dHJpYlsie3VyaTF9a2V5Il0gPSBFVC5RTmFtZSgie3VyaTJ9dmFsdWUiKQogICAgPj4+IGVsZW0uYXBwZW5kKHN1YmVsZW0pCiAgICA+Pj4gZWxlbS5hcHBlbmQoc3ViZWxlbSkKICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAzLjMKICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgeG1sbnM6bnMxPSJ1cmkxIiB4bWxuczpuczI9InVyaTIiPjx0YWcgbnMxOmtleT0ibnMyOnZhbHVlIiAvPjx0YWcgbnMxOmtleT0ibnMyOnZhbHVlIiAvPjwvbnMwOnRhZz4nCgogICAgNCkgRGlyZWN0IFFOYW1lIHRlc3RzCgogICAgPj4+IHN0cihFVC5RTmFtZSgnbnMnLCAndGFnJykpCiAgICAne25zfXRhZycKICAgID4+PiBzdHIoRVQuUU5hbWUoJ3tuc310YWcnKSkKICAgICd7bnN9dGFnJwogICAgPj4+IHExID0gRVQuUU5hbWUoJ25zJywgJ3RhZycpCiAgICA+Pj4gcTIgPSBFVC5RTmFtZSgnbnMnLCAndGFnJykKICAgID4+PiBxMSA9PSBxMgogICAgVHJ1ZQogICAgPj4+IHEyID0gRVQuUU5hbWUoJ25zJywgJ290aGVyLXRhZycpCiAgICA+Pj4gcTEgPT0gcTIKICAgIEZhbHNlCiAgICA+Pj4gcTEgPT0gJ25zOnRhZycKICAgIEZhbHNlCiAgICA+Pj4gcTEgPT0gJ3tuc310YWcnCiAgICBUcnVlCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQFAAAAcW5hbWVIBAAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc+sAAAAKICAgIFRlc3QgUFVCTElDIGRvY3R5cGUuCgogICAgPj4+IGVsZW0gPSBFVC5YTUwoJzwhRE9DVFlQRSBodG1sIFBVQkxJQycKICAgIC4uLiAgICcgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIicKICAgIC4uLiAgICcgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPicKICAgIC4uLiAgICc8aHRtbD50ZXh0PC9odG1sPicpCgogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0DgAAAGRvY3R5cGVfcHVibGljkQQAAHMAAAAAYwEAAAAFAAAABAAAAEMAAABzTQAAAGQBAGQCAGwAAG0BAH0BAAFnAAB9AgB4MAB8AQBqAgB8AACDAQBEXR8AXAIAfQMAfQQAfAIAagMAfAMAcEEAfAQAgwEAAXEmAFd8AgBTKAMAAABztQUAAAogICAgVGVzdCB0aGUgWFBhdGggdG9rZW5pemVyLgoKICAgID4+PiAjIHRlc3RzIGZyb20gdGhlIHhtbCBzcGVjaWZpY2F0aW9uCiAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIqIikKICAgIFsnKiddCiAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCJ0ZXh0KCkiKQogICAgWyd0ZXh0JywgJygpJ10KICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIkBuYW1lIikKICAgIFsnQCcsICduYW1lJ10KICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIkAqIikKICAgIFsnQCcsICcqJ10KICAgID4+PiB4cGF0aF90b2tlbml6ZXIoInBhcmFbMV0iKQogICAgWydwYXJhJywgJ1snLCAnMScsICddJ10KICAgID4+PiB4cGF0aF90b2tlbml6ZXIoInBhcmFbbGFzdCgpXSIpCiAgICBbJ3BhcmEnLCAnWycsICdsYXN0JywgJygpJywgJ10nXQogICAgPj4+IHhwYXRoX3Rva2VuaXplcigiKi9wYXJhIikKICAgIFsnKicsICcvJywgJ3BhcmEnXQogICAgPj4+IHhwYXRoX3Rva2VuaXplcigiL2RvYy9jaGFwdGVyWzVdL3NlY3Rpb25bMl0iKQogICAgWycvJywgJ2RvYycsICcvJywgJ2NoYXB0ZXInLCAnWycsICc1JywgJ10nLCAnLycsICdzZWN0aW9uJywgJ1snLCAnMicsICddJ10KICAgID4+PiB4cGF0aF90b2tlbml6ZXIoImNoYXB0ZXIvL3BhcmEiKQogICAgWydjaGFwdGVyJywgJy8vJywgJ3BhcmEnXQogICAgPj4+IHhwYXRoX3Rva2VuaXplcigiLy9wYXJhIikKICAgIFsnLy8nLCAncGFyYSddCiAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIvL29saXN0L2l0ZW0iKQogICAgWycvLycsICdvbGlzdCcsICcvJywgJ2l0ZW0nXQogICAgPj4+IHhwYXRoX3Rva2VuaXplcigiLiIpCiAgICBbJy4nXQogICAgPj4+IHhwYXRoX3Rva2VuaXplcigiLi8vcGFyYSIpCiAgICBbJy4nLCAnLy8nLCAncGFyYSddCiAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIuLiIpCiAgICBbJy4uJ10KICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIi4uL0BsYW5nIikKICAgIFsnLi4nLCAnLycsICdAJywgJ2xhbmcnXQogICAgPj4+IHhwYXRoX3Rva2VuaXplcigiY2hhcHRlclt0aXRsZV0iKQogICAgWydjaGFwdGVyJywgJ1snLCAndGl0bGUnLCAnXSddCiAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCJlbXBsb3llZVtAc2VjcmV0YXJ5IGFuZCBAYXNzaXN0YW50XSIpCiAgICBbJ2VtcGxveWVlJywgJ1snLCAnQCcsICdzZWNyZXRhcnknLCAnJywgJ2FuZCcsICcnLCAnQCcsICdhc3Npc3RhbnQnLCAnXSddCgogICAgPj4+ICMgYWRkaXRpb25hbCB0ZXN0cwogICAgPj4+IHhwYXRoX3Rva2VuaXplcigie2h0dHA6Ly9zcGFtfWVnZyIpCiAgICBbJ3todHRwOi8vc3BhbX1lZ2cnXQogICAgPj4+IHhwYXRoX3Rva2VuaXplcigiLi9zcGFtLmVnZyIpCiAgICBbJy4nLCAnLycsICdzcGFtLmVnZyddCiAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIuLy97aHR0cDovL3NwYW19ZWdnIikKICAgIFsnLicsICcvLycsICd7aHR0cDovL3NwYW19ZWdnJ10KICAgIGn/////KAEAAAB0CwAAAEVsZW1lbnRQYXRoKAQAAAB0CQAAAHhtbC5ldHJlZVJRAAAAdA8AAAB4cGF0aF90b2tlbml6ZXJ0BgAAAGFwcGVuZCgFAAAAdAEAAABwUlEAAAB0AwAAAG91dHQCAAAAb3BSFQAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weVJTAAAAnAQAAHMKAAAAADAQAQYBHAEXAWMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzvAEAAAogICAgVGVzdCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gZGlyZWN0bHkKCiAgICA+Pj4gRVQudG9zdHJpbmcoRVQuUHJvY2Vzc2luZ0luc3RydWN0aW9uKCd0ZXN0JywgJ2luc3RydWN0aW9uJykpCiAgICAnPD90ZXN0IGluc3RydWN0aW9uPz4nCiAgICA+Pj4gRVQudG9zdHJpbmcoRVQuUEkoJ3Rlc3QnLCAnaW5zdHJ1Y3Rpb24nKSkKICAgICc8P3Rlc3QgaW5zdHJ1Y3Rpb24/PicKCiAgICBJc3N1ZSAjMjc0NgoKICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICc8dGVzdGluZyY+JykpCiAgICAnPD90ZXN0IDx0ZXN0aW5nJj4/PicKICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsIHUnPHRlc3RpbmcmPuMnKSwgJ2xhdGluMScpCiAgICAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nbGF0aW4xJz8+XG48P3Rlc3QgPHRlc3RpbmcmPlx4ZTM/PiIKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dBUAAABwcm9jZXNzaW5naW5zdHJ1Y3Rpb27SBAAAcwAAAABztAAAADw/eG1sIHZlcnNpb249JzEuMCc/Pgo8ZG9jdW1lbnQgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWEluY2x1ZGUiPgogIDxwPjEyMCBNeiBpcyBhZGVxdWF0ZSBmb3IgYW4gYXZlcmFnZSBob21lIHVzZXIuPC9wPgogIDx4aTppbmNsdWRlIGhyZWY9ImRpc2NsYWltZXIueG1sIi8+CjwvZG9jdW1lbnQ+CnMGAAAAQzEueG1sc9AAAAA8P3htbCB2ZXJzaW9uPScxLjAnPz4KPGRpc2NsYWltZXI+CiAgPHA+VGhlIG9waW5pb25zIHJlcHJlc2VudGVkIGhlcmVpbiByZXByZXNlbnQgdGhvc2Ugb2YgdGhlIGluZGl2aWR1YWwKICBhbmQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyBvZmZpY2lhbCBwb2xpY3kgZW5kb3JzZWQgYnkgdGhpcwogIG9yZ2FuaXphdGlvbi48L3A+CjwvZGlzY2xhaW1lcj4Kcw4AAABkaXNjbGFpbWVyLnhtbHO2AAAAPD94bWwgdmVyc2lvbj0nMS4wJz8+Cjxkb2N1bWVudCB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YSW5jbHVkZSI+CiAgPHA+VGhpcyBkb2N1bWVudCBoYXMgYmVlbiBhY2Nlc3NlZAogIDx4aTppbmNsdWRlIGhyZWY9ImNvdW50LnR4dCIgcGFyc2U9InRleHQiLz4gdGltZXMuPC9wPgo8L2RvY3VtZW50PgpzBgAAAEMyLnhtbHQGAAAAMzI0Mzg3cwkAAABjb3VudC50eHRzvwAAADw/eG1sIHZlcnNpb249JzEuMCc/Pgo8ZG9jdW1lbnQgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWEluY2x1ZGUiPgogIDxwPlRoaXMgZG9jdW1lbnQgaGFzIGJlZW4gPGVtPmFjY2Vzc2VkPC9lbT4KICA8eGk6aW5jbHVkZSBocmVmPSJjb3VudC50eHQiIHBhcnNlPSJ0ZXh0Ii8+IHRpbWVzLjwvcD4KPC9kb2N1bWVudD4KcwcAAABDMmIueG1sc9kAAAA8P3htbCB2ZXJzaW9uPScxLjAnPz4KPGRvY3VtZW50IHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hJbmNsdWRlIj4KICA8cD5UaGUgZm9sbG93aW5nIGlzIHRoZSBzb3VyY2Ugb2YgdGhlICJkYXRhLnhtbCIgcmVzb3VyY2U6PC9wPgogIDxleGFtcGxlPjx4aTppbmNsdWRlIGhyZWY9ImRhdGEueG1sIiBwYXJzZT0idGV4dCIvPjwvZXhhbXBsZT4KPC9kb2N1bWVudD4KcwYAAABDMy54bWxzUQAAADw/eG1sIHZlcnNpb249JzEuMCc/Pgo8ZGF0YT4KICA8aXRlbT48IVtDREFUQVtCcm9va3MgJiBTaGllbGRzXV0+PC9pdGVtPgo8L2RhdGE+CnMIAAAAZGF0YS54bWxzVwEAADw/eG1sIHZlcnNpb249JzEuMCc/Pgo8ZGl2IHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hJbmNsdWRlIj4KICA8eGk6aW5jbHVkZSBocmVmPSJleGFtcGxlLnR4dCIgcGFyc2U9InRleHQiPgogICAgPHhpOmZhbGxiYWNrPgogICAgICA8eGk6aW5jbHVkZSBocmVmPSJmYWxsYmFjay1leGFtcGxlLnR4dCIgcGFyc2U9InRleHQiPgogICAgICAgIDx4aTpmYWxsYmFjaz48YSBocmVmPSJtYWlsdG86Ym9iQGV4YW1wbGUub3JnIj5SZXBvcnQgZXJyb3I8L2E+PC94aTpmYWxsYmFjaz4KICAgICAgPC94aTppbmNsdWRlPgogICAgPC94aTpmYWxsYmFjaz4KICA8L3hpOmluY2x1ZGU+CjwvZGl2PgpzBgAAAEM1LnhtbHOEAAAAPD94bWwgdmVyc2lvbj0nMS4wJz8+Cjxkb2N1bWVudCB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YSW5jbHVkZSI+CiAgPHA+RXhhbXBsZS48L3A+CiAgPHhpOmluY2x1ZGUgaHJlZj0ie30iLz4KPC9kb2N1bWVudD4KcwsAAABkZWZhdWx0LnhtbFJMAAAAYwMAAAAFAAAABQAAAEMAAABzWAAAAHkOAHQAAHwAABl9AwBXbh0ABHQBAGsKAHItAAEBAXQCAGQBAIMBAIIBAG4BAFh8AQBkAgBrAgByVABkAwBkBABsAwBtBAB9BAABfAQAfAMAgwEAU3wDAFMoBQAAAE5zEgAAAHJlc291cmNlIG5vdCBmb3VuZFJMAAAAaf////8oAQAAAFJDAAAAKAUAAAB0CAAAAFhJTkNMVURFdAgAAABLZXlFcnJvcnQHAAAASU9FcnJvcnQVAAAAeG1sLmV0cmVlLkVsZW1lbnRUcmVlUkMAAAAoBQAAAHQEAAAAaHJlZnQFAAAAcGFyc2VSRAAAAHQEAAAAZGF0YVJDAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dA8AAAB4aW5jbHVkZV9sb2FkZXIvBQAAcxAAAAAAAQMBDgENARABDAEQAQoBYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHOmBwAACiAgICBCYXNpYyBpbmNsdXNpb24gZXhhbXBsZSAoWEluY2x1ZGUgQy4xKQoKICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUgYXMgRVQKICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKCiAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoIkMxLnhtbCIpCiAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgeGluY2x1ZGVfbG9hZGVyKQogICAgPj4+IHByaW50IHNlcmlhbGl6ZShkb2N1bWVudCkgIyBDMQogICAgPGRvY3VtZW50PgogICAgICA8cD4xMjAgTXogaXMgYWRlcXVhdGUgZm9yIGFuIGF2ZXJhZ2UgaG9tZSB1c2VyLjwvcD4KICAgICAgPGRpc2NsYWltZXI+CiAgICAgIDxwPlRoZSBvcGluaW9ucyByZXByZXNlbnRlZCBoZXJlaW4gcmVwcmVzZW50IHRob3NlIG9mIHRoZSBpbmRpdmlkdWFsCiAgICAgIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIG9mZmljaWFsIHBvbGljeSBlbmRvcnNlZCBieSB0aGlzCiAgICAgIG9yZ2FuaXphdGlvbi48L3A+CiAgICA8L2Rpc2NsYWltZXI+CiAgICA8L2RvY3VtZW50PgoKICAgIFRleHR1YWwgaW5jbHVzaW9uIGV4YW1wbGUgKFhJbmNsdWRlIEMuMikKCiAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoIkMyLnhtbCIpCiAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgeGluY2x1ZGVfbG9hZGVyKQogICAgPj4+IHByaW50IHNlcmlhbGl6ZShkb2N1bWVudCkgIyBDMgogICAgPGRvY3VtZW50PgogICAgICA8cD5UaGlzIGRvY3VtZW50IGhhcyBiZWVuIGFjY2Vzc2VkCiAgICAgIDMyNDM4NyB0aW1lcy48L3A+CiAgICA8L2RvY3VtZW50PgoKICAgIFRleHR1YWwgaW5jbHVzaW9uIGFmdGVyIHNpYmxpbmcgZWxlbWVudCAoYmFzZWQgb24gbW9kaWZpZWQgWEluY2x1ZGUgQy4yKQoKICAgID4+PiBkb2N1bWVudCA9IHhpbmNsdWRlX2xvYWRlcigiQzJiLnhtbCIpCiAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgeGluY2x1ZGVfbG9hZGVyKQogICAgPj4+IHByaW50KHNlcmlhbGl6ZShkb2N1bWVudCkpICMgQzJiCiAgICA8ZG9jdW1lbnQ+CiAgICAgIDxwPlRoaXMgZG9jdW1lbnQgaGFzIGJlZW4gPGVtPmFjY2Vzc2VkPC9lbT4KICAgICAgMzI0Mzg3IHRpbWVzLjwvcD4KICAgIDwvZG9jdW1lbnQ+CgogICAgVGV4dHVhbCBpbmNsdXNpb24gb2YgWE1MIGV4YW1wbGUgKFhJbmNsdWRlIEMuMykKCiAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoIkMzLnhtbCIpCiAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgeGluY2x1ZGVfbG9hZGVyKQogICAgPj4+IHByaW50IHNlcmlhbGl6ZShkb2N1bWVudCkgIyBDMwogICAgPGRvY3VtZW50PgogICAgICA8cD5UaGUgZm9sbG93aW5nIGlzIHRoZSBzb3VyY2Ugb2YgdGhlICJkYXRhLnhtbCIgcmVzb3VyY2U6PC9wPgogICAgICA8ZXhhbXBsZT4mbHQ7P3htbCB2ZXJzaW9uPScxLjAnPyZndDsKICAgICZsdDtkYXRhJmd0OwogICAgICAmbHQ7aXRlbSZndDsmbHQ7IVtDREFUQVtCcm9va3MgJmFtcDsgU2hpZWxkc11dJmd0OyZsdDsvaXRlbSZndDsKICAgICZsdDsvZGF0YSZndDsKICAgIDwvZXhhbXBsZT4KICAgIDwvZG9jdW1lbnQ+CgogICAgRmFsbGJhY2sgZXhhbXBsZSAoWEluY2x1ZGUgQy41KQogICAgTm90ZSEgRmFsbGJhY2sgc3VwcG9ydCBpcyBub3QgeWV0IGltcGxlbWVudGVkCgogICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJDNS54bWwiKQogICAgPj4+IEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIHhpbmNsdWRlX2xvYWRlcikKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIElPRXJyb3I6IHJlc291cmNlIG5vdCBmb3VuZAogICAgPj4+ICMgcHJpbnQgc2VyaWFsaXplKGRvY3VtZW50KSAjIEM1CiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQIAAAAeGluY2x1ZGU5BQAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc28BAAAKICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKCiAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoImRlZmF1bHQueG1sIikKICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50KQogICAgPj4+IHByaW50IHNlcmlhbGl6ZShkb2N1bWVudCkgIyBkZWZhdWx0CiAgICA8ZG9jdW1lbnQ+CiAgICAgIDxwPkV4YW1wbGUuPC9wPgogICAgICA8cm9vdD4KICAgICAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+CiAgICAgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWwKICAgICAgIDxlbXB0eS1lbGVtZW50IC8+CiAgICA8L3Jvb3Q+CiAgICA8L2RvY3VtZW50PgogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0EAAAAHhpbmNsdWRlX2RlZmF1bHR4BQAAcwAAAABzxQAAADw/eG1sIHZlcnNpb249JzEuMCc/Pgo8ZG9jdW1lbnQgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWEluY2x1ZGUiPgogIDxwPjEyMCBNeiBpcyBhZGVxdWF0ZSBmb3IgYW4gYXZlcmFnZSBob21lIHVzZXIuPC9wPgogIDx4aTppbmNsdWRlIGhyZWY9ImRpc2NsYWltZXIueG1sIiBwYXJzZT0iQkFEX1RZUEUiLz4KPC9kb2N1bWVudD4KcwYAAABCMS54bWxzbgAAADw/eG1sIHZlcnNpb249JzEuMCc/Pgo8ZGl2IHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hJbmNsdWRlIj4KICAgIDx4aTpmYWxsYmFjaz48L3hpOmZhbGxiYWNrPgo8L2Rpdj4KcwYAAABCMi54bWxjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc6gEAAAKICAgIFRlc3QgZmFpbHVyZSB0byBsb2NhdGUgaW5jbHVkZWQgWE1MIGZpbGUuCgogICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQoKICAgID4+PiBkZWYgbm9uZV9sb2FkZXIoaHJlZiwgcGFyc2VyLCBlbmNvZGluZz1Ob25lKToKICAgIC4uLiAgICAgcmV0dXJuIE5vbmUKCiAgICA+Pj4gZG9jdW1lbnQgPSBFVC5YTUwoWElOQ0xVREVbIkMxLnhtbCJdKQogICAgPj4+IEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIGxvYWRlcj1ub25lX2xvYWRlcikKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIEZhdGFsSW5jbHVkZUVycm9yOiBjYW5ub3QgbG9hZCAnZGlzY2xhaW1lci54bWwnIGFzICd4bWwnCgogICAgVGVzdCBmYWlsdXJlIHRvIGxvY2F0ZSBpbmNsdWRlZCB0ZXh0IGZpbGUuCgogICAgPj4+IGRvY3VtZW50ID0gRVQuWE1MKFhJTkNMVURFWyJDMi54bWwiXSkKICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCBsb2FkZXI9bm9uZV9sb2FkZXIpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICBGYXRhbEluY2x1ZGVFcnJvcjogY2Fubm90IGxvYWQgJ2NvdW50LnR4dCcgYXMgJ3RleHQnCgogICAgVGVzdCBiYWQgcGFyc2UgdHlwZS4KCiAgICA+Pj4gZG9jdW1lbnQgPSBFVC5YTUwoWElOQ0xVREVfQkFEWyJCMS54bWwiXSkKICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCBsb2FkZXI9bm9uZV9sb2FkZXIpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICBGYXRhbEluY2x1ZGVFcnJvcjogdW5rbm93biBwYXJzZSB0eXBlIGluIHhpOmluY2x1ZGUgdGFnICgnQkFEX1RZUEUnKQoKICAgIFRlc3QgeGk6ZmFsbGJhY2sgb3V0c2lkZSB4aTppbmNsdWRlLgoKICAgID4+PiBkb2N1bWVudCA9IEVULlhNTChYSU5DTFVERV9CQURbIkIyLnhtbCJdKQogICAgPj4+IEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIGxvYWRlcj1ub25lX2xvYWRlcikKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIEZhdGFsSW5jbHVkZUVycm9yOiB4aTpmYWxsYmFjayB0YWcgbXVzdCBiZSBjaGlsZCBvZiB4aTppbmNsdWRlICgne2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWEluY2x1ZGV9ZmFsbGJhY2snKQogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0EQAAAHhpbmNsdWRlX2ZhaWx1cmVznQUAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHOvAwAACgogICAgbWFyc2hhbGxlciBnaXZlcyBvYnNjdXJlIGVycm9ycyBmb3Igbm9uLXN0cmluZyB2YWx1ZXMKCiAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoMTIzKQogICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIHRhZwogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgVHlwZUVycm9yOiBjYW5ub3Qgc2VyaWFsaXplIDEyMyAodHlwZSBpbnQpCiAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoImVsZW0iKQogICAgPj4+IGVsZW0udGV4dCA9IDEyMwogICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIHRleHQKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIFR5cGVFcnJvcjogY2Fubm90IHNlcmlhbGl6ZSAxMjMgKHR5cGUgaW50KQogICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJlbGVtIikKICAgID4+PiBlbGVtLnRhaWwgPSAxMjMKICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyB0YWlsCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICBUeXBlRXJyb3I6IGNhbm5vdCBzZXJpYWxpemUgMTIzICh0eXBlIGludCkKICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgiZWxlbSIpCiAgICA+Pj4gZWxlbS5zZXQoMTIzLCAiMTIzIikKICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyBhdHRyaWJ1dGUga2V5CiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICBUeXBlRXJyb3I6IGNhbm5vdCBzZXJpYWxpemUgMTIzICh0eXBlIGludCkKICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgiZWxlbSIpCiAgICA+Pj4gZWxlbS5zZXQoIjEyMyIsIDEyMykKICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyBhdHRyaWJ1dGUgdmFsdWUKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIFR5cGVFcnJvcjogY2Fubm90IHNlcmlhbGl6ZSAxMjMgKHR5cGUgaW50KQoKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dBAAAABidWdfeG1sdG9vbGtpdDIxxAUAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHPKAAAACgogICAgdHlwbyBpbiBFbGVtZW50VHJlZS5maW5kdGV4dAoKICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCiAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnRUcmVlKGVsZW0pCiAgICA+Pj4gdHJlZS5maW5kdGV4dCgidGFnIikKICAgICd0ZXh0JwogICAgPj4+IHRyZWUuZmluZHRleHQoInNlY3Rpb24vdGFnIikKICAgICdzdWJ0ZXh0JwoKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dBAAAABidWdfeG1sdG9vbGtpdDI15AUAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHPYAAAACgogICAgLi8vdGFnIGNhdXNlcyBleGNlcHRpb25zCgogICAgPj4+IHRyZWUgPSBFVC5YTUwoIjxkb2M+PHRhYmxlPjx0Ym9keS8+PC90YWJsZT48L2RvYz4iKQogICAgPj4+IHN1bW1hcml6ZV9saXN0KHRyZWUuZmluZGFsbCgiLi8vdGhlYWQiKSkKICAgIFtdCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QodHJlZS5maW5kYWxsKCIuLy90Ym9keSIpKQogICAgWyd0Ym9keSddCgogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0EAAAAGJ1Z194bWx0b29sa2l0MjjyBQAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc9AAAAAKCiAgICBkdW1wKCkgZG9lc24ndCBmbHVzaCB0aGUgb3V0cHV0IGJ1ZmZlcgoKICAgID4+PiB0cmVlID0gRVQuWE1MKCI8ZG9jPjx0YWJsZT48dGJvZHkvPjwvdGFibGU+PC9kb2M+IikKICAgID4+PiBFVC5kdW1wKHRyZWUpOyBzeXMuc3Rkb3V0LndyaXRlKCJ0YWlsIikKICAgIDxkb2M+PHRhYmxlPjx0Ym9keSAvPjwvdGFibGU+PC9kb2M+CiAgICB0YWlsCgogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0EAAAAGJ1Z194bWx0b29sa2l0WDH/BQAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAczgDAAAKCiAgICBub24tYXNjaWkgZWxlbWVudCBhbmQgYXR0cmlidXRlIG5hbWVzIGRvZXNuJ3Qgd29yawoKICAgID4+PiB0cmVlID0gRVQuWE1MKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+PHTkZyAvPiIpCiAgICA+Pj4gRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IikKICAgICc8dFx4YzNceGE0ZyAvPicKCiAgICA+Pj4gdHJlZSA9IEVULlhNTCgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/Pjx0YWcg5HR0cj0ndiYjMjI4O2x1ZScgLz4iKQogICAgPj4+IHRyZWUuYXR0cmliCiAgICB7dSdceGU0dHRyJzogdSd2XHhlNGx1ZSd9CiAgICA+Pj4gRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IikKICAgICc8dGFnIFx4YzNceGE0dHRyPSJ2XHhjM1x4YTRsdWUiIC8+JwoKICAgID4+PiB0cmVlID0gRVQuWE1MKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+PHTkZz50ZXh0PC905Gc+IikKICAgID4+PiBFVC50b3N0cmluZyh0cmVlLCAidXRmLTgiKQogICAgJzx0XHhjM1x4YTRnPnRleHQ8L3RceGMzXHhhNGc+JwoKICAgID4+PiB0cmVlID0gRVQuRWxlbWVudCh1InRcdTAwZTRnIikKICAgID4+PiBFVC50b3N0cmluZyh0cmVlLCAidXRmLTgiKQogICAgJzx0XHhjM1x4YTRnIC8+JwoKICAgID4+PiB0cmVlID0gRVQuRWxlbWVudCgidGFnIikKICAgID4+PiB0cmVlLnNldCh1Ilx1MDBlNHR0ciIsIHUidlx1MDBlNGx1ZSIpCiAgICA+Pj4gRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IikKICAgICc8dGFnIFx4YzNceGE0dHRyPSJ2XHhjM1x4YTRsdWUiIC8+JwoKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dBAAAABidWdfeG1sdG9vbGtpdDM5CwYAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHO9AAAACgogICAgcHJvYmxlbXMgaGFuZGxpbmcgaW50ZXJuYWxseSBkZWZpbmVkIGVudGl0aWVzCgogICAgPj4+IGUgPSBFVC5YTUwoIjwhRE9DVFlQRSBkb2MgWzwhRU5USVRZIGxkb3RzICcmI3g4MjMwOyc+XT48ZG9jPiZsZG90czs8L2RvYz4iKQogICAgPj4+IHNlcmlhbGl6ZShlKQogICAgJzxkb2M+JiMzMzMyODs8L2RvYz4nCgogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0EAAAAGJ1Z194bWx0b29sa2l0NTQpBgAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc/0AAAAKCiAgICBtYWtlIHN1cmUgd2UncmUgcmVwb3J0aW5nIHRoZSBmaXJzdCBlcnJvciwgbm90IHRoZSBsYXN0CgogICAgPj4+IGUgPSBFVC5YTUwoIjwhRE9DVFlQRSBkb2MgU1lTVEVNICdkb2MuZHRkJz48ZG9jPiZsZG90czsmbmRvdHM7JnJkb3RzOzwvZG9jPiIpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICBQYXJzZUVycm9yOiB1bmRlZmluZWQgZW50aXR5ICZsZG90czs6IGxpbmUgMSwgY29sdW1uIDM2CgogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0EAAAAGJ1Z194bWx0b29sa2l0NTU0BgAAcwAAAAB0DQAAAEV4Y2VwdGlvbkZpbGVjAAAAAAAAAAABAAAAQgAAAHMRAAAAZQAAWgEAZAAAhAAAWgIAUlMoAQAAAGMCAAAAAgAAAAEAAABDAAAAcwoAAAB0AACCAQBkAABTKAEAAABOKAEAAABSXAAAACgCAAAAdAQAAABzZWxmdAEAAAB4KAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dAQAAAByZWFkQAYAAHMCAAAAAAEoAwAAAHQIAAAAX19uYW1lX190CgAAAF9fbW9kdWxlX19SbwAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5UmwAAAA/BgAAcwIAAAAGAWMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzhgAAAAoKICAgIEhhbmRsZSBjcmFzaCBpbiBzdHJlYW0gc291cmNlLgogICAgPj4+IHRyZWUgPSBFVC5wYXJzZShFeGNlcHRpb25GaWxlKCkpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICBJT0Vycm9yCgogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0DAAAAHhtbHRvb2xraXQ2MEMGAABzAAAAAHNGAQAAPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHBhdGVudC1hcHBsaWNhdGlvbi1wdWJsaWNhdGlvbiBTWVNURU0gInBhcC12MTUtMjAwMS0wMS0zMS5kdGQiIFtdPgo8cGF0ZW50LWFwcGxpY2F0aW9uLXB1YmxpY2F0aW9uPgo8c3ViZG9jLWFic3RyYWN0Pgo8cGFyYWdyYXBoIGlkPSJBLTAwMDEiIGx2bD0iMCI+QSBuZXcgY3VsdGl2YXIgb2YgQmVnb25pYSBwbGFudCBuYW1lZCAmbHNxdW87QkNUOTgwMUJFRyZyc3F1bzsuPC9wYXJhZ3JhcGg+Cjwvc3ViZG9jLWFic3RyYWN0Pgo8L3BhdGVudC1hcHBsaWNhdGlvbi1wdWJsaWNhdGlvbj5jAAAAAAMAAAADAAAAQwAAAHNZAAAAaQIAZAEAZAIANmQDAGQEADZ9AAB0AABqAQCDAAB9AQB8AQBqAgBqAwB8AACDAQABfAEAagQAdAUAgwEAAXwBAGoGAIMAAH0CAHwCAGoHAGQFAIMBAGoIAFMoBgAAAHOQAAAACgogICAgRG9uJ3QgY3Jhc2ggd2hlbiB1c2luZyBjdXN0b20gZW50aXRpZXMuCgogICAgPj4+IHhtbHRvb2xraXQ2MigpCiAgICB1J0EgbmV3IGN1bHRpdmFyIG9mIEJlZ29uaWEgcGxhbnQgbmFtZWQgXHUyMDE4QkNUOTgwMUJFR1x1MjAxOS4nCgogICAgdQMAAADigJl1BQAAAHJzcXVvdQMAAADigJh1BQAAAGxzcXVvcwwAAAAuLy9wYXJhZ3JhcGgoCQAAAFILAAAAdA4AAABYTUxUcmVlQnVpbGRlclJIAAAAdAYAAAB1cGRhdGV0BAAAAGZlZWR0EAAAAFhNTFRPT0xLSVQ2Ml9ET0N0BQAAAGNsb3NlUjYAAABSGwAAACgDAAAAdAgAAABFTlRJVElFU3QGAAAAcGFyc2VydAEAAAB0KAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dAwAAAB4bWx0b29sa2l0NjJWBgAAcwwAAAAACRQBDAEQAQ0BDAFjAAAAAAEAAAADAAAAQwAAAHM6AAAAdAAAagEAgwAAfQAAfAAAagIAZAEAaQAAgwIAAXwAAGoDAGQCAIMBAAF8AABqBABkAQCDAQABZAMAUygEAAAAc8MAAAAKCiAgICBDaGVjayByZWZlcmVuY2UgbGVhay4KICAgID4+PiB4bWx0b29sa2l0NjMoKQogICAgPj4+IGNvdW50ID0gc3lzLmdldHJlZmNvdW50KE5vbmUpCiAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CiAgICAuLi4gICAgIHhtbHRvb2xraXQ2MygpCiAgICA+Pj4gc3lzLmdldHJlZmNvdW50KE5vbmUpIC0gY291bnQKICAgIDAKCiAgICBSFQAAAFIbAAAATigFAAAAUgsAAAB0CwAAAFRyZWVCdWlsZGVydAUAAABzdGFydFJgAAAAdAMAAABlbmQoAQAAAFITAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dAwAAAB4bWx0b29sa2l0NjNmBgAAcwgAAAAADAwBEAENAWMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzaQEAAAoKICAgIFByZXNlcnZlIG5ld2xpbmVzIGluIGF0dHJpYnV0ZXMuCgogICAgPj4+IGUgPSBFVC5FbGVtZW50KCdTb21lVGFnJywgdGV4dD0iZGVmIF9mKCk6XG4gIHJldHVybiAzXG4iKQogICAgPj4+IEVULnRvc3RyaW5nKGUpCiAgICAnPFNvbWVUYWcgdGV4dD0iZGVmIF9mKCk6JiMxMDsgIHJldHVybiAzJiMxMDsiIC8+JwogICAgPj4+IEVULlhNTChFVC50b3N0cmluZyhlKSkuZ2V0KCJ0ZXh0IikKICAgICdkZWYgX2YoKTpcbiAgcmV0dXJuIDNcbicKICAgID4+PiBFVC50b3N0cmluZyhFVC5YTUwoRVQudG9zdHJpbmcoZSkpKQogICAgJzxTb21lVGFnIHRleHQ9ImRlZiBfZigpOiYjMTA7ICByZXR1cm4gMyYjMTA7IiAvPicKCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQSAAAAYnVnXzIwMDcwOF9uZXdsaW5legYAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHPNAQAACgogICAgVGVzdCBkZWZhdWx0IGJ1aWxkZXIuCiAgICA+Pj4gcGFyc2VyID0gRVQuWE1MUGFyc2VyKCkgIyBkZWZhdWx0CiAgICA+Pj4gcGFyc2VyLmZlZWQoIjxlbGVtZW50PnNvbWUgdGV4dDwvZWxlbWVudD4iKQogICAgPj4+IHN1bW1hcml6ZShwYXJzZXIuY2xvc2UoKSkKICAgICdlbGVtZW50JwoKICAgIFRlc3QgY3VzdG9tIGJ1aWxkZXIuCiAgICA+Pj4gY2xhc3MgRWNob1RhcmdldDoKICAgIC4uLiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgLi4uICAgICAgICAgcmV0dXJuIEVULkVsZW1lbnQoImVsZW1lbnQiKSAjIHNpbXVsYXRlIHJvb3QKICAgID4+PiBwYXJzZXIgPSBFVC5YTUxQYXJzZXIoRWNob1RhcmdldCgpKQogICAgPj4+IHBhcnNlci5mZWVkKCI8ZWxlbWVudD5zb21lIHRleHQ8L2VsZW1lbnQ+IikKICAgID4+PiBzdW1tYXJpemUocGFyc2VyLmNsb3NlKCkpCiAgICAnZWxlbWVudCcKCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQQAAAAYnVnXzIwMDcwOF9jbG9zZYkGAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzBgMAAAoKICAgID4+PiBlID0gRVQuRWxlbWVudCgie2RlZmF1bHR9ZWxlbSIpCiAgICA+Pj4gcyA9IEVULlN1YkVsZW1lbnQoZSwgIntkZWZhdWx0fWVsZW0iKQogICAgPj4+IHNlcmlhbGl6ZShlLCBkZWZhdWx0X25hbWVzcGFjZT0iZGVmYXVsdCIpICMgMQogICAgJzxlbGVtIHhtbG5zPSJkZWZhdWx0Ij48ZWxlbSAvPjwvZWxlbT4nCgogICAgPj4+IGUgPSBFVC5FbGVtZW50KCJ7ZGVmYXVsdH1lbGVtIikKICAgID4+PiBzID0gRVQuU3ViRWxlbWVudChlLCAie2RlZmF1bHR9ZWxlbSIpCiAgICA+Pj4gcyA9IEVULlN1YkVsZW1lbnQoZSwgIntub3QtZGVmYXVsdH1lbGVtIikKICAgID4+PiBzZXJpYWxpemUoZSwgZGVmYXVsdF9uYW1lc3BhY2U9ImRlZmF1bHQiKSAjIDIKICAgICc8ZWxlbSB4bWxucz0iZGVmYXVsdCIgeG1sbnM6bnMxPSJub3QtZGVmYXVsdCI+PGVsZW0gLz48bnMxOmVsZW0gLz48L2VsZW0+JwoKICAgID4+PiBlID0gRVQuRWxlbWVudCgie2RlZmF1bHR9ZWxlbSIpCiAgICA+Pj4gcyA9IEVULlN1YkVsZW1lbnQoZSwgIntkZWZhdWx0fWVsZW0iKQogICAgPj4+IHMgPSBFVC5TdWJFbGVtZW50KGUsICJlbGVtIikgIyB1bnByZWZpeGVkIG5hbWUKICAgID4+PiBzZXJpYWxpemUoZSwgZGVmYXVsdF9uYW1lc3BhY2U9ImRlZmF1bHQiKSAjIDMKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgIFZhbHVlRXJyb3I6IGNhbm5vdCB1c2Ugbm9uLXF1YWxpZmllZCBuYW1lcyB3aXRoIGRlZmF1bHRfbmFtZXNwYWNlIG9wdGlvbgoKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dBwAAABidWdfMjAwNzA5X2RlZmF1bHRfbmFtZXNwYWNlnQYAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHNWAgAACgogICAgPj4+IEVULnRvc3RyaW5nKEVULkVsZW1lbnQoIntodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvfXRpdGxlIikpCiAgICAnPG5zMDp0aXRsZSB4bWxuczpuczA9Imh0dHA6Ly9uYW1lc3BhY2UuaW52YWxpZC9kb2VzL25vdC9leGlzdC8iIC8+JwogICAgPj4+IEVULnJlZ2lzdGVyX25hbWVzcGFjZSgiZm9vIiwgImh0dHA6Ly9uYW1lc3BhY2UuaW52YWxpZC9kb2VzL25vdC9leGlzdC8iKQogICAgPj4+IEVULnRvc3RyaW5nKEVULkVsZW1lbnQoIntodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvfXRpdGxlIikpCiAgICAnPGZvbzp0aXRsZSB4bWxuczpmb289Imh0dHA6Ly9uYW1lc3BhY2UuaW52YWxpZC9kb2VzL25vdC9leGlzdC8iIC8+JwoKICAgIEFuZCB0aGUgRHVibGluIENvcmUgbmFtZXNwYWNlIGlzIGluIHRoZSBkZWZhdWx0IGxpc3Q6CgogICAgPj4+IEVULnRvc3RyaW5nKEVULkVsZW1lbnQoIntodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xL310aXRsZSIpKQogICAgJzxkYzp0aXRsZSB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIC8+JwoKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dB0AAABidWdfMjAwNzA5X3JlZ2lzdGVyX25hbWVzcGFjZbQGAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzNwEAAAoKICAgIE5vdCBzdXJlIGlmIHRoaXMgY2FuIGJlIGZpeGVkLCByZWFsbHkgKHNpbmNlIHRoZSBzZXJpYWxpemVyIG5lZWRzCiAgICBFVC5Db21tZW50LCBub3QgY0VULmNvbW1lbnQpLgoKICAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCiAgICA+Pj4gYS5hcHBlbmQoRVQuQ29tbWVudCgnZm9vJykpCiAgICA+Pj4gYVswXS50YWcgPT0gRVQuQ29tbWVudAogICAgVHJ1ZQoKICAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCiAgICA+Pj4gYS5hcHBlbmQoRVQuUEkoJ2ZvbycpKQogICAgPj4+IGFbMF0udGFnID09IEVULlBJCiAgICBUcnVlCgogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0GgAAAGJ1Z18yMDA3MDlfZWxlbWVudF9jb21tZW50xAYAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHMTAQAACgogICAgPj4+IGEgPSBFVC5FbGVtZW50KCdhJykKICAgID4+PiBiID0gRVQuU3ViRWxlbWVudChhLCAnYicpCiAgICA+Pj4gYyA9IEVULlN1YkVsZW1lbnQoYSwgJ2MnKQogICAgPj4+IGQgPSBFVC5FbGVtZW50KCdkJykKICAgID4+PiBhLmluc2VydCgwLCBkKQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGEpCiAgICBbJ2QnLCAnYicsICdjJ10KICAgID4+PiBhLmluc2VydCgtMSwgZCkKICAgID4+PiBzdW1tYXJpemVfbGlzdChhKQogICAgWydkJywgJ2InLCAnZCcsICdjJ10KCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQZAAAAYnVnXzIwMDcwOV9lbGVtZW50X2luc2VydNYGAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzxwAAAAoKICAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCiAgICA+Pj4gYiA9IEVULlN1YkVsZW1lbnQoYSwgJ2InKQogICAgPj4+IGNvbW1lbnRfYiA9IEVULkNvbW1lbnQoIlRFU1QtYiIpCiAgICA+Pj4gYi5hcHBlbmQoY29tbWVudF9iKQogICAgPj4+IHN1bW1hcml6ZV9saXN0KGEuaXRlcihFVC5Db21tZW50KSkKICAgIFsnPENvbW1lbnQ+J10KCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQXAAAAYnVnXzIwMDcwOV9pdGVyX2NvbW1lbnTmBgAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc9wAAAAKCiAgICA+Pj4gZSA9IEVULlhNTCgnPGh0bWw+PENhbWVsQ2FzZT50ZXh0PC9DYW1lbENhc2U+PC9odG1sPicpCiAgICA+Pj4gc2VyaWFsaXplKGUpCiAgICAnPGh0bWw+PENhbWVsQ2FzZT50ZXh0PC9DYW1lbENhc2U+PC9odG1sPicKICAgID4+PiBzZXJpYWxpemUoZSwgbWV0aG9kPSJodG1sIikKICAgICc8aHRtbD48Q2FtZWxDYXNlPnRleHQ8L0NhbWVsQ2FzZT48L2h0bWw+JwogICAgTigAAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0CQAAAGJ1Z18xODM0N/IGAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzugAAAAoKICAgID4+PiBib2IgPSBFVC5UcmVlQnVpbGRlcigpCiAgICA+Pj4gZSA9IGJvYi5kYXRhKCJkYXRhIikKICAgID4+PiBlID0gYm9iLnN0YXJ0KCJ0YWciLCB7fSkKICAgID4+PiBlID0gYm9iLmVuZCgidGFnIikKICAgID4+PiBlID0gYm9iLmNsb3NlKCkKICAgID4+PiBzZXJpYWxpemUoZSkKICAgICc8dGFnIC8+JwoKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dAsAAABidWdfMTUzNDYzMP8GAABzAAAAAGMAAAAAAAAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzeAEAAAoKICAgID4+PiBlID0gRVQuWE1MKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCc/Pjxib2R5PnRceGMzXHhhM2c8L2JvZHk+IikKICAgID4+PiBFVC50b3N0cmluZyhlLCAnYXNjaWknKQogICAgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2FzY2lpJz8+XG48Ym9keT50JiMyMjc7ZzwvYm9keT4iCiAgICA+Pj4gZSA9IEVULlhNTCgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/Pjxib2R5PnRceGUzZzwvYm9keT4iKQogICAgPj4+IEVULnRvc3RyaW5nKGUsICdhc2NpaScpCiAgICAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nYXNjaWknPz5cbjxib2R5PnQmIzIyNztnPC9ib2R5PiIKCiAgICBOKAAAAAAoAAAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weXQPAAAAY2hlY2tfaXNzdWU2MjMzDAcAAHMAAAAAYwAAAAAAAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHPTAAAACgogICAgPj4+IGUgPSBFVC5YTUwoJzxwcmVmaXg6bG9jYWxuYW1lIHhtbG5zOnByZWZpeD0iJHtzdHVmZn0iLz4nKQogICAgPj4+IGUudGFnCiAgICAneyR7c3R1ZmZ9fWxvY2FsbmFtZScKICAgID4+PiB0ID0gRVQuRWxlbWVudFRyZWUoZSkKICAgID4+PiBFVC50b3N0cmluZyhlKQogICAgJzxuczA6bG9jYWxuYW1lIHhtbG5zOm5zMD0iJHtzdHVmZn0iIC8+JwoKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dA8AAABjaGVja19pc3N1ZTMxNTEYBwAAcwAAAABjAAAAAAAAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc9oAAAAKCiAgICA+Pj4gZWxlbSA9IEVULlhNTCgiPGJvZHk+PHRhZy8+PC9ib2R5PiIpCiAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbSkKICAgIFsndGFnJ10KICAgID4+PiBuZXdlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCiAgICA+Pj4gZWxlbVs6XSA9IG5ld2VsZW1bOl0KICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtKQogICAgWyd0YWcnLCAndGFnJywgJ3NlY3Rpb24nXQoKICAgIE4oAAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dA8AAABjaGVja19pc3N1ZTY1NjUkBwAAcwAAAABjAQAAAAEAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAc+YDAAAKCiAgICA+Pj4gZW1wdHlfZWxlbXMgPSBbJ0FSRUEnLCAnQkFTRScsICdCQVNFRk9OVCcsICdCUicsICdDT0wnLCAnRlJBTUUnLCAnSFInLAogICAgLi4uICAgICAgICAgICAgICAgICdJTUcnLCAnSU5QVVQnLCAnSVNJTkRFWCcsICdMSU5LJywgJ01FVEEnLCAnUEFSQU0nXQogICAgPj4+IGVsZW1zID0gJycuam9pbignPCVzIC8+JyAlIGVsZW0gZm9yIGVsZW0gaW4gZW1wdHlfZWxlbXMpCiAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zKSwgbWV0aG9kPSdodG1sJykKICAgICc8aHRtbD48QVJFQT48QkFTRT48QkFTRUZPTlQ+PEJSPjxDT0w+PEZSQU1FPjxIUj48SU1HPjxJTlBVVD48SVNJTkRFWD48TElOSz48TUVUQT48UEFSQU0+PC9odG1sPicKICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMubG93ZXIoKSksIG1ldGhvZD0naHRtbCcpCiAgICAnPGh0bWw+PGFyZWE+PGJhc2U+PGJhc2Vmb250Pjxicj48Y29sPjxmcmFtZT48aHI+PGltZz48aW5wdXQ+PGlzaW5kZXg+PGxpbms+PG1ldGE+PHBhcmFtPjwvaHRtbD4nCiAgICA+Pj4gZWxlbXMgPSAnJy5qb2luKCc8JXM+PC8lcz4nICUgKGVsZW0sIGVsZW0pIGZvciBlbGVtIGluIGVtcHR5X2VsZW1zKQogICAgPj4+IHNlcmlhbGl6ZShFVC5YTUwoJzxodG1sPiVzPC9odG1sPicgJSBlbGVtcyksIG1ldGhvZD0naHRtbCcpCiAgICAnPGh0bWw+PEFSRUE+PEJBU0U+PEJBU0VGT05UPjxCUj48Q09MPjxGUkFNRT48SFI+PElNRz48SU5QVVQ+PElTSU5ERVg+PExJTks+PE1FVEE+PFBBUkFNPjwvaHRtbD4nCiAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zLmxvd2VyKCkpLCBtZXRob2Q9J2h0bWwnKQogICAgJzxodG1sPjxhcmVhPjxiYXNlPjxiYXNlZm9udD48YnI+PGNvbD48ZnJhbWU+PGhyPjxpbWc+PGlucHV0Pjxpc2luZGV4PjxsaW5rPjxtZXRhPjxwYXJhbT48L2h0bWw+JwoKICAgIE4oAAAAACgBAAAAUm0AAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHl0JAAAAGNoZWNrX2h0bWxfZW1wdHlfZWxlbXNfc2VyaWFsaXphdGlvbjEHAABzAAAAAHQMAAAAQ2xlYW5Db250ZXh0YwAAAAAAAAAAAgAAAEIAAABzMgAAAGUAAFoBAGQAAFoCAGQEAFoEAGUFAGQBAIQBAFoGAGQCAIQAAFoHAGQDAIQAAFoIAFJTKAUAAABzMQAAAFByb3ZpZGUgZGVmYXVsdCBuYW1lc3BhY2UgbWFwcGluZyBhbmQgcGF0aCBjYWNoZS5jAgAAAAMAAAAFAAAAQwAAAHNhAAAAdAAAagEAagIAZAEAawUAchsAdAMAfQEAbgAAZAIAdAQAZgIAZAMAdAUAZgIAZAMAdAYAZgIAZAQAdAUAZgIAZgQAfQIAdAcAaggAZAUAfAEAfAIAjAABfAAAXwkAZAAAUygGAAAATmkCAAAAc4kAAABUaGlzIHNlYXJjaCBpcyBicm9rZW4gaW4gMS4zIGFuZCBlYXJsaWVyLCBhbmQgd2lsbCBiZSBmaXhlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiAgSWYgeW91IHJlbHkgb24gdGhlIGN1cnJlbnQgYmVoYXZpb3VyLCBjaGFuZ2UgaXQgdG8gJy4rJ3NAAAAAVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4gIFVzZSAuKyBpbnN0ZWFkLnNbAAAAVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuICBEZWZpbmUgZG9jdHlwZS4uIG1ldGhvZCBvbiB0aGUgVHJlZUJ1aWxkZXIgdGFyZ2V0LnQFAAAAcXVpZXQoCgAAAFJKAAAAdAUAAABmbGFnc3QIAAAAb3B0aW1pemV0BAAAAFRydWV0DQAAAEZ1dHVyZVdhcm5pbmd0EgAAAERlcHJlY2F0aW9uV2FybmluZ3QZAAAAUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ1IAAAAAdA4AAABjaGVja193YXJuaW5nc3QNAAAAY2hlY2t3YXJuaW5ncygDAAAAUm0AAABSjgAAAHQMAAAAZGVwcmVjYXRpb25zKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dAgAAABfX2luaXRfX0wHAABzGAAAAAABEgMJAwMCBgIDAQYBAwEGAgMBDAEJAWMBAAAAAgAAAAIAAABDAAAAc2MAAABkAQBkAgBsAABtAQB9AQABfAEAagIAfAAAXwMAfAEAagQAagUAfAAAXwYAfAAAagMAagcAgwAAfAEAXwIAfAAAagYAagcAgwAAfAEAagQAXwUAfAAAaggAagkAgwAAAWQAAFMoAwAAAE5p/////ygBAAAAUgIAAAAoCgAAAFJSAAAAUgIAAAB0DgAAAF9uYW1lc3BhY2VfbWFwdAYAAABfbnNtYXBSUQAAAHQGAAAAX2NhY2hldAsAAABfcGF0aF9jYWNoZVI6AAAAUpYAAAB0CQAAAF9fZW50ZXJfXygCAAAAUm0AAABSAgAAACgAAAAAKAAAAABzfgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3htbF9ldHJlZS5weVKdAAAAYQcAAHMMAAAAAAEQAQwBDwISAhUBYwEAAAADAAAAAgAAAEcAAABzPwAAAGQBAGQCAGwAAG0BAH0CAAF8AABqAgB8AgBfAwB8AABqBAB8AgBqBQBfBgB8AABqBwBqCAB8AQCMAAABZAAAUygDAAAATmn/////KAEAAABSAgAAACgJAAAAUlIAAABSAgAAAFKaAAAAUpkAAABSnAAAAFJRAAAAUpsAAABSlgAAAHQIAAAAX19leGl0X18oAwAAAFJtAAAAdAQAAABhcmdzUgIAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHlSngAAAGsHAABzCAAAAAABEAIMAQ8BTigJAAAAUnAAAABScQAAAHQHAAAAX19kb2NfX1IvAAAAUpYAAAB0BQAAAEZhbHNlUpgAAABSnQAAAFKeAAAAKAAAAAAoAAAAACgAAAAAc34AAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF94bWxfZXRyZWUucHlSjQAAAEgHAABzCgAAAAYBBgEGAgwVCQpzFQAAAHhtbC5ldHJlZS5FbGVtZW50VHJlZWMBAAAAAwAAAAgAAABDAAAAc3oAAABkAQBkAgBsAABtAQB9AQABfAAAZAMAawIAfQIAfAEAagIAagMAfAAAawIAczQAdAQAggEAdAUAZAQAfAIADIMAAY8YAAF0BgBqBwB8AQBkBQB0CACDAQEBV2QAAFFYfAEAagIAagMAfAAAawIAc3YAdAQAggEAZAAAUygGAAAATmn/////KAEAAAB0DgAAAHRlc3RfeG1sX2V0cmVlcxUAAAB4bWwuZXRyZWUuRWxlbWVudFRyZWVSjgAAAHQJAAAAdmVyYm9zaXR5KAkAAAB0BAAAAHRlc3RSogAAAFILAAAAUnAAAAB0DgAAAEFzc2VydGlvbkVycm9yUo0AAABSAAAAAHQLAAAAcnVuX2RvY3Rlc3RSkQAAACgDAAAAdAsAAABtb2R1bGVfbmFtZVKiAAAAdA0AAAB1c2VfcHlfbW9kdWxlKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dAkAAAB0ZXN0X21haW5zBwAAcwwAAAAAARACDAMYAxEBGQN0CAAAAF9fbWFpbl9fKAAAAAAoXAAAAFJKAAAAdAMAAABjZ2lSpAAAAFIAAAAAdBEAAAB0ZXN0LnRlc3Rfc3VwcG9ydFIBAAAAUlIAAABSAgAAAFILAAAAdA4AAABTSU1QTEVfWE1MRklMRXQRAAAAU0lNUExFX05TX1hNTEZJTEV0CgAAAFNBTVBMRV9YTUx0DgAAAFNBTVBMRV9TRUNUSU9OdA0AAABTQU1QTEVfWE1MX05TUgUAAABSCQAAAFKRAAAAUhQAAABSFwAAAFIZAAAAUh4AAABSJQAAAFIsAAAAUjAAAABSMgAAAFIzAAAAUjQAAABSNQAAAFI2AAAAUjcAAABSOAAAAFI5AAAAUjoAAABSLQAAAFI7AAAAUjwAAABSPQAAAFI+AAAAUj8AAABSQAAAAFJBAAAAUkIAAABSRQAAAFJEAAAAUkYAAABSRwAAAHQKAAAARU5USVRZX1hNTFJIAAAAUk0AAABSTgAAAFJPAAAAUlAAAABSUwAAAFJYAAAAUloAAAB0BgAAAGZvcm1hdHQGAAAAZXNjYXBlUi8AAABSYQAAAFJiAAAAUmMAAAB0DAAAAFhJTkNMVURFX0JBRFJkAAAAUmUAAABSZgAAAFJnAAAAUmgAAABSaQAAAFJqAAAAUmsAAABSbAAAAFJyAAAAUnYAAABSewAAAFJ/AAAAUoAAAABSgQAAAFKCAAAAUoMAAABShAAAAFKFAAAAUoYAAABShwAAAFKIAAAAUokAAABSigAAAFKLAAAAUowAAAB0BgAAAG9iamVjdFKNAAAAUqkAAABScAAAACgAAAAAKAAAAAAoAAAAAHN+AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5dAgAAAA8bW9kdWxlPg4AAABzvAAAAAwBDAIQARACEAISARIKBgoGCgYDCQkJBAwLCQUJAwkHCQkJCgkYCTMJOAkNCSMJegkSCQoJEgkSCToJHwk3CRoJYAkWCTYJLwkKCREJOwkSCSQGAgkeCRQJJAlJCQsJNgkUBggKCQoICgIKCAoICgcKDQoIHwIPCgk/CRQGCAoHCgIJJwkgCQ4JDQkMCR4JCwkLEwQJEAYDCRAJFAkPCRQJFwkQCRIJEAkMCQ0JDQkMCQwJDQkXFisMDwwB