ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVlbCBkZSBy6WbpcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuMy4yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGx5IHRhcnJlYXUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDA2LzA5LzAzCgo9PT09PT09PT09PT09PT09CnwgSW50cm9kdWN0aW9uIHwKPT09PT09PT09PT09PT09PQoKSEFQcm94eSBlc3QgdW4gcmVsYWlzIFRDUC9IVFRQIG9mZnJhbnQgZGVzIGZhY2lsaXTpcyBkJ2ludOlncmF0aW9uIGVuCmVudmlyb25uZW1lbnQgaGF1dGVtZW50IGRpc3BvbmlibGUuIEVuIGVmZmV0LCBpbCBlc3QgY2FwYWJsZSBkZSA6CiAgLSBlZmZlY3R1ZXIgdW4gYWlndWlsbGFnZSBzdGF0aXF1ZSBk6WZpbmkgcGFyIGRlcyBjb29raWVzIDsKICAtIGVmZmVjdHVlciB1bmUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGF2ZWMgY3LpYXRpb24gZGUgY29va2llcyBwb3VyIGFzc3VyZXIKICAgIGxhIHBlcnNpc3RlbmNlIGRlIHNlc3Npb24gOyAKICAtIGZvdXJuaXIgdW5lIHZpc2liaWxpdOkgZXh0ZXJuZSBkZSBzb24g6XRhdCBkZSBzYW506SA7CiAgLSBzJ2Fycup0ZXIgZW4gZG91Y2V1ciBzYW5zIHBlcnRlIGJydXRhbGUgZGUgc2VydmljZSA7CiAgLSBtb2RpZmllci9ham91dGVyL3N1cHByaW1lciBkZXMgZW4tdOp0ZXMgZGFucyBsYSByZXF16nRlIGV0IGxhIHLpcG9uc2UgOwogIC0gaW50ZXJkaXJlIGRlcyByZXF16nRlcyBxdWkgdulyaWZpZW50IGNlcnRhaW5lcyBjb25kaXRpb25zIDsKICAtIHV0aWxpc2VyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIGxvcnNxdWUgbGVzIHNlcnZldXJzIHByaW5jaXBhdXggc29udCBob3JzCiAgICBkJ3VzYWdlLgogIC0gbWFpbnRlbmlyIGRlcyBjbGllbnRzIHN1ciBsZSBib24gc2VydmV1ciBzZXJ2ZXVyIGQnYXBwbGljYXRpb24gZW4gZm9uY3Rpb24KICAgIGRlIGNvb2tpZXMgYXBwbGljYXRpZnMuCiAgLSBmb3VybmlyIGRlcyByYXBwb3J0cyBkJ+l0YXQgZW4gSFRNTCDgIGRlcyB1dGlsaXNhdGV1cnMgYXV0aGVudGlmaelzLCDgCiAgICB0cmF2ZXJzIGRlcyBVUkkgZGUgbCdhcHBsaWNhdGlvbiBpbnRlcmNlcHTpZXMuCgpJbCByZXF1aWVydCBwZXUgZGUgcmVzc291cmNlcywgZXQgc29uIGFyY2hpdGVjdHVyZSDpduluZW1lbnRpZWxsZSBtb25vLQpwcm9jZXNzdXMgbHVpIHBlcm1ldCBmYWNpbGVtZW50IGRlIGfpcmVyIHBsdXNpZXVycyBtaWxsaWVycyBkZSBjb25uZXhpb25zCnNpbXVsdGFu6WVzIHN1ciBwbHVzaWV1cnMgcmVsYWlzIHNhbnMgZWZmb25kcmVyIGxlIHN5c3TobWUuCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3odHJlcyBkZSBsYW5jZW1lbnQgfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBvcHRpb25zIGRlIGxhbmNlbWVudCBzb250IHBldSBub21icmV1c2VzIDoKCiAgICAtZiA8ZmljaGllciBkZSBjb25maWd1cmF0aW9uPgogICAgLW4gPG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXM+CiAgICAgICA9ICdtYXhjb25uJyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcKICAgIC1OIDxub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzIHBhciBpbnN0YW5jZT4KICAgICAgID0gJ21heGNvbm4nIGRhbnMgbGVzIHNlY3Rpb25zICdsaXN0ZW4nIG91ICdkZWZhdWx0JwogICAgLWQgYWN0aXZlIGxlIG1vZGUgZGVidWcKICAgIC1EIHBhc3NlIGVuIGRhZW1vbgogICAgLXEgZOlzYWN0aXZlIGwnYWZmaWNoYWdlIGRlIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQuCiAgICAtViBhZmZpY2hlIGxlcyBtZXNzYWdlcyBzdXIgbGEgc29ydGllIHN0YW5kYXJkLCBt6m1lIHNpIC1xIG91ICdxdWlldCcgc29udAogICAgICAgc3DpY2lmaelzLgogICAgLWMgdulyaWZpZSBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gcHVpcyBxdWl0dGUgYXZlYyB1biBjb2RlIGRlIHJldG91ciAwCiAgICAgICBzaSBhdWN1bmUgZXJyZXVyIG4nYSDpdOkgdHJvdXbpZSwgb3UgMSBzaSB1bmUgZXJyZXVyIGRlIHN5bnRheGUgYSDpdOkKICAgICAgIGTpdGVjdOllLgogICAgLXAgPGZpY2hpZXI+IGluZGlxdWUgYXUgcHJvY2Vzc3VzIHDocmUgcXUnaWwgZG9pdCDpY3JpcmUgbGVzIFBJRHMgZGUgc2VzCiAgICAgICBmaWxzIGRhbnMgY2UgZmljaGllciBlbiBtb2RlIGTpbW9uLgogICAgLXNmIHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIEZJTklTSAogICAgLXN0IHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIFRFUk1JTkFURQogICAgLXMgYWZmaWNoZSBsZXMgc3RhdGlzdGlxdWVzIChzaSBvcHRpb24gY29tcGls6WUpCiAgICAtbCBham91dGUgZGVzIGluZm9ybWF0aW9ucyBhdXggc3RhdGlzdGlxdWVzCiAgICAtZGsgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUga3F1ZXVlKCkKICAgIC1kcyBk6XNhY3RpdmUgbCd1dGlsaXNhdGlvbiBkZSBlcG9sbCgpIHNwZWN1bGF0aWYKICAgIC1kZSBk6XNhY3RpdmUgbCd1dGlsaXNhdGlvbiBkZSBlcG9sbCgpCiAgICAtZHAgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUgcG9sbCgpCiAgICAtZGIgZOlzYWN0aXZlIGxhIG1pc2UgZW4gYXJyaehyZS1wbGFuICh1dGlsZSBwb3VyIGTpYnVnZ2VyKQogICAgLW0gPG1lZ3M+IGFwcGxpcXVlIHVuZSBsaW1pdGF0aW9uIGRlIDxtZWdzPiBNbyBkJ3V0aWxpc2F0aW9uIG3pbW9pcmUKCkxlIG5vbWJyZSBtYXhpbWFsIGRlIGNvbm5leGlvbiBzaW11bHRhbullcyBwYXIgcHJveHkgZXN0IGxlIHBhcmFt6HRyZSBwYXIKZOlmYXV0IHBvdXIgbGVzIHByb3hpZXMgcG91ciBsZXNxdWVscyBjZSBwYXJhbeh0cmUgbidlc3QgcGFzIHBy6WNpc+kgZGFucyBsZQpmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24uIElsIHMnYWdpdCBkdSBwYXJhbeh0cmUgJ21heGNvbm4nIGRhbnMgbGVzIHNlY3Rpb25zCidsaXN0ZW4nLgoKTGUgbm9tYnJlIG1heGltYWwgdG90YWwgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcyBsaW1pdGUgbGUgbm9tYnJlIGRlCmNvbm5leGlvbnMgVENQIHV0aWxpc2FibGVzIOAgdW4gaW5zdGFudCBkb25u6SBwYXIgbGUgcHJvY2Vzc3VzLCB0b3VzIHByb3hpZXMKY29uZm9uZHVzLiBDZSBwYXJhbeh0cmUgcmVtcGxhY2UgbGUgcGFyYW3odHJlICdtYXhjb25uJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnLgoKTGUgbW9kZSBkZWJ1ZyBjb3JyZXNwb25kIOAgbCdvcHRpb24gJ2RlYnVnJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnLiBEYW5zIGNlCm1vZGUsIHRvdXRlcyBsZXMgY29ubmV4aW9ucywgZOljb25uZXhpb25zLCBldCB0b3VzIGxlcyDpY2hhbmdlcyBkJ2VuLXTqdGVzIEhUVFAKc29udCBhZmZpY2jpcy4KClBvdXIgZGVidWdnZXIsIGwnb3B0aW9uICctZGInIGVzdCB0cuhzIHByYXRpcXVlIGNhciBlbGxlIGTpc2FjdGl2ZQp0ZW1wb3JhaXJlbWVudCBsZSBtb2RlIGRhZW1vbiBldCBsZSBtb2RlIG11bHRpLXByb2Nlc3N1cy4gTGUgc2VydmljZSBwZXV0IGFsb3JzCup0cmUgYXJy6nTpIHBhciB1biBzaW1wbGUgYXBwdWkgc3VyIEN0cmwtQywgc2FucyBhdm9pciDgIG1vZGlmaWVyIGxhCmNvbmZpZ3VyYXRpb24gbmkg4CBhY3RpdmVyIGxlIG1vZGUgZGVidWcgY29tcGxldC4KCkxlcyBzdGF0aXN0aXF1ZXMgbmUgc29udCBkaXNwb25pYmxlcyBxdWUgc2kgbGUgcHJvZ3JhbW1lIGEg6XTpIGNvbXBpbOkgYXZlYwpsJ29wdGlvbiAiU1RBVFRJTUUiLiBJbCBzJ2FnaXQgcHJpbmNpcGFsZW1lbnQgZGUgZG9ubullcyBicnV0ZXMgbidheWFudApkJ3V0aWxpdOkgcXVlIGxvcnMgZGUgYmVuY2htYXJrcyBwYXIgZXhlbXBsZSwgZXQgc29udCBhbWVu6WVzIOAgZGlzcGFyYWl0cmUuCgpMZXMgcGFyYW3odHJlcyAnLXN0JyBldCAnLXNmJyBzb250IHV0aWxpc+lzIHBvdXIgbGEgcmVjb25maWd1cmF0aW9uIOAgY2hhdWQuClZvaXIgbGEgc2VjdGlvbiDgIGNlIHN1amV0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQp8IEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiB8Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClN0cnVjdHVyZQo9PT09PT09PT0KCkwnYW5hbHlzZXVyIGR1IGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBpZ25vcmUgZGVzIGxpZ25lcyB2aWRlcywgbGVzIGVzcGFjZXMsCmxlcyB0YWJ1bGF0aW9ucywgZXQgdG91dCBjZSBxdWkgZXN0IGNvbXByaXMgZW50cmUgbGUgc3ltYm9sZSAnIycgKHMnaWwgbidlc3QKcGFzIHBy6WPpZOkgZCd1biAnXCcpLCBldCBsYSBmaW4gZGUgbGEgbGlnbmUsIGNlIHF1aSBjb25zdGl0dWUgdW4gY29tbWVudGFpcmUuCgpMZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gZXN0IGTpY291cOkgZW4gc2VjdGlvbnMgculw6XLpZXMgcGFyIGRlcyBtb3RzIGNs6XMKdGVscyBxdWUgOgoKICAtICdnbG9iYWwnCiAgLSAnbGlzdGVuJwogIC0gJ2RlZmF1bHRzJwoKVG91cyBsZXMgcGFyYW3odHJlcyBmb250IHLpZulyZW5jZSDgIGxhIHNlY3Rpb24gZOlmaW5pZSBwYXIgbGUgZGVybmllciBtb3QgY2zpCnJlY29ubnUuCgoKMSkgUGFyYW3odHJlcyBnbG9iYXV4Cj09PT09PT09PT09PT09PT09PT09PQoKSWwgcydhZ2l0IGRlcyBwYXJhbeh0cmVzIGFnaXNzYW50IHN1ciBsZSBwcm9jZXNzdXMsIG91IGJpZW4gc3VyIGwnZW5zZW1ibGUgZGVzCnByb3hpZXMuIElscyBzb250IHRvdXMgc3DpY2lmaelzIGRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJy4gTGVzIHBhcmFt6HRyZXMKc3VwcG9ydOlzIHNvbnQgOgoKICAtIGxvZyA8YWRyZXNzZT4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCiAgLSBtYXhjb25uIDxub21icmU+CiAgLSB1aWQgPGlkZW50aWZpYW50PgogIC0gZ2lkIDxpZGVudGlmaWFudD4KICAtIHVzZXIgPG5vbSBkJ3V0aWxpc2F0ZXVyPgogIC0gZ3JvdXAgPG5vbSBkZSBncm91cGU+CiAgLSBjaHJvb3QgPHLpcGVydG9pcmU+CiAgLSBuYnByb2MgPG5vbWJyZT4KICAtIGRhZW1vbgogIC0gZGVidWcKICAtIG5va3F1ZXVlCiAgLSBub3NlcG9sbAogIC0gbm9lcG9sbAogIC0gbm9wb2xsCiAgLSBxdWlldAogIC0gcGlkZmlsZSA8ZmljaGllcj4KICAtIHVsaW1pdC1uIDxub21icmU+CiAgLSB0dW5lLm1heHBvbGxldmVudHMgPG5vbWJyZT4KCgoxLjEpIEpvdXJuYWxpc2F0aW9uIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgcGx1cGFydCBkZXMg6XbpbmVtZW50cyBzb250IGpvdXJuYWxpc+lzIDogZOltYXJyYWdlcywgYXJy6nRzLCBkaXNwYXJpdGlvbiBldAphcHBhcml0aW9uIGRlIHNlcnZldXJzLCBjb25uZXhpb25zLCBlcnJldXJzLiBUb3VzIGxlcyBtZXNzYWdlcyBzb250IGVudm956XMgZW4Kc3lzbG9nIHZlcnMgdW4gb3UgZGV1eCBzZXJ2ZXVycy4gTGEgc3ludGF4ZSBlc3QgbGEgc3VpdmFudGUgOgoKICAgIGxvZyA8YWRyZXNzZV9pcD4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCgpMZXMgY29ubmV4aW9ucyBzb250IGVudm956WVzIGVuIG5pdmVhdSAiaW5mbyIuIExlcyBk6W1hcnJhZ2VzIGRlIHNlcnZpY2UgZXQgZGUKc2VydmV1cnMgc2Vyb250IGVudm956XMgZW4gIm5vdGljZSIsIGxlcyBzaWduYXV4IGQnYXJy6nRzIGVuICJ3YXJuaW5nIiBldCBsZXMKYXJy6nRzIGTpZmluaXRpZnMgZGUgc2VydmljZXMgZXQgZGUgc2VydmV1cnMgZW4gImFsZXJ0Ii4gQ2VjaSBlc3QgdmFsYWJsZSBhdXNzaQpiaWVuIHBvdXIgbGVzIHByb3hpZXMgcXVlIHBvdXIgbGVzIHNlcnZldXJzIHRlc3TpcyBwYXIgbGVzIHByb3hpZXMuIExlCnBhcmFt6HRyZSBvcHRpb25uZWwgPG5pdmVhdV9tYXg+IGTpZmluaXQgbGUgbml2ZWF1IG1heGltYWwgZGUgdHJhY2VzIOltaXNlcwpwYXJtaSBsZXMgOCB2YWxldXJzIHN1aXZhbnRlcyAgOgogICAgZW1lcmcsIGFsZXJ0LCBjcml0LCBlcnIsIHdhcm5pbmcsIG5vdGljZSwgaW5mbywgZGVidWcKClBhciBjb21wYXRpYmlsaXTpIGF2ZWMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcywgbGEgdmFsZXVyIHBhciBk6WZhdXQKZXN0ICJkZWJ1ZyIgc2kgbCdvcHRpb24gbidlc3QgcGFzIHBy6WNpc+llLgoKTGVzIGNhdOlnb3JpZXMgcG9zc2libGVzIHNvbnQgOgogICAga2VybiwgdXNlciwgbWFpbCwgZGFlbW9uLCBhdXRoLCBzeXNsb2csIGxwciwgbmV3cywKICAgIHV1Y3AsIGNyb24sIGF1dGgyLCBmdHAsIG50cCwgYXVkaXQsIGFsZXJ0LCBjcm9uMiwKICAgIGxvY2FsMCwgbG9jYWwxLCBsb2NhbDIsIGxvY2FsMywgbG9jYWw0LCBsb2NhbDUsIGxvY2FsNiwgbG9jYWw3CgpDb25mb3Jt6W1lbnQg4CBsYSBSRkMzMTY0LCBsZXMgbWVzc2FnZXMg6W1pcyBzb250IGxpbWl06XMg4CAxMDI0IGNhcmFjdOhyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKICAgICAgICBsb2cgMTI3LjAuMC4xICAgICBsb2NhbDQgbm90aWNlCgoxLjIpIGxpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBldCBjb25zZWlsbOkgZGUgbGltaXRlciBsZSBub21icmUgZ2xvYmFsIGRlIGNvbm5leGlvbnMgcGFyCnByb2Nlc3N1cyDgIGwnYWlkZSBkdSBtb3QgY2zpIGdsb2JhbCAnbWF4Y29ubicuIExlcyBjb25uZXhpb25zIHNvbnQgY29tcHJpc2VzCmF1IHNlbnMgJ2FjY2VwdGF0aW9uIGRlIGNvbm5leGlvbicsIGRvbmMgaWwgZmF1dCBzJ2F0dGVuZHJlIGVuIHLoZ2xlIGfpbulyYWwg4Aphdm9pciB1biBwZXUgcGx1cyBkdSBkb3VibGUgZGUgc2Vzc2lvbnMgVENQIHF1ZSBsZSBtYXhpbXVtIGRlIGNvbm5leGlvbnMgZml46S4KQydlc3QgaW1wb3J0YW50IHBvdXIgZml4ZXIgbGUgcGFyYW3odHJlICd1bGltaXQgLW4nIGF2YW50IGRlIGxhbmNlciBsZSBwcm94eS4KUG91ciBjb21wdGFiaWxpc2VyIGxlIG5vbWJyZSBkZSBzb2NrZXRzIG7pY2Vzc2FpcmVzLCBpbCBmYXV0IHByZW5kcmUgZW4gY29tcHRlCmNlcyBwYXJhbeh0cmVzIDoKCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIGVudHJhbnRlCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIHNvcnRhbnRlCiAgLSAxIHNvY2tldCBwYXIgY291cGxlIGFkcmVzc2UvcG9ydCBkJ+ljb3V0ZSBwYXIgcHJveHkKICAtIDEgc29ja2V0IHBvdXIgY2hhcXVlIHNlcnZldXIgZW4gY291cnMgZGUgaGVhbHRoLWNoZWNrCiAgLSAxIHNvY2tldCBwb3VyIGxlcyBsb2dzICh0b3VzIHNlcnZldXJzIGNvbmZvbmR1cykKCkRhbnMgbGUgY2FzIG/5IGNoYXF1ZSBwcm94eSBuJ+ljb3V0ZSBxdWUgc3VyIHVuIGNvdXBsZSBhZHJlc3NlL3BvcnQsCnBvc2l0aW9ubmVyIGxhIGxpbWl0ZSBkdSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzICh1bGltaXQgLW4pIOAgCigyICogbWF4Y29ubiArIG5icHJveHkgKyBuYnNlcnZldXJzICsgMSkuIEEgcGFydGlyIGRlcyB2ZXJzaW9ucyAxLjEuMzIvMS4yLjYsCmlsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgY2V0dGUgbGltaXRlIGRhbnMgbGEgY29uZmlndXJhdGlvbiDgIGwnYWlkZSBkdQptb3QtY2zpIGdsb2JhbCAndWxpbWl0LW4nLCDgIGNvbmRpdGlvbiBiaWVuIGVudGVuZHUgcXVlIGxlIHByb3h5IGFpdCDpdOkKZOltYXJy6SBzb3VzIGxlIGNvbXB0ZSByb290IChvdSBhdmVjIGRlcyBkcm9pdHMgc3VmZmlzYW50cyBwb3VyIOlsZXZlciBsZQpub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzKS4gQ2V0dGUgc29sdXRpb24gbWV0IHVuIHRlcm1lIGF1IHByb2Js6G1lCnLpY3VycmVudCBkJ2luY2VydGl0dWRlIGRlIGwnYWTpcXVhdGlvbiBlbnRyZSBsZXMgbGltaXRlcyBzeXN06G1lcyBsb3JzIGRlIGxhCmRlcm5p6HJlIHJlbGFuY2UgZHUgcHJveGVzc3VzIGV0IGxlcyBsaW1pdGVzIGVuIG5vbWJyZSBkZSBjb25uZXhpb25zLiBOb3RlciBxdWUKY2V0dGUgbGltaXRlIHMnYXBwbGlxdWUgcGFyIHByb2Nlc3N1cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgIG1heGNvbm4gMzIwMDAKICAgICAgICB1bGltaXQtbiA2NTUzNgoKCjEuMykgRGltaW51dGlvbiBkZXMgcHJpdmls6GdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQWZpbiBkZSBy6WR1aXJlIGxlcyByaXNxdWVzIGQnYXR0YXF1ZXMgZGFucyBsZSBjYXMgb/kgdW5lIGZhaWxsZSBub24gaWRlbnRpZmnpZQpzZXJhaXQgZXhwbG9pdOllLCBpbCBlc3QgcG9zc2libGUgZGUgZGltaW51ZXIgbGVzIHByaXZpbOhnZXMgZHUgcHJvY2Vzc3VzLCBldApkZSBsJ2lzb2xlciBkYW5zIHVuIHLpcGVydG9pcmUgc2FucyByaXNxdWUuCgpEYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcsIGxlIHBhcmFt6HRyZSAndWlkJyBwZXJtZXQgZGUgc3DpY2lmaWVyIHVuIGlkZW50aWZpYW50Cm51belyaXF1ZSBkJ3V0aWxpc2F0ZXVyLiBMYSB2YWxldXIgMCwgY29ycmVzcG9uZGFudCBub3JtYWxlbWVudCBhdSBzdXBlci0KdXRpbGlzYXRldXIsIHBvc3PoZGUgaWNpIHVuZSBzaWduaWZpY2F0aW9uIHBhcnRpY3VsaehyZSBjYXIgZWxsZSBpbmRpcXVlIHF1ZQpsJ29uIG5lIHNvdWhhaXRlIHBhcyBjaGFuZ2VyIGNldCBpZGVudGlmaWFudCBldCBjb25zZXJ2ZXIgbGEgdmFsZXVyIGNvdXJhbnRlLgpDJ2VzdCBsYSB2YWxldXIgcGFyIGTpZmF1dC4gRGUgbGEgbeptZSBtYW5p6HJlLCBsZSBwYXJhbeh0cmUgJ2dpZCcgY29ycmVzcG9uZCDgCnVuIGlkZW50aWZpYW50IGRlIGdyb3VwZSwgZXQgdXRpbGlzZSBwYXIgZOlmYXV0IGxhIHZhbGV1ciAwIHBvdXIgbmUgcmllbgpjaGFuZ2VyLiBEYW5zIGxlIGNhcyBv+SBpbCBuZSBzZXJhaXQgcGFzIHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBpZGVudGlmaWFudApudW3pcmlxdWUgcG91ciBsJ3VpZCwgaWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBub20gZCd1dGlsaXNhdGV1ciBhcHLocwpsZSBtb3QtY2zpICd1c2VyJy4gRGUgbGEgbeptZSBtYW5p6HJlLCBpbCBlc3QgcG9zc2libGUgZGUgcHLpY2lzZXIgdW4gbm9tIGRlCmdyb3VwZSBhcHLocyBsZSBtb3QtY2zpICdncm91cCcuCgpJbCBlc3QgcGFydGljdWxp6HJlbWVudCBk6WNvbnNlaWxs6SBkJ3V0aWxpc2VyIGRlcyBjb21wdGVzIGfpbulyaXF1ZXMgdGVscyBxdWUKJ25vYm9keScgY2FyIGNldHRlIHByYXRpcXVlIHJldmllbnQg4CB1dGlsaXNlciAncm9vdCcgc2kgZCdhdXRyZXMgcHJvY2Vzc3VzCnV0aWxpc2VudCBsZXMgbeptZXMgaWRlbnRpZmlhbnRzLgoKTGUgcGFyYW3odHJlICdjaHJvb3QnIGF1dG9yaXNlIOAgY2hhbmdlciBsYSByYWNpbmUgZHUgcHJvY2Vzc3VzIHVuZSBmb2lzIGxlCnByb2dyYW1tZSBsYW5j6SwgZGUgc29ydGUgcXVlIG5pIGxlIHByb2Nlc3N1cywgbmkgbCd1biBkZSBzZXMgZGVzY2VuZGFudHMgbmUKcHVpc3NlbnQgcmVtb250ZXIgZGUgbm91dmVhdSDgIGxhIHJhY2luZS4gQ2UgdHlwZSBkZSBjbG9pc29ubmVtZW50IChjaHJvb3QpIGVzdApn6W7pcmFsZW1lbnQgY29udG91cm5hYmxlIHN1ciBjZXJ0YWlucyBPUyAoTGludXgsIFNvbGFyaXMpIHBvdXIgcGV1IHF1ZQpsJ2F0dGFxdWFudCBwb3Nz6GRlIGRlcyBkcm9pdHMgJ3Jvb3QnIGV0IHNvaXQgZW4gbWVzdXJlIGQndXRpbGlzZXIgb3UgZGUgY3LpZXIKdW4gculwZXJ0b2lyZS4gQXVzc2ksIGlsIGVzdCBpbXBvcnRhbnQgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHNw6WNpZmlxdWUgYXUKc2VydmljZSBwb3VyIGNldCB1c2FnZSwgZXQgZGUgbmUgcGFzIG11dHVhbGlzZXIgdW4gbeptZSBy6XBlcnRvaXJlIHBvdXIKcGx1c2lldXJzIHNlcnZpY2VzIGRlIG5hdHVyZSBkaWZm6XJlbnRlLiBQb3VyIHJlbmRyZSBsJ2lzb2xlbWVudCBwbHVzIHJvYnVzdGUsCmlsIGVzdCBjb25zZWlsbOkgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHZpZGUsIHNhbnMgYXVjdW4gZHJvaXQsIGV0IGRlIGNoYW5nZXIKbCd1aWQgZHUgcHJvY2Vzc3VzIGRlIHNvcnRlIHF1J2lsIG5lIHB1aXNzZSByaWVuIGZhaXJlIGRhbnMgbGVkaXQgculwZXJ0b2lyZS4KClJlbWFycXVlIGltcG9ydGFudGUgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsZSBjYXMgb/kgdW5lIHRlbGxlIGZhaWxsZSBzZXJhaXQgbWlzZSBlbiDpdmlkZW5jZSwgaWwgZXN0IGZvcnQgcHJvYmFibGUKcXVlIGxlcyBwcmVtaehyZXMgdGVudGF0aXZlcyBkZSBzb24gZXhwbG9pdGF0aW9uIHByb3ZvcXVlbnQgdW4gYXJy6nQgZHUKcHJvZ3JhbW1lLCDgIGNhdXNlIGQndW4gc2lnbmFsIGRlIHR5cGUgJ1NlZ21lbnRhdGlvbiBGYXVsdCcsICdCdXMgRXJyb3InIG91CmVuY29yZSAnSWxsZWdhbCBJbnN0cnVjdGlvbicuIE3qbWUgcydpbCBlc3QgdnJhaSBxdWUgZmFpcmUgdG91cm5lciBsZSBzZXJ2ZXVyCmVuIGVudmlyb25uZW1lbnQgbGltaXTpIHLpZHVpdCBsZXMgcmlzcXVlcyBkJ2ludHJ1c2lvbiwgaWwgZXN0IHBhcmZvaXMgYmllbgp1dGlsZSBkYW5zIGNlcyBjaXJjb25zdGFuY2VzIGRlIGNvbm5h7nRyZSBsZXMgY29uZGl0aW9ucyBkJ2FwcGFyaXRpb24gZHUKcHJvYmzobWUsIHZpYSBsJ29idGVudGlvbiBkJ3VuIGZpY2hpZXIgJ2NvcmUnLiBMYSBwbHVwYXJ0IGRlcyBzeXN06G1lcywgcG91cgpkZXMgcmFpc29ucyBkZSBz6WN1cml06SwgZOlzYWN0aXZlbnQgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyICdjb3JlJyBhcHLocyB1bgpjaGFuZ2VtZW50IGQnaWRlbnRpZmlhbnQgcG91ciBsZSBwcm9jZXNzdXMuIElsIGZhdWRyYSBkb25jIHNvaXQgbGFuY2VyIGxlCnByb2Nlc3N1cyDgIHBhcnRpciBkJ3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBhdXggZHJvaXRzIHLpZHVpdHMgKG1haXMgbmUgcG91dmFudApwYXMgZWZmZWN0dWVyIGxlIGNocm9vdCksIG91IGJpZW4gbGUgZmFpcmUgZW4gcm9vdCBzYW5zIHLpZHVjdGlvbiBkZXMgZHJvaXRzCih1aWQgMCkuIERhbnMgY2UgY2FzLCBsZSBmaWNoaWVyIHNlIHRyb3V2ZXJhIHNvaXQgZGFucyBsZSBy6XBlcnRvaXJlIGRlCmxhbmNlbWVudCwgc29pdCBkYW5zIGxlIHLpcGVydG9pcmUgc3DpY2lmaekgYXBy6HMgbCdvcHRpb24gJ2Nocm9vdCcuIE5lIHBhcwpvdWJsaWVyIGxhIGNvbW1hbmRlIHN1aXZhbnRlIHBvdXIgYXV0b3Jpc2VyIGxhIGfpbulyYXRpb24gZHUgZmljaGllciBhdmFudCBkZQpsYW5jZXIgbGUgcHJvZ3JhbW1lIDoKCiMgdWxpbWl0IC1jIHVubGltaXRlZAoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgICMgd2l0aCB1aWQvZ2lkCiAgICBnbG9iYWwKICAgICAgICB1aWQgICAgICAgIDMwMDAwCiAgICAgICAgZ2lkICAgICAgICAzMDAwMAogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKICAgICMgd2l0aCB1c2VyL2dyb3VwCiAgICBnbG9iYWwKICAgICAgICB1c2VyICAgIGhhcHJveHkKICAgICAgICBncm91cCAgIHB1YmxpYwogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKCjEuNCkgTW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyBwbHVzaWV1cnMgbW9kZXMgOgogIC0gYXZhbnQtIC8gYXJyaehyZS1wbGFuCiAgLSBzaWxlbmNpZXV4IC8gbm9ybWFsIC8gZGVidWcKCkxlIG1vZGUgcGFyIGTpZmF1dCBlc3Qgbm9ybWFsLCBhdmFudC1wbGFuLCBjJ2VzdCDgIGRpcmUgcXVlIGxlIHByb2dyYW1tZSBuZQpyZW5kIHBhcyBsYSBtYWluIHVuZSBmb2lzIGxhbmPpLiBJbCBuZSBmYXV0IHN1cnRvdXQgcGFzIGxlIGxhbmNlciBjb21tZSBjZWNpCmRhbnMgdW4gc2NyaXB0IGRlIGTpbWFycmFnZSBkdSBzeXN06G1lLCBzaW5vbiBsZSBzeXN06G1lIG5lIGZpbmlyYWl0IHBhcyBzb24KaW5pdGlhbGlzYXRpb24uIElsIGZhdXQgbGUgbWV0dHJlIGVuIGFycmnocmUtcGxhbiwgZGUgc29ydGUgcXUnaWwgcmVuZGUgbGEgbWFpbgphdSBwcm9jZXNzdXMgYXBwZWxhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGwnb3B0aW9uICdkYWVtb24nIGRlIGxhIHNlY3Rpb24KJ2dsb2JhbCcsIGV0IHF1aSBlc3QgbCfpcXVpdmFsZW50IGR1IHBhcmFt6HRyZSAnLUQnIGRlIGxhIGxpZ25lIGRlIGNvbW1hbmRlLgoKTGUgcGFyYW3odHJlIGRlIGxpZ25lIGRlIGNvbW1hbmRlICctZGInIGluaGliZSBsZXMgb3B0aW9ucyBnbG9iYWxlcyAnZGFlbW9uJwpldCAnbmJwcm9jJyBwb3VyIGZhaXJlIGZvbmN0aW9ubmVyIGxlIHByb2Nlc3N1cyBlbiBtb2RlIG5vcm1hbCwgYXZhbnQtcGxhbi4KClBhciBhaWxsZXVycywgY2VydGFpbnMgbWVzc2FnZXMgZCdhbGVydGUgc29udCB0b3Vqb3VycyBlbnZveelzIHN1ciBsYSBzb3J0aWUKc3RhbmRhcmQsIG3qbWUgZW4gbW9kZSAnZGFlbW9uJy4gUG91ciBuZSBwbHVzIGxlcyB2b2lyIGFpbGxldXJzIHF1ZSBkYW5zIGxlcwpsb2dzLCBpbCBzdWZmaXQgZGUgcGFzc2VyIGVuIG1vZGUgc2lsZW5jaWV1eCBwYXIgbCdham91dCBkZSBsJ29wdGlvbiAncXVpZXQnLgpDZXR0ZSBvcHRpb24gbidhIHBhcyBkJ+lxdWl2YWxlbnQgZW4gbGlnbmUgZGUgY29tbWFuZGUuCgpFbmZpbiwgbGUgbW9kZSAnZGVidWcnIHBlcm1ldCBkZSBkaWFnbm9zdGlxdWVyIGxlcyBvcmlnaW5lcyBkZSBjZXJ0YWlucwpwcm9ibOhtZXMgZW4gYWZmaWNoYW50IGxlcyBjb25uZXhpb25zLCBk6WNvbm5leGlvbnMgZXQg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCmVudHJlIGxlcyBjbGllbnRzIGV0IGxlcyBzZXJ2ZXVycy4gQ2UgbW9kZSBlc3QgaW5jb21wYXRpYmxlIGF2ZWMgbGVzIG9wdGlvbnMKJ2RhZW1vbicgZXQgJ3F1aWV0JyBwb3VyIGRlcyByYWlzb25zIGRlIGJvbiBzZW5zLgoKMS41KSBBY2Nyb2lzc2VtZW50IGRlIGxhIGNhcGFjaXTpIGRlIHRyYWl0ZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VyIGRlcyBtYWNoaW5lcyBtdWx0aS1wcm9jZXNzZXVycywgaWwgcGV1dCBzZW1ibGVyIGfiY2jpIGRlIG4ndXRpbGlzZXIgcXUndW4KcHJvY2Vzc2V1ciBwb3VyIGVmZmVjdHVlciBsZXMgdOJjaGVzIGRlIHJlbGF5YWdlLCBt6m1lIHNpIGxlcyBjaGFyZ2VzCm7pY2Vzc2FpcmVzIOAgc2F0dXJlciB1biBwcm9jZXNzZXVyIGFjdHVlbCBzb250IGJpZW4gYXUtZGVs4CBkZXMgb3JkcmVzIGRlCmdyYW5kZXVyIGNvdXJhbW1lbnQgcmVuY29udHLpcy4gQ2VwZW5kYW50LCBwb3VyIGRlcyBiZXNvaW5zIHBhcnRpY3VsaWVycywgbGUKcHJvZ3JhbW1lIHNhaXQgZOltYXJyZXIgcGx1c2lldXJzIHByb2Nlc3N1cyBzZSBy6XBhcnRpc3NhbnQgbGEgY2hhcmdlIGRlCnRyYXZhaWwuIENlIG5vbWJyZSBkZSBwcm9jZXNzdXMgZXN0IHNw6WNpZmnpIHBhciBsZSBwYXJhbeh0cmUgJ25icHJvYycgZGUgbGEKc2VjdGlvbiAnZ2xvYmFsJy4gU2EgdmFsZXVyIHBhciBk6WZhdXQgZXN0IG5hdHVyZWxsZW1lbnQgMS4gQ2VjaSBuZSBmb25jdGlvbm5lCnF1J2VuIG1vZGUgJ2RhZW1vbicuIFVuIHVzYWdlIGTpauAgcmVuY29udHLpIHBvdXIgY2UgcGFyYW3odHJlIGZ1dCBkZSBk6XBhc3NlcgpsYSBsaW1pdGUgZGUgbm9tYnJlIGRlIGRlc2NyaXB0ZXVycyBkZSBmaWNoaWVycyBhbGxvdellIHBhciBwcm9jZXNzdXMgc291cwpTb2xhcmlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAogICAgICAgIGRhZW1vbgogICAgICAgIHF1aWV0CiAgICAgICAgbmJwcm9jICAgICAgICAyCgoxLjYpIFNpbXBsaWZpY2F0aW9uIGRlIGxhIGdlc3Rpb24gZGVzIHByb2Nlc3N1cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIYXByb3h5IHN1cHBvcnRlIGRvculuYXZhbnQgbGEgbm90aW9uIGRlIGZpY2hpZXJzIGRlIHBpZCAoLT4gcGlkZmlsZXMpLiBTaSBsZQpwYXJhbeh0cmUgJy1wJyBkZSBsaWduZSBkZSBjb21tYW5kZSwgb3UgbCdvcHRpb24gZ2xvYmFsZSAncGlkZmlsZScgc29udCBzdWl2aXMKZCd1biBub20gZGUgZmljaGllciwgYWxvcnMgY2UgZmljaGllciBzZXJhIHN1cHByaW3pIHB1aXMgcmVjcunpIGV0IGNvbnRpZW5kcmEKbGUgbnVt6XJvIGRlIFBJRCBkZXMgcHJvY2Vzc3VzIGZpbHMsIOAgcmFpc29uIGQndW4gcGFyIGxpZ25lICh2YWxhYmxlCnVuaXF1ZW1lbnQgZW4gbW9kZSBk6W1vbikuIENlIGZpY2hpZXIgbidlc3QgUEFTIHJlbGF0aWYgYXUgY2xvaXNvbm5lbWVudCBjaHJvb3QKYWZpbiBkZSByZXN0ZXIgY29tcGF0aWJsZSBhdmVjIHVuIHLpcGVydG9pcmUgcHJvdOln6SBlbiBsZWN0dXJlIHNldWxlLiBJbAphcHBhcnRpZW5kcmEg4CBsJ3V0aWxpc2F0ZXVyIGF5YW50IGxhbmPpIGxlIHByb2Nlc3N1cywgZXQgZGlzcG9zZXJhIGRlcyBkcm9pdHMKMDY0NC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICBkYWVtb24KICAgICAgICBxdWlldAogICAgICAgIG5icHJvYyAyCiAgICAgICAgcGlkZmlsZSAvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkCgogICAgIyBwb3VyIHN0b3BwZXIgc2V1bGVtZW50IGNlcyBwcm9jZXNzdXMgcGFybWkgZCdhdXRyZXMgOgogICAgIyBraWxsICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpCgogICAgIyBwb3VyIHJlY2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBhdmVjIHVuIGltcGFjdCBtaW5pbWFsIHN1ciBsZSBzZXJ2aWNlLAogICAgIyBldCBzYW5zIGNhc3NlciBsZXMgc2Vzc2lvbnMgZXhpc3RhbnRlcyA6CiAgICAjIGhhcHJveHkgLWYgaGFwcm94eS5jZmcgLXAgL3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCAtc2YgJCg8L3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCkKCjEuNykgTeljYW5pc21lcyBkZSB0cmFpdGVtZW50cyBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQSBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuNSwgaGFwcm94eSBzdXBwb3J0ZSBsZXMgbeljYW5pc21lcyBwb2xsKCkgZXQKZXBvbGwoKS4gU3VyIGxlcyBzeXN0ZW1zIG/5IHNlbGVjdCgpIGVzdCBsaW1pdOkgcGFyIEZEX1NFVFNJWkUgKGNvbW1lIFNvbGFyaXMpLApwb2xsKCkgcGV1dCDqdHJlIHVuZSBhbHRlcm5hdGl2ZSBpbnTpcmVzc2FudGUuIERlcyB0ZXN0cyBkZSBwZXJmb3JtYW5jZQptb250cmVudCBxdWUgbGVzIHBlcmZvcm1hbmNlcyBkZSBwb2xsKCkgbmUgZOljcm9pc3NlbnQgcGFzIGF1c3NpIHZpdGUgcXVlIGxlCm5vbWJyZSBkZSBzb2NrZXRzIGF1Z21lbnRlLCBjZSBxdWkgZW4gZmFpdCB1bmUgc29sdXRpb24gc/tyZSBwb3VyIGxlcyBmb3J0ZXMKY2hhcmdlcy4gQ2VsYSBkaXQsIFNvYWxyaXMgdXRpbGlzZSBk6WrgIHBvbGwoKSBwb3VyIOltdWxlciBzZWxlY3QoKSwgZG9uYyB0YW50CnF1ZSBsZSBub21icmUgZGUgc29ja2V0cyBuZSBk6XBhc3NlIHBhcyBGRF9TRVRTSVpFLCBwb2xsKCkgbmUgZGV2cmFpdCBwYXMKYXBwb3J0ZXIgZGUgcGVyZm9ybWFuY2VzIHN1cHBs6W1lbnRhaXJlcy4gU3VyIGxlcyBzeXN06G1lcyDgIGJhc2UgTGludXgKaW5jbHVhbnQgbGUgcGF0Y2ggZXBvbGwoKSAob3UgdG91cyBsZXMgTGludXggMi42KSwgaGFwcm94eSB1dGlsaXNlcmEgZXBvbGwoKQpxdWkgZXN0IGV4dHLobWVtZW50IHJhcGlkZSBpbmTpcGVuZGFtbWVudCBkdSBub21icmUgZGUgc29ja2V0cy4gTGVzIHRlc3RzIHN1cgpoYXByb3h5IG9udCBtb250cukgdW5lIHBlcmZvcm1hbmNlIGNvbnN0YW50ZSBkZSAxIOAgNDAwMDAgc2Vzc2lvbnMgc2ltdWx0YW7pZXMuCkxhIHZlcnNpb24gMS4zLjkgYSBpbnRyb2R1aXQgbGUgc3VwcG9ydCBkZSBrcXVldWUoKSBwb3VyIEZyZWVCU0QvT3BlbkJTRCwgYWluc2kKcXUndW5lIHZhcmlhbnRlIGFwcGVs6WUgInNwZWN1bGF0aXZlIGVwb2xsKCkiIGNvbnNpc3RhbnQg4CB0ZW50ZXIgZCdlZmZlY3R1ZXIKbGVzIG9w6XJhdGlvbnMgZCdlbnRy6WVzL3NvcnRpZXMgYXZhbnQgZGUgY2hh7m5lciBsZXMg6XbpbmVtZW50cyBwYXIgbGVzIGFwcGVscwpzeXN06G1lLgoKQWZpbiBkJ29wdGltaXNlciBsYSBsYXRlbmNlLCBpbCBlc3QgZOlzb3JtYWlzIHBvc3NpYmxlIGRlIGxpbWl0ZXIgbGUgbm9tYnJlCmQn6XbpbmVtZW50cyByZW1vbnTpcyDgIGNoYXF1ZSBhcHBlbC4gTGEgbGltaXRlIHBhciBk6WZhdXQgZXN0IGZpeOllIOAgMjAwLiBTaQp1bmUgbGF0ZW5jZSBwbHVzIHBldGl0ZSBlc3QgcmVjaGVyY2jpZSwgaWwgcGV1dCDqdHJlIGp1c3RpZmnpIGQnYWJhaXNzZXIgY2V0dGUKbGltaXRlIHBhciBsJ3V0aWxpc2F0aW9uIGR1IHBhcmFt6HRyZSAndHVuZS5tYXhwb2xsZXZlbnRzJyBkYW5zIGxhIHNlY3Rpb24KJ2dsb2JhbCcuIEwnYXVnbWVudGVyIHBlcm1ldHRyYSBkJ+ljb25vbWlzZXIgdW4gcGV1IGxlIHByb2Nlc3NldXIgZW4gcHLpc2VuY2UKZGUgdHLocyBncmFuZHMgbm9tYnJlcyBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzLgoKSGFwcm94eSB1dGlsaXNlcmEga3F1ZXVlKCkgb3Ugc3BlY3VsYXRpdmUgZXBvbGwoKSBsb3JzcXVlIGNlIHNlcmEgZGlzcG9uaWJsZSwKcHVpcyBlcG9sbCgpLCBldCBzZSByZXBsaWVyYSBzdXIgcG9sbCgpLCBwdWlzIGVuIGRlcm5pZXIgbGlldSBzdXIgc2VsZWN0KCkuCkNlcGVuZGFudCwgc2kgcG91ciB1bmUgcmFpc29uIHF1ZWxjb25xdWUgaWwgcydhdulyYWl0IG7pY2Vzc2FpcmUgZGUgZOlzYWN0aXZlcgplcG9sbCgpIG91IHBvbGwoKSAocC5leDog4CBjYXVzZSBkJ3VuIGJ1ZyBvdSBqdXN0ZSBwb3VyIGNvbXBhcmVyIGxlcwpwZXJmb3JtYW5jZXMpLCBkZSBub3V2ZWxsZXMgb3B0aW9ucyBnbG9iYWxlcyBvbnQg6XTpIGFqb3V06WVzIGRhbnMgY2UgYnV0IDoKJ25vc2Vwb2xsJywgJ25va3F1ZXVlJywgJ25vZXBvbGwnIGV0ICdub3BvbGwnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgZ2xvYmFsCiAgICAgICAgIyB1dGlsaXNlciBzZXVsZW1lbnQgc2VsZWN0KCkKICAgICAgICBub2Vwb2xsCiAgICAgICAgbm9wb2xsCiAgICAgICAgdHVuZS5tYXhwb2xsZXZlbnRzIDEwMAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkRhbnMgbGUgYnV0IGQnYXNzdXJlciB1bmUgcG9ydGFiaWxpdOkgbWF4aW1hbGUgZGVzIGNvbmZpZ3VyYXRpb25zLCBjZXMgb3B0aW9ucwpzb250IGFjY2VwdOllcyBldCBpZ25vcullcyBzaSBsZXMgbeljYW5pc21lcyBwb2xsKCkgb3UgZXBvbGwoKSBuJ29udCBwYXMg6XTpCmFjdGl26XMgbG9ycyBkZSBsYSBjb21waWxhdGlvbi4KCkFmaW4gZGUgc2ltcGxpZmllciBsYSBy6XNvbHV0aW9uIGRlIHByb2Js6G1lcywgbGUgcGFyYW3odHJlICctZGUnIGVuIGxpZ25lIGRlCmNvbW1hbmRlIGTpc2FjdGl2ZSBlcG9sbCgpLCBsZSBwYXJhbeh0cmUgJy1kcCcgZOlzYWN0aXZlIHBvbGwoKSwgJy1kaycga3F1ZXVlKCkKZXQgJy1kcycgZOlzYWN0aXZlIHNwZWN1bGF0aXZlIGVwb2xsKCkuIElscyBzb250IHJlc3BlY3RpdmVtZW50IOlxdWl2YWxlbnRzIOAKJ25vZXBvbGwnLCAnbm9wb2xsJywgJ25va3F1ZXVlJyBldCAnbm9zZXBvbGwnLgoKCjIpIETpZmluaXRpb24gZCd1biBzZXJ2aWNlIGVuIOljb3V0ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBzZWN0aW9ucyBkZSBzZXJ2aWNlIGTpYnV0ZW50IHBhciBsZSBtb3QgY2zpICJsaXN0ZW4iIDoKCiAgICBsaXN0ZW4gPG5vbV9pbnN0YW5jZT4gWyA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPlssLi4uXSBdCgotIDxub21faW5zdGFuY2U+IGVzdCBsZSBub20gZGUgbCdpbnN0YW5jZSBk6WNyaXRlLiBDZSBub20gc2VyYSBlbnZveekgZGFucyBsZXMKICBsb2dzLCBkb25jIGlsIGVzdCBzb3VoYWl0YWJsZSBkJ3V0aWxpc2VyIHVuIG5vbSByZWxhdGlmIGF1IHNlcnZpY2UgcmVsYXnpLgogIEF1Y3VuIHRlc3Qgbidlc3QgZWZmZWN0dekgY29uY2VybmFudCBsJ3VuaWNpdOkgZGUgY2Ugbm9tLCBxdWkgbidlc3QgcGFzCiAgb2JsaWdhdG9pcmUsIG1haXMgZm9ydGVtZW50IHJlY29tbWFuZOllLgoKLSA8YWRyZXNzZV9JUD4gZXN0IGwnYWRyZXNzZSBJUCBzdXIgbGFxdWVsbGUgbGUgcmVsYWlzIGF0dGVuZCBzZXMgY29ubmV4aW9ucy4KICBMJ2Fic2VuY2UgZCdhZHJlc3NlIGFpbnNpIHF1ZSBsJ2FkcmVzc2UgMC4wLjAuMCBzaWduaWZpZW50IHF1ZSBsZXMgY29ubmV4aW9ucwogIHBvdXJyb250IHMnZWZmZWN0dWVyIHN1ciB0b3V0ZXMgbGVzIGFkcmVzc2VzIGRlIGxhIG1hY2hpbmUuCgotIDxwbGFnZV9wb3J0cz4gY29ycmVzcG9uZCBzb2l0IOAgdW4gcG9ydCwgc29pdCDgIHVuZSBwbGFnZSBkZSBwb3J0cyBzdXIKICBsZXNxdWVscyBsZSByZWxhaXMgYWNjZXB0ZXJhIGRlcyBjb25uZXhpb25zIHBvdXIgbCdhZHJlc3NlIElQIHNw6WNpZmnpZS4KICBDZXR0ZSBwbGFnZSBwZXV0IOp0cmUgOgogICAgLSBzb2l0IHVuIHBvcnQgbnVt6XJpcXVlIChleDogJzgwJykKICAgIC0gc29pdCB1bmUgcGxhZ2UgY29uc3RpdHXpZSBkZSBkZXV4IHZhbGV1cnMgc+lwYXLpZXMgcGFyIHVuIHRpcmV0CiAgICAgIChleDogJzIwMDAtMjEwMCcpIHJlcHLpc2VudGFudCBsZXMgZXh0cultaXTpcyBpbmNsdXNlcyBkYW5zIGxhCiAgICAgIHBsYWdlLgogIElsIGZhdXQgZmFpcmUgYXR0ZW50aW9uIOAgbCd1c2FnZSBkZXMgcGxhZ2VzLCBjYXIgY2hhcXVlIGNvbWJpbmFpc29uCiAgPGFkcmVzc2VfSVA+Ojxwb3J0PiBjb25zb21tZSB1bmUgc29ja2V0LCBkb25jIHVuIGRlc2NyaXB0ZXVyIGRlIGZpY2hpZXIuCiAgTGUgY291cGxlIDxhZHJlc3NlX0lQPjo8cG9ydD4gZG9pdCDqdHJlIHVuaXF1ZSBwb3VyIHRvdXRlcyBsZXMgIGluc3RhbmNlcwogIGQndW5lIG3qbWUgbWFjaGluZS4gTCdhdHRhY2hlbWVudCDgIHVuIHBvcnQgaW5m6XJpZXVyIOAgMTAyNCBu6WNlc3NpdGUgdW4KICBuaXZlYXUgZGUgcHJpdmls6GdlIHBhcnRpY3VsaWVyIGxvcnMgZHUgbGFuY2VtZW50IGR1IHByb2dyYW1tZQogIChpbmTpcGVuZGFtbWVudCBkdSBwYXJhbeh0cmUgJ3VpZCcgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJykuCgotIGxlIGNvdXBsZSA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPiBwZXV0IOp0cmUgculw6XTpIGluZOlmaW5pbWVudCBwb3VyCiAgZGVtYW5kZXIgYXUgcmVsYWlzIGQn6WNvdXRlciDpZ2FsZW1lbnQgc3VyIGQnYXV0cmVzIGFkcmVzc2VzIGV0L291IGQnYXV0cmVzCiAgcGxhZ2VzIGRlIHBvcnRzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkZSBz6XBhcmVyIGxlcyBjb3VwbGVzIHBhciB1bmUgdmlyZ3VsZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgIGxpc3RlbiB4MTFfcHJveHkgMTI3LjAuMC4xOjYwMDAtNjAwOQogICAgbGlzdGVuIHNtdHBfcHJveHkgMTI3LjAuMC4xOjI1LDEyNy4wLjAuMTo1ODcKICAgIGxpc3RlbiBsZGFwX3Byb3h5IDozODksOjY2MwoKU2kgdG91dGVzIGxlcyBhZHJlc3NlcyBuZSB0aWVubmVudCBwYXMgc3VyIHVuZSBsaWduZSwgaWwgZXN0IHBvc3NpYmxlIGQnZW4KcmFqb3V0ZXIg4CBsJ2FpZGUgZHUgbW90IGNs6SAnYmluZCcuIERhbnMgY2UgY2FzLCBpbCBuJ2VzdCBt6m1lIHBhcyBu6WNlc3NhaXJlCmRlIHNw6WNpZmllciBsYSBwcmVtaehyZSBhZHJlc3NlIHN1ciBsYSBsaWduZSBsaXN0ZW4sIGNlIHF1aSBmYWNpbGl0ZSBwYXJmb2lzCmwn6WNyaXR1cmUgZGUgY29uZmlndXJhdGlvbnMgOgoKICAgIGJpbmQgWyA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPlssLi4uXSBdCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6ODAsOjQ0MwogICAgICAgIGJpbmQgMTAuMC4wLjE6MTAwODAsMTAuMC4wLjE6MTA0NDMKCjIuMSkgSW5oaWJpdGlvbiBkJ3VuIHNlcnZpY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVbiBzZXJ2aWNlIHBldXQg6nRyZSBk6XNhY3RpdukgcG91ciBkZXMgYmVzb2lucyBkZSBtYWludGVuYW5jZSwgc2FucyBhdm9pciDgCmNvbW1lbnRlciB0b3V0ZSB1bmUgcGFydGllIGR1IGZpY2hpZXIuIElsIHN1ZmZpdCBkZSBwb3NpdGlvbm5lciBsZSBtb3QgY2zpCiJkaXNhYmxlZCIgZGFucyBzYSBzZWN0aW9uIDoKCiAgICBsaXN0ZW4gc210cF9wcm94eSAwLjAuMC4wOjI1CiAgICAgICAgZGlzYWJsZWQKClJlbWFycXVlOiBsZSBtb3QgY2zpICdlbmFibGVkJyBwZXJtZXQgZGUgculhY3RpdmVyIHVuIHNlcnZpY2UgcHLpYWxhYmxlbWVudAogICAgICAgICAgZOlzYWN0aXbpIHBhciBsZSBtb3QgY2zpICdkaXNhYmxlZCcsIHBhciBleGVtcGxlIOAgY2F1c2UgZCd1bmUKICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcGFyIGTpZmF1dC4KCjIuMikgTW9kZSBkZSBmb25jdGlvbm5lbWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW4gc2VydmljZSBwZXV0IGZvbmN0aW9ubmVyIGRhbnMgdHJvaXMgbW9kZXMgZGlmZulyZW50cyA6CiAgLSBUQ1AKICAtIEhUVFAKICAtIOl0YXQgZGUgc2FudOkKCk1vZGUgVENQCi0tLS0tLS0tCkRhbnMgY2UgbW9kZSwgbGUgc2VydmljZSByZWxheWUsIGTocyBsZXVyIOl0YWJsaXNzZW1lbnQsIGxlcyBjb25uZXhpb25zIFRDUAp2ZXJzIHVuIG91IHBsdXNpZXVycyBzZXJ2ZXVycy4gQXVjdW4gdHJhaXRlbWVudCBuJ2VzdCBlZmZlY3R16SBzdXIgbGUgZmx1eC4gSWwKcydhZ2l0IHNpbXBsZW1lbnQgZCd1bmUgYXNzb2NpYXRpb24KICAgICBzb3VyY2U8YWRyZXNzZTpwb3J0PiAtPiBkZXN0aW5hdGlvbjxhZHJlc3NlOnBvcnQ+LgpQb3VyIGwndXRpbGlzZXIsIHBy6WNpc2VyIGxlIG1vZGUgVENQIHNvdXMgbGEgZOljbGFyYXRpb24gZHUgcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHNtdHBfcHJveHkgMC4wLjAuMDoyNQogICAgICAgIG1vZGUgdGNwCgpNb2RlIEhUVFAKLS0tLS0tLS0tCkRhbnMgY2UgbW9kZSwgbGUgc2VydmljZSByZWxheWUgbGVzIGNvbm5leGlvbnMgVENQIHZlcnMgdW4gb3UgcGx1c2lldXJzCnNlcnZldXJzLCB1bmUgZm9pcyBxdSdpbCBkaXNwb3NlIGQnYXNzZXogZCdpbmZvcm1hdGlvbnMgcG91ciBlbiBwcmVuZHJlIGxhCmTpY2lzaW9uLiBMZXMgZW4tdOp0ZXMgSFRUUCBzb250IGFuYWx5c+lzIHBvdXIgeSB0cm91dmVyIHVuIOl2ZW50dWVsIGNvb2tpZSwgZXQKY2VydGFpbnMgZCdlbnRyZS1ldXggcGV1dmVudCDqdHJlIG1vZGlmaelzIHBhciBsZSBiaWFpcyBkJ2V4cHJlc3Npb25zCnLpZ3VsaehyZXMuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBwculjaXNlciBsZSBtb2RlIEhUVFAgc291cyBsYSBk6WNsYXJhdGlvbiBkdQpyZWxhaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCgpNb2RlIHN1cGVydmlzaW9uCi0tLS0tLS0tLS0tLS0tLS0KSWwgcydhZ2l0IGQndW4gbW9kZSBvZmZyYW50IOAgdW4gY29tcG9zYW50IGV4dGVybmUgdW5lIHZpc2liaWxpdOkgZGUgbCfpdGF0IGRlCnNhbnTpIGR1IHNlcnZpY2UuIElsIHNlIGNvbnRlbnRlIGRlIHJldG91cm5lciAiT0siIOAgdG91dCBjbGllbnQgc2UgY29ubmVjdGFudApzdXIgc29uIHBvcnQuIElsIHBldXQg6nRyZSB1dGlsaXPpIGF2ZWMgZGVzIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2Ug6XZvbHXpcyBwb3VyCmTpdGVybWluZXIgcXVlbHMgc29udCBsZXMgc2VydmljZXMgdXRpbGlzYWJsZXMuIFNpIGwnb3B0aW9uICdodHRwY2hrJyBlc3QKYWN0aXbpZSwgYWxvcnMgbGEgculwb25zZSBjaGFuZ2VyYSBlbiAnSFRUUC8xLjAgMjAwIE9LJyBwb3VyIHNhdGlzZmFpcmUgbGVzCmF0dGVudGVzIGRlIGNvbXBvc2FudHMgc2FjaGFudCB0ZXN0ZXIgZW4gSFRUUC4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHBy6WNpc2VyCmxlIG1vZGUgSEVBTFRIIHNvdXMgbGEgZOljbGFyYXRpb24gZHUgcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBy6XBvbnNlIHNpbXBsZSA6ICdPSycKICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAogICAgICAgIG1vZGUgaGVhbHRoCgogICAgIyBy6XBvbnNlIEhUVFAgOiAnSFRUUC8xLjAgMjAwIE9LJwogICAgbGlzdGVuIGh0dHBfaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDEKICAgICAgICBtb2RlIGhlYWx0aAogICAgICAgIG9wdGlvbiBodHRwY2hrCgoKMi4yLjEgU3VwZXJ2aXNpb24KLS0tLS0tLS0tLS0tLS0tLS0KTGVzIHZlcnNpb25zIDEuMS4zMiBldCAxLjIuNiBhcHBvcnRlbnQgdW5lIG5vdXZlbGxlIHNvbHV0aW9uIHBvdXIgdmFsaWRlciBsZQpib24gZm9uY3Rpb25uZW1lbnQgZHUgcHJveHkgc2FucyBwZXJ0dXJiZXIgbGUgc2VydmljZS4gTGUgbW90LWNs6SAnbW9uaXRvci1uZXQnCmEg6XTpIGNy6ekgZGFucyBsZSBidXRkIGRlIHNw6WNpZmllciB1biBy6XNlYXUgZCfpcXVpcGVtZW50cyBxdWkgbmUgUEVVVkVOVCBQQVMKdXRpbGlzZXIgbGUgc2VydmljZSBwb3VyIGF1dHJlIGNob3NlIHF1ZSBkZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQuIEMnZXN0CnBhcnRpY3VsaehyZW1lbnQgYWRhcHTpIGF1eCBwcm94aWVzIFRDUCwgY2FyIGNlbGEgZW1w6mNoZSBsZSBwcm94eSBkZSByZWxheWVyCmRlcyDpdGFibGlzc2VtZW50cyBkZSBjb25uZXhpb24g6W1pcyBwYXIgdW4gb3V0aWwgZGUgc3VydmVpbGxhbmNlLgoKTG9yc3F1ZSBjJ2VzdCB1dGlsaXPpIHN1ciB1biBwcm94eSBUQ1AsIGxhIGNvbm5leGlvbiBlc3QgYWNjZXB06WUgcHVpcyByZWZlcm3pZQpldCByaWVuIG4nZXN0IGxvZ3XpLiBDJ2VzdCBzdWZmaXNhbnQgcG91ciBxdSd1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UgZW4gYW1vbnQKZOl0ZWN0ZSBxdWUgbGUgc2VydmljZSBlc3QgZGlzcG9uaWJsZS4KCkxvcnNxdWUgYydlc3QgdXRpbGlz6SBzdXIgdW4gcHJveHkgSFRUUCwgbGEgY29ubmV4aW9uIGVzdCBhY2NlcHTpZSwgcmllbiBuJ2VzdApsb2d16SwgcHVpcyBsYSBy6XBvbnNlIHN1aXZhbnRlIGVzdCBlbnZveellIGV0IGxhIHNlc3Npb24gcmVmZXJt6WUgOgoiSFRUUC8xLjAgMjAwIE9LIi4gQydlc3Qgbm9ybWFsZW1lbnQgc3VmZmlzYW50IHBvdXIgcXUndW4gculwYXJ0aXRldXIgZGUgY2hhcmdlCkhUVFAgZW4gYW1vbnQgZOl0ZWN0ZSBsZSBzZXJ2aWNlIGNvbW1lIG9w6XJhdGlvbm5lbCwgYXVzc2kgYmllbiDgIHRyYXZlcnMgZGVzCnRlc3RzIFRDUCBxdWUgSFRUUC4KCkxlcyBwcm94aWVzIHV0aWxpc2FudCBsZSBtb3QtY2zpICdtb25pdG9yLW5ldCcgcGV1dmVudCBhY2Nlc3NvaXJlbWVudCBzZSBwYXNzZXIKZGUgbCdvcHRpb24gJ2RvbnRsb2dudWxsJywgY2UgcXVpIHBlcm1ldHRyYSBkZSBsb2d1ZXIgbGVzIGNvbm5leGlvbnMgdmlkZXMK6W1pc2VzIGRlcHVpcyBkJ2F1dHJlcyBhZHJlc3NlcyBxdWUgY2VsbGVzIGR1IHLpc2VhdSBkZSB0ZXN0cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBsaXN0ZW4gdHNlLXByb3h5CiAgICAgICBiaW5kIDozMzg5LDoxNDk0LDo1OTAwICAjIFRTRSwgSUNBIGFuZCBWTkMgYXQgb25jZS4KICAgICAgIG1vZGUgdGNwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciB0c2UtZmFybSAxOTIuMTY4LjEuMTAKICAgICAgIG1vbml0b3ItbmV0IDE5Mi4xNjguMS4yNTIvMzEgICAjIEw0IGxvYWQtYmFsYW5jZXJzIG9uIC4yNTIgYW5kIC4yNTMKCgpMb3JzcXVlIGxlIHN5c3TobWUgZWZmZWN0dWFudCBsZXMgdGVzdHMgZXN0IHNpdHXpIGRlcnJp6HJlIHVuIHByb3h5LCBsZSBtb3QtY2zpCidtb25pdG9yLW5ldCcgbidlc3QgcGFzIHV0aWxpc2FibGUgZHUgZmFpdCBxdWUgaGFwcm94eSB2ZXJyYSB0b3Vqb3VycyBsYSBt6m1lCmFkcmVzc2UgcG91ciBsZSBwcm94eS4gUG91ciBwYWxsaWVyIOAgY2V0dGUgbGltaXRhdGlvbiwgbGEgdmVyc2lvbiAxLjIuMTUgYQphcHBvcnTpIGxlIG1vdC1jbOkgJ21vbml0b3ItdXJpJy4gSWwgZOlmaW5pdCB1bmUgVVJJIHF1aSBuZSBzZXJhIG5pIHJldHJhbnNtaXNlCm5pIGxvZ+llLCBtYWlzIHBvdXIgbGFxdWVsbGUgaGFwcm94eSByZXRvdXJuZXJhIGltbelkaWF0ZW1lbnQgdW5lIHLpcG9uc2UKIkhUVFAvMS4wIDIwMCBPSyIuIENlbGEgcmVuZCBwb3NzaWJsZXMgbGVzIHRlc3RzIGRlIHZhbGlkaXTpIGQndW5lIGNoYe5uZQpyZXZlcnNlLXByb3h5LT5oYXByb3h5IGVuIHVuZSByZXF16nRlIEhUVFAuIENlbGEgcGV1dCDqdHJlIHV0aWxpc+kgcG91ciB2YWxpZGVyCnVuZSBjb21iaW5haXNpb24gZGUgc3R1bm5lbCtoYXByb3h5IOAgbCdhaWRlIGRlIHRlc3RzIEhUVFBTIHBhciBleGVtcGxlLiBCaWVuCmVudGVuZHUsIGNlIG1vdC1jbOkgbidlc3QgdmFsaWRlIHF1J2VuIG1vZGUgSFRUUCwgc2lub24gaWwgbid5IGEgcGFzIGRlIG5vdGlvbgpkJ1VSSS4gTm90ZXIgcXVlIGxhIG3pdGhvZGUgZXQgbGEgdmVyc2lvbiBIVFRQIHNvbnQgc2ltcGxlbWVudCBpZ25vcullcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBsaXN0ZW4gc3R1bm5lbF9iYWNrZW5kIDo4MDgwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEwOjgwIGNoZWNrCiAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMTE6ODAgY2hlY2sKICAgICAgIG1vbml0b3ItdXJpIC9oYXByb3h5X3Rlc3QKCgoyLjMpIExpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlIHBhcmFt6HRyZSAibWF4Y29ubiIgcGVybWV0IGRlIGZpeGVyIGxhIGxpbWl0ZSBhY2NlcHRhYmxlIGVuIG5vbWJyZSBkZQpjb25uZXhpb25zIHNpbXVsdGFu6WVzIHBhciBwcm94eS4gQ2hhcXVlIHByb3h5IHF1aSBhdHRlaW50IGNldHRlIHZhbGV1ciBjZXNzZQpkJ+ljb3V0ZXIganVzcXUn4CBsaWLpcmF0aW9uIGQndW5lIGNvbm5leGlvbi4gVm9pciBwbHVzIGxvaW4gY29uY2VybmFudCBsZXMKbGltaXRhdGlvbnMgbGnpZXMgYXUgc3lzdOhtZS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiB0aW55X3NlcnZlciAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMAoKCjIuNCkgQXJy6nQgZW4gZG91Y2V1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGQnYXJy6nRlciBsZXMgc2VydmljZXMgZW4gZG91Y2V1ciBlbiBlbnZveWFudCB1biBzaWduYWwKU0lHVVNSMSBhdSBwcm9jZXNzdXMgcmVsYWlzLiBUb3VzIGxlcyBzZXJ2aWNlcyBzZXJvbnQgYWxvcnMgbWlzIGVuIHBoYXNlCmQnYXJy6nQsIG1haXMgcG91cnJvbnQgY29udGludWVyIGQnYWNjZXB0ZXIgZGVzIGNvbm5leGlvbnMgcGVuZGFudCB1biB0ZW1wcwpk6WZpbmkgcGFyIGxlIHBhcmFt6HRyZSAnZ3JhY2UnIChlbiBtaWxsaXNlY29uZGVzKS4gQ2VsYSBwZXJtZXQgcGFyIGV4ZW1wbGUsCmRlIGZhaXJlIHNhdm9pciByYXBpZGVtZW50IOAgdW4gculwYXJ0aXRldXIgZGUgY2hhcmdlIHF1J2lsIG5lIGRvaXQgcGx1cwp1dGlsaXNlciB1biByZWxhaXMsIHRvdXQgZW4gY29udGludWFudCBkJ2Fzc3VyZXIgbGUgc2VydmljZSBsZSB0ZW1wcyBxdSdpbApzJ2VuIHJlbmRlIGNvbXB0ZS4KClJlbWFycXVlIDoKLS0tLS0tLS0tLQpMZXMgY29ubmV4aW9ucyBhY3RpdmVzIG5lIHNvbnQgamFtYWlzIGNhc3PpZXMuIERhbnMgbGUgcGlyZSBkZXMgY2FzLCBpbCBmYXVkcmEKYXR0ZW5kcmUgZW4gcGx1cyBsZXVyIGV4cGlyYXRpb24gYXZhbnQgbCdhcnLqdCB0b3RhbCBkdSBwcm9jZXNzdXMsIG91IGJpZW4gdHVlcgptYW51ZWxsZW1lbnQgbGUgcHJvY2Vzc3VzIHBhciBsJ2Vudm9pIGQndW4gc2lnbmFsIFNJR1RFUk0uIExhIHZhbGV1ciBwYXIgZOlmYXV0CmR1IHBhcmFt6HRyZSAnZ3JhY2UnIGVzdCAwIChwYXMgZGUgZ3LiY2UsIGFycup0IGltbelkaWF0IGRlIGwn6WNvdXRlKS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgYXJy6nRlciBlbiBkb3VjZXVyIHBhciAna2lsbGFsbCAtVVNSMSBoYXByb3h5JwogICAgIyBsZSBzZXJ2aWNlIHRvdXJuZXJhIGVuY29yZSAxMCBzZWNvbmRlcyBhcHLocyBsYSBkZW1hbmRlIGQnYXJy6nQKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBncmFjZSAxMDAwMAoKICAgICMgY2UgcG9ydCBuJ2VzdCB0ZXN06SBxdWUgcGFyIHVuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZS4KICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAogICAgICAgIG1vZGUgaGVhbHRoCiAgICAgICAgZ3JhY2UgMAoKQSBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuOCwgdW4gbm91dmVhdSBt6WNhbmlzbWUgZGUgcmVjb25maWd1cmF0aW9uIOAgY2hhdWQKYSDpdOkgaW50cm9kdWl0LiBJbCBlc3QgZOlzb3JtYWlzIHBvc3NpYmxlIGRlIG1ldHRyZSBsZXMgcHJveGllcyBlbiAicGF1c2UiIGVuCmVudm95YW50IHVuIHNpZ25hbCBTSUdUVE9VIGF1eCBwcm9jZXNzdXMuIENlbGEgZOlzYWN0aXZlcmEgbGVzIHNvY2tldHMgZCfpY291dGUKc2FucyBjYXNzZXIgbGVzIHNlc3Npb25zIGV4aXN0YW50ZXMuIFN1aXRlIOAgY2VsYSwgbCdlbnZvaSBkJ3VuIHNpZ25hbCBTSUdUVElOCnLpYWN0aXZlcmEgbGVzIHNvY2tldHMgZCfpY291dGUuIENlY2kgZXN0IHRy6HMgcHJhdGlxdWUgcG91ciB0ZW50ZXIgZGUgY2hhcmdlcgp1bmUgbm91dmVsbGUgY29uZmlndXJhdGlvbiBvdSBt6m1lIHVuZSBub3V2ZWxsZSB2ZXJzaW9uIGRlIGhhcHJveHkgc2FucyBjYXNzZXIKbGVzIGNvbm5leGlvbnMgZXhpc3RhbnRlcy4gU2kgbGUgcmVjaGFyZ2VtZW50IHMnZWZmZWN0dWUgY29ycmVjdGVtZW50LCBpbCBuZQpyZXN0ZSBwbHVzIHF1J+AgZW52b3llciB1biBzaWduYWwgU0lHVVNSMSBhdXggYW5jaWVucyBwcm9jZXNzdXMsIGNlIHF1aQpwcm92b3F1ZXJhIGxldXIgYXJy6nQgaW1t6WRpYXQgZOhzIHF1ZSBsZXVycyBjb25uZXhpb25zIHNlcm9udCB0ZXJtaW7pZXMgOyBlbgpyZXZhbmNoZSwgc2kgbGUgcmVjaGFyZ2VtZW50IOljaG91ZSwgaWwgc3VmZml0IGQnZW52b3llciB1biBzaWduYWwgU0lHVFRJTiBwb3VyCnJlbWV0dHJlIGxlcyBwb3J0cyBlbiDpY291dGUgZXQgcul0YWJsaXIgbGUgc2VydmljZSBpbW3pZGlhdGVtZW50LiBWZXVpbGxlegpub3RlciBxdWUgbGUgcGFyYW3odHJlICdncmFjZScgZXN0IGlnbm9y6SBwb3VyIGxlIHNpZ25hbCBTSUdUVE9VIGFpbnNpIHF1ZSBsZQpzaWduYWwgU0lHVVNSMSB1bmUgZm9pcyBsZSBwcm9jZXNzdXMgZW4gcGF1c2UuIEF1c3NpLCBpbCBwZXV0IHMnYXbpcmVyIHRy6HMKdXRpbGUgZGUgc2F1dmVyIGxlIGZpY2hpZXIgZGUgcGlkIGF2YW50IGRlIGTpbWFycmVyIHVuZSBub3V2ZWxsZSBpbnN0YW5jZS4KCkNlIG3pY2FuaXNtZSBlc3QgcGxlaW5lbWVudCBleHBsb2l06SDgIHBhcnRpciBkZSBsYSB2ZXJzaW9uIDEuMi4xMSBhdmVjIGxlcwpvcHRpb25zICctc3QnIGV0ICctc2YnICh2b2lyIGNpLWRlc3NvdXMpLgoKMi40KSBSZWNvbmZpZ3VyYXRpb24g4CBjaGF1ZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBwYXJhbeh0cmVzICctc3QnIGV0ICctc2YnIHNvbnQgdXRpbGlz6XMgcG91ciBpbmZvcm1lciBkZXMgcHJvY2Vzc3VzCmV4aXN0YW50cyBxdWUgbGEgY29uZmlndXJhdGlvbiB2YSDqdHJlIHJlY2hhcmfpZS4gSWxzIHJlY2V2cm9udCBsZSBzaWduYWwKU0lHVFRPVSwgbGV1ciBkZW1hbmRhbnQgZGUgbGli6XJlciBsZXMgcG9ydHMgZW4g6WNvdXRlIGFmaW4gcXVlIGxlIG5vdXZlYXUKcHJvY2Vzc3VzIHB1aXNzZSBsZXMgcHJlbmRyZS4gU2kgcXVvaSBxdWUgY2Ugc29pdCBzZSBwYXNzZSBtYWwsIGxlIG5vdXZlYXUKcHJvY2Vzc3VzIGxldXIgZW52ZXJyYSB1biBzaWduYWwgU0lHVFRJTiBwb3VyIGxldXIgaW5kaXF1ZXIgcXUnaWxzIHBldXZlbnQKc2UgcmVtZXR0cmUgZW4g6WNvdXRlIGV0IGNvbnRpbnVlciBsZXVyIHRyYXZhaWwuIEVuIHJldmFuY2hlLCBzaSBsYQpjb25maWd1cmF0aW9uIHNlIGNoYXJnZSBjb3JyZWN0ZW1lbnQsIGFsb3JzIGlscyByZWNldnJvbnQgdW4gc2lnbmFsIGRlIGRlbWFuZGUKZGUgZmluIGRlIHRyYXZhaWwgZW4gZG91Y2V1ciAoLXNmKSwgb3UgZGUgdGVybWluYWlzb24gaW1t6WRpYXRlICgtc3QpIHF1aQpjb3VwZXJhIGxlcyBzZXNzaW9ucyBlbiBjb3Vycy4gVW4gdXNhZ2UgdHlwaXF1ZSB0ZWwgcXVlIGNlbHVpLWNpIHBlcm1ldCBkZQpyZWNoYXJnZXIgdW5lIGNvbmZpZ3VyYXRpb24gc2FucyBpbnRlcnJ1cHRpb24gZGUgc2VydmljZSA6CgogIyBoYXByb3h5IC1wIC92YXIvcnVuL2hhcHJveHkucGlkIC1zZiAkKGNhdCAvdmFyL3J1bi9oYXByb3h5LnBpZCkKCgoyLjUpIFRlbXBzIGQnZXhwaXJhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgcGFyYW3pdHJlciBjZXJ0YWluZXMgZHVy6WVzIGQnZXhwaXJhdGlvbiBhdSBuaXZlYXUgZGVzCmNvbm5leGlvbnMgVENQLiBUcm9pcyB0ZW1wcyBpbmTpcGVuZGFudHMgc29udCBjb25maWd1cmFibGVzIGV0IGFjY2VwdGVudCBkZXMKdmFsZXVycyBlbiBtaWxsaXNlY29uZGVzLiBTaSBsJ3VuZSBkZSBjZXMgdHJvaXMgdGVtcG9yaXNhdGlvbnMgZXN0IGTpcGFzc+llLCBsYQpzZXNzaW9uIGVzdCB0ZXJtaW7pZSDgIGNoYXF1ZSBleHRy6W1pdOkuCgogIC0gdGVtcHMgZCdhdHRlbnRlIGQndW5lIGRvbm7pZSBkZSBsYSBwYXJ0IGR1IGNsaWVudCwgb3UgZGUgbGEKICAgIHBvc3NpYmlsaXTpIGRlIGx1aSBlbnZveWVyIGRlcyBkb25u6WVzIDogImNsaXRpbWVvdXQiIDoKCiAgICAgICAgIyB0aW1lLW91dCBjbGllbnQg4CAybW4zMC4KICAgICAgICBjbGl0aW1lb3V0ICAgICAgICAxNTAwMDAKCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZCd1bmUgZG9ubullIGRlIGxhIHBhcnQgZHUgc2VydmV1ciwgb3UgZGUgbGEKICAgIHBvc3NpYmlsaXTpIGRlIGx1aSBlbnZveWVyIGRlcyBkb25u6WVzIDogInNydnRpbWVvdXQiIDoKCiAgICAgICAgIyB0aW1lLW91dCBzZXJ2ZXVyIOAgMzBzLgogICAgICAgIHNydnRpbWVvdXQgICAgICAgIDMwMDAwCgogIC0gdGVtcHMgZCdhdHRlbnRlIGRlIGwn6XRhYmxpc3NlbWVudCBkJ3VuZSBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyCiAgICAiY29udGltZW91dCIgOgoKICAgICAgICAjIG9uIGFiYW5kb25uZSBzaSBsYSBjb25uZXhpb24gbidlc3QgcGFzIOl0YWJsaWUgYXBy6HMgNCBzZWNvbmRlcwogICAgICAgIGNvbnRpbWVvdXQgICAgICAgIDQwMDAKClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCiAgLSAiY29udGltZW91dCIgZXQgInNydnRpbWVvdXQiIG4nb250IHBhcyBkJ3V0aWxpdOkgZGFucyBsZSBjYXMgZHUgc2VydmV1ciBkZQogICAgdHlwZSAiaGVhbHRoIi4KICAtIHNvdXMgZGUgZm9ydGVzIGNoYXJnZXMsIG91IHN1ciB1biBy6XNlYXUgc2F0dXLpIG91IGTpZmVjdHVldXgsIGlsIGVzdAogICAgcG9zc2libGUgZGUgcGVyZHJlIGRlcyBwYXF1ZXRzLiBEdSBmYWl0IHF1ZSBsYSBwcmVtaehyZSByZXRyYW5zbWlzc2lvbgogICAgVENQIG4nYWl0IGxpZXUgcXUnYXUgYm91dCBkZSAzIHNlY291ZGVzLCBmaXhlciB1biB0aW1lb3V0IGRlIGNvbm5leGlvbgogICAgaW5m6XJpZXVyIOAgMyBzZWNvbmRlcyBuZSBwZXJtZXQgcGFzIGRlIHNlIHJhdHRyYXBlciBzdXIgbGEgcGVydGUKICAgIGRlIHBhcXVldHMgY2FyIGxhIHNlc3Npb24gYXVyYSDpdOkgYWJhbmRvbm7pZSBhdmFudCBsYSBwcmVtaehyZQogICAgcmV0cmFuc21pc3Npb24uIFVuZSB2YWxldXIgZGUgNCBzZWNvbmRlcyBy6WR1aXJhIGNvbnNpZOlyYWJsZW1lbnQKICAgIGxlIG5vbWJyZSBkJ+ljaGVjcyBkZSBjb25uZXhpb24uCgoyLjYpIFRlbnRhdGl2ZXMgZGUgcmVjb25uZXhpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxvcnMgZCd1biDpY2hlYyBkZSBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyLCBpbCBlc3QgcG9zc2libGUgZGUKcmV0ZW50ZXIgKHBvdGVudGllbGxlbWVudCB2ZXJzIHVuIGF1dHJlIHNlcnZldXIsIGVuIGNhcyBkZSBy6XBhcnRpdGlvbgpkZSBjaGFyZ2UpLiBMZSBub21icmUgZGUgbm91dmVsbGVzIHRlbnRhdGl2ZXMgaW5mcnVjdHVldXNlcyBhdmFudAphYmFuZG9uIGVzdCBmb3VybmkgcGFyIGxlIHBhcmFt6HRyZSAicmV0cmllcyIuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAgICAgIyBvbiBlc3NhaWUgZW5jb3JlIHRyb2lzIGZvaXMgbWF4aQogICAgICAgIHJldHJpZXMgMwoKSWwgZXN0IOAgbm90ZXIgcXVlIGxhIHRlbnRhdGl2ZSBkZSByZWNvbm5leGlvbiBwZXV0IGFtZW5lciDgIHV0aWxpc2VyIHVuIGF1dHJlCnNlcnZldXIgc2kgbGUgcHJlbWllciBhIGRpc3BhcnUgZW50cmUgZGV1eCB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbi4KCgoyLjcpIEFkcmVzc2UgZHUgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2ZXVyIHZlcnMgbGVxdWVsIHNvbnQgcmVkaXJpZ+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