ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVlbCBkZSBy6WbpcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuMy4yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGx5IHRhcnJlYXUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDA2LzA5LzAzCgoKICEhISEgIE5PVEU6IENFIERPQ1VNRU5UIEVTVCBQRVJJTUUgICEhISEKCiBWZXVpbGxleiB1dGlsaXNlciBsZSBmaWNoaWVyICJjb25maWd1cmF0aW9uLnR4dCIgc2l0dekgZGFucyBsZSBt6m1lCiBy6XBlcnRvaXJlLCBvdSB06WzpY2hhcmdlciB1bmUgdmVyc2lvbiDgIGpvdXIg4CBsJ2VtcGxhY2VtZW50IGNpLWRlc3NvdXMgOgoKICAgICAgICBodHRwOi8vaGFwcm94eS4xd3QuZXUvZG93bmxvYWQvMS40L2RvYy9jb25maWd1cmF0aW9uLnR4dAoKCj09PT09PT09PT09PT09PT0KfCBJbnRyb2R1Y3Rpb24gfAo9PT09PT09PT09PT09PT09CgpIQVByb3h5IGVzdCB1biByZWxhaXMgVENQL0hUVFAgb2ZmcmFudCBkZXMgZmFjaWxpdOlzIGQnaW506WdyYXRpb24gZW4KZW52aXJvbm5lbWVudCBoYXV0ZW1lbnQgZGlzcG9uaWJsZS4gRW4gZWZmZXQsIGlsIGVzdCBjYXBhYmxlIGRlIDoKICAtIGVmZmVjdHVlciB1biBhaWd1aWxsYWdlIHN0YXRpcXVlIGTpZmluaSBwYXIgZGVzIGNvb2tpZXMgOwogIC0gZWZmZWN0dWVyIHVuZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgYXZlYyBjculhdGlvbiBkZSBjb29raWVzIHBvdXIgYXNzdXJlcgogICAgbGEgcGVyc2lzdGVuY2UgZGUgc2Vzc2lvbiA7IAogIC0gZm91cm5pciB1bmUgdmlzaWJpbGl06SBleHRlcm5lIGRlIHNvbiDpdGF0IGRlIHNhbnTpIDsKICAtIHMnYXJy6nRlciBlbiBkb3VjZXVyIHNhbnMgcGVydGUgYnJ1dGFsZSBkZSBzZXJ2aWNlIDsKICAtIG1vZGlmaWVyL2Fqb3V0ZXIvc3VwcHJpbWVyIGRlcyBlbi106nRlcyBkYW5zIGxhIHJlcXXqdGUgZXQgbGEgculwb25zZSA7CiAgLSBpbnRlcmRpcmUgZGVzIHJlcXXqdGVzIHF1aSB26XJpZmllbnQgY2VydGFpbmVzIGNvbmRpdGlvbnMgOwogIC0gdXRpbGlzZXIgZGVzIHNlcnZldXJzIGRlIHNlY291cnMgbG9yc3F1ZSBsZXMgc2VydmV1cnMgcHJpbmNpcGF1eCBzb250IGhvcnMKICAgIGQndXNhZ2UuCiAgLSBtYWludGVuaXIgZGVzIGNsaWVudHMgc3VyIGxlIGJvbiBzZXJ2ZXVyIHNlcnZldXIgZCdhcHBsaWNhdGlvbiBlbiBmb25jdGlvbgogICAgZGUgY29va2llcyBhcHBsaWNhdGlmcy4KICAtIGZvdXJuaXIgZGVzIHJhcHBvcnRzIGQn6XRhdCBlbiBIVE1MIOAgZGVzIHV0aWxpc2F0ZXVycyBhdXRoZW50aWZp6XMsIOAKICAgIHRyYXZlcnMgZGVzIFVSSSBkZSBsJ2FwcGxpY2F0aW9uIGludGVyY2VwdOllcy4KCklsIHJlcXVpZXJ0IHBldSBkZSByZXNzb3VyY2VzLCBldCBzb24gYXJjaGl0ZWN0dXJlIOl26W5lbWVudGllbGxlIG1vbm8tCnByb2Nlc3N1cyBsdWkgcGVybWV0IGZhY2lsZW1lbnQgZGUgZ+lyZXIgcGx1c2lldXJzIG1pbGxpZXJzIGRlIGNvbm5leGlvbnMKc2ltdWx0YW7pZXMgc3VyIHBsdXNpZXVycyByZWxhaXMgc2FucyBlZmZvbmRyZXIgbGUgc3lzdOhtZS4KCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KfCBQYXJhbeh0cmVzIGRlIGxhbmNlbWVudCB8Cj09PT09PT09PT09PT09PT09PT09PT09PT09PQoKTGVzIG9wdGlvbnMgZGUgbGFuY2VtZW50IHNvbnQgcGV1IG5vbWJyZXVzZXMgOgoKICAgIC1mIDxmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24+CiAgICAtbiA8bm9tYnJlIG1heGltYWwgdG90YWwgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcz4KICAgICAgID0gJ21heGNvbm4nIGRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJwogICAgLU4gPG5vbWJyZSBtYXhpbWFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMgcGFyIGluc3RhbmNlPgogICAgICAgPSAnbWF4Y29ubicgZGFucyBsZXMgc2VjdGlvbnMgJ2xpc3Rlbicgb3UgJ2RlZmF1bHQnCiAgICAtZCBhY3RpdmUgbGUgbW9kZSBkZWJ1ZwogICAgLUQgcGFzc2UgZW4gZGFlbW9uCiAgICAtcSBk6XNhY3RpdmUgbCdhZmZpY2hhZ2UgZGUgbWVzc2FnZXMgc3VyIGxhIHNvcnRpZSBzdGFuZGFyZC4KICAgIC1WIGFmZmljaGUgbGVzIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQsIG3qbWUgc2kgLXEgb3UgJ3F1aWV0JyBzb250CiAgICAgICBzcOljaWZp6XMuCiAgICAtYyB26XJpZmllIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBwdWlzIHF1aXR0ZSBhdmVjIHVuIGNvZGUgZGUgcmV0b3VyIDAKICAgICAgIHNpIGF1Y3VuZSBlcnJldXIgbidhIOl06SB0cm91dullLCBvdSAxIHNpIHVuZSBlcnJldXIgZGUgc3ludGF4ZSBhIOl06QogICAgICAgZOl0ZWN06WUuCiAgICAtcCA8ZmljaGllcj4gaW5kaXF1ZSBhdSBwcm9jZXNzdXMgcOhyZSBxdSdpbCBkb2l0IOljcmlyZSBsZXMgUElEcyBkZSBzZXMKICAgICAgIGZpbHMgZGFucyBjZSBmaWNoaWVyIGVuIG1vZGUgZOltb24uCiAgICAtc2Ygc3BlY2lmaWUgdW5lIGxpc3RlIGRlIFBJRHMgYXV4cXVlbHMgZW52b3llciB1biBzaWduYWwgRklOSVNICiAgICAtc3Qgc3BlY2lmaWUgdW5lIGxpc3RlIGRlIFBJRHMgYXV4cXVlbHMgZW52b3llciB1biBzaWduYWwgVEVSTUlOQVRFCiAgICAtcyBhZmZpY2hlIGxlcyBzdGF0aXN0aXF1ZXMgKHNpIG9wdGlvbiBjb21waWzpZSkKICAgIC1sIGFqb3V0ZSBkZXMgaW5mb3JtYXRpb25zIGF1eCBzdGF0aXN0aXF1ZXMKICAgIC1kayBk6XNhY3RpdmUgbCd1dGlsaXNhdGlvbiBkZSBrcXVldWUoKQogICAgLWRzIGTpc2FjdGl2ZSBsJ3V0aWxpc2F0aW9uIGRlIGVwb2xsKCkgc3BlY3VsYXRpZgogICAgLWRlIGTpc2FjdGl2ZSBsJ3V0aWxpc2F0aW9uIGRlIGVwb2xsKCkKICAgIC1kcCBk6XNhY3RpdmUgbCd1dGlsaXNhdGlvbiBkZSBwb2xsKCkKICAgIC1kYiBk6XNhY3RpdmUgbGEgbWlzZSBlbiBhcnJp6HJlLXBsYW4gKHV0aWxlIHBvdXIgZOlidWdnZXIpCiAgICAtbSA8bWVncz4gYXBwbGlxdWUgdW5lIGxpbWl0YXRpb24gZGUgPG1lZ3M+IE1vIGQndXRpbGlzYXRpb24gbeltb2lyZQoKTGUgbm9tYnJlIG1heGltYWwgZGUgY29ubmV4aW9uIHNpbXVsdGFu6WVzIHBhciBwcm94eSBlc3QgbGUgcGFyYW3odHJlIHBhcgpk6WZhdXQgcG91ciBsZXMgcHJveGllcyBwb3VyIGxlc3F1ZWxzIGNlIHBhcmFt6HRyZSBuJ2VzdCBwYXMgcHLpY2lz6SBkYW5zIGxlCmZpY2hpZXIgZGUgY29uZmlndXJhdGlvbi4gSWwgcydhZ2l0IGR1IHBhcmFt6HRyZSAnbWF4Y29ubicgZGFucyBsZXMgc2VjdGlvbnMKJ2xpc3RlbicuCgpMZSBub21icmUgbWF4aW1hbCB0b3RhbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzIGxpbWl0ZSBsZSBub21icmUgZGUKY29ubmV4aW9ucyBUQ1AgdXRpbGlzYWJsZXMg4CB1biBpbnN0YW50IGRvbm7pIHBhciBsZSBwcm9jZXNzdXMsIHRvdXMgcHJveGllcwpjb25mb25kdXMuIENlIHBhcmFt6HRyZSByZW1wbGFjZSBsZSBwYXJhbeh0cmUgJ21heGNvbm4nIGRlIGxhIHNlY3Rpb24gJ2dsb2JhbCcuCgpMZSBtb2RlIGRlYnVnIGNvcnJlc3BvbmQg4CBsJ29wdGlvbiAnZGVidWcnIGRlIGxhIHNlY3Rpb24gJ2dsb2JhbCcuIERhbnMgY2UKbW9kZSwgdG91dGVzIGxlcyBjb25uZXhpb25zLCBk6WNvbm5leGlvbnMsIGV0IHRvdXMgbGVzIOljaGFuZ2VzIGQnZW4tdOp0ZXMgSFRUUApzb250IGFmZmljaOlzLgoKUG91ciBkZWJ1Z2dlciwgbCdvcHRpb24gJy1kYicgZXN0IHRy6HMgcHJhdGlxdWUgY2FyIGVsbGUgZOlzYWN0aXZlCnRlbXBvcmFpcmVtZW50IGxlIG1vZGUgZGFlbW9uIGV0IGxlIG1vZGUgbXVsdGktcHJvY2Vzc3VzLiBMZSBzZXJ2aWNlIHBldXQgYWxvcnMK6nRyZSBhcnLqdOkgcGFyIHVuIHNpbXBsZSBhcHB1aSBzdXIgQ3RybC1DLCBzYW5zIGF2b2lyIOAgbW9kaWZpZXIgbGEKY29uZmlndXJhdGlvbiBuaSDgIGFjdGl2ZXIgbGUgbW9kZSBkZWJ1ZyBjb21wbGV0LgoKTGVzIHN0YXRpc3RpcXVlcyBuZSBzb250IGRpc3BvbmlibGVzIHF1ZSBzaSBsZSBwcm9ncmFtbWUgYSDpdOkgY29tcGls6SBhdmVjCmwnb3B0aW9uICJTVEFUVElNRSIuIElsIHMnYWdpdCBwcmluY2lwYWxlbWVudCBkZSBkb25u6WVzIGJydXRlcyBuJ2F5YW50CmQndXRpbGl06SBxdWUgbG9ycyBkZSBiZW5jaG1hcmtzIHBhciBleGVtcGxlLCBldCBzb250IGFtZW7pZXMg4CBkaXNwYXJhaXRyZS4KCkxlcyBwYXJhbeh0cmVzICctc3QnIGV0ICctc2YnIHNvbnQgdXRpbGlz6XMgcG91ciBsYSByZWNvbmZpZ3VyYXRpb24g4CBjaGF1ZC4KVm9pciBsYSBzZWN0aW9uIOAgY2Ugc3VqZXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgRmljaGllciBkZSBjb25maWd1cmF0aW9uIHwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKU3RydWN0dXJlCj09PT09PT09PQoKTCdhbmFseXNldXIgZHUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGlnbm9yZSBkZXMgbGlnbmVzIHZpZGVzLCBsZXMgZXNwYWNlcywKbGVzIHRhYnVsYXRpb25zLCBldCB0b3V0IGNlIHF1aSBlc3QgY29tcHJpcyBlbnRyZSBsZSBzeW1ib2xlICcjJyAocydpbCBuJ2VzdApwYXMgcHLpY+lk6SBkJ3VuICdcJyksIGV0IGxhIGZpbiBkZSBsYSBsaWduZSwgY2UgcXVpIGNvbnN0aXR1ZSB1biBjb21tZW50YWlyZS4KCkxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBlc3QgZOljb3Vw6SBlbiBzZWN0aW9ucyBy6XDpcullcyBwYXIgZGVzIG1vdHMgY2zpcwp0ZWxzIHF1ZSA6CgogIC0gJ2dsb2JhbCcKICAtICdsaXN0ZW4nCiAgLSAnZGVmYXVsdHMnCgpUb3VzIGxlcyBwYXJhbeh0cmVzIGZvbnQgculm6XJlbmNlIOAgbGEgc2VjdGlvbiBk6WZpbmllIHBhciBsZSBkZXJuaWVyIG1vdCBjbOkKcmVjb25udS4KCgoxKSBQYXJhbeh0cmVzIGdsb2JhdXgKPT09PT09PT09PT09PT09PT09PT09CgpJbCBzJ2FnaXQgZGVzIHBhcmFt6HRyZXMgYWdpc3NhbnQgc3VyIGxlIHByb2Nlc3N1cywgb3UgYmllbiBzdXIgbCdlbnNlbWJsZSBkZXMKcHJveGllcy4gSWxzIHNvbnQgdG91cyBzcOljaWZp6XMgZGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLiBMZXMgcGFyYW3odHJlcwpzdXBwb3J06XMgc29udCA6CgogIC0gbG9nIDxhZHJlc3NlPiA8Y2F06WdvcmllPiBbbml2ZWF1X21heF0KICAtIG1heGNvbm4gPG5vbWJyZT4KICAtIHVpZCA8aWRlbnRpZmlhbnQ+CiAgLSBnaWQgPGlkZW50aWZpYW50PgogIC0gdXNlciA8bm9tIGQndXRpbGlzYXRldXI+CiAgLSBncm91cCA8bm9tIGRlIGdyb3VwZT4KICAtIGNocm9vdCA8culwZXJ0b2lyZT4KICAtIG5icHJvYyA8bm9tYnJlPgogIC0gZGFlbW9uCiAgLSBkZWJ1ZwogIC0gbm9rcXVldWUKICAtIG5vc2Vwb2xsCiAgLSBub2Vwb2xsCiAgLSBub3BvbGwKICAtIHF1aWV0CiAgLSBwaWRmaWxlIDxmaWNoaWVyPgogIC0gdWxpbWl0LW4gPG5vbWJyZT4KICAtIHR1bmUubWF4cG9sbGV2ZW50cyA8bm9tYnJlPgoKCjEuMSkgSm91cm5hbGlzYXRpb24gZGVzIOl26W5lbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSBwbHVwYXJ0IGRlcyDpduluZW1lbnRzIHNvbnQgam91cm5hbGlz6XMgOiBk6W1hcnJhZ2VzLCBhcnLqdHMsIGRpc3Bhcml0aW9uIGV0CmFwcGFyaXRpb24gZGUgc2VydmV1cnMsIGNvbm5leGlvbnMsIGVycmV1cnMuIFRvdXMgbGVzIG1lc3NhZ2VzIHNvbnQgZW52b3npcyBlbgpzeXNsb2cgdmVycyB1biBvdSBkZXV4IHNlcnZldXJzLiBMYSBzeW50YXhlIGVzdCBsYSBzdWl2YW50ZSA6CgogICAgbG9nIDxhZHJlc3NlX2lwPiA8Y2F06WdvcmllPiBbbml2ZWF1X21heF0KCkxlcyBjb25uZXhpb25zIHNvbnQgZW52b3npZXMgZW4gbml2ZWF1ICJpbmZvIi4gTGVzIGTpbWFycmFnZXMgZGUgc2VydmljZSBldCBkZQpzZXJ2ZXVycyBzZXJvbnQgZW52b3npcyBlbiAibm90aWNlIiwgbGVzIHNpZ25hdXggZCdhcnLqdHMgZW4gIndhcm5pbmciIGV0IGxlcwphcnLqdHMgZOlmaW5pdGlmcyBkZSBzZXJ2aWNlcyBldCBkZSBzZXJ2ZXVycyBlbiAiYWxlcnQiLiBDZWNpIGVzdCB2YWxhYmxlIGF1c3NpCmJpZW4gcG91ciBsZXMgcHJveGllcyBxdWUgcG91ciBsZXMgc2VydmV1cnMgdGVzdOlzIHBhciBsZXMgcHJveGllcy4gTGUKcGFyYW3odHJlIG9wdGlvbm5lbCA8bml2ZWF1X21heD4gZOlmaW5pdCBsZSBuaXZlYXUgbWF4aW1hbCBkZSB0cmFjZXMg6W1pc2VzCnBhcm1pIGxlcyA4IHZhbGV1cnMgc3VpdmFudGVzICA6CiAgICBlbWVyZywgYWxlcnQsIGNyaXQsIGVyciwgd2FybmluZywgbm90aWNlLCBpbmZvLCBkZWJ1ZwoKUGFyIGNvbXBhdGliaWxpdOkgYXZlYyBsZXMgdmVyc2lvbnMgMS4xLjE2IGV0IGFudOlyaWV1cmVzLCBsYSB2YWxldXIgcGFyIGTpZmF1dAplc3QgImRlYnVnIiBzaSBsJ29wdGlvbiBuJ2VzdCBwYXMgcHLpY2lz6WUuCgpMZXMgY2F06WdvcmllcyBwb3NzaWJsZXMgc29udCA6CiAgICBrZXJuLCB1c2VyLCBtYWlsLCBkYWVtb24sIGF1dGgsIHN5c2xvZywgbHByLCBuZXdzLAogICAgdXVjcCwgY3JvbiwgYXV0aDIsIGZ0cCwgbnRwLCBhdWRpdCwgYWxlcnQsIGNyb24yLAogICAgbG9jYWwwLCBsb2NhbDEsIGxvY2FsMiwgbG9jYWwzLCBsb2NhbDQsIGxvY2FsNSwgbG9jYWw2LCBsb2NhbDcKCkNvbmZvcm3pbWVudCDgIGxhIFJGQzMxNjQsIGxlcyBtZXNzYWdlcyDpbWlzIHNvbnQgbGltaXTpcyDgIDEwMjQgY2FyYWN06HJlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwogICAgICAgIGxvZyAxMjcuMC4wLjEgICAgIGxvY2FsNCBub3RpY2UKCjEuMikgbGltaXRhdGlvbiBkdSBub21icmUgZGUgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGV0IGNvbnNlaWxs6SBkZSBsaW1pdGVyIGxlIG5vbWJyZSBnbG9iYWwgZGUgY29ubmV4aW9ucyBwYXIKcHJvY2Vzc3VzIOAgbCdhaWRlIGR1IG1vdCBjbOkgZ2xvYmFsICdtYXhjb25uJy4gTGVzIGNvbm5leGlvbnMgc29udCBjb21wcmlzZXMKYXUgc2VucyAnYWNjZXB0YXRpb24gZGUgY29ubmV4aW9uJywgZG9uYyBpbCBmYXV0IHMnYXR0ZW5kcmUgZW4gcuhnbGUgZ+lu6XJhbCDgCmF2b2lyIHVuIHBldSBwbHVzIGR1IGRvdWJsZSBkZSBzZXNzaW9ucyBUQ1AgcXVlIGxlIG1heGltdW0gZGUgY29ubmV4aW9ucyBmaXjpLgpDJ2VzdCBpbXBvcnRhbnQgcG91ciBmaXhlciBsZSBwYXJhbeh0cmUgJ3VsaW1pdCAtbicgYXZhbnQgZGUgbGFuY2VyIGxlIHByb3h5LgpQb3VyIGNvbXB0YWJpbGlzZXIgbGUgbm9tYnJlIGRlIHNvY2tldHMgbuljZXNzYWlyZXMsIGlsIGZhdXQgcHJlbmRyZSBlbiBjb21wdGUKY2VzIHBhcmFt6HRyZXMgOgoKICAtIDEgc29ja2V0IHBhciBjb25uZXhpb24gZW50cmFudGUKICAtIDEgc29ja2V0IHBhciBjb25uZXhpb24gc29ydGFudGUKICAtIDEgc29ja2V0IHBhciBjb3VwbGUgYWRyZXNzZS9wb3J0IGQn6WNvdXRlIHBhciBwcm94eQogIC0gMSBzb2NrZXQgcG91ciBjaGFxdWUgc2VydmV1ciBlbiBjb3VycyBkZSBoZWFsdGgtY2hlY2sKICAtIDEgc29ja2V0IHBvdXIgbGVzIGxvZ3MgKHRvdXMgc2VydmV1cnMgY29uZm9uZHVzKQoKRGFucyBsZSBjYXMgb/kgY2hhcXVlIHByb3h5IG4n6WNvdXRlIHF1ZSBzdXIgdW4gY291cGxlIGFkcmVzc2UvcG9ydCwKcG9zaXRpb25uZXIgbGEgbGltaXRlIGR1IG5vbWJyZSBkZSBkZXNjcmlwdGV1cnMgZGUgZmljaGllcnMgKHVsaW1pdCAtbikg4CAKKDIgKiBtYXhjb25uICsgbmJwcm94eSArIG5ic2VydmV1cnMgKyAxKS4gQSBwYXJ0aXIgZGVzIHZlcnNpb25zIDEuMS4zMi8xLjIuNiwKaWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciBjZXR0ZSBsaW1pdGUgZGFucyBsYSBjb25maWd1cmF0aW9uIOAgbCdhaWRlIGR1Cm1vdC1jbOkgZ2xvYmFsICd1bGltaXQtbicsIOAgY29uZGl0aW9uIGJpZW4gZW50ZW5kdSBxdWUgbGUgcHJveHkgYWl0IOl06Qpk6W1hcnLpIHNvdXMgbGUgY29tcHRlIHJvb3QgKG91IGF2ZWMgZGVzIGRyb2l0cyBzdWZmaXNhbnRzIHBvdXIg6WxldmVyIGxlCm5vbWJyZSBkZSBkZXNjcmlwdGV1cnMgZGUgZmljaGllcnMpLiBDZXR0ZSBzb2x1dGlvbiBtZXQgdW4gdGVybWUgYXUgcHJvYmzobWUKculjdXJyZW50IGQnaW5jZXJ0aXR1ZGUgZGUgbCdhZOlxdWF0aW9uIGVudHJlIGxlcyBsaW1pdGVzIHN5c3TobWVzIGxvcnMgZGUgbGEKZGVybmnocmUgcmVsYW5jZSBkdSBwcm94ZXNzdXMgZXQgbGVzIGxpbWl0ZXMgZW4gbm9tYnJlIGRlIGNvbm5leGlvbnMuIE5vdGVyIHF1ZQpjZXR0ZSBsaW1pdGUgcydhcHBsaXF1ZSBwYXIgcHJvY2Vzc3VzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgZ2xvYmFsCiAgICAgICAgbWF4Y29ubiAzMjAwMAogICAgICAgIHVsaW1pdC1uIDY1NTM2CgoKMS4zKSBEaW1pbnV0aW9uIGRlcyBwcml2aWzoZ2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBZmluIGRlIHLpZHVpcmUgbGVzIHJpc3F1ZXMgZCdhdHRhcXVlcyBkYW5zIGxlIGNhcyBv+SB1bmUgZmFpbGxlIG5vbiBpZGVudGlmaellCnNlcmFpdCBleHBsb2l06WUsIGlsIGVzdCBwb3NzaWJsZSBkZSBkaW1pbnVlciBsZXMgcHJpdmls6GdlcyBkdSBwcm9jZXNzdXMsIGV0CmRlIGwnaXNvbGVyIGRhbnMgdW4gculwZXJ0b2lyZSBzYW5zIHJpc3F1ZS4KCkRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJywgbGUgcGFyYW3odHJlICd1aWQnIHBlcm1ldCBkZSBzcOljaWZpZXIgdW4gaWRlbnRpZmlhbnQKbnVt6XJpcXVlIGQndXRpbGlzYXRldXIuIExhIHZhbGV1ciAwLCBjb3JyZXNwb25kYW50IG5vcm1hbGVtZW50IGF1IHN1cGVyLQp1dGlsaXNhdGV1ciwgcG9zc+hkZSBpY2kgdW5lIHNpZ25pZmljYXRpb24gcGFydGljdWxp6HJlIGNhciBlbGxlIGluZGlxdWUgcXVlCmwnb24gbmUgc291aGFpdGUgcGFzIGNoYW5nZXIgY2V0IGlkZW50aWZpYW50IGV0IGNvbnNlcnZlciBsYSB2YWxldXIgY291cmFudGUuCkMnZXN0IGxhIHZhbGV1ciBwYXIgZOlmYXV0LiBEZSBsYSBt6m1lIG1hbmnocmUsIGxlIHBhcmFt6HRyZSAnZ2lkJyBjb3JyZXNwb25kIOAKdW4gaWRlbnRpZmlhbnQgZGUgZ3JvdXBlLCBldCB1dGlsaXNlIHBhciBk6WZhdXQgbGEgdmFsZXVyIDAgcG91ciBuZSByaWVuCmNoYW5nZXIuIERhbnMgbGUgY2FzIG/5IGlsIG5lIHNlcmFpdCBwYXMgcG9zc2libGUgZGUgc3DpY2lmaWVyIHVuIGlkZW50aWZpYW50Cm51belyaXF1ZSBwb3VyIGwndWlkLCBpbCBlc3QgcG9zc2libGUgZGUgc3DpY2lmaWVyIHVuIG5vbSBkJ3V0aWxpc2F0ZXVyIGFwcuhzCmxlIG1vdC1jbOkgJ3VzZXInLiBEZSBsYSBt6m1lIG1hbmnocmUsIGlsIGVzdCBwb3NzaWJsZSBkZSBwculjaXNlciB1biBub20gZGUKZ3JvdXBlIGFwcuhzIGxlIG1vdC1jbOkgJ2dyb3VwJy4KCklsIGVzdCBwYXJ0aWN1bGnocmVtZW50IGTpY29uc2VpbGzpIGQndXRpbGlzZXIgZGVzIGNvbXB0ZXMgZ+lu6XJpcXVlcyB0ZWxzIHF1ZQonbm9ib2R5JyBjYXIgY2V0dGUgcHJhdGlxdWUgcmV2aWVudCDgIHV0aWxpc2VyICdyb290JyBzaSBkJ2F1dHJlcyBwcm9jZXNzdXMKdXRpbGlzZW50IGxlcyBt6m1lcyBpZGVudGlmaWFudHMuCgpMZSBwYXJhbeh0cmUgJ2Nocm9vdCcgYXV0b3Jpc2Ug4CBjaGFuZ2VyIGxhIHJhY2luZSBkdSBwcm9jZXNzdXMgdW5lIGZvaXMgbGUKcHJvZ3JhbW1lIGxhbmPpLCBkZSBzb3J0ZSBxdWUgbmkgbGUgcHJvY2Vzc3VzLCBuaSBsJ3VuIGRlIHNlcyBkZXNjZW5kYW50cyBuZQpwdWlzc2VudCByZW1vbnRlciBkZSBub3V2ZWF1IOAgbGEgcmFjaW5lLiBDZSB0eXBlIGRlIGNsb2lzb25uZW1lbnQgKGNocm9vdCkgZXN0CmfpbulyYWxlbWVudCBjb250b3VybmFibGUgc3VyIGNlcnRhaW5zIE9TIChMaW51eCwgU29sYXJpcykgcG91ciBwZXUgcXVlCmwnYXR0YXF1YW50IHBvc3PoZGUgZGVzIGRyb2l0cyAncm9vdCcgZXQgc29pdCBlbiBtZXN1cmUgZCd1dGlsaXNlciBvdSBkZSBjcullcgp1biBy6XBlcnRvaXJlLiBBdXNzaSwgaWwgZXN0IGltcG9ydGFudCBkJ3V0aWxpc2VyIHVuIHLpcGVydG9pcmUgc3DpY2lmaXF1ZSBhdQpzZXJ2aWNlIHBvdXIgY2V0IHVzYWdlLCBldCBkZSBuZSBwYXMgbXV0dWFsaXNlciB1biBt6m1lIHLpcGVydG9pcmUgcG91cgpwbHVzaWV1cnMgc2VydmljZXMgZGUgbmF0dXJlIGRpZmbpcmVudGUuIFBvdXIgcmVuZHJlIGwnaXNvbGVtZW50IHBsdXMgcm9idXN0ZSwKaWwgZXN0IGNvbnNlaWxs6SBkJ3V0aWxpc2VyIHVuIHLpcGVydG9pcmUgdmlkZSwgc2FucyBhdWN1biBkcm9pdCwgZXQgZGUgY2hhbmdlcgpsJ3VpZCBkdSBwcm9jZXNzdXMgZGUgc29ydGUgcXUnaWwgbmUgcHVpc3NlIHJpZW4gZmFpcmUgZGFucyBsZWRpdCBy6XBlcnRvaXJlLgoKUmVtYXJxdWUgaW1wb3J0YW50ZSA6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxlIGNhcyBv+SB1bmUgdGVsbGUgZmFpbGxlIHNlcmFpdCBtaXNlIGVuIOl2aWRlbmNlLCBpbCBlc3QgZm9ydCBwcm9iYWJsZQpxdWUgbGVzIHByZW1p6HJlcyB0ZW50YXRpdmVzIGRlIHNvbiBleHBsb2l0YXRpb24gcHJvdm9xdWVudCB1biBhcnLqdCBkdQpwcm9ncmFtbWUsIOAgY2F1c2UgZCd1biBzaWduYWwgZGUgdHlwZSAnU2VnbWVudGF0aW9uIEZhdWx0JywgJ0J1cyBFcnJvcicgb3UKZW5jb3JlICdJbGxlZ2FsIEluc3RydWN0aW9uJy4gTeptZSBzJ2lsIGVzdCB2cmFpIHF1ZSBmYWlyZSB0b3VybmVyIGxlIHNlcnZldXIKZW4gZW52aXJvbm5lbWVudCBsaW1pdOkgculkdWl0IGxlcyByaXNxdWVzIGQnaW50cnVzaW9uLCBpbCBlc3QgcGFyZm9pcyBiaWVuCnV0aWxlIGRhbnMgY2VzIGNpcmNvbnN0YW5jZXMgZGUgY29ubmHudHJlIGxlcyBjb25kaXRpb25zIGQnYXBwYXJpdGlvbiBkdQpwcm9ibOhtZSwgdmlhIGwnb2J0ZW50aW9uIGQndW4gZmljaGllciAnY29yZScuIExhIHBsdXBhcnQgZGVzIHN5c3TobWVzLCBwb3VyCmRlcyByYWlzb25zIGRlIHPpY3VyaXTpLCBk6XNhY3RpdmVudCBsYSBn6W7pcmF0aW9uIGR1IGZpY2hpZXIgJ2NvcmUnIGFwcuhzIHVuCmNoYW5nZW1lbnQgZCdpZGVudGlmaWFudCBwb3VyIGxlIHByb2Nlc3N1cy4gSWwgZmF1ZHJhIGRvbmMgc29pdCBsYW5jZXIgbGUKcHJvY2Vzc3VzIOAgcGFydGlyIGQndW4gY29tcHRlIHV0aWxpc2F0ZXVyIGF1eCBkcm9pdHMgculkdWl0cyAobWFpcyBuZSBwb3V2YW50CnBhcyBlZmZlY3R1ZXIgbGUgY2hyb290KSwgb3UgYmllbiBsZSBmYWlyZSBlbiByb290IHNhbnMgculkdWN0aW9uIGRlcyBkcm9pdHMKKHVpZCAwKS4gRGFucyBjZSBjYXMsIGxlIGZpY2hpZXIgc2UgdHJvdXZlcmEgc29pdCBkYW5zIGxlIHLpcGVydG9pcmUgZGUKbGFuY2VtZW50LCBzb2l0IGRhbnMgbGUgculwZXJ0b2lyZSBzcOljaWZp6SBhcHLocyBsJ29wdGlvbiAnY2hyb290Jy4gTmUgcGFzCm91YmxpZXIgbGEgY29tbWFuZGUgc3VpdmFudGUgcG91ciBhdXRvcmlzZXIgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyIGF2YW50IGRlCmxhbmNlciBsZSBwcm9ncmFtbWUgOgoKIyB1bGltaXQgLWMgdW5saW1pdGVkCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgIyB3aXRoIHVpZC9naWQKICAgIGdsb2JhbAogICAgICAgIHVpZCAgICAgICAgMzAwMDAKICAgICAgICBnaWQgICAgICAgIDMwMDAwCiAgICAgICAgY2hyb290ICAvdmFyL2Nocm9vdC9oYXByb3h5CgogICAgIyB3aXRoIHVzZXIvZ3JvdXAKICAgIGdsb2JhbAogICAgICAgIHVzZXIgICAgaGFwcm94eQogICAgICAgIGdyb3VwICAgcHVibGljCiAgICAgICAgY2hyb290ICAvdmFyL2Nocm9vdC9oYXByb3h5CgoKMS40KSBNb2RlcyBkZSBmb25jdGlvbm5lbWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlIHNlcnZpY2UgcGV1dCBmb25jdGlvbm5lciBkYW5zIHBsdXNpZXVycyBtb2RlcyA6CiAgLSBhdmFudC0gLyBhcnJp6HJlLXBsYW4KICAtIHNpbGVuY2lldXggLyBub3JtYWwgLyBkZWJ1ZwoKTGUgbW9kZSBwYXIgZOlmYXV0IGVzdCBub3JtYWwsIGF2YW50LXBsYW4sIGMnZXN0IOAgZGlyZSBxdWUgbGUgcHJvZ3JhbW1lIG5lCnJlbmQgcGFzIGxhIG1haW4gdW5lIGZvaXMgbGFuY+kuIElsIG5lIGZhdXQgc3VydG91dCBwYXMgbGUgbGFuY2VyIGNvbW1lIGNlY2kKZGFucyB1biBzY3JpcHQgZGUgZOltYXJyYWdlIGR1IHN5c3TobWUsIHNpbm9uIGxlIHN5c3TobWUgbmUgZmluaXJhaXQgcGFzIHNvbgppbml0aWFsaXNhdGlvbi4gSWwgZmF1dCBsZSBtZXR0cmUgZW4gYXJyaehyZS1wbGFuLCBkZSBzb3J0ZSBxdSdpbCByZW5kZSBsYSBtYWluCmF1IHByb2Nlc3N1cyBhcHBlbGFudC4gQydlc3QgY2UgcXVlIGZhaXQgbCdvcHRpb24gJ2RhZW1vbicgZGUgbGEgc2VjdGlvbgonZ2xvYmFsJywgZXQgcXVpIGVzdCBsJ+lxdWl2YWxlbnQgZHUgcGFyYW3odHJlICctRCcgZGUgbGEgbGlnbmUgZGUgY29tbWFuZGUuCgpMZSBwYXJhbeh0cmUgZGUgbGlnbmUgZGUgY29tbWFuZGUgJy1kYicgaW5oaWJlIGxlcyBvcHRpb25zIGdsb2JhbGVzICdkYWVtb24nCmV0ICduYnByb2MnIHBvdXIgZmFpcmUgZm9uY3Rpb25uZXIgbGUgcHJvY2Vzc3VzIGVuIG1vZGUgbm9ybWFsLCBhdmFudC1wbGFuLgoKUGFyIGFpbGxldXJzLCBjZXJ0YWlucyBtZXNzYWdlcyBkJ2FsZXJ0ZSBzb250IHRvdWpvdXJzIGVudm956XMgc3VyIGxhIHNvcnRpZQpzdGFuZGFyZCwgbeptZSBlbiBtb2RlICdkYWVtb24nLiBQb3VyIG5lIHBsdXMgbGVzIHZvaXIgYWlsbGV1cnMgcXVlIGRhbnMgbGVzCmxvZ3MsIGlsIHN1ZmZpdCBkZSBwYXNzZXIgZW4gbW9kZSBzaWxlbmNpZXV4IHBhciBsJ2Fqb3V0IGRlIGwnb3B0aW9uICdxdWlldCcuCkNldHRlIG9wdGlvbiBuJ2EgcGFzIGQn6XF1aXZhbGVudCBlbiBsaWduZSBkZSBjb21tYW5kZS4KCkVuZmluLCBsZSBtb2RlICdkZWJ1ZycgcGVybWV0IGRlIGRpYWdub3N0aXF1ZXIgbGVzIG9yaWdpbmVzIGRlIGNlcnRhaW5zCnByb2Js6G1lcyBlbiBhZmZpY2hhbnQgbGVzIGNvbm5leGlvbnMsIGTpY29ubmV4aW9ucyBldCDpY2hhbmdlcyBkJ2VuLXTqdGVzIEhUVFAKZW50cmUgbGVzIGNsaWVudHMgZXQgbGVzIHNlcnZldXJzLiBDZSBtb2RlIGVzdCBpbmNvbXBhdGlibGUgYXZlYyBsZXMgb3B0aW9ucwonZGFlbW9uJyBldCAncXVpZXQnIHBvdXIgZGVzIHJhaXNvbnMgZGUgYm9uIHNlbnMuCgoxLjUpIEFjY3JvaXNzZW1lbnQgZGUgbGEgY2FwYWNpdOkgZGUgdHJhaXRlbWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdXIgZGVzIG1hY2hpbmVzIG11bHRpLXByb2Nlc3NldXJzLCBpbCBwZXV0IHNlbWJsZXIgZ+JjaOkgZGUgbid1dGlsaXNlciBxdSd1bgpwcm9jZXNzZXVyIHBvdXIgZWZmZWN0dWVyIGxlcyB04mNoZXMgZGUgcmVsYXlhZ2UsIG3qbWUgc2kgbGVzIGNoYXJnZXMKbuljZXNzYWlyZXMg4CBzYXR1cmVyIHVuIHByb2Nlc3NldXIgYWN0dWVsIHNvbnQgYmllbiBhdS1kZWzgIGRlcyBvcmRyZXMgZGUKZ3JhbmRldXIgY291cmFtbWVudCByZW5jb250culzLiBDZXBlbmRhbnQsIHBvdXIgZGVzIGJlc29pbnMgcGFydGljdWxpZXJzLCBsZQpwcm9ncmFtbWUgc2FpdCBk6W1hcnJlciBwbHVzaWV1cnMgcHJvY2Vzc3VzIHNlIHLpcGFydGlzc2FudCBsYSBjaGFyZ2UgZGUKdHJhdmFpbC4gQ2Ugbm9tYnJlIGRlIHByb2Nlc3N1cyBlc3Qgc3DpY2lmaekgcGFyIGxlIHBhcmFt6HRyZSAnbmJwcm9jJyBkZSBsYQpzZWN0aW9uICdnbG9iYWwnLiBTYSB2YWxldXIgcGFyIGTpZmF1dCBlc3QgbmF0dXJlbGxlbWVudCAxLiBDZWNpIG5lIGZvbmN0aW9ubmUKcXUnZW4gbW9kZSAnZGFlbW9uJy4gVW4gdXNhZ2UgZOlq4CByZW5jb250cukgcG91ciBjZSBwYXJhbeh0cmUgZnV0IGRlIGTpcGFzc2VyCmxhIGxpbWl0ZSBkZSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzIGFsbG916WUgcGFyIHByb2Nlc3N1cyBzb3VzClNvbGFyaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgZ2xvYmFsCiAgICAgICAgZGFlbW9uCiAgICAgICAgcXVpZXQKICAgICAgICBuYnByb2MgICAgICAgIDIKCjEuNikgU2ltcGxpZmljYXRpb24gZGUgbGEgZ2VzdGlvbiBkZXMgcHJvY2Vzc3VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkhhcHJveHkgc3VwcG9ydGUgZG9y6W5hdmFudCBsYSBub3Rpb24gZGUgZmljaGllcnMgZGUgcGlkICgtPiBwaWRmaWxlcykuIFNpIGxlCnBhcmFt6HRyZSAnLXAnIGRlIGxpZ25lIGRlIGNvbW1hbmRlLCBvdSBsJ29wdGlvbiBnbG9iYWxlICdwaWRmaWxlJyBzb250IHN1aXZpcwpkJ3VuIG5vbSBkZSBmaWNoaWVyLCBhbG9ycyBjZSBmaWNoaWVyIHNlcmEgc3VwcHJpbekgcHVpcyByZWNy6ekgZXQgY29udGllbmRyYQpsZSBudW3pcm8gZGUgUElEIGRlcyBwcm9jZXNzdXMgZmlscywg4CByYWlzb24gZCd1biBwYXIgbGlnbmUgKHZhbGFibGUKdW5pcXVlbWVudCBlbiBtb2RlIGTpbW9uKS4gQ2UgZmljaGllciBuJ2VzdCBQQVMgcmVsYXRpZiBhdSBjbG9pc29ubmVtZW50IGNocm9vdAphZmluIGRlIHJlc3RlciBjb21wYXRpYmxlIGF2ZWMgdW4gculwZXJ0b2lyZSBwcm906WfpIGVuIGxlY3R1cmUgc2V1bGUuIElsCmFwcGFydGllbmRyYSDgIGwndXRpbGlzYXRldXIgYXlhbnQgbGFuY+kgbGUgcHJvY2Vzc3VzLCBldCBkaXNwb3NlcmEgZGVzIGRyb2l0cwowNjQ0LgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAogICAgICAgIGRhZW1vbgogICAgICAgIHF1aWV0CiAgICAgICAgbmJwcm9jIDIKICAgICAgICBwaWRmaWxlIC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQKCiAgICAjIHBvdXIgc3RvcHBlciBzZXVsZW1lbnQgY2VzIHByb2Nlc3N1cyBwYXJtaSBkJ2F1dHJlcyA6CiAgICAjIGtpbGwgJCg8L3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCkKCiAgICAjIHBvdXIgcmVjaGFyZ2VyIHVuZSBjb25maWd1cmF0aW9uIGF2ZWMgdW4gaW1wYWN0IG1pbmltYWwgc3VyIGxlIHNlcnZpY2UsCiAgICAjIGV0IHNhbnMgY2Fzc2VyIGxlcyBzZXNzaW9ucyBleGlzdGFudGVzIDoKICAgICMgaGFwcm94eSAtZiBoYXByb3h5LmNmZyAtcCAvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkIC1zZiAkKDwvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkKQoKMS43KSBN6WNhbmlzbWVzIGRlIHRyYWl0ZW1lbnRzIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBIHBhcnRpciBkZSBsYSB2ZXJzaW9uIDEuMi41LCBoYXByb3h5IHN1cHBvcnRlIGxlcyBt6WNhbmlzbWVzIHBvbGwoKSBldAplcG9sbCgpLiBTdXIgbGVzIHN5c3RlbXMgb/kgc2VsZWN0KCkgZXN0IGxpbWl06SBwYXIgRkRfU0VUU0laRSAoY29tbWUgU29sYXJpcyksCnBvbGwoKSBwZXV0IOp0cmUgdW5lIGFsdGVybmF0aXZlIGludOlyZXNzYW50ZS4gRGVzIHRlc3RzIGRlIHBlcmZvcm1hbmNlCm1vbnRyZW50IHF1ZSBsZXMgcGVyZm9ybWFuY2VzIGRlIHBvbGwoKSBuZSBk6WNyb2lzc2VudCBwYXMgYXVzc2kgdml0ZSBxdWUgbGUKbm9tYnJlIGRlIHNvY2tldHMgYXVnbWVudGUsIGNlIHF1aSBlbiBmYWl0IHVuZSBzb2x1dGlvbiBz+3JlIHBvdXIgbGVzIGZvcnRlcwpjaGFyZ2VzLiBDZWxhIGRpdCwgU29hbHJpcyB1dGlsaXNlIGTpauAgcG9sbCgpIHBvdXIg6W11bGVyIHNlbGVjdCgpLCBkb25jIHRhbnQKcXVlIGxlIG5vbWJyZSBkZSBzb2NrZXRzIG5lIGTpcGFzc2UgcGFzIEZEX1NFVFNJWkUsIHBvbGwoKSBuZSBkZXZyYWl0IHBhcwphcHBvcnRlciBkZSBwZXJmb3JtYW5jZXMgc3VwcGzpbWVudGFpcmVzLiBTdXIgbGVzIHN5c3TobWVzIOAgYmFzZSBMaW51eAppbmNsdWFudCBsZSBwYXRjaCBlcG9sbCgpIChvdSB0b3VzIGxlcyBMaW51eCAyLjYpLCBoYXByb3h5IHV0aWxpc2VyYSBlcG9sbCgpCnF1aSBlc3QgZXh0cuhtZW1lbnQgcmFwaWRlIGluZOlwZW5kYW1tZW50IGR1IG5vbWJyZSBkZSBzb2NrZXRzLiBMZXMgdGVzdHMgc3VyCmhhcHJveHkgb250IG1vbnRy6SB1bmUgcGVyZm9ybWFuY2UgY29uc3RhbnRlIGRlIDEg4CA0MDAwMCBzZXNzaW9ucyBzaW11bHRhbullcy4KTGEgdmVyc2lvbiAxLjMuOSBhIGludHJvZHVpdCBsZSBzdXBwb3J0IGRlIGtxdWV1ZSgpIHBvdXIgRnJlZUJTRC9PcGVuQlNELCBhaW5zaQpxdSd1bmUgdmFyaWFudGUgYXBwZWzpZSAic3BlY3VsYXRpdmUgZXBvbGwoKSIgY29uc2lzdGFudCDgIHRlbnRlciBkJ2VmZmVjdHVlcgpsZXMgb3DpcmF0aW9ucyBkJ2VudHLpZXMvc29ydGllcyBhdmFudCBkZSBjaGHubmVyIGxlcyDpduluZW1lbnRzIHBhciBsZXMgYXBwZWxzCnN5c3TobWUuCgpBZmluIGQnb3B0aW1pc2VyIGxhIGxhdGVuY2UsIGlsIGVzdCBk6XNvcm1haXMgcG9zc2libGUgZGUgbGltaXRlciBsZSBub21icmUKZCfpduluZW1lbnRzIHJlbW9udOlzIOAgY2hhcXVlIGFwcGVsLiBMYSBsaW1pdGUgcGFyIGTpZmF1dCBlc3QgZml46WUg4CAyMDAuIFNpCnVuZSBsYXRlbmNlIHBsdXMgcGV0aXRlIGVzdCByZWNoZXJjaOllLCBpbCBwZXV0IOp0cmUganVzdGlmaekgZCdhYmFpc3NlciBjZXR0ZQpsaW1pdGUgcGFyIGwndXRpbGlzYXRpb24gZHUgcGFyYW3odHJlICd0dW5lLm1heHBvbGxldmVudHMnIGRhbnMgbGEgc2VjdGlvbgonZ2xvYmFsJy4gTCdhdWdtZW50ZXIgcGVybWV0dHJhIGQn6WNvbm9taXNlciB1biBwZXUgbGUgcHJvY2Vzc2V1ciBlbiBwculzZW5jZQpkZSB0cuhzIGdyYW5kcyBub21icmVzIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMuCgpIYXByb3h5IHV0aWxpc2VyYSBrcXVldWUoKSBvdSBzcGVjdWxhdGl2ZSBlcG9sbCgpIGxvcnNxdWUgY2Ugc2VyYSBkaXNwb25pYmxlLApwdWlzIGVwb2xsKCksIGV0IHNlIHJlcGxpZXJhIHN1ciBwb2xsKCksIHB1aXMgZW4gZGVybmllciBsaWV1IHN1ciBzZWxlY3QoKS4KQ2VwZW5kYW50LCBzaSBwb3VyIHVuZSByYWlzb24gcXVlbGNvbnF1ZSBpbCBzJ2F26XJhaXQgbuljZXNzYWlyZSBkZSBk6XNhY3RpdmVyCmVwb2xsKCkgb3UgcG9sbCgpIChwLmV4OiDgIGNhdXNlIGQndW4gYnVnIG91IGp1c3RlIHBvdXIgY29tcGFyZXIgbGVzCnBlcmZvcm1hbmNlcyksIGRlIG5vdXZlbGxlcyBvcHRpb25zIGdsb2JhbGVzIG9udCDpdOkgYWpvdXTpZXMgZGFucyBjZSBidXQgOgonbm9zZXBvbGwnLCAnbm9rcXVldWUnLCAnbm9lcG9sbCcgZXQgJ25vcG9sbCcuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICAjIHV0aWxpc2VyIHNldWxlbWVudCBzZWxlY3QoKQogICAgICAgIG5vZXBvbGwKICAgICAgICBub3BvbGwKICAgICAgICB0dW5lLm1heHBvbGxldmVudHMgMTAwCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KRGFucyBsZSBidXQgZCdhc3N1cmVyIHVuZSBwb3J0YWJpbGl06SBtYXhpbWFsZSBkZXMgY29uZmlndXJhdGlvbnMsIGNlcyBvcHRpb25zCnNvbnQgYWNjZXB06WVzIGV0IGlnbm9y6WVzIHNpIGxlcyBt6WNhbmlzbWVzIHBvbGwoKSBvdSBlcG9sbCgpIG4nb250IHBhcyDpdOkKYWN0aXbpcyBsb3JzIGRlIGxhIGNvbXBpbGF0aW9uLgoKQWZpbiBkZSBzaW1wbGlmaWVyIGxhIHLpc29sdXRpb24gZGUgcHJvYmzobWVzLCBsZSBwYXJhbeh0cmUgJy1kZScgZW4gbGlnbmUgZGUKY29tbWFuZGUgZOlzYWN0aXZlIGVwb2xsKCksIGxlIHBhcmFt6HRyZSAnLWRwJyBk6XNhY3RpdmUgcG9sbCgpLCAnLWRrJyBrcXVldWUoKQpldCAnLWRzJyBk6XNhY3RpdmUgc3BlY3VsYXRpdmUgZXBvbGwoKS4gSWxzIHNvbnQgcmVzcGVjdGl2ZW1lbnQg6XF1aXZhbGVudHMg4Aonbm9lcG9sbCcsICdub3BvbGwnLCAnbm9rcXVldWUnIGV0ICdub3NlcG9sbCcuCgoKMikgROlmaW5pdGlvbiBkJ3VuIHNlcnZpY2UgZW4g6WNvdXRlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKTGVzIHNlY3Rpb25zIGRlIHNlcnZpY2UgZOlidXRlbnQgcGFyIGxlIG1vdCBjbOkgImxpc3RlbiIgOgoKICAgIGxpc3RlbiA8bm9tX2luc3RhbmNlPiBbIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+WywuLi5dIF0KCi0gPG5vbV9pbnN0YW5jZT4gZXN0IGxlIG5vbSBkZSBsJ2luc3RhbmNlIGTpY3JpdGUuIENlIG5vbSBzZXJhIGVudm956SBkYW5zIGxlcwogIGxvZ3MsIGRvbmMgaWwgZXN0IHNvdWhhaXRhYmxlIGQndXRpbGlzZXIgdW4gbm9tIHJlbGF0aWYgYXUgc2VydmljZSByZWxheekuCiAgQXVjdW4gdGVzdCBuJ2VzdCBlZmZlY3R16SBjb25jZXJuYW50IGwndW5pY2l06SBkZSBjZSBub20sIHF1aSBuJ2VzdCBwYXMKICBvYmxpZ2F0b2lyZSwgbWFpcyBmb3J0ZW1lbnQgcmVjb21tYW5k6WUuCgotIDxhZHJlc3NlX0lQPiBlc3QgbCdhZHJlc3NlIElQIHN1ciBsYXF1ZWxsZSBsZSByZWxhaXMgYXR0ZW5kIHNlcyBjb25uZXhpb25zLgogIEwnYWJzZW5jZSBkJ2FkcmVzc2UgYWluc2kgcXVlIGwnYWRyZXNzZSAwLjAuMC4wIHNpZ25pZmllbnQgcXVlIGxlcyBjb25uZXhpb25zCiAgcG91cnJvbnQgcydlZmZlY3R1ZXIgc3VyIHRvdXRlcyBsZXMgYWRyZXNzZXMgZGUgbGEgbWFjaGluZS4KCi0gPHBsYWdlX3BvcnRzPiBjb3JyZXNwb25kIHNvaXQg4CB1biBwb3J0LCBzb2l0IOAgdW5lIHBsYWdlIGRlIHBvcnRzIHN1cgogIGxlc3F1ZWxzIGxlIHJlbGFpcyBhY2NlcHRlcmEgZGVzIGNvbm5leGlvbnMgcG91ciBsJ2FkcmVzc2UgSVAgc3DpY2lmaellLgogIENldHRlIHBsYWdlIHBldXQg6nRyZSA6CiAgICAtIHNvaXQgdW4gcG9ydCBudW3pcmlxdWUgKGV4OiAnODAnKQogICAgLSBzb2l0IHVuZSBwbGFnZSBjb25zdGl0dellIGRlIGRldXggdmFsZXVycyBz6XBhcullcyBwYXIgdW4gdGlyZXQKICAgICAgKGV4OiAnMjAwMC0yMTAwJykgcmVwculzZW50YW50IGxlcyBleHRy6W1pdOlzIGluY2x1c2VzIGRhbnMgbGEKICAgICAgcGxhZ2UuCiAgSWwgZmF1dCBmYWlyZSBhdHRlbnRpb24g4CBsJ3VzYWdlIGRlcyBwbGFnZXMsIGNhciBjaGFxdWUgY29tYmluYWlzb24KICA8YWRyZXNzZV9JUD46PHBvcnQ+IGNvbnNvbW1lIHVuZSBzb2NrZXQsIGRvbmMgdW4gZGVzY3JpcHRldXIgZGUgZmljaGllci4KICBMZSBjb3VwbGUgPGFkcmVzc2VfSVA+Ojxwb3J0PiBkb2l0IOp0cmUgdW5pcXVlIHBvdXIgdG91dGVzIGxlcyAgaW5zdGFuY2VzCiAgZCd1bmUgbeptZSBtYWNoaW5lLiBMJ2F0dGFjaGVtZW50IOAgdW4gcG9ydCBpbmbpcmlldXIg4CAxMDI0IG7pY2Vzc2l0ZSB1bgogIG5pdmVhdSBkZSBwcml2aWzoZ2UgcGFydGljdWxpZXIgbG9ycyBkdSBsYW5jZW1lbnQgZHUgcHJvZ3JhbW1lCiAgKGluZOlwZW5kYW1tZW50IGR1IHBhcmFt6HRyZSAndWlkJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnKS4KCi0gbGUgY291cGxlIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+IHBldXQg6nRyZSBy6XDpdOkgaW5k6WZpbmltZW50IHBvdXIKICBkZW1hbmRlciBhdSByZWxhaXMgZCfpY291dGVyIOlnYWxlbWVudCBzdXIgZCdhdXRyZXMgYWRyZXNzZXMgZXQvb3UgZCdhdXRyZXMKICBwbGFnZXMgZGUgcG9ydHMuIFBvdXIgY2VsYSwgaWwgc3VmZml0IGRlIHPpcGFyZXIgbGVzIGNvdXBsZXMgcGFyIHVuZSB2aXJndWxlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgbGlzdGVuIHgxMV9wcm94eSAxMjcuMC4wLjE6NjAwMC02MDA5CiAgICBsaXN0ZW4gc210cF9wcm94eSAxMjcuMC4wLjE6MjUsMTI3LjAuMC4xOjU4NwogICAgbGlzdGVuIGxkYXBfcHJveHkgOjM4OSw6NjYzCgpTaSB0b3V0ZXMgbGVzIGFkcmVzc2VzIG5lIHRpZW5uZW50IHBhcyBzdXIgdW5lIGxpZ25lLCBpbCBlc3QgcG9zc2libGUgZCdlbgpyYWpvdXRlciDgIGwnYWlkZSBkdSBtb3QgY2zpICdiaW5kJy4gRGFucyBjZSBjYXMsIGlsIG4nZXN0IG3qbWUgcGFzIG7pY2Vzc2FpcmUKZGUgc3DpY2lmaWVyIGxhIHByZW1p6HJlIGFkcmVzc2Ugc3VyIGxhIGxpZ25lIGxpc3RlbiwgY2UgcXVpIGZhY2lsaXRlIHBhcmZvaXMKbCfpY3JpdHVyZSBkZSBjb25maWd1cmF0aW9ucyA6CgogICAgYmluZCBbIDxhZHJlc3NlX0lQPjo8cGxhZ2VfcG9ydHM+WywuLi5dIF0KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkKICAgICAgICBiaW5kIDo4MCw6NDQzCiAgICAgICAgYmluZCAxMC4wLjAuMToxMDA4MCwxMC4wLjAuMToxMDQ0MwoKMi4xKSBJbmhpYml0aW9uIGQndW4gc2VydmljZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVuIHNlcnZpY2UgcGV1dCDqdHJlIGTpc2FjdGl26SBwb3VyIGRlcyBiZXNvaW5zIGRlIG1haW50ZW5hbmNlLCBzYW5zIGF2b2lyIOAKY29tbWVudGVyIHRvdXRlIHVuZSBwYXJ0aWUgZHUgZmljaGllci4gSWwgc3VmZml0IGRlIHBvc2l0aW9ubmVyIGxlIG1vdCBjbOkKImRpc2FibGVkIiBkYW5zIHNhIHNlY3Rpb24gOgoKICAgIGxpc3RlbiBzbXRwX3Byb3h5IDAuMC4wLjA6MjUKICAgICAgICBkaXNhYmxlZAoKUmVtYXJxdWU6IGxlIG1vdCBjbOkgJ2VuYWJsZWQnIHBlcm1ldCBkZSBy6WFjdGl2ZXIgdW4gc2VydmljZSBwculhbGFibGVtZW50CiAgICAgICAgICBk6XNhY3RpdukgcGFyIGxlIG1vdCBjbOkgJ2Rpc2FibGVkJywgcGFyIGV4ZW1wbGUg4CBjYXVzZSBkJ3VuZQogICAgICAgICAgY29uZmlndXJhdGlvbiBwYXIgZOlmYXV0LgoKMi4yKSBNb2RlIGRlIGZvbmN0aW9ubmVtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVbiBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyB0cm9pcyBtb2RlcyBkaWZm6XJlbnRzIDoKICAtIFRDUAogIC0gSFRUUAogIC0g6XRhdCBkZSBzYW506QoKTW9kZSBUQ1AKLS0tLS0tLS0KRGFucyBjZSBtb2RlLCBsZSBzZXJ2aWNlIHJlbGF5ZSwgZOhzIGxldXIg6XRhYmxpc3NlbWVudCwgbGVzIGNvbm5leGlvbnMgVENQCnZlcnMgdW4gb3UgcGx1c2lldXJzIHNlcnZldXJzLiBBdWN1biB0cmFpdGVtZW50IG4nZXN0IGVmZmVjdHXpIHN1ciBsZSBmbHV4LiBJbApzJ2FnaXQgc2ltcGxlbWVudCBkJ3VuZSBhc3NvY2lhdGlvbgogICAgIHNvdXJjZTxhZHJlc3NlOnBvcnQ+IC0+IGRlc3RpbmF0aW9uPGFkcmVzc2U6cG9ydD4uClBvdXIgbCd1dGlsaXNlciwgcHLpY2lzZXIgbGUgbW9kZSBUQ1Agc291cyBsYSBk6WNsYXJhdGlvbiBkdSByZWxhaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gc210cF9wcm94eSAwLjAuMC4wOjI1CiAgICAgICAgbW9kZSB0Y3AKCk1vZGUgSFRUUAotLS0tLS0tLS0KRGFucyBjZSBtb2RlLCBsZSBzZXJ2aWNlIHJlbGF5ZSBsZXMgY29ubmV4aW9ucyBUQ1AgdmVycyB1biBvdSBwbHVzaWV1cnMKc2VydmV1cnMsIHVuZSBmb2lzIHF1J2lsIGRpc3Bvc2UgZCdhc3NleiBkJ2luZm9ybWF0aW9ucyBwb3VyIGVuIHByZW5kcmUgbGEKZOljaXNpb24uIExlcyBlbi106nRlcyBIVFRQIHNvbnQgYW5hbHlz6XMgcG91ciB5IHRyb3V2ZXIgdW4g6XZlbnR1ZWwgY29va2llLCBldApjZXJ0YWlucyBkJ2VudHJlLWV1eCBwZXV2ZW50IOp0cmUgbW9kaWZp6XMgcGFyIGxlIGJpYWlzIGQnZXhwcmVzc2lvbnMKculndWxp6HJlcy4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHBy6WNpc2VyIGxlIG1vZGUgSFRUUCBzb3VzIGxhIGTpY2xhcmF0aW9uIGR1CnJlbGFpcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKCk1vZGUgc3VwZXJ2aXNpb24KLS0tLS0tLS0tLS0tLS0tLQpJbCBzJ2FnaXQgZCd1biBtb2RlIG9mZnJhbnQg4CB1biBjb21wb3NhbnQgZXh0ZXJuZSB1bmUgdmlzaWJpbGl06SBkZSBsJ+l0YXQgZGUKc2FudOkgZHUgc2VydmljZS4gSWwgc2UgY29udGVudGUgZGUgcmV0b3VybmVyICJPSyIg4CB0b3V0IGNsaWVudCBzZSBjb25uZWN0YW50CnN1ciBzb24gcG9ydC4gSWwgcGV1dCDqdHJlIHV0aWxpc+kgYXZlYyBkZXMgculwYXJ0aXRldXJzIGRlIGNoYXJnZSDpdm9sdelzIHBvdXIKZOl0ZXJtaW5lciBxdWVscyBzb250IGxlcyBzZXJ2aWNlcyB1dGlsaXNhYmxlcy4gU2kgbCdvcHRpb24gJ2h0dHBjaGsnIGVzdAphY3RpdullLCBhbG9ycyBsYSBy6XBvbnNlIGNoYW5nZXJhIGVuICdIVFRQLzEuMCAyMDAgT0snIHBvdXIgc2F0aXNmYWlyZSBsZXMKYXR0ZW50ZXMgZGUgY29tcG9zYW50cyBzYWNoYW50IHRlc3RlciBlbiBIVFRQLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgcHLpY2lzZXIKbGUgbW9kZSBIRUFMVEggc291cyBsYSBk6WNsYXJhdGlvbiBkdSByZWxhaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHLpcG9uc2Ugc2ltcGxlIDogJ09LJwogICAgbGlzdGVuIGhlYWx0aF9jaGVjayAwLjAuMC4wOjYwMDAwCiAgICAgICAgbW9kZSBoZWFsdGgKCiAgICAjIHLpcG9uc2UgSFRUUCA6ICdIVFRQLzEuMCAyMDAgT0snCiAgICBsaXN0ZW4gaHR0cF9oZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMQogICAgICAgIG1vZGUgaGVhbHRoCiAgICAgICAgb3B0aW9uIGh0dHBjaGsKCgoyLjIuMSBTdXBlcnZpc2lvbgotLS0tLS0tLS0tLS0tLS0tLQpMZXMgdmVyc2lvbnMgMS4xLjMyIGV0IDEuMi42IGFwcG9ydGVudCB1bmUgbm91dmVsbGUgc29sdXRpb24gcG91ciB2YWxpZGVyIGxlCmJvbiBmb25jdGlvbm5lbWVudCBkdSBwcm94eSBzYW5zIHBlcnR1cmJlciBsZSBzZXJ2aWNlLiBMZSBtb3QtY2zpICdtb25pdG9yLW5ldCcKYSDpdOkgY3Lp6SBkYW5zIGxlIGJ1dGQgZGUgc3DpY2lmaWVyIHVuIHLpc2VhdSBkJ+lxdWlwZW1lbnRzIHF1aSBuZSBQRVVWRU5UIFBBUwp1dGlsaXNlciBsZSBzZXJ2aWNlIHBvdXIgYXV0cmUgY2hvc2UgcXVlIGRlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudC4gQydlc3QKcGFydGljdWxp6HJlbWVudCBhZGFwdOkgYXV4IHByb3hpZXMgVENQLCBjYXIgY2VsYSBlbXDqY2hlIGxlIHByb3h5IGRlIHJlbGF5ZXIKZGVzIOl0YWJsaXNzZW1lbnRzIGRlIGNvbm5leGlvbiDpbWlzIHBhciB1biBvdXRpbCBkZSBzdXJ2ZWlsbGFuY2UuCgpMb3JzcXVlIGMnZXN0IHV0aWxpc+kgc3VyIHVuIHByb3h5IFRDUCwgbGEgY29ubmV4aW9uIGVzdCBhY2NlcHTpZSBwdWlzIHJlZmVybellCmV0IHJpZW4gbidlc3QgbG9ndekuIEMnZXN0IHN1ZmZpc2FudCBwb3VyIHF1J3VuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZSBlbiBhbW9udApk6XRlY3RlIHF1ZSBsZSBzZXJ2aWNlIGVzdCBkaXNwb25pYmxlLgoKTG9yc3F1ZSBjJ2VzdCB1dGlsaXPpIHN1ciB1biBwcm94eSBIVFRQLCBsYSBjb25uZXhpb24gZXN0IGFjY2VwdOllLCByaWVuIG4nZXN0CmxvZ3XpLCBwdWlzIGxhIHLpcG9uc2Ugc3VpdmFudGUgZXN0IGVudm956WUgZXQgbGEgc2Vzc2lvbiByZWZlcm3pZSA6CiJIVFRQLzEuMCAyMDAgT0siLiBDJ2VzdCBub3JtYWxlbWVudCBzdWZmaXNhbnQgcG91ciBxdSd1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UKSFRUUCBlbiBhbW9udCBk6XRlY3RlIGxlIHNlcnZpY2UgY29tbWUgb3DpcmF0aW9ubmVsLCBhdXNzaSBiaWVuIOAgdHJhdmVycyBkZXMKdGVzdHMgVENQIHF1ZSBIVFRQLgoKTGVzIHByb3hpZXMgdXRpbGlzYW50IGxlIG1vdC1jbOkgJ21vbml0b3ItbmV0JyBwZXV2ZW50IGFjY2Vzc29pcmVtZW50IHNlIHBhc3NlcgpkZSBsJ29wdGlvbiAnZG9udGxvZ251bGwnLCBjZSBxdWkgcGVybWV0dHJhIGRlIGxvZ3VlciBsZXMgY29ubmV4aW9ucyB2aWRlcwrpbWlzZXMgZGVwdWlzIGQnYXV0cmVzIGFkcmVzc2VzIHF1ZSBjZWxsZXMgZHUgculzZWF1IGRlIHRlc3RzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGxpc3RlbiB0c2UtcHJveHkKICAgICAgIGJpbmQgOjMzODksOjE0OTQsOjU5MDAgICMgVFNFLCBJQ0EgYW5kIFZOQyBhdCBvbmNlLgogICAgICAgbW9kZSB0Y3AKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHRzZS1mYXJtIDE5Mi4xNjguMS4xMAogICAgICAgbW9uaXRvci1uZXQgMTkyLjE2OC4xLjI1Mi8zMSAgICMgTDQgbG9hZC1iYWxhbmNlcnMgb24gLjI1MiBhbmQgLjI1MwoKCkxvcnNxdWUgbGUgc3lzdOhtZSBlZmZlY3R1YW50IGxlcyB0ZXN0cyBlc3Qgc2l0dekgZGVycmnocmUgdW4gcHJveHksIGxlIG1vdC1jbOkKJ21vbml0b3ItbmV0JyBuJ2VzdCBwYXMgdXRpbGlzYWJsZSBkdSBmYWl0IHF1ZSBoYXByb3h5IHZlcnJhIHRvdWpvdXJzIGxhIG3qbWUKYWRyZXNzZSBwb3VyIGxlIHByb3h5LiBQb3VyIHBhbGxpZXIg4CBjZXR0ZSBsaW1pdGF0aW9uLCBsYSB2ZXJzaW9uIDEuMi4xNSBhCmFwcG9ydOkgbGUgbW90LWNs6SAnbW9uaXRvci11cmknLiBJbCBk6WZpbml0IHVuZSBVUkkgcXVpIG5lIHNlcmEgbmkgcmV0cmFuc21pc2UKbmkgbG9n6WUsIG1haXMgcG91ciBsYXF1ZWxsZSBoYXByb3h5IHJldG91cm5lcmEgaW1t6WRpYXRlbWVudCB1bmUgculwb25zZQoiSFRUUC8xLjAgMjAwIE9LIi4gQ2VsYSByZW5kIHBvc3NpYmxlcyBsZXMgdGVzdHMgZGUgdmFsaWRpdOkgZCd1bmUgY2hh7m5lCnJldmVyc2UtcHJveHktPmhhcHJveHkgZW4gdW5lIHJlcXXqdGUgSFRUUC4gQ2VsYSBwZXV0IOp0cmUgdXRpbGlz6SBwb3VyIHZhbGlkZXIKdW5lIGNvbWJpbmFpc2lvbiBkZSBzdHVubmVsK2hhcHJveHkg4CBsJ2FpZGUgZGUgdGVzdHMgSFRUUFMgcGFyIGV4ZW1wbGUuIEJpZW4KZW50ZW5kdSwgY2UgbW90LWNs6SBuJ2VzdCB2YWxpZGUgcXUnZW4gbW9kZSBIVFRQLCBzaW5vbiBpbCBuJ3kgYSBwYXMgZGUgbm90aW9uCmQnVVJJLiBOb3RlciBxdWUgbGEgbel0aG9kZSBldCBsYSB2ZXJzaW9uIEhUVFAgc29udCBzaW1wbGVtZW50IGlnbm9y6WVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGxpc3RlbiBzdHVubmVsX2JhY2tlbmQgOjgwODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTA6ODAgY2hlY2sKICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4xMTo4MCBjaGVjawogICAgICAgbW9uaXRvci11cmkgL2hhcHJveHlfdGVzdAoKCjIuMykgTGltaXRhdGlvbiBkdSBub21icmUgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGUgcGFyYW3odHJlICJtYXhjb25uIiBwZXJtZXQgZGUgZml4ZXIgbGEgbGltaXRlIGFjY2VwdGFibGUgZW4gbm9tYnJlIGRlCmNvbm5leGlvbnMgc2ltdWx0YW7pZXMgcGFyIHByb3h5LiBDaGFxdWUgcHJveHkgcXVpIGF0dGVpbnQgY2V0dGUgdmFsZXVyIGNlc3NlCmQn6WNvdXRlciBqdXNxdSfgIGxpYulyYXRpb24gZCd1bmUgY29ubmV4aW9uLiBWb2lyIHBsdXMgbG9pbiBjb25jZXJuYW50IGxlcwpsaW1pdGF0aW9ucyBsaellcyBhdSBzeXN06G1lLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHRpbnlfc2VydmVyIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwCgoKMi40KSBBcnLqdCBlbiBkb3VjZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZCdhcnLqdGVyIGxlcyBzZXJ2aWNlcyBlbiBkb3VjZXVyIGVuIGVudm95YW50IHVuIHNpZ25hbApTSUdVU1IxIGF1IHByb2Nlc3N1cyByZWxhaXMuIFRvdXMgbGVzIHNlcnZpY2VzIHNlcm9udCBhbG9ycyBtaXMgZW4gcGhhc2UKZCdhcnLqdCwgbWFpcyBwb3Vycm9udCBjb250aW51ZXIgZCdhY2NlcHRlciBkZXMgY29ubmV4aW9ucyBwZW5kYW50IHVuIHRlbXBzCmTpZmluaSBwYXIgbGUgcGFyYW3odHJlICdncmFjZScgKGVuIG1pbGxpc2Vjb25kZXMpLiBDZWxhIHBlcm1ldCBwYXIgZXhlbXBsZSwKZGUgZmFpcmUgc2F2b2lyIHJhcGlkZW1lbnQg4CB1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UgcXUnaWwgbmUgZG9pdCBwbHVzCnV0aWxpc2VyIHVuIHJlbGFpcywgdG91dCBlbiBjb250aW51YW50IGQnYXNzdXJlciBsZSBzZXJ2aWNlIGxlIHRlbXBzIHF1J2lsCnMnZW4gcmVuZGUgY29tcHRlLgoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkxlcyBjb25uZXhpb25zIGFjdGl2ZXMgbmUgc29udCBqYW1haXMgY2Fzc+llcy4gRGFucyBsZSBwaXJlIGRlcyBjYXMsIGlsIGZhdWRyYQphdHRlbmRyZSBlbiBwbHVzIGxldXIgZXhwaXJhdGlvbiBhdmFudCBsJ2Fycup0IHRvdGFsIGR1IHByb2Nlc3N1cywgb3UgYmllbiB0dWVyCm1hbnVlbGxlbWVudCBsZSBwcm9jZXNzdXMgcGFyIGwnZW52b2kgZCd1biBzaWduYWwgU0lHVEVSTS4gTGEgdmFsZXVyIHBhciBk6WZhdXQKZHUgcGFyYW3odHJlICdncmFjZScgZXN0IDAgKHBhcyBkZSBncuJjZSwgYXJy6nQgaW1t6WRpYXQgZGUgbCfpY291dGUpLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBhcnLqdGVyIGVuIGRvdWNldXIgcGFyICdraWxsYWxsIC1VU1IxIGhhcHJveHknCiAgICAjIGxlIHNlcnZpY2UgdG91cm5lcmEgZW5jb3JlIDEwIHNlY29uZGVzIGFwcuhzIGxhIGRlbWFuZGUgZCdhcnLqdAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGdyYWNlIDEwMDAwCgogICAgIyBjZSBwb3J0IG4nZXN0IHRlc3TpIHF1ZSBwYXIgdW4gculwYXJ0aXRldXIgZGUgY2hhcmdlLgogICAgbGlzdGVuIGhlYWx0aF9jaGVjayAwLjAuMC4wOjYwMDAwCiAgICAgICAgbW9kZSBoZWFsdGgKICAgICAgICBncmFjZSAwCgpBIHBhcnRpciBkZSBsYSB2ZXJzaW9uIDEuMi44LCB1biBub3V2ZWF1IG3pY2FuaXNtZSBkZSByZWNvbmZpZ3VyYXRpb24g4CBjaGF1ZAphIOl06SBpbnRyb2R1aXQuIElsIGVzdCBk6XNvcm1haXMgcG9zc2libGUgZGUgbWV0dHJlIGxlcyBwcm94aWVzIGVuICJwYXVzZSIgZW4KZW52b3lhbnQgdW4gc2lnbmFsIFNJR1RUT1UgYXV4IHByb2Nlc3N1cy4gQ2VsYSBk6XNhY3RpdmVyYSBsZXMgc29ja2V0cyBkJ+ljb3V0ZQpzYW5zIGNhc3NlciBsZXMgc2Vzc2lvbnMgZXhpc3RhbnRlcy4gU3VpdGUg4CBjZWxhLCBsJ2Vudm9pIGQndW4gc2lnbmFsIFNJR1RUSU4KculhY3RpdmVyYSBsZXMgc29ja2V0cyBkJ+ljb3V0ZS4gQ2VjaSBlc3QgdHLocyBwcmF0aXF1ZSBwb3VyIHRlbnRlciBkZSBjaGFyZ2VyCnVuZSBub3V2ZWxsZSBjb25maWd1cmF0aW9uIG91IG3qbWUgdW5lIG5vdXZlbGxlIHZlcnNpb24gZGUgaGFwcm94eSBzYW5zIGNhc3NlcgpsZXMgY29ubmV4aW9ucyBleGlzdGFudGVzLiBTaSBsZSByZWNoYXJnZW1lbnQgcydlZmZlY3R1ZSBjb3JyZWN0ZW1lbnQsIGlsIG5lCnJlc3RlIHBsdXMgcXUn4CBlbnZveWVyIHVuIHNpZ25hbCBTSUdVU1IxIGF1eCBhbmNpZW5zIHByb2Nlc3N1cywgY2UgcXVpCnByb3ZvcXVlcmEgbGV1ciBhcnLqdCBpbW3pZGlhdCBk6HMgcXVlIGxldXJzIGNvbm5leGlvbnMgc2Vyb250IHRlcm1pbullcyA7IGVuCnJldmFuY2hlLCBzaSBsZSByZWNoYXJnZW1lbnQg6WNob3VlLCBpbCBzdWZmaXQgZCdlbnZveWVyIHVuIHNpZ25hbCBTSUdUVElOIHBvdXIKcmVtZXR0cmUgbGVzIHBvcnRzIGVuIOljb3V0ZSBldCBy6XRhYmxpciBsZSBzZXJ2aWNlIGltbelkaWF0ZW1lbnQuIFZldWlsbGV6Cm5vdGVyIHF1ZSBsZSBwYXJhbeh0cmUgJ2dyYWNlJyBlc3QgaWdub3LpIHBvdXIgbGUgc2lnbmFsIFNJR1RUT1UgYWluc2kgcXVlIGxlCnNpZ25hbCBTSUdVU1IxIHVuZSBmb2lzIGxlIHByb2Nlc3N1cyBlbiBwYXVzZS4gQXVzc2ksIGlsIHBldXQgcydhdulyZXIgdHLocwp1dGlsZSBkZSBzYXV2ZXIgbGUgZmljaGllciBkZSBwaWQgYXZhbnQgZGUgZOltYXJyZXIgdW5lIG5vdXZlbGxlIGluc3RhbmNlLgoKQ2UgbeljYW5pc21lIGVzdCBwbGVpbmVtZW50IGV4cGxvaXTpIOAgcGFydGlyIGRlIGxhIHZlcnNpb24gMS4yLjExIGF2ZWMgbGVzCm9wdGlvbnMgJy1zdCcgZXQgJy1zZicgKHZvaXIgY2ktZGVzc291cykuCgoyLjQpIFJlY29uZmlndXJhdGlvbiDgIGNoYXVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIHBhcmFt6HRyZXMgJy1zdCcgZXQgJy1zZicgc29udCB1dGlsaXPpcyBwb3VyIGluZm9ybWVyIGRlcyBwcm9jZXNzdXMKZXhpc3RhbnRzIHF1ZSBsYSBjb25maWd1cmF0aW9uIHZhIOp0cmUgcmVjaGFyZ+llLiBJbHMgcmVjZXZyb250IGxlIHNpZ25hbApTSUdUVE9VLCBsZXVyIGRlbWFuZGFudCBkZSBsaWLpcmVyIGxlcyBwb3J0cyBlbiDpY291dGUgYWZpbiBxdWUgbGUgbm91dmVhdQpwcm9jZXNzdXMgcHVpc3NlIGxlcyBwcmVuZHJlLiBTaSBxdW9pIHF1ZSBjZSBzb2l0IHNlIHBhc3NlIG1hbCwgbGUgbm91dmVhdQpwcm9jZXNzdXMgbGV1ciBlbnZlcnJhIHVuIHNpZ25hbCBTSUdUVElOIHBvdXIgbGV1ciBpbmRpcXVlciBxdSdpbHMgcGV1dmVudApzZSByZW1ldHRyZSBlbiDpY291dGUgZXQgY29udGludWVyIGxldXIgdHJhdmFpbC4gRW4gcmV2YW5jaGUsIHNpIGxhCmNvbmZpZ3VyYXRpb24gc2UgY2hhcmdlIGNvcnJlY3RlbWVudCwgYWxvcnMgaWxzIHJlY2V2cm9udCB1biBzaWduYWwgZGUgZGVtYW5kZQpkZSBmaW4gZGUgdHJhdmFpbCBlbiBkb3VjZXVyICgtc2YpLCBvdSBkZSB0ZXJtaW5haXNvbiBpbW3pZGlhdGUgKC1zdCkgcXVpCmNvdXBlcmEgbGVzIHNlc3Npb25zIGVuIGNvdXJzLiBVbiB1c2FnZSB0eXBpcXVlIHRlbCBxdWUgY2VsdWktY2kgcGVybWV0IGRlCnJlY2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBzYW5zIGludGVycnVwdGlvbiBkZSBzZXJ2aWNlIDoKCiAjIGhhcHJveHkgLXAgL3Zhci9ydW4vaGFwcm94eS5waWQgLXNmICQoY2F0IC92YXIvcnVuL2hhcHJveHkucGlkKQoKCjIuNSkgVGVtcHMgZCdleHBpcmF0aW9uIGRlcyBjb25uZXhpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSBwYXJhbel0cmVyIGNlcnRhaW5lcyBkdXLpZXMgZCdleHBpcmF0aW9uIGF1IG5pdmVhdSBkZXMKY29ubmV4aW9ucyBUQ1AuIFRyb2lzIHRlbXBzIGluZOlwZW5kYW50cyBzb250IGNvbmZpZ3VyYWJsZXMgZXQgYWNjZXB0ZW50IGRlcwp2YWxldXJzIGVuIG1pbGxpc2Vjb25kZXMuIFNpIGwndW5lIGRlIGNlcyB0cm9pcyB0ZW1wb3Jpc2F0aW9ucyBlc3QgZOlwYXNz6WUsIGxhCnNlc3Npb24gZXN0IHRlcm1pbullIOAgY2hhcXVlIGV4dHLpbWl06S4KCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZCd1bmUgZG9ubullIGRlIGxhIHBhcnQgZHUgY2xpZW50LCBvdSBkZSBsYQogICAgcG9zc2liaWxpdOkgZGUgbHVpIGVudm95ZXIgZGVzIGRvbm7pZXMgOiAiY2xpdGltZW91dCIgOgoKICAgICAgICAjIHRpbWUtb3V0IGNsaWVudCDgIDJtbjMwLgogICAgICAgIGNsaXRpbWVvdXQgICAgICAgIDE1MDAwMAoKICAtIHRlbXBzIGQnYXR0ZW50ZSBkJ3VuZSBkb25u6WUgZGUgbGEgcGFydCBkdSBzZXJ2ZXVyLCBvdSBkZSBsYQogICAgcG9zc2liaWxpdOkgZGUgbHVpIGVudm95ZXIgZGVzIGRvbm7pZXMgOiAic3J2dGltZW91dCIgOgoKICAgICAgICAjIHRpbWUtb3V0IHNlcnZldXIg4CAzMHMuCiAgICAgICAgc3J2dGltZW91dCAgICAgICAgMzAwMDAKCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZGUgbCfpdGFibGlzc2VtZW50IGQndW5lIGNvbm5leGlvbiB2ZXJzIHVuIHNlcnZldXIKICAgICJjb250aW1lb3V0IiA6CgogICAgICAgICMgb24gYWJhbmRvbm5lIHNpIGxhIGNvbm5leGlvbiBuJ2VzdCBwYXMg6XRhYmxpZSBhcHLocyA0IHNlY29uZGVzCiAgICAgICAgY29udGltZW91dCAgICAgICAgNDAwMAoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KICAtICJjb250aW1lb3V0IiBldCAic3J2dGltZW91dCIgbidvbnQgcGFzIGQndXRpbGl06SBkYW5zIGxlIGNhcyBkdSBzZXJ2ZXVyIGRlCiAgICB0eXBlICJoZWFsdGgiLgogIC0gc291cyBkZSBmb3J0ZXMgY2hhcmdlcywgb3Ugc3VyIHVuIHLpc2VhdSBzYXR1cukgb3UgZOlmZWN0dWV1eCwgaWwgZXN0CiAgICBwb3NzaWJsZSBkZSBwZXJkcmUgZGVzIHBhcXVldHMuIER1IGZhaXQgcXVlIGxhIHByZW1p6HJlIHJldHJhbnNtaXNzaW9uCiAgICBUQ1AgbidhaXQgbGlldSBxdSdhdSBib3V0IGRlIDMgc2Vjb3VkZXMsIGZpeGVyIHVuIHRpbWVvdXQgZGUgY29ubmV4aW9uCiAgICBpbmbpcmlldXIg4CAzIHNlY29uZGVzIG5lIHBlcm1ldCBwYXMgZGUgc2UgcmF0dHJhcGVyIHN1ciBsYSBwZXJ0ZQogICAgZGUgcGFxdWV0cyBjYXIgbGEgc2Vzc2lvbiBhdXJhIOl06SBhYmFuZG9ubullIGF2YW50IGxhIHByZW1p6HJlCiAgICByZXRyYW5zbWlzc2lvbi4gVW5lIHZhbGV1ciBkZSA0IHNlY29uZGVzIHLpZHVpcmEgY29uc2lk6XJhYmxlbWVudAogICAgbGUgbm9tYnJlIGQn6WNoZWNzIGRlIGNvbm5leGlvbi4KICAtIEEgY29tcHRlciBkZSBsYSB2ZXJzaW9uIDEuMy4xNCwgaWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciBsZXMgZHVy6WVzCiAgICBkJ2V4cGlyYXRpb24gZGFucyBkZXMgdW5pdOlzIGRlIHRlbXBzIGFyYml0cmFpcmVzIOAgY2hvaXNpciBwYXJtaQogICAgeyB1cywgbXMsIHMsIG0sIGgsIGQgfS4gUG91ciBjZWxhLCBsYSB2YWxldXIgZW50aehyZSBkb2l0IOp0cmUgc3VmZml46WUKICAgIGRlIGwndW5pdOkuCgoyLjYpIFRlbnRhdGl2ZXMgZGUgcmVjb25uZXhpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxvcnMgZCd1biDpY2hlYyBkZSBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyLCBpbCBlc3QgcG9zc2libGUgZGUKcmV0ZW50ZXIgKHBvdGVudGllbGxlbWVudCB2ZXJzIHVuIGF1dHJlIHNlcnZldXIsIGVuIGNhcyBkZSBy6XBhcnRpdGlvbgpkZSBjaGFyZ2UpLiBMZSBub21icmUgZGUgbm91dmVsbGVzIHRlbnRhdGl2ZXMgaW5mcnVjdHVldXNlcyBhdmFudAphYmFuZG9uIGVzdCBmb3VybmkgcGFyIGxlIHBhcmFt6HRyZSAicmV0cmllcyIuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAgICAgIyBvbiBlc3NhaWUgZW5jb3JlIHRyb2lzIGZvaXMgbWF4aQogICAgICAgIHJldHJpZXMgMwoKSWwgZXN0IOAgbm90ZXIgcXVlIGxhIHRlbnRhdGl2ZSBkZSByZWNvbm5leGlvbiBwZXV0IGFtZW5lciDgIHV0aWxpc2VyIHVuIGF1dHJlCnNlcnZldXIgc2kgbGUgcHJlbWllciBhIGRpc3BhcnUgZW50cmUgZGV1eCB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbi4KCgoyLjcpIEFkcmVzc2UgZHUgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2ZXVyIHZlcnMgbGVxdWVsIHNvbnQgcmVkaXJpZ+llcyBsZXMgbm91dmVsbGVzIGNvbm5leGlvbnMgZXN0IGTpZmluaSBwYXIKbGUgcGFyYW3odHJlICJkaXNwYXRjaCIgc291cyBsYSBmb3JtZSA8YWRyZXNzZV9pcD46PHBvcnQ+LiBJbCBjb3JyZXNwb25kIOAgdW4Kc2VydmV1ciBkJ2Fzc2lnbmF0aW9uIGRlIGNvb2tpZSBkYW5zIGxlIGNhcyBv+SBsZSBzZXJ2aWNlIGNvbnNpc3RlIOAgYXNzdXJlcgp1bmlxdWVtZW50IHVuZSBwZXJzaXN0ZW5jZSBIVFRQLCBvdSBiaWVuIHNpbXBsZW1lbnQgYXUgc2VydmV1ciBkZXN0aW5hdGlvbiBkYW5zCmxlIGNhcyBkZSByZWxheWFnZSBUQ1Agc2ltcGxlLiBDZXQgYW5jaWVuIG1vZGUgbmUgcGVybWV0IHBhcyBkZSB0ZXN0ZXIgbCfpdGF0CmR1IHNlcnZldXIgZGlzdGFudCwgZXQgaWwgZXN0IG1haW50ZW5hbnQgcmVjb21tYW5k6SBkJ3V0aWxpc2VyIGRlIHBy6WbpcmVuY2UKbGUgbW9kZSAnYmFsYW5jZScuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAgICAgICAgIyBvbiBlbnZvaWUgdG91dGVzIGxlcyBub3V2ZWxsZXMgY29ubmV4aW9ucyBpY2kKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMjo4MAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkNlIHBhcmFt6HRyZSBuJ2EgcGFzIGQndXRpbGl06SBwb3VyIHVuIHNlcnZldXIgZW4gbW9kZSAnaGVhbHRoJywgbmkgZW4gbW9kZQonYmFsYW5jZScuCgoKMi44KSBBZHJlc3NlIGRlIHNvcnRpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSBmb3JjZXIgbCdhZHJlc3NlIHV0aWxpc+llIHBvdXIg6XRhYmxpciBsZXMgY29ubmV4aW9ucyB2ZXJzCmxlcyBzZXJ2ZXVycyDgIGwnYWlkZSBkdSBwYXJhbeh0cmUgInNvdXJjZSIuIElsIGVzdCBt6m1lIHBvc3NpYmxlIGRlIGZvcmNlciBsZQpwb3J0LCBiaWVuIHF1ZSBjZXR0ZSBmb25jdGlvbm5hbGl06SBzZSBsaW1pdGUg4CBkZXMgdXNhZ2VzIHRy6HMgc3DpY2lmaXF1ZXMuCkMnZXN0IHBhcnRpY3VsaehyZW1lbnQgdXRpbGUgZW4gY2FzIGQnYWRyZXNzYWdlIG11bHRpcGxlLCBldCBwbHVzIGfpbulyYWxlbWVudApwb3VyIHBlcm1ldHRyZSBhdXggc2VydmV1cnMgZGUgdHJvdXZlciBsZSBjaGVtaW4gZGUgcmV0b3VyIGRhbnMgZGVzIGNvbnRleHRlcwpkZSByb3V0YWdlIGRpZmZpY2lsZXMuIFNpIGwnYWRyZXNzZSBlc3QgJzAuMC4wLjAnIG91ICcqJyBvdSB2aWRlLCBlbGxlIHNlcmEKY2hvaXNpZSBsaWJyZW1lbnQgcGFyIGxlIHN5c3RlbWUuIFNpIGxlIHBvcnQgZXN0ICcwJyBvdSB2aWRlLCBpbCBzZXJhIGNob2lzaQpsaWJyZW1lbnQgcGFyIGxlIHN5c3TobWUuIElsIGVzdCDgIG5vdGVyIHF1ZSBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTgsIGxlcwp0ZXN0cyBkZSBib24gZm9uY3Rpb25uZW1lbnQgZGVzIHNlcnZldXJzIHNlcm9udCBhdXNzaSBlZmZlY3R16XMg4CBwYXJ0aXIgZGUgbGEKc291cmNlIHNw6WNpZmnpZSBwYXIgY2UgcGFyYW3odHJlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAqOjgwCiAgICAgICAgICAgIyB0b3V0ZXMgbGVzIGNvbm5leGlvbnMgcHJlbm5lbnQgbCdhZHJlc3NlIDE5Mi4xNjguMS4yMDAKICAgICAgICBzb3VyY2UgMTkyLjE2OC4xLjIwMDowCgogICAgbGlzdGVuIHJsb2dpbl9wcm94eSAqOjUxMwogICAgICAgICAgICMgdXRpbGlzZXIgbCdhZHJlc3NlIDE5Mi4xNjguMS4yMDAgZXQgbGUgcG9ydCBy6XNlcnbpIDkwMAogICAgICAgIHNvdXJjZSAxOTIuMTY4LjEuMjAwOjkwMAoKCjIuOSkgROlmaW5pdGlvbiBkdSBub20gZHUgY29va2llCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgaWwgZXN0IHBvc3NpYmxlIGRlIHJlY2hlcmNoZXIgbGEgdmFsZXVyIGQndW4gY29va2llIHBvdXIgc2F2b2lyCnZlcnMgcXVlbCBzZXJ2ZXVyIGFpZ3VpbGxlciBsYSByZXF16nRlIHV0aWxpc2F0ZXVyLiBMZSBub20gZHUgY29va2llIGVzdCBkb25u6QpwYXIgbGUgcGFyYW3odHJlICJjb29raWUiLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECgpPbiBwZXV0IG1vZGlmaWVyIGwndXRpbGlzYXRpb24gZHUgY29va2llIHBvdXIgbGEgcmVuZHJlIHBsdXMgaW50ZWxsaWdlbnRlCnZpcy3gLXZpcyBkZXMgYXBwbGljYXRpb25zIHJlbGF56WVzLiBJbCBlc3QgcG9zc2libGUsIG5vdGFtbWVudCBkZSBzdXBwcmltZXIgb3UKcunpY3JpcmUgdW4gY29va2llIHJldG91cm7pIHBhciB1biBzZXJ2ZXVyIGFjY+lk6SBlbiBkaXJlY3QsIGV0IGQnaW5z6XJlciB1bgpjb29raWUgZGFucyB1bmUgculwb25zZSBIVFRQIGFkcmVzc+llIOAgdW4gc2VydmV1ciBz6WxlY3Rpb25u6SBlbiBy6XBhcnRpdGlvbgpkZSBjaGFyZ2UsIGV0IG3qbWUgZGUgc2lnbmFsZXIgYXV4IHByb3hpZXMgYW1vbnQgZGUgbmUgcGFzIGNhY2hlciBsZSBjb29raWUKaW5z6XLpLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgpQb3VyIG5lIGNvbnNlcnZlciBsZSBjb29raWUgcXUnZW4gYWNj6HMgaW5kaXJlY3QsIGRvbmMg4CB0cmF2ZXJzIGxlCmRpc3BhdGNoZXVyLCBldCBzdXBwcmltZXIgdG91dGVzIHNlcyDpdmVudHVlbGxlcyBvY2N1cmVuY2VzIGxvcnMgZGVzIGFjY+hzCmRpcmVjdHMgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5kaXJlY3QKClBvdXIgcmVtcGxhY2VyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBleGlzdGFudCBwYXIgY2VsbGUgYXR0cmlidellIOAgdW4gc2VydmV1ciwKbG9ycyBkJ3VuIGFjY+hzIGRpcmVjdCA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCByZXdyaXRlCgpQb3VyIGNy6WVyIHVuIGNvb2tpZSBjb21wb3J0YW50IGxhIHZhbGV1ciBhdHRyaWJ16WUg4CB1biBzZXJ2ZXVyIGxvcnMgZCd1bgphY2PocyBlbiBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZS4gRGFucyBjZSBjYXMsIGlsIGVzdCBzb3VoYWl0YWJsZSBxdWUKdG91cyBsZXMgc2VydmV1cnMgYWllbnQgdW4gY29va2llIHJlbnNlaWdu6S4gVW4gc2VydmV1ciBub24gYXNzaWdu6SBkJ3VuIGNvb2tpZQpyZXRvdXJuZXJhIHVuIGNvb2tpZSB2aWRlIChjb29raWUgZGUgc3VwcHJlc3Npb24pIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydAoKUG91ciBy6XV0aWxpc2VyIHVuIGNvb2tpZSBhcHBsaWNhdGlmIGV0IGx1aSBwculmaXhlciBsJ2lkZW50aWZpYW50IGR1IHNlcnZldXIsCnB1aXMgbGUgc3VwcHJpbWVyIGRhbnMgbGVzIHJlcXXqdGVzIHN1aXZhbnRlcywgdXRpbGlzZXIgbCdvcHRpb24gJ3ByZWZpeCcuIEVsbGUKcGVybWV0IGQnaW5z6XJlciB1bmUgaW5zdGFuY2UgZGUgaGFwcm94eSBkZXZhbnQgdW5lIGFwcGxpY2F0aW9uIHNhbnMgcmlzcXVlcgpkJ2luY29tcGF0aWJpbGl06XMgZPtlcyDgIGRlcyBjbGllbnRzIHF1aSBuZSBzdXBwb3J0ZXJhaWVudCBwYXMgZCdhcHByZW5kcmUKcGx1cyBkJ3VuIGNvb2tpZSA6CgogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CgpQb3VyIGluc+lyZXIgdW4gY29va2llLCBlbiBzJ2Fzc3VyYW50IHF1J3VuIGNhY2hlIGVuIGFtb250IG5lIGxlIHN0b2NrZXJhIHBhcywKYWpvdXRlciBsZSBtb3QgY2zpICdub2NhY2hlJyBhcHLocyAnaW5zZXJ0JyA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZQoKUG91ciBpbnPpcmVyIHVuIGNvb2tpZSBzZXVsZW1lbnQgc3VpdGUgYXV4IHJlcXXqdGVzIGRlIHR5cGUgUE9TVCwgYWpvdXRlciBsZQptb3QgY2zpICdwb3N0b25seScgYXBy6HMgJ2luc2VydCcgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IHBvc3Rvbmx5CgoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KLSBJbCBlc3QgcG9zc2libGUgZGUgY29tYmluZXIgJ2luc2VydCcgYXZlYyAnaW5kaXJlY3QnIG91ICdyZXdyaXRlJyBwb3VyCiAgcydhZGFwdGVyIOAgZGVzIGFwcGxpY2F0aW9ucyBn6W7pcmFudCBk6WrgIGxlIGNvb2tpZSwgYXZlYyB1biBjb250ZW51CiAgaW52YWxpZGUuIElsIHN1ZmZpdCBwb3VyIGNlbGEgZGUgbGVzIHNw6WNpZmllciBzdXIgbGEgbeptZSBsaWduZS4KCi0gZGFucyBsZSBjYXMgb/kgJ2luc2VydCcgZXQgJ2luZGlyZWN0JyBzb250IHNw6WNpZmnpcywgbGUgY29va2llIG4nZXN0IGphbWFpcwogIHRyYW5zbWlzIGF1IHNlcnZldXIgdnUgcXUnaWwgbidlbiBhIHBhcyBjb25uYWlzc2FuY2UgZXQgbmUgcG91cnJhaXQgcGFzIGxlCiAgY29tcHJlbmRyZS4KCi0gaWwgZXN0IHBhcnRpY3VsaehyZW1lbnQgcmVjb21tYW5k6SBkJ3V0aWxpc2VyICdub2NhY2hlJyBlbiBtb2RlIGluc2VydGlvbiBzaQogIGRlcyBjYWNoZXMgcGV1dmVudCBzZSB0cm91dmVyIGVudHJlIGxlcyBjbGllbnRzIGV0IGwnaW5zdGFuY2UgZHUgcHJveHkuIERhbnMKICBsZSBjYXMgY29udHJhaXJlLCB1biBjYWNoZSBIVFRQIDEuMCBwb3VycmFpdCBjYWNoZXIgbGEgculwb25zZSwgaW5jbHVhbnQgbGUKICBjb29raWUgZGUgcGVyc2lzdGVuY2UgaW5z6XLpLCBkb25jIHByb3ZvcXVlciBkZXMgY2hhbmdlbWVudHMgZGUgc2VydmV1cnMgcG91cgogIGRlcyBjbGllbnRzIHBhcnRhZ2VhbnQgbGUgbeptZSBjYWNoZS4KCi0gbGUgbW9kZSAncHJlZml4JyBuZSBu6WNlc3NpdGUgcGFzIGQndXRpbGlzZXIgJ2luZGlyZWN0JywgJ25vY2FjaGUnLCBuaQogICdwb3N0b25seScsIGNhciB0b3V0IGNvbW1lIGxlIG1vZGUgJ3Jld3JpdGUnLCBpbCBzJ2FwcHVpZSBzdXIgdW4gY29va2llCiAgcHLpc2VudOkgcGFyIGwnYXBwbGljYXRpb24gcXVpIGVzdCBjZW5z6WUgc2F2b2lyIOAgcXVlbCBtb21lbnQgaWwgcGV1dAogIOp0cmUg6W1pcyBzYW5zIHJpc3F1ZS4gVG91dGVmb2lzLCBjb21tZSBpbCBu6WNlc3NpdGUgZGUgcmVjdGlmaWVyIGxlIGNvb2tpZQogIHBy6XNlbnTpIHBhciBsZSBjbGllbnQgZGFucyBjaGFxdWUgcmVxdep0ZSB1bHTpcmlldXJlLCBpbCBlc3QgaW5kaXNwZW5zYWJsZQogIGRlIHMnYXNzdXJlciBxdWUgbGUgY2xpZW50IGV0IGxlIHNlcnZldXIgY29tbXVuaXF1ZXJvbnQgc2FucyAia2VlcC1hbGl2ZQogIEhUVFAiLiBEYW5zIGxlIGRvdXRlLCBpbCBlc3QgcmVjb21tYW5k6SBkJ3V0aWxpc2VyIGwnb3B0aW9uICJodHRwY2xvc2UiLgoKLSBsb3JzcXVlIGwnYXBwbGljYXRpb24gZXN0IGJpZW4gY29ubnVlLCBldCBxdWUgbGVzIHBhcnRpZXMgbuljZXNzaXRhbnQgZGUgbGEKICBwZXJzaXN0ZW5jZSBzb250IHN5c3TpbWF0aXF1ZW1lbnQgYWNj6WTpZXMgcGFyIHVuIGZvcm11bGFpcmUgZW4gbW9kZSBQT1NULAogIGlsIGVzdCBwbHVzIGVmZmljYWNlIGVuY29yZSBkZSBjb21iaW5lciBsZSBtb3QgY2zpICJwb3N0b25seSIgYXZlYyAiaW5zZXJ0IgogIGV0ICJpbmRpcmVjdCIsIGNhciBsYSBwYWdlIGQnYWNjdWVpbCByZXN0ZSBjYWNoYWJsZSwgZXQgYydlc3QgbCdhcHBsaWNhdGlvbgogIHF1aSBn6HJlIGxlICdjYWNoZS1jb250cm9sJy4KCjIuMTApIEFzc2lnbmF0aW9uIGQndW4gc2VydmV1ciDgIHVuZSB2YWxldXIgZGUgY29va2llCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBpbCBlc3QgcG9zc2libGUgZCdhc3NvY2llciBkZXMgdmFsZXVycyBkZSBjb29raWUg4CBkZXMgc2VydmV1cnMKcGFyIGxlIHBhcmFt6HRyZSAnc2VydmVyJy4gTGEgc3ludGF4ZSBlc3QgOgoKICAgIHNlcnZlciA8aWRlbnRpZmlhbnQ+IDxhZHJlc3NlX2lwPjo8cG9ydD4gY29va2llIDx2YWxldXI+CgotIDxpZGVudGlmaWFudD4gZXN0IHVuIG5vbSBxdWVsY29ucXVlIGRlIHNlcnZldXIgdXRpbGlz6SBwb3VyIGwnaWRlbnRpZmllciBkYW5zIGxhCiAgY29uZmlndXJhdGlvbiBldCBsZXMgbG9ncy4KLSA8YWRyZXNzZV9pcD46PHBvcnQ+IGVzdCBsZSBjb3VwbGUgYWRyZXNzZS1wb3J0IHN1ciBsZXF1ZWwgbGUgc2VydmV1ciDpY291dGUuCi0gPHZhbGV1cj4gZXN0IGxhIHZhbGV1ciDgIHJlY29ubmHudHJlIG91IHBvc2l0aW9ubmVyIGRhbnMgbGUgY29va2llLgoKRXhlbXBsZSA6IGxlIGNvb2tpZSBTRVJWRVJJRCBwZXV0IGNvbnRlbmlyIHNlcnZlcjAxIG91IHNlcnZlcjAyCi0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoKQXR0ZW50aW9uIDogbGEgc3ludGF4ZSBhIGNoYW5n6SBkZXB1aXMgbGEgdmVyc2lvbiAxLjAuCi0tLS0tLS0tLS0tCgozKSBS6XBhcnRpdGV1ciBkZSBjaGFyZ2UgYXV0b25vbWUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZSByZWxhaXMgcGV1dCBlZmZlY3R1ZXIgbHVpLW3qbWUgbGEgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGxlcyBkaWZm6XJlbnRzCnNlcnZldXJzIGTpZmluaXMgcG91ciB1biBzZXJ2aWNlIGRvbm7pLCBlbiBtb2RlIFRDUCBjb21tZSBlbiBtb2RlIEhUVFAuIFBvdXIKY2VsYSwgb24gcHLpY2lzZSBsZSBtb3QgY2zpICdiYWxhbmNlJyBkYW5zIGxhIGTpZmluaXRpb24gZHUgc2VydmljZSwK6XZlbnR1ZWxsZW1lbnQgc3VpdmkgZHUgbm9tIGQndW4gYWxnb3JpdGhtZSBkZSBy6XBhcnRpdGlvbi4gSnVzcXUn4CBsYSB2ZXJzaW9uCjEuMi4xMSwgc2V1bCAncm91bmRyb2Jpbicg6XRhaXQgZ+ly6SwgZXQgYydlc3QgYXVzc2kgbGEgdmFsZXVyIGltcGxpY2l0ZSBwYXIKZOlmYXV0LiBBdmVjIGxhIHZlcnNpb24gMS4yLjEyLCBsZSBub3V2ZWF1IG1vdCBjbOkgJ3NvdXJjZScgZXN0IGFwcGFydS4gTGEKdmVyc2lvbiAxLjMuMTAgYSDpZ2FsZW1lbnQgYXBwb3J06SBsZSBtb3QgY2zpICd1cmknLiBJbCBlc3Qg6XZpZGVudCBxdSdlbiBjYXMKZCd1dGlsaXNhdGlvbiBkdSBy6XBhcnRpdGV1ciBpbnRlcm5lLCBpbCBuZSBmYXVkcmEgcGFzIHNw6WNpZmllciBkJ2FkcmVzc2UgZGUKZGlzcGF0Y2gsIGV0IHF1J2lsIGZhdWRyYSBhdSBtb2lucyB1biBzZXJ2ZXVyLgoKRXhlbXBsZSA6IG3qbWUgcXVlIHBy6WPpZGVtbWVudCBlbiBy6XBhcnRpdGlvbiBpbnRlcm5lCi0tLS0tLS0tLQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjIyLCBpbCBlc3QgcG9zc2libGUgZGUgZOl0ZXJtaW5lciBhdXRvbWF0aXF1ZW1lbnQgbGUgcG9ydApkdSBzZXJ2ZXVyIHZlcnMgbGVxdWVsIHNlcmEgZW52b3npZSBsYSBjb25uZXhpb24sIGVuIGZvbmN0aW9uIGR1IHBvcnQgZCfpY291dGUKc3VyIGxlcXVlbCBsZSBjbGllbnQgcydlc3QgY29ubmVjdOkuIEVuIGVmZmV0LCBpbCB5IGEgNCBwb3NzaWJpbGl06XMgcG91ciBsZQpjaGFtcCA8cG9ydD4gZGUgbCdhZHJlc3NlIHNlcnZldXIgOgoKICAtIG5vbiBzcOljaWZp6SBvdSBudWwgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLgoKICAtIHZhbGV1ciBudW3pcmlxdWUgKHNldWwgY2FzIHN1cHBvcnTpIHBvdXIgbGVzIHZlcnNpb25zIGFudOlyaWV1cmVzKSA6CiAgICBsZSBzZXJ2ZXVyIHJlY2V2cmEgbGEgY29ubmV4aW9uIHN1ciBsZSBwb3J0IGTpc2lnbukuCgogIC0gdmFsZXVyIG51belyaXF1ZSBwculj6WTpZSBkJ3VuIHNpZ25lICcrJyA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24sIGF1cXVlbCBvbiBham91dGUgbGEgdmFsZXVyIGTpc2lnbullLgogICAgCiAgLSB2YWxldXIgbnVt6XJpcXVlIHBy6WPpZOllIGQndW4gc2lnbmUgJy0nIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbiwgZHVxdWVsIG9uIHNvdXN0cmFpdCBsYSB2YWxldXIKICAgIGTpc2lnbullLgogICAgCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMSBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCiMgcmVsYXlhZ2Ugc2ltdWx0YW7pIGRlcyBwb3J0cyA4MCBldCA4MSBldCA4MDgwLTgwODkKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAsOjgxLDo4MDgwLTgwODkKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMSBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCiMgcmVsYXlhZ2UgVENQIGRlcyBwb3J0cyAyNSwgMzg5IGV0IDY2MyB2ZXJzIGxlcyBwb3J0cyAxMDI1LCAxMzg5IGV0IDE2NjMKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6MjUsOjM4OSw6NjYzCiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTorMTAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOisxMDAwCgpDb21tZSBpbmRpcXXpIHBy6WPpZGVtbWVudCwgbGEgdmVyc2lvbiAxLjIuMTIgYXBwb3J0YSBsZSBub3V2ZWF1IG1vdCBjbOkKJ3NvdXJjZScuIExvcnNxdWUgY2VsdWktY2kgZXN0IHV0aWxpc+ksIGwnYWRyZXNzZSBJUCBkdSBjbGllbnQgZXN0IGhhY2jpZSBldApkaXN0cmlidellIGRlIG1hbmnocmUgaG9tb2fobmUgcGFybWkgbGVzIHNlcnZldXJzIGRpc3BvbmlibGVzLCBkZSBzb3J0ZSBxdSd1bmUKbeptZSBhZHJlc3NlIElQIGFpbGxlIHRvdWpvdXJzIHN1ciBsZSBt6m1lIHNlcnZldXIgdGFudCBxdSdpbCBuJ3kgYSBhdWN1bgpjaGFuZ2VtZW50IGRhbnMgbGUgbm9tYnJlIGRlIHNlcnZldXJzIGRpc3BvbmlibGVzLiBDZWNpIHBldXQg6nRyZSB1dGlsaXPpIHBhcgpleGVtcGxlIHBvdXIgYXR0YWNoZXIgbGUgSFRUUCBldCBsZSBIVFRQUyBzdXIgdW4gbeptZSBzZXJ2ZXVyIHBvdXIgdW4gbeptZQpjbGllbnQuIENlbGEgcGV1dCDpZ2FsZW1lbnQg6nRyZSB1dGlsaXPpIHBvdXIgYW3pbGlvcmVyIGxhIHBlcnNpc3RhbmNlCmxvcnNxdSd1bmUgcGFydGllIGRlIGxhIHBvcHVsYXRpb24gZGVzIGNsaWVudHMgbidhY2NlcHRlIHBhcyBsZXMgY29va2llcy4gRGFucwpjZSBjYXMsIHNldWxzIGNlcyBkZXJuaWVycyBzZXJvbnQgcGVydHVyYulzIHBhciBsYSBwZXJ0ZSBkJ3VuIHNlcnZldXIuCgpOT1RFOiBpbCBlc3QgaW1wb3J0YW50IGRlIHByZW5kcmUgZW4gY29tcHRlIGxlIGZhaXQgcXVlIGJlYXVjb3VwIGQnaW50ZXJuYXV0ZXMKICAgICAgbmF2aWd1ZW50IOAgdHJhdmVycyBkZXMgZmVybWVzIGRlIHByb3hpZXMgcXVpIGFzc2lnbmVudCBkZXMgYWRyZXNzZXMgSVAKICAgICAgZGlmZulyZW50ZXMg4CBjaGFxdWUgcmVxdep0ZS4gRCdhdXRyZXMgaW50ZXJuYXV0ZXMgdXRpbGlzZW50IGRlcyBsaWVucyDgCiAgICAgIGxhIGRlbWFuZGUgZXQgb2J0aWVubmVudCB1bmUgYWRyZXNzZSBJUCBkaWZm6XJlbnRlIOAgY2hhcXVlIGNvbm5leGlvbi4gRGUKICAgICAgY2UgZmFpdCwgbGUgcGFyYW3odHJlICdzb3VyY2UnIGRvaXQg6nRyZSB1dGlsaXPpIGF2ZWMgdW5lIGV4dHLobWUKICAgICAgcHLpY2F1dGlvbi4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKIyBhc3N1cmVyIHF1J3VuZSBt6m1lIGFkcmVzc2UgSVAgaXJhIHN1ciBsZSBt6m1lIHNlcnZldXIgcG91ciB0b3V0IHNlcnZpY2UKCiAgICBsaXN0ZW4gaHR0cF9wcm94eQogICAgICAgIGJpbmQgOjgwLDo0NDMKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBiYWxhbmNlIHNvdXJjZQogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIKCiMgYW3pbGlvcmVyIGxhIHBlcnNpc3RhbmNlIHBhciBsJ3V0aWxpc2F0aW9uIGRlIGxhIHNvdXJjZSBlbiBwbHVzIGR1IGNvb2tpZSA6CgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSBzb3VyY2UKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMSBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCkRlIHBsdXMsIHRlbCBxdSdpbmRpcXXpIGNpLWRlc3N1cywgbGEgdmVyc2lvbiAxLjMuMTAgYSBpbnRyb2R1aXQgbGUgbW90IGNs6QondXJpJy4gSWwgZXN0IHRy6HMgcHJhdGlxdWUgZGFucyBsZSBjYXMgZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGRlcwpyZXZlcnNlLXByb3h5LWNhY2hlcywgcGFyY2UgcXUnaWwgdXRpbGlzZXJhIGxlIHLpc3VsdGF0IGQndW4gaGFjaGFnZSBkZSBsJ1VSSQpwb3VyIGNob2lzaXIgdW4gc2VydmV1ciwgY2UgcXVpIGF1cmEgcG91ciBlZmZldCBkJ29wdGltaXNlciBsZSB0YXV4IGRlIGNhY2hlCmR1IGZhaXQgcXVlIGxhIG3qbWUgVVJJIHNlcmEgdG91am91cnMgZW52b3npZSBhdSBt6m1lIGNhY2hlLiBDZSBtb3QtY2zpIG4nZXN0CmF1dG9yaXPpIHF1J2VuIG1vZGUgSFRUUC4KCkV4YW1wbGUgOgotLS0tLS0tLS0KCiMgRW52b2llIHRvdWpvdXJzIHVuZSBVUkkgZG9ubullIGF1IG3qbWUgc2VydmV1cgoKICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6MzEyOAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGJhbGFuY2UgdXJpCiAgICAgICAgc2VydmVyIHNxdWlkMSAxOTIuMTY4LjEuMQogICAgICAgIHNlcnZlciBzcXVpZDIgMTkyLjE2OC4xLjIKCkxhIHZlcnNpb24gMS4zLjE0IGEgYXBwb3J06SB1bmUgbm91dmVsbGUgbel0aG9kZSAnYmFsYW5jZSB1cmxfcGFyYW0nLiBFbGxlCmNvbnNpc3RlIOAgc2UgYmFzZXIgc3VyIHVuIHBhcmFt6HRyZSBwYXNz6SBkYW5zIGwnVVJMIHBvdXIgZWZmZWN0dWVyIHVuIGhhY2hhZ2UKdXRpbGlz6SBwb3VyIGTpdGVybWluZXIgbGUgc2VydmV1ciDgIHV0aWxpc2VyLiBDZWNpIGVzdCBwcmluY2lwYWxlbWVudCB1dGlsZQpwb3VyIGRlcyBhcHBsaWNhdGlvbnMgbidheWFudCBwYXMgdW5lIGV4aWdlbmNlIHN0cmljdGUgZGUgcGVyc2lzdGFuY2UsIG1haXMKcG91ciBsZXNxdWVsbGVzIGVsbGUgcHJvY3VyZSB1biBnYWluIGRlIHBlcmZvcm1hbmNlIG5vdGFibGUgZGFucyBkZXMKZW52aXJvbm5lbWVudHMgb/kgaWwgbidlc3QgcGFzIHRvdWpvdXJzIHBvc3NpYmxlIGQndXRpbGlzZXIgZGVzIGNvb2tpZXMuIEVuIGNhcwpkJ2Fic2VuY2UgZHUgcGFyYW3odHJlIGRhbnMgbCdVUkwsIGFsb3JzIHVuZSBy6XBhcnRpdGlvbiBkZSB0eXBlICdyb3VuZCByb2JpbicKZXN0IGVmZmVjdHXpZS4KCkV4YW1wbGUgOgotLS0tLS0tLS0KCiMgaGFjaGUgbGUgcGFyYW3odHJlICJiYXNrZXRfaWQiIGRhbnMgbCdVUkwgcG91ciBk6XRlcm1pbmVyIGxlIHNlcnZldXIKCiAgICBsaXN0ZW4gaHR0cF9wcm94eQogICAgICAgIGJpbmQgOjMxMjgKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBiYWxhbmNlIHVybF9wYXJhbSBiYXNrZXRfaWQKICAgICAgICBzZXJ2ZXIgZWJpejEgMTkyLjE2OC4xLjEKICAgICAgICBzZXJ2ZXIgZWJpejIgMTkyLjE2OC4xLjIKCgozLjEpIFN1cnZlaWxsYW5jZSBkZXMgc2VydmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSB0ZXN0ZXIgbCfpdGF0IGRlcyBzZXJ2ZXVycyBwYXIg6XRhYmxpc3NlbWVudCBkZSBjb25uZXhpb24KVENQIG91IHBhciBlbnZvaSBkJ3VuZSByZXF16nRlIEhUVFAuIFVuIHNlcnZldXIgaG9ycyBkJ3VzYWdlIG5lIHNlcmEgcGFzCnV0aWxpc+kgZGFucyBsZSBwcm9jZXNzdXMgZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGludGVybmUuIFBvdXIgYWN0aXZlciBsYQpzdXJ2ZWlsbGFuY2UsIGFqb3V0ZXIgbGUgbW90IGNs6SAnY2hlY2snIOAgbGEgZmluIGRlIGxhIGTpY2xhcmF0aW9uIGR1IHNlcnZldXIuCklsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgbCdpbnRlcnZhbGxlIChlbiBtaWxsaXNlY29uZGVzKSBz6XBhcmFudCBkZXV4CnRlc3RzIGR1IHNlcnZldXIgcGFyIGxlIHBhcmFt6HRyZSAiaW50ZXIiLCBsZSBub21icmUgZCfpY2hlY3MgYWNjZXB06XMgcGFyIGxlCnBhcmFt6HRyZSAiZmFsbCIsIGV0IGxlIG5vbWJyZSBkZSBzdWNj6HMgYXZhbnQgcmVwcmlzZSBwYXIgbGUgcGFyYW3odHJlICJyaXNlIi4KTGVzIHBhcmFt6HRyZXMgbm9uIHBy6WNpc+lzIHByZW5uZW50IGxlcyB2YWxldXJzIHN1aXZhbnRlcyBwYXIgZOlmYXV0IDoKCiAtIGludGVyIDogMjAwMAogLSByaXNlICA6IDIKIC0gZmFsbCAgOiAzCiAtIHBvcnQgIDogcG9ydCBkZSBjb25uZXhpb24gZHUgc2VydmV1cgogLSBhZGRyICA6IGFkcmVzc2UgZGUgY29ubmV4aW9uIGR1IHNlcnZldXIgKHBhciBkZWZhdXQ6IGFkcmVzc2UgZHUgc2VydmV1cikKIApMZSBtb2RlIHBhciBk6WZhdXQgY29uc2lzdGUg4CDpdGFibGlyIGRlcyBjb25uZXhpb25zIFRDUCB1bmlxdWVtZW50LiBEYW5zCmNlcnRhaW5zIGNhcyBkZSBwYW5uZXMsIGRlcyBzZXJ2ZXVycyBwZXV2ZW50IGNvbnRpbnVlciDgIGFjY2VwdGVyIGxlcwpjb25uZXhpb25zIHNhbnMgbGVzIHRyYWl0ZXIuIERlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNiwgaGFwcm94eSBlc3QgZW4gbWVzdXJlCmQnZW52b3llciBkZXMgcmVxdep0ZXMgSFRUUCBjb3VydGVzIGV0IHRy6HMgcGV1IGNv+3RldXNlcy4gTGVzIHZlcnNpb25zIDEuMS4xNgpldCAxLjEuMTcgdXRpbGlzZW50ICJPUFRJT05TIC8gSFRUUC8xLjAiLiBEYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMTgg4CAxLjEuMjAsCmxlcyByZXF16nRlcyBvbnQg6XTpIGNoYW5n6WVzIGVuICJPUFRJT05TICogSFRUUC8xLjAiIHBvdXIgZGVzIHJhaXNvbnMgZGUKY29udHL0bGUgZCdhY2PocyBhdXggcmVzc291cmNlcy4gQ2VwZW5kYW50LCBjZXR0ZSByZXF16nRlIGRvY3VtZW506WUgZGFucyBsYQpSRkMyMDY4IG4nZXN0IHBhcyBjb21wcmlzZSBwYXIgdG91cyBsZXMgc2VydmV1cnMuIERvbmMg4CBwYXJ0aXIgZGUgbGEgdmVyc2lvbgoxLjEuMjEsIGxhIHJlcXXqdGUgcGFyIGTpZmF1dCBlc3QgcmV2ZW51ZSDgICJPUFRJT05TIC8gSFRUUC8xLjAiLCBtYWlzIGlsIGVzdApwb3NzaWJsZSBkZSBwYXJhbel0cmVyIGxhIHBhcnRpZSBVUkkuIExlcyByZXF16nRlcyBPUFRJT05TIHBy6XNlbnRlbnQKbCdhdmFudGFnZSBkJ+p0cmUgZmFjaWxlbWVudCBleHRyYWN0aWJsZXMgZGVzIGxvZ3MsIGV0IGRlIG5lIHBhcyBpbmR1aXJlCmQnYWNj6HMgYXV4IGZpY2hpZXJzIGP0dOkgc2VydmV1ci4gU2V1bGVzIGxlcyBy6XBvbnNlcyAyeHggZXQgM3h4IHNvbnQKY29uc2lk6XLpZXMgdmFsaWRlcywgbGVzIGF1dHJlcyAoeSBjb21wcmlzIG5vbi1y6XBvbnNlcykgYWJvdXRpc3NlbnQg4CB1bgrpY2hlYy4gTGUgdGVtcHMgbWF4aW1hbCBpbXBhcnRpIHBvdXIgdW5lIHLpcG9uc2UgZXN0IOlnYWwg4CBsJ2ludGVydmFsbGUgZW50cmUKZGV1eCB0ZXN0cyAocGFyYW3odHJlICJpbnRlciIpLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgc3DpY2lmaWVyIGwnb3B0aW9uCiJodHRwY2hrIiwg6XZlbnR1ZWxsZW1lbnQgc3VpdmllIGQndW5lIG3pdGhvZGUgZXQgZCd1bmUgVVJJLiBMJ29wdGlvbiAiaHR0cGNoayIKYWNjZXB0ZSBkb25jIDQgZm9ybWVzIDoKCiAgLSBvcHRpb24gaHR0cGNoayAgICAgICAgICAgICAgIC0+IE9QVElPTlMgLyBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgVVJJICAgICAgICAgICAtPiBPUFRJT05TIDxVUkk+IEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBNRVRIIFVSSSAgICAgIC0+IDxNRVRIPiA8VVJJPiBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgTUVUSCBVUkkgVkVSICAtPiA8TUVUSD4gPFVSST4gPFZFUj4KCkhBUHJveHkgZXN0IHNvdXZlbnQgdXRpbGlz6SBwb3VyIHJlbGF5ZXIgZGl2ZXJzIHByb3RvY29sZXMgcmVwb3NhbnQgc3VyIFRDUCwKdGVscyBxdWUgSFRUUFMsIFNNVFAgb3UgTERBUCwgbGUgcGx1cyBjb21tdW4g6XRhbnQgSFRUUFMuIFVuIHByb2Js6G1lIGFzc2V6CmNvdXJhbW1lbnQgcmVuY29udHLpIGRhbnMgbGVzIGRhdGEgY2VudGVycyBlc3QgbGUgYmVzb2luIGRlIHJlbGF5ZXIgZHUgdHJhZmljCnZlcnMgZGVzIHNlcnZldXJzIGxvaW50YWlucyB0b3V0IGVuIG1haW50ZW5hbnQgbGEgcG9zc2liaWxpdOkgZGUgYmFzY3VsZXIgc3VyCnVuIHNlcnZldXIgZGUgc2Vjb3Vycy4gTGVzIHRlc3RzIHB1cmVtZW50IFRDUCBuZSBzdWZmaXNlbnQgcGFzIHRvdWpvdXJzIGRhbnMKY2VzIHNpdHVhdGlvbnMgY2FyIGwnb24gdHJvdXZlIHNvdXZlbnQsIGRhbnMgbGEgY2hh7m5lLCBkZXMgcHJveGllcywgZmlyZXdhbGxzCm91IHLpcGFydGl0ZXVycyBkZSBjaGFyZ2UgcXVpIHBldXZlbnQgYWNxdWl0dGVyIGxhIGNvbm5leGlvbiBhdmFudCBxdSdlbGxlCm4nYXR0ZWlnbmUgbGUgc2VydmV1ci4gTGEgc2V1bGUgc29sdXRpb24g4CBjZSBwcm9ibOhtZSBlc3QgZCdlbnZveWVyIGRlcyB0ZXN0cwphcHBsaWNhdGlmcy4gQ29tbWUgbGEgZGVtYW5kZSBwb3VyIGxlcyB0ZXN0cyBIVFRQUyBlc3Qg6WxldullLCBjZSB0ZXN0IGEg6XTpCmltcGzpbWVudOkgZW4gdmVyc2lvbiAxLjIuMTUgc3VyIGxhIGJhc2UgZGUgbWVzc2FnZXMgU1NMdjMgQ0xJRU5UIEhFTExPLiBQb3VyCmwnYWN0aXZlciwgdXRpbGlzZXIgIm9wdGlvbiBzc2wtaGVsbG8tY2hrIi4gQ2VjaSBlbnZlcnJhIGRlcyBtZXNzYWdlcyBTU0x2MwpDTElFTlQgSEVMTE8gYXV4IHNlcnZldXJzLCBlbiBhbm5vbudhbnQgdW4gc3VwcG9ydCBwb3VyIGxhIG1ham9yaXTpIGRlcwphbGdvcml0aG1lcyBkZSBjaGlmZnJlbWVudC4gU2kgZW4gcmV0b3VyLCBsZSBzZXJ2ZXVyIGVudm9pZSBjZSBxdWkgcmVzc2VtYmxlIOAKdW5lIHLpcG9uc2UgU1NMdjMgU0VSVkVSIEhFTExPIG91IEFMRVJUIChyZWZ1cyBkZXMgYWxnb3JpdGhtZXMpLCBhbG9ycyBsYQpy6XBvbnNlIHNlcmEgY29uc2lk6XLpZSBjb21tZSB2YWxpZGUuIE5vdGVyIHF1J0FwYWNoZSBuZSBwcm9kdWl0IHBhcyBkZSBsb2cKbG9yc3F1J2lsIHJl529pdCBkZXMgbWVzc2FnZXMgSEVMTE8sIGNlIHF1aSBlbiBmYWl0IHVuIHR5cGUgZGUgbWVzc2FnZQpwYXJmYWl0ZW1lbnQgYWRhcHTpIOAgY2UgYmVzb2luLgoKTGEgdmVyc2lvbiAxLjMuMTAgZXN0IGFjY29tcGFnbullIGQndW4gbm91dmVhdSB0ZXN0IGQn6XRhdCBwb3VyIGxlIFNNVFAuIFBhcgpk6WZhdXQsIGlsIGNvbnNpc3RlIOAgZW52b3llciAiSEVMTyBsb2NhbGhvc3QiIGF1eCBzZXJ2ZXVycywgZXQg4CBhdHRlbmRyZSBsZQptZXNzYWdlICIyNTAiIGVuIHJldG91ci4gTm90ZXogcXUnaWwgcGV1dCBhdXNzaSBlbnZveWVyIHVuZSByZXF16nRlIHBsdXMKc3DpY2lmaXF1ZSA6CgogIC0gb3B0aW9uIHNtdHBjaGsgICAgICAgICAgICAgICAgICAgICAgICAgLT4gZW52b2llICJIRUxPIGxvY2FsaG9zdCIKICAtIG9wdGlvbiBzbXRwY2hrIEVITE8gbWFpbC5teWRvbWFpbi5jb20gIC0+IGVudm9pZSBjZSBtZXNzYWdlIEVTTVRQCgpWb2lyIGxlcyBleGVtcGxlcyBjaS1hcHLocy4gICAgICAgIAoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgZOlmaW5pciBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycywKdXRpbGlz6XMgdW5pcXVlbWVudCBsb3JzcXUnYXVjdW4gZGVzIGF1dHJlcyBzZXJ2ZXVycyBuZSBmb25jdGlvbm5lLiBQb3VyIGNlbGEsCmFqb3V0ZXIgbGUgbW90IGNs6SAiYmFja3VwIiBzdXIgbGEgbGlnbmUgZGUgZOlmaW5pdGlvbiBkdSBzZXJ2ZXVyLiBVbiBzZXJ2ZXVyCmRlIHNlY291cnMgbidlc3QgYXBwZWzpIHF1ZSBsb3JzcXVlIHRvdXMgbGVzIHNlcnZldXJzIG5vcm1hdXgsIGFpbnNpIHF1ZSB0b3VzCmxlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIHF1aSBsZSBwculj6GRlbnQgc29udCBob3JzIGQndXNhZ2UuIElsIG4neSBhIGRvbmMgcGFzCmRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycyBwYXIgZOlmYXV0LiBBIHBhcnRpcgpkZSBsYSB2ZXJzaW9uIDEuMi45LCBpbCBlc3QgcG9zc2libGUgZGUgbGVzIHV0aWxpc2VyIHNpbXVsdGFu6W1lbnQgZ3LiY2Ug4ApsJ29wdGlvbiAnYWxsYmFja3VwcycuIENlIHR5cGUgZGUgc2VydmV1cnMgcGV1dCBzZXJ2aXIg4CByZXRvdXJuZXIgZGVzIHBhZ2VzCmQnaW5kaXNwb25pYmlsaXTpIGRlIHNlcnZpY2UuIERhbnMgY2UgY2FzLCBpbCBlc3QgcHLpZulyYWJsZSBkZSBuZSBwYXMgYWZmZWN0ZXIKZGUgY29va2llLCBhZmluIHF1ZSBsZXMgY2xpZW50cyBxdWkgbGUgcmVuY29udHJlbnQgbid5IHNvaWVudCBwYXMgYWZmZWN06XMKZOlmaW5pdGl2ZW1lbnQuIExlIGZhaXQgZGUgbmUgcGFzIG1ldHRyZSBkZSBjb29raWUgZW52b2llIHVuIGNvb2tpZSB2aWRlLCBjZQpxdWkgYSBwb3VyIGVmZmV0IGRlIHN1cHByaW1lciB1biDpdmVudHVlbCBjb29raWUgYWZmZWN06SBwculj6WRlbW1lbnQuCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjIsIGlsIGVzdCBwb3NzaWJsZSBkJ2Vudm95ZXIgbGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50CnZlcnMgdW4gcG9ydCBkaWZm6XJlbnQgZGUgY2VsdWkgZGUgc2VydmljZS4gQydlc3QgbuljZXNzYWlyZSBwcmluY2lwYWxlbWVudApwb3VyIGxlcyBjb25maWd1cmF0aW9ucyBv+SBsZSBzZXJ2ZXVyIG4nYSBwYXMgZGUgcG9ydCBwculk6WZpbmksIHBhciBleGVtcGxlCmxvcnNxdSdpbCBlc3QgZOlkdWl0IGR1IHBvcnQgZCdhY2NlcHRhdGlvbiBkZSBsYSBjb25uZXhpb24uIFBvdXIgY2VsYSwgdXRpbGlzZXIKbGUgcGFyYW3odHJlICdwb3J0JyBzdWl2aSBkdSBudW3pcm8gZGUgcG9ydCBkZXZhbnQgculwb25kcmUgYXV4IHJlcXXqdGVzLiBJbAplc3QgcG9zc2libGUgZCdlbnZveWVyIGxlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudCB2ZXJzIHVuZSBhZHJlc3NlIGRpZmbpcmVudGUgCmRlIGNlbGxlIGRlIHNlcnZpY2UuIENlbGEgcGVybWV0IGQndXRpbGlzZXIsIHN1ciBsYSBtYWNoaW5lIGZhaXNhbnQgZm9uY3Rpb25uZXIKSEFwcm94eSwgdW4gZOltb24gcGVybWV0dGFudCBkZXMgdGVzdHMgc3BlY2lmaXF1ZXMgKCBSRUdFWCBzdXIgdW4gculzdWx0YXQgZXQKYmFzY3VsZW1lbnQgZGUgcGx1c2lldXJzIGZlcm1lcyBlbiBjYXMgZCdlcnJldXIgc3VyIGwndW5lIGQnZWxsZXMpLgoKRW5maW4sIGRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNywgaWwgZXN0IHBvc3NpYmxlIGRlIHZpc3VhbGlzZXIgcmFwaWRlbWVudApsJ+l0YXQgY291cmFudCBkZSB0b3VzIGxlcyBzZXJ2ZXVycy4gUG91ciBjZWxhLCBpbCBzdWZmaXQgZCdlbnZveWVyIHVuIHNpZ25hbApTSUdIVVAgYXUgcHJvY2Vzc3VzIHByb3h5LiBMJ+l0YXQgZGUgdG91cyBsZXMgc2VydmV1cnMgZGUgdG91cyBsZXMgcHJveGllcyBlc3QKZW52b3npIGRhbnMgbGVzIGxvZ3MgZW4gbml2ZWF1ICJub3RpY2UiLCBhaW5zaSBxdWUgc3VyIGxhIHNvcnRpZSBkJ2VycmV1cnMgc2kKZWxsZSBlc3QgYWN0aXZlLiBDJ2VzdCB1bmUgYm9ubmUgcmFpc29uIHBvdXIgYXZvaXIgYXUgbW9pbnMgdW4gc2VydmV1ciBkZSBsb2dzCmxvY2FsIGVuIG5pdmVhdSBub3RpY2UuCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTggKGV0IDEuMi4xKSwgdW4gbWVzc2FnZSBkJ3VyZ2VuY2UgZXN0IGVudm956SBkYW5zIGxlcwpsb2dzIGVuIG5pdmVhdSAnZW1lcmcnIHNpIHRvdXMgbGVzIHNlcnZldXJzIGQndW5lIG3qbWUgaW5zdGFuY2Ugc29udCB0b21i6XMsCmFmaW4gZGUgbm90aWZpZXIgbCdhZG1pbmlzdHJhdGV1ciBxdSdpbCBmYXV0IHByZW5kcmUgdW5lIGFjdGlvbiBpbW3pZGlhdGUuCgpEZXB1aXMgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMywgcGx1c2lldXJzIHNlcnZldXJzIHBldXZlbnQgcGFydGFnZXIgbGEKbeptZSB2YWxldXIgZGUgY29va2llLiBDJ2VzdCBwYXJ0aWN1bGnocmVtZW50IHV0aWxlIGVuIG1vZGUgYmFja3VwLCBwb3VyCnPpbGVjdGlvbm5lciBkZXMgY2hlbWlucyBhbHRlcm5hdGlmcyBwb3VyIHVuIHNlcnZldXIgZG9ubuksIHBvdXIgbWV0dHJlIGVuCm9ldXZyZSBsJ2Fycup0IGVuIGRvdWNldXIgZCd1biBzZXJ2ZXVyLCBvdSBwb3VyIGRpcmlnZXIgbGVzIGNsaWVudHMKdGVtcG9yYWlyZW1lbnQgdmVycyB1bmUgcGFnZSBkJ2VycmV1ciBlbiBhdHRlbmRhbnQgbGUgcmVk6W1hcnJhZ2UgZCd1bmUKYXBwbGljYXRpb24uIExlIHByaW5jaXBlIGVzdCBxdWUgbG9yc3F1J3VuIHNlcnZldXIgZXN0IGTpdGVjdOkgY29tbWUgaW5vcOlyYW50LApsZSBwcm94eSBjaGVyY2hlcmEgbGUgcHJvY2hhaW4gc2VydmV1ciBwb3Nz6WRhbnQgbGEgbeptZSB2YWxldXIgZGUgY29va2llIHBvdXIKY2hhcXVlIGNsaWVudCBxdWkgbGUgZGVtYW5kZXJhLiBTJ2lsIG5lIHRyb3V2ZSBwYXMgZGUgc2VydmV1ciBub3JtYWwsIGFsb3JzIGlsCmxlIGNoZXJjaGVyYSBwYXJtaSBsZXMgc2VydmV1cnMgZGUgYmFja3VwLiBDb25zdWx0ZXIgbGUgZ3VpZGUgZCdhcmNoaXRlY3R1cmUKcG91ciBwbHVzIGQnaW5mb3JtYXRpb25zLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiMgY29uZiBkdSBwYXJhZ3JhcGhlIDMpIGF2ZWMgc3VydmVpbGxhbmNlIFRDUAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQgYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ09QVElPTlMgLyBIVFRQLzEuMCcKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoawogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQgYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ09QVElPTlMgL2luZGV4Lmh0bWwgSFRUUC8xLjAnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsgL2luZGV4Lmh0bWwKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgaWRlbSBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0OiB3d3cnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsgSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0Olwgd3d3CiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIHLpcGFydGl0aW9uIGF2ZWMgcGVyc2lzdGVuY2UgYmFz6WUgc3VyIGxlIHBy6WZpeGUgZGUgY29va2llLCBldCBhcnLqdCBlbgojIGRvdWNldXIgdXRpbGlzYW50IHVuIHNlY29uZCBwb3J0ICg4MSkganVzdGUgcG91ciBsZXMgaGVhbHRoLWNoZWNrcy4KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIG9wdGlvbiBodHRwY2hrIEhFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDpcIHd3dwogICAgICAgc2VydmVyIHdlYjEtbm9ybSAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sgcG9ydCA4MQogICAgICAgc2VydmVyIHdlYjItbm9ybSAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sgcG9ydCA4MQogICAgICAgc2VydmVyIHdlYjEtc3RvcCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sgcG9ydCA4MCBiYWNrdXAKICAgICAgIHNlcnZlciB3ZWIyLXN0b3AgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrIHBvcnQgODAgYmFja3VwCgojIEluc2VydGlvbiBhdXRvbWF0aXF1ZSBkZSBjb29raWUgZGFucyBsYSBy6XBvbnNlIGR1IHNlcnZldXIsIGV0IHN1cHByZXNzaW9uCiMgYXV0b21hdGlxdWUgZGFucyBsYSByZXF16nRlLCB0b3V0IGVuIGluZGlxdWFudCBhdXggY2FjaGVzIGRlIG5lIHBhcyBnYXJkZXIKIyBjZSBjb29raWUuCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawoKIyBpZGVtIGF2ZWMgc2VydmV1ciBhcHBsaWNhdGlmIGRlIHNlY291cnMgc3VyIGF1dHJlIHNpdGUsIGV0IHNlcnZldXIgZGUgcGFnZXMgZCdlcnJldXJzCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzZXJ2ZXIwMyBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCiMgcmVsYXlhZ2UgU01UUCtUTFMgYXZlYyB0ZXN0IGR1IHNlcnZldXIgZXQgc2VydmV1ciBkZSBiYWNrdXAKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6MjUsOjU4NwogICAgICAgIG1vZGUgdGNwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCAyNSBpbnRlciAzMDAwMCByaXNlIDEgZmFsbCAyCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjIgYmFja3VwCgojIHJlbGF5YWdlIEhUVFBTIGF2ZWMgdGVzdCBkdSBzZXJ2ZXVyIGV0IHNlcnZldXIgZGUgYmFja3VwCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjQ0MwogICAgICAgIG1vZGUgdGNwCglvcHRpb24gc3NsLWhlbGxvLWNoawogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIGludGVyIDMwMDAwIHJpc2UgMSBmYWxsIDIKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCiMgVXRpbGlzYXRpb24gZCd1biBncm91cGUgZGUgc2VydmV1cnMgcG91ciBsZSBiYWNrdXAgKG7pY2Vzc2l0ZSBoYXByb3h5IDEuMi45KQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrCiAgICAgICAgc2VydmVyIGluc3QxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjawogICAgICAgIHNlcnZlciBpbnN0MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sKICAgICAgICBzZXJ2ZXIgaW5zdDMgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIGNoZWNrCiAgICAgICAgc2VydmVyIGJhY2sxIDE5Mi4xNjguMS4xMDo4MCBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgYmFjazIgMTkyLjE2OC4xLjExOjgwIGNoZWNrIGJhY2t1cAogICAgICAgIG9wdGlvbiBhbGxiYWNrdXBzICAjIGFsbCBiYWNrdXBzIHdpbGwgYmUgdXNlZAoKCjMuMikgUmVjb25uZXhpb24gdmVycyB1biBy6XBhcnRpdGV1ciBlbiBjYXMgZCfpY2hlYyBkaXJlY3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIHNpIHVuIHNlcnZldXIgZOlmaW5pIHBhciB1biBjb29raWUgbmUgculwb25kIHBsdXMsIGxlcyBjbGllbnRzCnNlcm9udCBk6WZpbml0aXZlbWVudCBhaWd1aWxs6XMgZGVzc3VzIOAgY2F1c2UgZGUgbGV1ciBjb29raWUsIGV0IGRlIGNlIGZhaXQsCmTpZmluaXRpdmVtZW50IHByaXbpcyBkZSBzZXJ2aWNlLiBMYSBzcOljaWZpY2F0aW9uIGR1IHBhcmFt6HRyZSAncmVkaXNwYXRjaCcKYXV0b3Jpc2UgZGFucyBjZSBjYXMg4CByZW52b3llciBsZXMgY29ubmV4aW9ucyDpY2hvdellcyB2ZXJzIGxlIHLpcGFydGl0ZXVyCihleHRlcm5lIG91IGludGVybmUpIGFmaW4gZCdhc3NpZ25lciB1biBub3V2ZWF1IHNlcnZldXIg4CBjZXMgY2xpZW50cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCiAgICAgICAgcmVkaXNwYXRjaCAjIHJlbnZveWVyIHZlcnMgZGlzcGF0Y2ggc2kgcmVmdXMgZGUgY29ubmV4aW9uLgoKUGFyIGTpZmF1dCAoZXQgZGFucyBsZXMgdmVyc2lvbnMgMS4xLjE2IGV0IGFudOlyaWV1cmVzKSwgbGUgcGFyYW3odHJlCnJlZGlzcGF0Y2ggbmUgcydhcHBsaXF1ZSBxdSdhdXgg6WNoZWNzIGRlIGNvbm5leGlvbiBhdSBzZXJ2ZXVyLiBEZXB1aXMgbGEKdmVyc2lvbiAxLjEuMTcsIGlsIHMnYXBwbGlxdWUgYXVzc2kgYXV4IGNvbm5leGlvbnMgZGVzdGlu6WVzIOAgZGVzIHNlcnZldXJzCmlkZW50aWZp6XMgY29tbWUgaG9ycyBkJ3VzYWdlIHBhciBsYSBzdXJ2ZWlsbGFuY2UuIFNpIGwnb24gc291aGFpdGUgbWFsZ3LpCnRvdXQgcXUndW4gY2xpZW50IGRpc3Bvc2FudCBkJ3VuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBk6WZlY3R1ZXV4CnRlbnRlIGRlIHMneSBjb25uZWN0ZXIsIGlsIGZhdXQgcHLpY2lzZXIgbCdvcHRpb24gInBlcnNpc3QiIDoKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIHBlcnNpc3QKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCiAgICAgICAgcmVkaXNwYXRjaCAjIHJlbnZveWVyIHZlcnMgZGlzcGF0Y2ggc2kgc2VydmV1ciBIUy4KCgozLjMpIEFzc2lnbmF0aW9uIGRlIHBvaWRzIGRpZmbpcmVudHMg4CBkZXMgc2VydmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBhcmZvaXMgaWwgYXJyaXZlIGQnYWpvdXRlciBkZSBub3V2ZWF1eCBzZXJ2ZXVycyBwb3VyIGFjY3Jv7nRyZSBsYSBjYXBhY2l06QpkJ3VuZSBmZXJtZSBkZSBzZXJ2ZXVyLCBtYWlzIGxlIG5vdXZlYXUgc2VydmV1ciBlc3Qgc29pdCBiZWF1Y291cCBwbHVzIHBldGl0CnF1ZSBsZXMgYXV0cmVzIChkYW5zIGxlIGNhcyBkJ3VuIGFqb3V0IGQndXJnZW5jZSBkZSBtYXTpcmllbCBkZSBy6WN1cOlyYXRpb24pLApzb2l0IHBsdXMgcHVpc3NhbnQgKGxvcnMgZCd1biBpbnZlc3Rpc3NlbWVudCBkYW5zIGR1IG1hdOlyaWVsIG5ldWYpLiBQb3VyIGNldHRlCnJhaXNvbiwgaWwgc2VtYmxlIHBhcmZvaXMganVkaWNpZXV4IGRlIHBvdXZvaXIgZW52b3llciBwbHVzIGRlIGNsaWVudHMgdmVycyBsZXMKcGx1cyBncm9zIHNlcnZldXJzLiBKdXNxdSfgIGxhIHZlcnNpb24gMS4yLjExLCBpbCDpdGFpdCBu6WNlc3NhaXJlIGRlIHLpcGxpcXVlcgpwbHVzaWV1cnMgZm9pcyBsZXMgZOlmaW5pdGlvbnMgZGVzIHNlcnZldXJzIHBvdXIgYXVnbWVudGVyIGxldXIgcG9pZHMuIERlcHVpcwpsYSB2ZXJzaW9uIDEuMi4xMiwgbCdvcHRpb24gJ3dlaWdodCcgZXN0IGRpc3BvbmlibGUuIEhBUHJveHkgY29uc3RydWl0IGFsb3JzCnVuZSB2dWUgZGVzIHNlcnZldXJzIGRpc3BvbmlibGVzIGxhIHBsdXMgaG9tb2fobmUgcG9zc2libGUgZW4gc2UgYmFzYW50IHN1cgpsZXVyIHBvaWRzIGRlIHNvcnRlIHF1ZSBsYSBjaGFyZ2Ugc2UgZGlzdHJpYnVlIGRlIGxhIG1hbmnocmUgbGEgcGx1cyBsaXNzZQpwb3NzaWJsZS4gTGUgcG9pZHMgY29tcHJpcyBlbnRyZSAxIGV0IDI1NiBkb2l0IHJlZmzpdGVyIGxhIGNhcGFjaXTpIGQndW4Kc2VydmV1ciBwYXIgcmFwcG9ydCBhdXggYXV0cmVzLiBMZSBwb2lkcyBkZSAxIGRvbm5lIGxhIGZy6XF1ZW5jZSBkJ2FwcGFyaXRpb24KbGEgcGx1cyBmYWlibGUsIGV0IDI1NiBsYSBmculxdWVuY2UgbGEgcGx1cyDpbGV26WUuIERlIGNldHRlIG1hbmnocmUsIHNpIHVuCnNlcnZldXIgZGlzcGFyYWl0LCBsZXMgY2FwYWNpdOlzIHJlc3RhbnRlcyBzb250IHRvdWpvdXJzIHJlc3BlY3TpZXMuCgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQojIGRpc3RyaWJ1dGlvbiDpcXVpdGFibGUgc3VyIDIgb3B0ZXJvbiBhbmQgdW4gYW5jaWVuIHBlbnRpdW0zCgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgcGVudGl1bTMtODAwIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSB3ZWlnaHQgIDggY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiB3ZWlnaHQgMjAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzZXJ2ZXIwMyB3ZWlnaHQgMjQgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cDEgMTkyLjE2OC4yLjE6ODAgY29va2llIHNlcnZlcjA0IGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKTm90ZXMgOgotLS0tLS0tCiAgLSBsb3JzcXVlIGxlIHBvaWRzIG4nZXN0IHBhcyBzcOljaWZp6SwgbGEgdmFsZXVyIHBhciBk6WZhdXQgZXN0IOAgMQoKICAtIGxlIHBvaWRzIG4naW1wYWN0ZSBwYXMgbGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50IChoZWFsdGggY2hlY2tzKSwgZG9uYyBpbAogICAgZXN0IHBsdXMgcHJvcHJlIGQndXRpbGlzZXIgbGVzIHBvaWRzIHF1ZSBkZSBy6XBsaXF1ZXIgbGUgbeptZSBzZXJ2ZXVyCiAgICBwbHVzaWV1cnMgZm9pcy4KCiAgLSBsZXMgcG9pZHMgcydhcHBsaXF1ZW50IOlnYWxlbWVudCBhdXggc2VydmV1cnMgZGUgYmFja3VwIHNpIGwnb3B0aW9uCiAgICAnYWxsYmFja3VwcycgZXN0IHBvc2l0aW9ubullLgoKICAtIGxlIHBvaWRzIHMnYXBwbGlxdWUgYXVzc2kg4CBsYSBy6XBhcnRpdGlvbiBzZWxvbiBsYSBzb3VyY2UKICAgICgnYmFsYW5jZSBzb3VyY2UnKS4KCiAgLSBxdWVscyBxdWUgc29pZW50IGxlcyBwb2lkcywgbGUgcHJlbWllciBzZXJ2ZXVyIHNlcmEgdG91am91cnMgYXNzaWdu6SBlbgogICAgcHJlbWllci4gQ2V0dGUgcuhnbGUgZmFjaWxpdGUgbGVzIGRpYWdub3N0aWNzLgoKICAtIHBvdXIgbGVzIHB1cmlzdGVzLCBsJ2FsZ29yaXRobWUgZGUgY2FsY3VsYXRpb24gZGUgbGEgdnVlIGRlcyBzZXJ2ZXVycyBkb25uZQogICAgdW5lIHByaW9yaXTpIGF1eCBwcmVtaWVycyBzZXJ2ZXVycywgZG9uYyBsYSB2dWUgZXN0IGxhIHBsdXMgdW5pZm9ybWUgc2kgbGVzCiAgICBzZXJ2ZXVycyBzb250IGTpY2xhculzIGRhbnMgbCdvcmRyZSBjcm9pc3NhbnQgZGUgbGV1cnMgcG9pZHMuCgpMYSBkaXN0cmlidXRpb24gZHUgdHJhZmljIHN1aXZyYSBleGFjdGVtZW50IGxlIHPpcXVlbmNlbWVudCBzdWl2YW50IDoKCiAgICAgICAgUmVxdWVzdHwgICAgICAgICAgICAgICAgICAgMSAxIDEgMQogICAgICAgIG51bWJlciB8IDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMKICAgICAgIC0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIHAzLTgwMCB8IFggLiAuIC4gLiAuIC4gWCAuIC4gLiAuIC4KICAgICAgICBvcHQtMjAgfCAuIFggLiBYIC4gWCAuIC4gLiBYIC4gWCAuCiAgICAgICAgb3B0LTI0IHwgLiAuIFggLiBYIC4gWCAuIFggLiBYIC4gWAoKCjMuNCkgTGltaXRhdGlvbiBkdSBub21icmUgZGUgc2Vzc2lvbnMgY29uY3VycmVudGVzIHBhciBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNlcnRhaW5zIHNlcnZldXJzIHdlYiBtdWx0aS1wcm9jZXNzdXMgdGVscyBxdSdBcGFjaGUgc291ZmZyZW50IGTocyBxdSdpbCB5IGEKdHJvcCBkZSBzZXNzaW9ucyBjb25jdXJyZW50ZXMsIHBhcmNlIHF1J2lsIGVzdCB0cuhzIGNv+3RldXggZGUgZmFpcmUKZm9uY3Rpb25uZXIgZGVzIGNlbnRhaW5lcyBvdSBkZXMgbWlsbGllcnMgZGUgcHJvY2Vzc3VzIHN1ciB1biBzeXN06G1lLiBVbmUKc29sdXRpb24gY29uc2lzdGUg4CBhdWdtZW50ZXIgbGUgbm9tYnJlIGRlIHNlcnZldXJzIGV0IGRlIHLpcGFydGlyIGxhIGNoYXJnZQplbnRyZSBldXgsIG1haXMgY2VsYSBwb3NlIHVuIHByb2Js6G1lIGxvcnNxdWUgbGUgYnV0IGVzdCB1bmlxdWVtZW50IGRlIHLpc2lzdGVyCuAgZGVzIHBpY3MgZGUgY2hhcmdlIG9jY2FzaW9ubmVscy4KClBvdXIgculzb3VkcmUgY2UgcHJvYmzobWUsIHVuZSBub3V2ZWxsZSBmb25jdGlvbm5hbGl06SBhIOl06SBpbXBs6W1lbnTpZSBkYW5zCkhBUHJveHkgMS4yLjEzLiBJbCBzJ2FnaXQgZCd1bmUgbGltaXRlICJtYXhjb25uIiBwYXIgc2VydmV1ciwgYXNzb2Np6WUg4CB1bmUKZmlsZSBkJ2F0dGVudGUgcGFyIHNlcnZldXIgZXQgcGFyIHByb3h5LiBDZWNpIHRyYW5zZm9ybWUgSEFQcm94eSBlbiB1biB0YW1wb24KZW50cmUgZGVzIG1pbGxpZXJzIGRlIGNsaWVudHMgZXQgcXVlbHF1ZXMgc2VydmV1cnMuIERhbnMgYmllbiBkZXMgY2FzLCBsZSBmYWl0CmRlIGRpbWludWVyIGxhIHZhbGV1ciBtYXhjb25uIGFt6Wxpb3JlcmEgbm90YWJsZW1lbnQgbGVzIHBlcmZvcm1hbmNlcyBkZXMKc2VydmV1cnMgZXQgZGltaW51ZXJhIGxlcyB0ZW1wcyBkZSBy6XBvbnNlIHNpbXBsZW1lbnQgcGFyY2UgcXVlIGxlcyBzZXJ2ZXVycwpzZXJvbnQgbW9pbnMgY29uZ2VzdGlvbm7pcy4KClF1YW5kIHVuZSByZXF16nRlIGNoZXJjaGUg4CBqb2luZHJlIG4naW1wb3J0ZSBxdWVsIHNlcnZldXIsIGxlIHByZW1pZXIgc2VydmV1cgpub24gc2F0dXLpIGVzdCB1dGlsaXPpLCBlbiByZXNwZWN0YW50IGwnYWxnb3JpdGhtZSBkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UuIFNpCnRvdXMgbGVzIHNlcnZldXJzIHNvbnQgc2F0dXLpcywgYWxvcnMgbGEgcmVxdep0ZSBzZXJhIG1pc2UgZGFucyBsYSBmaWxlCmQnYXR0ZW50ZSBnbG9iYWxlIGRlIGwnaW5zdGFuY2UuIEVsbGUgc29ydGlyYSBkZSBjZXR0ZSBmaWxlIGQnYXR0ZW50ZSBsb3JzcXVlCnRvdXRlcyBsZXMgcmVxdep0ZXMgcHLpY+lkZW50ZXMgYXVyb250IOl06SBsaWLpcullcyBldCBxdSd1biBzZXJ2ZXVyIGF1cmEg6XTpCmxpYuly6SBkJ3VuZSBjb25uZXhpb24gcG91ciBsYSB0cmFpdGVyLgoKU2kgdW5lIHJlcXXqdGUgZmFpdCBy6WbpcmVuY2Ug4CB1biBzZXJ2ZXVyIGVuIHBhcnRpY3VsaWVyIChwLmV4OiBoYWNoYWdlIGQnSVAKc291cmNlLCBvdSBwZXJzaXN0YW5jZSBwYXIgY29va2llKSwgZXQgcXVlIGNlIHNlcnZlciBlc3Qgc2F0dXLpLCBhbG9ycyBsYQpyZXF16nRlIHNlcmEgbWlzZSBkYW5zIGxhIGZpbGUgZCdhdHRlbnRlIGTpZGnpZSDgIGNlIHNlcnZldXIuIENldHRlIGZpbGUKZCdhdHRlbnRlIGVzdCBwcmlvcml0YWlyZSBzdXIgbGEgZmlsZSBkJ2F0dGVudGUgZ2xvYmFsZSwgZGUgc29ydGUgcXUnaWwgc29pdApwbHVzIGZhY2lsZSBkJ2F0dGVpbmRyZSBsZSBzaXRlIHBvdXIgbGVzIHV0aWxpc2F0ZXVycyBxdWkgcyd5IHRyb3V2ZW50IGTpauAKcXVlIHBvdXIgbGVzIG5vdXZlYXV4IHV0aWxpc2F0ZXVycy4KClBvdXIgY2VsYSwgbGVzIGxvZ3Mgb250IGT7IOp0cmUgZW5yaWNoaXMgcG91ciBpbmRpcXVlciBsZSBub21icmUgZGUgc2Vzc2lvbnMKcGFyIHNlcnZldXIsIGxhIHBvc2l0aW9uIGRlIGxhIHJlcXXqdGUgZGFucyBsZXMgZmlsZXMgZCdhdHRlbnRlcywgZXQgbGUgdGVtcHMKcGFzc+kgZW4gZmlsZSBkJ2F0dGVudGUuIENlY2kgYWlkZSBjb25zaWTpcmFibGVtZW50IOAgZmFpcmUgZGUgbGEgcHLpdmlzaW9uIGRlCmNhcGFjaXTpLiBWb2lyIGxhIHNlY3Rpb24gJ2xvZ3MnIHBsdXMgYmFzIHBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgUHJlbmRyZSBzb2luIGR1IFAzIHF1aSBuJ2EgcXVlIDI1NiBNbyBkZSBSQU0uCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAwMDAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgcGVudGl1bTMtODAwIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSB3ZWlnaHQgIDggbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiB3ZWlnaHQgMjAgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyB3ZWlnaHQgMjQgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cDEgMTkyLjE2OC4yLjE6ODAgY29va2llIHM0IGNoZWNrIG1heGNvbm4gMjAwIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKQ2V0dGUgb3B0aW9uIHNlIG1vbnRyYSBzaSBlZmZpY2FjZSBwb3VyIHLpZHVpcmUgbGVzIHRlbXBzIGRlIHLpcG9uc2UgZGVzCnNlcnZldXJzIHF1ZSBjZXJ0YWlucyB1dGlsaXNhdGV1cnMgdm91bGFpZW50IHV0aWxpc2VyIGRlcyB2YWxldXJzIHRyb3AgYmFzc2VzCnBvdXIgYW3pbGlvcmVyIGxlcyBwZXJmb3JtYW5jZXMgZGUgbGV1cnMgc2VydmV1cnMuIFNldWxlbWVudCwgaWxzIG4n6XRhaWVudAphbG9ycyBwbHVzIGVuIG1lc3VyZSBkZSBzdXBwb3J0ZXIgZGUgdHLocyBmb3J0ZXMgY2hhcmdlcyBwYXJjZSBxdSdpbCBuJ+l0YWl0CnBsdXMgcG9zc2libGUgZGUgbGVzIHNhdHVyZXIuIFBvdXIgY2V0dGUgcmFpc29uLCBsYSB2ZXJzaW9uIDEuMi4xNCBhIGFwcG9ydOkgbGEKbGltaXRhdGlvbiBkeW5hbWlxdWUgZGUgY29ubmV4aW9ucyBhdmVjIGwnYWRkaXRpb24gZHUgcGFyYW3odHJlICJtaW5jb25uIi4KTG9yc3F1ZSBjZSBwYXJhbeh0cmUgZXN0IGFzc29jaekg4CAibWF4Y29ubiIsIGlsIGFjdGl2ZSBsYSBsaW1pdGF0aW9uIGR5bmFtaXF1ZQpiYXPpZSBzdXIgbGEgY2hhcmdlIGRlIGwnaW5zdGFuY2UuIExlIG5vbWJyZSBtYXhpbWFsIGRlIHNlc3Npb25zIGNvbmN1cnJlbnRlcwpzdXIgdW4gc2VydmV1ciBkZXZpZW50IGFsb3JzIHByb3BvcnRpb25uZWwgYXUgbm9tYnJlIGRlIHNlc3Npb25zIGRlIGwnaW5zdGFuY2UKcGFyIHJhcHBvcnQg4CBzb24gJ21heGNvbm4nLiBVbiBtaW5pbXVtIGRlIDxtaW5jb25uPiBzZXNzaW9ucyBzZXJhIHRvdWpvdXJzCnBlcm1pcyBxdWVsbGUgcXVlIHNvaXQgbGEgY2hhcmdlLiBDZWNpIGFzc3VyZXJhIHF1ZSBsZXMgc2VydmV1cnMgdHJhdmFpbGxlcm9udAphdSBtZWlsbGV1ciBkZSBsZXVycyBwZXJmb3JtYW5jZXMgc291cyBkZXMgY2hhcmdlcyBub3JtYWxlcywgZXQgcXUnaWxzIHNlcm9udAp0b3V0IGRlIG3qbWUgY2FwYWJsZXMgZGUgc3VwcG9ydGVyIGRlIGZvcnRlcyBwb2ludGVzIGxvcnNxdWUgbuljZXNzYWlyZS4gTGEKbGltaXRlIGR5bmFtaXF1ZSBlc3QgY2FsY3Vs6WUgY29tbWUgY2VjaSA6CgogICAgc3J2LmR5bl9saW1pdCA9IG1heChzcnYubWluY29ubiwgc3J2Lm1heGNvbm4gKiBpbnN0LnNlc3MgLyBpbnN0Lm1heGNvbm4pCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIFByZW5kcmUgc29pbiBkdSBQMyBxdWkgbidhIHF1ZSAyNTYgTW8gZGUgUkFNLgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwMDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHBlbnRpdW0zLTgwMCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgd2VpZ2h0ICA4IG1pbmNvbm4gMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiB3ZWlnaHQgMjAgbWluY29ubiAzMCBtYXhjb25uIDMwMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuNEcgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIHdlaWdodCAyNCBtaW5jb25uIDMwIG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzNCBjaGVjayBtYXhjb25uIDIwMCBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCkRhbnMgbCdleGVtcGxlIGNpLWRlc3N1cywgbGUgc2VydmV1ciAicGVudGl1bTMtODAwJyByZWNldnJhIGF1IHBsdXMgMTAwCmNvbm5leGlvbnMgc2ltdWx0YW7pZXMgbG9yc3F1ZSBsJ2luc3RhbmNlIGR1IHByb3h5IGVuIGF0dGVpbmRyYSAxMDAwMCwgZXQKcmVjZXZyYSBzZXVsZW1lbnQgMTAgY29ubmV4aW9ucyBzaW11bHRhbullcyB0YW50IHF1ZSBsZSBwcm94eSBzZXJhIHNvdXMgbGVzIDEwMDAKc2Vzc2lvbnMuCgpJbCBlc3QgcG9zc2libGUgZGUgbGltaXRlciBsYSB0YWlsbGUgZGUgbGEgZmlsZSBkJ2F0dGVudGUgZGFucyBsZSBidXQgZGUKcmVkaXN0cmlidWVyIGxlcyBjb25uZXhpb25zIGRlc3RpbullcyDgIHVuIHNlcnZldXIgZW4gcGFydGljdWxpZXIgcXVpIHNvbnQgdHJvcApsb2luIHBvdXIgYXZvaXIgdW5lIGNoYW5jZSBkJ+p0cmUgc2VydmllcyBlbiB1biB0ZW1wcyByYWlzb25uYWJsZS4gQ2VjaSBuJ2VzdAphY2NlcHRhYmxlIHF1ZSBkYW5zIGxlIGNhcyBv+SBsJ2FmZmluaXTpIGVudHJlIGxlIGNsaWVudCBldCBsZSBzZXJ2ZXVyIG4nZXN0CnBhcyBvYmxpZ2F0b2lyZSwgbWFpcyBtb3RpdullIHVuaXF1ZW1lbnQgcGFyIGRlcyByYWlzb25zIGRlIHBlcmZvcm1hbmNlcywgcGFyCmV4ZW1wbGUsIHBhciBsJ3V0aWxpc2F0aW9uIGQndW4gY2FjaGUgbG9jYWwgYXUgc2VydmV1ci4gTCdvcHRpb24gJ21heHF1ZXVlJwpwZXJtZXQgZGUgcHLpY2lzZXIgbGEgbGltaXRlIHBhciBzZXJ2ZXVyLCB0ZWwgcXVlIGRhbnMgbCdleGVtcGxlIGNpLWRlc3NvdXMgOgoKLi4uICht6m1lIGV4ZW1wbGUgcXVlIHBy6WPpZGVtbWVudCkKICAgICAgICBzZXJ2ZXIgcGVudGl1bTMtODAwIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSB3ZWlnaHQgIDggbWluY29ubiAxMCBtYXhjb25uIDEwMCBjaGVjayBtYXhxdWV1ZSA1MAogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuMEcgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIHdlaWdodCAyMCBtaW5jb25uIDMwIG1heGNvbm4gMzAwIGNoZWNrIG1heHF1ZXVlIDIwMAogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuNEcgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIHdlaWdodCAyNCBtaW5jb25uIDMwIG1heGNvbm4gMzAwIGNoZWNrCgpFbiBsJ2Fic2VuY2UgZHUgcGFyYW3odHJlICdtYXhxdWV1ZScsIGxhIGZpbGUgZCd1biBzZXJ2ZXVyIG4nYSBwYXMgZGUgbGltaXRlCmTpZmluaWUuIERhbnMgbGUgY2FzIGNvbnRyYWlyZSwgbG9yc3F1ZSBsYSBmaWxlIGF0dGVpbnQgbGEgbGltaXRlIGZpeOllIHBhcgonbWF4cXVldWUnLCBsZXMgY2xpZW50cyBzb250IGTpcGxhY+lzIHZlcnMgbGEgZmlsZSBnbG9iYWxlLgoKTm90ZXMgOgotLS0tLS0tCiAgLSBsYSByZXF16nRlIG5lIHJlc3RlcmEgcGFzIGluZOlmaW5pbWVudCBlbiBmaWxlIGQnYXR0ZW50ZSwgZWxsZSBlc3QKICAgIGFzc3Vq6XRpZSBhdSBwYXJhbeh0cmUgJ2NvbnRpbWVvdXQnLCBldCBzaSB1bmUgcmVxdep0ZSBuZSBwZXV0IHBhcwogICAgc29ydGlyIGRlIGxhIGZpbGUgYXZhbnQgY2UgdGltZS1vdXQsIHNvaXQgcGFyY2UgcXVlIGxlIHNlcnZldXIgZXN0CiAgICBzYXR1cuksIHNvaXQgcGFyY2UgcXUnaWwgeSBhIHRyb3AgZGUgcmVxdep0ZXMgZW4gZmlsZSBkJ2F0dGVudGUsCiAgICBhbG9ycyBlbGxlIGV4cGlyZXJhIGF2ZWMgdW5lIGVycmV1ciA1MDMuCgogIC0gc2kgc2V1bCA8bWluY29ubj4gZXN0IHNw6WNpZmnpLCBpbCBhIGxlIG3qbWUgZWZmZXQgcXVlIDxtYXhjb25uPgoKICAtIHBvc2l0aW9ubmVyIGRlcyB2YWxldXJzIHRyb3AgYmFzc2VzIHBvdXIgJ21heGNvbm4nIHBldXQgYW3pbGlvcmVyIGxlcwogICAgcGVyZm9ybWFuY2VzIG1haXMgYXVzc2kgcGVybWV0dHJlIOAgZGVzIHV0aWxpc2F0ZXVycyB0cm9wIGxlbnRzIGRlIGJsb3F1ZXIKICAgIHVuIHNlcnZldXIgcG91ciBsZXMgYXV0cmVzIHV0aWxpc2F0ZXVycy4KCgozLjUpIEFiYW5kb24gZGVzIHJlcXXqdGVzIGFib3J06WVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gcHLpc2VuY2UgZGUgdHLocyBmb3J0ZXMgY2hhcmdlcywgbGVzIHNlcnZldXJzIG1ldHRyb250IHVuIGNlcnRhaW4gdGVtcHMg4Apy6XBvbmRyZS4gTGEgZmlsZSBkJ2F0dGVudGUgZHUgcHJveHkgc2UgcmVtcGxpcmEsIGV0IGxlcyB0ZW1wcyBkZSBy6XBvbnNlCnN1aXZyb250IHVuZSBjcm9pc3NhbmNlIHByb3BvcnRpb25uZWxsZSDgIGxhIHRhaWxsZSBkZSBmaWxlIGQnYXR0ZW50ZSBmb2lzCmxlIHRlbXBzIG1veWVuIGRlIHLpcG9uc2UgcGFyIHNlc3Npb24uIExvcnNxdWUgbGVzIGNsaWVudHMgYXR0ZW5kcm9udCBwbHVzIGRlCnF1ZWxxdWVzIHNlY29uZGVzLCBpbHMgY2xpcXVlcm9udCBzb3V2ZW50IHN1ciBsZSBib3V0b24gJ1NUT1AnIGRlIGxldXIKbmF2aWdhdGV1ciwgbGFpc3NhbnQgZGVzIHJlcXXqdGVzIGludXRpbGVzIGVuIGZpbGUgZCdhdHRlbnRlIGV0IHJhbGVudGlzc2FudApkb25jIGxlcyBhdXRyZXMgdXRpbGlzYXRldXJzLgoKQ29tbWUgaWwgbid5IGEgYXVjdW4gbW95ZW4gZGUgZGlzdGluZ3VlciB1biB2cmFpIGNsaWMgc3VyIFNUT1AgZCd1bmUgc2ltcGxlCmZlcm1ldHVyZSBkdSBjYW5hbCBkZSBzb3J0aWUgc3VyIGxlIGNsaWVudCAoc2h1dGRvd24oU0hVVF9XUikpLCBsZXMgYWdlbnRzIEhUVFAKZG9pdmVudCDqdHJlIGNvbnNlcnZhdGV1cnMgZXQgY29uc2lk6XJlciBxdWUgbGUgY2xpZW50IG4nYSBwcm9iYWJsZW1lbnQgZmVybekKcXVlIGxlIGNhbmFsIGRlIHNvcnRpZSBlbiBhdHRlbmRhbnQgbGEgculwb25zZS4gVG91dGVmb2lzLCBjZWNpIGludHJvZHVpdCBkZXMKcmlzcXVlcyBkZSBjb25nZXN0aW9uIGxvcnNxdWUgYmVhdWNvdXAgZCd1dGlsaXNhdGV1cnMgZm9udCBkZSBt6m1lLCBldCBzJ2F26HJlCmF1am91cmQnaHVpIGNvbXBs6HRlbWVudCBpbnV0aWxlIGNhciBwcm9iYWJsZW1lbnQgYXVjdW4gY2xpZW50IG5lIHJlZmVybWUgbGEKc2Vzc2lvbiBlbiBhdHRlbmRhbnQgbGEgculwb25zZS4gQ2VydGFpbnMgYWdlbnRzIEhUVFAgc3VwcG9ydGVudCBjZWNpIChTcXVpZCwKQXBhY2hlLCBIQVByb3h5KSwgZXQgZCdhdXRyZXMgbmUgbGUgc3VwcG9ydGVudCBwYXMgKFRVWCwgZXQgbGEgcGx1cGFydCBkZXMKculwYXJ0aXRldXJzIGRlIGNoYXJnZSBtYXTpcmllbHMpLiBEb25jIGxhIHByb2JhYmlsaXTpIHBvdXIgcXUndW5lIG5vdGlmaWNhdGlvbgpkZSBmZXJtZXR1cmUgZCd1biBjYW5hbCBkJ2VudHLpZSBj9HTpIGNsaWVudCByZXBy6XNlbnRlIHVuIHV0aWxpc2F0ZXVyIGNsaXF1YW50CnN1ciAnU1RPUCcgZXN0IHByb2NoZSBkZSAxMDAlLCBldCBpbCBlc3QgdnJhaW1lbnQgdGVudGFudCBkJ2FiYW5kb25uZXIgbGEKcmVxdep0ZSBwcultYXR1cultZW50IHNhbnMgcG9sbHVlciBsZXMgc2VydmV1cnMuCgpQb3VyIGNldHRlIHJhaXNvbiwgdW5lIG5vdXZlbGxlIG9wdGlvbiAiYWJvcnRvbmNsb3NlIiBhIOl06SBpbnRyb2R1aXRlIGVuCnZlcnNpb24gMS4yLjE0LiBQYXIgZOlmYXV0IChzYW5zIGwnb3B0aW9uKSwgbGUgY29tcG9ydGVtZW50IHJlc3RlIGNvbmZvcm1lIOAKSFRUUC4gTWFpcyBsb3JzcXVlIGwnb3B0aW9uIGVzdCBzcOljaWZp6WUsIHVuZSBzZXNzaW9uIGRvbnQgbGUgY2FuYWwgZW50cmFudAplc3QgZmVybekgc2VyYSBhYm9ydOllIHNpIGNlbGEgZXN0IHBvc3NpYmxlLCBjJ2VzdCDgIGRpcmUgcXVlIGxhIHJlcXXqdGUgZXN0CnNvaXQgZW4gZmlsZSBkJ2F0dGVudGUsIHNvaXQgZW4gdGVudGF0aXZlIGRlIGNvbm5leGlvbi4gQ2VjaSBy6WR1aXQKY29uc2lk6XJhYmxlbWVudCBsYSBsb25ndWV1ciBkZXMgZmlsZXMgZCdhdHRlbnRlcyBldCBsYSBjaGFyZ2Ugc3VyIGxlcyBzZXJ2ZXVycwpzYXR1culzIGxvcnNxdWUgbGVzIHV0aWxpc2F0ZXVycyBzb250IHRlbnTpcyBkZSBjbGlxdWVyIHN1ciAnU1RPUCcsIGNlIHF1aSDgCnNvbiB0b3VyLCBy6WR1aXQgbGVzIHRlbXBzIGRlIHLpcG9uc2UgcG91ciBsZXMgYXV0cmVzIHV0aWxpc2F0ZXVycy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiB3ZWJfYXBwbCAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMDAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSB3ZWlnaHQgMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgd2VpZ2h0IDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjMgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIHdlaWdodCAxMCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciBiY2sxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzNCBjaGVjayBtYXhjb25uIDIwMCBiYWNrdXAKICAgICAgICBvcHRpb24gYWJvcnRvbmNsb3NlCgoKNCkgRm9uY3Rpb25uYWxpdOlzIGFkZGl0aW9ubmVsbGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKRCdhdXRyZXMgZm9uY3Rpb25uYWxpdOlzIGQndXNhZ2UgbW9pbnMgY291cmFudCBzb250IGRpc3BvbmlibGVzLiBJbCBzJ2FnaXQKcHJpbmNpcGFsZW1lbnQgZHUgbW9kZSB0cmFuc3BhcmVudCwgZGUgbGEgam91cm5hbGlzYXRpb24gZGVzIGNvbm5leGlvbnMsIGRlIGxhCnLp6WNyaXR1cmUgZGVzIGVuLXTqdGVzLCBldCBkdSBzdGF0dXQgc291cyBmb3JtZSBkZSBwYWdlIEhUTUwuCgoKNC4xKSBGb25jdGlvbm5hbGl06XMgculzZWF1Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo0LjEuMSkgRm9uY3Rpb25uZW1lbnQgZW4gbW9kZSB0cmFuc3BhcmVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBsZSBtb3QgY2zpICd0cmFuc3BhcmVudCcgcGVybWV0IGQnaW50ZXJjZXB0ZXIgZGVzIHNlc3Npb25zCnJvdXTpZXMg4CB0cmF2ZXJzIGxhIG1hY2hpbmUgaOliZXJnZWFudCBsZSBwcm94eS4gRGFucyBjZSBtb2RlLCBvbiBuZSBwculjaXNlCnBhcyBsJ2FkcmVzc2UgZGUgculwYXJ0aXRpb24gJ2Rpc3BhdGNoJywgY2FyIGNlbGxlLWNpIGVzdCB0aXLpZSBkZSBsJ2FkcmVzc2UKZGVzdGluYXRpb24gZGUgbGEgc2Vzc2lvbiBk6XRvdXJu6WUuIExlIHN5c3TobWUgZG9pdCBwZXJtZXR0cmUgZGUgcmVkaXJpZ2VyIGxlcwpwYXF1ZXRzIHZlcnMgdW4gcHJvY2Vzc3VzIGxvY2FsLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIHRyYW5zcGFyZW50CiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwCiAgICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwCgogICAgIyBpcHRhYmxlcyAtdCBuYXQgLUEgUFJFUk9VVElORyAtaSBldGgwIC1wIHRjcCAtZCAxOTIuMTY4LjEuMTAwIFwKICAgICAgLS1kcG9ydCA4MCAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KU2kgbGUgcG9ydCBuJ2VzdCBwYXMgc3DpY2lmaekgc3VyIGxlIHNlcnZldXIsIGMnZXN0IGxlIHBvcnQgYXVxdWVsIHMnZXN0CmFkcmVzc+kgbGUgY2xpZW50IHF1aSBzZXJhIHV0aWxpc+kuIENlbGEgcGVybWV0IGRlIHJlbGF5ZXIgdG91cyBsZXMgcG9ydHMgVENQCmQndW5lIG3qbWUgYWRyZXNzZSBhdmVjIHVuZSBt6m1lIGluc3RhbmNlIGV0IHNhbnMgdXRpbGlzZXIgZGlyZWN0ZW1lbnQgbGUgbW9kZQp0cmFuc3BhcmVudC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgICBtb2RlIHRjcAogICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMSBjaGVjayBwb3J0IDYwMDAwCiAgICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yIGNoZWNrIHBvcnQgNjAwMDAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDY1MDAwCgoKNC4xLjIpIENob2l4IGQndW5lIGFkcmVzc2Ugc291cmNlIHBhciBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdmVjIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMsIGlsIGRldmllbnQgcG9zc2libGUgZGUgc3DpY2lmaWVyIHVuZSBhZHJlc3NlCklQIHNvdXJjZSBwb3VyIGpvaW5kcmUgY2hhcXVlIHNlcnZldXIuIEMnZXN0IHV0aWxlIHBvdXIgam9pbmRyZSBkZXMgc2VydmV1cnMgZGUKYmFja3VwIOAgcGFydGlyIGQndW4gTEFOIGRpZmbpcmVudCwgb3UgcG91ciB1dGlsaXNlciBkZXMgY2hlbWlucyBhbHRlcm5hdGlmcwpwb3VyIGpvaW5kcmUgbGUgbeptZSBzZXJ2ZXVyLiBDJ2VzdCDpZ2FsZW1lbnQgdXRpbGlzYWJsZSBwb3VyIGZhY2lsaXRlciB1bmUKculwYXJ0aXRpb24gZGUgY2hhcmdlIHNlbG9uIGwnYWRyZXNzZSBJUCBzb3VyY2UgcG91ciBkZXMgY29ubmV4aW9ucyBzb3J0YW50ZXMuCkJpZW4gZW50ZW5kdSwgbGEgbeptZSBhZHJlc3NlIGVzdCB1dGlsaXPpZSBwb3VyIGxlcyBoZWFsdGgtY2hlY2tzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyB1dGlsaXNlciB1bmUgYWRyZXNzZSBwYXJ0aWN1bGnocmUgcG91ciBqb2luZHJlIGxlcyAyIHNlcnZldXIKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAgc291cmNlIDE5Mi4xNjguMi4xMwogICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMS4yOjgwIHNvdXJjZSAxOTIuMTY4LjIuMTMKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgdXRpbGlzZXIgdW5lIGFkcmVzc2UgcGFydGljdWxp6HJlIHBvdXIgam9pbmRyZSBjaGFxdWUgc2VydmV1cgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4xLjEKICAgICAgIHNlcnZlciBzZXJ2ZXIwMiAxOTIuMTY4LjIuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjEKCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgZmFpcmUgdW5lIHLpcGFydGl0aW9uIGQnYWRyZXNzZSBzb3VyY2VzIHBvdXIgam9pbmRyZSBsZSBt6m1lIHByb3h5IOAKICAgICMgdHJhdmVycyBkZXV4IGxpZW5zIFdBTiAKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6NjUwMDAKICAgICAgIG1vZGUgaHR0cAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgcmVtb3RlLXByb3h5LXdheTEgMTkyLjE2OC4xLjE6MzEyOCBzb3VyY2UgMTkyLjE2OC4yLjEKICAgICAgIHNlcnZlciByZW1vdGUtcHJveHktd2F5MiAxOTIuMTY4LjEuMTozMTI4IHNvdXJjZSAxOTIuMTY4LjMuMQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBmb3JjZXIgdW5lIGNvbm5leGlvbiBUQ1Ag4CBzJ2F0dGFjaGVyIOAgdW4gcG9ydCBwYXJ0aWN1bGllcgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDoyMDAwCiAgICAgICBtb2RlIHRjcAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjE6MjAKICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIHNvdXJjZSAxOTIuMTY4LjIuMToyMAoKNC4xLjMpIE1haW50aWVuIGRlIHNlc3Npb24gVENQIChrZWVwLWFsaXZlKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGEgdmVyc2lvbiAxLjIuNywgaWwgZGV2aWVudCBwb3NzaWJsZSBkJ2FjdGl2ZXIgbGUgbWFpbnRpZW4gZGUgc2Vzc2lvbgpUQ1AgKFRDUCBrZWVwLWFsaXZlKSDgIGxhIGZvaXMgY/R06SBjbGllbnQgZXQgY/R06SBzZXJ2ZXVyLiBDZWxhIHBlcm1ldApkJ2VtcOpjaGVyIGRlcyBzZXNzaW9ucyBsb25ndWVzIGQnZXhwaXJlciBzdXIgZGVzIOlxdWlwZW1lbnRzIGRlIG5pdmVhdSA0CmV4dGVybmVzIHRlbHMgcXVlIGRlcyBmaXJld2FsbHMgb3UgZGVzIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2UuIENlbGEgcGVybWV0CmF1c3NpIGF1IHN5c3TobWUgZGUgZOl0ZWN0ZXIgZXQgdGVybWluZXIgZGVzIHNlc3Npb25zIGZpZ+llcyBsb3JzcXUnYXVjdW4KdGltZS1vdXQgbidhIOl06SBwb3NpdGlvbm7pIChmb3J0ZW1lbnQgZOljb25zZWlsbOkpLiBMZSBwcm94eSBuZSBwZXV0IHBhcwpwb3NpdGlvbm5lciBsJ2ludGVydmFsbGUgZW50cmUgbGVzIGFubm9uY2VzIG5pIGxlIG5vbWJyZSBtYXhpbWFsLCB2ZXVpbGxlegp2b3VzIHLpZulyZXIgYXUgbWFudWVsIGR1IHN5c3TobWUgZCdleHBsb2l0YXRpb24gcG91ciBjZWxhLiBJbCBleGlzdGUgMyBvcHRpb25zCnBvdXIgYWN0aXZlciBsZSBtYWludGllbiBkZSBzZXNzaW9uIFRDUCA6CgoJb3B0aW9uIHRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBjbGllbnQgZXQgY/R06SBzZXJ2ZXVyCglvcHRpb24gY2xpdGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIGNsaWVudAoJb3B0aW9uIHNydnRjcGthCSMgYWN0aXZlIGxlIGtlZXAtYWxpdmUgY/R06SBzZXJ2ZXVyCgo0LjEuNCkgUultYW5lbmNlIGRlcyBkb25u6WVzIFRDUCAobGluZ2VyaW5nKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgZOlzYWN0aXZlciBsYSBjb25zZXJ2YXRpb24gZGUgZG9ubullcyBub24gYWNxdWl0dOllcyBwYXIgdW4KY2xpZW50IOAgbGEgZmluIGQndW5lIHNlc3Npb24uIENlbGEgcGV1dCBwYXJmb2lzIHMnYXbpcmVyIG7pY2Vzc2FpcmUgbG9yc3F1ZQpoYXByb3h5IGVzdCB1dGlsaXPpIGVuIGZhY2UgZCd1biBncmFuZCBub21icmUgZGUgY2xpZW50cyBub24gZmlhYmxlcyBldCBxdSd1bgpub21icmUg6WxldukgZGUgc29ja2V0cyBlbiDpdGF0IEZJTl9XQUlUIGVzdCBvYnNlcnbpIHN1ciBsYSBtYWNoaW5lLiBMJ29wdGlvbgpwZXV0IOp0cmUgdXRpbGlz6WUgZGFucyB1biBmcm9udGVuZCBwb3VyIGFqdXN0ZXIgbGVzIGNvbm5leGlvbnMgdmVycyBsZXMKY2xpZW50cywgZXQgZGFucyB1biBiYWNrZW5kIHBvdXIgYWp1c3RlciBsZXMgY29ubmV4aW9ucyB2ZXJzIGxlcyBzZXJ2ZXVycyA6CgoJb3B0aW9uIG5vbGluZ2VyCSMgZOlzYWN0aXZlIGxhIGNvbnNlcnZhdGlvbiBkZSBkb25u6WVzCgoKNC4yKSBKb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpMJ3VuIGRlcyBwb2ludHMgZm9ydHMgZGUgSEFQcm94eSBlc3QgaW5k6W5pYWJsZW1lbnQgbGEgcHLpY2lzaW9uIGRlIHNlcyBsb2dzLgpJbCBmb3Vybml0IHByb2JhYmxlbWVudCBsZSBwbHVzIGZpbiBuaXZlYXUgZCdpbmZvcm1hdGlvbiBkaXNwb25pYmxlIHBvdXIgdW4KdGVsIG91dGlsLCBjZSBxdWkgZXN0IHRy6HMgaW1wb3J0YW50IHBvdXIgbGVzIGRpYWdub3N0aWNzIGVuIGVudmlyb25uZW1lbnRzCmNvbXBsZXhlcy4gRW4gc3RhbmRhcmQsIGxlcyBpbmZvcm1hdGlvbnMgam91cm5hbGlz6WVzIGluY2x1ZW50IGxlIHBvcnQgY2xpZW50LApsZXMgY2hyb25vbel0cmFnZXMgZGVzIOl0YXRzIFRDUC9IVFRQLCBkZXMg6XRhdHMgZGUgc2Vzc2lvbiBwculjaXMgYXUgbW9tZW50IGRlCmxhIHRlcm1pbmFpc29uIGV0IHNhIGNhdXNlLCBkZXMgaW5mb3JtYXRpb25zIHN1ciBsZXMgZOljaXNpb25zIGQnYWlndWlsbGFnZSBkdQp0cmFmaWMgdmVycyB1biBzZXJ2ZXVyLCBldCBiaWVuIHP7ciBsYSBwb3NzaWJpbGl06SBkZSBjYXB0dXJlciBkZXMgZW4tdOp0ZXMKYXJiaXRyYWlyZXMuCgpEYW5zIGxlIGJ1dCBkJ2Ft6Wxpb3JlciBsYSBy6WFjdGl2aXTpIGRlcyBhZG1pbmlzdHJhdGV1cnMsIGlsIG9mZnJlIHVuZSBncmFuZGUKdHJhbnNwYXJlbmNlIHN1ciBsZXMgcHJvYmzobWVzIHJlbmNvbnRy6XMsIOAgbGEgZm9pcyBpbnRlcm5lcyBldCBleHRlcm5lcywgZXQKaWwgZXN0IHBvc3NpYmxlIGQnZW52b3llciBsZXMgbG9ncyB2ZXJzIGRlcyBzZXJ2ZXVycyBkaWZm6XJlbnRzIGVuIG3qbWUgdGVtcHMKYXZlYyBkZXMgbml2ZWF1eCBkZSBmaWx0cmFnZSBkaWZm6XJlbnRzIDoKCiAgLSBsb2dzIGdsb2JhdXggYXUgbml2ZWF1IHByb2Nlc3N1cyAoZXJyZXVycyBzeXN06G1lLCBhcnLqdHMvZOltYXJyYWdlcywgLi4uKQogIC0gZXJyZXVycyBzeXN06G1lIGV0IGludGVybmVzIHBhciBpbnN0YW5jZSAobWFucXVlIGRlIHJlc3NvdXJjZXMsIGJ1Z3MsIC4uLikKICAtIHByb2Js6G1lcyBleHRlcm5lcyBwYXIgaW5zdGFuY2UgKGFycup0cy9yZWxhbmNlIHNlcnZldXJzLCBsaW1pdGVzLCAuLi4pCiAgLSBhY3Rpdml06SBwYXIgaW5zdGFuY2UgKGNvbm5leGlvbnMgY2xpZW50cyksIGF1c3NpIGJpZW4gbG9ycyBkZSBsZXVyCiAgICDpdGFibGlzc2VtZW50IHF1J+AgbGV1ciB0ZXJtaW5haXNvbi4KCkxhIHBvc3NpYmlsaXTpIGRlIGRpc3RyaWJ1ZXIgZGlmZulyZW50cyBuaXZlYXV4IGRlIGxvZ3Mg4CBkaWZm6XJlbnRzIHNlcnZldXJzCnBlcm1ldCDgIHBsdXNpZXVycyDpcXVpcGVzIGRlIHByb2R1Y3Rpb24gZCdpbnTpcmFnaXIgZXQgZGUgY29ycmlnZXIgbGV1cnMKcHJvYmzobWVzIGxlIHBsdXMgdPR0IHBvc3NpYmxlLiBQYXIgZXhlbXBsZSwgbCfpcXVpcGUgc3lzdOhtZSBwZXV0IHN1cnZlaWxsZXIKb2NjYXNpb25uZWxsZW1lbnQgbGVzIGVycmV1cnMgc3lzdOhtZSwgcGVuZGFudCBxdWUgbCfpcXVpcGUgYXBwbGljYXRpb24Kc3VydmVpbGxlIGxlcyBhbGVydGVzIGQnYXJy6nRzL2TpbWFycmFnZXMgZGUgc2VzIHNlcnZldXJzIGVuIHRlbXBzIHLpZWwsIGV0CnF1ZSBsJ+lxdWlwZSBz6WN1cml06SBhbmFseXNlIGwnYWN0aXZpdOkgZW4gZGlmZuly6SBkJ3VuZSBoZXVyZS4KCgo0LjIuMSkgTml2ZWF1eCBkZSBsb2cKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBjb25uZXhpb25zIFRDUCBldCBIVFRQIHBldXZlbnQgZG9ubmVyIGxpZXUg4CB1bmUgam91cm5hbGlzYXRpb24gc29tbWFpcmUgb3UKZOl0YWlsbOllIGluZGlxdWFudCwgcG91ciBjaGFxdWUgY29ubmV4aW9uLCBsYSBkYXRlLCBsJ2hldXJlLCBsJ2FkcmVzc2UgSVAKc291cmNlLCBsZSBzZXJ2ZXVyIGRlc3RpbmF0aW9uLCBsYSBkdXLpZSBkZSBsYSBjb25uZXhpb24sIGxlcyB0ZW1wcyBkZSBy6XBvbnNlLApsYSByZXF16nRlIEhUVFAsIGxlIGNvZGUgZGUgcmV0b3VyLCBsYSBxdWFudGl06SBkZSBkb25u6WVzIHRyYW5zbWlzZXMsIGV0IG3qbWUKZGFucyBjZXJ0YWlucyBjYXMsIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBwZXJtZXR0YW50IGRlIHN1aXZyZSBsZXMgc2Vzc2lvbnMuClRvdXMgbGVzIG1lc3NhZ2VzIHNvbnQgZW52b3npcyBlbiBzeXNsb2cgdmVycyB1biBvdSBkZXV4IHNlcnZldXJzLiBTZSBy6WbpcmVyIOAKbGEgc2VjdGlvbiAxLjEgcG91ciBwbHVzIGQnaW5mb3JtYXRpb24gc3VyIGxlcyBjYXTpZ29yaWVzIGRlIGxvZ3MuICBMYSBzeW50YXhlCmVzdCBsYSBzdWl2YW50ZSA6CgogICAgbG9nIDxhZHJlc3NlX2lwXzE+IDxjYXTpZ29yaWVfMT4gW25pdmVhdV9tYXhfMV0KICAgIGxvZyA8YWRyZXNzZV9pcF8yPiA8Y2F06WdvcmllXzI+IFtuaXZlYXVfbWF4XzJdCm91CiAgICBsb2cgZ2xvYmFsCgpSZW1hcnF1ZSA6Ci0tLS0tLS0tLS0KTGEgc3ludGF4ZSBzcOljaWZpcXVlICdsb2cgZ2xvYmFsJyBpbmRpcXVlIHF1ZSBsJ29uIHNvdWhhaXRlIHV0aWxpc2VyIGxlcwpwYXJhbeh0cmVzIGRlIGpvdXJuYWxpc2F0aW9uIGTpZmluaXMgZGFucyBsYSBzZWN0aW9uICdnbG9iYWwnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAxIGxvY2FsNAoKNC4yLjIpIEZvcm1hdCBkZXMgbG9ncwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBhciBk6WZhdXQsIGxlcyBjb25uZXhpb25zIHNvbnQgam91cm5hbGlz6WVzIGF1IG5pdmVhdSBUQ1AgZOhzIGwn6XRhYmxpc3NlbWVudApkZSBsYSBzZXNzaW9uIGVudHJlIGxlIGNsaWVudCBldCBsZSByZWxhaXMuIEVuIHBy6WNpc2FudCBsJ29wdGlvbiAndGNwbG9nJywKbGEgY29ubmV4aW9uIG5lIHNlcmEgam91cm5hbGlz6WUgcXUnZW4gZmluIGRlIHNlc3Npb24sIGFqb3V0YW50IGRlcyBwculjaXNpb25zCnN1ciBzb24g6XRhdCBsb3JzIGRlIGxhIGTpY29ubmV4aW9uLCBhaW5zaSBxdWUgbGUgdGVtcHMgZGUgY29ubmV4aW9uIGV0IGxhCmR1cullIHRvdGFsZSBkZSBsYSBzZXNzaW9uLiBMZSBub21icmUgZGUgc2Vzc2lvbnMgcmVzdGFudGVzIGFwcuhzIGxhCmTpY29ubmV4aW9uIGVzdCDpZ2FsZW1lbnQgaW5kaXF16SAocG91ciBsZSBzZXJ2ZXVyLCBsJ2luc3RhbmNlIGV0IGxlIHByb2Nlc3MpLgoKRXhlbXBsZSBkZSBqb3VybmFsaXNhdGlvbiBUQ1AgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBsaXN0ZW4gcmVsYWlzLXRjcCAwLjAuMC4wOjgwMDAKICAgICAgICBtb2RlIHRjcAogICAgICAgIG9wdGlvbiB0Y3Bsb2cKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvMC81MDA3IDAgLS0gMS8xLzEgMC8wCiAgCiAgICBDaGFtcCAgRm9ybWF0IC8gRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZW1wbGUKCiAgICAgICAgMSAgbm9tX3Byb2Nlc3N1cyAnWycgcGlkICddOicgICAgICAgICAgICAgICAgICAgIGhhcHJveHlbMTg5ODldOgogICAgICAgIDIgIGlwX2NsaWVudCAnOicgcG9ydF9jbGllbnQgICAgICAgICAgICAgICAgICAgICAxMjcuMC4wLjE6MzQ1NTAKICAgICAgICAzICAnWycgZGF0ZSAnXScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1L09jdC8yMDAzOjE1OjI0OjI4XQogICAgICAgIDQgIG5vbV9pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhaXMtdGNwCiAgICAgICAgNSAgbm9tX3NlcnZldXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNydjEKICAgICAgICA2ICB0ZW1wc19maWxlICcvJyB0ZW1wc19jb25uZWN0ICcvJyB0ZW1wc190b3RhbCAgMC8wLzUwMDcKICAgICAgICA3ICBvY3RldHMgbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAogICAgICAgIDggIGV0YXRfdGVybWluYWlzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogICAgICAgIDkgIGNvbm5fc3J2ICcvJyBjb25uc19pbnN0ICcvJyBjb25uc19wcm9jZXNzdXMgICAxLzEvMQogICAgICAgMTAgIHBvc2l0aW9uIGVuIGZpbGUgZCdhdHRlbnRlIHNydiAnLycgZ2xvYmFsZSAgICAwLzAKClVuZSBhdXRyZSBvcHRpb24sICdodHRwbG9nJywgZm91cm5pdCBwbHVzIGRlIGTpdGFpbHMgc3VyIGxlIHByb3RvY29sZSBIVFRQLApub3RhbW1lbnQgbGEgcmVxdep0ZSBldCBsJ+l0YXQgZGVzIGNvb2tpZXMuIERhbnMgbGVzIGNhcyBv+SB1biBt6WNhbmlzbWUgZGUKc3VydmVpbGxhbmNlIGVmZmVjdHVhbnQgZGVzIGNvbm5leGlvbnMgZXQgZOljb25uZXhpb25zIGZy6XF1ZW50ZXMsIHBvbGx1ZXJhaXQKbGVzIGxvZ3MsIGlsIHN1ZmZpdCBkJ2Fqb3V0ZXIgbCdvcHRpb24gJ2RvbnRsb2dudWxsJywgcG91ciBuZSBwbHVzIG9idGVuaXIgdW5lCmxpZ25lIGRlIGxvZyBwb3VyIGxlcyBzZXNzaW9ucyBuJ2F5YW50IHBhcyBkb25u6SBsaWV1IOAgdW4g6WNoYW5nZSBkZSBkb25u6WVzCihyZXF16nRlIG91IHLpcG9uc2UpLgoKRXhlbXBsZSBkZSBqb3VybmFsaXNhdGlvbiBIVFRQIDoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzE5IFsxNS9PY3QvMjAwMzowODozMTo1N10gcmVsYWlzLWh0dHAgU3J2MSA5LzAvNy8xNDcvNzIzIDIwMCAyNDMgLSAtIC0tLS0gMi8zLzMgMC8wICJIRUFEIC8gSFRUUC8xLjAiCgpFeGVtcGxlIHBsdXMgY29tcGxldCA6CgogICAgaGFwcm94eVsxODk4OV06IDEwLjAuMC4xOjM0NTUyIFsxNS9PY3QvMjAwMzoxNToyNjozMV0gcmVsYWlzLWh0dHAgU3J2MSAzMTgzLy0xLy0xLy0xLzExMjE1IDUwMyAwIC0gLSBTQy0tIDEzNy8yMDIvMjA1IDAvMCB7dy5vZHMub3JnfE1vemlsbGF9IHt9ICJIRUFEIC8gSFRUUC8xLjAiIAoKICAgIENoYW1wICBGb3JtYXQgLyBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlbXBsZQoKICAgICAgICAxICBub21fcHJvY2Vzc3VzICdbJyBwaWQgJ106JyAgICAgICAgICAgICAgICAgICAgaGFwcm94eVsxODk4OV06CiAgICAgICAgMiAgaXBfY2xpZW50ICc6JyBwb3J0X2NsaWVudCAgICAgICAgICAgICAgICAgICAgIDEwLjAuMC4xOjM0NTUyCiAgICAgICAgMyAgJ1snIGRhdGUgJ10nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNS9PY3QvMjAwMzoxNToyNjozMV0KICAgICAgICA0ICBub21faW5zdGFuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYWlzLWh0dHAKICAgICAgICA1ICBub21fc2VydmV1ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3J2MQogICAgICAgIDYgIFRxICcvJyBUdyAnLycgVGMgJy8nIFRyICcvJyBUdCAgICAgICAgICAgICAgICAzMTgzLy0xLy0xLy0xLzExMjE1CiAgICAgICAgNyAgQ29kZV9yZXRvdXJfSFRUUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMwogICAgICAgIDggIG9jdGV0cyBsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgOSAgY29va2llc19yZXF16nRlX2NhcHR1culzICAgICAgICAgICAgICAgICAgICAgIC0KICAgICAgIDEwICBjb29raWVzX3JlcG9uc2VfY2FwdHVy6XMgICAgICAgICAgICAgICAgICAgICAgLQogICAgICAgMTEgIGV0YXRfdGVybWluYWlzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQy0tCiAgICAgICAxMiAgY29ubnNfc3J2ICcvJyBjb25uc19pbnN0ICcvJyBjb25uc19wcm9jZXNzdXMgIDEzNy8yMDIvMjA1CiAgICAgICAxMyAgcG9zaXRpb24gZmlsZSBzZXJ2ZXVyICcvJyBnbG9iYWxlICAgICAgICAgICAgIDAvMAogICAgICAgMTQgICd7JyBlbnRldGVzX3JlcXXqdGVfY2FwdHVy6XMgJ30nICAgICAgICAgICAgICB7dy5vZHMub3JnfE1vemlsbGF9CiAgICAgICAxNSAgJ3snIGVudGV0ZXNfcmVwb25zZV9jYXB0dXLpcyAnfScgICAgICAgICAgICAgIHt9CiAgICAgICAxNiAgJyInIHJlcXXqdGVfSFRUUCAnIicgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFEIC8gSFRUUC8xLjAiCiAgCk5vdGUgcG91ciBsZXMgYW5hbHlzZXVycyBkZSBsb2dzIDogbCdVUkkgZXN0IFRPVUpPVVJTIGxlIGRlcm5pZXIgY2hhbXAgZGUgbGEgbGlnbmUsIGV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVuY2UgcGFyIHVuIGd1aWxsZW1ldCAnIicuCgpMZSBwcm9ibOhtZSBkZSBsb2d1ZXIgdW5pcXVlbWVudCBlbiBmaW4gZGUgc2Vzc2lvbiwgYydlc3QgcXUnaWwgZXN0IGltcG9zc2libGUKZGUgc2F2b2lyIGNlIHF1aSBzZSBwYXNzZSBkdXJhbnQgZGUgZ3JvcyB0cmFuc2ZlcnRzIG91IGRlcyBzZXNzaW9ucyBsb25ndWVzLgpQb3VyIHBhbGxpZXIg4CBjZSBwcm9ibOhtZSwgdW5lIG5vdXZlbGxlIG9wdGlvbiAnbG9nYXNhcCcgYSDpdOkgaW50cm9kdWl0ZSBkYW5zCmxhIHZlcnNpb24gMS4xLjI4ICgxLjIuMSkuIExvcnNxdSdlbGxlIGVzdCBhY3RpdullLCBsZSBwcm94eSBsb2d1ZXJhIGxlIHBsdXMKdPR0IHBvc3NpYmxlLCBjJ2VzdCDgIGRpcmUganVzdGUgYXZhbnQgcXVlIG5lIGTpYnV0ZW50IGxlcyB0cmFuc2ZlcnRzIGRlCmRvbm7pZXMuIENlbGEgc2lnbmlmaWUsIGRhbnMgbGUgY2FzIGR1IFRDUCwgcXUnaWwgbG9ndWVyYSB0b3Vqb3VycyBsZSBy6XN1bHRhdApkZSBsYSBjb25uZXhpb24gdmVycyBsZSBzZXJ2ZXVyLCBldCBkYW5zIGxlIGNhcyBIVFRQLCBxdSdpbCBsb2d1ZXJhIGVuIGZpbiBkZQp0cmFpdGVtZW50IGRlcyBlbi106nRlcyBkZSBsYSBy6XBvbnNlIGR1IHNlcnZldXIsIGF1cXVlbCBjYXMgbGUgbm9tYnJlIGQnb2N0ZXRzCnJlcHLpc2VudGVyYSBsYSB0YWlsbGUgZGVzIGVuLXTqdGVzIHJldG91cm7pcyBhdSBjbGllbnQuCgpBZmluIGQn6XZpdGVyIHRvdXRlIGNvbmZ1c2lvbiBhdmVjIGxlcyBsb2dzIG5vcm1hdXgsIGxlIHRlbXBzIHRvdGFsIGRlCnRyYW5zZmVydCBldCBsZSBub21icmUgZCdvY3RldHMgdHJhbnNm6XLpcyBzb250IHBy6WZpeOlzIGQndW4gc2lnbmUgJysnCnJhcHBlbGFudCBxdWUgbGVzIHZhbGV1cnMgcullbGxlcyBzb250IGNlcnRhaW5lbWVudCBwbHVzIOlsZXbpZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGxvZ2FzYXAKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKCj4+PiBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS83LzE0LyszMCAyMDAgKzI0MyAtIC0gLS0tLSAzLzMgIkdFVCAvaW1hZ2UuaXNvIEhUVFAvMS4wIgoKCjQuMi4zKSBDaHJvbm9t6XRyYWdlIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBvdXIgZOljZWxlciBkZXMgcHJvYmzobWVzIHLpc2VhdSwgbGVzIG1lc3VyZXMgZHUgdGVtcHMg6WNvdWzpIGVudHJlIGNlcnRhaW5zCul26W5lbWVudHMgc29udCBkJ3VuZSB0cuhzIGdyYW5kZSB1dGlsaXTpLiBUb3VzIGxlcyB0ZW1wcyBzb250IG1lc3Vy6XMgZW4KbWlsbGlzZWNvbmRlcyAobXMpLiBFbiBtb2RlIEhUVFAsIHF1YXRyZSBwb2ludHMgZGUgbWVzdXJlIHNvbnQgcmFwcG9ydOlzIHNvdXMKbGEgZm9ybWUgVHEvVHcvVGMvVHIvVHQgOgoKICAtIFRxOiB0ZW1wcyB0b3RhbCBkZSBy6WNlcHRpb24gZGUgbGEgcmVxdep0ZSBIVFRQIGRlIGxhIHBhcnQgZHUgY2xpZW50LgogICAgQydlc3QgbGUgdGVtcHMgcXVpIHMnZXN0IOljb3Vs6SBlbnRyZSBsZSBtb21lbnQgb/kgbGUgY2xpZW50IGEg6XRhYmxpCiAgICBzYSBjb25uZXhpb24gdmVycyBsZSByZWxhaXMsIGV0IGxlIG1vbWVudCBv+SBjZSBkZXJuaWVyIGEgcmXndSBsZSBkZXJuaWVyCiAgICBlbi106nRlIEhUVFAgdmFsaWRhbnQgbGEgZmluIGRlIGxhIHJlcXXqdGUuIFVuZSB2YWxldXIgJy0xJyBpY2kgaW5kaXF1ZQogICAgcXVlIGxhIHJlcXXqdGUgY29tcGzodGUgbidhIGphbWFpcyDpdOkgcmXndWUuCgogIC0gVHc6IHRlbXBzIHRvdGFsIHBhc3PpIGRhbnMgbGVzIGZpbGVzIGQnYXR0ZW50ZSBhdmFudCBkJ29idGVuaXIgdW5lIHBsYWNlCiAgICB2ZXJzIHVuIHNlcnZldXIuIENlY2kgdGllbnQgY29tcHRlIOAgbGEgZm9pcyBkZSBsYSBmaWxlIGQnYXR0ZW50ZSBnbG9iYWxlCiAgICBldCBkZSBjZWxsZSBkdSBzZXJ2ZXVyLCBldCBk6XBlbmQgZHUgbm9tYnJlIGRlIHJlcXXqdGVzIGRhbnMgbGEgZmlsZSBldCBkdQogICAgdGVtcHMgbuljZXNzYWlyZSBhdSBzZXJ2ZXVyIHBvdXIgY29tcGzpdGVyIGxlcyBzZXNzaW9ucyBwculj6WRlbnRlcy4gTGEKICAgIHZhbGV1ciAnLTEnIGluZGlxdWUgcXVlIGxhIHJlcXXqdGUgYSDpdOkgZOl0cnVpdGUgYXZhbnQgZCdhdHRlaW5kcmUgdW5lCiAgICBmaWxlLgoKICAtIFRjOiB0ZW1wcyBkJ+l0YWJsaXNzZW1lbnQgZGUgbGEgY29ubmV4aW9uIFRDUCBkdSByZWxhaXMgdmVycyBsZSBzZXJ2ZXVyLgogICAgQydlc3QgbGUgdGVtcHMg6WNvdWzpIGVudHJlIGxlIG1vbWVudCBvdSBsZSByZWxhaXMgYSBpbml0aekgbGEgZGVtYW5kZSBkZQogICAgY29ubmV4aW9uIHZlcnMgbGUgc2VydmV1ciwgZXQgbGUgbW9tZW50IG/5IGNlIGRlcm5pZXIgbCdhIGFjcXVpdHTpZSwgYydlc3QKICAgIOAgZGlyZSBsZSB0ZW1wcyBlbnRyZSBsJ2Vudm9pIGR1IHBhcXVldCBUQ1AgU1lOIGxhIHLpY2VwdGlvbiBkdSBTWU4vQUNLLgogICAgVW5lIHZhbGV1ciAnLTEnIGljaSBpbmRpcXVlIHF1ZSBsYSBjb25uZXhpb24gbidhIGphbWFpcyBwdSDqdHJlIOl0YWJsaWUKICAgIHZlcnMgbGUgc2VydmV1ci4KCiAgLSBUcjogdGVtcHMgZGUgculwb25zZSBkdSBzZXJ2ZXVyLiBDJ2VzdCBsZSB0ZW1wcyBxdWUgbGUgc2VydmV1ciBhIG1pcyBwb3VyCiAgICByZW52b3llciBsYSB0b3RhbGl06SBkZXMgZW4tdOp0ZXMgSFRUUCDgIHBhcnRpciBkdSBtb21lbnQgb/kgaWwgYSBhY3F1aXR06QogICAgbGEgY29ubmV4aW9uLiBDYSByZXBy6XNlbnRlIGV4YWN0ZW1lbnQgbGUgdGVtcHMgZGUgdHJhaXRlbWVudCBkZSBsYQogICAgdHJhbnNhY3Rpb24gc2FucyBsZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMgYXNzb2Np6WVzLiBVbmUgdmFsZXVyICctMScKICAgIGluZGlxdWUgcXVlIGxlIHNlcnZldXIgbidhIHBhcyBlbnZveekgbGEgdG90YWxpdOkgZGUgbCdlbi106nRlIEhUVFAuCgogIC0gVHQ6IGR1cullIGRlIHZpZSB0b3RhbGUgZGUgbGEgc2Vzc2lvbiwgZW50cmUgbGUgbW9tZW50IG/5IGxhIGRlbWFuZGUgZGUKICAgIGNvbm5leGlvbiBkdSBjbGllbnQgYSDpdOkgYWNxdWl0dOllIGV0IGxlIG1vbWVudCBv+SBsYSBjb25uZXhpb24gYSDpdOkKICAgIHJlZmVybellIGF1eCBkZXV4IGV4dHLpbWl06XMgKGNsaWVudCBldCBzZXJ2ZXVyKS4gTGEgc2lnbmlmaWNhdGlvbiBjaGFuZ2UKICAgIHVuIHBldSBzaSBsJ29wdGlvbiAnbG9nYXNhcCcgZXN0IHBy6XNlbnRlLiBEYW5zIGNlIGNhcywgbGUgdGVtcHMgY29ycmVzcG9uZAogICAgdW5pcXVlbWVudCDgIChUcSArIFR3ICsgVGMgKyBUciksIGV0IHNlIHRyb3V2ZSBwculmaXjpIGQndW4gc2lnbmUgJysnLiBPbgogICAgcGV1dCBkb25jIGTpZHVpcmUgVGQsIGxlIHRlbXBzIGRlIHRyYW5zZmVydCBkZXMgZG9ubullcywgZW4gZXhjbHVhbnQgbGVzCiAgICBhdXRyZXMgdGVtcHMgOgoKICAgICAgICBUZCA9IFR0IC0gKFRxICsgVHcgKyBUYyArIFRyKQoKICAgIExlcyB0ZW1wcyByYXBwb3J06XMg4CAnLTEnIHNvbnQgc2ltcGxlbWVudCDgIOlsaW1pbmVyIGRlIGNldHRlIOlxdWF0aW9uLgoKRW4gbW9kZSBUQ1AgKCdvcHRpb24gdGNwbG9nJyksIHNldWxzIGxlcyBkZXV4IGluZGljYXRldXJzIFR3LCBUYyBldCBUdCBzb250CnJhcHBvcnTpcy4KCkNlcyB0ZW1wcyBmb3Vybmlzc2VudCBkZSBwculjaWV1eCByZW5zZWlnbmVtZW50IHN1ciBkZXMgY2F1c2VzIHByb2JhYmxlcyBkZQpwcm9ibOhtZXMuIER1IGZhaXQgcXVlIGxlIHByb3RvY29sZSBUQ1AgZOlmaW5pc3NlIGRlcyB0ZW1wcyBkZSByZXRyYW5zbWlzc2lvbgpkZSAzIHNlY29uZGVzLCBwdWlzIDYsIDEyLCBldGMuLi4sIGwnb2JzZXJ2YXRpb24gZGUgdGVtcHMgcHJvY2hlcyBkZSBtdWx0aXBsZXMKZGUgMyBzZWNvbmRlcyBpbmRpcXVlIHByYXRpcXVlbWVudCB0b3Vqb3VycyBkZXMgcGVydGVzIGRlIHBhcXVldHMgbGnpcyDgIHVuCnByb2Js6G1lIHLpc2VhdSAoY+JibGUgb3Ugbulnb2NpYXRpb24pLiBEZSBwbHVzLCBzaSA8VHQ+IGVzdCBwcm9jaGUgZCd1bmUKdmFsZXVyIGRlIHRpbWUtb3V0IGRhbnMgbGEgY29uZmlndXJhdGlvbiwgYydlc3Qgc291dmVudCBxdSd1bmUgc2Vzc2lvbiBhIOl06QphYmFuZG9ubullIHN1ciBleHBpcmF0aW9uIGQndW4gdGltZS1vdXQuCgpDYXMgbGVzIHBsdXMgZnLpcXVlbnRzIDoKCiAgLSBTaSBUcSBlc3QgcHJvY2hlIGRlIDMwMDAsIHVuIHBhcXVldCBhIHRy6HMgY2VydGFpbmVtZW50IOl06SBwZXJkdSBlbnRyZQogICAgbGUgY2xpZW50IGV0IGxlIHJlbGFpcy4KICAtIFNpIFRjIGVzdCBwcm9jaGUgZGUgMzAwMCwgdW4gcGFxdWV0IGEgdHLocyBjZXJ0YWluZW1lbnQg6XTpIHBlcmR1IGVudHJlCiAgICBsZSByZWxhaXMgZXQgbGUgc2VydmV1ciBkdXJhbnQgbGEgcGhhc2UgZGUgY29ubmV4aW9uLiBDZXQgaW5kaWNhdGV1cgogICAgZGV2cmFpdCBub3JtYWxlbWVudCB0b3Vqb3VycyDqdHJlIHRy6HMgYmFzIChtb2lucyBkZSBxdWVscXVlcyBkaXphaW5lcykuCiAgLSBTaSBUciBlc3QgcHJlc3F1ZSB0b3Vqb3VycyBpbmbpcmlldXIg4CAzMDAwLCBldCBxdWUgY2VydGFpbmVzIHZhbGV1cnMKICAgIHNlbWJsZW50IHByb2NoZXMgZGUgbGEgdmFsZXVyIG1veWVubmUgbWFqb3LpZSBkZSAzMDAwLCBpbCB5IGEgcGV1dC3qdHJlCiAgICBkZSBwZXJ0ZXMgZW50cmUgbGUgcmVsYWlzIGV0IGxlIHNlcnZldXIuCiAgLSBTaSBUdCBlc3QgbOln6HJlbWVudCBzdXDpcmlldXIgYXUgdGltZS1vdXQsIGMnZXN0IHNvdXZlbnQgcGFyY2UgcXVlIGxlCiAgICBjbGllbnQgZXQgbGUgc2VydmV1ciB1dGlsaXNlbnQgZHUga2VlcC1hbGl2ZSBIVFRQIGVudHJlIGV1eCBldCBxdWUgbGEKICAgIHNlc3Npb24gZXN0IG1haW50ZW51ZSBhcHLocyBsYSBmaW4gZGVzIOljaGFuZ2VzLiBWb2lyIHBsdXMgbG9pbiBwb3VyCiAgICBzYXZvaXIgY29tbWVudCBk6XNhY3RpdmVyIGxlIGtlZXAtYWxpdmUgSFRUUC4KCkF1dHJlcyBjYXMgKCd4eCcgcmVwculzZW50YW50IHVuZSB2YWxldXIgcXVlbGNvbnF1ZSDgIGlnbm9yZXIpIDoKICAtMS94eC94eC94eC9UdDogbGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZGFucyBsZSB0ZW1wcyBpbXBhcnRpIG91CiAgICAgICAgICAgICAgICAgIGEgcmVmZXJt6SBzYSBjb25uZXhpb24gc2FucyBjb21wbOl0ZXIgbGEgcmVxdep0ZS4KICBUcS8tMS94eC94eC9UdDogSWwgbifpdGFpdCBwYXMgcG9zc2libGUgZGUgdHJhaXRlciBsYSByZXF1ZXN0LCBwcm9iYWJsZW1lbnQKICAgICAgICAgICAgICAgICAgcGFyY2UgcXVlIHRvdXMgbGVzIHNlcnZldXJzIOl0YWllbnQgaG9ycyBkJ3VzYWdlLgogIFRxL1R3Ly0xL3h4L1R0OiBsYSBjb25uZXhpb24gbidhIHBhcyBwdSBzJ+l0YWJsaXIgdmVycyBsZSBzZXJ2ZXVyIChyZWZ1cyBvdQogICAgICAgICAgICAgICAgICB0aW1lLW91dCBhdSBib3V0IGRlIFR0LShUcStUdykgbXMpLgogIFRxL1R3L1RjLy0xL1R0OiBsZSBzZXJ2ZXVyIGEgYWNjZXB06SBsYSBjb25uZXhpb24gbWFpcyBuJ2EgcGFzIHLpcG9uZHUgZGFucwogICAgICAgICAgICAgICAgICBsZXMgdGVtcHMgb3UgYmllbiBhIHJlZmVybekgc2EgY29ubmV4aW9uIHRyb3AgdPR0LCBhdSBib3V0CiAgICAgICAgICAgICAgICAgIGRlIFR0LShUcStUdytUYykgbXMuCiAgICAgCjQuMi40KSBDb25kaXRpb25zIGRlIGTpY29ubmV4aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBsb2dzIFRDUCBldCBIVFRQIGZvdXJuaXNzZW50IHVuIGluZGljYXRldXIgZGUgY29tcGzpdHVkZSBkZSBsYSBzZXNzaW9uIGRhbnMKbGUgY2hhbXAgJ2V0YXRfdGVybWluYWlzb24nLCBqdXN0ZSBhdmFudCBsZSBub21icmUgZGUgY29ubmV4aW9ucyBhY3RpdmVzLiBDJ2VzdAp1biBjaGFtcCBsb25nIGRlIDIgY2FyYWN06HJlcyBlbiBUQ1AgZXQgZGUgNCBjYXJhY3TocmVzIGVuIEhUVFAsIGNoYWN1biBheWFudAp1bmUgc2lnbmlmaWNhdGlvbiBwculjaXNlIDoKCiAgLSBzdXIgbGUgcHJlbWllciBjYXJhY3TocmUsIHVuIGNvZGUgcHLpY2lzYW50IGxlIHByZW1pZXIg6XbpbmVtZW50IHF1aSBhIGNhdXPpCiAgICBsYSB0ZXJtaW5haXNvbiBkZSBsYSBzZXNzaW9uIDoKCiAgICAgICAgQyA6IGZlcm1ldHVyZSBpbmF0dGVuZHVlIGRlIGxhIHNlc3Npb24gVENQIGRlIGxhIHBhcnQgZHUgY2xpZW50LgoKICAgICAgICBTIDogZmVybWV0dXJlIGluYXR0ZW5kdWUgZGUgbGEgc2Vzc2lvbiBUQ1AgZGUgbGEgcGFydCBkdSBzZXJ2ZXVyLCBvdQogICAgICAgICAgICByZWZ1cyBleHBsaWNpdGUgZGUgY29ubmV4aW9uIGRlIGxhIHBhcnQgZGUgY2UgZGVybmllci4KCiAgICAgICAgUCA6IHRlcm1pbmFpc29uIHBy6W1hdHVy6WUgZGVzIHNlc3Npb25zIHBhciBsZSBwcm94eSwgcG91ciBjYXVzZQogICAgICAgICAgICBkJ2ltcG9zaXRpb24gZCd1bmUgbGltaXRlIHN1ciBsZSBub21icmUgZGUgY29ubmV4aW9ucywgcG91ciBjYXVzZQogICAgICAgICAgICBkZSBjb25maWd1cmF0aW9uIChleDogZmlsdHJlIGQnVVJMKSwgb3UgcGFyY2UgcXUndW4gY29udHL0bGUgZGUKICAgICAgICAgICAgc+ljdXJpdOkgYSBk6XRlY3TpIGV0IGJsb3F16SB1bmUgYW5vbWFsaWUgZGFucyBsYSBy6XBvbnNlIGR1CiAgICAgICAgICAgIHNlcnZldXIgcXVpIGF1cmFpdCBwdSBjYXVzZXIgdW5lIGZ1aXRlIGQnaW5mb3JtYXRpb25zIChwYXIgZXhlbXBsZSwKICAgICAgICAgICAgdW4gY29va2llIGNhY2hhYmxlKS4KCiAgICAgICAgUiA6IHVuZSByZXNzb3VyY2Ugc3VyIGxlIHByb3h5IGEg6XTpIOlwdWlz6WUgKG3pbW9pcmUsIHNvY2tldHMsIHBvcnRzCiAgICAgICAgICAgIHNvdXJjZSwgLi4uKS4gR+lu6XJhbGVtZW50LCBjZWxhIGFycml2ZSBhdSBjb3VycyBkZSBsJ+l0YWJsaXNzZW1lbnQKICAgICAgICAgICAgZCd1bmUgY29ubmV4aW9uLCBldCBsZXMgbG9ncyBzeXN06G1lIGRvaXZlbnQgY29udGVuaXIgdW5lIGNvcGllIGRlCiAgICAgICAgICAgIGwn6XJyZXVyIHBy6WNpc2UuCgogICAgICAgIEkgOiB1bmUgZXJyZXVyIGludGVybmUgYSDpdOkgaWRlbnRpZmnpZSBwYXIgbGUgcHJveHkg4CBsYSBzdWl0ZSBkJ3VuCiAgICAgICAgICAgIGF1dG8tY29udHL0bGUuIENlY2kgbmUgZG9pdCBKQU1BSVMgYXJyaXZlciwgZXQgdm91cyDqdGVzIGVuY291cmFn6XMKICAgICAgICAgICAg4CByZW1vbnRlciBuJ2ltcG9ydGUgcXVlbCBsb2cgY29udGVuYW50IGNlY2kgY2FyIGlsIHMnYWdpcmEgdW4gYnVnLgoKICAgICAgICBjIDogbGUgZOlsYWkgbWF4aW1hbCBkJ2F0dGVudGUgZHUgY2xpZW50IGEgZXhwaXLpIChjbGl0aW1lb3V0KS4KCiAgICAgICAgcyA6IGxlIGTpbGFpIG1heGltYWwgZCdhdHRlbnRlIGR1IHNlcnZldXIgYSBleHBpcukgKHNydnRpbWVvdXQgZXQgY29udGltZW91dCkKCiAgICAgICAgLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUgZGUgc2Vzc2lvbi4KCiAgLSBzdXIgbGUgc2Vjb25kIGNhcmFjdOhyZSwgbCfpdGF0IGQnYXZhbmNlbWVudCBkZSBsYSBzZXNzaW9uIFRDUC9IVFRQIGxvcnMgZGUKICAgIGxhIGZlcm1ldHVyZSA6CgogICAgICAgIFIgOiBhdHRlbnRlIGQndW5lIFJFUVVFVEUgSFRUUCBjb21wbOh0ZSBkZSBsYSBwYXJ0IGR1IGNsaWVudC4gUmllbiBuJ2EKICAgICAgICAgICAg6XTpIHRyYW5zbWlzIGF1IHNlcnZldXIuCgogICAgICAgIFEgOiBhdHRlbnRlIGVuIGZpbGUgZCdhdHRlbnRlIChRVUVVRSkgZCd1bmUgcGxhY2UgcG91ciBhdm9pciB1bmUKICAgICAgICAgICAgY29ubmV4aW9uIHZlcnMgdW4gc2VydmV1ci4gTmUgcGV1dCBhcHBhcmHudHJlIHF1ZSBzdXIgdW4gc2VydmV1cgogICAgICAgICAgICBwb3Nz6WRhbnQgdW4gcGFyYW3odHJlICdtYXhjb25uJy4gQXVjdW5lIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUKICAgICAgICAgICAgYXUgc2VydmV1ci4KCiAgICAgICAgQyA6IGF0dGVudGUgZGUgbCfpdGFibGlzc2VtZW50IGQndW5lIENPTk5FWElPTiB2ZXJzIGxlIHNlcnZldXIuIExlCiAgICAgICAgICAgIHNlcnZldXIgcGV1dCBhdSBwbHVzIGF2b2lyIHZ1IGxhIHRlbnRhdGl2ZSBkZSBjb25uZXhpb24sIG1haXMKICAgICAgICAgICAgYXVjdW5lIGRvbm7pZSBuJ2Eg6XTpIOljaGFuZ+llLgoKICAgICAgICBIIDogYXR0ZW50ZSwgculjZXB0aW9uIG91IHRyYWl0ZW1lbnQgZGVzIGVuLXTqdGVzIEhUVFAgKCJIRUFERVJTIikuCgogICAgICAgIEQgOiB0cmFuc2ZlcnQgZGVzIERPTk5FRVMgZHUgc2VydmV1ciB2ZXJzIGxlIGNsaWVudC4KCiAgICAgICAgTCA6IHRyYW5zZmVydCBkZXMgZGVybmnocmVzICgiTEFTVCIpIGRvbm7pZXMgZHUgcHJveHkgdmVycyBsZSBjbGllbnQsCiAgICAgICAgICAgIGFsb3JzIHF1ZSBsZSBzZXJ2ZXVyIGEgZOlq4CBmaW5pLgoKICAgICAgICBUIDogcmVxdep0ZSBibG9xdellIGVuIG1vZGUgInRhcnBpdCIgcGFyIGxlIHByb3h5LiBFbGxlIGEg6XTpIG1haW50ZW51ZQogICAgICAgICAgICBvdXZlcnRlIHZlcnMgbGUgY2xpZW50IHBlbmRhbnQgdG91dGUgbGEgZHVy6WUgZHUgY29udGltZW91dCBvdQogICAgICAgICAgICBqdXNxdSfgIGwnYWJhbmRvbiBkZSBsYSBwYXJ0IGR1IGNsaWVudC4KCiAgICAgICAgLSA6IHRlcm1pbmFpc29uIG5vcm1hbGUsIGFwcuhzIGZpbiBkZSB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMuCgogIC0gbGUgdHJvaXNp6G1lIGNhcmFjdOhyZSBpbmRpcXVlIGwn6XZlbnR1ZWxsZSBpZGVudGlmaWNhdGlvbiBkJ3VuIGNvb2tpZSBkZQogICAgcGVyc2lzdGVuY2UgKHVuaXF1ZW1lbnQgZW4gbW9kZSBIVFRQKSA6CgogICAgICAgIE4gOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGVuY2UgbidhIOl06SBwculzZW506S4gQydlc3QgZ+lu6XJhbGVtZW50IGxlCiAgICAgICAgICAgIGNhcyBzdXIgbGVzIE5PVVZFTExFUyBjb25uZXhpb25zIGNsaWVudHMuCgogICAgICAgIEkgOiBsZSBjbGllbnQgYSBwculzZW506SB1biBjb29raWUgSU5WQUxJREUgbmUgY29ycmVzcG9uZGFudCDgIGF1Y3VuCiAgICAgICAgICAgIHNlcnZldXIgY29ubnUuIENlY2kgcGV1dCDqdHJlIGT7IOAgdW4gY2hhbmdlbWVudCBkZSBjb25maWd1cmF0aW9uCiAgICAgICAgICAgIHLpY2VudCwg4CBkZXMgbelsYW5nZXMgZGUgbm9tcyBkZSBjb29raWVzIGVudHJlIHNpdGVzIEhUVFAvSFRUUFMsCiAgICAgICAgICAgIG91IOAgdW5lIGF0dGFxdWUuCgogICAgICAgIEQgOiBsZSBjbGllbnQgYSBwculzZW506SB1biBjb29raWUgY29ycmVzcG9uZGFudCDgIHVuIHNlcnZldXIgaG9ycwogICAgICAgICAgICBkJ3VzYWdlICgiRE9XTiIpLiBTdWl2YW50IGwnb3B0aW9uICdwZXJzaXN0JywgaWwgYSDpdOkgcmVudm956SB2ZXJzCiAgICAgICAgICAgIHVuIGF1dHJlIHNlcnZldXIgb3UgYSB0b3V0IGRlIG3qbWUgdGVudOkgZGUgc2UgY29ubmVjdGVyIHN1ciBjZWx1aQogICAgICAgICAgICBjb3JyZXNwb25kYW50IGF1IGNvb2tpZS4KCiAgICAgICAgViA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBWQUxJREUgZXQgYSBwdSBzZSBjb25uZWN0ZXIgYXUKICAgICAgICAgICAgc2VydmV1ciBjb3JyZXNwb25kYW50LgoKICAgICAgICAtIDogbm9uIGFwcGxpcXVhYmxlIChwYXMgZGUgY29va2llIHBvc2l0aW9ubukgZGFucyBsYSBjb25maWd1cmF0aW9uKS4KCiAgLSBsZSBkZXJuaWVyIGNhcmFjdOhyZSBpbmRpcXVlIGwn6XZlbnR1ZWwgdHJhaXRlbWVudCBlZmZlY3R16SBzdXIgdW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSByZXRyb3VybukgcGFyIGxlIHNlcnZldXIgKHVuaXF1ZW1lbnQgZW4gbW9kZSBIVFRQKSA6CgogICAgICAgIE4gOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGFuY2UgbidhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIsIGV0IGF1Y3VuCiAgICAgICAgICAgIG4nYSDpdOkgaW5z6XLpLgoKICAgICAgICBJIDogYXVjdW4gY29va2llIGRlIHBlcnNpc3RhbmNlIG4nYSDpdOkgZm91cm5pIHBhciBsZSBzZXJ2ZXVyLCBldCBsZQogICAgICAgICAgICBwcm94eSBlbiBhIElOU0VSRSB1bi4KCiAgICAgICAgUCA6IHVuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIgZXQgdHJhbnNtaXMKICAgICAgICAgICAgdGVsIHF1ZWwgKCJQQVNTSUYiKS4KCiAgICAgICAgUiA6IGxlIGNvb2tpZSByZXRvdXJu6SBwYXIgbGUgc2VydmV1ciBhIOl06SBSRUVDUklUIHBhciBsZSBwcm94eS4KCiAgICAgICAgRCA6IGxlIGNvb2tpZSBwculzZW506SBwYXIgbGUgc2VydmV1ciBhIOl06SBERVRSVUlUIHBhciBsZSBwcm94eSBwb3VyCiAgICAgICAgICAgIG5lIHBhcyDqdHJlIHJldG91cm7pIGF1IGNsaWVudC4KCiAgICAgICAgLSA6IG5vbiBhcHBsaXF1YWJsZQoKCkxhIGNvbWJpbmFpc29uIGRlcyBkZXV4IHByZW1pZXJzIGluZGljYXRldXJzIGZvdXJuaXQgdW5lIGdyYW5kZSBxdWFudGl0aekKZCdpbmZvcm1hdGlvbnMgc3VyIGNlIHF1aSBzZSBwYXNzYWl0IGxvcnNxdWUgbGEgc2Vzc2lvbiBzJ2VzdCB0ZXJtaW7pZS4gQ2VsYQpwZXV0IG5vdGFtbWVudCBhaWRlciDgIGTpdGVjdGVyIHVuZSBzYXR1cmF0aW9uIGRlIHNlcnZldXIsIGRlcyB0cm91YmxlcyBy6XNlYXUsCmRlcyDpcHVpc2VtZW50cyBkZSByZXNzb3VyY2VzIHN5c3TobWUgbG9jYWxlcywgZGVzIGF0dGFxdWVzLCBldGMuLi4KCkxlcyBjb21iaW5haXNvbnMgZCdpbmRpY2F0ZXVycyBsZXMgcGx1cyBmculxdWVudGVzIHNvbnQg6W51bely6WVzIGljaS4KCiAgIEluZGljICBSYWlzb24KICAgICAgQ1IgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhdmFudCBkJ+ltZXR0cmUgdW5lIHJlcXXqdGUgY29tcGzodGUuIElsIGVzdAogICAgICAgICAgdHLocyBwcm9iYWJsZSBxdWUgbGEgcmVxdep0ZSBhaXQg6XTpIHRhcOllIOAgbGEgbWFpbiBkYW5zIHVuIGNsaWVudAogICAgICAgICAgdGVsbmV0IGV0IGFib3J06WUgdHJvcCB09HQuCgogICAgICBjUiAgTGUgdGVtcHMgaW1wYXJ0aSBhdSBjbGllbnQgYSBleHBpcukgYXZhbnQgculjZXB0aW9uIGQndW5lIHJlcXXqdGUKICAgICAgICAgIGNvbXBs6HRlLiBDZWNpIGVzdCBwYXJmb2lzIGNhdXPpIHBhciB1biBwYXJhbeh0cmUgVENQIE1TUyB0cm9wIOlsZXbpCiAgICAgICAgICBzdXIgbGUgY2xpZW50IHBvdXIgZGVzIHLpc2VhdXggUFBQb0Ugc3VyIEFEU0wgcXVpIG5lIHBldXZlbnQgcGFzCiAgICAgICAgICB0cmFuc3BvcnRlciBkZXMgcGFxdWV0cyBlbnRpZXJzLCBvdSBwYXIgZGVzIGNsaWVudHMgcXVpIOludm9pZW50IGRlcwogICAgICAgICAgcmVxdep0ZXMg4CBsYSBtYWluIGV0IG5lIHRhcGVudCBwYXMgYXNzZXogdml0ZS4KCiAgICAgIFNDICBMZSBzZXJ2ZXVyIGEgZXhwbGljaXRlbWVudCByZWZ1c+kgbGEgY29ubmV4aW9uIChsZSBwcm94eSBhIHJl53UgdW4KICAgICAgICAgIFJTVCBUQ1Agb3UgdW4gbWVzc2FnZSBJQ01QIGVuIHJldG91cikuIERhbnMgY2VydGFpbnMgY2FzLCBjZWxhIHBldXQKICAgICAgICAgIOp0cmUgbGEgY291Y2hlIHLpc2VhdSBxdWkgaW5kaXF1ZSBhdSBwcm94eSBxdWUgbGUgc2VydmV1ciBuJ2VzdCBwYXMKICAgICAgICAgIGpvaWduYWJsZSAocC5leDogcGFzIGRlIHJvdXRlLCBwYXMgZGUgculwb25zZSBBUlAgZW4gbG9jYWwsIGV0Yy4uLikKCiAgICAgIHNDICBMYSBjb25uZXhpb24gYXUgc2VydmV1ciBuJ2EgcGFzIHB1IHMn6XRhYmxpciBkYW5zIGxlIHRlbXBzIGltcGFydGkuCgogICAgICBQQyAgTGUgcHJveHkgYSByZWZ1c+kgZCfpdGFibGlyIHVuZSBjb25uZXhpb24gYXUgc2VydmV1ciBwYXJjZSBxdWUgbGUKICAgICAgICAgIG5vbWJyZSBkZSBjb25uZXhpb25zIGEgYXR0ZWludCBsYSBsaW1pdGUgJ21heGNvbm4nIChnbG9iYWwgb3UgZGUKICAgICAgICAgIGwnaW5zdGFuY2UpLiBMZSBwYXJhbeh0cmUgJ21heGNvbm4nIGRlIGwnaW5zdGFuY2UgcG91cnJhaXQg6nRyZQogICAgICAgICAgYXVnbWVudOksIHRvdXQgY29tbWUgbGUgcGFyYW3odHJlICdtYXhjb25uJyBnbG9iYWwuCgogICAgICBSQyAgVW5lIHJlc3NvdXJjZSBsb2NhbGUgYSDpdOkg6XB1aXPpZSAobeltb2lyZSwgc29ja2V0cywgcG9ydHMgc291cmNlKSwKICAgICAgICAgIGVtcOpjaGFudCBsYSBjb25uZXhpb24gYXUgc2VydmV1ciBkZSBzJ+l0YWJsaXIuIExlcyBsb2dzIGQnZXJyZXVycwogICAgICAgICAgZGlyb250IHBy6WNpc+ltZW50IGNlIHF1aSBtYW5xdWFpdC4gRGFucyB0b3VzIGxlcyBjYXMsIGxlIHNldWwgcmVt6GRlCiAgICAgICAgICBjb25zaXN0ZSDgIGFmZmluZXIgbGUgcGFyYW3pdHJhZ2Ugc3lzdOhtZS4KCiAgICAgIGNIICBMZSB0ZW1wcyBpbXBhcnRpIGF1IGNsaWVudCBhIGV4cGly6SBhdSBjb3VycyBkJ3VuZSByZXF16nRlIFBPU1QuIENlY2kKICAgICAgICAgIGVzdCBwYXJmb2lzIGNhdXPpIHBhciB1biBwYXJhbeh0cmUgVENQIE1TUyB0cm9wIOlsZXbpIHN1ciBsZSBjbGllbnQKICAgICAgICAgIHBvdXIgZGVzIHLpc2VhdXggUFBQb0Ugc3VyIEFEU0wgcXVpIG5lIHBldXZlbnQgcGFzIHRyYW5zcG9ydGVyIGRlcwogICAgICAgICAgcGFxdWV0cyBlbnRpZXJzLgoKICAgICAgQ0ggIExlIGNsaWVudCBhIGFiYW5kb25u6SBhbG9ycyBxdSdpbCBhdHRlbmRhaXQgdW4gZOlidXQgZGUgculwb25zZSBkZSBsYQogICAgICAgICAgcGFydCBkdSBzZXJ2ZXVyLiBDZWxhIHBldXQg6nRyZSBjYXVz6SBwYXIgbGUgc2VydmV1ciBxdWkgbWV0dGFpdCB0cm9wCiAgICAgICAgICBkZSB0ZW1wcyDgIHLpcG9uZHJlLCBvdSBwYXIgdW4gY2xpZW50IGNsaXF1YW50IHBy6WNpcGl0YW1tZW50IHN1ciBsZQogICAgICAgICAgYm91dG9uICdTdG9wJy4KCiAgICAgIENRICBMZSBjbGllbnQgYSBhYmFuZG9ubukgYWxvcnMgcXVlIHNhIHNlc3Npb24g6XRhaXQgbWlzZSBlbiBmaWxlCiAgICAgICAgICBkJ2F0dGVudGUgcG91ciBvYnRlbmlyIHVuIHNlcnZldXIgYXZlYyBzdWZmaXNhbW1lbnQgZGUgY29ubmV4aW9ucwogICAgICAgICAgbGlicmVzIHBvdXIgbCdhY2NlcHRlci4gQ2VsYSBzaWduaWZpZSBzb2l0IHF1ZSBsJ2Vuc2VtYmxlIGRlcwogICAgICAgICAgc2VydmV1cnMg6XRhaWVudCBzYXR1culzLCBzb2l0IHF1ZSBsZSBzZXJ2ZXVyIGFzc2lnbukgYSBtaXMgdHJvcCBkZQogICAgICAgICAgdGVtcHMg4CBy6XBvbmRyZS4KCiAgICAgIENUICBMZSBjbGllbnQgYSBhYmFuZG9ubukgYWxvcnMgcXVlIHNhIHNlc3Npb24g6XRhaXQgYmxvcXXpZSBlbiBtb2RlCiAgICAgICAgICB0YXJwaXQuCgogICAgICBzUSAgTGEgc2Vzc2lvbiBhIGF0dGVuZHUgdHJvcCBsb25ndGVtcHMgZW4gZmlsZSBkJ2F0dGVudGUgZXQgYSDpdOkKICAgICAgICAgIGV4cGly6WUuCgogICAgICBTSCAgTGUgc2VydmV1ciBhIGFib3J06SBicnV0YWxlbWVudCBhbG9ycyBxdSdpbCBkZXZhaXQgZW52b3llciBzZXMKICAgICAgICAgIGVuLXTqdGVzLiBFbiBn6W7pcmFsLCBjZWxhIGluZGlxdWUgcXUnaWwgYSBjcmFzaOkuCgogICAgICBzSCAgTGUgc2VydmV1ciBuJ2EgcGFzIHB1IHLpcG9uZHJlIGR1cmFudCBsZSB0ZW1wcyBpbXBhcnRpLCBjZSBxdWkgbW9udHJlCiAgICAgICAgICBkZXMgdHJhbnNhY3Rpb25zIHRyb3AgbG9uZ3VlcywgcHJvYmFibGVtZW50IGNhdXPpZXMgcGFyIHVuIGJhY2stZW5kCiAgICAgICAgICBzYXR1cukuIExlcyBzZXVsZXMgc29sdXRpb25zIHNvbnQgZGUgY29ycmlnZXIgbGUgcHJvYmzobWUgc3VyCiAgICAgICAgICBsJ2FwcGxpY2F0aW9uLCBkJ2FjY3Jv7nRyZSBsZSBwYXJhbeh0cmUgJ3NydnRpbWVvdXQnIHBvdXIgc3VwcG9ydGVyCiAgICAgICAgICBkZXMgYXR0ZW50ZXMgcGx1cyBsb25ndWVzIGF1IHJpc3F1ZSBxdWUgbGVzIGNsaWVudHMgYWJhbmRvbm5lbnQg4AogICAgICAgICAgbGV1ciB0b3VyLCBvdSBiaWVuIGQnYWpvdXRlciBkZXMgc2VydmV1cnMuCiAgICAgIAogICAgICBQUiAgTGUgcHJveHkgYSBibG9xdekgdW5lIHJlcXXqdGUgZHUgY2xpZW50LCBzb2l0IOAgY2F1c2UgZCd1bmUgc3ludGF4ZQogICAgICAgICAgSFRUUCBpbnZhbGlkZSwgYXVxdWVsIGNhcyBpbCBhIHJlbnZveekgdW5lIGVycmV1ciBIVFRQIDQwMCBhdSBjbGllbnQsCiAgICAgICAgICBzb2l0IOAgY2F1c2UgZCd1bmUgcmVxdep0ZSB2YWxpZGFudCB1biBmaWx0cmUgZCdpbnRlcmRpY3Rpb24sIGF1cXVlbAogICAgICAgICAgY2FzIGxlIHByb3h5IGEgcmVudm956SB1bmUgZXJyZXVyIEhUVFAgNDAzLgoKICAgICAgUEggIExlIHByb3h5IGEgYmxvcXXpIGxhIHLpcG9uc2UgZHUgc2VydmV1ciBwYXJjZSBxdSdlbGxlIOl0YWl0IGludmFsaWRlLAogICAgICAgICAgaW5jb21wbOh0ZSwgZGFuZ2VyZXVzZSAoJ2NhY2hlIGNvbnRyb2wnKSwgb3UgcGFyY2UgcXUnZWxsZSB2YWxpZGFpdAogICAgICAgICAgdW4gZmlsdHJlIGRlIHPpY3VyaXTpLiBEYW5zIHRvdXMgbGVzIGNhcywgdW5lIGVycmV1ciBIVFRQIDUwMiBlc3QKICAgICAgICAgIHJlbnZveellIGF1IGNsaWVudC4KCiAgICAgIFBUICBMZSBwcm94eSBhIGJsb3F16SB1bmUgcmVxdep0ZSBkdSBjbGllbnQgZXQgYSBtYWludGVudSBzYSBjb25uZWN0aW9uCiAgICAgICAgICBvdXZlcnRlIGF2YW50IGRlIGx1aSByZXRvdXJuZXIgdW5lIGVycmV1ciAiNTAwIHNlcnZlciBlcnJvciIuIFJpZW4KICAgICAgICAgIG4nYSDpdOkgZW52b3npIGF1IHNlcnZldXIuCgogICAgICBjRCAgTGUgY2xpZW50IG4nYSBwYXMgbHUgZGUgZG9ubullcyBwZW5kYW50IGxlIHRlbXBzIHF1aSBsdWkg6XRhaXQKICAgICAgICAgIGltcGFydGkuIENlY2kgZXN0IHNvdXZlbnQgY2F1c+kgcGFyIGRlcyBwcm9ibOhtZXMgculzZWF1IGP0dOkgY2xpZW50LgoKICAgICAgQ0QgIExlIGNsaWVudCBhIGFib3J06SBzYSBjb25uZWN0aW9uIGRlIG1hbmnocmUgaW5hdHRlbmR1ZSBwZW5kYW50IGxlCiAgICAgICAgICB0cmFuc2ZlcnQgZGVzIGRvbm7pZXMuIENlY2kgZXN0IHByb3ZvcXXpIHNvaXQgcGFyIGxlIGNyYXNoIGQndW4KICAgICAgICAgIG5hdmlnYXRldXIsIG91IHBhciB1bmUgc2Vzc2lvbiBlbiBIVFRQIGtlZXAtYWxpdmUgZW50cmUgbGUgc2VydmV1cgogICAgICAgICAgZXQgbGUgY2xpZW50IHRlcm1pbullIGVuIHByZW1pZXIgcGFyIGxlIGNsaWVudC4KCiAgICAgIHNEICBMZSBzZXJ2ZXVyIG4nYSByaWVuIGZhaXQgZHVyYW50IGxlIHRlbXBzIGltcGFydGkgcGFyIGxlIHBhcmFt6HRyZQogICAgICAgICAgJ3NydnRpbWVvdXQnLiBDZWNpIGVzdCBzb3V2ZW50IGNhdXPpIHBhciBkZXMgdGltZW91dHMgdHJvcCBjb3VydHMKICAgICAgICAgIHN1ciBkZXMg6XF1aXBlbWVudHMgZGUgbml2ZWF1IDQgKGZpcmV3YWxscywgculwYXJ0aXRldXJzIGRlIGNoYXJnZSkKICAgICAgICAgIHNpdHXpcyBlbnRyZSBsZSBwcm94eSBldCBsZSBzZXJ2ZXVyLgoKNC4yLjUpIENhcmFjdOhyZXMgbm9uLWltcHJpbWFibGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjksIGxlcyBjYXJhY3TocmVzIG5vbi1pbXByaW1hYmxlcyBuZSBzb250IHBsdXMgZW52b3npcwp0ZWxzIHF1ZWxzIGRhbnMgbGVzIGxpZ25lcyBkZSBsb2dzLCBtYWlzIGluc2NyaXRzIHNvdXMgbGEgZm9ybWUgZGUgZGV1eCBjaGlmZnJlcwpoZXhhZOljaW1hdXgsIHBy6WZpeOlzIGR1IGNhcmFjdOhyZSBkJ+ljaGFwcGVtZW50ICcjJy4gTGVzIHNldWxzIGNhcmFjdOhyZXMKZG9y6W5hdmFudCBsb2d16XMgdGVscyBxdWVscyBzb250IGNvbXByaXMgZW50cmUgMzIgZXQgMTI2LiBCaWVuIOl2aWRlbW1lbnQsIGxlCmNhcmFjdOhyZSBkJ+ljaGFwcGVtZW50ICcjJyBlc3QgbHVpLW3qbWUgZW5jb2TpIGFmaW4gZGUgbGV2ZXIgbCdhbWJpZ3VpdOkuIElsIGVuCmVzdCBkZSBt6m1lIHBvdXIgbGUgY2FyYWN06HJlICciJywgYWluc2kgcXVlIGxlcyBjYXJhY3TocmVzICd7JywgJ3wnIGV0ICd9JyBwb3VyCmxlcyBlbi106nRlcy4KCjQuMi42KSBDYXB0dXJlIGQnZW4tdOp0ZXMgSFRUUCBldCBkZSBjb29raWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxhIHZlcnNpb24gMS4xLjIzIGEgYXBwb3J06SBsYSBjYXB0dXJlIGRlcyBjb29raWVzLCBldCBsYSB2ZXJzaW9uIDEuMS4yOSBsYQpjYXB0dXJlIGQnZW4tdOp0ZXMuIFRvdXQgY2VjaSBlc3QgZWZmZWN0dekgZW4gdXRpbGlzYW50IGxlIG1vdC1jbOkgJ2NhcHR1cmUnLgoKTGVzIGNhcHR1cmVzIGRlIGNvb2tpZXMgZmFjaWxpdGVudCBsZSBzdWl2aSBldCBsYSByZWNvbnN0aXR1dGlvbiBkJ3VuZSBzZXNzaW9uCnV0aWxpc2F0ZXVyLiBMYSBzeW50YXhlIGVzdCBsYSBzdWl2YW50ZSA6CgogICAgY2FwdHVyZSBjb29raWUgPHBy6WZpeGVfY29va2llPiBsZW4gPGxvbmd1ZXVyX2NhcHR1cmU+CgpDZWNpIGFjdGl2ZXJhIGxhIGNhcHR1cmUgZGUgY29va2llcyDgIGxhIGZvaXMgZGFucyBsZXMgcmVxdep0ZXMgZXQgZGFucyBsZXMKculwb25zZXMuIERlIGNldHRlIG1hbmnocmUsIGlsIGRldmllbnQgZmFjaWxlIGRlIGTpdGVjdGVyIGxvcnNxdSd1biB1dGlsaXNhdGV1cgpiYXNjdWxlIHN1ciB1bmUgbm91dmVsbGUgc2Vzc2lvbiBwYXIgZXhlbXBsZSwgY2FyIGxlIHNlcnZldXIgbHVpIHLpYXNzaWduZXJhIHVuCm5vdXZlYXUgY29va2llLgoKTGUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gY29tbWVuY2VyYSBwYXIgPHBy6WZpeGVfY29va2llPiBzZXJhIGNhcHR1cuksIGV0CnRyYW5zbWlzIHNvdXMgbGEgZm9ybWUgIk5PTT12YWxldXIiLCBzYW5zIHRvdXRlZm9pcywgZXhj6WRlciA8bG9uZ3VldXJfY2FwdHVyZT4KY2FyYWN06HJlcyAoNjQgYXUgbWF4aW11bSkuIExvcnNxdWUgbGUgbm9tIGR1IGNvb2tpZSBlc3QgZml4ZSBldCBjb25udSwgb24gcGV1dApsZSBzdWZmaXhlciBkdSBzaWduZSAiPSIgcG91ciBzJ2Fzc3VyZXIgcXUnYXVjdW4gYXV0cmUgY29va2llIG5lIHByZW5kcmEgc2EKcGxhY2UgZGFucyBsZXMgbG9ncy4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgIyBjYXB0dXJlIGR1IHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGNvbW1lbmNlIHBhciAiQVNQU0VTU0lPTiIKICAgIGNhcHR1cmUgY29va2llIEFTUFNFU1NJT04gbGVuIDMyCgogICAgIyBjYXB0dXJlIGR1IHByZW1pZXIgY29va2llIGRvbnQgbGUgbm9tIGVzdCBleGFjdGVtZW50ICJ2Z252aXNpdG9yIgogICAgY2FwdHVyZSBjb29raWUgdmdudmlzaXRvcj0gbGVuIDMyCgpEYW5zIGxlcyBsb2dzLCBsZSBjaGFtcCBwculj6WRhbnQgbCdpbmRpY2F0ZXVyIGRlIGNvbXBs6XR1ZGUgY29udGllbnQgbGUgY29va2llCnBvc2l0aW9ubukgcGFyIGxlIHNlcnZldXIsIHBy6WPpZOkgZHUgY29va2llIHBvc2l0aW9ubukgcGFyIGxlIGNsaWVudC4gQ2hhY3VuCmRlIGNlcyBjaGFtcHMgZXN0IHJlbXBsYWPpIHBhciBsZSBzaWduZSAiLSIgbG9yc3F1J2F1Y3VuIGNvb2tpZSBuJ2VzdCBmb3VybmkKcGFyIGxlIGNsaWVudCBvdSBsZSBzZXJ2ZXVyLCBvdSBsb3JzcXVlIGwnb3B0aW9uIGVzdCBk6XNhY3RpdullLi4KCkxlcyBjYXB0dXJlcyBkJ2VuLXTqdGVzIG9udCB1biBy9GxlIGNvbXBs6HRlbWVudCBkaWZm6XJlbnQuIEVsbGVzIHNvbnQgdXRpbGVzCnBvdXIgc3VpdnJlIHVuIGlkZW50aWZpYW50IGRlIHJlcXXqdGUgZ2xvYmFsZW1lbnQgdW5pcXVlIHBvc2l0aW9ubukgcGFyIHVuCmF1dHJlIHByb3h5IGVuIGFtb250LCBwb3VyIGpvdXJuYWxpc2VyIGxlcyBub21zIGRlIHNlcnZldXJzIHZpcnR1ZWxzLCBsZXMgdHlwZXMKZGUgY2xpZW50cyB3ZWIsIGxhIGxvbmd1ZXVyIGRlcyBQT1NULCBsZXMgJ3JlZmVycmVycycsIGV0Yy4gRGFucyBsYSBy6XBvbnNlLCBvbgpwZXV0IGNoZXJjaGVyIGRlcyBpbmZvcm1hdGlvbnMgcmVsYXRpdmVzIOAgbGEgbG9uZ3VldXIgYW5ub25j6WUgZGUgbGEgculwb25zZSwKbGUgZm9uY3Rpb25uZW1lbnQgYXR0ZW5kdSBkdSBjYWNoZSwgb3UgZW5jb3JlIGxhIGxvY2FsaXNhdGlvbiBkJ3VuIG9iamV0IGVuIGNhcwpkZSByZWRpcmVjdGlvbi4gVG91dCBjb21tZSBwb3VyIGxlcyBjYXB0dXJlcyBkZSBjb29raWVzLCBpbCBlc3QgcG9zc2libGUKZCdpbmNsdXJlIGxlcyBlbi106nRlcyBkZSByZXF16nRlcyBldCBkZSBy6XBvbnNlIHNpbXVsdGFu6W1lbnQuIExhIHN5bnRheGUgZXN0CmxhIHN1aXZhbnRlIDoKCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciA8bm9tPiBsZW4gPGxvbmd1ZXVyIG1heD4KICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIDxub20+IGxlbiA8bG9uZ3VldXIgbWF4PgoKTm90ZTogTGVzIG5vbXMgZCdlbi106nRlcyBuZSBzb250IHBhcyBzZW5zaWJsZXMg4CBsYSBjYXNzZS4KCkV4ZW1wbGVzOgotLS0tLS0tLS0KICAgICMgY29uc2VydmVyIGxlIG5vbSBkdSBzZXJ2ZXVyIHZpcnR1ZWwgYWNj6WTpIHBhciBsZSBjbGllbnQKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIEhvc3QgbGVuIDIwCiAgICAjIG5vdGVyIGxhIGxvbmd1ZXVyIGRlcyBkb25u6WVzIGVudm956WVzIGRhbnMgdW4gUE9TVAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCgogICAgIyBub3RlciBsZSBmb25jdGlvbm5lbWVudCBhdHRlbmR1IGR1IGNhY2hlIHBhciBsZSBzZXJ2ZXVyCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDYWNoZS1Db250cm9sIGxlbiA4CiAgICAjIG5vdGVyIGwnVVJMIGRlIHJlZGlyZWN0aW9uCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBMb2NhdGlvbiBsZW4gMjAKCkxlcyBlbi106nRlcyBub24gdHJvdXbpcyBzb250IGxvZ3XpcyDgIHZpZGUsIGV0IHNpIHVuIGVuLXTqdGUgYXBwYXJhaXQgcGx1c2lldXJzCmZvaXMsIHNldWxlIGxhIGRlcm5p6HJlIG9jY3VyZW5jZSBzZXJhIGNvbnNlcnbpZS4gTGVzIGVuLXTqdGVzIGRlIHJlcXXqdGUgc29udApyZWdyb3Vw6XMgZW50cmUgZGV1eCBhY2NvbGFkZXMgJ3snIGV0ICd9JyBkYW5zIGwnb3JkcmUgZGUgbGV1ciBk6WNsYXJhdGlvbiwgZXQKY2hhY3VuIHPpcGFy6XMgcGFyIHVuZSBiYXJyZSB2ZXJ0aWNhbGUgJ3wnLCBzYW5zIGF1Y3VuIGVzcGFjZS4gTGVzIGVuLXTqdGVzIGRlCnLpcG9uc2Ugc29udCBwculzZW506XMgZGUgbGEgbeptZSBtYW5p6HJlLCBtYWlzIGFwcuhzIHVuIGVzcGFjZSBzdWl2YW50IGxlIGJsb2MKZCdlbi106nRlIGRlIHJlcXXqdGUuIExlIHRvdXQgcHLpY+hkZSBsYSByZXF16nRlIEhUVFAuIEV4ZW1wbGUgOgoKICBDb25maWc6CgogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgSG9zdCBsZW4gMjAKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgUmVmZXJlciBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIFNlcnZlciBsZW4gMjAKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENvbnRlbnQtTGVuZ3RoIGxlbiAxMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ2FjaGUtQ29udHJvbCBsZW4gOAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgVmlhIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgTG9jYXRpb24gbGVuIDIwCgogIExvZyA6CgogICAgQXVnICA5IDIwOjI2OjA5IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMTQgWzA5L0F1Zy8yMDA0OjIwOjI2OjA5XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMC8xNjIvKzE2MiAyMDAgKzM1MCAtIC0gLS0tLSAwLzAvMCAwLzAge2ZyLmFkc2VydmVyLnlhaG9vLmNvfHxodHRwOi8vZnIuZjQxNi5tYWlsLn0ge3w4NjR8cHJpdmF0ZXx8fSAiR0VUIGh0dHA6Ly9mci5hZHNlcnZlci55YWhvby5jb20vIgogICAgQXVnICA5IDIwOjMwOjQ2IGxvY2FsaG9zdCBoYXByb3h5WzIwMjJdOiAxMjcuMC4wLjE6MzQwMjAgWzA5L0F1Zy8yMDA0OjIwOjMwOjQ2XSByZWxhaXMtaHR0cCBuZXRjYWNoZSAwLzAvMC8xODIvKzE4MiAyMDAgKzI3OSAtIC0gLS0tLSAwLzAvMCAwLzAge3cub2RzLm9yZ3x8fSB7Rm9ybWlsdXgvMC4xLjh8MzQ5NXx8fH0gIkdFVCBodHRwOi8vdy5vZHMub3JnL3N5dGFkaW4uaHRtbCBIVFRQLzEuMSIgCiAgICBBdWcgIDkgMjA6MzA6NDYgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAyOCBbMDkvQXVnLzIwMDQ6MjA6MzA6NDZdIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8yLzEyNi8rMTI4IDIwMCArMjIzIC0gLSAtLS0tIDAvMC8wIDAvMCB7d3d3LmluZm90cmFmaWMuY29tfHxodHRwOi8vdy5vZHMub3JnL3N5dH0ge0FwYWNoZS8yLjAuNDAgKFJlZCBIfDkwNjh8fHx9ICJHRVQgaHR0cDovL3d3dy5pbmZvdHJhZmljLmNvbS9pbWFnZXMvbGl2ZS9jYXJ0ZXNpZGYvZ3JhbmRlcy9pZGZfbmUucG5nIEhUVFAvMS4xIiAKCjQuMi43KSBFeGVtcGxlcyBkZSBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDY1NTkvMC83LzE0Ny82NzIzIDIwMCAyNDMgLSAtIC0tLS0gMS8zLzUgIDAvMCJIRUFEIC8gSFRUUC8xLjAiCiAgPT4gcmVxdep0ZSBsb25ndWUgKDYuNXMpIHNhaXNpZSDgIGxhIG1haW4gYXZlYyB1biBjbGllbnQgdGVsbmV0LiBMZSBzZXJ2ZXVyIGEKICAgICBy6XBvbmR1IGVuIDE0NyBtcyBldCBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullIG5vcm1hbGVtZW50ICgnLS0tLScpCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzE5IFsxNS9PY3QvMjAwMzowODozMTo1N10gcmVsYWlzLWh0dHAgU3J2MSA2NTU5LzEyMzAvNy8xNDcvNjg3MCAyMDAgMjQzIC0gLSAtLS0tIDk5LzIzOS8zMjQgMC85ICJIRUFEIC8gSFRUUC8xLjAiCiAgPT4gSWRlbSwgbWFpcyBsYSByZXF16nRlIGEg6XTpIG1pc2UgZW4gYXR0ZW50ZSBkYW5zIGxhIGZpbGUgZ2xvYmFsZSBkZXJyaehyZQogICAgIDkgYXV0cmVzIHJlcXXqdGVzIGTpauAgcHLpc2VudGVzLCBldCB5IGEgYXR0ZW5kdSAxMjMwIG1zLgoKLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS8wLzcvMTQvKzMwIDIwMCArMjQzIC0gLSAtLS0tIDEvMy8zIDAvMCAiR0VUIC9pbWFnZS5pc28gSFRUUC8xLjAiCiAgPT4gcmVxdep0ZSBwb3VyIHVuIGxvbmcgdHJhbnNmZXJ0LiBMJ29wdGlvbiAnbG9nYXNhcCcg6XRhaXQgc3DpY2lmaellIGRvbmMgbGUKICAgICBsb2cgYSDpdOkgZ+lu6XLpIGp1c3RlIGF2YW50IGxlIHRyYW5zZmVydCBkZSBkb25u6WVzLiBMZSBzZXJ2ZXVyIGEgculwb25kdQogICAgIGVuIDE0IG1zLCAyNDMgb2N0ZXRzIGQnZW4tdOp0ZXMgb250IOl06SB0cmFuc2bpculzIGF1IGNsaWVudCwgZXQgbGUgdGVtcHMKICAgICB0b3RhbCBlbnRyZSBsJ2FjY2VwdCgpIGV0IGxlIHByZW1pZXIgb2N0ZXQgZGUgZG9ubullIGVzdCBkZSAzMCBtcy4KCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMjAgWzE1L09jdC8yMDAzOjA4OjMyOjE3XSByZWxhaXMtaHR0cCBTcnYxIDkvMC83LzE0LzMwIDUwMiAyNDMgLSAtIFBILS0gMC8yLzMgMC8wICJHRVQgL2NnaS1iaW4vYnVnLmNnaT8gSFRUUC8xLjAiCiAgPT4gbGUgcHJveHkgYSBibG9xdekgdW5lIHLpcG9uc2UgZHUgc2VydmV1ciBzb2l0IOAgY2F1c2UgZCd1biBmaWx0cmUgJ3JzcGRlbnknCiAgICAgb3UgJ3JzcGlkZW55Jywgc29pdCBwYXJjZSBxdSdpbCBhIGTpdGVjdOkgdW4gcmlzcXVlIGRlIGZ1aXRlIHNlbnNpYmxlCiAgICAgZCdpbmZvcm1hdGlvbnMgcmlzcXVhbnQgZCfqdHJlIGNhY2jpZXMuIERhbnMgY2UgY2FzLCBsYSBy6XBvbnNlIGVzdAogICAgIHJlbXBsYWPpZSBwYXIgJzUwMiBiYWQgZ2F0ZXdheScuCgotIGhhcHJveHlbMTgxMTNdOiAxMjcuMC4wLjE6MzQ1NDggWzE1L09jdC8yMDAzOjE1OjE4OjU1XSByZWxhaXMtaHR0cCA8Tk9TUlY+IC0xLy0xLy0xLy0xLzg0OTAgLTEgMCAtIC0gQ1ItLSAwLzIvMiAwLzAgIiIgCiAgPT4gTGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZXQgYSByZWZlcm3pIGxhIGNvbm5leGlvbiBsdWktbeptZQogICAgICgnQy0tLScpIGF1IGJvdXQgZGUgOC41cywgYWxvcnMgcXVlIGxlIHJlbGFpcyBhdHRlbmRhaXQgbCdlbi106nRlICgnLVItLScpLgogICAgIEF1Y3VuZSBjb25uZXhpb24gbidhIOl06SBlbnZveellIHZlcnMgbGUgc2VydmV1ci4KCi0gaGFwcm94eVsxODExM106IDEyNy4wLjAuMTozNDU0OSBbMTUvT2N0LzIwMDM6MTU6MTk6MDZdIHJlbGFpcy1odHRwIDxOT1NSVj4gLTEvLTEvLTEvLTEvNTAwMDEgNDA4IDAgLSAtIGNSLS0gMC8yLzIgMC8wICIiIAogID0+IExlIGNsaWVudCBuJ2EgcGFzIGVudm956SBzYSByZXF16nRlIGV0IHNvbiB0aW1lLW91dCBhIGV4cGly6SAoJ2MtLS0nKSBhdQogICAgIGJvdXQgZGUgNTBzLCBhbG9ycyBxdWUgbGUgcmVsYWlzIGF0dGVuZGFpdCBsJ2VuLXTqdGUgKCctUi0tJykuIEF1Y3VuZQogICAgIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUgdmVycyBsZSBzZXJ2ZXVyLCBtYWlzIGxlIHJlbGFpcyBhIHRvdXQgZGUgbeptZQogICAgIHB1IHJlbnZveWVyIHVuIG1lc3NhZ2UgNDA4IGF1IGNsaWVudC4KCi0gaGFwcm94eVsxODk4OV06IDEyNy4wLjAuMTozNDU1MCBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdIHJlbGFpcy10Y3AgU3J2MSAwLzUwMDcgMCBjRAogID0+IGxvZyBlbiBtb2RlICd0Y3Bsb2cnLiBFeHBpcmF0aW9uIGR1IHRpbWUtb3V0IGP0dOkgY2xpZW50ICgnY0QnKSBhdSBib3V0IGRlCiAgICAgNXMuCgotIGhhcHJveHlbMTg5ODldOiAxMC4wLjAuMTozNDU1MiBbMTUvT2N0LzIwMDM6MTU6MjY6MzFdIHJlbGFpcy1odHRwIFNydjEgMzE4My8tMS8tMS8tMS8xMTIxNSA1MDMgMCAtIC0gU0MtLSAxMTUvMjAyLzIwNSAwLzAgIkhFQUQgLyBIVFRQLzEuMCIgCiAgPT4gTGEgcmVxdep0ZSBjbGllbnQgbWV0IDNzIOAgZW50cmVyIChwZXV0Lep0cmUgdW4gcHJvYmzobWUgculzZWF1KSwgZXQgbGEKICAgICBjb25uZXhpb24gKCdTQy0tJykgdmVycyBsZSBzZXJ2ZXVyIOljaG91ZSBhdSBib3V0IGRlIDQgdGVudGF0aXZlcyBkZSAyCiAgICAgc2Vjb25kZXMgKHJldHJpZXMgMyBkYW5zIGxhIGNvbmYpLCBwdWlzIHVuIGNvZGUgNTAzIGVzdCByZXRvdXJu6SBhdQogICAgIGNsaWVudC4gSWwgeSBhdmFpdCAxMTUgY29ubmV4aW9ucyBzdXIgY2Ugc2VydmV1ciwgMjAyIGNvbm5leGlvbnMgc3VyIGNldHRlCiAgICAgaW5zdGFuY2UsIGV0IDIwNSBzdXIgbCdlbnNlbWJsZSBkZXMgaW5zdGFuY2VzIHBvdXIgY2UgcHJvY2Vzc3VzLiBJbCBlc3QKICAgICBwb3NzaWJsZSBxdWUgbGUgc2VydmV1ciBhaXQgcmVmdXPpIGxhIGNvbm5leGlvbiBwYXJjZSBxdSdpbCB5IGVuIGF2YWl0CiAgICAgZOlq4CB0cm9wIGQn6XRhYmxpZXMuCgoKNC4zKSBNb2RpZmljYXRpb24gZGVzIGVuLXTqdGVzIEhUVFAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAgdW5pcXVlbWVudCwgaWwgZXN0IHBvc3NpYmxlIGRlIHJlbXBsYWNlciBjZXJ0YWlucyBlbi106nRlcyBkYW5zIGxhCnJlcXXqdGUgZXQvb3UgbGEgculwb25zZSDgIHBhcnRpciBkJ2V4cHJlc3Npb25zIHLpZ3VsaehyZXMuIElsIGVzdCDpZ2FsZW1lbnQKcG9zc2libGUgZGUgYmxvcXVlciBjZXJ0YWluZXMgcmVxdep0ZXMgZW4gZm9uY3Rpb24gZHUgY29udGVudSBkZXMgZW4tdOp0ZXMgb3UKZGUgbGEgcmVxdep0ZS4gVW5lIGxpbWl0YXRpb24gY2VwZW5kYW50IDogbGVzIGVuLXTqdGVzIGZvdXJuaXMgYXUgbWlsaWV1IGRlCmNvbm5leGlvbnMgcGVyc2lzdGVudGVzIChrZWVwLWFsaXZlKSBuZSBzb250IHBhcyB2dXMgY2FyIGlscyBzb250IGNvbnNpZOly6XMKY29tbWUgZmFpc2FudCBwYXJ0aWUgZGVzIOljaGFuZ2VzIGRlIGRvbm7pZXMgY29uc+ljdXRpZnMg4CBsYSBwcmVtaehyZSByZXF16nRlLgpMZXMgZG9ubullcyBuZSBzb250IHBhcyBhZmZlY3TpZXMsIGNlY2kgbmUgcydhcHBsaXF1ZSBxdSdhdXggZW4tdOp0ZXMuIAoKTGEgc3ludGF4ZSBlc3QgOgogICByZXFhZGQgICAgPHN0cmluZz4gICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSByZXF16nRlCiAgIHJlcXJlcCAgICA8c2VhcmNoPiA8cmVwbGFjZT4gICBwb3VyIG1vZGlmaWVyIGxhIHJlcXXqdGUKICAgcmVxaXJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxZGVsICAgIDxzZWFyY2g+ICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSByZXF16nRlCiAgIHJlcWlkZWwgICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWFsbG93ICA8c2VhcmNoPiAgICAgICAgICAgICBhdXRvcmlzZXIgbGEgcmVxdep0ZSBzaSB1biBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByZXFpYWxsb3cgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFkZW55ICAgPHNlYXJjaD4gICAgICAgICAgICAgaW50ZXJkaXJlIGxhIHJlcXXqdGUgc2kgdW4gZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcmVxaWRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxcGFzcyAgIDxzZWFyY2g+ICAgICAgICAgICAgIGluaGliZSBjZXMgYWN0aW9ucyBzdXIgbGVzIGVuLXTqdGVzIHZhbGlkYW50IDxzZWFyY2g+CiAgIHJlcWlwYXNzICA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcXRhcnBpdCA8c2VhcmNoPiAgICAgICAgICAgICBibG9xdWVyIGV0IG1haW50ZW5pciB1bmUgcmVxdWVzdCB2YWxpZGFudCA8c2VhcmNoPgogICByZXFpdGFycGl0IDxzZWFyY2g+ICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwoKICAgcnNwYWRkICAgPHN0cmluZz4gICAgICAgICAgICAgIHBvdXIgYWpvdXRlciB1biBlbi106nRlIGRhbnMgbGEgculwb25zZQogICByc3ByZXAgICA8c2VhcmNoPiA8cmVwbGFjZT4gICAgcG91ciBtb2RpZmllciBsYSBy6XBvbnNlCiAgIHJzcGlyZXAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJzcGRlbCAgIDxzZWFyY2g+ICAgICAgICAgICAgICBwb3VyIHN1cHByaW1lciB1biBlbi106nRlIGRhbnMgbGEgculwb25zZQogICByc3BpZGVsICA8c2VhcmNoPiAgICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByc3BkZW55ICA8c2VhcmNoPiAgICAgICAgICAgICAgcmVtcGxhY2UgbGEgculwb25zZSBwYXIgdW4gSFRUUCA1MDIgc2kgdW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuLXTqdGUgdmFsaWRlIDxzZWFyY2g+CiAgIHJzcGlkZW55IDxzZWFyY2g+ICAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCgoKPHNlYXJjaD4gZXN0IHVuZSBleHByZXNzaW9uIHLpZ3VsaehyZSBjb21wYXRpYmxlIFBPU0lYIHJlZ2V4cCBzdXBwb3J0YW50IGxlCmdyb3VwYWdlIHBhciBwYXJlbnRo6HNlcyAoc2FucyBsZXMgJ1wnKS4gTGVzIGVzcGFjZXMgZXQgYXV0cmVzIHPpcGFyYXRldXJzCmRvaXZlbnQg6nRyZXMgcHLpY+lk6XMgZCd1biAnXCcgcG91ciBuZSBwYXMg6nRyZSBjb25mb25kdXMgYXZlYyBsYSBmaW4gZGUgbGEKY2hh7m5lLiBEZSBwbHVzLCBjZXJ0YWlucyBjYXJhY3TocmVzIHNw6WNpYXV4IHBldXZlbnQg6nRyZSBwculj6WTpcyBkJ3VuCmJhY2tzbGFjaCAoJ1wnKSA6CgogIFx0ICAgcG91ciB1bmUgdGFidWxhdGlvbgogIFxyICAgcG91ciB1biByZXRvdXIgY2hhcnJpb3QKICBcbiAgIHBvdXIgdW4gc2F1dCBkZSBsaWduZQogIFwgICAgcG91ciBkaWZm6XJlbmNpZXIgdW4gZXNwYWNlIGQndW4gc+lwYXJhdGV1cgogIFwjICAgcG91ciBkaWZm6XJlbmNpZXIgdW4gZGnoc2UgZCd1biBjb21tZW50YWlyZQogIFxcICAgcG91ciB1dGlsaXNlciB1biBiYWNrc2xhc2ggZGFucyBsYSByZWdleAogIFxcXFwgcG91ciB1dGlsaXNlciB1biBiYWNrc2xhc2ggZGFucyBsZSB0ZXh0ZQogIFx4WFggcG91ciB1biBjYXJhY3TocmUgc3DpY2lmaXF1ZSBYWCAoY29tbWUgZW4gQykKCgo8cmVwbGFjZT4gY29udGllbnQgbGEgY2hh7m5lIHJlbXBsYedhbnQgbGEgcG9ydGlvbiB26XJpZmnpZSBwYXIgbCdleHByZXNzaW9uLgpFbGxlIHBldXQgaW5jbHVyZSBsZXMgY2FyYWN06HJlcyBzcOljaWF1eCBjaS1kZXNzdXMsIGZhaXJlIHLpZulyZW5jZSDgIHVuCmdyb3VwZSBk6WxpbWl06SBwYXIgZGVzIHBhcmVudGjoc2VzIGRhbnMgbCdleHByZXNzaW9uIHLpZ3VsaehyZSwgcGFyIHNhCnBvc2l0aW9uIG51belyYWxlLiBMZXMgcG9zaXRpb25zIHZvbnQgZGUgMCDgIDksIGV0IHNvbnQgY29k6WVzIHBhciB1biAnXCcKc3VpdmkgZHUgY2hpZmZyZSBk6XNpcukgKDAgZOlzaWduYW50IGxhIGxpZ25lIGNvbXBs6HRlKS4gSWwgZXN0IOlnYWxlbWVudApwb3NzaWJsZSBkJ2luc+lyZXIgdW4gY2FyYWN06HJlIG5vbiBpbXByaW1hYmxlICh1dGlsZSBwb3VyIGxlIHNhdXQgZGUgbGlnbmUpCmluc2NyaXZhbnQgJ1x4JyBzdWl2aSBkdSBjb2RlIGhleGFk6WNpbWFsIGRlIGNlIGNhcmFjdOhyZSAoY29tbWUgZW4gQykuCgo8c3RyaW5nPiByZXBy6XNlbnRlIHVuZSBjaGHubmUgcXVpIHNlcmEgYWpvdXTpZSBzeXN06W1hdGlxdWVtZW50IGFwcuhzIGxhCmRlcm5p6HJlIGxpZ25lIGQnZW4tdOp0ZS4KClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCiAgLSBsYSBwcmVtaehyZSBsaWduZSBkZSBsYSByZXF16nRlIGV0IGNlbGxlIGRlIGxhIHLpcG9uc2Ugc29udCB0cmFpdOllcyBjb21tZQogICAgZGVzIGVuLXTqdGVzLCBjZSBxdWkgcGVybWV0IGRlIHLp6WNyaXJlIGRlcyBVUkwgZXQgZGVzIGNvZGVzIGQnZXJyZXVyLgogIC0gJ3JlcXJlcCcgZXN0IGwn6XF1aXZhbGVudCBkZSAnY2xpZXhwJyBlbiB2ZXJzaW9uIDEuMCwgZXQgJ3JzcHJlcCcgY2VsdWkgZGUKICAgICdzcnZleHAnLiBDZXMgbm9tcyBzb250IHRvdWpvdXJzIHN1cHBvcnTpcyBtYWlzIGTpY29uc2VpbGzpcy4KICAtIHBvdXIgZGVzIHJhaXNvbnMgZGUgcGVyZm9ybWFuY2VzLCBsZSBub21icmUgdG90YWwgZGUgY2FyYWN06HJlcyBham91dOlzIHN1cgogICAgdW5lIHJlcXXqdGUgb3UgdW5lIHLpcG9uc2UgZXN0IGxpbWl06SDgIDQwOTYgZGVwdWlzIGxhIHZlcnNpb24gMS4xLjUgKGNldHRlCiAgICBsaW1pdGUg6XRhaXQg4CAyNTYgYXVwYXJhdmFudCkuIENldHRlIHZhbGV1ciBlc3QgbW9kaWZpYWJsZSBkYW5zIGxlIGNvZGUuCiAgICBQb3VyIHVuIHVzYWdlIHRlbXBvcmFpcmUsIG9uIHBldXQgZ2FnbmVyIGRlIGxhIHBsYWNlIGVuIHN1cHByaW1hbnQgcXVlbHF1ZXMKICAgIGVuLXTqdGVzIGludXRpbGVzIGF2YW50IGxlcyBham91dHMuCiAgLSB1bmUgcmVxdep0ZSBibG9xdellIHByb2R1aXJhIHVuZSBy6XBvbnNlICJIVFRQIDQwMyBmb3JiaWRkZW4iIHRhbmRpcyBxdSd1bmUKICAgIHLpcG9uc2UgYmxvcXXpZSBwcm9kdWlyYSB1bmUgculwb25zZSAiSFRUUCA1MDIgQmFkIGdhdGV3YXkiLgogIC0gdW5lIHJlcXXqdGUgYmxvcXXpZSBwYXIgJ3JlcXRhcnBpdCcgc2VyYSBtYWludGVudWUgcGVuZGFudCB1bmUgZHVy6WUg6WdhbGUKICAgIGF1IHBhcmFt6HRyZSAnY29udGltZW91dCcsIG91IGp1c3F1J+AgbCdhYmFuZG9uIGR1IGNsaWVudC4gUmllbiBuZSBzZXJhCiAgICBlbnZveekgYXUgc2VydmV1ci4gTG9yc3F1ZSBsZSB0ZW1wcyBhbGxvdekgZXhwaXJlLCBsZSBwcm94eSBy6XBvbmRyYSBhdmVjCiAgICB1bmUgculwb25zZSAiNTAwIHNlcnZlciBlcnJvciIgZGUgc29ydGUgcXVlIGwnYXR0YXF1YW50IG5lIHN1c3BlY3RlIHBhcwogICAgcXUnaWwgYWl0IOl06SBibG9xdekuIExlcyBsb2dzIHJhcHBvcnRlcm9udCBhdXNzaSBjZSBjb2RlIDUwMCwgbWFpcyBsZXMKICAgIGZsYWdzIGRlIHRlcm1pbmFpc29uIGluZGlxdWVyb250ICJQVCIuCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgICAgICAjIyMjIyMgYSBmZXcgZXhhbXBsZXMgIyMjIyMjCgogICAgICAgICMgcmV3cml0ZSAnb25saW5lLmZyJyBpbnN0ZWFkIG9mICdmcmVlLmZyJyBmb3IgR0VUIGFuZCBQT1NUIHJlcXVlc3RzCiAgICAgICAgcmVxcmVwICAgICAgICBeKEdFVFwgLiopKC5mcmVlLmZyKSguKikgXDEub25saW5lLmZyXDMKICAgICAgICByZXFyZXAgICAgICAgIF4oUE9TVFwgLiopKC5mcmVlLmZyKSguKikgXDEub25saW5lLmZyXDMKCiAgICAgICAgIyBmb3JjZSBwcm94eSBjb25uZWN0aW9ucyB0byBjbG9zZQogICAgICAgIHJlcWlyZXAgICAgICAgIF5Qcm94eS1Db25uZWN0aW9uOi4qICAgICAgICBQcm94eS1Db25uZWN0aW9uOlwgY2xvc2UKICAgICAgICAjIHJld3JpdGUgbG9jYXRpb25zCiAgICAgICAgcnNwaXJlcCAgICAgICAgXihMb2NhdGlvbjpcICkoW146XSo6Ly9bXi9dKikoLiopIFwxXDMKCiAgICAgICAgIyMjIyMjIEEgZnVsbCBjb25maWd1cmF0aW9uIGJlaW5nIHVzZWQgb24gcHJvZHVjdGlvbiAjIyMjIyMKCiAgICAgICAgIyBFdmVyeSBoZWFkZXIgc2hvdWxkIGVuZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgb25lIHNwYWNlLgogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKltcIF0qJAoKICAgICAgICAjIGJsb2NrIEFwYWNoZSBjaHVuayBleHBsb2l0CiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5UcmFuc2Zlci1FbmNvZGluZzpbXCBdKmNodW5rZWQKICAgICAgICByZXFpZGVueSAgICAgICAgXkhvc3Q6XCBhcGFjaGUtCgogICAgICAgICMgYmxvY2sgYW5ub3lpbmcgd29ybXMgdGhhdCBmaWxsIHRoZSBsb2dzLi4uCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKihcLnwlMmUpKFwufCUyZSkoJTJmfCU1Y3wvfFxcXFwpCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAoW15cIF0qXCBbXlwgXSpcIHwuKiUwMCkKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qPHNjcmlwdAogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLiovKHJvb3RcLmV4ZVw/fGNtZFwuZXhlXD98ZGVmYXVsdFwuaWRhXD8pCgoJIyB0YXJwaXQgYXR0YWNrcyBvbiB0aGUgbG9naW4gcGFnZS4KICAgICAgICByZXF0YXJwaXQgICAgIF5bXjpcIF0qXCAuKlwucGhwP2xvZ2luPVteMC05XQoKICAgICAgICAjIGFsbG93IG90aGVyIHN5bnRhY3RpY2FsbHkgdmFsaWQgcmVxdWVzdHMsIGFuZCBibG9jayBhbnkgb3RoZXIgbWV0aG9kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF4oR0VUfFBPU1R8SEVBRHxPUFRJT05TKVwgLy4qXCBIVFRQLzFcLlswMV0kCiAgICAgICAgcmVxaXBhc3MgICAgICAgIF5PUFRJT05TXCBcXCpcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIAoKICAgICAgICAjIGZvcmNlIGNvbm5lY3Rpb246Y2xvc2UsIHRodXMgZGlzYWJsaW5nIEhUVFAga2VlcC1hbGl2ZQogICAgICAgIG9wdGlvbiAgICAgICAgICAgICAgICBodHRwY2xvcwoKICAgICAgICAjIGNoYW5nZSB0aGUgc2VydmVyIG5hbWUKICAgICAgICByc3BpZGVsICAgICAgICAgXlNlcnZlcjpcIAogICAgICAgIHJzcGFkZCAgICAgICAgICBTZXJ2ZXI6XCBGb3JtaWx1eC8wLjEuOAoKCkRlIHBsdXMsIGwnb3B0aW9uICdmb3J3YXJkZm9yJyBham91dGUgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBkYW5zIHVuIGNoYW1wCidYLUZvcndhcmRlZC1Gb3InIGRlIGxhIHJlcXXqdGUsIGNlIHF1aSBwZXJtZXQg4CB1biBzZXJ2ZXVyIHdlYiBmaW5hbCBkZQpjb25uYe50cmUgbCdhZHJlc3NlIElQIGR1IGNsaWVudCBpbml0aWFsLiBEZXB1aXMgbGEgdmVyc2lvbiAxLjMuOCwgaWwgZXN0CnBvc3NpYmxlIGRlIHBy6WNpc2VyIGxlIG1vdC1jbOkgImV4Y2VwdCIgc3VpdmkgZCd1bmUgYWRyZXNzZSBvdSB1biBy6XNlYXUKSVAgc291cmNlIHBvdXIgbGVxdWVsIGwnZW506nRlIG5lIHNlcmEgcGFzIGFqb3V06S4gQydlc3QgdHLocyBwcmF0aXF1ZSBkYW5zIGxlCmNhcyBv+SB1biBhdXRyZSByZXZlcnNlLXByb3h5IGFqb3V0YW50IGTpauAgbCdlbnTqdGUgZXN0IGluc3RhbGzpIHN1ciBsYSBt6m1lCm1hY2hpbmUgb3UgZGFucyB1bmUgRE1aIGNvbm51ZS4gTGUgY2FzIGxlIHBsdXMgZnLpcXVlbnQgZXN0IGxp6SDgIGwndXRpbGlzYXRpb24KZGUgc3R1bm5lbCBlbiBsb2NhbC4KCkVuZmluLCBsJ29wdGlvbiAnaHR0cGNsb3NlJyBhcHBhcnVlIGRhbnMgbGEgdmVyc2lvbiAxLjEuMjgvMS4yLjEgc3VwcHJpbWUgdG91dAplbi106nRlIGRlIHR5cGUgJ0Nvbm5lY3Rpb246JyBldCBham91dGUgJ0Nvbm5lY3Rpb246IGNsb3NlJyBkYW5zIGxlcyBkZXV4IHNlbnMuCkNlY2kgc2ltcGxpZmllIGxhIGTpc2FjdGl2YXRpb24gZHUga2VlcC1hbGl2ZSBIVFRQIHBhciByYXBwb3J0IOAgbCdhbmNpZW5uZQpt6XRob2RlIGltcGxpcXVhbnQgNCBy6GdsZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgbG9nICBnbG9iYWwKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIG9wdGlvbiBmb3J3YXJkZm9yIGV4Y2VwdCAxMjcuMC4wLjEvOAogICAgICAgIG9wdGlvbiBodHRwY2xvc2UKCk5vdG9ucyBxdWUgY2VydGFpbnMgc2VydmV1cnMgSFRUUCBuZSByZWZlcm1lbnQgcGFzIG7pY2Vzc2FpcmVtZW50IGxhIHNlc3Npb24KVENQIGVuIGZpbiBkZSB0cmFpdGVtZW50IGxvcnNxdSdpbHMgcmXnb2l2ZW50IHVuIGVudOp0ZSAnQ29ubmVjdGlvbjogY2xvc2UnLApjZSBxdWkgc2UgdHJhZHVpdCBwYXIgZGVzIGdyYW5kcyBub21icmVzIGRlIHNlc3Npb25zIOl0YWJsaWVzIGV0IGRlcyB0ZW1wcwpnbG9iYXV4IHRy6HMgbG9uZ3Mgc3VyIGxlcyByZXF16nRlcy4gUG91ciBjb250b3VybmVyIGNlIHByb2Js6G1lLCBsYSB2ZXJzaW9uCjEuMi45IGFwcG9ydGUgdW5lIG5vdXZlbGxlIG9wdGlvbiAnZm9yY2VjbG9zZScgcXVpIHJlZmVybWUgbGEgY29ubmV4aW9uIHNvcnRhbnQKdmVycyBsZSBzZXJ2ZXVyIGTocyBxdSdpbCBjb21tZW5jZSDgIHLpcG9uZHJlIGV0IHNldWxlbWVudCBzaSBsZSB0YW1wb24gZGUKcmVxdep0ZSBlc3QgdmlkZS4gQXR0ZW50aW9uIHRvdXRlZm9pcyDgIG5lIFBBUyB1dGlsaXNlciBjZXR0ZSBvcHRpb24gc2kgZGVzCm3pdGhvZGVzIENPTk5FQ1Qgc29udCBhdHRlbmR1ZXMgZW50cmUgbGUgY2xpZW50IGV0IGxlIHNlcnZldXIuIEwnb3B0aW9uCidmb3JjZWNsb3NlJyBpbXBsaXF1ZSBsJ29wdGlvbiAnaHR0cGNsb3NlJy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgIGdsb2JhbAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IKICAgICAgICBvcHRpb24gZm9yY2VjbG9zZQoKCjQuNCkgUulwYXJ0aXRpb24gYXZlYyBwZXJzaXN0ZW5jZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgY29tYmluYWlzb24gZGUgbCdpbnNlcnRpb24gZGUgY29va2llIGF2ZWMgbGEgculwYXJ0aXRpb24gZGUgY2hhcmdlIGludGVybmUKcGVybWV0IGQnYXNzdXJlciB1bmUgcGVyc2lzdGVuY2UgZGFucyBsZXMgc2Vzc2lvbnMgSFRUUCBkJ3VuZSBtYW5p6HJlCnByYXRpcXVlbWVudCB0cmFuc3BhcmVudGUgcG91ciBsZXMgYXBwbGljYXRpb25zLiBMZSBwcmluY2lwZSBlc3Qgc2ltcGxlIDoKICAtIGF0dHJpYnVlciB1bmUgdmFsZXVyIGQndW4gY29va2llIOAgY2hhcXVlIHNlcnZldXIKICAtIGVmZmVjdHVlciB1bmUgculwYXJ0aXRpb24gaW50ZXJuZQogIC0gaW5z6XJlciB1biBjb29raWUgZGFucyBsZXMgculwb25zZXMgaXNzdWVzIGQndW5lIHLpcGFydGl0aW9uIHVuaXF1ZW1lbnQsCiAgICBldCBmYWlyZSBlbiBzb3J0ZSBxdWUgZGVzIGNhY2hlcyBuZSBt6W1vcmlzZW50IHBhcyBjZSBjb29raWUuCiAgLSBjYWNoZXIgY2UgY29va2llIOAgbCdhcHBsaWNhdGlvbiBsb3JzIGRlcyByZXF16nRlcyB1bHTpcmlldXJlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrCgpMJ2F1dHJlIHNvbHV0aW9uIGFwcG9ydOllIHBhciBsZXMgdmVyc2lvbnMgMS4xLjMwIGV0IDEuMi4zIGVzdCBkZSBy6XV0aWxpc2VyIHVuCmNvb2tpZSBlbiBwcm92ZW5hbmNlIGR1IHNlcnZldXIgZXQgZGUgbHVpIHBy6WZpeGVyIGwnaWRlbnRpZmlhbnQgZHUgc2VydmV1ci4KRGFucyBjZSBjYXMsIG5lIHBhcyBvdWJsaWVyIGRlIGZvcmNlciBsZSBtb2RlICJodHRwY2xvc2UiIHBvdXIgZW1w6mNoZXIgbGUKY2xpZW50IGV0IGxlIHNlcnZldXIgZGUgdHJhdmFpbGxlciBlbiBtb2RlICJrZWVwLWFsaXZlIiBhZmluIHF1ZSBsZSBwcm94eQpwdWlzc2UgY29ycmlnZXIgbGUgbm9tIGR1IGNvb2tpZSBkYW5zIHRvdXRlcyBsZXMgZnV0dXJlcyByZXF16nRlcy4KCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgbW9kZSBodHRwCiAgICAgICBjb29raWUgSlNFU1NJT05JRCBwcmVmaXgKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNydjEgY2hlY2sKICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzcnYyIGNoZWNrCiAgICAgICBvcHRpb24gaHR0cGNsb3NlCgoKNC41KSBQcm90ZWN0aW9uIGNvbnRyZSBsZXMgZnVpdGVzIGQnaW5mb3JtYXRpb25zIGR1IHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsZXMgdmVyc2lvbnMgMS4xLjI4IGV0IDEuMi4xLCB1bmUgbm91dmVsbGUgb3B0aW9uICdjaGVja2NhY2hlJyBhIOl06QpjcunpZS4gRWxsZSBzZXJ0IOAgaW5zcGVjdGVyIG1pbnV0aWV1c2VtZW50IGxlcyBlbi106nRlcyAnQ2FjaGUtY29udHJvbCcsCidQcmFnbWEnLCBldCAnU2V0LWNvb2tpZScgZGFucyBsZXMgculwb25zZXMgc2VydmV1ciBwb3VyIGTpdGVybWluZXIgcydpbCB5IGEKdW4gcmlzcXVlIGRlIGNhY2hlciB1biBjb29raWUgc3VyIHVuIHByb3h5IGP0dOkgY2xpZW50LiBRdWFuZCBjZXR0ZSBvcHRpb24gZXN0CmFjdGl26WUsIGxlcyBzZXVsZXMgculwb25zZXMgcXVpIHBldXZlbnQg6nRyZSByZXRvdXJu6WVzIGF1IGNsaWVudCBzb250IDoKICAtIHRvdXRlcyBjZWxsZXMgcXVpIG4nb250IHBhcyBkJ2VuLXTqdGUgJ1NldC1jb29raWUnIDsKICAtIHRvdXRlcyBjZWxsZXMgcXVpIG9udCB1biBjb2RlIGRlIHJldG91ciBhdXRyZSBxdWUgMjAwLCAyMDMsIDIwNiwgMzAwLCAzMDEsIAogICAgNDEwLCBzYXVmIHNpIGxlIHNlcnZldXIgYSBwb3NpdGlvbm7pIHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHB1YmxpYycgOwogIC0gY2VsbGVzIHF1aSBmb250IHN1aXRlIOAgdW5lIHJlcXXqdGUgUE9TVCwgc2F1ZiBzaSBsZSBzZXJ2ZXVyIGEgcG9zaXRpb25u6QogICAgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHVibGljJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdQcmFnbWE6IG5vLWNhY2hlJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwcml2YXRlJyA7IAogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tc3RvcmUnIDsgCiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBtYXgtYWdlPTAnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHMtbWF4YWdlPTAnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLWNhY2hlJyA7CiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1jYWNoZT0ic2V0LWNvb2tpZSInIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLWNhY2hlPSJzZXQtY29va2llLCcKICAgIChhdXRvcmlzYW50IGQnYXV0cmVzIGNoYW1wcyBhcHLocyBzZXQtY29va2llKS4KClNpIHVuZSBy6XBvbnNlIG5lIHJlc3BlY3RlIHBhcyBjZXMgcHLpLXJlcXVpcywgYWxvcnMgZWxsZSBzZXJhIGJsb3F16WUgZGUgbGEKbeptZSBtYW5p6HJlIHF1ZSBzJ2lsIHMnYWdpc3NhaXQgZCd1biBmaWx0cmUgJ3JzcGRlbnknLCBhdmVjIGVuIHJldG91ciB1bgptZXNzYWdlICJIVFRQIDUwMiBiYWQgZ2F0ZXdheSIuIEwn6XRhdCBkZSBzZXNzaW9uIG1vbnRyZSAiUEgtLSIgY2UgcXVpIHZldXQKZGlyZSBxdWUgYydlc3QgbGUgcHJveHkgcXVpIGEgYmxvcXXpIGxhIHLpcG9uc2UgZHVyYW50IGxlIHRyYWl0ZW1lbnQgZGVzCmVuLXTqdGVzLiBEZSBwbHVzLCB1biBtZXNzYWdlIGQnYWxlcnRlIHNlcmEgZW52b3npIGRhbnMgbGVzIGxvZ3MgZGUgc29ydGUgcXVlCmwnYWRtaW5pc3RyYXRldXIgc2FjaGUgcXUnaWwgeSBhIHVuZSBhY3Rpb24gY29ycmVjdHJpY2Ug4CBlbnRyZXByZW5kcmUuCgo0LjYpIFBlcnNvbmFsaXNhdGlvbiBkZXMgZXJyZXVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDZXJ0YWluZXMgc2l0dWF0aW9ucyBjb25kdWlzZW50IOAgcmV0b3VybmVyIHVuZSBlcnJldXIgSFRUUCBhdSBjbGllbnQgOgogIC0gcmVxdep0ZSBpbnZhbGlkZSBvdSB0cm9wIGxvbmd1ZSA9PiBjb2RlIEhUVFAgNDAwCiAgLSByZXF16nRlIG1ldHRhbnQgdHJvcCBkZSB0ZW1wcyDgIHZlbmlyID0+IGNvZGUgSFRUUCA0MDgKICAtIHJlcXXqdGUgaW50ZXJkaXRlIChibG9xdellIHBhciB1biByZXFpZGVueSkgPT4gY29kZSBIVFRQIDQwMwogIC0gZXJyZXVyIGludGVybmUgZHUgcHJveHkgPT4gY29kZSBIVFRQIDUwMAogIC0gbGUgc2VydmV1ciBhIHJldG91cm7pIHVuZSBy6XBvbnNlIGluY29tcGzodGUgb3UgaW52YWxpZGUgPT4gY29kZSBIVFRQIDUwMgogIC0gYXVjdW4gc2VydmV1ciBkaXNwb25pYmxlIHBvdXIgY2V0dGUgcmVxdep0ZSA9PiBjb2RlIEhUVFAgNTAzCiAgLSBsZSBzZXJ2ZXVyIG4nYSBwYXMgculwb25kdSBkYW5zIGxlIHRlbXBzIGltcGFydGkgPT4gY29kZSBIVFRQIDUwNAoKVW4gbWVzc2FnZSBkJ2VycmV1ciBzdWNjaW50IHRpcukgZGUgbGEgUkZDIGFjY29tcGFnbmUgY2VzIGNvZGVzIGRlIHJldG91ci4KQ2VwZW5kYW50LCBlbiBmb25jdGlvbiBkdSB0eXBlIGRlIGNsaWVudOhsZSwgb24gcGV1dCBwculm6XJlciByZXRvdXJuZXIgZGVzCnBhZ2VzIHBlcnNvbm5hbGlz6WVzLiBDZWNpIGVzdCBwb3NzaWJsZSBkZSBkZXV4IG1hbmnocmVzLCBsJ3VuZSByZXBvc2FudCBzdXIKdW5lIHJlZGlyZWN0aW9uIHZlcnMgdW4gc2VydmV1ciBjb25udSwgZXQgbCdhdXRyZSBjb25zaXN0YW50IOAgcmV0b3VybmVyIHVuCmZpY2hpZXIgbG9jYWwuCgo0LjYuMSkgUmVkaXJlY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tClVuZSByZWRpcmVjdGlvbiBkJ2VycmV1ciBlc3QgYXNzdXLpZSBwYXIgbGUgYmlhaXMgZGUgbGEgY29tbWFuZGUgImVycm9ybG9jIiA6CgogICAgZXJyb3Jsb2MgPGNvZGVfSFRUUD4gPGxvY2F0aW9uPgoKQXUgbGlldSBkZSBn6W7pcmVyIHVuZSBlcnJldXIgSFRUUCA8Y29kZV9IVFRQPiBwYXJtaSBsZXMgY29kZXMgY2l06XMgY2ktZGVzc3VzLApsZSBwcm94eSBn6W7ocmVyYSB1biBjb2RlIGRlIHJlZGlyZWN0aW9uIHRlbXBvcmFpcmUgKEhUVFAgMzAyKSB2ZXJzIGwnYWRyZXNzZQpkJ3VuZSBwYWdlIHBy6WNpc+llIGRhbnMgPGxvY2F0aW9uPi4gQ2V0dGUgYWRyZXNzZSBwZXV0IOp0cmUgcmVsYXRpdmUgYXUgc2l0ZSwKb3UgYWJzb2x1ZS4gQ29tbWUgY2V0dGUgculwb25zZSBlc3QgdHJh7nTpZSBwYXIgbGUgbmF2aWdhdGV1ciBkdSBjbGllbnQKbHVpLW3qbWUsIGlsIGVzdCBpbmRpc3BlbnNhYmxlIHF1ZSBsJ2FkcmVzc2UgZm91cm5pZSBsdWkgc29pdCBhY2Nlc3NpYmxlLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgICBlcnJvcmxvYyA0MDAgL2JhZHJlcXVlc3QuaHRtbAogICAgICAgIGVycm9ybG9jIDQwMyAvZm9yYmlkZGVuLmh0bWwKICAgICAgICBlcnJvcmxvYyA0MDggL3Rvb2xvbmcuaHRtbAogICAgICAgIGVycm9ybG9jIDUwMCBodHRwOi8vaGFwcm94eS5kb21haW4ubmV0L2J1Z3JlcG9ydC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAyIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAzIGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTA0IGh0dHA6Ly8xOTIuMTY4LjExNC41OC9lcnJvcjUweC5odG1sCgpOb3RlOiBsYSBSRkMyNjE2IHN0aXB1bGUgcXUndW4gY2xpZW50IGRvaXQgcul1dGlsaXNlciBsYSBt6m1lIG3pdGhvZGUgcG91cgphY2PpZGVyIOAgbCdVUkwgZGUgcmVkaXJlY3Rpb24gcXVlIGNlbGxlIHF1aSBsJ2EgcmV0b3VybullLCBjZSBxdWkgcG9zZSBkZXMKcHJvYmzobWVzIGF2ZWMgbGVzIHJlcXXqdGVzIFBPU1QuIExlIGNvZGUgZGUgcmV0b3VyIDMwMyBhIOl06SBjcunpIGV4cHLocyBwb3VyCnLpZ2xlciBjZSBwcm9ibOhtZSwgaW5kaXF1YW50IGF1IGNsaWVudCBxdSdpbCBkb2l0IGFjY+lkZXIg4CBsJ1VSTCByZXRvdXJu6WUKZGFucyBsZSBjaGFtcCBMb2NhdGlvbiBhdmVjIGxhIG3pdGhvZGUgR0VUIHVuaXF1ZW1lbnQuIFNldWxlbWVudCwgY2VydGFpbnMKbmF2aWdhdGV1cnMgYW506XJpZXVycyDgIEhUVFAvMS4xIG5lIGNvbm5haXNzZW50IHBhcyBjZSBjb2RlIGRlIHJldG91ci4gRGUKcGx1cywgbGEgcGx1cGFydCBkZXMgbmF2aWdhdGV1cnMgc2UgY29tcG9ydGVudCBk6WrgIGF2ZWMgbGUgY29kZSAzMDIgY29tbWUgaWxzCmRldnJhaWVudCBsZSBmYWlyZSBhdmVjIGxlIDMwMy4gRG9uYywgZGFucyBsZSBidXQgZGUgbGFpc3NlciBsZSBjaG9peCDgCmwndXRpbGlzYXRldXIsIGxlcyB2ZXJzaW9ucyAxLjEuMzEgZXQgMS4yLjUgYXBwb3J0ZW50IGRldXggbm91dmVsbGVzIGNvbW1hbmRlcwp2aXNhbnQg4CByZW1wbGFjZXIgJ2Vycm9ybG9jJyA6ICdlcnJvcmxvYzMwMicgZXQgJ2Vycm9ybG9jMzAzJy4KCkxldXIgdXNhZ2Ugbm9uIGFtYmln/CBlc3QgcmVjb21tYW5k6SDgIGxhIHBsYWNlIGRlIGxhIGNvbW1hbmRlICdlcnJvcmxvYycgKHF1aQp1dGlsaXNlIHRvdWpvdXJzIDMwMikuIERhbnMgbGUgZG91dGUsIHBy6WbpcmV6IGwndXRpbGlzYXRpb24gZGUgJ2Vycm9ybG9jMzAzJwpk6HMgcXVlIHZvdXMgc2F2ZXogcXVlIHZvcyBjbGllbnRzIHN1cHBvcnRlbnQgbGUgY29kZSBkZSByZXRvdXIgSFRUUCAzMDMuCgo0LjYuMikgRmljaGllcnMgbG9jYXV4Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUGFyZm9pcyBpbCBlc3Qgc291aGFpdGFibGUgZGUgY2hhbmdlciBsJ2VycmV1ciByZXRvdXJu6WUgc2FucyByZWNvdXJpciDgIGRlcwpyZWRpcmVjdGlvbnMuIExhIHNlY29uZGUgbel0aG9kZSBjb25zaXN0ZSDgIGNoYXJnZXIgZGVzIGZpY2hpZXJzIGxvY2F1eCBsb3JzCmR1IGTpbWFycmFnZSBldCDgIGxlcyBlbnZveWVyIGVuIGd1aXNlIGRlIHB1ciBjb250ZW51IEhUVFAgZW4gY2FzIGQnZXJyZXVyLgpDJ2VzdCBjZSBxdWUgZmFpdCBsZSBtb3QgY2zpICdlcnJvcmZpbGUnLgoKQXR0ZW50aW9uLCBpbCB5IGEgZGVzIHBp6GdlcyDgIHByZW5kcmUgZW4gY29tcHRlIDoKIC0gbGVzIGZpY2hpZXJzIHNvbnQgY2hhcmfpcyBkdXJhbnQgbCdhbmFseXNlIGRlIGxhIGNvbmZpZ3VyYXRpb24sIGF2YW50IGRlCiAgIGZhaXJlIGxlIGNocm9vdCgpLiBEb25jIGlscyBzb250IHJlbGF0aWZzIGF1IHN5c3TobWUgZGUgZmljaGllcnMgcullbC4gUG91cgogICBjZXR0ZSByYWlzb24sIGlsIGVzdCByZWNvbW1hbmTpIGRlIHRvdWpvdXJzIHBhc3NlciB1biBjaGVtaW4gYWJzb2x1IHZlcnMgY2VzCiAgIGZpY2hpZXJzLgoKIC0gbGUgY29udGVudSBkZSBjZXMgZmljaGllcnMgbidlc3QgcGFzIGR1IEhUTUwgbWFpcyB2cmFpbWVudCBkdSBwcm90b2NvbGUgSFRUUAogICBhdmVjIHBvdGVudGllbGxlbWVudCB1biBjb3JwcyBIVE1MLiBEb25jIGxhIHByZW1p6HJlIGxpZ25lIGV0IGxlcyBlbi106nRlcwogICBzb250IG9ibGlnYXRvaXJlcy4gSWTpYWxlbWVudCwgY2hhcXVlIGxpZ25lIGRhbnMgbGEgcGFydGllIEhUVFAgZGV2cmFpdCBzZQogICB0ZXJtaW5lciBwYXIgdW4gQ1ItTEYgcG91ciB1biBtYXhpbXVtIGRlIGNvbXBhdGliaWxpdOkuCgogLSBsZXMgculwb25zZXMgc29udCBsaW1pdOllcyDgIHVuZSB0YWlsbGUgZGUgYnVmZmVyIChCVUZTSVpFKSwgZ+lu6XJhbGVtZW50IDgKICAgb3UgMTYga28uCgogLSBsZXMgculwb25zZXMgbmUgZGV2cmFpZW50IHBhcyBpbmNsdXJlIGRlIHLpZulyZW5jZXMgYXV4IHNlcnZldXJzIGxvY2F1eCwKICAgYWZpbiBkZSBuZSBwYXMgcmlzcXVlciBkZSBjcullciBkZXMgYm91Y2xlcyBpbmZpbmllcyBzdXIgbGUgbmF2aWdhdGV1ciBkYW5zCiAgIGxlIGNhcyBkJ3VuZSBwYW5uZSBsb2NhbGUuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAgICAgZXJyb3JmaWxlIDQwMCAvZXRjL2hhcHJveHkvZXJyb3JmaWxlcy80MDBiYWRyZXEuaHR0cAogICAgICAgIGVycm9yZmlsZSA0MDMgL2V0Yy9oYXByb3h5L2Vycm9yZmlsZXMvNDAzZm9yYmlkLmh0dHAKICAgICAgICBlcnJvcmZpbGUgNTAzIC9ldGMvaGFwcm94eS9lcnJvcmZpbGVzLzUwM3NvcnJ5Lmh0dHAKCgo0LjcpIENoYW5nZW1lbnQgZGVzIHZhbGV1cnMgcGFyIGTpZmF1dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxhIHZlcnNpb24gMS4xLjIyIGVzdCBhcHBhcnVlIGxhIG5vdGlvbiBkZSB2YWxldXJzIHBhciBk6WZhdXQsIGNlIHF1aQrpdml0ZSBkZSBy6XDpdGVyIGRlcyBwYXJhbeh0cmVzIGNvbW11bnMg4CB0b3V0ZXMgbGVzIGluc3RhbmNlcywgdGVscyBxdWUgbGVzCnRpbWVvdXRzLCBhZHJlc3NlcyBkZSBsb2csIG1vZGVzIGRlIGZvbmN0aW9ubmVtZW50LCBldGMuCgpMZXMgdmFsZXVycyBwYXIgZOlmYXV0IHNvbnQgcG9zaXRpb25u6WVzIGRhbnMgbGEgZGVybmnocmUgc2VjdGlvbiAnZGVmYXVsdHMnCnBy6WPpZGVudCBsJ2luc3RhbmNlIHF1aSBsZXMgdXRpbGlzZXJhLiBPbiBwZXV0IGRvbmMgbWV0dHJlIGF1dGFudCBkZSBzZWN0aW9ucwonZGVmYXVsdHMnIHF1ZSBsJ29uIHZldXQuIElsIGZhdXQganVzdGUgc2UgcmFwcGVsZXIgcXVlIGxhIHBy6XNlbmNlIGQndW5lIHRlbGxlCnNlY3Rpb24gaW1wbGlxdWUgdW5lIGFubnVsYXRpb24gZGUgdG91cyBsZXMgcGFyYW3odHJlcyBwYXIgZOlmYXV0IHBvc2l0aW9ubulzCnBy6WPpZGVtbWVudCwgZGFucyBsZSBidXQgZGUgbGVzIHJlbXBsYWNlci4KCkxhIHNlY3Rpb24gJ2RlZmF1bHRzJyB1dGlsaXNlIGxhIG3qbWUgc3ludGF4ZSBxdWUgbGEgc2VjdGlvbiAnbGlzdGVuJywgYXV4CnBhcmFt6HRyZXMgcHLocyBxdWkgbmUgc29udCBwYXMgc3VwcG9ydOlzLiBMZSBtb3QgY2zpICdkZWZhdWx0cycgcGV1dCBhY2NlcHRlcgp1biBjb21tZW50YWlyZSBlbiBndWlzZSBwYXJhbeh0cmUuCgpEYW5zIGxhIHZlcnNpb24gMS4xLjI4LzEuMi4xLCBzZXVscyBsZXMgcGFyYW3odHJlcyBzdWl2YW50cyBwZXV2ZW50IOp0cmUKcG9zaXRpb25u6XMgZGFucyB1bmUgc2VjdGlvbiAnZGVmYXVsdHMnIDoKICAtIGxvZyAobGUgcHJlbWllciBldCBsZSBzZWNvbmQpCiAgLSBtb2RlIHsgdGNwLCBodHRwLCBoZWFsdGggfQogIC0gYmFsYW5jZSB7IHJvdW5kcm9iaW4gfQogIC0gZGlzYWJsZWQgKHBvdXIgZOlzYWN0aXZlciB0b3V0ZXMgbGVzIGluc3RhbmNlcyBxdWkgc3VpdmVudCkKICAtIGVuYWJsZWQgKHBvdXIgZmFpcmUgbCdvcOlyYXRpb24gaW52ZXJzZSwgbWFpcyBjJ2VzdCBsZSBjYXMgcGFyIGTpZmF1dCkKICAtIGNvbnRpbWVvdXQsIGNsaXRpbWVvdXQsIHNydnRpbWVvdXQsIGdyYWNlLCByZXRyaWVzLCBtYXhjb25uCiAgLSBvcHRpb24geyByZWRpc3BhdGNoLCB0cmFuc3BhcmVudCwga2VlcGFsaXZlLCBmb3J3YXJkZm9yLCBsb2dhc2FwLCBodHRwY2xvc2UsCiAgICAgICAgICAgICBjaGVja2NhY2hlLCBodHRwbG9nLCB0Y3Bsb2csIGRvbnRsb2dudWxsLCBwZXJzaXN0LCBodHRwY2hrIH0KICAtIHJlZGlzcGF0Y2gsIHJlZGlzcCwgdHJhbnNwYXJlbnQsIHNvdXJjZSB7IGFkZHI6cG9ydCB9CiAgLSBjb29raWUsIGNhcHR1cmUKICAtIGVycm9ybG9jCgpOZSBzb250IHBhcyBzdXBwb3J06XMgZGFucyBjZXR0ZSB2ZXJzaW9uLCBsZXMgYWRyZXNzZXMgZGUgZGlzcGF0Y2ggZXQgbGVzCmNvbmZpZ3VyYXRpb25zIGRlIHNlcnZldXJzLCBhaW5zaSBxdWUgdG91cyBsZXMgZmlsdHJlcyBiYXPpcyBzdXIgbGVzCmV4cHJlc3Npb25zIHLpZ3VsaehyZXMgOgogIC0gZGlzcGF0Y2gsIHNlcnZlciwKICAtIHJlcSosIHJzcCoKCkVuZmluLCBpbCBuJ3kgYSBwYXMgbGUgbW95ZW4sIHBvdXIgbGUgbW9tZW50LCBkJ2ludmFsaWRlciB1biBwYXJhbeh0cmUgYm9vbOllbgpwb3NpdGlvbm7pIHBhciBk6WZhdXQuIERvbmMgc2kgdW5lIG9wdGlvbiBlc3Qgc3DpY2lmaellIGRhbnMgbGVzIHBhcmFt6HRyZXMgcGFyCmTpZmF1dCwgbGUgc2V1bCBtb3llbiBkZSBsYSBk6XNhY3RpdmVyIHBvdXIgdW5lIGluc3RhbmNlLCBjJ2VzdCBkZSBjaGFuZ2VyIGxlcwpwYXJhbeh0cmVzIHBhciBk6WZhdXQgYXZhbnQgbGEgZOljbGFyYXRpb24gZGUgbCdpbnN0YW5jZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgZGVmYXVsdHMgYXBwbGljYXRpb25zIFRDUAogICAgICAgIGxvZyBnbG9iYWwKICAgICAgICBtb2RlIHRjcAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNsaXRpbWVvdXQgMTgwMDAwCiAgICAgICAgc3J2dGltZW91dCAxODAwMDAKICAgICAgICBjb250aW1lb3V0IDQwMDAKICAgICAgICByZXRyaWVzIDMKICAgICAgICByZWRpc3BhdGNoCgogICAgbGlzdGVuIGFwcF90Y3AxIDEwLjAuMC4xOjYwMDAtNjA2MwogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgNjAwMCBpbnRlciAxMDAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAoKICAgIGxpc3RlbiBhcHBfdGNwMiAxMC4wLjAuMjo2MDAwLTYwNjMKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMSBjaGVjayBwb3J0IDYwMDAgaW50ZXIgMTAwMDAKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjIuMiBiYWNrdXAKICAgIAogICAgZGVmYXVsdHMgYXBwbGljYXRpb25zIEhUVFAKICAgICAgICBsb2cgZ2xvYmFsCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZm9yd2FyZGZvcgogICAgICAgIG9wdGlvbiBkb250bG9nbnVsbAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNsaXRpbWVvdXQgMjAwMDAKICAgICAgICBzcnZ0aW1lb3V0IDIwMDAwCiAgICAgICAgY29udGltZW91dCA0MDAwCiAgICAgICAgcmV0cmllcyAzCgogICAgbGlzdGVuIGFwcF9odHRwMSAxMC4wLjAuMTo4MC04MQogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBjYXB0dXJlIGNvb2tpZSB1c2VyaWQ9IGxlbiAxMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOis4MDAwIGNvb2tpZSBzcnYxIGNoZWNrIHBvcnQgODA4MCBpbnRlciAxMDAwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjI6KzgwMDAgY29va2llIHNydjIgY2hlY2sgcG9ydCA4MDgwIGludGVyIDEwMDAKCiAgICBkZWZhdWx0cwogICAgICAgICMgc2VjdGlvbiB2aWRlIHF1aSBhbm51bGUgdG91cyBsZXMgcGFyYW3odGVzIHBhciBk6WZhdXQuCgoKNC44KSBSYXBwb3J0IGQn6XRhdCBzb3VzIGZvcm1lIGRlIHBhZ2UgSFRNTAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGEgdmVyc2lvbiAxLjIuMTQsIGlsIGRldmllbnQgcG9zc2libGUgcG91ciBoYXByb3h5IGQnaW50ZXJjZXB0cmUgZGVzCnJlcXXqdGVzIHBvdXIgdW5lIFVSSSBwYXJ0aWN1bGnocmUgZXQgZGUgcmV0b3VybmVyIHVuIHJhcHBvcnQgY29tcGxldCBkJ+l0YXQgZGUKbCdhY3Rpdml06SBkdSBwcm94eSwgZXQgZGVzIHN0YXRpc3RpcXVlcyBzdXIgbGVzIHNlcnZldXJzLiBDZWNpIGVzdCBkaXNwb25pYmxlCnZpYSBsZSBtb3QgY2zpICJzdGF0cyIgYXNzb2Np6SDgIG4naW1wb3J0ZSBsYXF1ZWxsZSBkZSBjZXMgb3B0aW9ucyA6CgogICAtIHN0YXRzIGVuYWJsZQogICAtIHN0YXRzIHVyaSA8dXJpIHByZWZpeD4KICAgLSBzdGF0cyByZWFsbSA8YXV0aGVudGljYXRpb24gcmVhbG0+CiAgIC0gc3RhdHMgYXV0aCA8dXNlcjpwYXNzd29yZD4KICAgLSBzdGF0cyBzY29wZSA8cHJveHlfaWQ+IHwgJy4nCgoKUGFyIGTpZmF1dCwgbGUgcmFwcG9ydCBlc3QgZOlzYWN0aXbpLiBMZSBmYWl0IGRlIHNw6WNpZmllciB1bmUgZGVzIGNvbWJpbmFpc2lvbgpjaS1kZXNzdXMgYWN0aXZlIGxlIHJhcHBvcnQgcG91ciBsJ2luc3RhbmNlIGRlIHByb3h5IHF1aSBsZSBy6WbpcmVuY2UuIExhCnNvbHV0aW9uIGxhIHBsdXMgc2ltcGxlIGVzdCBkJ3V0aWxpc2VyICJzdGF0cyBlbmFibGUiIHF1aSBhY3RpdmVyYSBsZSByYXBwb3J0CmF2ZWMgbGVzIHBhcmFt6HRyZXMgcGFyIGTpZmF1dCBzdWl2YW50IDoKCiAgIC0gZGVmYXVsdCBVUkkgICA6ICIvaGFwcm94eT9zdGF0cyIgICAgICAgIChDT05GSUdfU1RBVFNfREVGQVVMVF9VUkkpCiAgIC0gZGVmYXVsdCBhdXRoICA6IG5vbiBzcOljaWZp6SAocGFzIGQnYXV0aGVudGljYXRpb24pCiAgIC0gZGVmYXVsdCByZWFsbSA6ICJIQVByb3h5IFN0YXRpc3RpY3MiICAgIChDT05GSUdfU1RBVFNfREVGQVVMVF9SRUFMTSkKICAgLSBkZWZhdWx0IHNjb3BlIDogbm9uIHNwZWNpZmnpIChhY2PocyDgIHRvdXRlcyBsZXMgaW5zdGFuY2VzKQoKTCdvcHRpb24gInN0YXRzIHVyaSA8dXJpX3ByZWZpeD4iIHBlcm1ldCBkJ2ludGVyY2VwdGVyIHVuIGF1dHJlIHBy6WZpeGUgZCdVUkkKcXVlIGNlbHVpIHBhciBk6WZhdXQuIE5vdGVyIHF1ZSBuJ2ltcG9ydGUgcXVlbGxlIFVSSSBxdWkgQ09NTUVOQ0UgYXZlYyBjZXR0ZQpjaGHubmUgc2VyYSB2YWxpZOllLiBQYXIgZXhlbXBsZSwgdW5lIGluc3RhbmNlIHBvdXJyYWl0IOp0cmUgZOlkaellIOAgbGEgcGFnZQpkJ+l0YXQgc2V1bGVtZW50IGV0IHLpcG9uZHJlIOAgdG91dGUgVVJJLgoKRXhhbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBpbnRlcmNlcHRlIG4naW1wb3J0ZSBxdWVsbGUgVVJJIGV0IHJldG91cm5lIGxhIHBhZ2UgZCfpdGF0LgogICAgbGlzdGVuIHN0YXRzIDo4MDgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgc3RhdHMgdXJpIC8KCgpMJ29wdGlvbiAic3RhdHMgYXV0aCA8dXNlcjpwYXNzd29yZD4iIGFjdGl2ZSBsJ2F1dGhlbnRpZmljYXRpb24gIkJhc2ljIiBldApham91dGUgdW4gY291cGxlICJ1c2VyOnBhc3N3b3JkIiB2YWxpZGUg4CBsYSBsaXN0ZSBkZXMgY29tcHRlcyBhdXRvcmlz6XMuCkwndXRpbGlzYXRldXIgPHVzZXI+IGV0IGxlIG1vdCBkZSBwYXNzZSA8cGFzc3dvcmQ+IGRvaXZlbnQg6nRyZSBwculjaXPpcwplbiBjbGFpciBkYW5zIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiwgZXQgY29tbWUgY2VjaSBlc3QgZGUKbCdhdXRoZW50aWZpY2F0aW9uIEhUVFAgIkJhc2ljIiwgaWwgZmF1dCDqdHJlIGNvbnNjaWVudCBxdSdpbHMgdHJhbnNpdGVudCBlbgpjbGFpciBzdXIgbGUgculzZWF1LCBkb25jIGlsIG5lIGZhdXQgcGFzIHV0aWxpc2VyIGRlIGNvbXB0ZSBzZW5zaWJsZS4gTGEgbGlzdGUKZXN0IGlsbGltaXTpZSBkYW5zIGxlIGJ1dCBkZSBwb3V2b2lyIGZvdXJuaXIgZGVzIGFjY+hzIGZhY2lsZW1lbnQg4CBkZXMKZOl2ZWxvcHBldXJzIG91IOAgZGVzIGNsaWVudHMuCgpMJ29wdGlvbiAic3RhdHMgcmVhbG0gPHJlYWxtPiIgZOlmaW5pdCBsZSAiZG9tYWluZSIgKCJyZWFsbSIpIGRlIHZhbGlkaXTpIGR1Cm1vdCBkZSBwYXNzZSBxdWkgc2VyYSBwculzZW506SBkYW5zIGxhIGJv7nRlIGRlIGRpYWxvZ3VlIGR1IG5hdmlnYXRldXIKbG9yc3F1J2lsIGRlbWFuZGVyYSB1biBjb21wdGUgdXRpbGlzYXRldXIgZXQgdW4gbW90IGRlIHBhc3NlLiBJbCBlc3QgaW1wb3J0YW50CmRlIHMnYXNzdXJlciBxdWUgY2VsdWktY2kgc29pdCBkaWZm6XJlbnQgZGUgY2V1eCB1dGlsaXPpcyBwYXIgbCdhcHBsaWNhdGlvbiwKYXV0cmVtZW50IGxlIG5hdmlnYXRldXIgdGVudGVyYSBkJ2VuIHV0aWxpc2VyIHVuIGNhY2jpIGRlcHVpcyBsJ2FwcGxpY2F0aW9uLgpOb3RlciBxdWUgbGVzIGVzcGFjZXMgZGFucyBsZSBub20gZGUgInJlYWxtIiBkb2l2ZW50IOp0cmUgcHJvdOln6XMgcGFyIHVuCmJhY2tzbGFzaCAoJ1wnKS4KCkwnb3B0aW9uICJzdGF0cyBzY29wZSA8cHJveHlfaWQ+IiBsaW1pdGUgbGEgcG9ydOllIGR1IHJhcHBvcnQgZCfpdGF0LiBQYXIKZOlmYXV0LCB0b3V0ZXMgbGVzIGluc3RhbmNlcyBwcm94eSBzb250IGxpc3TpZXMuIE1haXMgZGFucyBjZXJ0YWluZXMKY2lyY29uc3RhbmNlcywgaWwgc2VyYWl0IHBy6WbpcmFibGUgZGUgbmUgbGlzdGVyIHF1ZSBjZXJ0YWlucyBwcm94aWVzIG91CnNpbXBsZW1lbnQgbGUgcHJveHkgY291cmFudC4gQydlc3QgY2UgcXVlIGZhaXQgY2V0dGUgb3B0aW9uLiBMZSBub20gc3DpY2lhbCAiLiIKKHVuIHNpbXBsZSBwb2ludCkgculm6XJlbmNlIGxlIHByb3h5IGNvdXJhbnQuIENldHRlIG9wdGlvbiBwZXV0IOp0cmUgculw6XTpZQphdXRhbnQgZGUgZm9pcyBxdWUgbuljZXNzYWlyZSBwb3VyIGF1dG9yaXNlciBkJ2F1dHJlcyBwcm94aWVzLCBt6m1lIHBvdXIgZGVzCm5vbXMgculm6XJlbmPpcyBwbHVzIGxvaW4gZGFucyBsYSBjb25maWd1cmF0aW9uIG91IGJpZW4gZGVzIG5vbXMgcXVpIG4nZXhpc3RlbnQKcGFzIGVuY29yZS4gTGUgbm9tIHBy6WNpc+kgZXN0IGNlbHVpIHF1aSBhcHBhcmFpdCBhcHLocyBsZSBtb3QgY2zpICJsaXN0ZW4iLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBzaW1wbGUgYXBwbGljYXRpb24gZW1iYXJxdWFudCBsYSBwYWdlIGQn6XRhdCBhdXRoZW50aWZp6WUKICAgIGxpc3RlbiBhcHAxIDE5Mi4xNjguMS4xMDA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGNsb3NlCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY29va2llIFNFUlZFUklEIHBvc3Rvbmx5IGluc2VydCBpbmRpcmVjdAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwODAgY29va2llIHNydjEgY2hlY2sgaW50ZXIgMTAwMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4yOjgwODAgY29va2llIHNydjIgY2hlY2sgaW50ZXIgMTAwMAogICAgICAgIHN0YXRzIHVyaSAvbXlfc3RhdHMKICAgICAgICBzdGF0cyByZWFsbSBTdGF0aXN0aWNzXCBmb3JcIE15QXBwMS0yCiAgICAgICAgc3RhdHMgYXV0aCBndWVzdDpndWVzdAogICAgICAgIHN0YXRzIGF1dGggYWRtaW46QWRNaU4xMjMKICAgICAgICBzdGF0cyBzY29wZSAuCiAgICAgICAgc3RhdHMgc2NvcGUgYXBwMgoKICAgICMgc2ltcGxlIGFwcGxpY2F0aW9uIGVtYmFycXVhbnQgbGEgcGFnZSBkJ+l0YXQgc2FucyBhdXRoZW50aWZpY2F0aW9uCiAgICBsaXN0ZW4gYXBwMiAxOTIuMTY4LjIuMTAwOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBjbG9zZQogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBwb3N0b25seSBpbnNlcnQgaW5kaXJlY3QKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMTo4MDgwIGNvb2tpZSBzcnYxIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjIuMjo4MDgwIGNvb2tpZSBzcnYyIGNoZWNrIGludGVyIDEwMDAKICAgICAgICBzdGF0cyB1cmkgL215X3N0YXRzCiAgICAgICAgc3RhdHMgcmVhbG0gU3RhdGlzdGljc1wgZm9yXCBNeUFwcDIKICAgICAgICBzdGF0cyBzY29wZSAuCgogICAgbGlzdGVuIGFkbWluX3BhZ2UgOjgwODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBzdGF0cyB1cmkgL215X3N0YXRzCiAgICAgICAgc3RhdHMgcmVhbG0gR2xvYmFsXCBzdGF0aXN0aWNzCiAgICAgICAgc3RhdHMgYXV0aCBhZG1pbjpBZE1pTjEyMwoKTm90ZXMgOgotLS0tLS0tCiAgLSBsZXMgb3B0aW9ucyAic3RhdHMiIHBldXZlbnQgYXVzc2kg6nRyZSBzcOljaWZp6WVzIGRhbnMgdW5lIHNlY3Rpb24KICAgICJkZWZhdWx0cyIsIGF1cXVlbCBjYXMgbGEgbeptZSBjb25maWd1cmF0aW9uIGV4YWN0ZW1lbnQgc2VyYSBmb3VybmllIOAKICAgIHRvdXRlcyBsZXMgaW5zdGFuY2VzIHN1aXZhbnRlcywgZCdv+SBsJ3V0aWxpdOkgZHUgc2NvcGUgIi4iLiBUb3V0ZWZvaXMsIHNpCiAgICB1bmUgaW5zdGFuY2UgcmVk6WZpbml0IG4naW1wb3J0ZSBxdWVsIHBhcmFt6HRyZSAic3RhdHMiLCBhbG9ycyBsZXMgZOlmYXV0cwogICAgbmUgbHVpIHNlcm9udCBwYXMgYXBwbGlxdelzLgoKICAtIGwnYXV0aGVudGlmaWNhdGlvbiAiQmFzaWMiIGVzdCB0cuhzIHNpbXBsaXN0ZSBldCBub24gc+ljdXJpc+llIGNvbnRyZSBsYQogICAgY2FwdHVyZSBy6XNlYXUuIEF1Y3VuIG1vdCBkZSBwYXNzZSBzZW5zaWJsZSBuZSBkb2l0IOp0cmUgdXRpbGlz6SwgZXQgaWwKICAgIGVzdCBib24gZGUgc2F2b2lyIHF1J2lsIG4nZXhpc3RlIHBhcyBkZSBtb3llbiBkZSBsZSBzdXBwcmltZXIgZHUgbmF2aWdhdGV1cgogICAgYXBy6HMgdXNhZ2UsIGRvbmMgaWwgc2VyYSBlbnZveekgdGVsIHF1ZWwg4CBsJ2FwcGxpY2F0aW9uIGF1IGNvdXJzIGRlcwogICAgYWNj6HMgc3VjY2Vzc2lmcy4KCiAgLSBJbCBlc3QgdHLocyBpbXBvcnRhbnQgZGUgcHLpY2lzZXIgbCdvcHRpb24gImh0dHBjbG9zZSIsIHNpbm9uIGxlIHByb3h5IG5lCiAgICBzZXJhIHBhcyBlbiBtZXN1cmUgZGUgZOl0ZWN0ZXIgbGVzIFVSSSBkYW5zIGxlcyBzZXNzaW9ucyBrZWVwLWFsaXZlCiAgICBtYWludGVudWVzIGVudHJlIGxlIG5hdmlnYXRldXIgZXQgbGVzIHNlcnZldXJzLCBkb25jIGxlcyBVUkkgZGUgc3RhdHMKICAgIHNlcm9udCB0cmFuc21pc2VzIHRlbGxlcyBxdWVsbGVzIGF1eCBzZXJ2ZXVycyBjb21tZSBzaSBsJ29wdGlvbiBuJ+l0YWl0CiAgICBwYXMgcHLpY2lz6WUuCgoKNSkgTGlzdGVzIGQnYWNj6HMKPT09PT09PT09PT09PT09PT0KCkF2ZWMgbGEgdmVyc2lvbiAxLjMuMTAsIHVuIG5vdXZlYXUgY29uY2VwdCBkZSBsaXN0ZXMgZCdhY2PocyAoQUNMKSBhIHZ1IGxlCmpvdXIuIENvbW1lIGlsIG4n6XRhaXQgcGFzIG7pY2Vzc2FpcmUgZGUgculpbnZlbnRlciBsYSByb3VlLCBldCBkdSBmYWl0IHF1ZQp0b3V0ZXMgbGVzIHLpZmxleGlvbnMgcGFzc+llcyBhYm91dGlzc2FpZW50IOAgZGVzIHByb3Bvc2l0aW9ucyBub24Kc2F0aXNmYWlzYW50ZXMsIGlsIGEgZmluYWxlbWVudCDpdOkgZOljaWTpIHF1ZSBxdWVscXVlIGNob3NlIGRlIHByb2NoZSBkZSBjZQpxdWUgU3F1aWQgb2ZmcmUgc2VyYWl0IHVuIGJvbiBjb21wcm9taXMgZW50cmUgdW5lIHJpY2hlc3NlIGZvbmN0aW9ubmVsbGUgZXQgdW5lCmZhY2lsaXTpIGQndXRpbGlzYXRpb24KCkxlIHByaW5jaXBlIGVzdCB0cuhzIHNpbXBsZSA6IGxlcyBBQ0xzIHNvbnQgZOljbGFy6WVzIGF2ZWMgdW4gbm9tLCB1biB0ZXN0IGV0CnVuZSBsaXN0ZSBkZSB2YWxldXJzIHZhbGlkZXMg4CB0ZXN0ZXIuIERlcyBjb25kaXRpb25zIHNvbnQgYXBwbGlxdellcyBzdXIKZGl2ZXJzZXMgYWN0aW9ucywgZXQgY2VzIGNvbmRpdGlvbnMgZWZmZWN0dWVudCB1biBFVCBsb2dpcXVlIGVudHJlIGxlcyBBQ0xzLiBMYQpjb25kaXRpb24gbidlc3QgZG9uYyB2YWxpZOllIHF1ZSBzaSB0b3V0ZXMgbGVzIEFDTHMgc29udCB2cmFpZXMuCgpJbCBlc3Qg6WdhbGVtZW50IHBvc3NpYmxlIGQndXRpbGlzZXIgbGUgbW90IHLpc2VydukgIk9SIiBkYW5zIGxlcyBjb25kaXRpb25zLApldCBpbCBlc3QgcG9zc2libGUgcG91ciB1bmUgQUNMIGQn6nRyZSBzcOljaWZp6WUgcGx1c2lldXJzIGZvaXMsIG3qbWUgYXZlYyBkZXMKdGVzdHMgZGlmZulyZW50cywgYXVxdWVsIGNhcyBsZSBwcmVtaWVyIHRlc3Qgcul1c3NpIHZhbGlkZXJhIGwnQUNMLgoKQXUgc3RhZGUgZGUgbGEgdmVyc2lvbiAxLjMuMTIsIHNldWxzIGxlcyB0ZXN0cyBzdWl2YW50cyBvbnQg6XTpIGltcGzpbWVudOlzIDoKCiAgIE5pdmVhdXggMy80IDoKICAgICBzcmMgICAgICAgPGlwdjRfYWRkcmVzcz5bL21hc2tdIC4uLiA6IG1hdGNoIElQdjQgc291cmNlIGFkZHJlc3MKICAgICBkc3QgICAgICAgPGlwdjRfYWRkcmVzcz5bL21hc2tdIC4uLiA6IG1hdGNoIElQdjQgZGVzdGluYXRpb24gYWRkcmVzcwogICAgIHNyY19wb3J0ICA8cmFuZ2U+IC4uLiAgICAgICAgICAgICAgIDogbWF0Y2ggc291cmNlIHBvcnQgcmFuZ2UKICAgICBkc3RfcG9ydCAgPHJhbmdlPiAuLi4gICAgICAgICAgICAgICA6IG1hdGNoIGRlc3RpbmF0aW9uIHBvcnQgcmFuZ2UKICAgICBkc3RfY29ubiAgPHJhbmdlPiAuLi4gICAgICAgICAgICAgICA6IG1hdGNoICNjb25uZWN0aW9ucyBvbiBmcm9udGVuZAoKICAgTml2ZWF1IDcgOgogICAgIG1ldGhvZCAgICA8SFRUUCBtZXRob2Q+IC4uLiAgOiBtYXRjaCBIVFRQIG1ldGhvZAogICAgIHJlcV92ZXIgICA8MS4wfDEuMT4gLi4uICAgICAgOiBtYXRjaCBIVFRQIHJlcXVlc3QgdmVyc2lvbgogICAgIHJlc3BfdmVyICA8MS4wfDEuMT4gLi4uICAgICAgOiBtYXRjaCBIVFRQIHJlc3BvbnNlIHZlcnNpb24KICAgICBzdGF0dXMgICAgPHJhbmdlPiAuLi4gICAgICAgIDogbWF0Y2ggSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZSBpbiByYW5nZQogICAgIHVybCAgICAgICA8c3RyaW5nPiAuLi4gOiBleGFjdCBzdHJpbmcgbWF0Y2ggb24gVVJJCiAgICAgdXJsX3JlZyAgIDxyZWdleD4gIC4uLiA6IHJlZ2V4IHN0cmluZyBtYXRjaCBvbiBVUkkKICAgICB1cmxfYmVnICAgPHN0cmluZz4gLi4uIDogdHJ1ZSBpZiBVUkkgYmVnaW5zIHdpdGggPHN0cmluZz4KICAgICB1cmxfZW5kICAgPHN0cmluZz4gLi4uIDogdHJ1ZSBpZiBVUkkgZW5kcyB3aXRoIDxzdHJpbmc+CiAgICAgdXJsX3N1YiAgIDxzdHJpbmc+IC4uLiA6IHRydWUgaWYgVVJJIGNvbnRhaW5zIDxzdHJpbmc+CiAgICAgdXJsX2RpciAgIDxzdHJpbmc+IC4uLiA6IHRydWUgaWYgVVJJIGNvbnRhaW5zIDxzdHJpbmc+IGJldHdlZW4gc2xhc2hlcwogICAgIHVybF9kb20gICA8c3RyaW5nPiAuLi4gOiB0cnVlIGlmIFVSSSBjb250YWlucyA8c3RyaW5nPiBiZXR3ZWVuIHNsYXNoZXMgb3IgZG90cwoKVW5lIHBsYWdlICgncmFuZ2UnKSBlc3QgY29uc3RpdHXpZSBkJ3VuIG91IGRldXggZW50aWVycyBxdWkgcGV1dmVudCDqdHJlCnBy6WZpeOlzIGQndW4gb3DpcmF0ZXVyLiBMYSBzeW50YXhlIGVzdCA6CgogIFs8b3A+XSA8bWluPls6PG1heD5dCgpBdmVjIDxvcD4gcG91dmFudCDqdHJlIDoKICAnZXEnIDogbGEgdmFsZXVyIGRvaXQg6WdhbGVyIDxtaW4+IG91IOp0cmUgY29tcHJpc2UgZW50cmUgPG1pbj4gZXQgPG1heD4KICAnbGUnIDogbGEgdmFsZXVyIGRvaXQg6nRyZSBpbmbpcmlldXJlIG91IOlnYWxlIOAgPG1pbj4KICAnbHQnIDogbGEgdmFsZXVyIGRvaXQg6nRyZSBzdHJpY3RlbWVudCBpbmbpcmlldXJlIOAgPG1pbj4KICAnZ2UnIDogbGEgdmFsZXVyIGRvaXQg6nRyZSBzdXDpcmlldXJlIG91IOlnYWxlIOAgPG1pbj4KICAnZ3QnIDogbGEgdmFsZXVyIGRvaXQg6nRyZSBzdHJpY3RlbWVudCBzdXDpcmlldXJlIOAgPG1pbj4KCkxvcnNxdSdhdWN1biBvcOlyYXRldXIgbidlc3QgZOlmaW5pLCAnZXEnIGVzdCBlbXBsb3npLiBOb3RlciBxdWUgbG9yc3F1J3VuCm9w6XJhdGV1ciBlc3Qgc3DpY2lmaeksIGlsIHMnYXBwbGlxdWUg4CB0b3V0ZXMgbGVzIHBsYWdlcyBkZSB2YWxldXJzIHN1aXZhbnRlcwpqdXNxdSfgIGxhIGZpbiBkZSBsYSBsaWduZSBvdSBiaWVuIGp1c3F1J+AgY2UgcXUndW4gbm91dmVsIG9w6XJhdGV1ciBzb2l0CnBy6WNpc+kuIEV4ZW1wbGUgOgoKICBhY2wgc3RhdHVzX2Vycm9yICBzdGF0dXMgICA0MDA6NTk5CiAgYWNsIHNhdHVyYXRlZF9mcnQgZHN0X2Nvbm4gZ2UgMTAwMAogIGFjbCBpbnZhbGlkX3BvcnRzIHNyY19wb3J0IGx0IDUxMiBnZSA2NTUzNQoKRCdhdXRyZXMgdGVzdHMgYXJyaXZlbnQgKGVudOp0ZXMsIGNvb2tpZXMsIGhldXJlLCBhdXRoZW50aWZpY2F0aW9uKSwgYydlc3QKanVzdGUgdW5lIHF1ZXN0aW9uIGRlIHRlbXBzLiBJbCBlc3QgYXVzc2kgcHLpdnUgZGUgcGVybWV0dHJlIGRlIGxpcmUgbGVzCnZhbGV1cnMgZGVwdWlzIHVuIGZpY2hpZXIsIGFpbnNpIHF1ZSBkJ2lnbm9yZXIgbGEgY2Fzc2UgcG91ciBjZXJ0YWlucyB0ZXN0cy4KCkxhIHNldWxlIGNvbW1hbmRlIHN1cHBvcnRhbnQgbGVzIGNvbmRpdGlvbnMgZCdBQ0wg4CBjZSBqb3VyIGVzdCBsYSBub3V2ZWxsZQpjb21tYW5kZSAiYmxvY2siIHF1aSBibG9xdWUgdW5lIHJlcXXqdGUgZXQgcmV0b3VybmUgdW4gc3RhdHV0IDQwMyBzaSBzYQpjb25kaXRpb24gZXN0IHZhbGlk6WUgKGNhcyBkdSAiaWYiKSBvdSBpbnZhbGlk6WUgKGNhcyBkdSAidW5sZXNzIikuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCgogICAgYWNsIG9wdGlvbnNfdXJpcyAgdXJsICoKICAgIGFjbCBtZXRoX29wdGlvbiAgIG1ldGhvZCBPUFRJT05TCiAgICBhY2wgaHR0cF8xLjEgICAgICByZXFfdmVyIDEuMQogICAgYWNsIGFsbG93ZWRfbWV0aCAgbWV0aG9kIEdFVCBIRUFEIFBPU1QgT1BUSU9OUyBDT05ORUNUCiAgICBhY2wgY29ubmVjdF9tZXRoICBtZXRob2QgQ09OTkVDVAogICAgYWNsIHByb3h5X3VybCAgICAgdXJsX2JlZyBodHRwOi8vCgogICAgIyBibG9jayBpZiByZXNlcnZlZCBVUkkgIioiIHVzZWQgd2l0aCBhIG1ldGhvZCBvdGhlciB0aGFuICJPUFRJT05TIgogICAgYmxvY2sgaWYgb3B0aW9uc191cmlzICFtZXRoX29wdGlvbgoKICAgICMgYmxvY2sgaWYgdGhlIE9QVElPTlMgbWV0aG9kIGlzIHVzZWQgd2l0aCBIVFRQIDEuMAogICAgYmxvY2sgaWYgbWV0aF9vcHRpb24gIWh0dHBfMS4xCgogICAgIyBhbGxvdyBub24tcHJveHkgdXJsIHdpdGggYW55dGhpbmcgYnV0IHRoZSBDT05ORUNUIG1ldGhvZAogICAgYmxvY2sgaWYgIWNvbm5lY3RfbWV0aCAhcHJveHlfdXJsCgogICAgIyBibG9jayBhbGwgdW5rbm93biBtZXRob2RzCiAgICBibG9jayB1bmxlc3MgYWxsb3dlZF9tZXRoCgpOb3RlOiBDZXR0ZSBkb2N1bWVudGF0aW9uIGVzdCBlbWJyeW9ubmFpcmUgbWFpcyBkb2l0IHBlcm1ldHRyZSBkZSBk6W1hcnJlciBldApzdXJ0b3V0IGQnYXZhbmNlciBzdXIgbGUgcHJvamV0IHNhbnMg6nRyZSB0cm9wIHJhbGVudGkgcGFyIGxhIGRvY3VtZW50YXRpb24uCgoKPT09PT09PT09PT09PT09PT09PT09PT0KfCBQYXJhbel0cmFnZSBzeXN06G1lIHwKPT09PT09PT09PT09PT09PT09PT09PT0KClNvdXMgTGludXggMi40Cj09PT09PT09PT09PT09CgotLSBjdXQgaGVyZSAtLQojIS9iaW4vc2gKIyBzZXQgdGhpcyB0byBhYm91dCAyNTYvNE0gKDE2Mzg0IGZvciAyNTZNIG1hY2hpbmUpCk1BWEZJTEVTPTE2Mzg0CmVjaG8gJE1BWEZJTEVTID4gL3Byb2Mvc3lzL2ZzL2ZpbGUtbWF4CnVsaW1pdCAtbiAkTUFYRklMRVMKCmlmIFsgLWUgL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2Nvbm50cmFja19tYXggXTsgdGhlbgogICAgICAgIGVjaG8gNjU1MzYgPiAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfY29ubnRyYWNrX21heApmaQoKaWYgWyAtZSAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF90aW1lb3V0X2Zpbl93YWl0IF07IHRoZW4KICAgICAgICAjIDMwIHNlY29uZHMgZm9yIGZpbiwgMTUgZm9yIHRpbWUgd2FpdAogICAgICAgIGVjaG8gMzAwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQKICAgICAgICBlY2hvIDE1MDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF90aW1lb3V0X3RpbWVfd2FpdAogICAgICAgIGVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX2xvZ19pbnZhbGlkX3NjYWxlCiAgICAgICAgZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfbG9nX291dF9vZl93aW5kb3cKZmkKCmVjaG8gMTAyNCA2MDk5OSA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9sb2NhbF9wb3J0X3JhbmdlCmVjaG8gMzAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2Zpbl90aW1lb3V0CmVjaG8gNDA5NiA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X3N5bl9iYWNrbG9nCmVjaG8gMjYyMTQ0ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfdHdfYnVja2V0cwplY2hvIDI2MjE0NCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfbWF4X29ycGhhbnMKZWNobyAzMDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2tlZXBhbGl2ZV90aW1lCmVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfdHdfcmVjeWNsZQplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3RpbWVzdGFtcHMKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9lY24KZWNobyAxID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9zYWNrCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZHNhY2sKCiMgYXV0by10dW5lZCBvbiAyLjQKI2VjaG8gMjYyMTQzID4gL3Byb2Mvc3lzL25ldC9jb3JlL3JtZW1fbWF4CiNlY2hvIDI2MjE0MyA+IC9wcm9jL3N5cy9uZXQvY29yZS9ybWVtX2RlZmF1bHQKCmVjaG8gMTYzODQgNjU1MzYgNTI0Mjg4ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9ybWVtCmVjaG8gMTYzODQgMzQ5NTIwIDY5OTA0MCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfd21lbQoKLS0gY3V0IGhlcmUgLS0KClNvdXMgRnJlZUJTRAo9PT09PT09PT09PT0KClVuIHBvcnQgZGUgSEEtUHJveHkgc291cyBGcmVlQlNEIGVzdCBk6XNvcm1haXMgZGlzcG9uaWJsZSwgZ3LiY2Ug4ApDbGVtZW50IExhZm9yZXQgPHNoZWVwa2lsbGVyQGN1bHRkZWFkc2hlZXAub3JnPi4KClBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucyA6Cmh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL3VybC5jZ2k/cG9ydHMvbmV0L2hhcHJveHkvcGtnLWRlc2NyCmh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL2N2c3dlYi5jZ2kvcG9ydHMvbmV0L2hhcHJveHkvCmh0dHA6Ly93d3cuZnJlc2hwb3J0cy5vcmcvbmV0L2hhcHJveHkKCgotLSBmaW4gLS0K