From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17947 invoked by alias); 18 Aug 2002 08:16:03 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 17915 invoked by uid 71); 18 Aug 2002 08:16:01 -0000 Resent-Date: 18 Aug 2002 08:16:01 -0000 Resent-Message-ID: <20020818081601.17914.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, zhenggen@public1.ptt.js.cn Received: (qmail 17407 invoked by uid 61); 18 Aug 2002 08:10:46 -0000 Message-Id: <20020818081046.17406.qmail@sources.redhat.com> Date: Sun, 18 Aug 2002 02:51:00 -0000 From: zhenggen@public1.ptt.js.cn Reply-To: zhenggen@public1.ptt.js.cn To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: ada/7624: Internal error occurs while building Gtkada-1.2.12 package using gcc 3.2 X-SW-Source: 2002-08/txt/msg00361.txt.bz2 List-Id: >Number: 7624 >Category: ada >Synopsis: Internal error occurs while building Gtkada-1.2.12 package using gcc 3.2 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sun Aug 18 01:16:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: zhenggen >Release: gcc 3.2 release >Organization: >Environment: Redhat 7.2 with custom-building kernel 2.4.17 Reading specs from /usr/local/lib/gcc-lib/i586-pc-linux-gnu/3.2/specs Configured with: /home/zhenggen/gcc/configure --enable-languages=c,f77,ada,c++ Thread model: posix gcc version 3.2 Linux localhost.localdomain 2.4.7-10custom #3 ? 4? 19 21:07:24 CST 2002 i586 unknown Redhat 7.2 >Description: Gnat 3.13p passed the building of package Gtkada-1.2.12. Internal error occurs while building Gtkada-1.2.12 package using Ada-enabled GCC 3.2 . The error message suggests to submit a bug report. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="error.report" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="error.report" PT09PT09PT09PT09PT09PT09PT09Cj09PT09PUdDQyBpbmZvPT09PT09PQo9PT09PT09PT09PT09 PT09PT09PT0KClt6aGVuZ2dlbkBsb2NhbGhvc3QgR3RrQWRhLTEuMi4xMl0kIGdjYyAtdiA+PmVy cm9yLnJlcG9ydCAyPiYxCgpSZWFkaW5nIHNwZWNzIGZyb20gL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9pNTg2LXBjLWxpbnV4LWdudS8zLjIvc3BlY3MKQ29uZmlndXJlZCB3aXRoOiAvaG9tZS96aGVu Z2dlbi9nY2MvY29uZmlndXJlIC0tZW5hYmxlLWxhbmd1YWdlcz1jLGY3NyxhZGEsYysrClRocmVh ZCBtb2RlbDogcG9zaXgKZ2NjIHZlcnNpb24gMy4yCgo9PT09PT09PT09PT09PT09PT09PQo9PT1C b3ggaW5mbz09PT09PT09PQo9PT09PT09PT09PT09PT09PT09PQoKTGludXggbG9jYWxob3N0Lmxv Y2FsZG9tYWluIDIuNC43LTEwY3VzdG9tICMzIM7lIDTUwiAxOSAyMTowNzoyNCBDU1QgMjAwMiBp NTg2IHVua25vd24KUmVkaGF0IDcuMgoKPT09PT09PT09PT09PT09PT09PT0KPT09IEpvYiAgPT09 PT09PT09PT0KPT09PT09PT09PT09PT09PT09PT0KCmJ1aWxkaW5nIHBhY2thZ2UgR3RrQWRhLTEu Mi4xMgoKPT09PT09PT09PT09PT09PT09PT0KPT09IFN0YXR1cyAgID09PT09PT0KPT09PT09PT09 PT09PT09PT09PT0KR25hdCAzLjEzcCBidWlsdCAgdGhlIHBhY2thZ2Ugc3VjY2Vzc2Z1bGx5IHdo aWxlIGdjYy0zLjIgZmFpbHMuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPT0g RXJyb3JzIGR1cmluZyBidWlsZGluZyAgPT09PT09Cj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQoKbWFrZSAtQyBzcmMKbWFrZVsxXTogRW50ZXJpbmcgZGlyZWN0b3J5IGAvaG9tZS96 aGVuZ2dlbi91bnppcC9HdGtBZGEtMS4yLjEyL3NyYycKbWtkaXIgLXAgbGliLW9iagpjaG1vZCAr eCBnYXRlIGd0a2FkYS1jb25maWcKbWFrZSAtQyBndGtleHRyYQptYWtlWzJdOiBFbnRlcmluZyBk aXJlY3RvcnkgYC9ob21lL3poZW5nZ2VuL3VuemlwL0d0a0FkYS0xLjIuMTIvc3JjL2d0a2V4dHJh JwptYWtlWzJdOiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yIGBhbGwnLgptYWtlWzJdOiBMZWF2aW5n IGRpcmVjdG9yeSBgL2hvbWUvemhlbmdnZW4vdW56aXAvR3RrQWRhLTEuMi4xMi9zcmMvZ3RrZXh0 cmEnCgpnY2MgLWMgLUkuLi8gLU8yIC1nbmF0biAtZ25hdHd1d2wgLWZQSUMgLUktIC4uL2d0ay1l eHRyYS1wbG90X2RhdGEuYWRiCgorPT09PT09PT09PT09PT09PT09PT09PT09PT09R05BVCBCVUcg REVURUNURUQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCnwgMy4yIDIwMDIwODE0IChy ZWxlYXNlKSAoaTU4Ni1wYy1saW51eC1nbnUpIEdDQyBlcnJvcjogICAgICAgICAgICAgICAgICAg IHwKfCBJbnRlcm5hbCBjb21waWxlciBlcnJvciBpbiBhc3NpZ25fc3RhY2tfdGVtcF9mb3JfdHlw ZSwgYXQgICAgICAgICAgICAgICAgfAp8ICAgIGZ1bmN0aW9uLmM6Njc0ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRXJyb3IgZGV0ZWN0 ZWQgYXQgL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIvYWRhaW5j bHVkZS9zLXNlY3N0YS5hZHM6NjY6MTR8CnwgUGxlYXNlIHN1Ym1pdCBhIGJ1ZyByZXBvcnQsIHNl ZSBodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sLiAgICAgICAgICAgIHwKfCBJbmNsdWRlIHRo ZSBlbnRpcmUgY29udGVudHMgb2YgdGhpcyBidWcgYm94IGluIHRoZSByZXBvcnQuICAgICAgICAg ICAgICAgfAp8IEluY2x1ZGUgdGhlIGV4YWN0IGdjYyBvciBnbmF0bWFrZSBjb21tYW5kIHRoYXQg eW91IGVudGVyZWQuICAgICAgICAgICAgICB8CnwgQWxzbyBpbmNsdWRlIHNvdXJjZXMgbGlzdGVk IGJlbG93IGluIGduYXRjaG9wIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgIHwKfCAoY29uY2F0 ZW5hdGVkIHRvZ2V0aGVyIHdpdGggbm8gaGVhZGVycyBiZXR3ZWVuIGZpbGVzKS4gICAgICAgICAg ICAgICAgICAgfAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCgpQbGVhc2UgaW5jbHVkZSB0aGVzZSBzb3Vy Y2UgZmlsZXMgd2l0aCBlcnJvciByZXBvcnQKCi4uL2d0ay1leHRyYS1wbG90X2RhdGEuYWRiCi4u L2d0ay1leHRyYS1wbG90X2RhdGEuYWRzCi4uL2d0ay1leHRyYS5hZHMKLi4vZ3RrLmFkcwouLi9n bGliLmFkcwouLi9nZGsuYWRzCi4uL2d0ay13aWRnZXQuYWRzCi4uL2dkay1jb2xvci5hZHMKLi4v Z2RrLXZpc3VhbC5hZHMKLi4vZ2xpYi1nbGlzdC5hZHMKLi4vZ2RrLXR5cGVzLmFkcwouLi9nZGst ZXZlbnQuYWRzCi4uL2dkay1yZWN0YW5nbGUuYWRzCi4uL2dkay13aW5kb3cuYWRzCi4uL2dkay1j dXJzb3IuYWRzCi4uL2dkay13aW5kb3dfYXR0ci5hZHMKLi4vZ2RrLWJpdG1hcC5hZHMKLi4vZ3Rr LWFjY2VsX2dyb3VwLmFkcwouLi9ndGstb2JqZWN0LmFkcwouLi9ndGthZGEuYWRzCi4uL2d0a2Fk YS10eXBlcy5hZHMKLi4vZ3RrLWFkanVzdG1lbnQuYWRzCi4uL2d0ay1kYXRhLmFkcwouLi9ndGst ZW51bXMuYWRzCi4uL2d0ay1zdHlsZS5hZHMKLi4vZ2RrLWdjLmFkcwouLi9nZGstZm9udC5hZHMK Li4vZ2RrLXJlZ2lvbi5hZHMKLi4vZ2RrLXBpeG1hcC5hZHMKLi4vZ2xpYi1nc2xpc3QuYWRzCi4u L2dsaWItZ2xpc3QuYWRiCi4uL2dsaWItZ3NsaXN0LmFkYgoKY29tcGlsYXRpb24gYWJhbmRvbmVk CmduYXRtYWtlOiAiLi4vZ3RrLWV4dHJhLXBsb3RfZGF0YS5hZGIiIGNvbXBpbGF0aW9uIGVycm9y Cm1ha2VbMV06ICoqKiBbbGliLW9iai9tYWtlLm9dIEVycm9yIDQKbWFrZVsxXTogTGVhdmluZyBk aXJlY3RvcnkgYC9ob21lL3poZW5nZ2VuL3VuemlwL0d0a0FkYS0xLjIuMTIvc3JjJwptYWtlOiAq KiogW2FsbF0gRXJyb3IgMgoKPT09PT09PT09PT09PT09PT09PQo9PSBzb3VyY2UgZHVtcGluZz09 Cj09PT09PT09PT09PT09PT09PT0KCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEg LSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwMCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwg QnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQot LSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAt LQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNl bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAg ICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBB cyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmlj cyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVy IGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2Vz IG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRv IGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQot LSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25z IHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhl ICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKd2l0aCBHbGliOyAg ICAgICAgIHVzZSBHbGliOwp3aXRoIEd0ay5XaWRnZXQ7ICAgdXNlIEd0ay5XaWRnZXQ7CndpdGgg R3RrYWRhLlR5cGVzOyB1c2UgR3RrYWRhLlR5cGVzOwp3aXRoIEdkay5Db2xvcjsgICAgdXNlIEdk ay5Db2xvcjsKd2l0aCBJbnRlcmZhY2VzLkM7IHVzZSBJbnRlcmZhY2VzLkM7CgpwYWNrYWdlIGJv ZHkgR3RrLkV4dHJhLlBsb3RfRGF0YSBpcwoKICAgLS0tLS0tLS0tLS0tLQogICAtLSBHdGtfTmV3 IC0tCiAgIC0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBHdGtfTmV3CiAgICAgKERhdGEgOiBv dXQgR3RrX1Bsb3RfRGF0YTsgRnVuYyA6IFBsb3RfRnVuY3Rpb24gOj0gbnVsbCkgaXMKICAgYmVn aW4KICAgICAgRGF0YSA6PSBuZXcgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIEluaXRpYWxp emUgKERhdGEsIEZ1bmMpOwogICBlbmQgR3RrX05ldzsKCiAgIC0tLS0tLS0tLS0tLS0tLS0KICAg LS0gSW5pdGlhbGl6ZSAtLQogICAtLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgSW5pdGlh bGl6ZQogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkJ0NsYXNzOyBGdW5j IDogUGxvdF9GdW5jdGlvbiA6PSBudWxsKQogICBpcwogICAgICBmdW5jdGlvbiBJbnRlcm5hbCBy ZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAi Z3RrX3Bsb3RfZGF0YV9uZXciKTsKCiAgICAgIGZ1bmN0aW9uIEludGVybmFsMiAoRnVuYyA6IFBs b3RfRnVuY3Rpb24pIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgcHJhZ21hIEltcG9ydCAo QywgSW50ZXJuYWwyLCAiZ3RrX3Bsb3RfZGF0YV9uZXdfZnVuY3Rpb24iKTsKICAgYmVnaW4KICAg ICAgaWYgRnVuYyA9IG51bGwgdGhlbgogICAgICAgICBTZXRfT2JqZWN0IChEYXRhLCBJbnRlcm5h bCk7CiAgICAgIGVsc2UKICAgICAgICAgU2V0X09iamVjdCAoRGF0YSwgSW50ZXJuYWwyIChGdW5j KSk7CiAgICAgIGVuZCBpZjsKICAgICAgSW5pdGlhbGl6ZV9Vc2VyX0RhdGEgKERhdGEpOwogICBl bmQgSW5pdGlhbGl6ZTsKCiAgIC0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9OYW1lIC0tCiAgIC0t LS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X05hbWUgKERhdGEgOiBhY2Nlc3MgR3RrX1Bs b3RfRGF0YV9SZWNvcmQ7IE5hbWUgOiBTdHJpbmcpIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5h bCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBOYW1lIDogaW4gU3RyaW5nKTsKICAgICAgcHJhZ21h IEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9uYW1lIik7CiAgIGJlZ2lu CiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTmFtZSAmIEFTQ0lJLk5VTCk7CiAg IGVuZCBTZXRfTmFtZTsKCiAgIC0tLS0tLS0tLS0tCiAgIC0tIFBhaW50IC0tCiAgIC0tLS0tLS0t LS0tCgogICBwcm9jZWR1cmUgUGFpbnQgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNv cmQpIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKTsK ICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3BhaW50Iik7 CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSk7CiAgIGVuZCBQYWlu dDsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIERyYXdfUG9pbnRzIC0tCiAgIC0tLS0tLS0t LS0tLS0tLS0tCgogICBwcm9jZWR1cmUgRHJhd19Qb2ludHMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bs b3RfRGF0YV9SZWNvcmQ7IE4gOiBHaW50KSBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERh dGEgOiBTeXN0ZW0uQWRkcmVzczsgTiA6IEdpbnQpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJ bnRlcm5hbCwgImd0a19wbG90X2RhdGFfZHJhd19wb2ludHMiKTsKICAgYmVnaW4KICAgICAgSW50 ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBOKTsKICAgZW5kIERyYXdfUG9pbnRzOwoKICAgLS0t LS0tLS0tLS0tLS0tLS0KICAgLS0gRHJhd19TeW1ib2wgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0K CiAgIHByb2NlZHVyZSBEcmF3X1N5bWJvbAogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0Rh dGFfUmVjb3JkOyBYLCBZIDogR2RvdWJsZSkKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFs IChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IFgsIFkgOiBHZG91YmxlKTsKICAgICAgcHJhZ21hIElt cG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2RyYXdfc3ltYm9sIik7CiAgIGJlZ2lu CiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgWCwgWSk7CiAgIGVuZCBEcmF3X1N5 bWJvbDsKCiAgIC0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU2V0X1BvaW50cyAtLQogICAtLS0tLS0t LS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X1BvaW50cwogICAgIChEYXRhIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBYICAgIDogR2RvdWJsZV9BcnJheV9BY2Nlc3M7CiAg ICAgIFkgICAgOiBHZG91YmxlX0FycmF5X0FjY2VzczsKICAgICAgRHggICA6IEdkb3VibGVfQXJy YXlfQWNjZXNzOwogICAgICBEeSAgIDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpCiAgIGlzCiAgICAg IHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSAgICAgICA6IGluIFN5c3RlbS5BZGRyZXNzOwogICAg ICAgICAgICAgICAgICAgICAgICAgIFggICAgICAgICAgOiBpbiBTeXN0ZW0uQWRkcmVzczsKICAg ICAgICAgICAgICAgICAgICAgICAgICBZICAgICAgICAgIDogaW4gU3lzdGVtLkFkZHJlc3M7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgRHggICAgICAgICA6IGluIFN5c3RlbS5BZGRyZXNzOwog ICAgICAgICAgICAgICAgICAgICAgICAgIER5ICAgICAgICAgOiBpbiBTeXN0ZW0uQWRkcmVzczsK ICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1fUG9pbnRzIDogaW4gR2ludCk7CiAgICAgIHBy YWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfcG9pbnRzIik7CiAg ICAgIFhhLCBZYSwgRHhhLCBEeWEgOiBTeXN0ZW0uQWRkcmVzcyA6PSBTeXN0ZW0uTnVsbF9BZGRy ZXNzOwogICBiZWdpbgogICAgICBpZiBYIC89IG51bGwgdGhlbgogICAgICAgICBYYSA6PSBYIChY J0ZpcnN0KSdBZGRyZXNzOwogICAgICBlbmQgaWY7CgogICAgICBpZiBZIC89IG51bGwgdGhlbgog ICAgICAgICBZYSA6PSBZIChZJ0ZpcnN0KSdBZGRyZXNzOwogICAgICBlbmQgaWY7CgogICAgICBp ZiBEeCAvPSBudWxsIHRoZW4KICAgICAgICAgRHhhIDo9IER4IChEeCdGaXJzdCknQWRkcmVzczsK ICAgICAgZW5kIGlmOwoKICAgICAgaWYgRHkgLz0gbnVsbCB0aGVuCiAgICAgICAgIER5YSA6PSBE eSAoRHknRmlyc3QpJ0FkZHJlc3M7CiAgICAgIGVuZCBpZjsKCiAgICAgIEludGVybmFsIChHZXRf T2JqZWN0IChEYXRhKSwgWGEsIFlhLCBEeGEsIER5YSwgWCdMZW5ndGgpOwogICBlbmQgU2V0X1Bv aW50czsKCiAgIC0tLS0tLS0tLS0tLS0tLS0KICAgLS0gR2V0X1BvaW50cyAtLQogICAtLS0tLS0t LS0tLS0tLS0tCgogICBwcm9jZWR1cmUgR2V0X1BvaW50cwogICAgIChEYXRhIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBYICAgIDogb3V0IFBvaW50c19BcnJheTsKICAgICAg WSAgICA6IG91dCBQb2ludHNfQXJyYXk7CiAgICAgIER4ICAgOiBvdXQgUG9pbnRzX0FycmF5Owog ICAgICBEeSAgIDogb3V0IFBvaW50c19BcnJheSkKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVy bmFsIChEYXRhICAgICAgIDogaW4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgWCAgICAgICAgICA6IG91dCBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAg ICAgICAgICBZICAgICAgICAgIDogb3V0IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAg ICAgICAgICAgIER4ICAgICAgICAgOiBvdXQgU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgRHkgICAgICAgICA6IG91dCBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAg ICAgICAgICAgICAgICBOdW1fUG9pbnRzIDogb3V0IEdpbnQpOwogICAgICBwcmFnbWEgSW1wb3J0 IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X3BvaW50cyIpOwogICAgICBOdW1fUG9p bnRzIDogR2ludDsKICAgICAgWDEsIFkxLCBEeDEsIER5MSA6IFN5c3RlbS5BZGRyZXNzOwogICBi ZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFgxLCBZMSwgRHgxLCBEeTEs IE51bV9Qb2ludHMpOwogICAgICBYICA6PSAoUG9pbnRzID0+IFRvX0RvdWJsZV9BcnJheSAoWDEp LCAgTnVtX1BvaW50cyA9PiBOdW1fUG9pbnRzKTsKICAgICAgWSAgOj0gKFBvaW50cyA9PiBUb19E b3VibGVfQXJyYXkgKFkxKSwgIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50cyk7CiAgICAgIER4IDo9 IChQb2ludHMgPT4gVG9fRG91YmxlX0FycmF5IChEeDEpLCBOdW1fUG9pbnRzID0+IE51bV9Qb2lu dHMpOwogICAgICBEeSA6PSAoUG9pbnRzID0+IFRvX0RvdWJsZV9BcnJheSAoRHkxKSwgTnVtX1Bv aW50cyA9PiBOdW1fUG9pbnRzKTsKICAgZW5kIEdldF9Qb2ludHM7CgogICAtLS0tLS0tLS0tLQog ICAtLSBTZXRfWCAtLQogICAtLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9YCiAgICAgKERh dGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IFggOiBHZG91YmxlX0FycmF5X0FjY2Vz cykKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7 IFggOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAi Z3RrX3Bsb3RfZGF0YV9zZXRfeCIpOwogICBiZWdpbgogICAgICBwcmFnbWEgQXNzZXJ0IChHZXRf TnVtcG9pbnRzIChEYXRhKSA9IFgnTGVuZ3RoKTsKICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3Qg KERhdGEpLCBYIChYJ0ZpcnN0KSdBZGRyZXNzKTsKICAgZW5kIFNldF9YOwoKICAgLS0tLS0tLS0t LS0KICAgLS0gU2V0X1kgLS0KICAgLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfWQogICAg IChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBZIDogR2RvdWJsZV9BcnJheV9B Y2Nlc3MpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRy ZXNzOyBZIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5h bCwgImd0a19wbG90X2RhdGFfc2V0X3kiKTsKICAgYmVnaW4KICAgICAgcHJhZ21hIEFzc2VydCAo R2V0X051bXBvaW50cyAoRGF0YSkgPSBZJ0xlbmd0aCk7CiAgICAgIEludGVybmFsIChHZXRfT2Jq ZWN0IChEYXRhKSwgWSAoWSdGaXJzdCknQWRkcmVzcyk7CiAgIGVuZCBTZXRfWTsKCiAgIC0tLS0t LS0tLS0tCiAgIC0tIFNldF9aIC0tCiAgIC0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X1oK ICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgWiA6IEdkb3VibGVfQXJy YXlfQWNjZXNzKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0u QWRkcmVzczsgWiA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50 ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF96Iik7CiAgIGJlZ2luCiAgICAgIHByYWdtYSBBc3Nl cnQgKEdldF9OdW1wb2ludHMgKERhdGEpID0gWidMZW5ndGgpOwogICAgICBJbnRlcm5hbCAoR2V0 X09iamVjdCAoRGF0YSksIFogKFonRmlyc3QpJ0FkZHJlc3MpOwogICBlbmQgU2V0X1o7CgogICAt LS0tLS0tLS0tLQogICAtLSBTZXRfQSAtLQogICAtLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNl dF9BCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IEEgOiBHZG91Ymxl X0FycmF5X0FjY2VzcykKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lz dGVtLkFkZHJlc3M7IEEgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMs IEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfYSIpOwogICBiZWdpbgogICAgICBwcmFnbWEg QXNzZXJ0IChHZXRfTnVtcG9pbnRzIChEYXRhKSA9IEEnTGVuZ3RoKTsKICAgICAgSW50ZXJuYWwg KEdldF9PYmplY3QgKERhdGEpLCBBIChBJ0ZpcnN0KSdBZGRyZXNzKTsKICAgZW5kIFNldF9BOwoK ICAgLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9EeCAtLQogICAtLS0tLS0tLS0tLS0KCiAgIHByb2Nl ZHVyZSBTZXRfRHgKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgRHgg OiBHZG91YmxlX0FycmF5X0FjY2VzcykKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChE YXRhIDogU3lzdGVtLkFkZHJlc3M7IER4IDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEg SW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2V0X2R4Iik7CiAgIGJlZ2luCiAg ICAgIHByYWdtYSBBc3NlcnQgKEdldF9OdW1wb2ludHMgKERhdGEpID0gRHgnTGVuZ3RoKTsKICAg ICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBEeCAoRHgnRmlyc3QpJ0FkZHJlc3MpOwog ICBlbmQgU2V0X0R4OwoKICAgLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9EeSAtLQogICAtLS0tLS0t LS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfRHkKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9E YXRhX1JlY29yZDsgRHkgOiBHZG91YmxlX0FycmF5X0FjY2VzcykKICAgaXMKICAgICAgcHJvY2Vk dXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IER5IDogU3lzdGVtLkFkZHJlc3Mp OwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2V0X2R5 Iik7CiAgIGJlZ2luCiAgICAgIHByYWdtYSBBc3NlcnQgKEdldF9OdW1wb2ludHMgKERhdGEpID0g RHknTGVuZ3RoKTsKICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBEeSAoRHknRmly c3QpJ0FkZHJlc3MpOwogICBlbmQgU2V0X0R5OwoKICAgLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9E eiAtLQogICAtLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfRHoKICAgICAoRGF0YSA6IGFj Y2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgRHogOiBHZG91YmxlX0FycmF5X0FjY2VzcykKICAg aXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IER6IDog U3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19w bG90X2RhdGFfc2V0X2R6Iik7CiAgIGJlZ2luCiAgICAgIHByYWdtYSBBc3NlcnQgKEdldF9OdW1w b2ludHMgKERhdGEpID0gRHonTGVuZ3RoKTsKICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERh dGEpLCBEeiAoRHonRmlyc3QpJ0FkZHJlc3MpOwogICBlbmQgU2V0X0R6OwoKICAgLS0tLS0tLS0t LS0tCiAgIC0tIFNldF9EYSAtLQogICAtLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfRGEK ICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgRGEgOiBHZG91YmxlX0Fy cmF5X0FjY2VzcykKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVt LkFkZHJlc3M7IERhIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJ bnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2V0X2RhIik7CiAgIGJlZ2luCiAgICAgIHByYWdtYSBB c3NlcnQgKEdldF9OdW1wb2ludHMgKERhdGEpID0gRGEnTGVuZ3RoKTsKICAgICAgSW50ZXJuYWwg KEdldF9PYmplY3QgKERhdGEpLCBEYSAoRGEnRmlyc3QpJ0FkZHJlc3MpOwogICBlbmQgU2V0X0Rh OwoKICAgLS0tLS0tLS0tLS0KICAgLS0gR2V0X1ggLS0KICAgLS0tLS0tLS0tLS0KCiAgIGZ1bmN0 aW9uIEdldF9YIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSByZXR1cm4gUG9p bnRzX0FycmF5IGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJl c3M7IE51bV9Qb2ludHMgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgcmV0dXJuIFN5c3RlbS5B ZGRyZXNzOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFf Z2V0X3giKTsKCiAgICAgIE51bV9Qb2ludHMgOiBhbGlhc2VkIEdpbnQ7CiAgICAgIFMgOiBTeXN0 ZW0uQWRkcmVzcyA6PSBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIE51bV9Qb2ludHMnQWRk cmVzcyk7CiAgIGJlZ2luCiAgICAgIHJldHVybiAoUG9pbnRzID0+IFRvX0RvdWJsZV9BcnJheSAo UyksIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50cyk7CiAgIGVuZCBHZXRfWDsKCiAgIC0tLS0tLS0t LS0tCiAgIC0tIEdldF9ZIC0tCiAgIC0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBHZXRfWSAoRGF0 YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgcmV0dXJuIFBvaW50c19BcnJheSBpcwog ICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBOdW1fUG9pbnRz IDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAg cHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF95Iik7CgogICAg ICBOdW1fUG9pbnRzIDogYWxpYXNlZCBHaW50OwogICAgICBTIDogU3lzdGVtLkFkZHJlc3MgOj0g SW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBOdW1fUG9pbnRzJ0FkZHJlc3MpOwogICBiZWdp bgogICAgICByZXR1cm4gKFBvaW50cyA9PiBUb19Eb3VibGVfQXJyYXkgKFMpLCBOdW1fUG9pbnRz ID0+IE51bV9Qb2ludHMpOwogICBlbmQgR2V0X1k7CgogICAtLS0tLS0tLS0tLQogICAtLSBHZXRf WiAtLQogICAtLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2V0X1ogKERhdGEgOiBhY2Nlc3MgR3Rr X1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVybiBQb2ludHNfQXJyYXkgaXMKICAgICAgZnVuY3Rpb24g SW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgTnVtX1BvaW50cyA6IFN5c3RlbS5BZGRy ZXNzKQogICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgIHByYWdtYSBJbXBvcnQg KEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfeiIpOwoKICAgICAgTnVtX1BvaW50cyA6 IGFsaWFzZWQgR2ludDsKICAgICAgUyA6IFN5c3RlbS5BZGRyZXNzIDo9IEludGVybmFsIChHZXRf T2JqZWN0IChEYXRhKSwgTnVtX1BvaW50cydBZGRyZXNzKTsKICAgYmVnaW4KICAgICAgcmV0dXJu IChQb2ludHMgPT4gVG9fRG91YmxlX0FycmF5IChTKSwgTnVtX1BvaW50cyA9PiBOdW1fUG9pbnRz KTsKICAgZW5kIEdldF9aOwoKICAgLS0tLS0tLS0tLS0KICAgLS0gR2V0X0EgLS0KICAgLS0tLS0t LS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9BIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVj b3JkKSByZXR1cm4gUG9pbnRzX0FycmF5IGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFsIChEYXRh IDogU3lzdGVtLkFkZHJlc3M7IE51bV9Qb2ludHMgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAg cmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwg Imd0a19wbG90X2RhdGFfZ2V0X2EiKTsKCiAgICAgIE51bV9Qb2ludHMgOiBhbGlhc2VkIEdpbnQ7 CiAgICAgIFMgOiBTeXN0ZW0uQWRkcmVzcyA6PSBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSks IE51bV9Qb2ludHMnQWRkcmVzcyk7CiAgIGJlZ2luCiAgICAgIHJldHVybiAoUG9pbnRzID0+IFRv X0RvdWJsZV9BcnJheSAoUyksIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50cyk7CiAgIGVuZCBHZXRf QTsKCiAgIC0tLS0tLS0tLS0tLQogICAtLSBHZXRfRHggLS0KICAgLS0tLS0tLS0tLS0tCgogICBm dW5jdGlvbiBHZXRfRHggKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVy biBQb2ludHNfQXJyYXkgaXMKICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0u QWRkcmVzczsgTnVtX1BvaW50cyA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICByZXR1cm4gU3lz dGVtLkFkZHJlc3M7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3Rf ZGF0YV9nZXRfZHgiKTsKCiAgICAgIE51bV9Qb2ludHMgOiBhbGlhc2VkIEdpbnQ7CiAgICAgIFMg OiBTeXN0ZW0uQWRkcmVzcyA6PSBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIE51bV9Qb2lu dHMnQWRkcmVzcyk7CiAgIGJlZ2luCiAgICAgIHJldHVybiAoUG9pbnRzID0+IFRvX0RvdWJsZV9B cnJheSAoUyksIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50cyk7CiAgIGVuZCBHZXRfRHg7CgogICAt LS0tLS0tLS0tLS0KICAgLS0gR2V0X0R5IC0tCiAgIC0tLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24g R2V0X0R5IChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSByZXR1cm4gUG9pbnRz X0FycmF5IGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7 IE51bV9Qb2ludHMgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRy ZXNzOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0 X2R5Iik7CgogICAgICBOdW1fUG9pbnRzIDogYWxpYXNlZCBHaW50OwogICAgICBTIDogU3lzdGVt LkFkZHJlc3MgOj0gSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBOdW1fUG9pbnRzJ0FkZHJl c3MpOwogICBiZWdpbgogICAgICByZXR1cm4gKFBvaW50cyA9PiBUb19Eb3VibGVfQXJyYXkgKFMp LCBOdW1fUG9pbnRzID0+IE51bV9Qb2ludHMpOwogICBlbmQgR2V0X0R5OwoKICAgLS0tLS0tLS0t LS0tCiAgIC0tIEdldF9EeiAtLQogICAtLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9EeiAo RGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgcmV0dXJuIFBvaW50c19BcnJheSBp cwogICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBOdW1fUG9p bnRzIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAg ICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9keiIpOwoK ICAgICAgTnVtX1BvaW50cyA6IGFsaWFzZWQgR2ludDsKICAgICAgUyA6IFN5c3RlbS5BZGRyZXNz IDo9IEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTnVtX1BvaW50cydBZGRyZXNzKTsKICAg YmVnaW4KICAgICAgcmV0dXJuIChQb2ludHMgPT4gVG9fRG91YmxlX0FycmF5IChTKSwgTnVtX1Bv aW50cyA9PiBOdW1fUG9pbnRzKTsKICAgZW5kIEdldF9EejsKCiAgIC0tLS0tLS0tLS0tLQogICAt LSBHZXRfRGEgLS0KICAgLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBHZXRfRGEgIChEYXRhIDog YWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSByZXR1cm4gUG9pbnRzX0FycmF5IGlzCiAgICAg IGZ1bmN0aW9uIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IE51bV9Qb2ludHMgOiBT eXN0ZW0uQWRkcmVzcykKICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICBwcmFn bWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X2RhIik7CgogICAgICBO dW1fUG9pbnRzIDogYWxpYXNlZCBHaW50OwogICAgICBTIDogU3lzdGVtLkFkZHJlc3MgOj0gSW50 ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBOdW1fUG9pbnRzJ0FkZHJlc3MpOwogICBiZWdpbgog ICAgICByZXR1cm4gKFBvaW50cyA9PiBUb19Eb3VibGVfQXJyYXkgKFMpLCBOdW1fUG9pbnRzID0+ IE51bV9Qb2ludHMpOwogICBlbmQgR2V0X0RhOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAt LSBTZXRfTnVtcG9pbnRzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBT ZXRfTnVtcG9pbnRzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBOdW0gOiBH aW50KSBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsg TnVtIDogR2ludCk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3Rf ZGF0YV9zZXRfbnVtcG9pbnRzIik7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0 IChEYXRhKSwgTnVtKTsKICAgZW5kIFNldF9OdW1wb2ludHM7CgogICAtLS0tLS0tLS0tLS0tLS0t LS0tCiAgIC0tIEdldF9OdW1wb2ludHMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgZnVu Y3Rpb24gR2V0X051bXBvaW50cyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkg cmV0dXJuIEdpbnQgaXMKICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRk cmVzcykgcmV0dXJuIEdpbnQ7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3Rr X3Bsb3RfZGF0YV9nZXRfbnVtcG9pbnRzIik7CiAgIGJlZ2luCiAgICAgIHJldHVybiBJbnRlcm5h bCAoR2V0X09iamVjdCAoRGF0YSkpOwogICBlbmQgR2V0X051bXBvaW50czsKCiAgIC0tLS0tLS0t LS0tLS0tLS0KICAgLS0gU2V0X0xhYmVscyAtLQogICAtLS0tLS0tLS0tLS0tLS0tCgogICBwcm9j ZWR1cmUgU2V0X0xhYmVscwogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3Jk OwogICAgICBMYWJlbHMgOiBHdGthZGEuVHlwZXMuQ2hhcnNfUHRyX0FycmF5KQogICBpcwogICAg ICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgTGFiZWxzIDogQ2hh cnNfUHRyX0FycmF5KTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxv dF9kYXRhX3NldF9sYWJlbHMiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3Qg KERhdGEpLCBMYWJlbHMpOwogICBlbmQgU2V0X0xhYmVsczsKCiAgIC0tLS0tLS0tLS0tLS0tLS0K ICAgLS0gR2V0X0xhYmVscyAtLQogICAtLS0tLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBHZXRf TGFiZWxzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKQogICAgICByZXR1cm4g R3RrYWRhLlR5cGVzLkNoYXJzX1B0cl9BcnJheQogICBpcwogICAgICB0eXBlIFN0cl9BcnJheSBp cyBhcnJheSAoTmF0dXJhbCkgb2YgQ2hhcnNfUHRyOwogICAgICBmdW5jdGlvbiBJbnRlcm5hbCAo RGF0YSA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gU3RyX0FycmF5OwogICAgICBwcmFnbWEgSW1w b3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X2xhYmVscyIpOwoKICAgICAgTiA6 IGNvbnN0YW50IHNpemVfdCA6PSBzaXplX3QgKEdldF9OdW1wb2ludHMgKERhdGEpKTsKICAgYmVn aW4KICAgICAgcmV0dXJuIENoYXJzX1B0cl9BcnJheQogICAgICAgIChJbnRlcm5hbCAoR2V0X09i amVjdCAoRGF0YSkpKDAgLi4gSW50ZWdlciAoTikgLSAxKSk7CiAgIGVuZCBHZXRfTGFiZWxzOwoK ICAgLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU2hvd19MYWJlbHMgLS0KICAgLS0tLS0tLS0tLS0t LS0tLS0KCiAgIHByb2NlZHVyZSBTaG93X0xhYmVscwogICAgIChEYXRhIDogYWNjZXNzIEd0a19Q bG90X0RhdGFfUmVjb3JkOyBTaG93IDogQm9vbGVhbikKICAgaXMKICAgICAgcHJvY2VkdXJlIElu dGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IFNob3cgOiBHaW50KTsKICAgICAgcHJhZ21h IEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3Nob3dfbGFiZWxzIik7CiAgIGJl Z2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgQm9vbGVhbidQb3MgKFNob3cp KTsKICAgZW5kIFNob3dfTGFiZWxzOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg IC0tIExhYmVsc19TZXRfQXR0cmlidXRlcyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCiAgIHByb2NlZHVyZSBMYWJlbHNfU2V0X0F0dHJpYnV0ZXMKICAgICAoRGF0YSA6IGFjY2Vz cyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgRm9udCA6IFN0cmluZzsKICAgICAgSGVpZ2h0 IDogR2ludDsKICAgICAgQW5nbGUgIDogR2ludDsKICAgICAgRm9yZWdyb3VuZCA6IEdkay5Db2xv ci5HZGtfQ29sb3I7CiAgICAgIEJhY2tncm91bmQgOiBHZGsuQ29sb3IuR2RrX0NvbG9yKQogICBp cwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwKICAgICAgICAoRGF0YSA6IFN5c3RlbS5BZGRyZXNz OwogICAgICAgICBGb250IDogU3RyaW5nOwogICAgICAgICBIZWlnaHQsIEFuZ2xlIDogR2ludDsK ICAgICAgICAgRm9yZWdyb3VuZCwgQmFja2dyb3VuZCA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAg cHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2xhYmVsc19zZXRfYXR0 cmlidXRlcyIpOwoKICAgICAgRiA6IGFsaWFzZWQgR2RrX0NvbG9yIDo9IEZvcmVncm91bmQ7CiAg ICAgIEIgOiBhbGlhc2VkIEdka19Db2xvciA6PSBCYWNrZ3JvdW5kOwogICBiZWdpbgogICAgICBJ bnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIEZvbnQgJiBBU0NJSS5OVUwsIEhlaWdodCwgQW5n bGUsCiAgICAgICAgICAgICAgICBGJ0FkZHJlc3MsIEInQWRkcmVzcyk7CiAgIGVuZCBMYWJlbHNf U2V0X0F0dHJpYnV0ZXM7CgogICAtLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9TeW1ib2wgLS0K ICAgLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9TeW1ib2wKICAgICAoRGF0YSAg ICAgICAgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBUaGVfVHlwZSAgICAg OiBQbG90X1N5bWJvbF9UeXBlOwogICAgICBTdHlsZSAgICAgICAgOiBQbG90X1N5bWJvbF9TdHls ZTsKICAgICAgU2l6ZSAgICAgICAgIDogR2ludDsKICAgICAgTGluZV9XaWR0aCAgIDogR2Zsb2F0 OwogICAgICBDb2xvciAgICAgICAgOiBHZGsuQ29sb3IuR2RrX0NvbG9yOwogICAgICBCb3JkZXJf Q29sb3IgOiBHZGsuQ29sb3IuR2RrX0NvbG9yKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJu YWwKICAgICAgICAoRGF0YSAgICAgICAgICAgICAgICAgIDogU3lzdGVtLkFkZHJlc3M7CiAgICAg ICAgIFRoZV9UeXBlLCBTdHlsZSwgU2l6ZSA6IEdpbnQ7CiAgICAgICAgIExpbmVfV2lkdGggICAg ICAgICAgICA6IEdmbG9hdDsKICAgICAgICAgQ29sb3IsIEJvcmRlcl9Db2xvciAgIDogU3lzdGVt LkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2Rh dGFfc2V0X3N5bWJvbCIpOwogICAgICBDIDogYWxpYXNlZCBHZGtfQ29sb3IgOj0gQ29sb3I7CiAg ICAgIEIgOiBhbGlhc2VkIEdka19Db2xvciA6PSBCb3JkZXJfQ29sb3I7CiAgIGJlZ2luCiAgICAg IEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgUGxvdF9TeW1ib2xfVHlwZSdQb3MgKFRoZV9U eXBlKSwKICAgICAgICAgICAgICAgIFBsb3RfU3ltYm9sX1N0eWxlJ1BvcyAoU3R5bGUpLCBTaXpl LCBMaW5lX1dpZHRoLAogICAgICAgICAgICAgICAgQydBZGRyZXNzLCBCJ0FkZHJlc3MpOwogICBl bmQgU2V0X1N5bWJvbDsKCiAgIC0tLS0tLS0tLS0tLS0tLS0KICAgLS0gR2V0X1N5bWJvbCAtLQog ICAtLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgR2V0X1N5bWJvbAogICAgIChEYXRhICAg ICAgICAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFRoZV9UeXBlICAgICA6 IG91dCBQbG90X1N5bWJvbF9UeXBlOwogICAgICBTdHlsZSAgICAgICAgOiBvdXQgUGxvdF9TeW1i b2xfU3R5bGU7CiAgICAgIFNpemUgICAgICAgICA6IG91dCBHaW50OwogICAgICBMaW5lX1dpZHRo ICAgOiBvdXQgR2ludDsKICAgICAgQ29sb3IgICAgICAgIDogb3V0IEdkay5Db2xvci5HZGtfQ29s b3I7CiAgICAgIEJvcmRlcl9Db2xvciA6IG91dCBHZGsuQ29sb3IuR2RrX0NvbG9yKQogICBpcwog ICAgICBwcm9jZWR1cmUgSW50ZXJuYWwKICAgICAgICAoRGF0YSAgICAgICAgIDogU3lzdGVtLkFk ZHJlc3M7CiAgICAgICAgIFRoZV9UeXBlICAgICA6IG91dCBQbG90X1N5bWJvbF9UeXBlOwogICAg ICAgICBTdHlsZSAgICAgICAgOiBvdXQgUGxvdF9TeW1ib2xfU3R5bGU7CiAgICAgICAgIFNpemUg ICAgICAgICA6IG91dCBHaW50OwogICAgICAgICBMaW5lX1dpZHRoICAgOiBvdXQgR2ludDsKICAg ICAgICAgQ29sb3IgICAgICAgIDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIEJvcmRlcl9Db2xv ciA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJn dGtfcGxvdF9kYXRhX2dldF9zeW1ib2wiKTsKICAgICAgQywgQiA6IGFsaWFzZWQgR2RrX0NvbG9y OwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFRoZV9UeXBlLCBT dHlsZSwgU2l6ZSwgTGluZV9XaWR0aCwKICAgICAgICAgICAgICAgIEMnQWRkcmVzcywgQidBZGRy ZXNzKTsKICAgICAgQ29sb3IgOj0gQzsKICAgICAgQm9yZGVyX0NvbG9yIDo9IEI7CiAgIGVuZCBH ZXRfU3ltYm9sOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTZXRfQ29ubmVjdG9yIC0t CiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfQ29ubmVjdG9yCiAgICAg KERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IENvbm5lY3RvciA6IFBsb3RfQ29u bmVjdG9yKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRk cmVzczsgQ29ubmVjdG9yIDogR2ludCk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFs LCAiZ3RrX3Bsb3RfZGF0YV9zZXRfY29ubmVjdG9yIik7CiAgIGJlZ2luCiAgICAgIEludGVybmFs IChHZXRfT2JqZWN0IChEYXRhKSwgUGxvdF9Db25uZWN0b3InUG9zIChDb25uZWN0b3IpKTsKICAg ZW5kIFNldF9Db25uZWN0b3I7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEdldF9Db25u ZWN0b3IgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2V0X0Nvbm5lY3Rv ciAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkKICAgICAgcmV0dXJuIFBsb3Rf Q29ubmVjdG9yCiAgIGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFk ZHJlc3MpIHJldHVybiBHaW50OwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0 a19wbG90X2RhdGFfZ2V0X2Nvbm5lY3RvciIpOwogICBiZWdpbgogICAgICByZXR1cm4gUGxvdF9D b25uZWN0b3InVmFsIChJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSkpKTsKICAgZW5kIEdldF9D b25uZWN0b3I7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9MaW5lX0F0 dHJpYnV0ZXMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNl dF9MaW5lX0F0dHJpYnV0ZXMKICAgICAoRGF0YSAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNv cmQ7CiAgICAgIFN0eWxlIDogUGxvdF9MaW5lX1N0eWxlOwogICAgICBXaWR0aCA6IEdmbG9hdDsK ICAgICAgQ29sb3IgOiBHZGsuQ29sb3IuR2RrX0NvbG9yKQogICBpcwogICAgICBwcm9jZWR1cmUg SW50ZXJuYWwKICAgICAgICAoRGF0YSAgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgU3R5bGUg OiBHaW50OwogICAgICAgICBXaWR0aCA6IEdmbG9hdDsKICAgICAgICAgQ29sb3IgOiBTeXN0ZW0u QWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0 YV9zZXRfbGluZV9hdHRyaWJ1dGVzIik7CiAgICAgIEMgOiBhbGlhc2VkIEdka19Db2xvciA6PSBD b2xvcjsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBQbG90X0xp bmVfU3R5bGUnUG9zIChTdHlsZSksIFdpZHRoLAogICAgICAgICAgICAgICAgQydBZGRyZXNzKTsK ICAgZW5kIFNldF9MaW5lX0F0dHJpYnV0ZXM7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgIC0tIEdldF9MaW5lX0F0dHJpYnV0ZXMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQoKICAgcHJvY2VkdXJlIEdldF9MaW5lX0F0dHJpYnV0ZXMKICAgICAoRGF0YSAgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFN0eWxlIDogb3V0IFBsb3RfTGluZV9TdHlsZTsK ICAgICAgV2lkdGggOiBvdXQgR2Zsb2F0OwogICAgICBDb2xvciA6IG91dCBHZGsuQ29sb3IuR2Rr X0NvbG9yKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwKICAgICAgICAoRGF0YSAgOiBT eXN0ZW0uQWRkcmVzczsKICAgICAgICAgU3R5bGUgOiBvdXQgUGxvdF9MaW5lX1N0eWxlOwogICAg ICAgICBXaWR0aCA6IG91dCBHZmxvYXQ7CiAgICAgICAgIENvbG9yIDogU3lzdGVtLkFkZHJlc3Mp OwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X2xp bmVfYXR0cmlidXRlcyIpOwogICAgICBDIDogYWxpYXNlZCBHZGtfQ29sb3I7CiAgIGJlZ2luCiAg ICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgU3R5bGUsIFdpZHRoLCBDJ0FkZHJlc3Mp OwogICAgICBDb2xvciA6PSBDOwogICBlbmQgR2V0X0xpbmVfQXR0cmlidXRlczsKCiAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU2V0X1hfQXR0cmlidXRlcyAtLQogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X1hfQXR0cmlidXRlcwogICAgIChEYXRhICA6 IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgU3R5bGUgOiBQbG90X0xpbmVfU3R5 bGU7CiAgICAgIFdpZHRoIDogR2Zsb2F0OwogICAgICBDb2xvciA6IEdkay5Db2xvci5HZGtfQ29s b3IpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbAogICAgICAgIChEYXRhICA6IFN5c3Rl bS5BZGRyZXNzOwogICAgICAgICBTdHlsZSA6IEdpbnQ7CiAgICAgICAgIFdpZHRoIDogR2Zsb2F0 OwogICAgICAgICBDb2xvciA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAo QywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF94X2F0dHJpYnV0ZXMiKTsKICAgICAgQyA6 IGFsaWFzZWQgR2RrX0NvbG9yIDo9IENvbG9yOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0 X09iamVjdCAoRGF0YSksIFBsb3RfTGluZV9TdHlsZSdQb3MgKFN0eWxlKSwgV2lkdGgsCiAgICAg ICAgICAgICAgICBDJ0FkZHJlc3MpOwogICBlbmQgU2V0X1hfQXR0cmlidXRlczsKCiAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU2V0X1lfQXR0cmlidXRlcyAtLQogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X1lfQXR0cmlidXRlcwogICAgIChEYXRhICA6 IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgU3R5bGUgOiBQbG90X0xpbmVfU3R5 bGU7CiAgICAgIFdpZHRoIDogR2Zsb2F0OwogICAgICBDb2xvciA6IEdkay5Db2xvci5HZGtfQ29s b3IpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbAogICAgICAgIChEYXRhICA6IFN5c3Rl bS5BZGRyZXNzOwogICAgICAgICBTdHlsZSA6IEdpbnQ7CiAgICAgICAgIFdpZHRoIDogR2Zsb2F0 OwogICAgICAgICBDb2xvciA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAo QywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF95X2F0dHJpYnV0ZXMiKTsKICAgICAgQyA6 IGFsaWFzZWQgR2RrX0NvbG9yIDo9IENvbG9yOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0 X09iamVjdCAoRGF0YSksIFBsb3RfTGluZV9TdHlsZSdQb3MgKFN0eWxlKSwgV2lkdGgsCiAgICAg ICAgICAgICAgICBDJ0FkZHJlc3MpOwogICBlbmQgU2V0X1lfQXR0cmlidXRlczsKCiAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU2V0X1pfQXR0cmlidXRlcyAtLQogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X1pfQXR0cmlidXRlcwogICAgIChEYXRhICA6 IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgU3R5bGUgOiBQbG90X0xpbmVfU3R5 bGU7CiAgICAgIFdpZHRoIDogR2Zsb2F0OwogICAgICBDb2xvciA6IEdkay5Db2xvci5HZGtfQ29s b3IpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbAogICAgICAgIChEYXRhICA6IFN5c3Rl bS5BZGRyZXNzOwogICAgICAgICBTdHlsZSA6IEdpbnQ7CiAgICAgICAgIFdpZHRoIDogR2Zsb2F0 OwogICAgICAgICBDb2xvciA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAo QywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF96X2F0dHJpYnV0ZXMiKTsKICAgICAgQyA6 IGFsaWFzZWQgR2RrX0NvbG9yIDo9IENvbG9yOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0 X09iamVjdCAoRGF0YSksIFBsb3RfTGluZV9TdHlsZSdQb3MgKFN0eWxlKSwgV2lkdGgsCiAgICAg ICAgICAgICAgICBDJ0FkZHJlc3MpOwogICBlbmQgU2V0X1pfQXR0cmlidXRlczsKCiAgIC0tLS0t LS0tLS0tLS0tLS0tLS0KICAgLS0gU2hvd19YZXJyYmFycyAtLQogICAtLS0tLS0tLS0tLS0tLS0t LS0tCgogICBwcm9jZWR1cmUgU2hvd19YZXJyYmFycyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9E YXRhX1JlY29yZCkgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFk ZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFf c2hvd194ZXJyYmFycyIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0 YSkpOwogICBlbmQgU2hvd19YZXJyYmFyczsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0g U2hvd19ZZXJyYmFycyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2hv d19ZZXJyYmFycyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgaXMKICAgICAg cHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEg SW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2hvd195ZXJyYmFycyIpOwogICBi ZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSkpOwogICBlbmQgU2hvd19ZZXJy YmFyczsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU2hvd19aZXJyYmFycyAtLQogICAt LS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2hvd19aZXJyYmFycyAoRGF0YSA6IGFj Y2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChE YXRhIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwg Imd0a19wbG90X2RhdGFfc2hvd196ZXJyYmFycyIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAo R2V0X09iamVjdCAoRGF0YSkpOwogICBlbmQgU2hvd19aZXJyYmFyczsKCiAgIC0tLS0tLS0tLS0t LS0tLS0tLS0KICAgLS0gSGlkZV9YZXJyYmFycyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tCgog ICBwcm9jZWR1cmUgSGlkZV9YZXJyYmFycyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZCkgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3Mp OwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfaGlkZV94 ZXJyYmFycyIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSkpOwog ICBlbmQgSGlkZV9YZXJyYmFyczsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gSGlkZV9Z ZXJyYmFycyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgSGlkZV9ZZXJy YmFycyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgaXMKICAgICAgcHJvY2Vk dXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0 IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfaGlkZV95ZXJyYmFycyIpOwogICBiZWdpbgog ICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSkpOwogICBlbmQgSGlkZV9ZZXJyYmFyczsK CiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gSGlkZV9aZXJyYmFycyAtLQogICAtLS0tLS0t LS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgSGlkZV9aZXJyYmFycyAoRGF0YSA6IGFjY2VzcyBH dGtfUGxvdF9EYXRhX1JlY29yZCkgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDog U3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19w bG90X2RhdGFfaGlkZV96ZXJyYmFycyIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09i amVjdCAoRGF0YSkpOwogICBlbmQgSGlkZV9aZXJyYmFyczsKCiAgIC0tLS0tLS0tLS0tLS0tLQog ICAtLSBGaWxsX0FyZWEgLS0KICAgLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgRmlsbF9B cmVhIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBGaWxsIDogQm9vbGVhbikg aXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IEZpbGwg OiBHaW50KTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRh X2ZpbGxfYXJlYSIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSks IEJvb2xlYW4nUG9zIChGaWxsKSk7CiAgIGVuZCBGaWxsX0FyZWE7CgogICAtLS0tLS0tLS0tLS0t LS0tLS0tLQogICAtLSBBcmVhX0lzX0ZpbGxlZCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLQoK ICAgZnVuY3Rpb24gQXJlYV9Jc19GaWxsZWQgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9S ZWNvcmQpCiAgICAgIHJldHVybiBCb29sZWFuCiAgIGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFs IChEYXRhIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBHaW50OwogICAgICBwcmFnbWEgSW1wb3J0 IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfYXJlYV9pc19maWxsZWQiKTsKICAgYmVnaW4K ICAgICAgcmV0dXJuIEJvb2xlYW4nVmFsIChJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSkpKTsK ICAgZW5kIEFyZWFfSXNfRmlsbGVkOwoKICAgLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTZXRfTGVn ZW5kIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfTGVnZW5kIChEYXRh IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBMZWdlbmQgOiBTdHJpbmcpCiAgIGlzCiAg ICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBMZWdlbmQgOiBT dHJpbmcpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFf c2V0X2xlZ2VuZCIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSks IExlZ2VuZCAmIEFTQ0lJLk5VTCk7CiAgIGVuZCBTZXRfTGVnZW5kOwoKICAgLS0tLS0tLS0tLS0t LS0tLS0KICAgLS0gU2hvd19MZWdlbmQgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2Nl ZHVyZSBTaG93X0xlZ2VuZCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgaXMK ICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBw cmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2hvd19sZWdlbmQiKTsK ICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpKTsKICAgZW5kIFNob3df TGVnZW5kOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gSGlkZV9MZWdlbmQgLS0KICAgLS0t LS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBIaWRlX0xlZ2VuZCAoRGF0YSA6IGFjY2VzcyBH dGtfUGxvdF9EYXRhX1JlY29yZCkgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDog U3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19w bG90X2RhdGFfaGlkZV9sZWdlbmQiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmpl Y3QgKERhdGEpKTsKICAgZW5kIEhpZGVfTGVnZW5kOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAgLS0gU2V0X0xlZ2VuZF9QcmVjaXNpb24gLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfTGVnZW5kX1ByZWNpc2lvbgogICAgIChEYXRhIDog YWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBQcmVjaXNpb24gOiBHaW50KQogICBpcwogICAg ICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgUHJlY2lzaW9uIDog R2ludCk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9z ZXRfbGVnZW5kX3ByZWNpc2lvbiIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVj dCAoRGF0YSksIFByZWNpc2lvbik7CiAgIGVuZCBTZXRfTGVnZW5kX1ByZWNpc2lvbjsKCiAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEdldF9MZWdlbmRfUHJlY2lzaW9uIC0tCiAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBHZXRfTGVnZW5kX1ByZWNp c2lvbiAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkKICAgICAgcmV0dXJuIEdp bnQKICAgaXMKICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcykg cmV0dXJuIEdpbnQ7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3Rf ZGF0YV9nZXRfbGVnZW5kX3ByZWNpc2lvbiIpOwogICBiZWdpbgogICAgICByZXR1cm4gSW50ZXJu YWwgKEdldF9PYmplY3QgKERhdGEpKTsKICAgZW5kIEdldF9MZWdlbmRfUHJlY2lzaW9uOwoKICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU2V0X0dyYWRpZW50X01hc2sgLS0KICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfR3JhZGllbnRfTWFzawogICAg IChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBNYXNrIDogUGxvdF9HcmFkaWVu dCkKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7 IE1hc2sgOiBHaW50KTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxv dF9kYXRhX3NldF9ncmFkaWVudF9tYXNrIik7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRf T2JqZWN0IChEYXRhKSwgUGxvdF9HcmFkaWVudCdQb3MgKE1hc2spKTsKICAgZW5kIFNldF9HcmFk aWVudF9NYXNrOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gR2V0X0dyYWRpZW50 X01hc2sgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9HcmFk aWVudF9NYXNrIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKQogICAgICByZXR1 cm4gUGxvdF9HcmFkaWVudAogICBpcwogICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoRGF0YSA6IFN5 c3RlbS5BZGRyZXNzKSByZXR1cm4gR2ludDsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJu YWwsICJndGtfcGxvdF9kYXRhX2dldF9ncmFkaWVudF9tYXNrIik7CiAgIGJlZ2luCiAgICAgIHJl dHVybiBQbG90X0dyYWRpZW50J1ZhbCAoSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpKSk7CiAg IGVuZCBHZXRfR3JhZGllbnRfTWFzazsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg IC0tIEdyYWRpZW50X1NldF9WaXNpYmxlIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgogICBwcm9jZWR1cmUgR3JhZGllbnRfU2V0X1Zpc2libGUKICAgICAoRGF0YSA6IGFjY2VzcyBH dGtfUGxvdF9EYXRhX1JlY29yZDsgVmlzaWJsZSA6IEJvb2xlYW4pCiAgIGlzCiAgICAgIHByb2Nl ZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBWaXNpYmxlIDogR2ludCk7CiAg ICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9ncmFkaWVudF9z ZXRfdmlzaWJsZSIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSks IEJvb2xlYW4nUG9zIChWaXNpYmxlKSk7CiAgIGVuZCBHcmFkaWVudF9TZXRfVmlzaWJsZTsKCiAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gR3JhZGllbnRfVmlzaWJsZSAtLQogICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBHcmFkaWVudF9WaXNpYmxlIChEYXRhIDog YWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKQogICAgICByZXR1cm4gQm9vbGVhbgogICBpcwog ICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gR2lu dDsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dyYWRp ZW50X3Zpc2libGUiKTsKICAgYmVnaW4KICAgICAgcmV0dXJuIEJvb2xlYW4nVmFsIChJbnRlcm5h bCAoR2V0X09iamVjdCAoRGF0YSkpKTsKICAgZW5kIEdyYWRpZW50X1Zpc2libGU7CgogICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9HcmFkaWVudF9Db2xvcnMgLS0KICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9HcmFkaWVudF9Db2xvcnMK ICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgTWluLCBNYXgg OiBHZGsuQ29sb3IuR2RrX0NvbG9yKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERh dGEsIE1pbiwgTWF4IDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJ bnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2V0X2dyYWRpZW50X2NvbG9ycyIpOwogICAgICBNaSA6 IGFsaWFzZWQgR2RrX0NvbG9yIDo9IE1pbjsKICAgICAgTWEgOiBhbGlhc2VkIEdka19Db2xvciA6 PSBNYXg7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTWknQWRk cmVzcywgTWEnQWRkcmVzcyk7CiAgIGVuZCBTZXRfR3JhZGllbnRfQ29sb3JzOwoKICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBHZXRfR3JhZGllbnRfQ29sb3JzIC0tCiAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBHZXRfR3JhZGllbnRfQ29sb3JzCiAg ICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIE1pbiwgTWF4IDog b3V0IEdkay5Db2xvci5HZGtfQ29sb3IpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAo RGF0YSwgTWluLCBNYXggOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMs IEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfZ3JhZGllbnRfY29sb3JzIik7CiAgICAgIE1p LCBNYSA6IGFsaWFzZWQgR2RrX0NvbG9yOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09i amVjdCAoRGF0YSksIE1pJ0FkZHJlc3MsIE1hJ0FkZHJlc3MpOwogICAgICBNaW4gOj0gTWk7CiAg ICAgIE1heCA6PSBNYTsKICAgZW5kIEdldF9HcmFkaWVudF9Db2xvcnM7CgogICAtLS0tLS0tLS0t LS0tLS0tLS0KICAgLS0gU2V0X0dyYWRpZW50IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLQoKICAg cHJvY2VkdXJlIFNldF9HcmFkaWVudAogICAgIChEYXRhICAgICA6IGFjY2VzcyBHdGtfUGxvdF9E YXRhX1JlY29yZDsKICAgICAgTWluLCBNYXggOiBHZG91YmxlOwogICAgICBObGV2ZWxzICA6IEdp bnQpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNz OyBNaW4sIE1heCA6IEdkb3VibGU7IE4gOiBHaW50KTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywg SW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9ncmFkaWVudCIpOwogICBiZWdpbgogICAgICBJ bnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIE1pbiwgTWF4LCBObGV2ZWxzKTsKICAgZW5kIFNl dF9HcmFkaWVudDsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBHZXRfR3JhZGllbnQgLS0K ICAgLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgR2V0X0dyYWRpZW50CiAgICAgKERh dGEgICAgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBNaW4sIE1heCA6IG91 dCBHZG91YmxlOwogICAgICBObGV2ZWxzICA6IG91dCBHaW50KQogICBpcwogICAgICBwcm9jZWR1 cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAg ICAgICBNaW4sIE1heCA6IG91dCBHZG91YmxlOwogICAgICAgICAgICAgICAgICAgICAgICAgIE4g OiBvdXQgR2ludCk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3Rf ZGF0YV9nZXRfZ3JhZGllbnQiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3Qg KERhdGEpLCBNaW4sIE1heCwgTmxldmVscyk7CiAgIGVuZCBHZXRfR3JhZGllbnQ7CgogICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gR2V0X0dyYWRpZW50X0xldmVsIC0tCiAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIEdldF9HcmFkaWVudF9MZXZlbAogICAg IChEYXRhICA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgTGV2ZWwgOiBHZG91 YmxlOwogICAgICBDb2xvciA6IG91dCBHZGsuQ29sb3IuR2RrX0NvbG9yKQogICBpcwogICAgICBw cm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAg ICAgICAgICAgICBMZXZlbCA6IEdkb3VibGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29s b3IgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAi Z3RrX3Bsb3RfZGF0YV9nZXRfZ3JhZGllbnRfbGV2ZWwiKTsKICAgICAgQyA6IGFsaWFzZWQgR2Rr X0NvbG9yOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIExldmVs LCBDJ0FkZHJlc3MpOwogICAgICBDb2xvciA6PSBDOwogICBlbmQgR2V0X0dyYWRpZW50X0xldmVs OwoKICAgLS0tLS0tLS0tLS0tLS0KICAgLS0gU2V0X0xpbmsgLS0KICAgLS0tLS0tLS0tLS0tLS0K CiAgIHByb2NlZHVyZSBTZXRfTGluawogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFf UmVjb3JkOwogICAgICBMaW5rIDogU3lzdGVtLkFkZHJlc3MpCiAgIGlzCiAgICAgIHByb2NlZHVy ZSBJbnRlcm5hbCAoRGF0YSwgTGluayA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIElt cG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9saW5rIik7CiAgIGJlZ2luCiAg ICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTGluayk7CiAgIGVuZCBTZXRfTGluazsK CiAgIC0tLS0tLS0tLS0tLS0tCiAgIC0tIEdldF9MaW5rIC0tCiAgIC0tLS0tLS0tLS0tLS0tCgog ICBmdW5jdGlvbiBHZXRfTGluayAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkK ICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzCiAgIGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFs IChEYXRhIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgcHJh Z21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9saW5rIik7CiAgIGJl Z2luCiAgICAgIHJldHVybiBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSkpOwogICBlbmQgR2V0 X0xpbms7CgogICAtLS0tLS0tLS0tLS0tLS0tLQogICAtLSBSZW1vdmVfTGluayAtLQogICAtLS0t LS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFJlbW92ZV9MaW5rIChEYXRhIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkKSBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBT eXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bs b3RfZGF0YV9yZW1vdmVfbGluayIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVj dCAoRGF0YSkpOwogICBlbmQgUmVtb3ZlX0xpbms7CmVuZCBHdGsuRXh0cmEuUGxvdF9EYXRhOwot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUg R2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAg ICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAt LQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hh cmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAg ICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlz IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQot LSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBp ZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQs IG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAt LQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0 aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93 ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRh YmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAg ICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlvbj4KLS0gIFRoaXMgcGFja2FnZSBk ZWZpbmVzIHRoZSByb290IG9mIHRoZSBwbG90IGhpZXJhcmNoeS4gSXQgZGVmaW5lcyBzZXZlcmFs Ci0tICBkaXNwbGF5IHN0cmF0ZWdpZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBzaG93IHNjaWVudGlm aWMgZGF0YSBvbiB0aGUKLS0gIHNjcmVlbiAoc2VlIHRoZSBjaGlsZHJlbiBmb3IgM0QsIHBvbGFy LCBiYXJzLC4uLikKLS0KLS0gIEFsbCBjb29yZGluYXRlcyBhcmUgaW4gcGVyY2VudCBvZiB0aGUg dG90YWwgc2l6ZSBhbGxvY2F0ZXMgZm9yIHRoZSBkYXRhCi0tICBzZXQgKGllIHRoZSBhY3R1YWwg cG9zaXRpb24gaXMgKHggKiB3aWR0aCwgeSAqIGhlaWdodCksIHdoZXJlICh4LCB5KSBpcwotLSAg dGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgZGF0YSBzZXQgYW5kICh3aWR0aCwgaGVpZ2h0KSBpdHMg YWxsb2NhdGVkIHNjcmVlbgotLSAgc2l6ZS4KLS0gIDwvZGVzY3JpcHRpb24+Ci0tICA8Y192ZXJz aW9uPmd0aytleHRyYSAwLjk5LjE0PGNfdmVyc2lvbj4KCndpdGggR2xpYjsgdXNlIEdsaWI7Cndp dGggR3RrLldpZGdldDsKd2l0aCBHdGthZGEuVHlwZXM7CndpdGggR2RrLkNvbG9yOwp3aXRoIFVu Y2hlY2tlZF9Db252ZXJzaW9uOwoKcGFja2FnZSBHdGsuRXh0cmEuUGxvdF9EYXRhIGlzCgogICB0 eXBlIEd0a19QbG90X0RhdGFfUmVjb3JkIGlzIG5ldyBHdGsuV2lkZ2V0Lkd0a19XaWRnZXRfUmVj b3JkIHdpdGggcHJpdmF0ZTsKICAgdHlwZSBHdGtfUGxvdF9EYXRhIGlzIGFjY2VzcyBhbGwgR3Rr X1Bsb3RfRGF0YV9SZWNvcmQnQ2xhc3M7CiAgIC0tICBBIHNldCBvZiB2YWx1ZXMgdGhhdCBjYW4g YmUgcmVwcmVzZW50ZWQgb24gdGhlIHNjcmVlbi4gVGhlcmUgYXJlCiAgIC0tICBzZXZlcmFsIHN0 cmF0ZWdpZXMgdG8gc2V0IHRoZSB2YWx1ZXMsIGVpdGhlciBleHBsaWNpdGVseSBpbiB5b3VyCiAg IC0tICBhcHBsaWNhdGlvbiwgb3IgYnkgaGF2aW5nIHRoZW0gYXV0b21hdGljYWxseSBnZW5lcmF0 ZWQgYnkgYSBmdW5jdGlvbi4KCiAgIC0tLS0tLS0tLS0tCiAgIC0tIFR5cGVzIC0tCiAgIC0tLS0t LS0tLS0tCgogICB0eXBlIE5vX1JhbmdlX0dkb3VibGVfQXJyYXkgaXMgYXJyYXkgKE5hdHVyYWwp IG9mIEdkb3VibGU7CiAgIC0tICBBbiBhcnJheSBvZiB2YWx1ZXMuCiAgIC0tICBUaGlzIGlzIHVz ZWQgdG8gcmVwcmVzZW50IHRoZSBkYXRhIHZhbHVlcyBkaXNwbGF5ZWQgaW4gdGhlIHBsb3QuCiAg IC0tICBUaGlzIGFycmF5IGRvZXMgbm90IGhhdmUgYW55IHJhbmdlIGluZm9ybWF0aW9uIChzbyB0 aGF0IGl0IGNhbiBiZQogICAtLSAgZWFzaWx5IHJldHVybmVkIGZyb20gYSBDIGZ1bmN0aW9uLCB3 aXRob3V0IHJlcXVpcmluZyBhbiBleHRyYQogICAtLSAgY29weSBvZiB0aGUgdGFibGUpLiBZb3Ug Y2FuIG5vdCB1c2UgJ1JhbmdlIG9uIHRoaXMgYXJyYXkuCgogICB0eXBlIE5vX1JhbmdlX0dkb3Vi bGVfQXJyYXlfQWNjZXNzIGlzIGFjY2VzcyBhbGwgTm9fUmFuZ2VfR2RvdWJsZV9BcnJheTsKICAg LS0gIEFuIGFjY2VzcyB0byBhIGZsYXQgYXJyYXkuCgogICB0eXBlIEdkb3VibGVfQXJyYXlfQWNj ZXNzIGlzIGFjY2VzcyBhbGwgR2xpYi5HZG91YmxlX0FycmF5OwogICAtLSAgVGhlIHJlYXNvbiB3 ZSB1c2UgdGhpcyB0eXBlIGluIHRoZSBmdW5jdGlvbnMgYmVsb3cgaXMgYmVjYXVzZQogICAtLSAg Z3RrKy1leHRyYSBkb2VzIG5vdCBrZWVwIGEgY29weSBvZiB0aGUgYXJyYXlzLCBidXQgcG9pbnRz IHRvIHRoZSBvbmUKICAgLS0gIGdpdmVuIGluIGFyZ3VtZW50LiBUaHVzLCB0aGUgQWRhIGFycmF5 cyBzaG91bGQgbm90IGJlIGFsbG9jYXRlZCBvbiB0aGUKICAgLS0gIHN0YWNrLCBvciBhdCBsZWFz dCB0aGV5IHNob3VsZCBiZSBhdCBsaWJyYXJ5IGxldmVsLiBVc2luZyB0aGlzICdBY2Nlc3MKICAg LS0gIHdpbGwgZm9yY2UgdGhlIGNvbXBpbGVyIHRvIGRvIHRoZSBjaGVjayBmb3IgdXMuCgogICB0 eXBlIFBvaW50c19BcnJheSBpcyByZWNvcmQKICAgICAgUG9pbnRzICAgICA6IE5vX1JhbmdlX0dk b3VibGVfQXJyYXlfQWNjZXNzOwogICAgICBOdW1fUG9pbnRzIDogR2ludCA6PSAwOwogICBlbmQg cmVjb3JkOwogICAtLSAgVGhlIHBvaW50cyBhcmUgaW5kZXhlZCBmcm9tIDAgdG8gTnVtX1BvaW50 cy0xLgogICAtLSAgTm90ZSB0aGF0IHlvdSBjYW4ndCB1c2UgJ1JhbmdlLCAnRmlyc3Qgb3IgJ0xh c3Qgb24gUG9pbnRzLgoKCiAgIHR5cGUgUGxvdF9Db25uZWN0b3IgaXMgKENvbm5lY3RfTm9uZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gIE5vIGNvbm5lY3Rpb24KCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIENvbm5lY3RfU3RyYWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tICBzdHJhaWdodCBsaW5lCgogICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0 X1NwbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gIHNwbGluZSBvciBCZXppZXIg Y3VydmUKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RfSHZfU3RlcCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0gIEhvcml6b250YWwgdGhlbiB2ZXJ0aWNhbAoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdF9WaF9TdGVwLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAtLSAgVmVydGljYWwgdGhlbiBob3Jpem9udGFsCgogICAgICAgICAgICAgICAgICAg ICAgICAgICBDb25uZWN0X01pZGRsZV9TdGVwCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t ICBTcGxpdCBpbiB0aGUgbWlkZGxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgIC0t ICBUaGUgdHlwZSBvZiBjb25uZWN0aW9uIGJldHdlZW4gdHdvIGFkamFjZW50IHBvaW50cyBpbiBh IGdyYXBoLgoKICAgdHlwZSBQbG90X0dyYWRpZW50IGlzIG5ldyBJbnRlZ2VyOwogICAtLSAgSW5k aWNhdGUgd2hpY2ggY29sb3IgY29tcG9uZW50cyB2YXJ5IGFsb25nIHRoZSBncmFkaWVudAoKICAg R3JhZGllbnRfSCA6IGNvbnN0YW50IFBsb3RfR3JhZGllbnQ7IC0tICBIdWUKICAgR3JhZGllbnRf ViA6IGNvbnN0YW50IFBsb3RfR3JhZGllbnQ7IC0tICBWYWx1ZQogICBHcmFkaWVudF9TIDogY29u c3RhbnQgUGxvdF9HcmFkaWVudDsgLS0gIFNhdHVyYXRpb24KCiAgIHR5cGUgUGxvdF9TeW1ib2xf VHlwZSBpcyAoU3ltYm9sX05vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9s X1NxdWFyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xfQ2lyY2xlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbF9VcF9UcmlhbmdsZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTeW1ib2xfRG93bl9UcmlhbmdsZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTeW1ib2xfUmlnaHRfVHJpYW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3ltYm9sX0xlZnRfVHJpYW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U3ltYm9sX0RpYW1vbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sX1BsdXMs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sX0Nyb3NzLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN5bWJvbF9TdGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IFN5bWJvbF9Eb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sX0ltcHVsc2Up OwogICAtLSAgVHlwZSBvZiBzeW1ib2wgdXNlZCB0byByZXByZXNlbnQgdGhlIHBvaW50cyBpbiBh IGdyYXBoLgoKICAgdHlwZSBQbG90X1N5bWJvbF9TdHlsZSBpcyAoU3ltYm9sX0VtcHR5LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xfRmlsbGVkLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTeW1ib2xfT3BhcXVlKTsKICAgLS0gIFN0eWxlIHVzZWQgdG8gZHJhdyB0 aGUgcG9pbnRzIGluIGEgZ3JhcGguCgogICB0eXBlIFBsb3RfTGluZV9TdHlsZSBpcyAoTGluZV9O b25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZV9Tb2xpZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpbmVfRG90dGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg TGluZV9EYXNoZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lX0RvdF9EYXNoLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZV9Eb3RfRG90X0Rhc2gsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaW5lX0RvdF9EYXNoX0Rhc2gpOwogICAtLSAgTGluZXMgdXNlZCB0 byBjb25uZWN0IHR3byBhZGphY2VudCBwb2ludHMgaW4gYSBncmFwaC4KCiAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgIC0tIFBsb3QgZnVuY3Rpb25zIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgIC0tICBQbG90IGZ1bmN0aW9ucyBzaG91bGQgZ2VuZXJhdGUgYSB1bmlxdWUgWSB2YWx1ZSBn aXZlbiBhIHBhcmFtZXRlci4KICAgLS0gIFRoZXNlIGNhbiBiZSB1c2VkIGZvciBpbnN0YW5jZSB0 byByZXByZXNlbnQgZXhhY3RseSBtYXRoZW1hdGljYWwKICAgLS0gIGZ1bmN0aW9ucy4KICAgLS0g IE5vdGUgdGhhdCBkdWUgdG8gdGhlIEMgaW50ZXJmYWNlLCB0aGUgc3VicHJvZ3JhbXMgaW4gR3Rr LkV4dHJhLlBsb3QgYW5kCiAgIC0tICBpbiB0aGlzIHBhY2thZ2UgZXhwZWN0IGZ1bmN0aW9ucyB0 aGF0IHRha2UgYSBTeXN0ZW0uQWRkcmVzcyBhcyBhCiAgIC0tICBwYXJhbWV0ZXIuIEhvd2V2ZXIs IHNpbmNlIGl0IGlzIG11Y2ggbW9yZSBjb252ZW5pZW50IGluIHlvdXIgYXBwbGljYXRpb24KICAg LS0gIHRvIGdldCBhIEd0a19QbG90X1JlY29yZCBkaXJlY3RseSwgR3RrQWRhIGluY2x1ZGVzIGEg Z2VuZXJpYyBmdW5jdGlvbgogICAtLSAgdGhhdCBhdXRvbWF0aWNhbGx5IGRvZXMgdGhlIGNvbnZl cnNpb24gZm9yIHlvdSAoc2VlCiAgIC0tICBHdGsuUGxvdC5HZW5lcmljX1Bsb3RfRnVuY3Rpb24p LgoKICAgdHlwZSBQbG90X0Z1bmN0aW9uIGlzIGFjY2VzcyBmdW5jdGlvbgogICAgIChQbG90ICA6 IFN5c3RlbS5BZGRyZXNzOwogICAgICBTZXQgICA6IEd0a19QbG90X0RhdGE7CiAgICAgIFggICAg IDogR2RvdWJsZTsKICAgICAgRXJyb3IgOiBhY2Nlc3MgR2Jvb2xlYW4pCiAgICAgcmV0dXJuIEdk b3VibGU7CiAgIC0tICBGdW5jdGlvbiB1c2VkIGZvciBwbG90dGluZy4KICAgLS0gIEl0IHNob3Vs ZCByZXR1cm4gdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBYIGluIGl0cyBncmFwaCwgYW5kIHNl dAogICAtLSAgRXJyb3IgdG8gVHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgY2FsY3Vs YXRpbmcgdGhlIHZhbHVlLgoKICAgcHJhZ21hIENvbnZlbnRpb24gKEMsIFBsb3RfRnVuY3Rpb24p OwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBDcmVhdGluZyBhIERhdGEgc2V0 IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBHdGtfTmV3IChE YXRhIDogb3V0IEd0a19QbG90X0RhdGE7IEZ1bmMgOiBQbG90X0Z1bmN0aW9uIDo9IG51bGwpOwog ICAtLSAgQ3JlYXRlcyBhIG5ldyBkYXRhIHNldC4gSXRzIHZhbHVlcyBjYW4gZWl0aGVyIGJlIGdl bmVyYXRlZCBhdXRvbWF0aWNhbGx5CiAgIC0tICBmcm9tIEZ1bmMsIG9yIHdpbGwgaGF2ZSB0byBi ZSBzZXQgZXhwbGljaXRlbHkgdXNpbmcgdGhlIG90aGVyCiAgIC0tICBzdWJwcm9ncmFtcyBpbiB0 aGlzIHBhY2thZ2UuCgogICBwcm9jZWR1cmUgSW5pdGlhbGl6ZQogICAgIChEYXRhIDogYWNjZXNz IEd0a19QbG90X0RhdGFfUmVjb3JkJ0NsYXNzOyBGdW5jIDogUGxvdF9GdW5jdGlvbiA6PSBudWxs KTsKICAgLS0gIEludGVybmFsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgogICAtLSAgU2VlIHRo ZSBzZWN0aW9uICJDcmVhdGluZyB5b3VyIG93biB3aWRnZXRzIiBpbiB0aGUgZG9jdW1lbnRhdGlv bi4KCiAgIGZ1bmN0aW9uIEdldF9UeXBlIHJldHVybiBHdGsuR3RrX1R5cGU7CiAgIC0tICBSZXR1 cm4gdGhlIGludGVybmFsIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIEd0a19QbG90X0RhdGEuCgog ICBwcm9jZWR1cmUgU2V0X05hbWUgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7 IE5hbWUgOiBTdHJpbmcpOwogICAtLSAgU2V0IHRoZSBuYW1lIHVzZWQgaW50ZXJuYWxseSBmb3Ig dGhhdCBkYXRhc2V0LgogICAtLSAgVGhpcyBuYW1lIGRvZXMgbm90IGFwcGVhciBhbnl3aGVyZSBv biB0aGUgc2NyZWVuLCBidXQgaXQgaXMgZWFzaWVyIHRvCiAgIC0tICBmaW5kIHRoZSBkYXRhc2V0 IGFmdGVyd2FyZCBieSB1c2luZyB0aGlzIG5hbWUuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAg IC0tIERyYXdpbmcgYSBzZXQgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgQWx0aG91 Z2ggYSBzZXQgaXMgYmFzaWNhbGx5IGEgbGlzdCBvZiB2YWx1ZXMsIGl0IGlzIGNsb3NlbHkgYXNz b2NpYXRlZAogICAtLSAgd2l0aCBpdHMgcmVwcmVzZW50YXRpb24gb24gdGhlIHNjcmVlbiAoc2Vl IHRoZSBjaGlsZHJlbiBvZiBHdGtfUGxvdF9EYXRhCiAgIC0tICBmb3IgdmFyaW91cyBwb3NzaWJs ZSByZXByZXNlbnRhdGlvbnMpLgogICAtLSAgVGhlIEd0ay5FeHRyYSBwYWNrYWdlcyBhcmUgZGVz aWduZWQgc28gdGhhdCB0aGUgZHJhd2luZyBjYW4gYmUgZG9uZQogICAtLSAgZWl0aGVyIHRvIHRo ZSBzY3JlZW4gKHRocm91Z2ggYSBHZGsgYWRhcHRlciksIHRvIGEgcG9zdHNjcmlwdCBmaWxlIGZv cgogICAtLSAgZWFzeSBwcmludGluZywgb3IgdG8gYW55IG90aGVyIG1lZGlhLgoKICAgcHJvY2Vk dXJlIFBhaW50IChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKTsKICAgLS0gIEVt aXRzIHRoZSAiZHJhd19kYXRhIiBzaWduYWwgdG8gcmVxdWVzdCBhIHJlZHJhd2luZyBvZiB0aGUg ZGF0YSBzZXQuCgogICBwcm9jZWR1cmUgRHJhd19Qb2ludHMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bs b3RfRGF0YV9SZWNvcmQ7IE4gOiBHaW50KTsKICAgLS0gIERyYXcgYXQgbW9zdCBOIHZhbHVlcyBv ZiB0aGUgRGF0YSBzZXQgb24gdGhlIHNjcmVlbi4gSWYgTiBpcyBncmVhdGVyCiAgIC0tICB0aGFu IHRoZSBhY3R1YWwgbnVtYmVyIG9mIHZhbHVlcyBpbiBEYXRhLCB0aGVuIHRoZXkgYXJlIGFsbCBk aXNwbGF5ZWQuCgogICBwcm9jZWR1cmUgRHJhd19TeW1ib2wgKERhdGEgOiBhY2Nlc3MgR3RrX1Bs b3RfRGF0YV9SZWNvcmQ7IFgsIFkgOiBHZG91YmxlKTsKICAgLS0gIERyYXcgdGhlIGN1cnJlbnQg c3ltYm9sIChzZWUgU2V0X1N5bWJvbCkgYXQgc3BlY2lmaWMgY29vcmRpbmF0ZXMgb24KICAgLS0g IHRoZSBzY3JlZW4uCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIE1hbmlwdWxh dGluZyB2YWx1ZXMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJl IFNldF9Qb2ludHMKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAg ICAgWCAgICA6IEdkb3VibGVfQXJyYXlfQWNjZXNzOwogICAgICBZICAgIDogR2RvdWJsZV9BcnJh eV9BY2Nlc3M7CiAgICAgIER4ICAgOiBHZG91YmxlX0FycmF5X0FjY2VzczsKICAgICAgRHkgICA6 IEdkb3VibGVfQXJyYXlfQWNjZXNzKTsKICAgLS0gIFNldCBzb21lIGV4cGxpY2l0IHBvaW50cyBp biB0aGUgc2V0LgogICAtLSAgTm90ZSB0aGF0IHRoZSBzZXQgbXVzdCBub3QgYmUgYXNzb2NpYXRl ZCB3aXRoIGEgZnVuY3Rpb24sIG9yIHRoZSBwb2ludHMKICAgLS0gIHdpbGwgc2ltcGx5IGJlIGln bm9yZWQuCiAgIC0tICBBbGwgb2YgdGhlIGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3Ro LCB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkCiAgIC0tICBvdGhlcndpc2UuCiAgIC0tICBYIGFu ZCBZIGFyZSB0aGUgbGlzdCBvZiBjb29yZGluYXRlcyBvZiB0aGUgcG9pbnRzLgogICAtLSAgRHgg YW5kIER5IGFyZSB0aGUgbGlzdCBvZiBzaXplIChwcmVjaXNpb24pIG9mIHRoZXNlIHBvaW50cy4g QSBiaWdnZXIKICAgLS0gIHN5bWJvbCB3aWxsIGJlIGRpc3BsYXllZCBmb3IgdGhlIHBvaW50IHdo b3NlIChEeCwgRHkpIHZhbHVlIGlzIGJpZ2dlci4KCiAgIHByb2NlZHVyZSBHZXRfUG9pbnRzCiAg ICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFggICAgOiBvdXQg UG9pbnRzX0FycmF5OwogICAgICBZICAgIDogb3V0IFBvaW50c19BcnJheTsKICAgICAgRHggICA6 IG91dCBQb2ludHNfQXJyYXk7CiAgICAgIER5ICAgOiBvdXQgUG9pbnRzX0FycmF5KTsKICAgLS0g IFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBvaW50cyBpbiB0aGUgc2V0LgogICAtLSAgTnVsbC1s ZW5ndGggYXJyYXlzIGFyZSByZXR1cm5lZCBpZiB0aGUgc2V0IGlzIGFzc29jaWF0ZWQgd2l0aCBh CiAgIC0tICBmdW5jdGlvbiwgc2luY2Ugbm8gZXhwbGljaXQgcG9pbnQgaGFzIGJlZW4gc2V0Lgog ICAtLSAgU2VlIFNldF9Qb2ludHMgZm9yIGEgZGVmaW5pdGlvbiBvZiBYLCBZLCBEeCBhbmQgRHku CgogICBwcm9jZWR1cmUgU2V0X1gKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZDsgWCA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKTsKICAgcHJvY2VkdXJlIFNldF9ZCiAgICAg KERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IFkgOiBHZG91YmxlX0FycmF5X0Fj Y2Vzcyk7CiAgIHByb2NlZHVyZSBTZXRfWgogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0Rh dGFfUmVjb3JkOyBaIDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpOwogICBwcm9jZWR1cmUgU2V0X0EK ICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgQSA6IEdkb3VibGVfQXJy YXlfQWNjZXNzKTsKICAgLS0gIFNldCB0aGUgdmFsdWVzIGZvciBvbmUgc3BlY2lmaWMgY29vcmRp bmF0ZSBpbiB0aGUgc2V0LgogICAtLSAgVGhlIGFycmF5IG11c3QgaGF2ZSBhIGxlbmd0aCBvZiBH ZXRfTnVtcG9pbnRzIChpZiBHdGtBZGEgd2FzCiAgIC0tICBjb21waWxlZCB3aXRoIGFzc2VydGlv bnMgZW5hYmxlZCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGlmIHRoZQogICAtLSAgbGVu Z3RoIGFyZSBkaWZmZXJlbnQpLgogICAtLSAgTm8gY29weSBvZiB0aGUgYXJyYXkgaXMgbWFkZSBm b3IgZWZmaWNpZW5jeSByZWFzb25zLCB0aHVzIG1vZGlmeWluZwogICAtLSAgdGhlIGFycmF5IGNv bnRlbnQgbGF0ZXIgb24gd2lsbCBhbHNvIG1vZGlmeSB0aGUgcGxvdC4KICAgLS0KICAgLS0gICJB IiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHNpemUgb2YgdGhlIHN5bWJvbHMuIFdoZW4gcGxvdHRp bmcgYm94ZXMgaW4KICAgLS0gIHR3byBkaW1lbnNpb25zLCAiWiIgaXMgdXNlZCB0byBzcGVjaWZ5 IHRoZSBzaXplIG9mIHRoZSBib3guCgogICBwcm9jZWR1cmUgU2V0X0R4CiAgICAgKERhdGEgOiBh Y2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IER4IDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpOwog ICBwcm9jZWR1cmUgU2V0X0R5CiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNv cmQ7IER5IDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpOwogICBwcm9jZWR1cmUgU2V0X0R6CiAgICAg KERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IER6IDogR2RvdWJsZV9BcnJheV9B Y2Nlc3MpOwogICAtLSAgU2V0IHRoZSBwcmVjaXNpb24gb2YgdGhlIHBvaW50cyBpbiB0aGUgc2V0 LiBBIGJpZ2dlciBzeW1ib2wgaXMgZGlzcGxheWVkCiAgIC0tICBmb3IgdGhlIHBvaW50cyB3aG9z ZSAoRHgsIER5LCBEeikgaXMgYmlnZ2VyLgogICAtLSAgVGhlIGFycmF5IG11c3QgaGF2ZSBhIGxl bmd0aCBvZiBHZXRfTnVtcG9pbnRzIChpZiBHdGtBZGEgd2FzCiAgIC0tICBjb21waWxlZCB3aXRo IGFzc2VydGlvbnMgZW5hYmxlZCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIGlmIHRoZQog ICAtLSAgbGVuZ3RoIGFyZSBkaWZmZXJlbnQpLgogICAtLSAgTm8gY29weSBvZiB0aGUgYXJyYXkg aXMgbWFkZSBmb3IgZWZmaWNpZW5jeSByZWFzb25zLCB0aHVzIG1vZGlmeWluZwogICAtLSAgdGhl IGFycmF5IGNvbnRlbnQgbGF0ZXIgb24gd2lsbCBhbHNvIG1vZGlmeSB0aGUgcGxvdC4KCiAgIHBy b2NlZHVyZSBTZXRfRGEKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsg RGEgOiBHZG91YmxlX0FycmF5X0FjY2Vzcyk7CiAgIC0tICBTcGVjaWZpZXMgdGhlIGNvbG9ycyB0 byB1c2UgZm9yIHRoZSBwb2ludHMuCiAgIC0tICBUaGUgY29sb3Igb2YgdGhlIHN5bWJvbHMgaXMg ZGV0ZW1pbmVkIHVzaW5nIHRoZSBncmFkaWVudC4gdGhlIGdyYWRpZW50CiAgIC0tICBoYXMgKG1p biwgbWF4KSB2YWx1ZXMsIGFuZCBjb3JyZXNwb25kaW5nIGNvbG9ycy4gVGhlIHN5bWJvbCdzIGNv bG9yIGlzCiAgIC0tICBpbnRlcnBvbGF0ZWQgYmV0d2VlbiB0aGVzZSB2YWx1ZXMgdXNpbmcgaHVl L3NhdHVyYXRpb24vdmFsdWUgZGVwZW5kaW5nCiAgIC0tICBvbiB0aGUgZ3JhZGllbnRfbWFzay4K CiAgIGZ1bmN0aW9uIEdldF9YICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkg cmV0dXJuIFBvaW50c19BcnJheTsKICAgZnVuY3Rpb24gR2V0X1kgIChEYXRhIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkKSByZXR1cm4gUG9pbnRzX0FycmF5OwogICBmdW5jdGlvbiBHZXRf WiAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVybiBQb2ludHNfQXJy YXk7CiAgIGZ1bmN0aW9uIEdldF9BICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29y ZCkgcmV0dXJuIFBvaW50c19BcnJheTsKICAgZnVuY3Rpb24gR2V0X0R4IChEYXRhIDogYWNjZXNz IEd0a19QbG90X0RhdGFfUmVjb3JkKSByZXR1cm4gUG9pbnRzX0FycmF5OwogICBmdW5jdGlvbiBH ZXRfRHkgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVybiBQb2ludHNf QXJyYXk7CiAgIGZ1bmN0aW9uIEdldF9EeiAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZCkgcmV0dXJuIFBvaW50c19BcnJheTsKICAgZnVuY3Rpb24gR2V0X0RhIChEYXRhIDogYWNj ZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSByZXR1cm4gUG9pbnRzX0FycmF5OwogICAtLSAgUmV0 dXJuIHRoZSBjb29yZGluYXRlcyBmb3IgdGhlIHBvaW50cyBpbiB0aGUgc2V0LgogICAtLSAgVGhp cyBpcyBhIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgQyBhcnJheSwgdGh1cyBtb2Rp ZnlpbmcgdGhpcwogICAtLSAgYXJyYXkncyBjb250ZW50cyBhbHNvIG1vZGlmaWVzIHRoZSBncmFw aC4KICAgLS0gIFNlZSB0aGUgY29ycmVzcG9uZGluZyBTZXRfKiBmdW5jdGlvbnMgZm9yIGEgZGVm aW5pdGlvbiBvZiB0aGUKICAgLS0gIGNvb3JkaW5hdGVzCgogICBwcm9jZWR1cmUgU2V0X051bXBv aW50cyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgTnVtIDogR2ludCk7CiAg IC0tICBTZXQgdGhlIG51bWJlciBvZiBwb2ludHMgdGhhdCBzaG91bGQgYmUgZXhwZWN0ZWQgaW4g dGhlIGdyYXBoLgogICAtLSAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYXV0b21hdGljYWxseSBy ZXNpemUgYWxsIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUsCiAgIC0tICBpdCBqdXN0IGluZGljYXRl cyB3aGF0IHNpemUgdGhlIHBhcmFtZXRlcnMgdG8gU2V0X1gsIFNldF9ZLC4uLiBzaG91bGQKICAg LS0gIGhhdmUuCgogICBmdW5jdGlvbiBHZXRfTnVtcG9pbnRzIChEYXRhIDogYWNjZXNzIEd0a19Q bG90X0RhdGFfUmVjb3JkKSByZXR1cm4gR2ludDsKICAgLS0gIFJldHVybiB0aGUgbnVtYmVyIG9m IHBvaW50cyBleHBlY3RlZCBpbiB0aGUgZ3JhcGguCgogICAtLS0tLS0tLS0tLS0KICAgLS0gTGFi ZWxzIC0tCiAgIC0tLS0tLS0tLS0tLQogICAtLSAgRWFjaCBwb2ludCBpbiB0aGUgZGF0YSBzZXQg Y2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGxhYmVsIHRoYXQgZGVzY3JpYmVzCiAgIC0tICBpdC4g VGhpcyBpcyBvbmx5IHJlbGV2YW50IGZvciBkYXRhIHNldHMgd2hlcmUgeW91IGV4cGxpY2l0ZWx5 IGdpdmUKICAgLS0gIHZhbHVlcywgbm90IHdoZW4gdGhlIHZhbHVlcyBhcmUgZ2VuZXJhdGVkIGJ5 IGEgZnVuY3Rpb24uCgogICBwcm9jZWR1cmUgU2V0X0xhYmVscwogICAgIChEYXRhIDogYWNjZXNz IEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBMYWJlbHMgOiBHdGthZGEuVHlwZXMuQ2hhcnNf UHRyX0FycmF5KTsKICAgLS0gIFNldCB0aGUgbGFiZWxzIGFzc29jaWF0ZWQgd2hpY2ggZWFjaCBw b2ludCBpbiB0aGUgY2FudmFzLgogICAtLSAgVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBHZXRfTnVt cG9pbnRzIGVsZW1lbnRzIGluIExhYmVscywgb3IgdGhlCiAgIC0tICBiZWhhdmlvciBpcyB1bmRl ZmluZWQKCiAgIGZ1bmN0aW9uIEdldF9MYWJlbHMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0 YV9SZWNvcmQpCiAgICAgIHJldHVybiBHdGthZGEuVHlwZXMuQ2hhcnNfUHRyX0FycmF5OwogICAt LSAgUmV0dXJuIHRoZSBsYWJlbHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwb2ludHMgaW4gdGhlIGRh dGEgc2V0LgogICAtLSAgTm90ZSB0aGF0IHRoaXMgcmV0dXJucyBhICpjb3B5KiBvZiB0aGUgYWN0 dWFsIGFycmF5LCBhbmQgdGh1cyBtaWdodAogICAtLSAgYmUgZXhwZW5zaXZlIHRvIGNhbGwuCgog ICBwcm9jZWR1cmUgU2hvd19MYWJlbHMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNv cmQ7IFNob3cgOiBCb29sZWFuKTsKICAgLS0gIEluZGljYXRlIHdoZXRoZXIgdGhlIGxhYmVscyBz aG91bGQgYmUgZGlzcGxheWVkIG5leHQgdG8gZWFjaCBwb2ludCBpbgogICAtLSAgdGhlIGRhdGEg c2V0LiBUaGlzIGhhcyBubyBlZmZlY3QgaWYgbm8gbGFiZWxzIHdlcmUgc3BlY2lmaWVkLgoKICAg cHJvY2VkdXJlIExhYmVsc19TZXRfQXR0cmlidXRlcwogICAgIChEYXRhIDogYWNjZXNzIEd0a19Q bG90X0RhdGFfUmVjb3JkOwogICAgICBGb250IDogU3RyaW5nOwogICAgICBIZWlnaHQgOiBHaW50 OwogICAgICBBbmdsZSAgOiBHaW50OwogICAgICBGb3JlZ3JvdW5kIDogR2RrLkNvbG9yLkdka19D b2xvcjsKICAgICAgQmFja2dyb3VuZCA6IEdkay5Db2xvci5HZGtfQ29sb3IpOwogICAtLSAgU2V0 IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBsYWJlbHMKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAgLS0gU3ltYm9scyBhbmQgQ29ubmVjdG9ycyAtLQogICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgIC0tICBFYWNoIHBvaW50IHRoYXQgaXMgZXhwbGljaXRlbHkgc2V0IGlu IHRoZSBkYXRhIHNldCB0aHJvdWdoIHRoZQogICAtLSAgU2V0X1gsIFNldF9ZLC4uLiBzdWJwcm9n cmFtcyBpcyB2aXN1YWxseSBhc3NvY2lhdGVkIHdpdGggYSBzeW1ib2wuIFRoZXJlCiAgIC0tICBh cmUgc2V2ZXJhbCByZXByZXNlbnRhdGlvbnMgZm9yIHRoZSBzeW1ib2xzLgogICAtLQogICAtLSAg QWxsIHRoZXNlIHN5bWJvbHMgYXJlIHRoZW4gY29ubmVjdGVkIGJ5IGEgbGluZSwgYSBjdXJ2ZSBv ciBhbnkgb3RoZXIKICAgLS0gIGxpbmsuIFRoZXNlIGFyZSBjYWxsZWQgY29ubmVjdG9ycy4KICAg LS0KICAgLS0gIEVhY2ggc3ltYm9sLCBpbiBhZGRpdGlvbiB0byBiZWluZyBjb25uZWN0ZWQgdG8g dGhlIG5leHQgb25lIHdpdGggYQogICAtLSAgY29ubmVjdG9yLCBjYW4gYWxzbyBiZSBsaW5rZWQg dG8gdGhlIGF4aXMgWD0wLCBZPTAgb3IgWj0wIHNvIHRoYXQgaXQgaXMKICAgLS0gIGVhc2llciB0 byByZWFkIGl0cyBjb29yZGluYXRlcy4gVGhlc2UgYXJlIGNhbGxlZCBlcnJiYXJzLCBhbmQgdGhl eSBtdXN0CiAgIC0tICBiZSBleHBsaWNpdGVseSBzaG93bi4KCiAgIHByb2NlZHVyZSBTZXRfU3lt Ym9sCiAgICAgKERhdGEgICAgICAgICA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAg ICAgVGhlX1R5cGUgICAgIDogUGxvdF9TeW1ib2xfVHlwZTsKICAgICAgU3R5bGUgICAgICAgIDog UGxvdF9TeW1ib2xfU3R5bGU7CiAgICAgIFNpemUgICAgICAgICA6IEdpbnQ7CiAgICAgIExpbmVf V2lkdGggICA6IEdmbG9hdDsKICAgICAgQ29sb3IgICAgICAgIDogR2RrLkNvbG9yLkdka19Db2xv cjsKICAgICAgQm9yZGVyX0NvbG9yIDogR2RrLkNvbG9yLkdka19Db2xvcik7CiAgIC0tICBTZXQg dGhlIHZpc3VhbCBhc3BlY3Qgb2YgdGhlIHN5bWJvbHMuCgogICBwcm9jZWR1cmUgR2V0X1N5bWJv bAogICAgIChEYXRhICAgICAgICAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAg IFRoZV9UeXBlICAgICA6IG91dCBQbG90X1N5bWJvbF9UeXBlOwogICAgICBTdHlsZSAgICAgICAg OiBvdXQgUGxvdF9TeW1ib2xfU3R5bGU7CiAgICAgIFNpemUgICAgICAgICA6IG91dCBHaW50Owog ICAgICBMaW5lX1dpZHRoICAgOiBvdXQgR2ludDsKICAgICAgQ29sb3IgICAgICAgIDogb3V0IEdk ay5Db2xvci5HZGtfQ29sb3I7CiAgICAgIEJvcmRlcl9Db2xvciA6IG91dCBHZGsuQ29sb3IuR2Rr X0NvbG9yKTsKICAgLS0gIFJldHVybiB0aGUgdmlzdWFsIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUg c3ltYm9scy4KCiAgIHByb2NlZHVyZSBTZXRfQ29ubmVjdG9yCiAgICAgKERhdGEgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IENvbm5lY3RvciA6IFBsb3RfQ29ubmVjdG9yKTsKICAgLS0g IFNldCB0aGUgc3R5bGUgb2YgdGhlIGNvbm5lY3RvcnMuCgogICBmdW5jdGlvbiBHZXRfQ29ubmVj dG9yIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKQogICAgICByZXR1cm4gUGxv dF9Db25uZWN0b3I7CiAgIC0tICBSZXR1cm4gdGhlIGNvbm5lY3RvciBzdHlsZSB1c2VkIGZvciB0 aGUgZGF0YSBzZXQuCgogICBwcm9jZWR1cmUgU2V0X0xpbmVfQXR0cmlidXRlcwogICAgIChEYXRh ICA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgU3R5bGUgOiBQbG90X0xpbmVf U3R5bGU7CiAgICAgIFdpZHRoIDogR2Zsb2F0OwogICAgICBDb2xvciA6IEdkay5Db2xvci5HZGtf Q29sb3IpOwogICAtLSAgU2V0IHRoZSBsaW5lIHN0eWxlIHVzZWQgZm9yIHRoZSBjb25uZWN0b3Jz LgoKICAgcHJvY2VkdXJlIEdldF9MaW5lX0F0dHJpYnV0ZXMKICAgICAoRGF0YSAgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFN0eWxlIDogb3V0IFBsb3RfTGluZV9TdHlsZTsK ICAgICAgV2lkdGggOiBvdXQgR2Zsb2F0OwogICAgICBDb2xvciA6IG91dCBHZGsuQ29sb3IuR2Rr X0NvbG9yKTsKICAgLS0gIFJldHVybiB0aGUgbGluZSBhdHRyaWJ1dGVzIHVzZWQgZm9yIHRoZSBj b25uZWN0b3JzLgoKICAgcHJvY2VkdXJlIFNldF9YX0F0dHJpYnV0ZXMKICAgICAoRGF0YSAgOiBh Y2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFN0eWxlIDogUGxvdF9MaW5lX1N0eWxl OwogICAgICBXaWR0aCA6IEdmbG9hdDsKICAgICAgQ29sb3IgOiBHZGsuQ29sb3IuR2RrX0NvbG9y KTsKICAgLS0gIFNldCB0aGUgc3R5bGUgb2YgdGhlIGxpbmVzIHVzZWQgdG8gY29ubmVjdCB0aGUg c3ltYm9scyB0byB0aGUgWCBheGlzLgoKICAgcHJvY2VkdXJlIFNldF9ZX0F0dHJpYnV0ZXMKICAg ICAoRGF0YSAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFN0eWxlIDogUGxv dF9MaW5lX1N0eWxlOwogICAgICBXaWR0aCA6IEdmbG9hdDsKICAgICAgQ29sb3IgOiBHZGsuQ29s b3IuR2RrX0NvbG9yKTsKICAgLS0gIFNldCB0aGUgc3R5bGUgb2YgdGhlIGxpbmVzIHVzZWQgdG8g Y29ubmVjdCB0aGUgc3ltYm9scyB0byB0aGUgWSBheGlzLgoKICAgcHJvY2VkdXJlIFNldF9aX0F0 dHJpYnV0ZXMKICAgICAoRGF0YSAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAg IFN0eWxlIDogUGxvdF9MaW5lX1N0eWxlOwogICAgICBXaWR0aCA6IEdmbG9hdDsKICAgICAgQ29s b3IgOiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKICAgLS0gIFNldCB0aGUgc3R5bGUgb2YgdGhlIGxp bmVzIHVzZWQgdG8gY29ubmVjdCB0aGUgc3ltYm9scyB0byB0aGUgWiBheGlzLgoKICAgcHJvY2Vk dXJlIFNob3dfWGVycmJhcnMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpOwog ICBwcm9jZWR1cmUgU2hvd19ZZXJyYmFycyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZCk7CiAgIHByb2NlZHVyZSBTaG93X1plcnJiYXJzIChEYXRhIDogYWNjZXNzIEd0a19QbG90 X0RhdGFfUmVjb3JkKTsKICAgLS0gIEluZGljYXRlIHRoYXQgZWFjaCBzeW1ib2wgc2hvdWxkIGJl IGNvbm5lY3RlZCB0byB0aGUgdmFyaW91cyBheGlzCgogICBwcm9jZWR1cmUgSGlkZV9YZXJyYmFy cyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCk7CiAgIHByb2NlZHVyZSBIaWRl X1llcnJiYXJzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKTsKICAgcHJvY2Vk dXJlIEhpZGVfWmVycmJhcnMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpOwog ICAtLSAgSW5kaWNhdGUgdGhlIHRoZSBzeW1ib2wgc2hvdWxkIG5vdCBiZSBjb25uZWN0ZWQgdG8g dGhlIGF4aXMuCgogICBwcm9jZWR1cmUgRmlsbF9BcmVhIChEYXRhIDogYWNjZXNzIEd0a19QbG90 X0RhdGFfUmVjb3JkOyBGaWxsIDogQm9vbGVhbik7CiAgIC0tICBJbmRpY2F0ZSB3aGV0aGVyIHRo ZSBhcmVhIGJldHdlZW4gdHdvIHBvaW50cyBzaG91bGQgYmUgZmlsbGVkIG9yIG5vdC4KCiAgIGZ1 bmN0aW9uIEFyZWFfSXNfRmlsbGVkIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3Jk KQogICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0gIEluZGljYXRlIHdoZXRoZXIgdGhlIGFyZWEg YmV0d2VlbiB0d28gcG9pbnRzIGlzIGZpbGxlZC4KCiAgIC0tLS0tLS0tLS0tLS0KICAgLS0gTGVn ZW5kcyAtLQogICAtLS0tLS0tLS0tLS0tCiAgIC0tICBJbiBhZGRpdGlvbiB0byB0aGUgZHJhd2lu ZyBjb3JyZXNwb25kaW5nIHRvIHRoZSBkYXRhIHNldCwgaXQgaXMgcG9zc2libGUKICAgLS0gIHRv IGRpc3BsYXkgYSBib3ggdGhhdCBjb250YWlucyBhIGxlZ2VuZC4gVGhpcyBpcyBwYXJ0aWN1bGFy eSB1c2VmdWwgd2hlbgogICAtLSAgbXVsdGlwbGUgZGF0YSBzZXRzIGFyZSBkaXNwbGF5ZWQgb24g dGhlIHNhbWUgcGxvdC4KCiAgIHByb2NlZHVyZSBTZXRfTGVnZW5kIChEYXRhIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkOyBMZWdlbmQgOiBTdHJpbmcpOwogICAtLSAgU2V0IHRoZSBzdHJp bmcgcHJpbnRlZCBpbiB0aGUgbGVnZW5kIGZvciB0aGF0IGRhdGEgc2V0LgogICAtLSAgTm90ZSB0 aGF0IGFuIGVudHJ5IGNhbiBleGlzdCBpbiB0aGUgbGVnZW5kIGV2ZW4gaWYgdGhlcmUgaXMgbm8g bmFtZQogICAtLSAgYXNzb2NpYXRlZCB3aXRoIHRoZSBncmFwaC4KCiAgIHByb2NlZHVyZSBTaG93 X0xlZ2VuZCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCk7CiAgIC0tICBBbiBl bnRyeSB3aWxsIGJlIG1hZGUgaW4gdGhlIHBsb3QncyBsZWdlbmQgZm9yIHRoYXQgZGF0YXNldC4K CiAgIHByb2NlZHVyZSBIaWRlX0xlZ2VuZCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZCk7CiAgIC0tICBObyBlbnRyeSB3aWxsIGFwcGVhciBpbiB0aGUgcGxvdCdzIGxlZ2VuZCBm b3IgdGhhdCBkYXRhc2V0LgoKICAgcHJvY2VkdXJlIFNldF9MZWdlbmRfUHJlY2lzaW9uCiAgICAg KERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IFByZWNpc2lvbiA6IEdpbnQpOwog ICAtLSAgTnVtYmVyIG9mIGRpZ2l0cyB0byBkaXNwbGF5IHdoZW4gdGhlIGxlZ2VuZHMgaXMgYXNz b2NpYXRlZCB3aXRoIHZhbHVlcywKICAgLS0gIGFzIGlzIHRoZSBjYXNlIGZvciBncmFkaWVudHMu CgogICBmdW5jdGlvbiBHZXRfTGVnZW5kX1ByZWNpc2lvbiAoRGF0YSA6IGFjY2VzcyBHdGtfUGxv dF9EYXRhX1JlY29yZCkKICAgICAgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIG51bWJl ciBvZiBkaWdpdHMgdXNlZCBmb3IgdmFsdWVzIGluIHRoZSBsZWdlbmQKCiAgIC0tLS0tLS0tLS0t LS0tLQogICAtLSBHcmFkaWVudHMgLS0KICAgLS0tLS0tLS0tLS0tLS0tCiAgIC0tICBUaGUgc3lt Ym9scyBkaXNwbGF5ZWQgaW4gdGhlIHBsb3QgY2FuIGJlIGFzc2lnbmVkIHNwZWNpZmljIGNvbG9y cy4gQnV0CiAgIC0tICB0aGV5IGNhbiBhbHNvIGNvbXB1dGUgdGhlaXIgb3duIGNvbG9yIGJ5IHBp Y2tpbmcgaXQgaW4gYSBncmFkaWVudCwKICAgLS0gIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUuCgog ICBwcm9jZWR1cmUgU2V0X0dyYWRpZW50X01hc2sKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxv dF9EYXRhX1JlY29yZDsgTWFzayA6IFBsb3RfR3JhZGllbnQpOwogICAtLSAgSW5kaWNhdGVzIHdo aWNoIGNvbXBvbmVudCBvZiB0aGUgY29sb3JzIHZhcnkgYWxvbmcgdGhlIGdyYWRpZW50LgoKICAg ZnVuY3Rpb24gR2V0X0dyYWRpZW50X01hc2sgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9S ZWNvcmQpCiAgICAgIHJldHVybiBQbG90X0dyYWRpZW50OwogICAtLSAgUmV0dXJuIHRoZSBtYXNr IHVzZWQgZm9yIHRoZSBncmFkaWVudC4KCiAgIHByb2NlZHVyZSBHcmFkaWVudF9TZXRfVmlzaWJs ZQogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBWaXNpYmxlIDogQm9v bGVhbik7CiAgIC0tICBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZ3JhZGllbnQgc2hvdWxkIGJlIHZp c2libGUKCiAgIGZ1bmN0aW9uIEdyYWRpZW50X1Zpc2libGUgKERhdGEgOiBhY2Nlc3MgR3RrX1Bs b3RfRGF0YV9SZWNvcmQpCiAgICAgIHJldHVybiBCb29sZWFuOwogICAtLSAgUmV0dXJuIFRydWUg aWYgdGhlIGdyYWRpZW50IGlzIGN1cnJlbnRseSB2aXNpYmxlCgogICBwcm9jZWR1cmUgU2V0X0dy YWRpZW50X0NvbG9ycwogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwog ICAgICBNaW4sIE1heCA6IEdkay5Db2xvci5HZGtfQ29sb3IpOwogICAtLSAgU2V0IHRoZSBjb2xv cnMgdGhhdCBkZWZpbmUgdGhlIGdyYWRpZW50LiBUaGUgY29sb3JzIHdpbGwgdmFyeSBmcm9tCiAg IC0tICBNaW4gdG8gTWF4IGFsb25nIHRoZSBjb21wb25lbnRzIHNwZWNpZmllZCBpbiBTZXRfR3Jh ZGllbnRfTWFzay4KCiAgIHByb2NlZHVyZSBHZXRfR3JhZGllbnRfQ29sb3JzCiAgICAgKERhdGEg OiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIE1pbiwgTWF4IDogb3V0IEdkay5D b2xvci5HZGtfQ29sb3IpOwogICAtLSAgUmV0dXJuIHRoZSBjb2xvcnMgdGhhdCBkZWZpbmUgdGhl IHJhbmdlCgogICBwcm9jZWR1cmUgU2V0X0dyYWRpZW50CiAgICAgKERhdGEgICAgIDogYWNjZXNz IEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBNaW4sIE1heCA6IEdkb3VibGU7CiAgICAgIE5s ZXZlbHMgIDogR2ludCk7CiAgIC0tICBEZWZpbmUgdGhlIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGgg dGhlIG1pbmltYWwgY29sb3IgYW5kIHRoZSBtYXhpbWFsCiAgIC0tICBjb2xvci4gQW55IHZhbHVl IGluIGJldHdlZW4gd2lsbCBoYXZlIGEgY29sb3IgY29tcHV0ZWQgaW4gYmV0d2Vlbi4KICAgLS0g IE5sZXZlbHMgaXMgdGhlIG51bWJlciBvZiB0aWNrcyB0byBkaXNwbGF5IGluIHRoZSBncmFkaWVu dC4KCiAgIHByb2NlZHVyZSBHZXRfR3JhZGllbnQKICAgICAoRGF0YSAgICAgOiBhY2Nlc3MgR3Rr X1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIE1pbiwgTWF4IDogb3V0IEdkb3VibGU7CiAgICAgIE5s ZXZlbHMgIDogb3V0IEdpbnQpOwogICAtLSAgUmV0dXJuIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3 aXRoIHRoZSBtaW5pbWFsIGFuZCBtYXhpbWFsIGNvbG9ycy4KCiAgIHByb2NlZHVyZSBHZXRfR3Jh ZGllbnRfTGV2ZWwKICAgICAoRGF0YSAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAg ICAgIExldmVsIDogR2RvdWJsZTsKICAgICAgQ29sb3IgOiBvdXQgR2RrLkNvbG9yLkdka19Db2xv cik7CiAgIC0tICBSZXR1cm4gdGhlIGNvbG9yIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGxl dmVsLgogICAtLSAgVGhlIGNvbG9yIGRlcGVuZHMgb24gdGhlIHBhcmFtZXRlcnMgdG8gU2V0X0dy YWRpZW50IGFuZAogICAtLSAgU2V0X0dyYWRpZW50X0NvbG9ycy4KCiAgIC0tLS0tLS0tLS0tLS0t LQogICAtLSBVc2VyIERhdGEgLS0KICAgLS0tLS0tLS0tLS0tLS0tCiAgIC0tICBJdCBpcyBwb3Nz aWJsZSB0byBhc3NvY2lhdGVkIHlvdXIgb3duIHVzZXIgZGF0YSB3aXRoIGEgcGxvdC4gVGhpcyBp cwogICAtLSAgdGhlIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0aGUgQyB2ZXJzaW9uIG9mIGd0a2V4 dHJhLiBIb3dldmVyLCB0aGUgYmVzdAogICAtLSAgd2F5IHRvIGRvIHRoaXMgaW4gQWRhIGlzIHRv IGluaGVyaXQgZnJvbSBHdGtfUGxvdF9EYXRhX1JlY29yZCAob3Igb25lCiAgIC0tICBvZiBpdHMg Y2hpbGRyZW4pLCBhbmQgYWRkIHlvdXIgb3duIGZpZWxkcy4KCiAgIHByb2NlZHVyZSBTZXRfTGlu awogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBMaW5rIDog U3lzdGVtLkFkZHJlc3MpOwogICAtLSAgQXNzb2NpYXRlIHNvbWUgdXNlciBkYXRhIHdpdGggRGF0 YS4KICAgLS0gIEl0IGlzIHRoZSByZXNwb25zYWJpbGl0eSBvZiB0aGUgdXNlciB0byBkbyBzb21l IGNvbnZlcnQgY29udmVyc2lvbiB0bwogICAtLSAgU3lzdGVtLkFkZHJlc3MuCgogICBmdW5jdGlv biBHZXRfTGluayAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkKICAgICAgcmV0 dXJuIFN5c3RlbS5BZGRyZXNzOwogICAtLSAgUmV0dXJuIHRoZSB1c2VyIGRhdGEgYXNzb2NpYXRl ZCB3aXRoIERhdGEsIG9yIE51bGxfQWRkcmVzcyBpZiB0aGVyZSBpcwogICAtLSAgbm9uZS4KCiAg IHByb2NlZHVyZSBSZW1vdmVfTGluayAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29y ZCk7CiAgIC0tICBSZW1vdmUgdGhlIHVzZXIgZGF0YSBhc3NvY2lhdGVkIHdpdGggRGF0YS4KCgog ICAtLSAgPGRvY19pZ25vcmU+CiAgIGZ1bmN0aW9uIFRvX0RvdWJsZV9BcnJheSBpcyBuZXcgVW5j aGVja2VkX0NvbnZlcnNpb24KICAgICAoU3lzdGVtLkFkZHJlc3MsIE5vX1JhbmdlX0dkb3VibGVf QXJyYXlfQWNjZXNzKTsKICAgLS0gIDwvZG9jX2lnbm9yZT4KCnByaXZhdGUKICAgdHlwZSBHdGtf UGxvdF9EYXRhX1JlY29yZCBpcyBuZXcgR3RrLldpZGdldC5HdGtfV2lkZ2V0X1JlY29yZCB3aXRo CiAgICAgbnVsbCByZWNvcmQ7CgogICBHcmFkaWVudF9IIDogY29uc3RhbnQgUGxvdF9HcmFkaWVu dCA6PSAxOwogICBHcmFkaWVudF9WIDogY29uc3RhbnQgUGxvdF9HcmFkaWVudCA6PSAyOwogICBH cmFkaWVudF9TIDogY29uc3RhbnQgUGxvdF9HcmFkaWVudCA6PSA0OwoKICAgcHJhZ21hIEltcG9y dCAoQywgR2V0X1R5cGUsICJndGtfcGxvdF9kYXRhX2dldF90eXBlIik7CmVuZCBHdGsuRXh0cmEu UGxvdF9EYXRhOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5k aW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQot LSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwMCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFu ZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJh cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAt LQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg ICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAg ICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdp dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz MCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwg ZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQot LSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHBy b2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRz ZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQg YnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24g ZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAt LQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGlj IExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlvbj4KLS0gIFRo aXMgaXMgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIG9mIHRoZSBHdGsuRXh0cmEgd2lkZ2V0IGhpZXJh cmNoeS4KLS0gIDwvZGVzY3JpcHRpb24+CgpwYWNrYWdlIEd0ay5FeHRyYSBpcwplbmQgR3RrLkV4 dHJhOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZv ciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAg ICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0yMDAxICAgICAgICAgICAgICAgICAg ICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5h dWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAg ICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQot LSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAt LQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhp cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAg ICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0 aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlz IHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2Ug YW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNh dXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBu b3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBl eGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vu c2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlvbj4KLS0KLS0gIFRoaXMg cGFja2FnZSBwcm92aWRlcyBzb21lIGJhc2ljIEd0aysgZnVuY3Rpb25hbGl0aWVzIHN1Y2ggYXMg Z2V0dGluZyB0aGUKLS0gIHZlcnNpb24gbnVtYmVyLiBUaGlzIGlzIHRoZSB0b3AgbGV2ZWwgcGFj a2FnZSBvZiB0aGUgR3RrIHdpZGdldCBoaWVyYXJjaHkuCi0tICBGb3IgZ2VuZXJhbCBHdGtBZGEg aW5pdGlhbGl6YXRpb25zLCBAcHhyZWZ7UGFja2FnZV9HdGsuTWFpbn0uCi0tCi0tICA8L2Rlc2Ny aXB0aW9uPgotLSAgPGNfdmVyc2lvbj4xLjIuNzwvY192ZXJzaW9uPgoKd2l0aCBHbGliOyAgICAg ICAgICAgICAgICB1c2UgR2xpYjsKd2l0aCBHZGs7ICAgICAgICAgICAgICAgICB1c2UgR2RrOwp3 aXRoIFN5c3RlbTsKCnBhY2thZ2UgR3RrIGlzCgogICB0eXBlIFJvb3RfVHlwZSBpcyB0YWdnZWQg cHJpdmF0ZTsKICAgLS0gIFRoZSBiYXNlIHR5cGUgb2YgdGhlIGhpZXJhcmNoeSBpbiBHdGtBZGEu IEl0IGJhc2ljYWxseSBnaXZlcyBhY2Nlc3MKICAgLS0gIHRvIGFuIHVuZGVybHlpbmcgQyBvYmpl Y3QuIFRoaXMgaXMgbm90IGEgY29udHJvbGxlZCB0eXBlLCBmb3IgZWZmaWNpZW5jeQogICAtLSAg cmVhc29ucywgYW5kIGJlY2F1c2UgZ3RrKyB0YWtlcyBjYXJlIG9mIG1lbW9yeSBtYW5hZ2VtZW50 IG9uIGl0cyBvd24uCgogICAtLSAgPGRvY19pZ25vcmU+CiAgIHR5cGUgUm9vdF9UeXBlX0FjY2Vz cyBpcyBhY2Nlc3MgYWxsIFJvb3RfVHlwZSdDbGFzczsKICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAg IHR5cGUgR3RrX1JjX1N0eWxlIGlzIG5ldyBHZGsuQ19Qcm94eTsKICAgLS0gIFR5cGUgdXNlZCB0 byBoYW5kbGUgcmVzb3VyY2Ugc3R5bGVzLgogICAtLSAgU2VlIHBhY2thZ2UgR3RrLlJjIGZvciBt b3JlIGRldGFpbHMuCgogICBmdW5jdGlvbiBNYWpvcl9WZXJzaW9uIHJldHVybiBHdWludDsKICAg LS0gIFJldHVybiB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIgZm9yIEd0aysuCiAgIC0tICBOb3Rl IHRoYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgZm9yIEd0a0FkYS4KICAg LS0gIElmIHRoZSB2ZXJzaW9uIGlzIDEuMi42LCByZXR1cm5zIDEuCgogICBmdW5jdGlvbiBNaW5v cl9WZXJzaW9uIHJldHVybiBHdWludDsKICAgLS0gIFJldHVybiB0aGUgbWlub3IgdmVyc2lvbiBu dW1iZXIgZm9yIEd0aysuCiAgIC0tICBOb3RlIHRoYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkg dGhlIHNhbWUgYXMgZm9yIEd0a0FkYS4KICAgLS0gIElmIHRoZSB2ZXJzaW9uIGlzIDEuMi42LCBy ZXR1cm5zIDIuCgogICBmdW5jdGlvbiBNaWNyb19WZXJzaW9uIHJldHVybiBHdWludDsKICAgLS0g IFJldHVybiB0aGUgbWljcm8gdmVyc2lvbiBudW1iZXIgZm9yIEd0aysuCiAgIC0tICBOb3RlIHRo YXQgdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgZm9yIEd0a0FkYS4KICAgLS0g IElmIHRoZSB2ZXJzaW9uIGlzIDEuMi42LCByZXR1cm5zIDYuCgogICB0eXBlIEd0a19UeXBlIGlz IG5ldyBHdWludDsKICAgLS0gIFRoaXMgdHlwZSBkZXNjcmliZXMgYW4gaW50ZXJuYWwgdHlwZSBp biBHdGsrLgogICAtLSAgWW91IHNob3VsZG4ndCBoYXZlIHRvIHVzZSBpdCBpbiB5b3VyIG93biBh cHBsaWNhdGlvbnMsIGhvd2V2ZXIgaXQgbWlnaHQKICAgLS0gIGJlIHVzZWZ1bCBzb21ldGltZXMu CiAgIC0tICBFdmVyeSB3aWRnZXQgdHlwZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyB2 YWx1ZSwgY3JlYXRlZAogICAtLSAgZHluYW1pY2FsbHkgYXQgcnVuIHRpbWUgdGhlIGZpcnN0IHRp bWUgeW91IGluc3RhbnRpYXRlIGEgd2lkZ2V0IG9mIHRoYXQKICAgLS0gIHR5cGUgKHRodXMgaWYg eW91IGhhdmUgbmV2ZXIgdXNlZCBhIEd0a19GaWxlX1NlbGVjdGlvbiwgaXQgd29uJ3QgaGF2ZQog ICAtLSAgYW55IEd0a19UeXBlIGFzc29jaWF0ZWQgd2l0aCBpdCkuCiAgIC0tICBZb3UgY2FuIGdl dCB0aGUgZXhhY3QgdHlwZSB2YWx1ZSBmb3IgZWFjaCB0eXBlIGJ5IHVzaW5nIHRoZSBmdW5jdGlv bnMKICAgLS0gIEdldF9UeXBlIHByb3ZpZGVkIGluIGFsbCB0aGUgcGFja2FnZXMgaW4gR3RrQWRh LgogICAtLSAgWW91IGNhbiBnZXQgdGhlIHNwZWNpZmljIHZhbHVlIGZvciBhbiBleGlzdGluZyB3 aWRnZXQgYnkgdXNpbmcgdGhlCiAgIC0tICBmdW5jdGlvbiBHdGsuT2JqZWN0LkdldF9UeXBlLgoK ICAgR3RrX1R5cGVfSW52YWxpZCA6IGNvbnN0YW50IEd0a19UeXBlIDo9IDA7CiAgIEd0a19UeXBl X05vbmUgICAgOiBjb25zdGFudCBHdGtfVHlwZSA6PSAxOwogICBHdGtfVHlwZV9DaGFyICAgIDog Y29uc3RhbnQgR3RrX1R5cGUgOj0gMjsKICAgR3RrX1R5cGVfVWNoYXIgICA6IGNvbnN0YW50IEd0 a19UeXBlIDo9IDM7CiAgIEd0a19UeXBlX0Jvb2wgICAgOiBjb25zdGFudCBHdGtfVHlwZSA6PSA0 OwogICBHdGtfVHlwZV9JbnQgICAgIDogY29uc3RhbnQgR3RrX1R5cGUgOj0gNTsKICAgR3RrX1R5 cGVfVWludCAgICA6IGNvbnN0YW50IEd0a19UeXBlIDo9IDY7CiAgIEd0a19UeXBlX0xvbmcgICAg OiBjb25zdGFudCBHdGtfVHlwZSA6PSA3OwogICBHdGtfVHlwZV9VbG9uZyAgIDogY29uc3RhbnQg R3RrX1R5cGUgOj0gODsKICAgR3RrX1R5cGVfRmxvYXQgICA6IGNvbnN0YW50IEd0a19UeXBlIDo9 IDk7CiAgIEd0a19UeXBlX0RvdWJsZSAgOiBjb25zdGFudCBHdGtfVHlwZSA6PSAxMDsKICAgR3Rr X1R5cGVfU3RyaW5nICA6IGNvbnN0YW50IEd0a19UeXBlIDo9IDExOyAgLS0gIE51bGwgdGVybWlu YXRlZCBzdHJpbmcuCiAgIEd0a19UeXBlX0VudW0gICAgOiBjb25zdGFudCBHdGtfVHlwZSA6PSAx MjsKICAgR3RrX1R5cGVfRmxhZ3MgICA6IGNvbnN0YW50IEd0a19UeXBlIDo9IDEzOwogICBHdGtf VHlwZV9Cb3hlZCAgIDogY29uc3RhbnQgR3RrX1R5cGUgOj0gMTQ7CiAgIEd0a19UeXBlX1BvaW50 ZXIgOiBjb25zdGFudCBHdGtfVHlwZSA6PSAxNTsgIC0tICBhIGdlbmVyYWwgcG9pbnRlciB0eXBl LgogICBHdGtfVHlwZV9PYmplY3QgIDogY29uc3RhbnQgR3RrX1R5cGUgOj0gMjE7ICAtLSAgT25l IG9mIHRoZSB3aWRnZXRzL29iamVjdHMKCiAgIHR5cGUgR3RrX05vdGVib29rX1BhZ2UgaXMgbmV3 IEdkay5DX1Byb3h5OwogICAtLSAgQSBwYWdlIG9mIHRoZSBub3RlYm9vay4KICAgLS0gIEl0IGNh biBjb250YWluIGEgc2luZ2xlIGNoaWxkLCBhbmQgaXMgYWxzbyBhc3NvY2lhdGVkIHdpdGggYSB0 YWIKICAgLS0gIGxhYmVsIHVzZWQgdG8gc2VsZWN0IHRoYXQgcGFnZSBpbiB0aGUgbm90ZWJvb2su CgogICBmdW5jdGlvbiBHdGtfVHlwZV9HZGtfRXZlbnQgcmV0dXJuIEd0a19UeXBlOwogICAtLSAg UmV0dXJuIHRoZSB0eXBlIGNvcnJlc3BvbmRpbmcgdG8gYSBHZGtfRXZlbnQuCiAgIC0tICBOb3Rl IHRoYXQgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBhZnRlciBHdGsrIGhhcyBiZWVuIGlu aXRpYWxpemVkLgoKICAgZnVuY3Rpb24gVHlwZV9OYW1lIChUeXBlX051bSA6IGluIEd0a19UeXBl KSByZXR1cm4gU3RyaW5nOwogICAtLSAgUmV0dXJuIHRoZSB0eXBlIG5hbWUgY29ycmVzcG9uZGlu ZyB0byBhIEd0a19UeXBlLgogICAtLSAgVGhpcyBtaWdodCBiZSB1c2VmdWwgaW4gZGVidWcgbWVz c2FnZXMuCgogICBmdW5jdGlvbiBUeXBlX0Zyb21fTmFtZSAoTmFtZSA6IGluIFN0cmluZykgcmV0 dXJuIEd0a19UeXBlOwogICAtLSAgQ29udmVydCBhIHN0cmluZyB0byB0aGUgbWF0Y2hpbmcgdHlw ZS4KICAgLS0gIE5hbWUgc2hvdWxkIGJlIHRoZSBDIHdpZGdldCdzIG5hbWUsIHN1Y2ggYXMgR3Rr U2Nyb2xsYmFyIG9yIEd0a0J1dHRvbiwKICAgLS0gIHJhdGhlciB0aGFuIHRoZSBBZGEgbmFtZS4K CiAgIGZ1bmN0aW9uIElzX0NyZWF0ZWQgKE9iamVjdCA6IGluIFJvb3RfVHlwZSdDbGFzcykgcmV0 dXJuIEJvb2xlYW47CiAgIC0tICBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXNzb2NpYXRlZCBDIG9iamVj dCBoYXMgYmVlbiBjcmVhdGVkLCBGYWxzZSBpZiBubwogICAtLSAgQyBvYmplY3QgaXMgYXNzb2Np YXRlZCB3aXRoIE9iamVjdC4KICAgLS0gIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIHRlc3Rpbmcg d2hldGhlciBhbiBhY2Nlc3MgdHlwZSAoZm9yIGluc3RhbmNlCiAgIC0tICBhbnkgb2YgdGhlIHdp ZGdldHMpIGlzICJudWxsIiwgc2luY2UgdGhpcyByZWxhdGVzIHRvIHRoZSB1bmRlcmx5aW5nCiAg IC0tICBDIG9iamVjdC4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBJbnRlcmZh Y2luZyB3aXRoIEMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tICBUaGUgZm9s bG93aW5nIGZ1bmN0aW9ucyBhcmUgbWFkZSBwdWJsaWMgc28gdGhhdCBvbmUgY2FuIGVhc2lseSBj cmVhdGUKICAgLS0gIG5ldyB3aWRnZXRzIG91dHNpZGUgdGhlIEd0ayBwYWNrYWdlIGhpZXJhcmNo eS4KICAgLS0gIE9ubHkgZXhwZXJpZW5jZWQgdXNlcnMgc2hvdWxkIG1ha2UgdXNlIG9mIHRoZXNl IGZ1bmN0aW9ucy4KCiAgIGZ1bmN0aW9uIEdldF9PYmplY3QgKE9iamVjdCA6IGFjY2VzcyBSb290 X1R5cGUnQ2xhc3MpIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgLS0gIEFjY2VzcyB0aGUgdW5k ZXJseWluZyBDIHBvaW50ZXIuCgogICBwcm9jZWR1cmUgU2V0X09iamVjdAogICAgIChPYmplY3Qg OiBhY2Nlc3MgUm9vdF9UeXBlJ0NsYXNzOwogICAgICBWYWx1ZSAgOiBpbiAgICAgU3lzdGVtLkFk ZHJlc3MpOwogICAtLSAgTW9kaWZ5IHRoZSB1bmRlcmx5aW5nIEMgcG9pbnRlci4KCiAgIHByb2Nl ZHVyZSBJbml0aWFsaXplX1VzZXJfRGF0YSAoT2JqIDogYWNjZXNzIFJvb3RfVHlwZSdDbGFzcyk7 CiAgIC0tICBTZXRzIGEgdXNlciBkYXRhIGZpZWxkIGZvciB0aGUgQyBvYmplY3QgYXNzb2NpYXRl ZCB3aXRoIE9iai4KICAgLS0gIFRoaXMgZmllbGQgd2lsbCBiZSB1c2VkIHNvIHRoYXQgaXQgaXMg cG9zc2libGUsIGtub3dpbmcgYQogICAtLSAgQyBvYmplY3QsIHRvIGdldCB0aGUgZnVsbCBhZGEg b2JqZWN0LgoKICAgZnVuY3Rpb24gR2V0X1VzZXJfRGF0YQogICAgIChPYmogIDogaW4gU3lzdGVt LkFkZHJlc3M7CiAgICAgIFN0dWIgOiBpbiBSb290X1R5cGUnQ2xhc3MpIHJldHVybiBSb290X1R5 cGVfQWNjZXNzOwogICAtLSAgR2V0IHRoZSB1c2VyIGRhdGEgdGhhdCB3YXMgc2V0IGJ5IEd0a0Fk YS4KICAgLS0gIElmIHRoZSBEYXRhIGlzIG5vdCBzZXQsIHJldHVybiBhIG5ldyBhY2Nlc3MgdHlw ZSwgdGhhdCBwb2ludHMgdG8KICAgLS0gIGEgc3RydWN0dXJlIHdpdGggdGhlIHNhbWUgdGFnIGFz IFN0dWIuCgogICBmdW5jdGlvbiBVbmNoZWNrZWRfQ2FzdAogICAgIChPYmogIDogYWNjZXNzIFJv b3RfVHlwZSdDbGFzczsKICAgICAgU3R1YiA6IFJvb3RfVHlwZSdDbGFzcykgcmV0dXJuIFJvb3Rf VHlwZV9BY2Nlc3M7CiAgIC0tICBDYXN0IE9iaiBpbiBhbiBvYmplY3Qgb2YgdGFnIFN0dWInQ2xh c3MuCiAgIC0tICBSZXR1cm4gdGhlIHJlc3VsdGluZyBvYmplY3QgYW5kIGZyZWUgdGhlIG1lbW9y eSBwb2ludGVkIGJ5IE9iai4KCiAgIGZ1bmN0aW9uIENvdW50X0FyZ3VtZW50cwogICAgIChUaGVf VHlwZSA6IEd0a19UeXBlOyBOYW1lIDogaW4gU3RyaW5nKSByZXR1cm4gR3VpbnQ7CiAgIC0tICBS ZXR1cm4gdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdXNlZCBpbiB0aGUgaGFuZGxlcnMgZm9yIHRo ZSBzaWduYWwuCiAgIC0tICBOb3RlIHRoYXQgaW4gdGhlIENvbm5lY3QgZnVuY3Rpb25zLCB3ZSBh bHdheXMgdGVzdCB3aGV0aGVyIHRoZSB1c2VyCiAgIC0tICBoYXMgYXNrZWQgZm9yICphdCBtb3N0 KiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBkZWZpbmVkIGJ5IGd0aysgZm9yIHRoZQogICAtLSAg Y2FsbGJhY2suIFRoaXMgaXMgYmVjYXVzZSBoYXZpbmcgbGVzcyBhcmd1bWVudCBpcyBhdXRob3Jp emVkICh0aGUKICAgLS0gIGV4dHJhIHBhcmFtZXRlcnMgcGFzc2VkIGJ5IGd0aysgd2lsbCBzaW1w bHkgYmUgaWdub3JlZCksIHdoZXJlYXMgaGF2aW5nCiAgIC0tICBtb3JlIGFyZ3VtZW50cyBpcyBp bXBvc3NpYmxlICh0aGV5IHdvdWxkIG5ldmVyIGJlIHNldCkuCiAgIC0tICBOb3RlIHRoYXQgd2Ug cHJvdmlkZSB0aGlzIHByb2NlZHVyZSBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyaXRpZXMuCgogICBm dW5jdGlvbiBBcmd1bWVudF9UeXBlCiAgICAgKFRoZV9UeXBlIDogR3RrX1R5cGU7CiAgICAgIE5h bWUgICAgIDogaW4gU3RyaW5nOwogICAgICBOdW0gICAgICA6IGluIEdpbnQpIHJldHVybiBHdGtf VHlwZTsKICAgLS0gIFJldHVybiB0aGUgdHlwZSBvZiB0aGUgbnVtLXRoIGFyZ3VtZW50IGZvciB0 aGUgaGFuZGxlcnMgb2Ygc2lnbmFsIG5hbWUuCiAgIC0tICBJZiBOdW0gaXMgbmVnYXRpdmUsIHJl dHVybiB0aGUgdHlwZSByZXR1cm5lZCBieSB0aGUgaGFuZGxlcnMgZm9yIHRoaXMKICAgLS0gIHNp Z25hbC4KICAgLS0gIE5vdGUgdGhhdCB3ZSBwcm92aWRlIHRoaXMgcHJvY2VkdXJlIGhlcmUgdG8g YXZvaWQgY2lyY3VsYXJpdGllcy4KCnByaXZhdGUKCiAgIHR5cGUgUm9vdF9UeXBlIGlzIHRhZ2dl ZCByZWNvcmQKICAgICAgUHRyIDogU3lzdGVtLkFkZHJlc3MgOj0gU3lzdGVtLk51bGxfQWRkcmVz czsKICAgZW5kIHJlY29yZDsKCiAgIC0tICA8ZG9jX2lnbm9yZT4KCiAgIC0tICBOb3RlOiB0aGUg Zm9sbG93aW5nIGZ1bmN0aW9ucyBhbmQgdHlwZXMgc2hvdWxkIG9ubHkgYmUgdXNlZAogICAtLSAg Zm9yIGludGVybmFsIHVzYWdlLCBub3QgaW4gdGhlIHVzZXIncyBhcHBsaWNhdGlvbnMuCiAgIC0t ICBJZiB5b3UgdXNlIHR5cGUgaW5oZXJpdGFuY2UgZm9yIG5ldyB3aWRnZXRzLCB5b3Ugc2hvdWxk IG5vdCBuZWVkCiAgIC0tICB0aGVzZSBmdW5jdGlvbnMuCgogICBHdGtBZGFfU3RyaW5nIDogY29u c3RhbnQgU3RyaW5nIDo9ICJfR3RrQWRhIiAmIEFTQ0lJLk5VTDsKICAgR3RrQWRhX1N0cmluZ19R dWFyayA6IEdsaWIuR1F1YXJrIDo9IEdsaWIuVW5rbm93bl9RdWFyazsKICAgLS0gIFRoZSBuYW1l IGZvciB0aGUgdXNlciBkYXRhIHRoYXQgd2Ugc2V0IGluIHRoZSBvYmplY3RzLgogICAtLSAgVGhl IFF1YXJrIHZlcnNpb24gaXMgdG8gc3BlZWQgdXAgdGhlIHN0cmluZyBsb29rdXAgKHRoaXMgaXMg ZG9uZQogICAtLSAgb25seSBvbmNlKS4KCiAgIGZ1bmN0aW9uIENvbnZlcnNpb25fRnVuY3Rpb24K ICAgICAoT2JqIDogU3lzdGVtLkFkZHJlc3M7IFN0dWIgOiBSb290X1R5cGUnQ2xhc3MpIHJldHVy biBSb290X1R5cGVfQWNjZXNzOwogICAtLSAgVGhpcyBmdW5jdGlvbiBoYXMgdG8gY29udmVydCBh IEMgb2JqZWN0IHRvIGFuIEFkYSBvYmplY3QuCiAgIC0tICBJdCB3aWxsIGZpcnN0IHRyeSBhbGwg dGhlIHJlZ2lzdGVyZWQgZnVuY3Rpb25zIChpbgogICAtLSAgR3RrLlR5cGVfQ29udmVyc2lvbl9I b29rcykgYW5kIGJ5IGRlZmF1bHQsIHdpbGwgY3JlYXRlIGEgU3R1YidDbGFzcwogICAtLSAgb2Jq ZWN0LCBubyBtYXR0ZXIgd2hhdCB0aGUgcmVhbCBDIHR5cGUgaXMuCiAgIC0tICBTdHViIGlzIHRo ZSBleHBlY3RlZCB0eXBlLgoKICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgIHByYWdtYSBJbmxpbmUg KEdldF9PYmplY3QpOwogICBwcmFnbWEgSW5saW5lIChTZXRfT2JqZWN0KTsKCiAgIHByYWdtYSBJ bXBvcnQgKEMsIE1ham9yX1ZlcnNpb24sICJhZGFfZ3RrX21ham9yX3ZlcnNpb24iKTsKICAgcHJh Z21hIEltcG9ydCAoQywgTWlub3JfVmVyc2lvbiwgImFkYV9ndGtfbWlub3JfdmVyc2lvbiIpOwog ICBwcmFnbWEgSW1wb3J0IChDLCBNaWNyb19WZXJzaW9uLCAiYWRhX2d0a19taWNyb192ZXJzaW9u Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEd0a19UeXBlX0dka19FdmVudCwgImFkYV9ndGtfdHlw ZV9nZGtfZXZlbnQiKTsKZW5kIEd0azsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRh IC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAw MCAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2Vs IEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAg LS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGlj ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAg ICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g QXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJp Y3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhl ciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9l cyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0 byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0K LS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29u cyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRo ZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3Jp cHRpb24+Ci0tCi0tICBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgZGVmaW5pdGlvbnMgZm9yIHRoZSBi YXNpYyB0eXBlcyB1c2VkIGluIEdsaWIsCi0tICBHZGsgYW5kIEd0ay4KLS0KLS0gIDwvZGVzY3Jp cHRpb24+Cgp3aXRoIEFkYS5VbmNoZWNrZWRfRGVhbGxvY2F0aW9uOwp3aXRoIEFkYS5VbmNoZWNr ZWRfQ29udmVyc2lvbjsKd2l0aCBTeXN0ZW07CndpdGggSW50ZXJmYWNlcy5DOwoKcGFja2FnZSBH bGliIGlzCiAgIHByYWdtYSBQcmVlbGFib3JhdGU7CgogICBwYWNrYWdlIEMgcmVuYW1lcyBJbnRl cmZhY2VzLkM7CiAgIHVzZSB0eXBlIEMuaW50OwogICB1c2UgdHlwZSBDLnVuc2lnbmVkOwoKICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBUaGUgYmFzaWMgdHlw ZXMgZGVmaW5lZCBieSBnbGliIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KCiAgIHR5cGUgR3Nob3J0IGlzIG5ldyBDLnNob3J0OwogICB0eXBlIEdsb25nICBpcyBu ZXcgQy5sb25nOwogICB0eXBlIEdpbnQgICBpcyBuZXcgQy5pbnQ7CiAgIHR5cGUgR2NoYXIgIGlz IG5ldyBDLmNoYXI7CiAgIHR5cGUgR2Jvb2xlYW4gaXMgbmV3IEdpbnQ7CgogICB0eXBlIEd1c2hv cnQgaXMgbmV3IEMudW5zaWduZWRfc2hvcnQ7CiAgIHR5cGUgR3Vsb25nICBpcyBuZXcgQy51bnNp Z25lZF9sb25nOwogICB0eXBlIEd1aW50ICAgaXMgbmV3IEMudW5zaWduZWQ7CiAgIHR5cGUgR3Vj aGFyICBpcyBuZXcgQy51bnNpZ25lZF9jaGFyOwoKICAgdHlwZSBHZmxvYXQgIGlzIG5ldyBDLkNf ZmxvYXQ7CiAgIHR5cGUgR2RvdWJsZSBpcyBuZXcgQy5kb3VibGU7CgogICBzdWJ0eXBlIEdpbnQ4 ICBpcyBHaW50IHJhbmdlIC0oMiAqKiA3KSAuLiAoMiAqKiA3IC0gMSk7CiAgIHN1YnR5cGUgR2lu dDE2IGlzIEdpbnQgcmFuZ2UgLSgyICoqIDE1KSAuLiAoMiAqKiAxNSAtIDEpOwogICBzdWJ0eXBl IEdpbnQzMiBpcyBHaW50IHJhbmdlIC0oMiAqKiAzMSkgLi4gKDIgKiogMzEgLSAxKTsKCiAgIHN1 YnR5cGUgR3VpbnQ4ICBpcyBHdWludCByYW5nZSBHdWludCdGaXJzdCAuLiAoMiAqKiA4IC0gMSk7 CiAgIHN1YnR5cGUgR3VpbnQxNiBpcyBHdWludCByYW5nZSBHdWludCdGaXJzdCAuLiAoMiAqKiAx NiAtIDEpOwogICBzdWJ0eXBlIEd1aW50MzIgaXMgR3VpbnQgcmFuZ2UgR3VpbnQnRmlyc3QgLi4g KDIgKiogMzIgLSAxKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU29tZSBBcnJh eSB0eXBlcyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICB0eXBlIEdib29sZWFuX0Fy cmF5IGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBHYm9vbGVhbjsKICAgdHlwZSBHc2hv cnRfQXJyYXkgICBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgR3Nob3J0OwogICB0eXBl IEdsb25nX0FycmF5ICAgIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBHbG9uZzsKICAg dHlwZSBHaW50X0FycmF5ICAgICBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgR2ludDsK ICAgdHlwZSBHdWludF9BcnJheSAgICBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgR3Vp bnQ7CiAgIHR5cGUgR3VpbnQzMl9BcnJheSAgaXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9m IEd1aW50MzI7CiAgIHR5cGUgR3VzaG9ydF9BcnJheSAgaXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2Ug PD4pIG9mIEd1c2hvcnQ7CiAgIHR5cGUgR3Vsb25nX0FycmF5ICAgaXMgYXJyYXkgKE5hdHVyYWwg cmFuZ2UgPD4pIG9mIEd1bG9uZzsKICAgdHlwZSBHZmxvYXRfQXJyYXkgICBpcyBhcnJheSAoTmF0 dXJhbCByYW5nZSA8Pikgb2YgR2Zsb2F0OwogICB0eXBlIEd1Y2hhcl9BcnJheSAgIGlzIGFycmF5 IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBHdWNoYXI7CiAgIHR5cGUgR2RvdWJsZV9BcnJheSAgaXMg YXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9mIEdkb3VibGU7CgogICB0eXBlIEJvb2xlYW5fQXJy YXkgIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBCb29sZWFuOwoKICAgdHlwZSBTaG9y dF9BcnJheSAgICBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgQy5zaG9ydDsKICAgdHlw ZSBMb25nX0FycmF5ICAgICBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgQy5sb25nOwoK ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBDb252ZXJzaW9uIHNlcnZpY2VzIC0t CiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIFRvX0Jvb2xlYW5fQXJy YXkgKEEgOiBpbiBHYm9vbGVhbl9BcnJheSkgcmV0dXJuIEJvb2xlYW5fQXJyYXk7CiAgIC0tICBD b252ZXJ0IGEgQy1zdHlsZSBib29sZWFuIGFycmF5IGludG8gYW4gQWRhLXN0eWxlIGFycmF5LgoK ICAgZnVuY3Rpb24gVG9fQm9vbGVhbiAoVmFsdWUgOiBpbiBHYm9vbGVhbikgcmV0dXJuIEJvb2xl YW47CiAgIC0tICBDb252ZXJ0IGEgQyBib29sZWFuIGludG8gYW4gQWRhIGJvb2xlYW4uCgogICBm dW5jdGlvbiBUb19Cb29sZWFuIChWYWx1ZSA6IGluIEdpbnQpIHJldHVybiBCb29sZWFuOwogICAt LSAgQ29udmVydCBhIEMgaW50IGludG8gYW4gQWRhIGJvb2xlYW4uCgogICBmdW5jdGlvbiBUb19C b29sZWFuIChWYWx1ZSA6IGluIEd1aW50KSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIENvbnZlcnQg YSBDIHVpbnQgaW50byBhbiBBZGEgYm9vbGVhbi4KCiAgIGZ1bmN0aW9uIFRvX0dib29sZWFuIChC b29sIDogaW4gQm9vbGVhbikgcmV0dXJuIEdib29sZWFuOwogICAtLSAgQ29udmVydCBhbiBBZGEg Ym9vbGVhbiBpbnRvIGEgQyBib29sZWFuLgoKICAgZnVuY3Rpb24gVG9fR2ludCAoQm9vbCA6IGlu IEJvb2xlYW4pIHJldHVybiBHaW50OwogICAtLSAgQ29udmVydCBhbiBBZGEgYm9vbGVhbiBpbnRv IGEgQyBpbnQuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTb21lIEFjY2VzcyB0 eXBlcyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgdHlwZSBHdWNoYXJfQXJyYXlf QWNjZXNzIGlzIGFjY2VzcyBHdWNoYXJfQXJyYXk7CgogICB0eXBlIFN0cmluZ19QdHIgaXMgYWNj ZXNzIGFsbCBTdHJpbmc7CgogICAtLSAgPGRvY19pZ25vcmU+CiAgIHByb2NlZHVyZSBGcmVlIGlz IG5ldyBBZGEuVW5jaGVja2VkX0RlYWxsb2NhdGlvbgogICAgIChPYmplY3QgPT4gR3VjaGFyX0Fy cmF5LCBOYW1lID0+IEd1Y2hhcl9BcnJheV9BY2Nlc3MpOwoKICAgcHJvY2VkdXJlIEZyZWUgaXMg bmV3IEFkYS5VbmNoZWNrZWRfRGVhbGxvY2F0aW9uCiAgICAgKE9iamVjdCA9PiBTdHJpbmcsIE5h bWUgPT4gU3RyaW5nX1B0cik7CiAgIC0tICA8L2RvY19pZ25vcmU+CgogICAtLSAgPGRvY19pZ25v cmU+CiAgIHR5cGUgQ19EdW1teSBpcyBsaW1pdGVkIHByaXZhdGU7CiAgIC0tICA8L2RvY19pZ25v cmU+CgogICB0eXBlIENfUHJveHkgaXMgYWNjZXNzIENfRHVtbXk7CiAgIC0tICBHZW5lcmFsIHBy b3h5IGZvciBDIHN0cnVjdHVyZXMuCiAgIC0tICBUaGlzIHR5cGUgaXMgdXNlZCBpbnN0ZWFkIG9m IFN5c3RlbS5BZGRyZXNzIHNvIHRoYXQgdGhlIHZhcmlhYmxlcyBhcmUKICAgLS0gIGF1dG9tYXRp Y2FsbHkgaW5pdGlhbGl6ZWQgdG8gJ251bGwnLgogICAtLSAgVGhlIHZhbHVlIHBvaW50ZWQgdG8g aXMgaXJyZWxldmFudCwgYW5kIGluIGZhY3Qgc2hvdWxkIG5vdCBiZSBhY2Nlc3NlZC4KICAgLS0g IEl0IGhhcyB0aHVzIGJlZW4gbWFkZSBsaW1pdGVkIHByaXZhdGUgd2l0aCBubyBzdWJwcm9ncmFt IHRvIGFjY2VzcyBpdC4KICAgLS0gIENfUHJveHkgaXMgYSBwdWJsaWMgdHlwZSBzbyB0aGF0IG9u ZSBjYW4gY29tcGFyZSBkaXJlY3RseSB0aGUgdmFsdWUKICAgLS0gIG9mIHRoZSB2YXJpYWJsZXMg d2l0aCAnbnVsbCcuCgogICAtLSAgPGRvY19pZ25vcmU+CiAgIHByYWdtYSBDb252ZW50aW9uIChD LCBDX1Byb3h5KTsKCiAgIGZ1bmN0aW9uIENvbnZlcnQgaXMgbmV3IEFkYS5VbmNoZWNrZWRfQ29u dmVyc2lvbiAoU3lzdGVtLkFkZHJlc3MsIENfUHJveHkpOwogICBmdW5jdGlvbiBDb252ZXJ0IGlz IG5ldyBBZGEuVW5jaGVja2VkX0NvbnZlcnNpb24gKENfUHJveHksIFN5c3RlbS5BZGRyZXNzKTsK ICAgLS0gIENvbnZlcnRzIGZyb20gYSBTeXN0ZW0uQWRkcmVzcyByZXR1cm5lZCBieSBhIEMgZnVu Y3Rpb24gdG8gYW4KICAgLS0gIGludGVybmFsIENfUHJveHkuCgogICAtLSAgPC9kb2NfaWdub3Jl PgoKICAgLS0tLS0tLS0tLS0tCiAgIC0tIFF1YXJrcyAtLQogICAtLS0tLS0tLS0tLS0KCiAgIHR5 cGUgR1F1YXJrIGlzIG5ldyBHdWludDMyOwogICAtLSAgUmVwcmVzZW50cyBhIHN0cmluZyBpbnRl cm5hbGx5IGluIEd0a0FkYS4gT25jZSB5b3Uga25vdyB0aGUKICAgLS0gIGVxdWl2YWxlbnQgZm9y IGEgc3RyaW5nLCB5b3UgY2FuIGFsd2F5cyB1c2UgaXQgaW5zdGVhZCBvZiB0aGUgc3RyaW5nLAog ICAtLSAgd2hpY2ggcHJvdmlkZXMgYSBmYXN0ZXIgYWNjZXNzIGZvciBhbGwgdGhlIGZ1bmN0aW9u cyB0aGF0IHVzZSBodGFibGVzCiAgIC0tICBpbiBHdGtBZGEuCiAgIC0tICBUaGVyZSBpcyBhIGds b2JhbCBodGFibGUgdGhhdCBjb250YWlucyBhbGwgdGhlIHF1YXJrcyBkZWZpbmVkIGluCiAgIC0t ICB5b3VyIGFwcGxpY2F0aW9uIGFuZCBHdGtBZGEgaXRzZWxmLgoKICAgVW5rbm93bl9RdWFyayA6 IGNvbnN0YW50IEdRdWFyayA6PSAwOwoKICAgZnVuY3Rpb24gUXVhcmtfRnJvbV9TdHJpbmcgKElk IDogaW4gU3RyaW5nKSByZXR1cm4gR1F1YXJrOwogICAtLSAgUmV0dXJuLCBvciBjcmVhdGUgdGhl IHF1YXJrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3RyaW5nLgogICAtLSAgTm90ZSB0aGF0IGlmIHRo ZSBxdWFyayBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LCBhbiBlbnRyeSBpcyBjcmVhdGVkIGZvcgog ICAtLSAgaXQgaW4gdGhlIGdsb2JhbCBodGFibGUgZm9yIHF1YXJrcy4KCiAgIGZ1bmN0aW9uIFF1 YXJrX1RyeV9TdHJpbmcgKElkIDogaW4gU3RyaW5nKSByZXR1cm4gR1F1YXJrOwogICAtLSAgUmV0 dXJuIHRoZSBxdWFyayBhc3NvY2lhdGVkIHdpdGggdGhlIHN0cmluZywgaWYgaXQgZXhpc3RzLgog ICAtLSAgSWYgaXQgZG9lcyBub3QgZXhpc3QsIHJldHVybiBVbmtub3duX1F1YXJrLgoKcHJpdmF0 ZQogICB0eXBlIENfRHVtbXkgaXMgbnVsbCByZWNvcmQ7CiAgIC0tICBUaGlzIGFycmF5IGNhbiBj b250YWluIGFueXRoaW5nLCBzaW5jZSBpdCBpcyBuZXZlciB1c2VkIG9uIHRoZSBBZGEgc2lkZQog ICAtLSAgYW55d2F5LgoKZW5kIEdsaWI7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0Fk YSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIw MDAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9l bCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4g IC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAg ICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExp Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAg ICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs YWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t IEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVy aWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3Ro ZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRv ZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUg dG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0t Ci0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNv bnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0 aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2Ny aXB0aW9uPgotLQotLSAgVGhpcyBpcyB0aGUgdG9wIGxldmVsIHBhY2thZ2Ugb2YgdGhlIEdkayBo aWVyYXJjaHkuCi0tICBJdCBwcm92aWRlcyB0aGUgdHlwZSBkZWZpbml0aW9ucyB1c2VkIHRvIGFj Y2VzcyB1bmRlcmx5aW5nIEMgc3RydWN0dXJlcy4KLS0KLS0gIDwvZGVzY3JpcHRpb24+Cgp3aXRo IEdsaWI7CgpwYWNrYWdlIEdkayBpcwogICBwcmFnbWEgUHJlZWxhYm9yYXRlOwoKICAgc3VidHlw ZSBDX1Byb3h5IGlzIEdsaWIuQ19Qcm94eTsKICAgdHlwZSBHZGtfR0MgaXMgbmV3IENfUHJveHk7 CiAgIHR5cGUgR2RrX1dpbmRvdyBpcyBuZXcgQ19Qcm94eTsKICAgc3VidHlwZSBHZGtfRHJhd2Fi bGUgaXMgR2RrX1dpbmRvdzsKICAgc3VidHlwZSBHZGtfUGl4bWFwIGlzIEdka19EcmF3YWJsZTsK ICAgc3VidHlwZSBHZGtfQml0bWFwIGlzIEdka19EcmF3YWJsZTsKCmVuZCBHZGs7Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRv b2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAg ICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAg ICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0t IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0t Ci0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm IG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVy IGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91 IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4 ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1 bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGlu dmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmls ZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyB3aWRnZXQgaXMgdGhl IGJhc2Ugb2YgdGhlIHRyZWUgZm9yIGRpc3BsYXlhYmxlIG9iamVjdHMuCi0tICAoQSBkaXNwbGF5 YWJsZSBvYmplY3QgaXMgb25lIHdoaWNoIHRha2VzIHVwIHNvbWUgYW1vdW50Ci0tICBvZiBzY3Jl ZW4gcmVhbCBlc3RhdGUpLiBJdCBwcm92aWRlcyBhIGNvbW1vbiBiYXNlIGFuZCBpbnRlcmZhY2UK LS0gIHdoaWNoIGFjdHVhbCB3aWRnZXRzIG11c3QgYWRoZXJlIHRvLgotLQotLSAgVGhpcyBwYWNr YWdlIHByb3ZpZGVzIHNvbWUgc2VydmljZXMgd2hpY2ggbWlnaHQgaGF2ZSBiZWVuIG1vcmUgYXBw cm9wcmlhdGUKLS0gIGluIHNvbWUgb3RoZXIgcGFja2FnZXMsIGJ1dCBjb3VsZCBub3QgYmVjYXVz ZSBvZiBkZXBlbmRlbmN5IGNpcmN1bGFyaXRpZXMKLS0gICh0aGVyZSBhcmUgZm9yIGluc3RhbmNl IHNvbWUgZnVuY3Rpb25zIHJlbGF0aW5nIHRvIGNvbG9ycyBhbmQgY29sb3JtYXBzKS4KLS0gIFdl IGhhdmUgdHJpZWQgdG8gcmVmZXJlbmNlIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgb3RoZXIgcGFj a2FnZXMgYXMgd2VsbC4KLS0KLS0gIDwvZGVzY3JpcHRpb24+Ci0tICA8Y192ZXJzaW9uPjEuMi42 PC9jX3ZlcnNpb24+Cgp3aXRoIEdkay5Db2xvcjsKd2l0aCBHZGsuRXZlbnQ7CndpdGggR2RrLkJp dG1hcDsKd2l0aCBHZGsuUmVjdGFuZ2xlOwp3aXRoIEdkay5UeXBlczsKd2l0aCBHZGsuVmlzdWFs Owp3aXRoIEdkay5XaW5kb3c7CndpdGggR3RrLkFjY2VsX0dyb3VwOwp3aXRoIEd0ay5BZGp1c3Rt ZW50Owp3aXRoIEd0ay5FbnVtczsKd2l0aCBHdGsuT2JqZWN0Owp3aXRoIEd0ay5TdHlsZTsKd2l0 aCBHbGliLkdsaXN0Owp3aXRoIEdsaWIuR1NsaXN0Owp3aXRoIFN5c3RlbTsKcHJhZ21hIEVsYWJv cmF0ZV9BbGwgKEdsaWIuR1NsaXN0KTsKCnBhY2thZ2UgR3RrLldpZGdldCBpcwoKICAgdHlwZSBH dGtfV2lkZ2V0X1JlY29yZCBpcyBuZXcgT2JqZWN0Lkd0a19PYmplY3RfUmVjb3JkIHdpdGggcHJp dmF0ZTsKICAgdHlwZSBHdGtfV2lkZ2V0IGlzIGFjY2VzcyBhbGwgR3RrX1dpZGdldF9SZWNvcmQn Q2xhc3M7CgogICB0eXBlIEd0a19SZXF1aXNpdGlvbiBpcyByZWNvcmQKICAgICAgV2lkdGggIDog R2ludDE2OwogICAgICBIZWlnaHQgOiBHaW50MTY7CiAgIGVuZCByZWNvcmQ7CiAgIC0tICBHdGtf UmVxdWlzaXRpb24gaXMgdGhlIGRlc2lyZWQgYW1vdW50IG9mIHNjcmVlbiByZWFsLWVzdGF0ZSBh IHdpZGdldAogICAtLSAgcmVxdWVzdHMgdG8gdGhlIHNlcnZlci4gSXRzIHJlYWwgYWxsb2NhdGVk IHNpemUgbWlnaHQgYmUgZGlmZmVyZW50LgogICAtLSAgU2VlIHRoZSBzZWN0aW9uIGluIHRoZSBH dGtBZGEgdXNlciBndWlkZSBvbiBob3cgdG8gY3JlYXRlIG5ldyB3aWRnZXRzCiAgIC0tICBpbiBB ZGEsIGFuZCB0aGUgZXhhbXBsZXMvYmFzZV93aWRnZXQgZGlyZWN0b3J5IGZvciBhbiBleGFtcGxl IG9uIGhvdyB0bwogICAtLSAgdXNlIHRoaXMuCiAgIHByYWdtYSBQYWNrIChHdGtfUmVxdWlzaXRp b24pOwoKICAgdHlwZSBHdGtfUmVxdWlzaXRpb25fQWNjZXNzIGlzIGFjY2VzcyBhbGwgR3RrX1Jl cXVpc2l0aW9uOwogICAtLSAgVGhpcyB0eXBlIGlzIHVzZWQgdG8gY3JlYXRlIG5ldyB3aWRnZXRz LgoKICAgdHlwZSBHdGtfQWxsb2NhdGlvbiBpcyByZWNvcmQKICAgICAgWCAgICAgIDogR2ludDE2 OwogICAgICBZICAgICAgOiBHaW50MTY7CiAgICAgIFdpZHRoICA6IEd1aW50MTY7CiAgICAgIEhl aWdodCA6IEd1aW50MTY7CiAgIGVuZCByZWNvcmQ7CiAgIC0tICBHdGtfQWxsb2NhdGlvbiBpbmRp Y2F0ZXMgYSBzaXplIGFuZCBwb3NpdGlvbiBhIHdpZGdldCB3YXMgYWxsb2NhdGVkLgogICAtLSAg U2VlIHRoZSBzZWN0aW9uIGluIHRoZSB1c2VyIGd1aWRlIG9uIGhvdyB0byBjcmVhdGUgbmV3IHdp ZGdldHMgZm9yIG1vcmUKICAgLS0gIGluZm9ybWF0aW9uLgogICBwcmFnbWEgUGFjayAoR3RrX0Fs bG9jYXRpb24pOwoKICAgdHlwZSBHdGtfQWxsb2NhdGlvbl9BY2Nlc3MgaXMgYWNjZXNzIGFsbCBH dGtfQWxsb2NhdGlvbjsKICAgLS0gIFRoaXMgdHlwZSBpcyB1c2VkIHRvIGNyZWF0ZSBuZXcgd2lk Z2V0cy4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gV2lkZ2V0cycgbGlmZSBj eWNsZSAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgSW5pdGlh bGl6ZV9XaWRnZXQgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzcyk7CiAg IC0tICBJbnRlcm5hbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KICAgLS0gIFNlZSB0aGUgc2Vj dGlvbiAiQ3JlYXRpbmcgeW91ciBvd24gd2lkZ2V0cyIgaW4gdGhlIGRvY3VtZW50YXRpb24uCgog ICBwcm9jZWR1cmUgRGVzdHJveV9DYiAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3Jk J0NsYXNzKTsKICAgLS0gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgYXMgYSBjYWxsYmFj ayB0byBkZXN0cm95IGEgd2lkZ2V0LgogICAtLSAgQWxsIGl0IGRvZXMgaXMgY2FsbCBEZXN0cm95 IG9uIGl0cyBhcmd1bWVudCwgYnV0IGl0cyBwcm9maWxlIGlzCiAgIC0tICBjb21wYXRpYmxlIHdp dGggdGhlIGhhbmRsZXJzIGZvdW5kIGluIEd0ay5IYW5kbGVycy4KCiAgIHByb2NlZHVyZSBVbnBh cmVudCAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0gIERl dGFjaCB0aGUgd2lkZ2V0IGZyb20gaXRzIHBhcmVudC4KICAgLS0gIEFzIGEgc2lkZSBlZmZlY3Qs IHRoZSB3aWRnZXQgd2lsbCBiZSBlcmFzZWQgZnJvbSB0aGUgc2NyZWVuLgogICAtLSAgTm90ZSB0 aGF0IFdpZGdldCB3aWxsIGJlIGRlc3Ryb3llZCBpZiBpdHMgcmVmZXJlbmNlIGNvdW50IHJlYWNo ZXMgMC4KICAgLS0gIFRodXMsIGlmIHlvdSB3YW50IHRvIHJldXNlIGl0LCB5b3Ugc2hvdWxkIGZp cnN0IEd0ay5PYmplY3QuUmVmIGl0LAogICAtLSAgYmVmb3JlIGNhbGxpbmcgVW5wYXJlbnQuCgog ICBwcm9jZWR1cmUgU2hvdyAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAg LS0gIFNjaGVkdWxlIHRoZSB3aWRnZXQgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSBzY3JlZW4gd2hl biBpdHMgcGFyZW50IGlzCiAgIC0tICBhbHNvIHNob3duIChlbWl0cyB0aGUgInNob3ciIHNpZ25h bCkuCiAgIC0tICBJZiBpdHMgYW5jZXN0b3JzIGFyZSBhbHJlYWR5IG1hcHBlZCB0byB0aGUgc2Ny ZWVuLCB0aGVuIHRoZSB3aWRnZXQgaXMKICAgLS0gIGltbWVkaWF0ZWx5IGRpc3BsYXllZCB0aHJv dWdoIGEgY2FsbCB0byBNYXAgYmVsb3cuCgogICBwcm9jZWR1cmUgU2hvd19Ob3cgKFdpZGdldCA6 IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBTaG93IHRoZSB3aWRnZXQuCiAgIC0t ICBJZiBpdCBpcyBhbiB1bm1hcHBlZCB0b3BsZXZlbCB3aWRnZXQsIHdhaXQgZm9yIGl0IHRvIGJl IG1hcHBlZC4gVGhpcwogICAtLSAgY3JlYXRlcyBhIHJlY3Vyc2l2ZSBtYWluX2xvb3AuCgogICBw cm9jZWR1cmUgSGlkZSAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0g IEhpZGUgdGhlIHdpZGdldCBmcm9tIHRoZSBzY3JlZW4gKGVtaXRzIHRoZSAiaGlkZSIgc2lnbmFs KS4KICAgLS0gIElmIFdpZGdldCB3YXMgdmlzaWJsZSwgaXQgaXMgaW1tZWRpYXRlbHkgaGlkZGVu LgogICAtLSAgSWYgb25lIG9mIGl0cyBhbmNlc3RvciBpcyBsYXRlciBzaG93biBvbiB0aGUgc2Ny ZWVuLCBXaWRnZXQgd29uJ3QKICAgLS0gIGFwcGVhci4KCiAgIHByb2NlZHVyZSBTaG93X0FsbCAo V2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIFNob3cgV2lkZ2V0IGFu ZCBhbGwgaXRzIGNoaWxkcmVuIHJlY3Vyc2l2ZWx5LgoKICAgcHJvY2VkdXJlIEhpZGVfQWxsIChX aWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgSGlkZSBXaWRnZXQgYW5k IGFsbCBpdHMgY2hpbGRyZW4uCiAgIC0tICBOb3RlIHRoYXQgaWYgeW91IHNpbXBseSB3YW50IHRv IGRlbGV0ZSBXaWRnZXQgZnJvbSB0aGUgc2NyZWVuLCB5b3UgY2FuCiAgIC0tICBzaW1wbHkgY2Fs bCB0aGUgSGlkZSBzdWJwcm9ncmFtIG9uIGl0LiBUaGlzIHByb2NlZHVyZSBIaWRlX0FsbCBzaG91 bGQKICAgLS0gIG9ubHkgYmUgdXNlZCBpZiB5b3Ugd2FudCB0byB1bnNjaGVkdWxlIGEgd2lkZ2V0 IHRvIGJlIGRpc3BsYXllZCBsYXRlciwKICAgLS0gIG5vdCB0byByZW1vdmUgYW4gYWN0dWFsIHdp ZGdldCBmcm9tIHRoZSBzY3JlZW4uCgogICBwcm9jZWR1cmUgTWFwIChXaWRnZXQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgTWFwIGEgd2lkZ2V0IHRvIHRoZSBzY3JlZW4uCiAg IC0tICBBIHdpbmRvdyBpcyBjcmVhdGVkIGZvciBpdCBvbiB0aGUgc2NyZWVuICh0aHJvdWdoIGEg Y2FsbCB0byBSZWFsaXplKSBhbmQKICAgLS0gIFdpZGdldCBpcyB0aGVuIGRyYXduIG9uIHRoZSBz Y3JlZW4gKGlmIGl0cyBhbmNlc3RvcnMgYXJlIGFsc28gbWFwcGVkKS4KICAgLS0gIFRoaXMgZnVu Y3Rpb24gaXMgcmVjdXJzaXZlIGFuZCB3aWxsIGFsc28gbWFwIGFsbCB0aGUgY2hpbGRyZW4gb2Yg V2lkZ2V0LgogICAtLQogICAtLSAgSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBoaWdoZXIt bGV2ZWwgU2hvdyBpbnN0ZWFkLgoKICAgcHJvY2VkdXJlIFVubWFwIChXaWRnZXQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgVW5tYXAgYSB3aWRnZXQgZnJvbSB0aGUgc2NyZWVu LgogICAtLSAgVGhpcyByZXN1bHRzIGluIHRoZSB3aWRnZXQgYmVpbmcgaGlkZGVuLCBidXQgbm90 IGRlc3Ryb3llZC4gSXQgY2FuIGJlCiAgIC0tICBzaG93biBhZ2FpbiBhbnkgdGltZSB0aHJvdWdo IGEgY2FsbCB0byBNYXAgKHByb3ZpZGVkIGl0cyBhbmNlc3RvcnMgYXJlCiAgIC0tICBhbHNvIG1h cHBlZCkuCiAgIC0tCiAgIC0tICBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGhpZ2hlci1s ZXZlbCBIaWRlIGluc3RlYWQuCgogICBwcm9jZWR1cmUgUmVhbGl6ZSAoV2lkZ2V0IDogYWNjZXNz IEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIENyZWF0ZSBhIHdpbmRvdyBmb3IgV2lkZ2V0IGFu ZCBpdHMgYW5jZXN0b3JzIChlbWl0IHRoZSAicmVhbGl6ZSIgc2lnbmFsKQogICAtLSAgVGhpcyBk b2VzIG5vdCBtZWFuIHRoYXQgdGhlIHdpZGdldCB3aWxsIGFwcGVhciBvbiB0aGUgc2NyZWVuLCBi dXQKICAgLS0gIHJlc291cmNlcyBzdWNoIGFzIGNvbG9ybWFwcywgZXRjLiBiZWNvbWUgYXZhaWxh YmxlLgogICAtLSAgU29tZSByb3V0aW5lcyByZXF1aXJlIHRoYXQgdGhlIHdpZGdldCBpcyByZWFs aXplZCBiZWZvcmUgYW55IGNhbGwuCiAgIC0tICBZb3UgbXVzdCBzZXQgdGhlIEV2ZW50X01hc2sg YmVmb3JlIGNhbGxpbmcgdGhpcyByb3V0aW5lIGlmIHlvdSB3YW50IHRvCiAgIC0tICBjaGFuZ2Ug aXQgZnJvbSBpdHMgZGVmYXVsdCB2YWx1ZS4KCiAgIHByb2NlZHVyZSBVbnJlYWxpemUgKFdpZGdl dCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBIaWRlIHRoZSB3aWRnZXQgZnJv bSB0aGUgc2NyZWVuIGFuZCBkZWxldGVzIHRoZSBhc3NvY2lhdGVkIHdpbmRvdy4KICAgLS0gIFRo aXMgZG9lcyBub3QgZGVzdHJveSB0aGUgd2lkZ2V0IGl0c2VsZiwgb25seSBpdHMgc2VydmVyLXNp ZGUKICAgLS0gIHJlc291cmNlcy4KCiAgIGdlbmVyaWMKICAgICAgdHlwZSBXaWRnZXRfVHlwZSBp cyBuZXcgR3RrX1dpZGdldF9SZWNvcmQgd2l0aCBwcml2YXRlOwogICAgICB3aXRoIHByb2NlZHVy ZSBSZWFsaXplX1Byb2MgKFdpZGdldCA6IGFjY2VzcyBXaWRnZXRfVHlwZSdDbGFzcyk7CiAgIHBh Y2thZ2UgUmVhbGl6ZV9IYW5kbGluZyBpcwoKICAgICAgcHJvY2VkdXJlIFNldF9SZWFsaXplIChX aWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAgICAtLSAgU2V0IHRo ZSByZWFsaXplIGhhbmRsZXIgYXQgdGhlIGxvdyBsZXZlbC4KICAgICAgLS0gIFRoaXMgaXMgbmVl ZGVkIHRvIHJlcGxhY2UgdGhlIGRlZmF1bHQgcmVhbGl6ZSBpbiBuZXcgd2lkZ2V0cy4KCiAgIGVu ZCBSZWFsaXplX0hhbmRsaW5nOwoKICAgZnVuY3Rpb24gR2V0X1R5cGUgcmV0dXJuIEd0ay5HdGtf VHlwZTsKICAgLS0gIFJldHVybiB0aGUgaW50ZXJuYWwgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEg R3RrX1dpZGdldC4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gRHJhd2luZyBhIHdp ZGdldCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgUXVldWVfRHJh dyAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIEFkZCBhIGRyYXdp bmcgcmVxdWVzdCB0byB0aGUgZXZlbnQgcXVldWUgZm9yIHRoZSB3aG9sZSB3aWRnZXQuCiAgIC0t ICBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gY2FsbGluZyBEcmF3IGRpcmVjdGx5LCBzaW5j ZSBHdGtBZGEgZ3JvdXBzCiAgIC0tICBkcmF3aW5nIHJlcXVlc3RzIGFzIG11Y2ggYXMgcG9zc2li bGUgdG8gc3BlZWQgdXAgdGhlIGRyYXdpbmcgcHJvY2Vzcy4KICAgLS0gIFRoZSBhY3R1YWwgZHJh d2luZyB3aWxsIHRha2UgcGxhY2UgYXMgc29vbiBhcyBHdGtBZGEgaXMgbm90IGJ1c3kKICAgLS0g IHByb2Nlc3Npbmcgb3RoZXIgZXZlbnRzLCBidXQgYmVmb3JlIGlkbGUgZXZlbnRzLgoKICAgcHJv Y2VkdXJlIFF1ZXVlX0RyYXdfQXJlYQogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9S ZWNvcmQ7CiAgICAgIFggICAgICA6IEdpbnQ7CiAgICAgIFkgICAgICA6IEdpbnQ7CiAgICAgIFdp ZHRoICA6IEdpbnQ7CiAgICAgIEhlaWdodCA6IEdpbnQpOwogICAtLSAgQWRkIGEgZHJhd2luZyBy ZXF1ZXN0IHRvIHRoZSBldmVudCBxdWV1ZSBmb3IgcGFydCBvZiB0aGUgd2lkZ2V0LgogICAtLSAg VGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGF0IGNhbGxpbmcgRHJhdyBkaXJlY3RseSAoc2VlIFF1 ZXVlX0RyYXcpLgoKICAgcHJvY2VkdXJlIFF1ZXVlX0NsZWFyIChXaWRnZXQgOiBhY2Nlc3MgR3Rr X1dpZGdldF9SZWNvcmQpOwogICAtLSAgQWRkIGEgY2xlYXIgcmVxdWVzdCB0byB0aGUgZXZlbnQg cXVldWUgZm9yIHRoZSB3aG9sZSB3aWRnZXQuCiAgIC0tICBUaGlzIGlzIGFkZGVkIHRvIHRoZSBz YW1lIGxpc3QgYXMgZm9yIFF1ZXVlX0RyYXcsIGFuZCB0aHVzIGlzIGNvYWxlc2NlZAogICAtLSAg YXMgbXVjaCBhcyBwb3NzaWJsZSB3aXRoIG90aGVyIGRyYXdpbmcgcmVxdWVzdHMuCgogICBwcm9j ZWR1cmUgUXVldWVfQ2xlYXJfQXJlYQogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9S ZWNvcmQ7CiAgICAgIFggICAgICA6IEdpbnQ7CiAgICAgIFkgICAgICA6IEdpbnQ7CiAgICAgIFdp ZHRoICA6IEdpbnQ7CiAgICAgIEhlaWdodCA6IEdpbnQpOwogICAtLSAgQWRkIGEgY2xlYXIgcmVx dWVzdCB0byB0aGUgZXZlbnQgcXVldWUgZm9yIHBhcnQgb2YgdGhlIHdpZGdldC4KICAgLS0gIFRo aXMgaXMgYWRkZWQgdG8gdGhlIHNhbWUgbGlzdCBhcyBmb3IgUXVldWVfRHJhdywgYW5kIHRodXMg aXMgY29hbGVzY2VkCiAgIC0tICBhcyBtdWNoIGFzIHBvc3NpYmxlIHdpdGggb3RoZXIgZHJhd2lu ZyByZXF1ZXN0cy4KCiAgIHByb2NlZHVyZSBRdWV1ZV9SZXNpemUgKFdpZGdldCA6IGFjY2VzcyBH dGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBRdWV1ZSBkcmF3aW5nIHJlcXVlc3RzIGFmdGVyIGEg cmVzaXppbmcgb2YgdGhlIHdpZGdldC4KICAgLS0gIFRoaXMgY2xlYXJzIHRoZSB3aWRnZXQsIGFu ZCBpdHMgcGFyZW50IGlmIGFueSwgc28gdGhhdCBldmVyeXRoaW5nIGlzCiAgIC0tICBjb3JyZWN0 bHkgcmVkcmF3bi4KICAgLS0gIFlvdSBzaG91bGQgbm90IGhhdmUgdG8gY2FsbCB0aGlzIGZ1bmN0 aW9uIGRpcmVjdGx5LgoKICAgcHJvY2VkdXJlIERyYXcKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0 a19XaWRnZXRfUmVjb3JkOwogICAgICBBcmVhICAgOiBpbiBHZGsuUmVjdGFuZ2xlLkdka19SZWN0 YW5nbGUgOj0gR2RrLlJlY3RhbmdsZS5GdWxsX0FyZWEpOwogICAtLSAgRW1pdCBhICJkcmF3IiBz aWduYWwgZm9yIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUgd2lkZ2V0LgogICAtLSAgVGhlIHZpc3Vh bCBhc3BlY3QgbWlnaHQgYmUgZGlmZmVyZW50IHdoZXRoZXIgdGhlIHdpZGdldCBoYXMgdGhlIGZv Y3VzCiAgIC0tICBvciBub3QuCgogICBwcm9jZWR1cmUgRHJhd19Gb2N1cyAoV2lkZ2V0IDogYWNj ZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIEVtaXQgYSAiZHJhd19mb2N1cyIgc2lnbmFs IGZvciB0aGUgd2lkZ2V0LgogICAtLSAgVGhlIHdpZGdldCB3aWxsIGJlIHBhaW50ZWQgYXMgaXQg YXBwZWFycyB3aGVuIGl0IGhhcyB0aGUgZm9jdXMuCgogICBwcm9jZWR1cmUgRHJhd19EZWZhdWx0 IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgRW1pdCBhICJkcmF3 X2RlZmF1bHQiIHNpZ25hbCBmb3IgdGhlIHdpZGdldC4KICAgLS0gIFRoZSB3aWRnZXQgd2lsbCBi ZSBwYWludGVkIGFzIGl0IGFwcGVhcnMgd2hlbiBpdCBkb2Vzbid0IGhhdmUgdGhlIGZvY3VzLgoK ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU2l6ZSBhbmQgcG9zaXRpb24gLS0KICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTaXplX1JlcXVlc3QKICAgICAo V2lkZ2V0ICAgICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIFJlcXVpc2l0aW9u IDogaW4gb3V0IEd0a19SZXF1aXNpdGlvbik7CiAgIC0tICBFbWl0IGEgInNpemVfcmVxdWVzdCIg ZXZlbnQgZm9yIHRoZSB3aWRnZXQKCiAgIHByb2NlZHVyZSBTaXplX0FsbG9jYXRlCiAgICAgKFdp ZGdldCAgICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIEFsbG9jYXRpb24gOiBp biBvdXQgR3RrX0FsbG9jYXRpb24pOwogICAtLSAgRW1pdCBhICJzaXplX2FsbG9jYXRlIiBldmVu dCBmb3IgdGhlIHdpZGdldC4KICAgLS0gIEFsbG9jYXRpb24nc2l6ZSBpcyBmaXJzdCBjb25zdHJh aW5lZCB0byBhIHJhbmdlIGJldHdlZW4gMXgxIGFuZAogICAtLSAgMzI3Njd4MzI3NjcuCiAgIC0t ICBBIGNsZWFyIGFuZCBkcmF3IHJlcXVlc3QgaXMgYWxzbyBxdWV1ZWQgaWYgcmVxdWlyZWQuCgog ICBmdW5jdGlvbiBHZXRfQ2hpbGRfUmVxdWlzaXRpb24KICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0 a19XaWRnZXRfUmVjb3JkKSByZXR1cm4gR3RrX1JlcXVpc2l0aW9uOwogICAtLSAgUmV0dXJuIHRo ZSBzaXplIHJlcXVlc3RzIGJ5IHRoZSB3aWRnZXQuCiAgIC0tICBUaGlzIGlzIHRoZSBpZGVhbCBz aXplIGZvciB0aGUgd2lkZ2V0LCBub3QgbmVjZXNzYXJpbHkgaXRzIGFjdHVhbCBzaXplLgogICAt LSAgU2VlIHRoZSB1c2VyIGd1aWRlJ3Mgc2VjdGlvbiBvbiBob3cgdG8gY3JlYXRlIG5ldyB3aWRn ZXRzIGZvciBtb3JlCiAgIC0tICBpbmZvcm1hdGlvbiBvbiB0aGUgc2l6ZSByZXF1aXNpdGlvbiBh bmQgYWxsb2NhdGlvbi4KCiAgIHByb2NlZHVyZSBTZXRfVVBvc2l0aW9uCiAgICAgKFdpZGdldCA6 IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgWCwgWSAgIDogaW4gR2ludCk7CiAgIC0t ICBNb2RpZnkgdGhlIHBvc2l0aW9uIG9mIHRoZSB3aWRnZXQuCiAgIC0tICBUaGlzIHNob3VsZCBi ZSB1c2VkIG9ubHkgZm9yIHRvcGxldmVsIHdpZGdldHMgKHdpbmRvd3MgYW5kIGRpYWxvZ3MpLAog ICAtLSAgc2luY2Ugb3RoZXIgd2lkZ2V0cycgcG9zaXRpb25zIGFyZSBoYW5kbGVkIGJ5IHRoZWly IHBhcmVudC4KCiAgIHByb2NlZHVyZSBTZXRfVVNpemUKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0 a19XaWRnZXRfUmVjb3JkOwogICAgICBXaWR0aCwgSGVpZ2h0IDogaW4gR2ludCk7CiAgIC0tICBN b2RpZnkgdGhlIHNpemUgb2YgdGhlIHdpZGdldC4KICAgLS0gIFRoaXMgc2V0cyBhbiBhYnNvbHV0 ZSBzaXplIGZvciB0aGUgd2lkZ2V0LCBubyBtYXR0ZXIgd2hhdCBpdHMgcmVxdWVzdGVkCiAgIC0t ICBzaXplIHdvdWxkIGJlLiBGb3IgR3RrX1dpbmRvd3MsIHlvdSBzaG91bGQgY29uc2lkZXIgdXNp bmcKICAgLS0gIFNldF9EZWZhdWx0X1NpemUgaW5zdGVhZCwgd2hpY2ggc2V0cyBhIG1pbmltYWwg c2l6ZSwgYnV0IHVzZSB0aGUKICAgLS0gIHdpZGdldCdzIHJlcXVlc3RlZCBzaXplIGlmIGl0IGlz IGJpZ2dlci4KICAgLS0gIElmIFdpZHRoIG9yIEhlaWdodCBpcyBuZWdhdGl2ZSwgdGhleSBhcmUg aWdub3JlZCwgYW5kIHRoZSB3aWRnZXQncwogICAtLSAgZGVmYXVsdCB3aWR0aCBpcyBrZXB0LgoK ICAgZnVuY3Rpb24gR2V0X0FsbG9jYXRpb25fV2lkdGgKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0 a19XaWRnZXRfUmVjb3JkKSByZXR1cm4gR3VpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIGN1cnJlbnQg d2lkdGggb2YgdGhlIHdpZGdldC4KCiAgIGZ1bmN0aW9uIEdldF9BbGxvY2F0aW9uX0hlaWdodAog ICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBHdWludDsKICAg LS0gIFJldHVybiB0aGUgY3VycmVudCBoZWlnaHQgb2YgdGhlIHdpZGdldC4KCiAgIGZ1bmN0aW9u IEdldF9BbGxvY2F0aW9uX1ggKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCkgcmV0 dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIHdpZGdl dCwgcmVsYXRpdmUgdG8gaXRzIHBhcmVudC4KCiAgIGZ1bmN0aW9uIEdldF9BbGxvY2F0aW9uX1kg KFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCkgcmV0dXJuIEdpbnQ7CiAgIC0tICBS ZXR1cm4gdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIHdpZGdldCwgcmVsYXRpdmUgdG8gaXRz IHBhcmVudC4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBBY2NlbGVyYXRvcnMgLS0KICAg LS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgQWRkX0FjY2VsZXJhdG9yCiAgICAgKFdp ZGdldCAgICAgICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgQWNjZWxfU2lnbmFs IDogaW4gU3RyaW5nOwogICAgICBBY2NlbF9Hcm91cCAgOiBpbiBHdGsuQWNjZWxfR3JvdXAuR3Rr X0FjY2VsX0dyb3VwOwogICAgICBBY2NlbF9LZXkgICAgOiBpbiBHZGsuVHlwZXMuR2RrX0tleV9U eXBlOwogICAgICBBY2NlbF9Nb2RzICAgOiBpbiBHZGsuVHlwZXMuR2RrX01vZGlmaWVyX1R5cGU7 CiAgICAgIEFjY2VsX0ZsYWdzICA6IGluIEd0ay5BY2NlbF9Hcm91cC5HdGtfQWNjZWxfRmxhZ3Mp OwogICAtLSAgQWRkIGEgbmV3IGFjY2VsZXJhdG9yIGZvciB0aGUgd2lkZ2V0LgogICAtLSAgVGhl IHNpZ25hbCBBY2NlbF9TaWduYWwgd2lsbCBiZSBzZW50IHRvIFdpZGdldCB3aGVuIHRoZSBtYXRj aGluZwogICAtLSAga2V5IGlzIHByZXNzZWQgYW5kIHRoZSB3aWRnZXQgaGFzIHRoZSBmb2N1cy4K CiAgIHByb2NlZHVyZSBSZW1vdmVfQWNjZWxlcmF0b3IKICAgICAoV2lkZ2V0ICAgICAgIDogYWNj ZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBY2NlbF9Hcm91cCAgOiBpbiBHdGsuQWNjZWxf R3JvdXAuR3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2NlbF9LZXkgICAgOiBpbiBHZGsuVHlwZXMu R2RrX0tleV9UeXBlOwogICAgICBBY2NlbF9Nb2RzICAgOiBpbiBHZGsuVHlwZXMuR2RrX01vZGlm aWVyX1R5cGUpOwogICAtLSAgUmVtb3ZlIGFuIGFjY2VsZXJhdG9yIGZvciB0aGUgd2lkZ2V0LgoK ICAgcHJvY2VkdXJlIFJlbW92ZV9BY2NlbGVyYXRvcnMKICAgICAoV2lkZ2V0ICAgICAgIDogYWNj ZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBY2NlbF9TaWduYWwgOiBpbiBTdHJpbmc7CiAg ICAgIFZpc2libGVfT25seSA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7CiAgIC0tICBSZW1vdmUgYWxs IHRoZSBhY2NlbGVyYXRvcnMgZm9yIHRoZSB3aWRnZXQgdGhhdCBlbWl0cyB0aGUgQWNjZWxfU2ln bmFsCiAgIC0tICBzaWduYWwgd2hlbiB0aGUga2V5IGlzIHByZXNzZWQuCiAgIC0tICBWaXNpYmxl X09ubHkgaXMgY3VycmVudGx5IHVudXNlZCBpbiB0aGUgY29kZSBvZiBndGsrLgoKICAgZnVuY3Rp b24gQWNjZWxlcmF0b3JfU2lnbmFsCiAgICAgKFdpZGdldCAgICAgICA6IGFjY2VzcyBHdGtfV2lk Z2V0X1JlY29yZDsKICAgICAgQWNjZWxfR3JvdXAgIDogaW4gR3RrLkFjY2VsX0dyb3VwLkd0a19B Y2NlbF9Hcm91cDsKICAgICAgQWNjZWxfS2V5ICAgIDogaW4gR2RrLlR5cGVzLkdka19LZXlfVHlw ZTsKICAgICAgQWNjZWxfTW9kcyAgIDogaW4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlKSBy ZXR1cm4gR3VpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIHNpZ25hbCBpZCBvZiB0aGUgc2lnbmFsIGVt aXR0ZWQgd2hlbiBBY2NlbF9LZXkgaXMgcHJlc3NlZAogICAtLSAgaW5zaWRlIHRoZSB3aWRnZXQu CgogICBwcm9jZWR1cmUgTG9ja19BY2NlbGVyYXRvcnMgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lk Z2V0X1JlY29yZCk7CiAgIC0tICBMb2NrIHRoZSBhY2NlbGVyYXRvcnMgZm9yIHRoZSB3aWRnZXQu CiAgIC0tICBObyBuZXcgYWNjZWxlcmF0b3IgY2FuIGJlIGFkZGVkIHRvIFdpZGdldCAodGhlIGRl ZmF1bHQgYmVoYXZpb3IgaXMKICAgLS0gIHRoYXQgdGhlIHVzZXIgY2FuIGR5bmFtaWNhbGx5IGNy ZWF0ZSBuZXcgYWNjZWxlcmF0b3JzLCBmb3IgaW5zdGFuY2UKICAgLS0gIGJ5IHByZXNzaW5nIGEg bm90LXlldCBhc3NpZ25lZCBrZXkgb24gYW55IG1lbnUgaXRlbS4KICAgLS0gIElmIHlvdSBjYWxs IHRoaXMgZnVuY3Rpb24gb24gdGhlIG1lbnVfaXRlbSwgdGhpcyBiZWhhdmlvciB3aWxsIG5vdAog ICAtLSAgbG9uZ2VyIGJlIGFjdGl2YXRlZC4KCiAgIHByb2NlZHVyZSBVbmxvY2tfQWNjZWxlcmF0 b3JzIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgVW5sb2NrIHRo ZSBhY2NlbGVyYXRvcnMgZm9yIHRoZSB3aWRnZXQuCiAgIC0tICBJdCBpcyBub3cgcG9zc2libGUg dG8gYWRkIG5ldyBhY2NlbGVyYXRvcnMgdG8gdGhlIHdpZGdldC4KCiAgIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAgLS0gIEV2ZW50cyBhbmQgc2lnbmFscyAtLQogICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBFdmVudAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3Rr X1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnQp IHJldHVybiBHaW50OwogICAtLSAgRW1pdCBhIHNpZ25hbCBvbiB0aGUgd2lkZ2V0LgogICAtLSAg VGhlIGV4YWN0IHNpZ25hbCBkZXBlbmRzIG9uIHRoZSBldmVudCB0eXBlIChpLmUuIGlmIHRoZSB0 eXBlIGlzCiAgIC0tICBHZGtfQnV0dG9uX1ByZXNzLCB0aGVuIGEgImJ1dHRvbl9wcmVzcyIgc2ln bmFsIGlzIGVtaXR0ZWQpLgoKICAgcHJvY2VkdXJlIEFjdGl2YXRlIChXaWRnZXQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgRW1pdCBhbiBhY3RpdmF0ZSBzaWduYWwgb24gdGhl IHdpZGdldC4KICAgLS0gIFRoZSBleGFjdCBzaWduYWwgZW1pdHRlZCBkZXBlbmRzIG9uIHRoZSB3 aWRnZXQgdHlwZSAoaS5lLiBmb3IgYQogICAtLSAgR3RrX0J1dHRvbiB0aGlzIGVtaXRzIGEgImNs aWNrZWQiIHNpZ25hbCwgZm9yIGEgR3RrX0VkaXRhYmxlIHRoaXMgZW1pdHMKICAgLS0gIHRoZSAi YWN0aXZhdGUiIHNpZ25hbCwgLi4uKS4KCiAgIHByb2NlZHVyZSBHcmFiX0ZvY3VzIChXaWRnZXQg OiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgRW1pdCB0aGUgImdyYWJfZm9jdXMi IHNpZ25hbCBmb3IgdGhlIHdpZGdldC4KICAgLS0gIFRoaXMgaXMgc2VudCB3aGVuIHRoZSB3aWRn ZXQgZ2V0cyB0aGUgZm9jdXMuIEl0cyB2aXN1YWwgYXNwZWN0IG1pZ2h0CiAgIC0tICBjaGFuZ2Uu CiAgIC0tICBUaGUgIkNhbl9Gb2N1cyIgZmxhZyBtdXN0IGhhdmUgYmVlbiBzZXQgZmlyc3QuCgog ICBwcm9jZWR1cmUgU2V0X0V2ZW50cwogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9S ZWNvcmQ7CiAgICAgIEV2ZW50cyA6IGluICAgICBHZGsuVHlwZXMuR2RrX0V2ZW50X01hc2spOwog ICAtLSAgU2V0cyB0aGUgZXZlbnQgbWFzayBmb3IgdGhlIHdpZGdldC4KICAgLS0gIFdpZGdldCBz aG91bGQgbm90IGhhdmUgYmVlbiByZWFsaXplZCBiZWZvcmUsIG9yIG5vdGhpbmcgaXMgZG9uZS4K ICAgLS0gIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHlvdSBjYW4gZXhwbGljaXRseSBnZXQgbW91c2Ug b3Iga2V5Ym9hcmRzIGV2ZW50cyBvbgogICAtLSAgd2lkZ2V0cyB0aGF0IGRvIG5vdCBhdXRvbWF0 aWNhbGx5IGdldCB0aGVtLCBhcyBmb3IgaW5zdGFuY2UgaW4gYQogICAtLSAgR3RrX0RyYXdpbmdf QXJlYS4KCiAgIGZ1bmN0aW9uIEdldF9FdmVudHMKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19X aWRnZXRfUmVjb3JkKSByZXR1cm4gR2RrLlR5cGVzLkdka19FdmVudF9NYXNrOwogICAtLSAgR2V0 IHRoZSBldmVudCBtYXNrIGZvciB0aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBpbmRpY2F0ZXMgdGhl IGxpc3Qgb2YgZXZlbnRzIHRoYXQgdGhlIHdpZGdldCByZWNlaXZlcy4KCiAgIHByb2NlZHVyZSBB ZGRfRXZlbnRzCiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAg RXZlbnRzIDogaW4gICAgIEdkay5UeXBlcy5HZGtfRXZlbnRfTWFzayk7CiAgIC0tICBBZGQgc29t ZSBldmVudHMgdG8gdGhlIGN1cnJlbnQgZXZlbnQgbWFzayBvZiB0aGUgd2lkZ2V0LgoKICAgcHJv Y2VkdXJlIFNldF9FeHRlbnNpb25fRXZlbnRzCiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lk Z2V0X1JlY29yZDsKICAgICAgTW9kZSAgIDogaW4gICAgIEdkay5UeXBlcy5HZGtfRXh0ZW5zaW9u X01vZGUpOwogICAtLSAgU2V0IHRoZSBleHRlbnNpb24gZXZlbnQgbWFzayBmb3IgdGhlIHdpZGdl dC4KICAgLS0gIFRoaXMgaXMgdXNlZCB0byBhY3RpdmF0ZSBzb21lIHNwZWNpYWwgaW5wdXQgbW9k ZXMgZm9yIG90aGVyIGRldmljZXMgdGhhbgogICAtLSAga2V5Ym9hcmQgYW5kIG1vdXNlLgoKICAg ZnVuY3Rpb24gR2V0X0V4dGVuc2lvbl9FdmVudHMKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19X aWRnZXRfUmVjb3JkKSByZXR1cm4gR2RrLlR5cGVzLkdka19FeHRlbnNpb25fTW9kZTsKICAgLS0g IFJldHVybiB0aGUgY3VycmVudCBleHRlbnNpb24gZXZlbnRzIG1hc2suCgogICBmdW5jdGlvbiBE ZWZhdWx0X01vdGlvbl9Ob3RpZnlfRXZlbnQKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRn ZXRfUmVjb3JkJ0NsYXNzOwogICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50KSByZXR1 cm4gR2ludDsKICAgLS0gIEFjY2VzcyB0byB0aGUgc3RhbmRhcmQgZGVmYXVsdCBjYWxsYmFjayBm b3IgbW90aW9uIGV2ZW50czoKICAgLS0gIFRoaXMgaXMgbWFpbmx5IHVzZWQgZm9yIHJ1bGVycyBp biBHdGsuUnVsZXIgKFNlZSB0aGUgZXhhbXBsZSBpbgogICAtLSAgdGVzdGd0aywgd2l0aCBjcmVh dGVfcnVsZXJzLmFkYikKCiAgIGZ1bmN0aW9uIEhhc19EZWZhdWx0X01vdGlvbl9Ob3RpZnlfSGFu ZGxlcgogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpIHJldHVy biBCb29sZWFuOwogICAtLSAgUmV0dXJuIFRydWUgaWYgV2lkZ2V0IGhhcyBhIGRlZmF1bHQgaGFu ZGxlciBmb3IgbW90aW9uX25vdGlmeSBldmVudHMuCiAgIC0tICBOb3RlIHRoYXQgdGhlIGZ1bmN0 aW9uIERlZmF1bHRfTW90aW9uX05vdGlmeV9FdmVudCBzaG91bGQgbm90IGJlIGNhbGxlZAogICAt LSAgaWYgdGhpcyBvbmUgcmV0dXJucyBGYWxzZSwgc2luY2UgaXQgd291bGQgY3JlYXRlIGEgc2Vn bWVudGF0aW9uIGZhdWx0LgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gQ29s b3JzIGFuZCBjb2xvcm1hcHMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZ1 bmN0aW9uIEdldF9Db2xvcm1hcAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNv cmQpIHJldHVybiBHZGsuQ29sb3IuR2RrX0NvbG9ybWFwOwogICAtLSAgUmV0dXJuIHRoZSBjb2xv cm1hcCB1c2VkIGZvciB0aGUgd2lkZ2V0LiBUaGlzIHdpbGwgZ2VuZXJhbGx5IGJlIHRoZQogICAt LSAgc2FtZSBvbmUgZm9yIGFsbCB3aWRnZXRzLCBidXQgbWlnaHQgYmUgZGlmZmVyZW50IGlmIGZv ciBpbnN0YW5jZSBhCiAgIC0tICBHdGtfRHJhd2luZ19BcmVhIG5lZWRzIHRvIGRpc3BsYXkgc29t ZSBkaWZmZXJlbnQgY29sb3JzIG9uIGEgc2NyZWVuCiAgIC0tICB0aGF0IG9ubHkgaGFzIGEgbGlt aXRlZCBhbW91bnQgb2YgY29sb3JzLgoKICAgZnVuY3Rpb24gR2V0X1Zpc3VhbAogICAgIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBHZGsuVmlzdWFsLkdka19WaXN1 YWw7CiAgIC0tICBHZXQgdGhlIHZpc3VhbCB1c2VkIGZvciB0aGUgd2lkZ2V0LgogICAtLSAgSS5l LiB0aGUgc3RydWN0dXJlIHRoYXQgaW5kaWNhdGVzIHRoZSBkZXB0aCBvZiB0aGUgd2lkZ2V0IChu dW1iZXIgb2YKICAgLS0gIGJpdHMgcGVyIHBpeGVsKSwgYW5kIHNvbWUgaW5mb3JtYXRpb24gdXNl ZCBpbnRlcm5hbGx5IGJ5IEd0a0FkYSB0bwogICAtLSAgaGFuZGxlIGNvbG9ycyBhbmQgY29sb3Jt YXBzLgoKICAgcHJvY2VkdXJlIFNldF9Db2xvcm1hcAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3Rr X1dpZGdldF9SZWNvcmQ7CiAgICAgIENtYXAgOiBHZGsuQ29sb3IuR2RrX0NvbG9ybWFwKTsKICAg LS0gIE1vZGlmeSB0aGUgY29sb3JtYXAgb2YgdGhlIHdpZGdldC4KICAgLS0gIFRoZSB3aWRnZXQg bXVzdCBub3QgaGF2ZSBiZWVuIHJlYWxpemVkLgoKICAgcHJvY2VkdXJlIFNldF9WaXN1YWwKICAg ICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBWaXN1YWwgOiBHZGsu VmlzdWFsLkdka19WaXN1YWwpOwogICAtLSAgTW9kaWZ5IHRoZSB2aXN1YWwgb2YgdGhlIHdpZGdl dC4KICAgLS0gIFRoZSB3aWRnZXQgbXVzdCBub3QgaGF2ZSBiZWVuIHJlYWxpemVkLgoKICAgcHJv Y2VkdXJlIFB1c2hfQ29sb3JtYXAgKENtYXAgOiBHZGsuQ29sb3IuR2RrX0NvbG9ybWFwKTsKICAg LS0gIE1vZGlmeSB0ZW1wb3JhcmlseSB0aGUgZGVmYXVsdCBjb2xvcm1hcCBzZXQgZm9yIG5ld2x5 IGNyZWF0ZWQgd2lkZ2V0cy4KICAgLS0gIFlvdSBzaG91bGQgdXNlIHRoaXMgaW4gcGFpciB3aXRo IFBvcF9Db2xvcm1hcCBiZWxvdyAoUHVzaCB0aGUgbmV3IHZhbHVlLAogICAtLSAgY3JlYXRlIHRo ZSB3aWRnZXQsIGFuZCBwb3AgdGhlIHZhbHVlKS4KCiAgIHByb2NlZHVyZSBQb3BfQ29sb3JtYXA7 CiAgIC0tICBTZWUgUHVzaF9Db2xvcm1hcCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgIHByb2Nl ZHVyZSBQdXNoX1Zpc3VhbCAoVmlzdWFsIDogR2RrLlZpc3VhbC5HZGtfVmlzdWFsKTsKICAgLS0g IE1vZGlmeSB0ZW1wb3JhcmlseSB0aGUgZGVmYXVsdCB2aXN1YWwgc2V0IGZvciBuZXdseSBjcmVh dGVkIHdpZGdldHMuCiAgIC0tICBZb3Ugc2hvdWxkIHVzZSB0aGlzIGluIHBhaXIgd2l0aCBQb3Bf Q29sb3JtYXAgYmVsb3cgKFB1c2ggdGhlIG5ldyB2YWx1ZSwKICAgLS0gIGNyZWF0ZSB0aGUgd2lk Z2V0LCBhbmQgcG9wIHRoZSB2YWx1ZSkuCgogICBwcm9jZWR1cmUgUG9wX1Zpc3VhbDsKICAgLS0g IFNlZSBQdXNoX1Zpc3VhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgIGZ1bmN0aW9uIEdldF9E ZWZhdWx0X0NvbG9ybWFwIHJldHVybiBHZGsuQ29sb3IuR2RrX0NvbG9ybWFwOwogICAtLSAgUmV0 dXJuIHRoZSBkZWZhdWx0IGNvbG9ybWFwIHVzZWQgd2hlbiBhIHdpZGdldCBpcyBjcmVhdGVkLgoK ICAgcHJvY2VkdXJlIFNldF9EZWZhdWx0X0NvbG9ybWFwIChDbWFwIDogR2RrLkNvbG9yLkdka19D b2xvcm1hcCk7CiAgIC0tICBNb2RpZnkgcGVybWFuZW50bHkgdGhlIGRlZmF1bHQgY29sb3JtYXAg dXNlZCB3aGVuIGEgd2lkZ2V0IGlzIGNyZWF0ZWQuCiAgIC0tICBJZiB5b3Ugb25seSB3YW50IHRv IG1vZGlmeSB0aGlzIGNvbG9ybWFwIHRlbXBvcmFyaWx5IGZvciBhIGZldyB3aWRnZXRzLAogICAt LSAgeW91IHNob3VsZCBjb25zaWRlciB1c2luZyBQdXNoX0NvbG9ybWFwIGFuZCBQb3BfQ29sb3Jt YXAgaW5zdGVhZC4KCiAgIGZ1bmN0aW9uIEdldF9EZWZhdWx0X1Zpc3VhbCByZXR1cm4gR2RrLlZp c3VhbC5HZGtfVmlzdWFsOwogICAtLSAgUmV0dXJuIHRoZSBkZWZhdWx0IHZpc3VhbCB1c2VkIHdo ZW4gYSBuZXcgd2lkZ2V0IGlzIGNyZWF0ZWQuCgogICBwcm9jZWR1cmUgU2V0X0RlZmF1bHRfVmlz dWFsIChWaXN1YWwgOiBHZGsuVmlzdWFsLkdka19WaXN1YWwpOwogICAtLSAgTW9kaWZ5IHBlcm1h bmVudGx5IHRoZSBkZWZhdWx0IHZpc3VhbCB1c2VkIHdoZW4gYSB3aWRnZXQgaXMgY3JlYXRlZC4K ICAgLS0gIElmIHlvdSBvbmx5IHdhbnQgdG8gbW9kaWZ5IHRoaXMgdmlzdWFsIHRlbXBvcmFyaWx5 IGZvciBhIGZldyB3aWRnZXRzLAogICAtLSAgeW91IHNob3VsZCBjb25zaWRlciB1c2luZyBQdXNo X1Zpc3VhbCBhbmQgUG9wX1Zpc3VhbCBpbnN0ZWFkLgoKICAgLS0tLS0tLS0tLS0tCiAgIC0tIFN0 eWxlcyAtLQogICAtLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBQdXNoX1N0eWxlIChTdHlsZSA6 IEd0ay5TdHlsZS5HdGtfU3R5bGUpOwogICAtLSAgQ2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlcyBm b3Igc3R5bGVzLgogICAtLSAgVGhpcyBpcyBnZW5lcmFsbHkgdXNlZCBqdXN0IGJlZm9yZSBjcmVh dGluZyBhIHdpZGdldC4gWW91IHNob3VsZCB1c2UKICAgLS0gIHRoaXMgcHJvY2VkdXJlIGluIHBh aXIgd2l0aCBQb3BfU3R5bGUgKFB1c2ggdGhlIG5ldyB2YWx1ZSwgY3JlYXRlIHRoZQogICAtLSAg d2lkZ2V0IHRoZW4gcG9wIHRoZSB2YWx1ZSkKCiAgIHByb2NlZHVyZSBQb3BfU3R5bGU7CiAgIC0t ICBSZXN0b3JlIHRoZSBkZWZhdWx0IHZhbHVlcyBmb3Igc3R5bGVzLgogICAtLSAgVGhpcyBpcyBn ZW5lcmFsbHkgdXNlZCBqdXN0IGFmdGVyIGNyZWF0aW5nIGEgd2lkZ2V0LiBZb3Ugc2hvdWxkIHVz ZQogICAtLSAgdGhpcyBwcm9jZWR1cmUgaW4gcGFpciB3aXRoIFB1c2hfU3R5bGUgKFB1c2ggdGhl IG5ldyB2YWx1ZSwgY3JlYXRlIHRoZQogICAtLSAgd2lkZ2V0IHRoZW4gcG9wIHRoZSB2YWx1ZSkK CiAgIHByb2NlZHVyZSBTZXRfU3R5bGUKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRf UmVjb3JkOwogICAgICBTdHlsZSAgOiBHdGsuU3R5bGUuR3RrX1N0eWxlKTsKICAgLS0gIFNldCB0 aGUgc3R5bGUgZm9yIGEgZ2l2ZW4gd2lkZ2V0LgoKICAgZnVuY3Rpb24gR2V0X1N0eWxlIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpCiAgICAgcmV0dXJuIEd0ay5TdHlsZS5HdGtf U3R5bGU7CiAgIC0tICBSZXR1cm4gdGhlIHN0eWxlIG9mIGEgZ2l2ZW4gd2lkZ2V0LgoKICAgcHJv Y2VkdXJlIE1vZGlmeV9TdHlsZQogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNv cmQ7CiAgICAgIFN0eWxlICA6IEd0a19SY19TdHlsZSk7CiAgIC0tICBNb2RpZnkgdGhlIGRlZmF1 bHQgc3R5bGUgb2YgYSB3aWRnZXQuCgogICBwcm9jZWR1cmUgU2V0X0RlZmF1bHRfU3R5bGUgKFN0 eWxlIDogR3RrLlN0eWxlLkd0a19TdHlsZSk7CiAgIC0tICBTZXQgdGhlIGRlZmF1bHQgZ2xvYmFs IHN0eWxlLgoKICAgZnVuY3Rpb24gR2V0X0RlZmF1bHRfU3R5bGUgcmV0dXJuIEd0ay5TdHlsZS5H dGtfU3R5bGU7CiAgIC0tICBHZXQgdGhlIGRlZmF1bHQgZ2xvYmFsIHN0eWxlLgoKICAgcHJvY2Vk dXJlIFNldF9SY19TdHlsZSAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAg LS0gIFJlc3RvcmUgdGhlIGRlZmF1bHQgc3R5bGUgb2YgYSB3aWRnZXQuCiAgIC0tICBUaGUgZGVm YXVsdCBzdHlsZSBpcyBnaXZlbiBieSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGluaXRpYWxseSBw YXJzZWQKICAgLS0gIGJ5IEd0a0FkYS4KCiAgIHByb2NlZHVyZSBFbnN1cmVfU3R5bGUgKFdpZGdl dCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBNYWtlIHN1cmUgdGhhdCB0aGUg d2lkZ2V0IGhhcyBhIHN0eWxlIGFzc29jaWF0ZWQgdG8gaXQuCiAgIC0tICBFaXRoZXIgdGhlIGRl ZmF1bHQgb25lIGFzIHNldCBieSBTZXRfUmNfU3R5bGUgYWJvdmUgb3Igb25lIHNldCBieSB0aGUK ICAgLS0gIHVzZXIgd2l0aCBTZXRfU3R5bGUuCgogICBwcm9jZWR1cmUgUmVzdG9yZV9EZWZhdWx0 X1N0eWxlIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgUmVzdG9y ZSB0aGUgZGVmYXVsdCBzdHlsZSB0aGF0IHdhcyBzZXQgZm9yIHRoZSB3aWRnZXQuCiAgIC0tICBU aGUgZGVmYXVsdCBzdHlsZSBpcyB0aGUgZmlyc3Qgb25lIHRoYXQgd2FzIHNldCBlaXRoZXIgYnkg YSBjYWxsCiAgIC0tICB0byBTZXRfU3R5bGUgb3IgU2V0X1JjX1N0eWxlLgoKICAgcHJvY2VkdXJl IFJlc2V0X1JjX1N0eWxlcyAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAg LS0gIFJlc3RvcmUgdGhlIFJjIHN0eWxlIHJlY3Vyc2l2ZWx5IGZvciB3aWRnZXQgYW5kIGl0cyBj aGlsZHJlbi4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gV2lkZ2V0cycgdHJlZSAtLQog ICAtLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X05hbWUKICAgICAoV2lkZ2V0 IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBOYW1lICAgOiBpbiBTdHJpbmcpOwog ICAtLSAgU2V0IHRoZSBuYW1lIGZvciB0aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBuYW1lIGlzIHVz ZWQgcHVyZWx5IGludGVybmFsbHkgdG8gaWRlbnRpZnkgdGhlIHdpZGdldCwgYW5kIGRvZXMgbm90 CiAgIC0tICBnaXZlIGFueSB2aXN1YWwgY2x1ZS4KCiAgIGZ1bmN0aW9uIEdldF9OYW1lIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBTdHJpbmc7CiAgIC0tICBSZXR1 cm4gdGhlIG5hbWUgb2YgdGhlIHdpZGdldCBpZiBpdCB3YXMgc2V0IGJ5IFNldF9OYW1lLgogICAt LSAgUmV0dXJuIHRoZSBuYW1lIG9mIGl0cyBjbGFzcyBvdGhlcndpc2UuCgogICBwcm9jZWR1cmUg U2V0X1BhcmVudAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAg IFBhcmVudCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzcyk7CiAgIC0tICBNb2RpZnkg dGhlIHBhcmVudCBmb3IgdGhlIHdpZGdldC4KICAgLS0gIFRoaXMgaXMgbm90IHRoZSByZWNvbW1l bmRlZCB3YXkgdG8gZG8gdGhpcywgeW91IHNob3VsZCB1c2UKICAgLS0gIEd0ay5Db250YWluZXIu QWRkIG9yIEd0ay5Cb3guUGFja19TdGFydCBpbnN0ZWFkLgoKICAgcHJvY2VkdXJlIFNldF9QYXJl bnRfV2luZG93CiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAg V2luZG93IDogR2RrLldpbmRvdy5HZGtfV2luZG93KTsKICAgLS0gIFNldCB0aGUgcGFyZW50IHdp bmRvdyBmb3IgdGhlIGFjdHVhbCBHZGtfV2luZG93IG9mIHRoZSB3aWRnZXQuIFRoaXMgc2V0cwog ICAtLSAgdXAgcmVxdWlyZWQgaW50ZXJuYWwgZmllbGRzLCBhbmQgc2hvdWxkIGJlIHVzZWQgb25s eSB3aGVuIHlvdSBpbXBsZW1lbnQKICAgLS0gIHlvdXIgb3duIGNvbnRhaW5lciwgYXMgb3Bwb3Nl ZCB0byB1c2luZyBvbmUgb2YgdGhlIHN0YW5kYXJkIGNvbnRhaW5lcnMuCgogICBmdW5jdGlvbiBH ZXRfUGFyZW50IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBHdGtf V2lkZ2V0OwogICAtLSAgUmV0dXJuIHRoZSBwYXJlbnQgb2YgdGhlIHdpZGdldCwgb3IgbnVsbCBp ZiBXaWRnZXQgaXMgYSB0b3BsZXZlbAogICAtLSAgd2lkZ2V0LgoKICAgZnVuY3Rpb24gR2V0X1Rv cGxldmVsIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBHdGtfV2lk Z2V0OwogICAtLSAgUmV0dXJuIHRoZSB0b3BsZXZlbCBhbmNlc3RvciBvZiB0aGUgd2lkZ2V0Lgog ICAtLSAgVGhpcyBpcyB0aGUgd2luZG93IG9yIGRpYWxvZyBpbiB3aGljaCB0aGUgd2lkZ2V0IGlz IGluY2x1ZGVkLgogICAtLSAgVGhlIHdpZGdldCByZXR1cm5lZCBkb2VzIG5vdCBoYXZlIGFueSBw YXJlbnQuCgogICBmdW5jdGlvbiBHZXRfQW5jZXN0b3IKICAgICAoV2lkZ2V0ICAgICAgICA6IGFj Y2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgQW5jZXN0b3JfVHlwZSA6IGluIEd0a19UeXBl KSByZXR1cm4gR3RrX1dpZGdldDsKICAgLS0gIFJldHVybiB0aGUgY2xvc2VzdCBhbmNlc3RvciBv ZiBXaWRnZXQgd2hpY2ggaXMgb2YgdHlwZSBBbmNlc3Rvcl9UeXBlLgogICAtLSAgUmV0dXJuIG51 bGwgaWYgdGhlcmUgaXMgbm9uZS4KCiAgIGZ1bmN0aW9uIElzX0FuY2VzdG9yCiAgICAgKFdpZGdl dCAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBbmNlc3RvciA6IGFjY2VzcyBH dGtfV2lkZ2V0X1JlY29yZCdDbGFzcykgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBSZXR1cm4gVHJ1 ZSBpZiBBbmNlc3RvciBpcyBpbiB0aGUgYW5jZXN0b3IgdHJlZSBmb3IgV2lkZ2V0LgogICAtLSAg SS5lLiBpZiBXaWRnZXQgaXMgY29udGFpbmVkIHdpdGhpbiBBbmNlc3Rvci4KCiAgIHByb2NlZHVy ZSBSZXBhcmVudAogICAgIChXaWRnZXQgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwog ICAgICBOZXdfUGFyZW50IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0g IENoYW5nZSB0aGUgcGFyZW50IG9mIHRoZSB3aWRnZXQgZHluYW1pY2FsbHkuCiAgIC0tICBJZiBi b3RoIHRoZSBuZXcgcGFyZW50IGFuZCB0aGUgd2lkZ2V0IGFyZSBzaG93biwgdGhlbiB0aGUgd2lk Z2V0IGlzCiAgIC0tICB2aXN1YWxseSByZWRyYXduIGluIGl0cyBuZXcgcGFyZW50LgoKICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gTWlzYyBmdW5jdGlvbnMgLS0KICAgLS0tLS0tLS0tLS0t LS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfU2Nyb2xsX0FkanVzdG1lbnRzCiAgICAgKFdpZGdl dCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgSGFkaiAgIDogR3RrLkFkanVzdG1l bnQuR3RrX0FkanVzdG1lbnQ7CiAgICAgIFZhZGogICA6IEd0ay5BZGp1c3RtZW50Lkd0a19BZGp1 c3RtZW50KTsKICAgLS0gIEVtaXQgdGhlICJzZXRfc2Nyb2xsX2FkanVzdG1lbnRzIiBzaWduYWwu CiAgIC0tICBUaGUgZXhhY3Qgc2lnbmFsIGVtaXR0ZWQgZGVwZW5kcyBvbiB0aGUgd2lkZ2V0IHR5 cGUgKHNlZQogICAtLSAgR3RrLk9iamVjdC5Jbml0aWFsaXplX0NsYXNzX1JlY29yZCkuCiAgIC0t ICBUaGUgaGFuZGxlciBjcmVhdGVzIHRoZSBhZGp1c3RtZW50cyBpZiBudWxsIGlzIHBhc3NlZCBh cyBhcmd1bWVudCwgYW5kCiAgIC0tICBtYWtlcyBzdXJlIGJvdGggYWRqdXN0bWVudHMgYXJlIGlu IHRoZSBjb3JyZWN0IHJhbmdlLgoKICAgcHJvY2VkdXJlIFBvcHVwIChXaWRnZXQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQ7IFgsIFkgOiBpbiBHaW50KTsKICAgLS0gIFJlYWxpemUgdGhlIHdp ZGdldCAoc2VlIFJlYWxpemUgYWJvdmUpLCBtb3ZlcyBpdCB0byB0aGUgc2NyZWVuIHBvc2l0aW9u CiAgIC0tICAoWCwgWSksIGFuZCBzaG93cyB0aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBzaG91bGQg b25seSBiZSB1c2VkIGZvciB0b3BsZXZlbCB3aW5kb3dzIGFuZCBkaWFsb2dzLCBhcyB5b3UgY2Fu CiAgIC0tICBubyBtb2RpZnkgdGhlIHBvc2l0aW9uIG9mIGEgd2lkZ2V0IHRoYXQgaGFzIGEgcGFy ZW50ICh0aGUgcGFyZW50IGlzCiAgIC0tICB0aGVuIHJlc3BvbnNpYmxlIGZvciBpdHMgcG9zaXRp b24pLgoKICAgZnVuY3Rpb24gSW50ZXJzZWN0CiAgICAgKFdpZGdldCAgICAgICA6IGFjY2VzcyBH dGtfV2lkZ2V0X1JlY29yZDsKICAgICAgQXJlYSAgICAgICAgIDogR2RrLlJlY3RhbmdsZS5HZGtf UmVjdGFuZ2xlOwogICAgICBJbnRlcnNlY3Rpb24gOiBhY2Nlc3MgR2RrLlJlY3RhbmdsZS5HZGtf UmVjdGFuZ2xlKSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFJldHVybiBUcnVlIGlmIHRoZSB3aWRn ZXQgaW50ZXJzZWN0cyB0aGUgc2NyZWVuIGFyZWEgQXJlYS4KICAgLS0gIFRoZSBpbnRlcnNlY3Rp b24gYXJlYSBpcyByZXR1cm5lZCBpbiBJbnRlcnNlY3Rpb24uCgogICBwcm9jZWR1cmUgR3JhYl9E ZWZhdWx0IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgVGhlIHdp ZGdldCBiZWNvbWVzIHRoZSBkZWZhdWx0IHdpZGdldCBmb3IgaXRzIHBhcmVudCB3aW5kb3cgb3Ig ZGlhbG9nLgogICAtLSAgQWxsIGtleWJvYXJkIGV2ZW50cyB3aWxsIGJlIHNlbnQgdG8gaXQgaWYg bm8gb3RoZXIgd2lkZ2V0IGhhcyB0aGUgZm9jdXMuCiAgIC0tICBOb3RlIHRoYXQgdGhlICJDYW5f RGVmYXVsdCIgZmxhZyBtdXN0IGhhdmUgYmVlbiBzZXQgZmlyc3Qgb24gV0lER0VULgoKICAgcHJv Y2VkdXJlIFNldF9TdGF0ZQogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7 CiAgICAgIFN0YXRlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpOwogICAtLSAgTW9kaWZ5IHRo ZSBzdGF0ZSBvZiB0aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBtb2RpZmllcyBpdHMgdmlzdWFsIGFz cGVjdCwgYW5kIHRodXMgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UKICAgLS0gIGNoYW5nZSBp dHMgYmVoYXZpb3IgYXQgdGhlIHNhbWUgdGltZSwgc28gYXMgbm90IHRvIGNvbmZ1c2UgdGhlIHVz ZXIuCgogICBmdW5jdGlvbiBHZXRfU3RhdGUKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRn ZXRfUmVjb3JkKSByZXR1cm4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgIC0tICBSZXR1cm4gdGhl IHN0YXRlIG9mIHRoZSB3aWRnZXQuCgogICBwcm9jZWR1cmUgU2V0X1NlbnNpdGl2ZQogICAgIChX aWRnZXQgICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIFNlbnNpdGl2ZSA6IGlu IEJvb2xlYW4gOj0gVHJ1ZSk7CiAgIC0tICBNb2RpZnkgdGhlIHNlbnNpdGl2aXR5IG9mIHRoZSB3 aWRnZXQuCiAgIC0tICBBbiBpbnNlbnNpdGl2ZSB3aWRnZXQgaXMgZ2VuZXJhbGx5IGdyYXllZCBv dXQsIGFuZCBjYW4gbm90IGJlIGFjdGl2YXRlZC4KICAgLS0gIEZvciBpbnN0YW5jZSwgYW4gaW5z ZW5zaXRpdmUgbWVudSBpdGVtIGlzIGdyYXllZCwgYW5kIGNhbiBuZXZlciBiZQogICAtLSAgc2Vs ZWN0ZWQuCgogICBwcm9jZWR1cmUgU2V0X0FwcF9QYWludGFibGUKICAgICAoV2lkZ2V0ICAgICAg ICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgQXBwX1BhaW50YWJsZSA6IEJvb2xl YW4pOwogICAtLSAgTW9kaWZ5IHRoZSAiQXBwX1BhaW50YWJsZSIgZmxhZyBmb3IgdGhlIHdpZGdl dC4KCiAgIHByb2NlZHVyZSBHZXRfUG9pbnRlcgogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dp ZGdldF9SZWNvcmQ7CiAgICAgIFggICAgICA6IG91dCBHaW50OwogICAgICBZICAgICAgOiBvdXQg R2ludCk7CiAgIC0tICBSZXR1cm4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBwb2ludGVyIChpLmUu IG1vdXNlKSByZWxhdGl2ZSB0byBXaWRnZXQuCgogICBwcm9jZWR1cmUgU2V0X1dpbmRvdwogICAg IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIFdpbmRvdyA6IGluIEdk ay5XaW5kb3cuR2RrX1dpbmRvdyk7CiAgIC0tICBTZXQgdGhlIEdkayB3aW5kb3cgYXNzb2NpYXRl ZCB3aXRoIHRoZSB3aWRnZXQuCgogICBmdW5jdGlvbiBHZXRfV2luZG93CiAgICAgKFdpZGdldCA6 IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCkgcmV0dXJuIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsK ICAgLS0gIEdldCB0aGUgR2RrIHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhlIHdpZGdldC4KICAg LS0gIFlvdSBjYW4gdXNlIHRoaXMgd2luZG93IGlmIHlvdSBuZWVkIHRvIGRyYXcgZGlyZWN0bHkg b24gdGhlIHdpZGdldCB1c2luZwogICAtLSAgdGhlIGZ1bmN0aW9ucyBmb3VuZCBpbiB0aGUgR2Rr IGhpZXJhcmNoeS4KCiAgIHByb2NlZHVyZSBTaGFwZV9Db21iaW5lX01hc2sKICAgICAoV2lkZ2V0 ICAgICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgU2hhcGVfTWFzayA6IEdkay5C aXRtYXAuR2RrX0JpdG1hcDsKICAgICAgT2Zmc2V0X1ggICA6IEdpbnQ7CiAgICAgIE9mZnNldF9Z ICAgOiBHaW50KTsKICAgLS0gIE1vZGlmeSB0aGUgc2hhcGUgb2YgdGhlIHdpbmRvdyB0aGF0IGNv bnRhaW5zIHRoZSB3aWRnZXQuCiAgIC0tICBUaGlzIGFsbG93cyBmb3IgdHJhbnNwYXJlbnQgd2lu ZG93cywgYW5kIHJlcXVpcmVzIHRoZSBYZXh0IGxpYnJhcnkgdG8gYmUKICAgLS0gIGF2YWlsYWJs ZSBvbiB5b3VyIHN5c3RlbS4gSWYgdGhpcyBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGUsIHlvdXIg cHJvZ3JhbQogICAtLSAgd2lsbCBzdGlsbCB3b3JrLgogICAtLSAgU2VlIHRoZSBtYW51YWwgcGFn ZSBmb3IgWFNoYXBlQ29tYmluZU1hc2soM3gpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKICAgLS0t LS0tLS0tLS0KICAgLS0gRmxhZ3MgLS0KICAgLS0tLS0tLS0tLS0KICAgLS0gIFNvbWUgYWRkaXRp b25hbCBmbGFncyBhcmUgZGVmaW5lZCBmb3IgYWxsIHRoZSB2aXN1YWwgb2JqZWN0cyAod2lkZ2V0 cykuCiAgIC0tICBUaGV5IGFyZSBkZWZpbmVkIGluIGFkZGl0aW9uIHRvIHRoZSBvbmVzIGRlZmlu ZWQgaW4gR3RrLk9iamVjdC4KICAgLS0gIFRoZXNlIGZsYWdzIGFyZSBpbXBvcnRhbnQgaW4gdGhh dCB0aGV5IGRlZmluZSBleGFjdGx5IHRoZSBkaWZmZXJlbnQKICAgLS0gIHN0YXRlcyBhIHdpZGdl dCBjYW4gYmUgaW4uCiAgIC0tCiAgIC0tICAtICJUb3BsZXZlbCI6CiAgIC0tICAgIFNldCBpZiB0 aGUgd2lkZ2V0IGlzIGEgdG9wbGV2ZWwgd2lkZ2V0LCBpZSBoYXMgbm8gcGFyZW50LiBUaGlzIGlz CiAgIC0tICAgIG1vc3RseSB0cnVlIGZvciB3aW5kb3dzIGFuZCBkaWFsb2dzLgogICAtLQogICAt LSAgLSAiTm9fV2luZG93IjoKICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQgZG9lcyBub3QgaGF2 ZSBhbiBhc3NvY2lhdGVkIFgxMSB3aW5kb3csIGllIGNhbiBub3QKICAgLS0gICAgcmVjZWl2ZSBl dmVudHMgZGlyZWN0bHkuIEZvciBpbnN0YW5jZSwgYSBHdGtfVG9vbGJhciBkb2VzIG5vdCBoYXZl CiAgIC0tICAgIGFuIGFzc29jaWF0ZWQgd2luZG93LiBUaGVzZSBvYmplY3RzIGFyZSBtb3JlIGxp Z2h0d2VpZ2h0LCBidXQgcmVxdWlyZQogICAtLSAgICBtb3JlIHdvcmsgZnJvbSBHdGtBZGEuIFRo aXMgZmxhZyBpcyBvbmx5IHNldCBpZiB0aGUgd2lkZ2V0IHdpbGwgbmV2ZXIKICAgLS0gICAgaGF2 ZSBhIHdpbmRvdywgZXZlbiBhZnRlciBpdCBpcyByZWFsaXplZC4KICAgLS0KICAgLS0gIC0gIlJl YWxpemVkIjoKICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQgaGFzIGJlZW4gcmVhbGl6ZWQsIGll IGl0cyBhc3NvY2lhdGVkIFgxMSB3aW5kb3cgaGFzCiAgIC0tICAgIGJlZW4gY3JlYXRlZCAocHJv dmlkaW5nIHRoZSB3aWRnZXQgZXhjZXB0cyBhIHdpbmRvdywgc2VlIHRoZSBOb19XaW5kb3cKICAg LS0gICAgZmxhZwogICAtLQogICAtLSAgLSAiTWFwcGVkIjoKICAgLS0gICAgU2V0IGlmIHRoZSB3 aWRnZXQgaXMgdmlzaWJsZSBvbiB0aGUgc2NyZWVuLiBUaGlzIGlzIG9ubHkgcG9zc2libGUgaWYK ICAgLS0gICAgdGhlIFZpc2libGUgZmxhZyBpcyBhbHNvIHNldC4KICAgLS0KICAgLS0gIC0gIlZp c2libGUiOgogICAtLSAgICBTZXQgaWYgdGhlIHdpZGdldCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0 aGUgc2NyZWVuIHdoZW4gbWFwcGVkIChzZWUgdGhlCiAgIC0tICAgIGZ1bmN0aW9ucyBTaG93IGFu ZCBIaWRlIGluIHRoaXMgcGFja2FnZSkuCiAgIC0tCiAgIC0tICAtICJTZW5zaXRpdmUiOgogICAt LSAgICBTZXQgaWYgdGhlIHdpZGdldCBpcyBsaXN0ZW5pbmcgdG8gZXZlbnRzLiBTZWUgdGhlIGZ1 bmN0aW9uCiAgIC0tICAgIFNldF9TZW5zaXRpdmUgaW4gdGhpcyBwYWNrYWdlLiBBbiBpbnNlbnNp dGl2ZSB3aWRnZXQgd2lsbCBnZW5lcmFsbHkKICAgLS0gICAgaGF2ZSBhIGRpZmZlcmVudCB2aXN1 YWwgYXNwZWN0IHRvIGNsdWUgdGhhdCBpdCBpcyB1bmF2YWlsYWJsZSAoZm9yCiAgIC0tICAgIGlu c3RhbmNlIGFuIGluc2Vuc2l0aXZlIGl0ZW0gbWVudSB3aWxsIGJlIGdyYXllZCkKICAgLS0KICAg LS0gIC0gIlBhcmVudF9TZW5zaXRpdmUiOgogICAtLSAgICBTZXQgaWYgdGhlIHBhcmVudCBpcyBz ZW5zaXRpdmUuIEEgd2lkZ2V0IGlzIHNlbnNpdGl2ZSBvbmx5IGlmIGJvdGgKICAgLS0gICAgdGhl IFNlbnNpdGl2ZSBhbmQgUGFyZW50X1NlbnNpdGl2ZSBhcmUgc2V0LgogICAtLQogICAtLSAgLSAi Q2FuX0ZvY3VzIjoKICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQgY2FuIGhhdmUgdGhlIGZvY3Vz LCBpZSBnZXQga2V5Ym9hcmQgZXZlbnRzLiBNb3N0CiAgIC0tICAgIHdpZGdldHMgY2FuIG5vdCBo YXZlIHRoZSBmb2N1cy4KICAgLS0KICAgLS0gIC0gIkhhc19Gb2N1cyI6CiAgIC0tICAgIFNldCBp ZiB0aGUgd2lkZ2V0IGN1cnJlbnRseSBoYXMgdGhlIGZvY3VzLiBTZWUgdGhlIGZ1bmN0aW9uIEdy YWJfRm9jdXMKICAgLS0gICAgaW4gdGhpcyBwYWNrYWdlLgogICAtLQogICAtLSAgLSAiQ2FuX0Rl ZmF1bHQiOgogICAtLSAgICBTZXQgaWYgdGhlIHdpZGdldCBjYW4gYmUgdGhlIGRlZmF1bHQgd2lk Z2V0IGluIGEgd2luZG93LCBpZSB0aGUgb25lCiAgIC0tICAgIHRoYXQgd2lsbCBnZXQgdGhlIGtl eWJvYXJkIGV2ZW50cyBieSBkZWZhdWx0LiBGb3IgaW5zdGFuY2UsIHRoZQogICAtLSAgICBkZWZh dWx0IGJ1dHRvbiBpbiBhIGRpYWxvZyBpcyB0aGUgb25lIHRoYXQgZ2V0cyBjbGlja2VkIG9uIHdo ZW4gdGhlCiAgIC0tICAgIHVzZXIgcHJlc3NlZCBFbnRlciBhbnl3aGVyZSBpbiB0aGUgZGlhbG9n LgogICAtLQogICAtLSAgLSAiSGFzX0RlZmF1bHQiOgogICAtLSAgICBTZXQgaWYgdGhlIHdpZGdl dCBpcyBjdXJyZW50bHkgdGhlIGRlZmF1bHQgd2lkZ2V0LiBTZWUgdGhlIGZ1bmN0aW9uCiAgIC0t ICAgIEdyYWJfRGVmYXVsdCBpbiB0aGlzIHBhY2thZ2UuCiAgIC0tCiAgIC0tICAtICJIYXNfR3Jh YiI6CiAgIC0tICAgIFNldCBpZiB0aGUgd2lkZ2V0IGN1cnJlbnRseSBncmFicyBhbGwgbW91c2Ug YW5kIGtleWJvYXJkIGV2ZW50cyBpbgogICAtLSAgICB0aGUgYXBwbGljYXRpb24sIGV2ZW4gaWYg aXQgZG9lcyBub3QgaGF2ZSB0aGUgZm9jdXMuIFRoZXJlIGNhbiBiZSBvbmx5CiAgIC0tICAgIHN1 Y2ggd2lkZ2V0IHBlciBhcHBsaWNhdGlvbiBhdCBhbnkgZ2l2ZW4gdGltZS4KICAgLS0KICAgLS0g IC0gIlJjX1N0eWxlIjoKICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQncyBzdHlsZSBpcyBlaXRo ZXIgdGhlIGRlZmF1bHQgc3R5bGUsIG9yIGluIGEKICAgLS0gICAgY3VzdG9taXphdGlvbiBmaWxl LiBUaGlzIGlzIHVuc2V0IGlmIHRoZSBzdHlsZSBoYXMgYmVlbiBtb2RpZmllZCBieQogICAtLSAg ICB0aGUgdXNlci4KICAgLS0KICAgLS0gIC0gIkNvbXBvc2l0ZV9DaGlsZCI6CiAgIC0tICAgID8/ PwogICAtLQogICAtLSAgLSAiTm9fUmVwYXJlbnQiOgogICAtLSAgICBUaGlzIGZsYWdzIGlzIG5l dmVyIHVzZWQgaW4gZ3RrKy4KICAgLS0KICAgLS0gIC0gIkFwcF9QYWludGFibGUiOgogICAtLSAg ICBGb3Igc29tZSBjb250YWluZXJzIChpbmNsdWRpbmcgR3RrX1dpbmRvdyBhbmQgR3RrX0xheW91 dCksIHRoaXMgaXMKICAgLS0gICAgdW5zZXQgd2hlbiB0aGUgY29udGFpbmVyIGl0c2VsZiBoYXMg c29tZSBzcGVjaWFsIGRyYXdpbmcgcm91dGluZXMuCiAgIC0tCiAgIC0tICAtICJSZWNlaXZlc19E ZWZhdWx0IjoKICAgLS0gICAgU2V0IHdoZW4gdGhlIHdpZGdldCByZWNlaXZlcyB0aGUgZGVmYXVs dCBhdCB0aGUgdGltZSBpdCByZWNlaXZlcyB0aGUKICAgLS0gICAgZm9jdXMuIFRoaXMgaXMgaG93 IHRoZSBkZWZhdWx0IGJ1dHRvbiBpbiBhIGRpYWxvZyBpcyBhdXRvbWF0aWNhbGx5CiAgIC0tICAg IGNoYW5nZWQgd2hlbiB5b3UgcHJlc3MgYW5vdGhlciBidXR0b24uCgogICBUb3BsZXZlbCAgICAg ICAgIDogY29uc3RhbnQgOj0gMiAqKiA0OwogICBOb19XaW5kb3cgICAgICAgIDogY29uc3RhbnQg Oj0gMiAqKiA1OwogICBSZWFsaXplZCAgICAgICAgIDogY29uc3RhbnQgOj0gMiAqKiA2OwogICBN YXBwZWQgICAgICAgICAgIDogY29uc3RhbnQgOj0gMiAqKiA3OwogICBWaXNpYmxlICAgICAgICAg IDogY29uc3RhbnQgOj0gMiAqKiA4OwogICBTZW5zaXRpdmUgICAgICAgIDogY29uc3RhbnQgOj0g MiAqKiA5OwogICBQYXJlbnRfU2Vuc2l0aXZlIDogY29uc3RhbnQgOj0gMiAqKiAxMDsKICAgQ2Fu X0ZvY3VzICAgICAgICA6IGNvbnN0YW50IDo9IDIgKiogMTE7CiAgIEhhc19Gb2N1cyAgICAgICAg OiBjb25zdGFudCA6PSAyICoqIDEyOwogICBDYW5fRGVmYXVsdCAgICAgIDogY29uc3RhbnQgOj0g MiAqKiAxMzsKICAgSGFzX0RlZmF1bHQgICAgICA6IGNvbnN0YW50IDo9IDIgKiogMTQ7CiAgIEhh c19HcmFiICAgICAgICAgOiBjb25zdGFudCA6PSAyICoqIDE1OwogICBSY19TdHlsZSAgICAgICAg IDogY29uc3RhbnQgOj0gMiAqKiAxNjsKICAgQ29tcG9zaXRlX0NoaWxkICA6IGNvbnN0YW50IDo9 IDIgKiogMTc7CiAgIE5vX1JlcGFyZW50ICAgICAgOiBjb25zdGFudCA6PSAyICoqIDE4OwogICBB cHBfUGFpbnRhYmxlICAgIDogY29uc3RhbnQgOj0gMiAqKiAxOTsKICAgUmVjZWl2ZXNfRGVmYXVs dCA6IGNvbnN0YW50IDo9IDIgKiogMjA7CgogICBmdW5jdGlvbiBUb3BsZXZlbF9Jc19TZXQKICAg ICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVh bjsKICAgLS0gIFRlc3Qgd2hldGhlciB0aGUgVG9wbGV2ZWwgZmxhZyBpcyBzZXQuCgogICBmdW5j dGlvbiBOb19XaW5kb3dfSXNfU2V0CiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1Jl Y29yZCdDbGFzcykgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBUZXN0IHdoZXRoZXIgdGhlIE5vX1dp bmRvdyBmbGFnIGlzIHNldC4KCiAgIGZ1bmN0aW9uIFJlYWxpemVkX0lzX1NldAogICAgIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpIHJldHVybiBCb29sZWFuOwogICAt LSAgVGVzdCB3aGV0aGVyIHRoZSBSZWFsaXplZCBmbGFnIGlzIHNldC4KCiAgIGZ1bmN0aW9uIE1h cHBlZF9Jc19TZXQKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNz KSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRlc3Qgd2hldGhlciB0aGUgTWFwcGVkIGZsYWcgaXMg c2V0LgoKICAgZnVuY3Rpb24gVmlzaWJsZV9Jc19TZXQKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0 a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRlc3Qgd2hldGhl ciB0aGUgVmlzaWJsZSBmbGFnIGlzIHNldC4KCiAgIGZ1bmN0aW9uIERyYXdhYmxlX0lzX1NldAog ICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpIHJldHVybiBCb29s ZWFuOwogICAtLSAgVHJ1ZSBpZiB0aGUgd2lkZ2V0IGlzIGJvdGggdmlzaWJsZSBhbmQgbWFwcGVk LgogICAtLSAgSW4gb3RoZXIgd29yZHMsIGlmIGl0IGRvZXMgYXBwZWFyIG9uIHRoZSBzY3JlZW4u CgogICBmdW5jdGlvbiBJc19TZW5zaXRpdmUKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRn ZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRlc3Qgd2hldGhlciB0aGUg d2lkZ2V0IGlzIFNlbnNpdGl2ZS4KCiAgIGZ1bmN0aW9uIENhbl9Gb2N1c19Jc19TZXQKICAgICAo V2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsK ICAgLS0gIFRlc3Qgd2hldGhlciB0aGUgQ2FuX0ZvY3VzIGZsYWcgaXMgc2V0LgoKICAgZnVuY3Rp b24gSGFzX0ZvY3VzX0lzX1NldAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNv cmQnQ2xhc3MpIHJldHVybiBCb29sZWFuOwogICAtLSAgVGVzdCB3aGV0aGVyIHRoZSBIYXNfRm9j dXMgZmxhZyBpcyBzZXQuCgogICBmdW5jdGlvbiBIYXNfRGVmYXVsdF9Jc19TZXQKICAgICAoV2lk Z2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsKICAg LS0gIFRlc3Qgd2hldGhlciB0aGUgSGFzX0RlZmF1bHQgZmxhZyBpcyBzZXQuCgogICBmdW5jdGlv biBIYXNfR3JhYl9Jc19TZXQKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3Jk J0NsYXNzKSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRlc3Qgd2hldGhlciB0aGUgSGFzX0dyYWIg ZmxhZyBpcyBzZXQuCgogICBmdW5jdGlvbiBSY19TdHlsZV9Jc19TZXQKICAgICAoV2lkZ2V0IDog YWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRl c3Qgd2hldGhlciB0aGUgUmNfU3R5bGUgZmxhZyBpcyBzZXQuCgogICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBEZWZpbml0aW9ucyBmb3IgbGlzdHMgb2Ygd2lk Z2V0cyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgLS0g IDxkb2NfaWdub3JlPgoKICAgZnVuY3Rpb24gQ29udmVydCAoVyA6IGluIEd0a19XaWRnZXQpIHJl dHVybiBTeXN0ZW0uQWRkcmVzczsKICAgZnVuY3Rpb24gQ29udmVydCAoVyA6IFN5c3RlbS5BZGRy ZXNzKSByZXR1cm4gR3RrX1dpZGdldDsKICAgcGFja2FnZSBXaWRnZXRfTGlzdCBpcyBuZXcgR2xp Yi5HbGlzdC5HZW5lcmljX0xpc3QgKEd0a19XaWRnZXQpOwogICBwYWNrYWdlIFdpZGdldF9TTGlz dCBpcyBuZXcgR2xpYi5HU2xpc3QuR2VuZXJpY19TTGlzdCAoR3RrX1dpZGdldCk7CgogICAtLSAg PC9kb2NfaWdub3JlPgoKICAgLS0tLS0tLS0tLS0tLQogICAtLSBTaWduYWxzIC0tCiAgIC0tLS0t LS0tLS0tLS0KCiAgIC0tICA8c2lnbmFscz4KICAgLS0gIFRoZSBmb2xsb3dpbmcgbmV3IHNpZ25h bHMgYXJlIGRlZmluZWQgZm9yIHRoaXMgd2lkZ2V0OgogICAtLQogICAtLSAgLSAic2hvdyIKICAg LS0gICAgcHJvY2VkdXJlIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29y ZCdDbGFzcyk7CiAgIC0tCiAgIC0tICAgIEVtaXR0ZWQgd2hlbiBhIHdpZGdldCBpcyB0byBiZSBz aG93biAoc2VlIGV4cGxhbmF0aW9uIGZvciB0aGUgU2hvdwogICAtLSAgICBzdWJwcm9nYW0pLiBU aGlzIHNjaGVkdWxlcyB0aGUgd2lkZ2V0IHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgc2NyZWVuLAog ICAtLSAgICBhbmQgaWYgdGhpcyBpcyBhIHRvcGxldmVsIHdpZGdldCBpdCBhY3R1YWxseSBhcHBl YXJzIG9uIHRoZSBzY3JlZW4KICAgLS0gICAgYW5kIGFsbCBpdHMgY2hpbGRyZW4gdGhhdCBoYXZl IGJlZW4gc2hvd24uCiAgIC0tCiAgIC0tICAtICJoaWRlIgogICAtLSAgICBwcm9jZWR1cmUgSGFu ZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0KICAg LS0gICAgRW1pdHRlZCB3aGVuIGEgd2lkZ2V0IGlzIHRvIGJlIGhpZGRlbiAoc2VlIGV4cGxhbmF0 aW9uIGZvciB0aGUgSGlkZQogICAtLSAgICBzdWJwcm9ncmFtKS4gSGlkZXMgdGhlIHdpZGdldCBm cm9tIHRoZSBzY3JlZW4sIGFuZCBpZiBpdHMgcGFyZW50IGlzCiAgIC0tICAgIHNob3duLCB0aGUg d2lkZ2V0IHdpbGwgbm90IGFwcGVhciBvbiB0aGUgc2NyZWVuIGFnYWluLgogICAtLQogICAtLSAg LSAibWFwIgogICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19X aWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0KICAgLS0gICAgRW1pdHRlZCB3aGVuIGEgd2lkZ2V0 IGlzIG1hcHBlZCBvbiB0aGUgc2NyZWVuICh0aGUgZGVmYXVsdCBoYW5kbGVyCiAgIC0tICAgIHNp bXBseSBlbWl0cyB0aGUgInNob3ciIHNpZ25hbCkuCiAgIC0tCiAgIC0tICAtICJ1bm1hcCIKICAg LS0gICAgcHJvY2VkdXJlIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29y ZCdDbGFzcyk7CiAgIC0tCiAgIC0tICAgIEVtaXR0ZWQgd2hlbiBhIHdpZGdldCBuZWVkcyB0byBi ZSB1bm1hcHBlZCBvbiB0aGUgc2NyZWVuICh0aGUgZGVmYXVsdAogICAtLSAgICBoYW5kbGVyIHNp bXBseSBlbWl0cyB0aGUgImhpZGUiIHNpZ25hbCkuCiAgIC0tCiAgIC0tICAtICJyZWFsaXplIgog ICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVj b3JkJ0NsYXNzKTsKICAgLS0KICAgLS0gICAgRW1pdHRlZCB3aGVuIGEgd2lkZ2V0IGlzIHJlYWxp emVkLiBUaGUgZGVmYXVsdCBoYW5kbGVyIGNyZWF0ZXMgdGhlCiAgIC0tICAgIEdkayB3aW5kb3cg YXNzb2NpYXRlZCB3aXRoIHRoZSB3aWRnZXQsIGFuZCBpdHMgYW5jZXN0b3JzLgogICAtLQogICAt LSAgLSAidW5yZWFsaXplIgogICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDogYWNj ZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0KICAgLS0gICAgRW1pdHRlZCB3aGVu IGEgd2lkZ2V0IGlzIHVucmVhbGl6ZWQuIFRoZSBkZWZhdWx0IGhhbmRsZXIgZGVzdHJveXMgdGhl CiAgIC0tICAgIEdkayB3aW5kb3dzIG9mIHRoZSB3aWRnZXQgYW5kIGFsbCBpdHMgY2hpbGRyZW4u CiAgIC0tCiAgIC0tICAtICJkcmF3IgogICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0 IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAg ICAgICAgQXJlYSAgIDogR2RrLlJlY3RhbmdsZS5HZGtfUmVjdGFuZ2xlKTsKICAgLS0KICAgLS0g ICAgRW1pdHRlZCB3aGVuIGEgd2lkZ2V0IG5lZWRzIHRvIGJlIGRyYXduLiBUaGUgZGVmYXVsdCBo YW5kbGVyIGVtaXRzCiAgIC0tICAgIHRoZSAiZXhwb3NlIiBldmVudC4KICAgLS0KICAgLS0gIC0g ImRyYXdfZm9jdXMiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAtLQogICAtLSAgICBFbWl0dGVkIHdoZW4gYSB3 aWRnZXQgbmVlZHMgdG8gYmUgZHJhd24gYW5kIGl0IGhhcyB0aGUgZm9jdXMuIFNvbWUKICAgLS0g ICAgd2lkZ2V0cyBtaWdodCB3YW50IHRvIHByb3ZpZGUgdmlzdWFsIGNsdWVzIHRoYXQgdGhleSBo YXZlIHRoZSBmb2N1cywKICAgLS0gICAgbGlrZSBhIGJsYWNrIGJvcmRlci4gVGhpcyBpcyBuZXZl ciBjYWxsZWQgaWYgdGhlIHdpZGdldCBjYW4gbm90IGhhdmUKICAgLS0gICAgdGhlIGZvY3VzIChp ZSB0aGUgIkNhbl9Gb2N1cyIgZmxhZyBpcyB1bnNldCkuCiAgIC0tCiAgIC0tICAtICJkcmF3X2Rl ZmF1bHQiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dp ZGdldF9SZWNvcmQnQ2xhc3MpOwogICAtLQogICAtLSAgICBFbWl0dGVkIHdoZW4gYSB3aWRnZXQg bmVlZHMgdG8gYmUgZHJhd24gYW5kIGl0IGRvZXMgbm90IGhhdmUgdGhlCiAgIC0tICAgIGZvY3Vz LiBUaGlzIGlzIG5ldmVyIGNhbGxlZCBpZiB0aGUgd2lkZ2V0IGNhbiBub3QgaGF2ZSB0aGUgZm9j dXMKICAgLS0gICAgKGllIHRoZSAiQ2FuX0ZvY3VzIiBmbGFnIGlzIHVuc2V0KS4KICAgLS0KICAg LS0gIC0gInNpemVfcmVxdWVzdCIKICAgLS0gICAgcHJvY2VkdXJlIEhhbmRsZXIgKFdpZGdldCAg ICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAg ICAgICAgICAgUmVxdWlzaXRpb24gOiBhY2Nlc3MgR3RrX1JlcXVpc2l0aW9uKTsKICAgLS0KICAg LS0gICAgU2hvdWxkIHJldHVybiAoaW4gUmVxdWlzaXRpb24pIHRoZSBpZGVhbCBzaXplIHRoZSB3 aWRnZXQgd291bGQgbGlrZSB0bwogICAtLSAgICBoYXZlLiBJdCBpcyBub3Qgc3VyZSB0aGlzIGlz IHRoZSBzaXplIHRoYXQgd2lsbCBiZSBhc3NpZ25lZCB0byBpdCwKICAgLS0gICAgc2luY2UgaXQg ZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiBpdHMgcGFyZW50KS4KICAgLS0KICAgLS0gIC0gInNpemVf YWxsb2NhdGUiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRnZXQgICAgIDogYWNjZXNz IEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgQWxs b2NhdGlvbiA6IEd0a19BbGxvY2F0aW9uKTsKICAgLS0KICAgLS0gICAgQSBzaXplIGFuZCBwb3Np dGlvbiB3ZXJlIGFzc2lnbmVkIHRvIHRoZSB3aWRnZXQuIFRoaXMgaXMgY2FsbGVkIGV2ZXJ5CiAg IC0tICAgIHRpbWUgdGhlIHNpemUgb2YgdGhlIHdpZGdldCBjaGFuZ2VzLgogICAtLSAgICBUaGUg ZGVmYXVsdCBoYW5kbGVyIHRha2VzIGNhcmUgb2YgcmVzaXppbmcgYW5kIG1vdmluZyB0aGUgd2lk Z2V0LgogICAtLQogICAtLSAgLSAic3RhdGVfY2hhbmdlZCIKICAgLS0gICAgcHJvY2VkdXJlIEhh bmRsZXIgKFdpZGdldCAgICAgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwog ICAtLSAgICAgICAgICAgICAgICAgICAgICAgUHJldmlvdXNfU3RhdGUgOiBHdGsuRW51bXMuR3Rr X1N0YXRlX1R5cGUpOwogICAtLQogICAtLSAgICBUaGUgc3RhdGUgb2YgdGhlIHdpZGdldCBoYXMg Y2hhbmdlZC4KICAgLS0KICAgLS0gIC0gInBhcmVudF9zZXQiCiAgIC0tICAgIHByb2NlZHVyZSBI YW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAg ICAgICAgICAgICAgICAgICAgICBQcmV2aW91c19QYXJlbnQgOiBhY2Nlc3MgR3RrX1dpZGdldF9S ZWNvcmQnQ2xhc3MpOwogICAtLQogICAtLSAgICBBIG5ldyBwYXJlbnQgaGFzIGJlZW4gc2V0IGZv ciB0aGUgd2lkZ2V0LiBUaGUgcHJldmlvdXMgcGFyZW50IGlzCiAgIC0tICAgIGdpdmVuIGluIGFy Z3VtZW50cyAoaWYgdGhlcmUgd2FzIG5vbmUsCiAgIC0tICAgIEdkay5Jc19DcmVhdGVkIChQcmV2 aW91c19QYXJlbnQpIHJldHVybnMgRmFsc2UpLgogICAtLQogICAtLSAgLSAic3R5bGVfc2V0Igog ICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVj b3JkJ0NsYXNzKTsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgIFByZXZpb3VzX1N0eWxlIDog R3RrLlN0eWxlLkd0a19TdHlsZSk7CiAgIC0tCiAgIC0tICAgIFRoZSB3aWRnZXQncyBzdHlsZSBo YXMgYmVlbiBjaGFuZ2VkICh0aGlzIGlzIG5vdCBjYWxsIHdoZW4gc29tZQogICAtLSAgICBzZXR0 aW5ncyBpbiB0aGUgc3R5bGUgYXJlIGNoYW5nZWQsIG9ubHkgd2hlbiB0aGUgc3R5bGUgaXRzZWxm IGlzCiAgIC0tICAgIGNvbXBsZXRlbHkgY2hhbmdlZCB3aXRoIGEgY2FsbCB0byBTZXRfU3R5bGUg b3IgU2V0X1JjX1N0eWxlKS4KICAgLS0KICAgLS0gIC0gImFkZF9hY2NlbGVyYXRvciIKICAgLS0K ICAgLS0gID8/PwogICAtLQogICAtLSAgLSAicmVtb3ZlX2FjY2VsZXJhdG9yIgogICAtLQogICAt LSAgPz8/CiAgIC0tCiAgIC0tICAtICJncmFiX2ZvY3VzIgogICAtLSAgICBwcm9jZWR1cmUgSGFu ZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0KICAg LS0gICAgVGhlIHdpZGdldCBoYXMgZ290IHRoZSBmb2N1cywgaWUgd2lsbCBub3cgZ2V0IHRoZSBr ZXlib2FyZCBldmVudHMKICAgLS0gICAgc2VudCB0byBhIHdpbmRvdy4gVGhpcyBpcyBvbmx5IGNh bGxlZCBpZiB0aGUgIkNhbl9Gb2N1cyIgZmxhZyBpcwogICAtLSAgICBzZXQuIFRoZSAiSGFzX0Zv Y3VzIiBmbGFnIG1pZ2h0IG5vdCBiZSBzZXQgd2hlbiB0aGlzIHNpZ25hbCBpcwogICAtLSAgICBl bWl0dGVkLgogICAtLQogICAtLSAgLSAiZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIg KFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAg ICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdka19FdmVudCkKICAgLS0gICAgICAgICAg ICAgICAgICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgU29tZSBldmVudCB3YXMg c2VudCB0byB0aGUgd2lkZ2V0LiBUaGlzIGNvdmVycyBhbGwgdGhlIGNhc2VzCiAgIC0tICAgIGJl bG93LCBhbmQgYWN0cyBhcyBhIGdlbmVyYWwgaGFuZGxlci4gVGhpcyBpcyBjYWxsZWQgaW4gYWRk aXRpb24gdG8KICAgLS0gICAgdGhlIHJlbGV2YW50IHNwZWNpZmljIGhhbmRsZXIgYmVsb3cuCiAg IC0tICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVudCBtaWdodCBiZSBw YXNzIHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBvdGhlciBoYW5kbGVy IG9mIHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAtICJidXR0b25fcHJl c3NfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtf V2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDog R2RrLkV2ZW50Lkdka19FdmVudF9CdXR0b24pCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgIEEgYnV0dG9uIHdhcyBwcmVzc2VkIHdoaWxlIHRo ZSBwb2ludGVyIHdhcyBpbnNpZGUgdGhlIHdpZGdldC4KICAgLS0gICAgVG8gZ2V0IHRoaXMgc2ln bmFsLCBzb21lIHdpZGdldHMgYnkgaGF2ZSB0byB1c2UgdGhlIFNldF9FdmVudHMKICAgLS0gICAg c3VicHJvZ3JhbSBmaXJzdCB0byBnZXQgdGhpcyBldmVudC4KICAgLS0gICAgSWYgdGhlIGhhbmRs ZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1pZ2h0IGJlIHBhc3MgdG8gdGhlIHBhcmVudAog ICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVyIGhhbmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1 cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gImJ1dHRvbl9yZWxlYXNlX2V2ZW50IgogICAtLSAg ICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xh c3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZl bnRfQnV0dG9uKQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAt LQogICAtLSAgICBBIGJ1dHRvbiB3YXMgcmVsZWFzZWQgd2hpbGUgdGhlIHBvaW50ZXIgd2FzIGlu c2lkZSB0aGUgd2lkZ2V0LgogICAtLSAgICBOb3RlIHRoYXQgaW4gc29tZSBjYXNlcyAoR3RrX0J1 dHRvbnMgZm9yIGluc3RhbmNlKSwgYW5vdGhlciAiY2xpY2tlZCIKICAgLS0gICAgc2lnbmFsIGNv dWxkIGJlIGVtaXR0ZWQpLiBUaGlzICJidXR0b25fcmVsZWFzZV9ldmVudCIgc2hvdWxkIG1haW5s eQogICAtLSAgICBiZSB1c2VkIGZvciB3aWRnZXRzIHRoYXQgZG9uJ3QgYWxyZWFkeSBoYXZlIHNw ZWNpZmljIHNpZ25hbHMgdG8gY292ZXIKICAgLS0gICAgdGhhdCBjYXNlIChHdGtfRHJhd2luZ19B cmVhIGZvciBpbnN0YW5jZSkuCiAgIC0tCiAgIC0tICAgIFRvIGdldCB0aGlzIHNpZ25hbCwgc29t ZSB3aWRnZXRzIG1heSBoYXZlIHRvIHVzZSB0aGUgU2V0X0V2ZW50cwogICAtLSAgICBzdWJwcm9n cmFtIGZpcnN0IHRvIGdldCB0aGlzIGV2ZW50LgogICAtLQogICAtLSAgICBJZiB0aGUgaGFuZGxl ciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0aGUgcGFyZW50CiAg IC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFzIHJldHVy bmVkIFRydWUpLgogICAtLQogICAtLSAgLSAibW90aW9uX25vdGlmeV9ldmVudCIKICAgLS0gICAg ZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNz OwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50 X01vdGlvbikKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0K ICAgLS0gICAgVGhlIHBvaW50ZXIgaGFzIG1vdmVkIHdoaWxlIHJlbWFpbmluZyBpbnNpZGUgdGhl IHdpZGdldC4KICAgLS0gICAgVGhlIFNldF9FdmVudHMgc3VicHJvZ3JhbSBoYXMgdG8gYmUgY2Fs bGVkIGZpcnN0IHRvIGdldCB0aGlzIGV2ZW50LgogICAtLQogICAtLSAgICBJZiB0aGUgaGFuZGxl ciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0aGUgcGFyZW50CiAg IC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFzIHJldHVy bmVkIFRydWUpLgogICAtLQogICAtLSAgLSAiZGVsZXRlX2V2ZW50IgogICAtLSAgICBmdW5jdGlv biBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0t ICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnQpCiAgIC0t ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgIFRoZSB1 c2VyIGhhcyBjbGlja2VkIG9uIHRoZSAiY2xvc2UiIGJ1dHRvbiBpbiB0aGUgd2luZG93J3MgZnJh bWUKICAgLS0gICAgKHRoZSBidXR0b24gdGhhdCBpcyBhdXRvbWF0aWNhbGx5IHNldCBieSB0aGUg d2luZG93IG1hbmFnZXIpLiBJZiB0aGUKICAgLS0gICAgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0 aGUgd2lkZ2V0IHdpbGwgYmUgZGVzdHJveWVkIChhbmQgdGhlIHdpbmRvdwogICAtLSAgICBjbG9z ZWQpLCBidXQgaWYgdGhlIGhhbmRsZXIgcmV0dXJucyBUcnVlLCBub3RoaW5nIHdpbGwgYmUgZG9u ZS4KICAgLS0gICAgVGhpcyBpcyBhIGdvb2Qgd2F5IHRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBj bG9zaW5nIHlvdXIgYXBwbGljYXRpb24ncwogICAtLSAgICB3aW5kb3cgaWYgdGhlcmUgc2hvdWxk IGJlIHNvbWUgY2xlYW4gdXBzIGZpcnN0IChsaWtlIHNhdmluZyB0aGUKICAgLS0gICAgZG9jdW1l bnQpLgogICAtLQogICAtLSAgLSAiZGVzdHJveV9ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFu ZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAg ICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50KQogICAtLSAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICBUaGlzIHNpZ25h bCBpcyBhcHBhcmVudGx5IG5ldmVyIGVtaXR0ZWQgYnkgR3RrKy4gWW91IG1pZ2h0IHdhbnQgdG8K ICAgLS0gICAgdXNlICJkZXN0cm95IiBpbnN0ZWFkLCB3aGljaCBpcyBkb2N1bWVudGVkIGluIEd0 ay5PYmplY3QuCiAgIC0tCiAgIC0tICAtICJleHBvc2VfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9u IEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0g ICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdka19FdmVudF9FeHBvc2Up CiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAg IFRoZSB3aWRnZXQgbmVlZHMgdG8gYmUgcGFydGx5IHJlZHJhd24uIFRoZSBleGFjdCBhcmVhIHRv IHJlZHJhdyBpcwogICAtLSAgICBmb3VuZCBpbiBFdmVudC4gRm9yIHNvbWUgd2lkZ2V0cywgeW91 IHNob3VsZCByYXRoZXIgY29ubmVjdCB0byB0aGUKICAgLS0gICAgImRyYXciIHNpZ25hbC4gSG93 ZXZlciwgZm9yIGluc3RhbmNlIGZvciBHdGtfRHJhd2luZ19BcmVhIHdpZGdldHMsCiAgIC0tICAg IHlvdSBoYXZlIHRvIHVzZSB0aGlzLCBhZnRlciBzZXR0aW5nIHRoZSBjb3JyZWN0IGV2ZW50IG1h c2sgd2l0aAogICAtLSAgICBTZXRfRXZlbnRzLgogICAtLSAgICBJZiB0aGUgaGFuZGxlciByZXR1 cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0aGUgcGFyZW50CiAgIC0tICAg IG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFzIHJldHVybmVkIFRy dWUpLgogICAtLQogICAtLSAgLSAia2V5X3ByZXNzX2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBI YW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAg ICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnRfS2V5KQogICAt LSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICBBIGtl eSBoYXMgYmVlbiBwcmVzc2VkIHdoaWxlIFdpZGdldCBoYWQgdGhlIGZvY3VzLiBOb3RlIHRoYXQg c29tZQogICAtLSAgICB3aWRnZXRzIGxpa2UgR3RrX0VkaXRhYmxlIHByb3ZpZGUgc29tZSBoaWdo ZXItbGV2ZWwgc2lnbmFscyB0byBoYW5kbGUKICAgLS0gICAgdGhpcy4KICAgLS0gICAgSWYgdGhl IGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1pZ2h0IGJlIHBhc3MgdG8gdGhlIHBh cmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVyIGhhbmRsZXIgb2Ygd2lkZ2V0IGhh cyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gImtleV9yZWxlYXNlX2V2ZW50IgogICAt LSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQn Q2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtf RXZlbnRfS2V5KQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAt LQogICAtLSAgICBBIGtleSBoYXMgYmVlbiByZWxlYXNlZCB3aGlsZSBXaWRnZXQgaGFkIHRoZSBm b2N1cy4KICAgLS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1p Z2h0IGJlIHBhc3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVy IGhhbmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gImVu dGVyX25vdGlmeV9ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNj ZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBF dmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50X0Nyb3NzaW5nKQogICAtLSAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICBUaGUgcG9pbnRlciBoYXMganVz dCBlbnRlcmVkIHRoZSB3aWRnZXQuIElmIHRoZSAiQ2FuX0ZvY3VzIiBmbGFnIGlzCiAgIC0tICAg IHNldCwgV2lkZ2V0IHdpbGwgZ2FpbiB0aGUgZm9jdXMsIGFuZCB0aGUgd2lkZ2V0IG1pZ2h0IGJl IGRyYXduCiAgIC0tICAgIGRpZmZlcmVudGx5LgogICAtLSAgICBJZiB0aGUgaGFuZGxlciByZXR1 cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0aGUgcGFyZW50CiAgIC0tICAg IG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFzIHJldHVybmVkIFRy dWUpLgogICAtLQogICAtLSAgLSAibGVhdmVfbm90aWZ5X2V2ZW50IgogICAtLSAgICBmdW5jdGlv biBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0t ICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnRfQ3Jvc3Np bmcpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0t ICAgIFRoZSBwb2ludGVyIGhhcyBqdXN0IGxlYXZlZCB0aGUgd2lkZ2V0LiBJZiB0aGUgIkNhbl9G b2N1cyIgZmxhZyBpcwogICAtLSAgICBzZXQsIFdpZGdldCB3aWxsIGdhaW4gdGhlIGZvY3VzLCBh bmQgdGhlIHdpZGdldCBtaWdodCBiZSBkcmF3bgogICAtLSAgICBkaWZmZXJlbnRseS4KICAgLS0g ICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1pZ2h0IGJlIHBhc3Mg dG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVyIGhhbmRsZXIgb2Yg d2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gImNvbmZpZ3VyZV9ldmVu dCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRf UmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZl bnQuR2RrX0V2ZW50X0NvbmZpZ3VyZSkKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4g Qm9vbGVhbjsKICAgLS0KICAgLS0gICAgU29tZSBjb25maWd1cmF0aW9uIG9mIHRoZSB3aW5kb3cg aGFzIGNoYW5nZWQgKGl0IGhhcyBiZWVuCiAgIC0tICAgIG1vdmVkIG9yIHJlc2l6ZWQpLgogICAt LSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFz cyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBv ZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAiZm9jdXNfaW5fZXZl bnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0 X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2 ZW50Lkdka19FdmVudF9Gb2N1cykKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9v bGVhbjsKICAgLS0KICAgLS0gICAgVGhlIHdpZGdldCBoYXMganVzdCBnYWluZWQgdGhlIGZvY3Vz LgogICAtLSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQg YmUgcGFzcyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFu ZGxlciBvZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAiZm9jdXNf b3V0X2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3Rr X1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6 IEdkay5FdmVudC5HZGtfRXZlbnRfRm9jdXMpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgIFRoZSB3aWRnZXQgaGFzIGp1c3QgbG9zdCB0aGUg Zm9jdXMuCiAgIC0tICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVudCBt aWdodCBiZSBwYXNzIHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBvdGhl ciBoYW5kbGVyIG9mIHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAtICJt YXBfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtf V2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDog R2RrLkV2ZW50Lkdka19FdmVudCkKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9v bGVhbjsKICAgLS0KICAgLS0gICAgVGhlIHdpZGdldCBoYXMganVzdCBiZWVuIG1hcHBlZC4gVGhp cyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgIm1hcCIKICAgLS0gICAgc2lnbmFsLCB3aGljaCBpcyBj YWxsZWQgKmJlZm9yZSogdGhlIHdpZGdldCBpcyBhY3R1YWxseSBtYXBwZWQuCiAgIC0tICAgIElm IHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVudCBtaWdodCBiZSBwYXNzIHRvIHRo ZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBvdGhlciBoYW5kbGVyIG9mIHdpZGdl dCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAtICJ1bm1hcF9ldmVudCIKICAgLS0g ICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0Ns YXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2 ZW50KQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAt LSAgICBUaGUgd2lkZ2V0IGhhcyBqdXN0IGJlZW4gdW5tYXBwZWQuIFRoaXMgaXMgZGlmZmVyZW50 IGZyb20gdGhlICJ1bm1hcCIKICAgLS0gICAgc2lnbmFsLCB3aGljaCBpcyBjYWxsZWQgKmJlZm9y ZSogdGhlIHdpZGdldCBpcyBhY3R1YWxseSB1bm1hcHBlZC4KICAgLS0gICAgSWYgdGhlIGhhbmRs ZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1pZ2h0IGJlIHBhc3MgdG8gdGhlIHBhcmVudAog ICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVyIGhhbmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1 cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gInByb3BlcnR5X25vdGlmeV9ldmVudCIKICAgLS0g ICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0Ns YXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2 ZW50X1Byb3BlcnR5KQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwog ICAtLQogICAtLSAgICA/Pz8KICAgLS0KICAgLS0gIC0gInNlbGVjdGlvbl9jbGVhcl9ldmVudCIK ICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVj b3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQu R2RrX0V2ZW50X1NlbGVjdGlvbikKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9v bGVhbjsKICAgLS0KICAgLS0gICAgPz8/CiAgIC0tCiAgIC0tICAtICJzZWxlY3Rpb25fcmVxdWVz dF9ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19X aWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBH ZGsuRXZlbnQuR2RrX0V2ZW50X1NlbGVjdGlvbikKICAgLS0gICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgPz8/CiAgIC0tCiAgIC0tICAtICJzZWxlY3Rp b25fbm90aWZ5X2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nl c3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2 ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnRfU2VsZWN0aW9uKQogICAtLSAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICA/Pz8KICAgLS0KICAgLS0gIC0g InNlbGVjdGlvbl9yZWNlaXZlZCIKICAgLS0gICAgUmVsYXRlZCB0byB0aGUgc2VsZWN0aW9uIG1l Y2hhbmlzbSwgc2VlIEd0ay5TZWxlY3Rpb24KICAgLS0KICAgLS0gIC0gInNlbGVjdGlvbl9nZXQi CiAgIC0tICAgIFJlbGF0ZWQgdG8gdGhlIHNlbGVjdGlvbiBtZWNoYW5pc20sIHNlZSBHdGsuU2Vs ZWN0aW9uCiAgIC0tCiAgIC0tICAtICJwcm94aW1pdHlfaW5fZXZlbnQiCiAgIC0tICAgIGZ1bmN0 aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAg LS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdka19FdmVudF9Qcm94 aW1pdHkpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAg IC0tICAgIFVzZWQgZm9yIHNwZWNpYWwgaW5wdXQgZGV2aWNlcy4gU2VlIHRoZSBkZXNjcmlwdGlv biBvZgogICAtLSAgICBHZGsuRXZlbnQuR2RrX0V2ZW50X1Byb3hpbWl0eS4KICAgLS0gICAgSWYg dGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1pZ2h0IGJlIHBhc3MgdG8gdGhl IHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVyIGhhbmRsZXIgb2Ygd2lkZ2V0 IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gInByb3hpbWl0eV9vdXRfZXZlbnQi CiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1Jl Y29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50 Lkdka19FdmVudF9Qcm94aW1pdHkpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJv b2xlYW47CiAgIC0tCiAgIC0tICAgIFVzZWQgZm9yIHNwZWNpYWwgaW5wdXQgZGV2aWNlcy4gU2Vl IHRoZSBkZXNjcmlwdGlvbiBvZgogICAtLSAgICBHZGsuRXZlbnQuR2RrX0V2ZW50X1Byb3hpbWl0 eS4KICAgLS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1pZ2h0 IGJlIHBhc3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVyIGhh bmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gImRyYWdf bGVhdmUiCiAgIC0tICAgIEV2ZW50IHJlbGF0ZWQgdG8gZHJhZy1hbmQtZHJvcCBzdXBwb3J0LiBT ZWUgdGhlIEd0ay5EbmQgZG9jdW1lbnRhdGlvbi4KICAgLS0KICAgLS0gIC0gImRyYWdfYmVnaW4i CiAgIC0tICAgIEV2ZW50IHJlbGF0ZWQgdG8gZHJhZy1hbmQtZHJvcCBzdXBwb3J0LiBTZWUgdGhl IEd0ay5EbmQgZG9jdW1lbnRhdGlvbi4KICAgLS0KICAgLS0gIC0gImRyYWdfZW5kIgogICAtLSAg ICBFdmVudCByZWxhdGVkIHRvIGRyYWctYW5kLWRyb3Agc3VwcG9ydC4gU2VlIHRoZSBHdGsuRG5k IGRvY3VtZW50YXRpb24uCiAgIC0tCiAgIC0tICAtICJkcmFnX2RhdGFfZGVsZXRlIgogICAtLSAg ICBFdmVudCByZWxhdGVkIHRvIGRyYWctYW5kLWRyb3Agc3VwcG9ydC4gU2VlIHRoZSBHdGsuRG5k IGRvY3VtZW50YXRpb24uCiAgIC0tCiAgIC0tICAtICJkcmFnX21vdGlvbiIKICAgLS0gICAgRXZl bnQgcmVsYXRlZCB0byBkcmFnLWFuZC1kcm9wIHN1cHBvcnQuIFNlZSB0aGUgR3RrLkRuZCBkb2N1 bWVudGF0aW9uLgogICAtLQogICAtLSAgLSAiZHJhZ19kcm9wIgogICAtLSAgICBFdmVudCByZWxh dGVkIHRvIGRyYWctYW5kLWRyb3Agc3VwcG9ydC4gU2VlIHRoZSBHdGsuRG5kIGRvY3VtZW50YXRp b24uCiAgIC0tCiAgIC0tICAtICJkcmFnX2RhdGFfZ2V0IgogICAtLSAgICBFdmVudCByZWxhdGVk IHRvIGRyYWctYW5kLWRyb3Agc3VwcG9ydC4gU2VlIHRoZSBHdGsuRG5kIGRvY3VtZW50YXRpb24u CiAgIC0tCiAgIC0tICAtICJkcmFnX2RhdGFfcmVjZWl2ZWQiCiAgIC0tICAgIEV2ZW50IHJlbGF0 ZWQgdG8gZHJhZy1hbmQtZHJvcCBzdXBwb3J0LiBTZWUgdGhlIEd0ay5EbmQgZG9jdW1lbnRhdGlv bi4KICAgLS0KICAgLS0gIC0gInZpc2liaWxpdHlfbm90aWZ5X2V2ZW50IgogICAtLSAgICBmdW5j dGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAg IC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnRfVmlz aWJpbGl0eSkKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0K ICAgLS0gICAgVGhlIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIHdpZGdldCBoYXMgY2hhbmdlZCAo cGFydGlhbGx5IHZpc2libGUsCiAgIC0tICAgIGZ1bGx5IHZpc2libGUsIC4uLikuIFlvdSBtaWdo dCB3YW50IHRvIHVzZSB0aGUgImV4cG9zZSIgc2lnbmFsCiAgIC0tICAgIGluc3RlYWQuCiAgIC0t ICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVudCBtaWdodCBiZSBwYXNz IHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBvdGhlciBoYW5kbGVyIG9m IHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAtICJjbGllbnRfZXZlbnQi CiAgIC0tCiAgIC0tICAgID8/PwogICAtLQogICAtLSAgLSAibm9fZXhwb3NlX2V2ZW50IgogICAt LSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQn Q2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtf RXZlbnQpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAg IC0tICAgID8/PwogICAtLQogICAtLSAgPC9zaWduYWxzPgpwcml2YXRlCgogICB0eXBlIEd0a19X aWRnZXRfUmVjb3JkIGlzIG5ldyBPYmplY3QuR3RrX09iamVjdF9SZWNvcmQgd2l0aCBudWxsIHJl Y29yZDsKCiAgIHByYWdtYSBJbXBvcnQgKEMsIFB1c2hfU3R5bGUsICJndGtfd2lkZ2V0X3B1c2hf c3R5bGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUG9wX1N0eWxlLCAiZ3RrX3dpZGdldF9wb3Bf c3R5bGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0RlZmF1bHRfU3R5bGUsICJndGtfd2lk Z2V0X3NldF9kZWZhdWx0X3N0eWxlIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9EZWZhdWx0 X1N0eWxlLCAiZ3RrX3dpZGdldF9nZXRfZGVmYXVsdF9zdHlsZSIpOwogICBwcmFnbWEgSW1wb3J0 IChDLCBQb3BfQ29sb3JtYXAsICJndGtfd2lkZ2V0X3BvcF9jb2xvcm1hcCIpOwogICBwcmFnbWEg SW1wb3J0IChDLCBQb3BfVmlzdWFsLCAiZ3RrX3dpZGdldF9wb3BfdmlzdWFsIik7CiAgIHByYWdt YSBJbXBvcnQgKEMsIEdldF9UeXBlLCAiZ3RrX3dpZGdldF9nZXRfdHlwZSIpOwogICBwcmFnbWEg SW1wb3J0IChDLCBHZXRfRGVmYXVsdF9Db2xvcm1hcCwgImd0a193aWRnZXRfZ2V0X2RlZmF1bHRf Y29sb3JtYXAiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0RlZmF1bHRfVmlzdWFsLCAiZ3Rr X3dpZGdldF9nZXRfZGVmYXVsdF92aXN1YWwiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUHVzaF9D b2xvcm1hcCwgImd0a193aWRnZXRfcHVzaF9jb2xvcm1hcCIpOwogICBwcmFnbWEgSW1wb3J0IChD LCBQdXNoX1Zpc3VhbCwgImd0a193aWRnZXRfcHVzaF92aXN1YWwiKTsKICAgcHJhZ21hIEltcG9y dCAoQywgU2V0X0RlZmF1bHRfQ29sb3JtYXAsICJndGtfd2lkZ2V0X3NldF9kZWZhdWx0X2NvbG9y bWFwIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9EZWZhdWx0X1Zpc3VhbCwgImd0a193aWRn ZXRfc2V0X2RlZmF1bHRfdmlzdWFsIik7CiAgIHByYWdtYSBJbmxpbmUgKFRvcGxldmVsX0lzX1Nl dCk7CiAgIHByYWdtYSBJbmxpbmUgKE5vX1dpbmRvd19Jc19TZXQpOwogICBwcmFnbWEgSW5saW5l IChSZWFsaXplZF9Jc19TZXQpOwogICBwcmFnbWEgSW5saW5lIChNYXBwZWRfSXNfU2V0KTsKICAg cHJhZ21hIElubGluZSAoVmlzaWJsZV9Jc19TZXQpOwogICBwcmFnbWEgSW5saW5lIChEcmF3YWJs ZV9Jc19TZXQpOwogICBwcmFnbWEgSW5saW5lIChJc19TZW5zaXRpdmUpOwogICBwcmFnbWEgSW5s aW5lIChDYW5fRm9jdXNfSXNfU2V0KTsKICAgcHJhZ21hIElubGluZSAoSGFzX0ZvY3VzX0lzX1Nl dCk7CiAgIHByYWdtYSBJbmxpbmUgKEhhc19EZWZhdWx0X0lzX1NldCk7CiAgIHByYWdtYSBJbmxp bmUgKEhhc19HcmFiX0lzX1NldCk7CiAgIHByYWdtYSBJbmxpbmUgKFJjX1N0eWxlX0lzX1NldCk7 CmVuZCBHdGsuV2lkZ2V0OwoKLS0gIEZ1bmN0aW9ucyB0aGF0IGhhdmUgbm8gQWRhIGVxdWl2YWxl bnQ6Ci0tICAtIGd0a193aWRnZXRfbmV3Ci0tICAtIGd0a193aWRnZXRfZ2V0Ci0tICAtIGd0a193 aWRnZXRfZ2V0dgotLSAgLSBndGtfd2lkZ2V0X3NldAotLSAgLSBndGtfd2lkZ2V0X3NldHYKLS0g IC0gZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyAgPD0gbWFpbmx5IGludGVybmFsCi0tICAt IGd0a193aWRnZXRfaGlkZV9vbl9kZWxldGUgICAgIDw9IHVzZWQgYXMgY2FsbGJhY2sKLS0gIC0g Z3RrX3dpZGdldF9zZXRfY29tcG9zaXRlX25hbWUKLS0gIC0gZ3RrX3dpZGdldF9nZXRfY29tcG9z aXRlX25hbWUKLS0gIC0gZ3RrX3dpZGdldF9wdXNoX2NvbXBvc2l0ZV9jaGlsZAotLSAgLSBndGtf d2lkZ2V0X3BvcF9jb21wb3NpdGVfY2hpbGQKLS0gIC0gZ3RrX3dpZGdldF9wYXRoCi0tICAtIGd0 a193aWRnZXRfY2xhc3NfcGF0aAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBB ZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0yMDAwICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJv YmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBU aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAt LQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAg ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNl IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAg ICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBh IHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBm cm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZp bGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5v dCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJl IGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBl eGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdo eSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBH TlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlv bj4KLS0KLS0gIFRoaXMgcGFja2FnZSBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gdGhlIGNvbG9y IGhhbmRsaW5nIGZhY2lsaXRpZXMgaW4KLS0gIGd0aysuIEl0IGlzIGFibGUgdG8gaGFuZGxlIGFu eSBraW5kIG9mIHZpc3VhbCAobW9ub2Nocm9tZSwgZ3JleXNjYWxlLAotLSAgY29sb3Igd2l0aCBk aWZmZXJlbnQgZGVwdGhzLCAuLi4pLCBidXQgcHJvdmlkZXMgYSBjb21tb24gYW5kIGVhc3kKLS0g IGludGVyZmFjZSBmb3IgYWxsIG9mIHRoZW0uCi0tICBTb21lIG9mIHRoZXNlIGZ1bmN0aW9ucyBl eHBlY3QgYSBDb2xvcm1hcC4gVGhlcmUgYXJlIHR3byB3YXlzIHlvdSBjYW4KLS0gIGdldCBzdWNo IGEgY29sb3JtYXAsIGVpdGhlciBhIHN5c3RlbSBkZWZhdWx0IGNvbG9ybWFwIG9yIGEgcGVyLXdp ZGdldAotLSAgY29sb3JtYXAuIEl0IGlzIHJlY29tbWVuZGVkLCB1bmxlc3MgeW91IGFyZSB3cml0 aW5nIHlvdXIgb3duIG5ldyB3aWRnZXQsCi0tICB0byBhbHdheXMgdXNlIHRoZSBzeXN0ZW0gZGVm YXVsdCBDb2xvcm1hcC4gQWxsIHRoZSBmdW5jdGlvbnMgdG8gZ2V0Ci0tICB0aGVzZSBjb2xvcm1h cHMgYXJlIGZvdW5kIGluIEd0ay5XaWRnZXQuCi0tCi0tICBHZXR0aW5nIHRoZSBSZWQvR3JlZW4v Qmx1ZSBjb21wb25lbnRzIGNhbiBiZSBkb25lIHRocm91Z2ggUGFyc2UsIGFuZCBpcwotLSAgYWN0 dWFsbHkgcmVjb21tZW5kZWQsIHNpbmNlIHRoZSBleGFjdCBjb2xvciBnZW5lcmFsbHkgZGVwZW5k cyBvbiB0aGUKLS0gIHZpc3VhbCB5b3VyIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcgb24uCi0tCi0t ICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lvbj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0aCBH bGliOyB1c2UgR2xpYjsKd2l0aCBHZGsuVmlzdWFsOwoKcGFja2FnZSBHZGsuQ29sb3IgaXMKCiAg IHR5cGUgR2RrX0NvbG9yIGlzIHByaXZhdGU7CiAgIC0tICBBIGNvbG9yIHRvIGJlIGRpc3BsYXll ZCBvbiB0aGUgc2NyZWVuLgogICAtLSAgQ3VycmVudGx5LCBHdGtBZGEgb25seSBzdXBwb3J0cyB0 aGUgUkdCIHN0YW5kYXJkLCBpZSBlYWNoIGNvbG9yIGlzCiAgIC0tICBzZXQgYnkgaXRzIHJlZCwg Z3JlZW4gYW5kIGJsdWUgY29tcG9uZW50cy4KICAgLS0gIEFuIGV4dHJhIGZpZWxkIChQaXhlbCkg aXMgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb2xvciwKICAgLS0gIHdoaWNo IGlzIHNldCBvbmNlIHRoZSBjb2xvciBoYXMgYmVlbiBhbGxvY2F0ZWQuCgogICB0eXBlIEdka19D b2xvcl9BcnJheSBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgR2RrX0NvbG9yOwogICAt LSAgQW4gYXJyYXkgb2YgY29sb3JzLgoKICAgTnVsbF9Db2xvciA6IGNvbnN0YW50IEdka19Db2xv cjsKICAgLS0gIE5vIGNvbG9yLiBGb3IgbW9zdCBmdW5jdGlvbnMsIHRoaXMgd2lsbCBzZWxlY3Qg dGhlIGRlZmF1bHQgY29sb3IgaW4gdGhlCiAgIC0tICBjb250ZXh0LCBhbHRob3VnaCB0aGlzIGV4 YWN0IHNwZWNpZmljYXRpb24gZGVwZW5kcyBvbiB0aGUgZnVuY3Rpb24geW91CiAgIC0tICB3YW50 IHRvIHVzZS4KCiAgIHR5cGUgR2RrX0NvbG9ybWFwIGlzIG5ldyBDX1Byb3h5OwogICAtLSAgVGhl IHNldCBvZiBjb2xvcnMgdGhlIGNhbiBiZSBkaXNwbGF5ZWQgb24gdGhlIHNjcmVlbi4KICAgLS0g IFdoZW4gdGhlIHNjcmVlbiBpcyBub3QgYSB0cnVlLWNvbG9yIHNjcmVlbiAoaWUgdGhlcmUgaXMg b25seSBhIGxpbWl0ZWQKICAgLS0gIG51bWJlciBvZiBwb3NzaWJsZSBjb2xvcnMsIGxpa2UgMjU2 KSwgdGhlIGNvbG9ycyBhcmUgaW4gZmFjdCBpbmRleGVzCiAgIC0tICBpbnRvIGEgY29sb3JtYXAs IHdoaWNoIGdpdmVzIHRoZSBjb21wb25lbnRzIG9mIHRoZSBjb2xvci4KICAgLS0gIFRoaXMgaXMg dGhlIHNhbWUgY29uY2VwdCBhcyBhIHBhbGV0dGUuCgogICBOdWxsX0NvbG9ybWFwIDogY29uc3Rh bnQgR2RrX0NvbG9ybWFwOwoKICAgV3JvbmdfQ29sb3IgOiBleGNlcHRpb247CiAgIC0tICBFeGNl cHRpb24gcmFpc2VkIHdoZW4gc29tZSBmdW5jdGlvbnMgYmVsb3cgY291bGQgbm90IGZpbmQgb3Ig YWxsb2NhdGUKICAgLS0gIGEgY29sb3Igb24gdGhlIHVzZXIncyBzeXN0ZW0uCgogICAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gQ3JlYXRpbmcgYW5kIERlc3Ryb3lp bmcgY29sb3JzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAg ZnVuY3Rpb24gUGFyc2UgKFNwZWMgOiBpbiBTdHJpbmcpIHJldHVybiBHZGtfQ29sb3I7CiAgIC0t ICBQYXJzZSB0aGUgc3RyaW5nIFNwZWMsIGFuZCBnZXQgaXRzIFJlZC9HcmVlbi9CbHVlIGNvbXBv bmVudHMuCiAgIC0tICBUaGUgY29sb3IgaXMgbm90IGFsbG9jYXRlZCwgYW5kIHlvdSBuZWVkIHRv IGNhbGwgQWxsb2NfQ29sb3IuCiAgIC0tICBJZiB0aGUgc3RyaW5nIGNvdWxkIG5vdCBiZSBwYXJz ZWQgdG8gYW4gZXhpc3RpbmcgY29sb3IsIFdyb25nX0NvbG9yIGlzCiAgIC0tICByYWlzZWQuCiAg IC0tICBUaGUgc3RyaW5nIGNhbiBiZSBvbmUgb2YgOgogICAtLQogICAtLSAgLSAiUkJHOkZGL0ZG L0ZGIiB3aGVyZSB0aGUgIkZGIiBzdWJzdHJpbmdzIGFyZSByZXNwZWN0aXZlbHkgdGhlIHZhbHVl CiAgIC0tICAgIG9mIHRoZSByZWQsIGdyZWVuIGFuZCBibHVlIGNvbXBvbmVudHMuIFNvbWUgb3Ro ZXIgcHJlZml4ZXMgdGhhbiBSR0IKICAgLS0gICAgYXJlIGRlZmluZWQgaW4gdGhlIFgxMSBkZWZp bml0aW9uLCBwbGVhc2Ugc2VlIHNvbWUgWDExIGRvY3VtZW50YXRpb24KICAgLS0gICAgKG9yIHRo ZSBtYW4gcGFnZSBYUGFyc2VDb2xvciBvbiB1bml4IHN5c3RlbXMpLgogICAtLQogICAtLSAgLSAi Y29sb3JfbmFtZSIgd2hpY2ggY2FuIGJlIGFueSBjb2xvciBuYW1lIGRlZmluZWQgaW4gdGhlIGZp bGUgcmdiLnR4dAogICAtLSAgICBvZiB0aGUgdXNlcidzIHN5c3RlbS4gWW91IHNob3VsZCBhbHdh eXMgY2hlY2sgdGhhdCBXcm9uZ19Db2xvciB3YXMgbm90CiAgIC0tICAgIHJhaXNlZCwgaW4gY2Fz ZSB0aGUgY29sb3Igd2FzIG5vdCBrbm93biBvbiB0aGUgdXNlcidzIHN5c3RlbS4gVGhpcwogICAt LSAgICBzdHJpbmcgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KCiAgIHByb2NlZHVyZSBBbGxvY19Db2xv ciAoQ29sb3JtYXAgICA6IGluICAgICBHZGtfQ29sb3JtYXA7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgQ29sb3IgICAgICA6IGluIG91dCBHZGtfQ29sb3I7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgV3JpdGVhYmxlICA6IGluICAgICBCb29sZWFuIDo9IEZhbHNlOwogICAgICAgICAgICAg ICAgICAgICAgICAgIEJlc3RfTWF0Y2ggOiBpbiAgICAgQm9vbGVhbiA6PSBUcnVlOwogICAgICAg ICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgOiAgICBvdXQgQm9vbGVhbik7CiAgIC0tICBB bGxvY2F0ZSBhIG5ldyBjb2xvci4KICAgLS0gIFRoZSBmaWVsZHMgUkdCIHNob3VsZCBoYXZlIGJl ZW4gc2V0IGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgIC0tICBJZiBXcml0ZWFibGUg aXMgVHJ1ZSwgdGhlIGNvbG9yIHdpbGwgYmUgYWxsb2NhdGVkIHJlYWQvd3JpdGUsIHRoYXQgY2Fu CiAgIC0tICBiZSBjaGFuZ2VkIGF0IGFueSB0aW1lLiBOb3QgYWxsIHZpc3VhbHMgc3VwcG9ydCB0 aGlzLiBPbiBtb2Rlcm4gc3lzdGVtcwogICAtLSAgdGhpcyB1c2FnZSBoYXMgYmVjb21lIGxlc3Mg dXNlZnVsIHRoYW4gYmVmb3JlLCBzaW5jZSByZWRyYXdpbmcgdGhlCiAgIC0tICBzY3JlZW4gd2l0 aCBhIG5ldyBjb2xvciBpcyBhYm91dCBhcyBmYXN0LgogICAtLSAgSWYgQmVzdF9NYXRjaCBpcyBU cnVlLCBhbmQgdGhlIGV4YWN0IGNvbG9yIGNhbiBub3QgYmUgYWxsb2NhdGVkLCBHdGtBZGEKICAg LS0gIHdpbGwgZmluZCB0aGUgY2xvc2VzdCBwb3NzaWJsZSBtYXRjaCwgYW5kIG1vZGlmeSB0aGUg ZmllbGRzIFJlZCwgR3JlZW4KICAgLS0gIGFuZCBCbHVlIG9mIENvbG9yLgogICAtLSAgTm90ZSB0 aGF0IHRoZSBhbGxvY2F0aW9uIGhhcyBtb3JlIGNoYW5jZXMgdG8gc3VjY2VlZCBpZiBXcml0ZWFi bGUgaXMKICAgLS0gIEZhbHNlIGFuZCBCZXN0X01hdGNoIGlzIFRydWUuCiAgIC0tICBXaGVuIHlv dSBubyBsb25nZXIgdXNlIGEgY29sb3IsIHlvdSBzaG91bGQgY2FsbCBGcmVlLgoKICAgcHJvY2Vk dXJlIEFsbG9jX0NvbG9ycyAoQ29sb3JtYXAgICA6IGluICAgICBHZGtfQ29sb3JtYXA7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgIENvbG9ycyAgICAgOiBpbiBvdXQgR2RrX0NvbG9yX0FycmF5 OwogICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZWFibGUgIDogaW4gICAgIEJvb2xlYW4g Oj0gRmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlc3RfTWF0Y2ggOiBpbiAgICAg Qm9vbGVhbiA6PSBUcnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgIDog ICAgb3V0IEJvb2xlYW5fQXJyYXk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdCAg ICAgOiAgICBvdXQgR2ludCk7CiAgIC0tICBBbGxvY2F0ZSBhIHNldCBvZiBjb2xvcnMuCiAgIC0t ICBUaGUgcGFyYW1ldGVycyBhcmUgdGhlIHNhbWUgYXMgZm9yIEFsbG9jX0NvbG9yCiAgIC0tICBS ZXN1bHQgaXMgdGhlIG51bWJlciBvZiBjb2xvcnMgbm90IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQu CiAgIC0tCiAgIC0tICBUaGUgc2l6ZSBvZiB0aGUgQm9vbGVhbl9BcnJheSBpcyBlcXVhbCB0byB0 aGUgbGVuZ3RoIG9mIHRoZQogICAtLSAgQ29sb3JzX0FycmF5LiBVc2FnZSBvZiBhbiBhcnJheSBv ZiBhIGRpZmZlcmVudCBzaXplIHdpbGwKICAgLS0gIHByb2JhYmx5IGxlYWQgdG8gYSBDb25zdHJh aW50X0Vycm9yLgoKICAgcHJvY2VkdXJlIEFsbG9jIChDb2xvcm1hcCAgOiBpbiBHZGtfQ29sb3Jt YXA7CiAgICAgICAgICAgICAgICAgICAgQ29sb3IgICAgIDogaW4gb3V0IEdka19Db2xvcik7CiAg IC0tICBTYW1lIGZ1bmN0aW9uIGFzIEFsbG9jX0NvbG9ycyBhYm92ZSwgYnV0IGZvciBhIHNpbmds ZSBjb2xvci4KICAgLS0gIFRoZSBjb2xvciBpcyBhbGxvY2F0ZWQgbm9uLXdyaXRlYWJsZSwgYW5k IHRoZSBiZXN0LW1hdGNoIGlzIHRha2VuLgogICAtLSAgUmFpc2VzIFdyb25nX0NvbG9yIGlmIHRo ZSBjb2xvciBjb3VsZCBub3QgYmUgYWxsb2NhdGVkCgogICBmdW5jdGlvbiBXaGl0ZSAoQ29sb3Jt YXAgIDogaW4gR2RrX0NvbG9ybWFwKSByZXR1cm4gR2RrX0NvbG9yOwogICAtLSAgUmV0dXJuIHRo ZSBkZWZhdWx0IHdoaXRlIGNvbG9yIGZvciB0aGUgY29sb3JtYXAuCiAgIC0tICBJZiB0aGlzIGNv bG9yIHdhcyBub3QgZm91bmQgb3IgY291bGQgbm90IGJlIGFsbG9jYXRlZCwgV3JvbmdfQ29sb3Ig aXMKICAgLS0gIHJhaXNlZC4KCiAgIGZ1bmN0aW9uIEJsYWNrIChDb2xvcm1hcCAgOiBpbiBHZGtf Q29sb3JtYXApIHJldHVybiBHZGtfQ29sb3I7CiAgIC0tICBSZXR1cm4gdGhlIGRlZmF1bHQgYmxh Y2sgY29sb3JzIGZvciB0aGUgY29sb3JtYXAuCiAgIC0tICBJZiB0aGlzIGNvbG9yIGlzIG5vdCBm b3VuZCBvciBjb3VsZCBub3QgYmUgYWxsb2NhdGVkLCBXcm9uZ19Db2xvciBpcwogICAtLSAgcmFp c2VkLgoKICAgZnVuY3Rpb24gR2V0X1N5c3RlbSByZXR1cm4gR2RrX0NvbG9ybWFwOwogICAtLSAg R2V0IHRoZSBkZWZhdWx0IGNvbG9ybWFwIGZvciB0aGUgc3lzdGVtLgogICAtLSAgVGhpcyBpcyB0 aGUgc2FtZSBmdW5jdGlvbiBhcyBHdGsuV2lkZ2V0LkdldF9EZWZhdWx0X0NvbG9ybWFwLgoKICAg cHJvY2VkdXJlIEdldF9WaXN1YWwgKENvbG9ybWFwIDogaW4gICAgIEdka19Db2xvcm1hcDsKICAg ICAgICAgICAgICAgICAgICAgICAgIFZpc3VhbCAgIDogICAgb3V0IEdkay5WaXN1YWwuR2RrX1Zp c3VhbCk7CiAgIC0tICBHZXQgdGhlIHZpc3VhbCBhc3NvY2lhdGVkIHdpdGggYSBjb2xvcm1hcC4K ICAgLS0gIFRoZSBtYWluIGluZm9ybWF0aW9uIHlvdSBjYW4gZ2V0IGZyb20gdGhlcmUgaXMgdGhl IGRlcHRoIG9mIHRoZSBkaXNwbGF5LgoKICAgcHJvY2VkdXJlIEdka19OZXcgKENvbG9ybWFwICAg ICA6ICAgIG91dCBHZGtfQ29sb3JtYXA7CiAgICAgICAgICAgICAgICAgICAgICBWaXN1YWwgICAg ICAgOiBpbiAgICAgR2RrLlZpc3VhbC5HZGtfVmlzdWFsOwogICAgICAgICAgICAgICAgICAgICAg UHJpdmF0ZV9DbWFwIDogaW4gICAgIEJvb2xlYW4pOwogICAtLSAgQ3JlYXRlIGEgbmV3IGNvbG9y bWFwIGZvciB0aGUgdmlzdWFsLgogICAtLSAgSWYgUHJpdmF0ZV9DbWFwIGlzIHRydWUsIHRoZW4g dGhlCiAgIC0tICBjb2xvcm1hcCB3b24ndCBiZSBtb2RpZmlhYmxlIG91dHNpZGUgdGhpcyBzY29w ZS4gVGhpcyBtaWdodCByZXN1bHQgaW4KICAgLS0gIHNvbWUgc3RyYW5nZSBjb2xvcnMgb24gdGhl IGRpc3BsYXkuLi4KCiAgIHByb2NlZHVyZSBVbnJlZiAoQ29sb3JtYXAgOiBpbiBHZGtfQ29sb3Jt YXApOwogICAtLSAgVW5yZWYgaXMgdGhlIG9ubHkgd2F5IHRvIGRlc3Ryb3kgYSBjb2xvcm1hcCBv bmNlIHlvdSBubyBsb25nZXIgbmVlZCBpdC4KICAgLS0gIE5vdGUgdGhhdCBiZWNhdXNlIGd0aysg dXNlcyByZWZlcmVuY2UgY291bnRzLCB0aGUgY29sb3JtYXAgd2lsbCBub3QKICAgLS0gIGJlIGFj dHVhbGx5IGRlc3Ryb3llZCB3aGlsZSBhdCBsZWFzdCBvbmUgb2JqZWN0IGlzIHVzaW5nIGl0LgoK ICAgcHJvY2VkdXJlIFJlZiAoQ29sb3JtYXAgOiBpbiBHZGtfQ29sb3JtYXApOwogICAtLSAgSW5j cmVtZW50IHRoZSByZWYtY291bnQgZm9yIHRoZSBjb2xvci4KICAgLS0gIFlvdSBzaG91bGQgbm90 IGhhdmUgdG8gdXNlIHRoaXMgZnVuY3Rpb24uCgogICBmdW5jdGlvbiBHZXRfU3lzdGVtX1NpemUg cmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBk ZWZhdWx0IGNvbG9ybWFwIG9uIHRoZSBzeXN0ZW0uCgogICBwcm9jZWR1cmUgRnJlZV9Db2xvcnMg KENvbG9ybWFwIDogaW4gR2RrX0NvbG9ybWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgIENv bG9ycyAgIDogaW4gR2RrX0NvbG9yX0FycmF5KTsKICAgLS0gIEZyZWUgQ29sb3JzLCBhc3N1bWlu ZyB0aGV5IGFyZSBhbGxvY2F0ZWQgaW4gQ29sb3JtYXAuCgogICBwcm9jZWR1cmUgU3RvcmUgKENv bG9ybWFwIDogaW4gR2RrX0NvbG9ybWFwOwogICAgICAgICAgICAgICAgICAgIENvbG9ycyAgIDog aW4gR2RrX0NvbG9yX0FycmF5KTsKICAgLS0gIFN0b3JlIHRoZSBDb2xvcnMgaW4gdGhlIENvbG9y bWFwCgogICBwcm9jZWR1cmUgQWxsb2MgKENvbG9ybWFwICAgOiBpbiBHZGtfQ29sb3JtYXA7CiAg ICAgICAgICAgICAgICAgICAgQ29udGlndW91cyA6IGluIEJvb2xlYW47CiAgICAgICAgICAgICAg ICAgICAgUGxhbmVzICAgICA6IGluICAgICBHdWxvbmdfQXJyYXk7CiAgICAgICAgICAgICAgICAg ICAgUGl4ZWxzICAgICA6IGluICAgICBHdWxvbmdfQXJyYXk7CiAgICAgICAgICAgICAgICAgICAg U3VjY2VlZGVkICA6ICAgIG91dCBCb29sZWFuKTsKICAgLS0gIEFsbG9jYXRlIHNvbWUgUmVhZC9X cml0ZSBjb2xvciBjZWxscy4KICAgLS0gIENvbG9yIGNlbGxzJyB2YWx1ZXMgY2FuIGJlIGNoYW5n ZWQKICAgLS0gIGR5bmFtaWNhbGx5LiBUaGUgcGl4ZWxzIGFsbG9jYXRlZCBhcmUgcmV0dXJuZWQg aW4gUGl4ZWxzLgogICAtLSAgU2VlIFhBbGxvY0NvbG9yQ2VsbHMoMykgb24gVW5peCBzeXN0ZW1z LgogICAtLSAgVGhlIFBsYW5lcyBwYXJhbWV0ZXIgY2FuIGJlIHVzZWQgdG8gbm9uZGVzdHJ1Y3Rp dmVseSBvdmVybGF5IG9uZQogICAtLSAgc2V0IG9mIGdyYXBoaWNzIG92ZXIgYW5vdGhlci4gU2Vl IHRoZSBYMTEgbWFudWFsIGZvciBtb3JlIGluZm8uCiAgIC0tICBOb3RlIHRoYXQgdGhpcyBpcyBh IGxvdy1sZXZlbCBmdW5jdGlvbiB3aGljaCB5b3Ugc2hvdWxkIHJhcmVseQogICAtLSAgaGF2ZSB0 byB1c2UuCgogICBwcm9jZWR1cmUgRnJlZSAoQ29sb3JtYXAgOiBpbiBHZGtfQ29sb3JtYXA7CiAg ICAgICAgICAgICAgICAgICBQaXhlbHMgICA6IGluIEd1bG9uZ19BcnJheTsKICAgICAgICAgICAg ICAgICAgIFBsYW5lcyAgIDogaW4gR3Vsb25nKTsKICAgLS0gIEZyZWUgc29tZSBjb2xvcnMgaW4g dGhlIGNvbG9ybWFwLgogICAtLSAgU2VlIFhGcmVlQ29sb3JzKDMpIG9uIFVuaXggc3lzdGVtcy4K CiAgIC0tICA8ZG9jX2lnbm9yZT4KICAgZnVuY3Rpb24gSGFzaCAoQ29sb3JfQSA6IGluIEdka19D b2xvcjsKICAgICAgICAgICAgICAgICAgQ29sb3JfQiA6IGluIEdka19Db2xvcikgcmV0dXJuIEd1 aW50OwogICAtLSAgUmV0dXJuIGEgaGFzaCBjb2RlIGZvciBDb2xvcl9BLgogICAtLSAgVGhpcyBz ZWVtcyB0byBiZSBhIGludGVybmFsIGZ1bmN0aW9uIGZvciBndGsrIG9ubHkuCiAgIC0tICA8L2Rv Y19pZ25vcmU+CgogICBwcm9jZWR1cmUgQ2hhbmdlIChDb2xvcm1hcCAgOiBpbiBHZGtfQ29sb3Jt YXA7CiAgICAgICAgICAgICAgICAgICAgIENvbG9yICAgICA6IGluIG91dCBHZGtfQ29sb3I7CiAg ICAgICAgICAgICAgICAgICAgIFN1Y2NlZWRlZCA6ICAgIG91dCBCb29sZWFuKTsKICAgLS0gIENo YW5nZSB0aGUgUmVhZC9Xcml0ZSBjb2xvcm1hcCBjZWxsIGNvcnJlc3BvbmRpbmcgdG8gQ29sb3Iu CiAgIC0tICBUaGUgbmV3IHZhbHVlIGlzIHRoZSBvbmUgY29udGFpbmVkIGluIHRoZSBSZWQsIEdy ZWVuIGFuZCBCbHVlCiAgIC0tICBmaWVsZHMgb2YgQ29sb3IuCgogICBwcm9jZWR1cmUgQ2hhbmdl IChDb2xvcm1hcCA6IGluIEdka19Db2xvcm1hcDsKICAgICAgICAgICAgICAgICAgICAgTmNvbG9y cyAgOiBpbiBHaW50KTsKICAgLS0gIENoYW5nZXMgdGhlIGZpcnN0IE5jb2xvcnMgZGVmaW5lZCBp biBDb2xvcm1hcC4KCiAgIHByb2NlZHVyZSBDb3B5IChTb3VyY2UgICAgICA6IGluICAgICBHZGtf Q29sb3I7CiAgICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbiA6ICAgIG91dCBHZGtfQ29sb3Ip OwogICAtLSAgQ29weSB0aGUgU291cmNlIGNvbG9yIHRvIERlc3RpbmF0aW9uLgoKICAgZnVuY3Rp b24gRXF1YWwgKENvbG9yYSwgQ29sb3JiIDogaW4gR2RrX0NvbG9yKSByZXR1cm4gQm9vbGVhbjsK ICAgLS0gIFRydWUgaWYgdGhlIFJlZCwgR3JlZW4gYW5kIEJsdWUgY29tcG9uZW50cyBvZiBib3Ro IGNvbG9ycyBhcmUgZXF1YWwuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAgLS0gU2V0dGluZy9HZXR0aW5nIHRoZSBmaWVsZHMgb2YgR2RrX0NvbG9y IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAg cHJvY2VkdXJlIFNldF9SZ2IgKENvbG9yICAgOiBvdXQgR2RrX0NvbG9yOwogICAgICAgICAgICAg ICAgICAgICAgUmVkLCBHcmVlbiwgQmx1ZSA6IGluIEd1c2hvcnQpOwogICAtLSAgTW9kaWZ5IHRo ZSBmaWVsZHMgb2YgdGhlIGNvbG9yLgogICAtLSAgWW91IHRoZW4gaGF2ZSB0byBhbGxvY2F0ZSB0 aGUgY29sb3Igd2l0aCBvbmUgb2YgdGhlIEFsbG9jKiBmdW5jdGlvbnMKICAgLS0gIGFib3ZlLgoK ICAgcHJvY2VkdXJlIFNldF9QaXhlbCAoQ29sb3IgOiBpbiBvdXQgR2RrX0NvbG9yOyBQaXhlbCA6 IEd1bG9uZyk7CiAgIC0tICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhbG1vc3QgbmV2ZXIgYmUgdXNl ZC4gSW5zdGVhZCwgdXNlIEFsbG9jX0NvbG9yCgogICBmdW5jdGlvbiBSZWQgKENvbG9yIDogaW4g R2RrX0NvbG9yKSByZXR1cm4gR3VzaG9ydDsKICAgLS0gIFJldHVybiB0aGUgUmVkIGZpZWxkIG9m IENvbG9yLgoKICAgZnVuY3Rpb24gR3JlZW4gKENvbG9yIDogaW4gR2RrX0NvbG9yKSByZXR1cm4g R3VzaG9ydDsKICAgLS0gIFJldHVybiB0aGUgR3JlZW4gZmllbGQgb2YgQ29sb3IuCgogICBmdW5j dGlvbiBCbHVlIChDb2xvciA6IGluIEdka19Db2xvcikgcmV0dXJuIEd1c2hvcnQ7CiAgIC0tICBS ZXR1cm4gdGhlIEJsdWUgZmllbGQgb2YgQ29sb3IuCgogICBmdW5jdGlvbiBQaXhlbCAoQ29sb3Ig OiBpbiBHZGtfQ29sb3IpIHJldHVybiBHdWxvbmc7CiAgIC0tICBSZXR1cm4gdGhlIFBpeGVsIGZp ZWxkIG9mIENvbG9yLgoKcHJpdmF0ZQogICBOdWxsX0NvbG9ybWFwIDogY29uc3RhbnQgR2RrX0Nv bG9ybWFwIDo9IG51bGw7CgogICB0eXBlIEdka19Db2xvciBpcwogICAgICByZWNvcmQKICAgICAg ICAgUGl4ZWwgOiBHdWxvbmc7CiAgICAgICAgIFJlZCAgIDogR3VzaG9ydDsKICAgICAgICAgR3Jl ZW4gOiBHdXNob3J0OwogICAgICAgICBCbHVlICA6IEd1c2hvcnQ7CiAgICAgIGVuZCByZWNvcmQ7 CiAgIC0tICBUaGUgZmllbGRzIGFyZSB0byBiZSBjaG9zZW4gYmV0d2VlbiAwIGFuZCA2NTUzNSwg bm90IDAgYW5kIDI1NSEhIQoKICAgTnVsbF9Db2xvciA6IGNvbnN0YW50IEdka19Db2xvciA6PSAo R3Vsb25nJ0xhc3QsIDEsIDAsIDApOwogICAtLSAgTm90ZTogaW4gdGhlIGltcGxlbWVudGF0aW9u IG9mIEd0a0FkYSwgZXZlcnl0aW1lIGEgY29sb3IgaXMgdXNlZCwgaXQKICAgLS0gIGlzIGltcG9y dGFudCB0byB0ZXN0IHdoZXRoZXIgdGhpcyBpcyBOdWxsX0NvbG9yIG9yIG5vdC4gSWYgaXQgaXMs IHRoZW4KICAgLS0gIFN5c3RlbS5OdWxsX0FkZHJlc3Mgc2hvdWxkIGJlIHBhc3NlZCB0byBDIGlu c3RlYWQgb2YgTnVsbF9Db2xvcidBZGRyZXNzCiAgIC0tICBzbyB0aGF0IGd0aysgY2FuIHByb3Zp ZGUgYSBkZWZhdWx0IHZhbHVlIGZvciBjb2xvcnMuCgogICBwcmFnbWEgSW5saW5lIChTZXRfUmdi KTsKICAgcHJhZ21hIElubGluZSAoU2V0X1BpeGVsKTsKICAgcHJhZ21hIElubGluZSAoUmVkKTsK ICAgcHJhZ21hIElubGluZSAoR3JlZW4pOwogICBwcmFnbWEgSW5saW5lIChCbHVlKTsKICAgcHJh Z21hIElubGluZSAoUGl4ZWwpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfU3lzdGVtX1NpemUs ICJnZGtfY29sb3JtYXBfZ2V0X3N5c3RlbV9zaXplIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdl dF9TeXN0ZW0sICJnZGtfY29sb3JtYXBfZ2V0X3N5c3RlbSIpOwogICBwcmFnbWEgSW1wb3J0IChD LCBSZWYsICJnZGtfY29sb3JtYXBfcmVmIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFVucmVmLCAi Z2RrX2NvbG9ybWFwX3VucmVmIik7CmVuZCBHZGsuQ29sb3I7CgotLSAgPGV4YW1wbGU+Ci0tICAt LSAgSGVyZSBpcyBhbiBleGFtcGxlIGhvdyB5b3UgY2FuIGFsbG9jYXRlIGEgbmV3IGNvbG9yLCB3 aGVuIHlvdSBrbm93Ci0tICAtLSAgaXRzIHJlZC9ncmVlbi9ibHVlIGNvbXBvbmVudHM6IE5vdGUg dGhhdCB3ZSBhbGxvY2F0ZSB3aGl0ZSBpbiBmYWN0Ci0tICAtLSAgc2luY2UgdGhlIG1heGltYWwg dmFsdWUgZm9yIGNvbG9yIGNvbXBvbmVudHMgaXMgNjU1MzUuCi0tICAgICBDb2xvciAgIDogR2Rr X0NvbG9yOwotLSAgICAgU3VjY2VzcyA6IEJvb2xlYW47Ci0tICAgICBTZXRfUmJnIChDb2xvciwg NjU1MzUsIDY1NTM1LCA2NTUzNSk7Ci0tICAgICBBbGxvY19Db2xvciAoQ29sb3JtYXAgICA9PiBH dGsuV2lkZ2V0LkdldF9EZWZhdWx0X0NvbG9ybWFwLAotLSAgICAgICAgICAgICAgICAgIENvbG9y ICAgICAgPT4gQ29sb3IsCi0tICAgICAgICAgICAgICAgICAgV3JpdGVhYmxlICA9PiBGYWxzZSwK LS0gICAgICAgICAgICAgICAgICBCZXN0X01hdGNoID0+IFRydWUsCi0tICAgICAgICAgICAgICAg ICAgU3VjY2VzcyAgICA9PiBTdWNjZXNzKTsKLS0gICAgIGlmIG5vdCBTdWNjZXNzIHRoZW4KLS0g ICAgICAgICAuLi47ICAtLSAgYWxsb2NhdGlvbiBmYWlsZWQKLS0gICAgIGVuZCBpZjsKLS0gIDwv ZXhhbXBsZT4KLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmlu ZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMTk5OSAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBh bmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAg LS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj ICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3 aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0g RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFs IGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0K LS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBw cm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0 c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVk IGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9u IGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAg LS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1Ymxp YyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCndpdGggR2xpYjsgdXNlIEdsaWI7Cndp dGggR2xpYi5HbGlzdDsKcHJhZ21hIEVsYWJvcmF0ZV9BbGwgKEdsaWIuR2xpc3QpOwoKd2l0aCBH ZGsuVHlwZXM7CndpdGggU3lzdGVtOwp3aXRoIFVuY2hlY2tlZF9Db252ZXJzaW9uOwoKcGFja2Fn ZSBHZGsuVmlzdWFsIGlzCgogICB0eXBlIEdka19WaXN1YWwgaXMgbmV3IEdkay5DX1Byb3h5Owog ICBOdWxsX1Zpc3VhbCA6IGNvbnN0YW50IEdka19WaXN1YWw7CiAgIC0tICBUaGlzIHR5cGUgaXMg bm90IHByaXZhdGUgYmVjYXVzZSB3ZSBuZWVkIHRoZSBmdWxsIGRlY2xhcmF0aW9uCiAgIC0tICB0 byBpbnN0YW5jaWF0ZSBHbGliLkdsaXN0LkdlbmVyaWNfTGlzdCB3aXRoIGl0LgoKICAgdHlwZSBH ZGtfVmlzdWFsX1R5cGVfQXJyYXkgaXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pCiAgICAgb2Yg VHlwZXMuR2RrX1Zpc3VhbF9UeXBlOwoKICAgZnVuY3Rpb24gR2V0X0Jlc3RfRGVwdGggcmV0dXJu IEdpbnQ7CgogICBmdW5jdGlvbiBHZXRfQmVzdF9UeXBlIHJldHVybiBUeXBlcy5HZGtfVmlzdWFs X1R5cGU7CgogICBwcm9jZWR1cmUgR2V0X1N5c3RlbSAoVmlzdWFsIDogb3V0IEdka19WaXN1YWwp OwoKICAgcHJvY2VkdXJlIEdldF9CZXN0IChWaXN1YWwgOiBvdXQgR2RrX1Zpc3VhbCk7CgogICBw cm9jZWR1cmUgR2V0X0Jlc3QKICAgICAoVmlzdWFsIDogICAgb3V0IEdka19WaXN1YWw7CiAgICAg IERlcHRoICA6IGluICAgICBHaW50KTsKCiAgIHByb2NlZHVyZSBHZXRfQmVzdAogICAgIChWaXN1 YWwgICAgICA6ICAgIG91dCBHZGtfVmlzdWFsOwogICAgICBWaXN1YWxfVHlwZSA6IGluICAgICBU eXBlcy5HZGtfVmlzdWFsX1R5cGUpOwoKICAgcHJvY2VkdXJlIEdldF9CZXN0CiAgICAgKFZpc3Vh bCAgICAgIDogICAgb3V0IEdka19WaXN1YWw7CiAgICAgIERlcHRoICAgICAgIDogaW4gICAgIEdp bnQ7CiAgICAgIFZpc3VhbF9UeXBlIDogaW4gICAgIFR5cGVzLkdka19WaXN1YWxfVHlwZSk7Cgog ICBmdW5jdGlvbiBRdWVyeV9EZXB0aHMgcmV0dXJuIEdpbnRfQXJyYXk7CgogICBmdW5jdGlvbiBR dWVyeV9WaXN1YWxfVHlwZXMgcmV0dXJuIEdka19WaXN1YWxfVHlwZV9BcnJheTsKCiAgIGZ1bmN0 aW9uIENvbnZlcnQgaXMgbmV3IFVuY2hlY2tlZF9Db252ZXJzaW9uIChHZGtfVmlzdWFsLCBTeXN0 ZW0uQWRkcmVzcyk7CiAgIGZ1bmN0aW9uIENvbnZlcnQgaXMgbmV3IFVuY2hlY2tlZF9Db252ZXJz aW9uIChTeXN0ZW0uQWRkcmVzcywgR2RrX1Zpc3VhbCk7CgogICBwYWNrYWdlIEdka19WaXN1YWxf TGlzdCBpcyBuZXcgR2xpYi5HbGlzdC5HZW5lcmljX0xpc3QgKEdka19WaXN1YWwpOwoKICAgZnVu Y3Rpb24gTGlzdF9WaXN1YWxzIHJldHVybiBHZGtfVmlzdWFsX0xpc3QuR2xpc3Q7Cgpwcml2YXRl CiAgIE51bGxfVmlzdWFsIDogY29uc3RhbnQgR2RrX1Zpc3VhbCA6PSBudWxsOwogICBwcmFnbWEg SW1wb3J0IChDLCBHZXRfQmVzdF9EZXB0aCwgImdka192aXN1YWxfZ2V0X2Jlc3RfZGVwdGgiKTsK ICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0Jlc3RfVHlwZSwgImdka192aXN1YWxfZ2V0X2Jlc3Rf dHlwZSIpOwplbmQgR2RrLlZpc3VhbDsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRh IC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAw MCAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2Vs IEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAg LS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGlj ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAg ICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g QXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJp Y3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhl ciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9l cyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0 byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0K LS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29u cyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRo ZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3Jp cHRpb24+Ci0tCi0tICBUaGlzIHBhY2thZ2UgaW1wbGVtZW50cyBhIGdlbmVyaWMgZG91YmxlLWxp bmtlZCBsaXN0LgotLSAgU3VjaCBsaXN0cyBhcmUgdXNlZCB0aHJvdWdob3V0IEd0a0FkYSB0byBj b250YWluIGxpc3RzIG9mIHdpZGdldHMKLS0gIChmb3IgdGhlIGNoaWxkcmVuIG9mIGNvbnRhaW5l cnMsIG9yIGZvciB0aGUgbGlzdCBvZiBzZWxlY3RlZCB3aWRnZXRzCi0tICBpbiBhIEd0a19DbGlz dCBmb3IgaW5zdGFuY2UpLCBsaXN0IG9mIHN0cmluZ3MgKGZvciBHdGtfQ29tYm9fQm94KSwuLi4K LS0KLS0gIFRoZXkgcHJvdmlkZSBhIGNvbW1vbiBpbnRlcmZhY2UgdG8gdHJhdmVyc2UgdGhlc2Ug bGlzdHMuCi0tCi0tICBPbmUgdXNlZnVsIG5vdGU6IHlvdSBzaG91bGQgb25seSBGcmVlIHRoZSBs aXN0cyB0aGF0IHlvdSBoYXZlIGFsbG9jYXRlZAotLSAgeW91cnNlbGYsIGFuZCBub3QgdGhlIGxp c3RzIHRoYXQgYXJlIHJldHVybmVkIGJ5IHRoZSBzdWJwcm9ncmFtcyBpbgotLSAgR3RrQWRhIGFu ZCBzaG91bGQgYmUgbGVmdCB1bmRlciBHdGtBZGEncyBjb250cm9sLgotLQotLSAgU2VlIHRoZSBl eGFtcGxlIGJlbG93IGZvciBhbiBleGFtcGxlIG9uIGhvdyB0byB0cmF2ZXJzZSBhIGxpc3QuCi0t Ci0tICBJbnN0YW50aWF0aW5nIHRoZSBwYWNrYWdlIEdlbmVyaWNfTGlzdCByZXF1aXJlcyB0d28g ZnVuY3Rpb25zIHRvIGNvbnZlcnQKLS0gIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4geW91ciBkYXRh IHR5cGUgYW5kIGEgU3lzdGVtLkFkZHJlc3Mgd2hpY2ggaXMgdGhlCi0tICB0eXBlIHN0b3JlZCBh dCB0aGUgQyBsZXZlbC4KLS0gIE5vdGUgdGhhdCB0aGUgbGlzdHMgdXNlZCBpbiBHdGtBZGEgYWxy ZWFkeSBoYXZlIGFzc29jaWF0ZWQgcGFja2FnZXMsIGxpa2UKLS0gIEd0ay5FbnVtcy5HaW50X0xp c3QsIEd0ay5FbnVtcy5TdHJpbmdfTGlzdCBvciBHdGsuV2lkZ2V0LldpZGdldF9MaXN0LgotLQot LSAgPC9kZXNjcmlwdGlvbj4KLS0gIDxjX3N5bmNocm8+MS4yLjY8L2Nfc3luY2hybz4KCndpdGgg U3lzdGVtOwoKcGFja2FnZSBHbGliLkdsaXN0IGlzCgoKICAgZ2VuZXJpYwogICAgICAtLSAgPGRv Y19pZ25vcmU+CgogICAgICB0eXBlIEdwb2ludGVyICg8PikgaXMgcHJpdmF0ZTsKICAgICAgd2l0 aCBmdW5jdGlvbiBDb252ZXJ0IChQIDogR3BvaW50ZXIpIHJldHVybiBTeXN0ZW0uQWRkcmVzcyBp cyA8PjsKICAgICAgd2l0aCBmdW5jdGlvbiBDb252ZXJ0IChTIDogU3lzdGVtLkFkZHJlc3MpIHJl dHVybiBHcG9pbnRlciBpcyA8PjsKCiAgICAgIC0tICA8L2RvY19pZ25vcmU+CgogICBwYWNrYWdl IEdlbmVyaWNfTGlzdCBpcwoKICAgICAgdHlwZSBHbGlzdCBpcyBwcml2YXRlOwogICAgICAtLSAg VGhpcyB0eXBlIGlzIGJvdGggYSBsaXN0IGFuZCBhbiBpdGVtIGluIHRoZSBsaXN0LgogICAgICAt LSAgRWFjaCBpdGVtIHBvaW50cyB0byBpdHMgc3VjY2Vzc29yLgoKICAgICAgTnVsbF9MaXN0IDog Y29uc3RhbnQgR2xpc3Q7CgogICAgICBwcm9jZWR1cmUgQWxsb2MgKExpc3QgOiBvdXQgR2xpc3Qp OwogICAgICAtLSAgQWxsb2NhdGUgYSBuZXcgaXRlbSBpbiB0aGUgbGlzdC4KICAgICAgLS0gIFRo aXMgaXRlbSBpc24ndCBhc3NvY2lhdGVkIHdpdGggYW55IGRhdGEuCiAgICAgIC0tICBZb3UgcHJv YmFibHkgZG9uJ3QgaGF2ZSB0byB1c2UgdGhpcyBzdWJwcm9ncmFtLCBzaW5jZSBBcHBlbmQsCiAg ICAgIC0tICBJbnNlcnQsIFByZXBlbmQsIGV0Yy4gYWxyZWFkeSBoYW5kbGUgdGhlIGFsbG9jYXRp b24gZm9yIHlvdSBhbmQKICAgICAgLS0gIGdpdmUgYSBuZXcgdmFsdWUgdG8gdGhlIGl0ZW0uCgog ICAgICBwcm9jZWR1cmUgQXBwZW5kIChMaXN0IDogaW4gb3V0IEdsaXN0OwogICAgICAgICAgICAg ICAgICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpOwogICAgICAtLSAgQWRkIGEgbmV3IGl0ZW0g YXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgYW5kIHN0b3JlcyB0aGUgbmV3IGxpc3QKICAgICAgLS0g IGRpcmVjdGx5IGJhY2sgaW4gTGlzdC4KICAgICAgLS0gIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMg b3BlcmF0aW9uIGlzIE8obikKCiAgICAgIGZ1bmN0aW9uIENvbmNhdCAoTGlzdDEgOiBpbiBHbGlz dDsKICAgICAgICAgICAgICAgICAgICAgICBMaXN0MiA6IGluIEdsaXN0KQogICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEdsaXN0OwogICAgICAtLSAgQ29uY2F0ZW5hdGUgdHdvIGxpc3RzLCBh bmQgcmV0dXJuIHRoZSByZXN1bHQuCiAgICAgIC0tICBMaXN0MiBpcyBhZGRlZCBhdCB0aGUgZW5k IG9mIExpc3QxLgogICAgICAtLSAgVGhlIGNvbXBsZXhpdHkgaXMgTyhuMSkgKGRlcGVuZHMgb24g dGhlIHNpemUgb2YgTGlzdDEpLgoKICAgICAgcHJvY2VkdXJlIEluc2VydCAoTGlzdCA6IGluIG91 dCBHbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIEdwb2ludGVyOwogICAg ICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiA6IGluIEdpbnQpOwogICAgICAtLSAgSW5zZXJ0 IGFuIGl0ZW0gaW4gdGhlIG1pZGRsZSBvZiBhIGxpc3QuCiAgICAgIC0tICBJZiBQb3NpdGlvbiBp cyAwLCB0aGUgaXRlbSBpcyBhZGRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0LCBpZgog ICAgICAtLSAgaXQgaXMgbmVnYXRpdmUgdGhlIGl0ZW0gaXMgYWRkZWQgYXQgdGhlIGVuZC4KICAg ICAgLS0gIFRoZSBjb21wbGV4aXR5IGlzIE8oUG9zaXRpb24pLgoKICAgICAgZnVuY3Rpb24gRmlu ZCAoTGlzdCA6IGluIEdsaXN0OwogICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gR3BvaW50 ZXIpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdsaXN0OwogICAgICAtLSAgRmluZCBhIHZh bHVlIGluIHRoZSBsaXN0LCBhbmQgcmV0dXJuIHRoZSBmaXJzdCBpdGVtIHRoYXQgY29udGFpbnMg aXQuCiAgICAgIC0tICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCB3b3JrIGlmIHRo ZSBmdW5jdGlvbiBDb252ZXJ0IGRvZXMKICAgICAgLS0gIG5vdCByZXR1cm4gdGhlIHNhbWUgdmFs dWUgZm9yIHR3byBpZGVudGljYWwgdmFsdWVzLgoKICAgICAgZnVuY3Rpb24gRmlyc3QgKExpc3Qg OiBpbiBHbGlzdCkgcmV0dXJuIEdsaXN0OwogICAgICAtLSAgUmV0dXJuIHRoZSBmaXJzdCBpdGVt IGluIHRoZSBsaXN0LgogICAgICAtLSAgTm90ZSB0aGF0IGlmIExpc3QgaXMgaW4gZmFjdCBhbiBp dGVtIG9mIGEgbGFyZ2VyIGxpc3QsIHRoZSByZXR1cm4KICAgICAgLS0gIHZhbHVlIGlzIHRoZSBm aXJzdCBpdGVtIGluIHRoZSBsYXJnZXIgbGlzdCBpdHNlbGYuCgogICAgICBwcm9jZWR1cmUgRnJl ZSAoTGlzdCA6IGluIG91dCBHbGlzdCk7CiAgICAgIC0tICBGcmVlIHRoZSBsaXN0IChidXQgZG9l cyBub3QgZnJlZSB0aGUgZGF0YSBpbiBlYWNoIG9mIGl0cyBlbGVtZW50cykuCiAgICAgIC0tICBU aGlzIG9ubHkgZnJlZXMgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhlIGxpc3QgaXRzZWxm LgogICAgICAtLSAgWW91IHNob3VsZCBvbmx5IHVzZSB0aGlzIGZ1bmN0aW9uIG9uIHRoZSBsaXN0 cyB0aGF0CiAgICAgIC0tICB5b3UgaGF2ZSBjcmVhdGVkIHlvdXJzZWxmLCBub3Qgb24gdGhlIGxp c3QgdGhhdCBhcmUgcmV0dXJuZWQgYnkgc29tZQogICAgICAtLSAgZnVuY3Rpb25zIGluIEd0a0Fk YSAobGlrZSBHdGsuQ2xpc3QuR2V0X1NlbGVjdGlvbikuIFRoZXNlIGZ1bmN0aW9ucwogICAgICAt LSAgcmV0dXJuIGRpcmVjdGx5IHRoZSBsaXN0IG1hbmFnZWQgYnkgdGhlIHVuZGVybHlpbmcgQyB3 aWRnZXQsIGFuZCB5b3UKICAgICAgLS0gIHNob3VsZCBuZXZlciBmcmVlIHRoZSByZXN1bHQgeW91 cnNlbGYuCiAgICAgIC0tCiAgICAgIC0tICBOb3RlIGFsc28gdGhhdCB0aGUgbWVtb3J5IG1pZ2h0 IG5vdCBiZSBhY3R1YWxseSBmcmVlZC4gRm9yIGVmZmljaWVuY3kKICAgICAgLS0gIHJlYXNvbnMs IEd0a0FkYSB3aWxsIGtlZXAgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgYW5kIHRyeSB0byByZXVzZSBp dCBhcwogICAgICAtLSAgbXVjaCBhcyBwb3NzaWJsZS4KCiAgICAgIGZ1bmN0aW9uIEdldF9EYXRh IChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBHcG9pbnRlcjsKICAgICAgLS0gIFJldHVybiB0aGUg dmFsdWUgcG9pbnRlZCB0byBieSBMaXN0LgogICAgICAtLSAgVGhlIFN5c3RlbS5BZGRyZXNzIGNv bnRhaW5lciBpbiB0aGUgQyBsaXN0IGlzIGNvbnZlcnRlZCB0byBhIEdwb2ludGVyCiAgICAgIC0t ICB0aHJvdWdoIGEgY2FsbCB0byBDb252ZXJ0LgoKICAgICAgZnVuY3Rpb24gR2V0X0RhdGFfQWRk cmVzcyAoTGlzdCA6IGluIEdsaXN0KSByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgIC0tICBS ZXR1cm4gZGlyZWN0bHkgdGhlIFN5c3RlbS5BZGRyZXNzIGNvbnRhaW5lZCBpbiB0aGUgQyBsaXN0 LgogICAgICAtLSAgVGhpcyBpcyB1c2VkIG1haW5seSBpbnRlcm5hbGx5IGluIEd0a0FkYSB0byBp bXBsZW1lbnQgU3RyaW5nIGxpc3RzLAogICAgICAtLSAgYW5kIHlvdSBzaG91bGQgbm90IGhhdmUg dG8gdXNlIHRoaXMgc3VicHJvZ3JhbSB5b3Vyc2VsZi4KCiAgICAgIC0tICA8ZG9jX2lnbm9yZT4K ICAgICAgZnVuY3Rpb24gR2V0X0dwb2ludGVyIChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBHcG9p bnRlcjsKICAgICAgLS0gIFNvbWV0aW1lcywgdGhlIGRhdGEgaXMgbm90IHN0b3JlZCBpbiB0aGUg ImRhdGEiIGZpZWxkCiAgICAgIC0tICBvZiBlYWNoIGNlbGwsIGJ1dCByYXRoZXIgYXQgZWFjaCBj ZWxsLiBJbiBzdWNoIGNhc2VzLAogICAgICAtLSAgdG8gcmV0cmlldmUgdGhlIGFkZHJlc3Mgb2Yg dGhlIGRhdGEsIHdlIG5lZWQgdG8gcmV0dXJuCiAgICAgIC0tICB0aGUgYWRkcmVzcyBvZiB0aGUg Y2VsbCBpdHNlbGYsIGluc3RlZCBvZiB0aGUgYWRkcmVzcwogICAgICAtLSAgcG9pbnRlZCB0byBi eSBkYXRhLgogICAgICAtLQogICAgICAtLSAgRXg6IHRoZSBHdGtDVHJlZSByb3dfbGlzdC4KICAg ICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgICAgIGZ1bmN0aW9uIEluZGV4IChMaXN0IDogaW4gR2xp c3Q7CiAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBHaW50OwogICAgICAtLSAgUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUg Zmlyc3QgZWxlbWVudCBpbiBMSVNUIHRoYXQgY29udGFpbnMgRGF0YS4KICAgICAgLS0gIE5vdGUg dGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGlycmVsZXZhbnQgaWYgQ29udmVydCBkb2VzIG5vdCByZXR1 cm4gdGhlCiAgICAgIC0tICBzYW1lIHZhbHVlIGZvciB0d28gaWRlbnRpY2FsIGRhdGEuCgogICAg ICBmdW5jdGlvbiBMYXN0IChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBHbGlzdDsKICAgICAgLS0g IFJldHVybiB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBsaXN0LgoKICAgICAgZnVuY3Rpb24gTGVu Z3RoIChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBHdWludDsKICAgICAgLS0gIFJldHVybiB0aGUg bnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBsaXN0LgogICAgICAtLSAgVGhlIGxhc3QgaXRlbSdz IGluZGV4IGlzIExlbmd0aCAtIDEuCgogICAgICBwcm9jZWR1cmUgTGlzdF9SZXZlcnNlIChMaXN0 IDogaW4gb3V0IEdsaXN0KTsKICAgICAgLS0gIFJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSBsaXN0 ICh0aGUgbGFzdCBpdGVtIGJlY29tZXMgdGhlIGZpcnN0LCBldGMuKQoKICAgICAgZnVuY3Rpb24g TmV4dCAoTGlzdCA6IGluIEdsaXN0KSByZXR1cm4gR2xpc3Q7CiAgICAgIC0tICBSZXR1cm5zIHRo ZSBJdGVtIGZvbGxvd2luZyBMSVNUIGluIHRoZSBnbG9iYWwgbGlzdCB0aGF0IGNvbnRhaW5zCiAg ICAgIC0tICBib3RoLgogICAgICAtLSAgSWYgdGhlcmUgaXMgbm8gc3VjaCBpdGVtLCByZXR1cm4g TnVsbF9MaXN0LiBUaGlzIGlzIGhvdyB5b3UKICAgICAgLS0gIHN0b3AgaXRlcmF0aW5nIG92ZXIg YSBsaXN0LgoKICAgICAgZnVuY3Rpb24gTnRoIChMaXN0IDogaW4gR2xpc3Q7CiAgICAgICAgICAg ICAgICAgICAgTiAgICA6IGluIEd1aW50KQogICAgICAgICAgICAgICAgICAgcmV0dXJuIEdsaXN0 OwogICAgICAtLSAgR2l2ZSB0aGUgbnRoIGl0ZW0gZm9sbG93aW5nIExJU1QgaW4gdGhlIGdsb2Jh bCBsaXN0IHRoYXQKICAgICAgLS0gIGNvbnRhaW5zIGJvdGguCiAgICAgIC0tICBJZiB0aGVyZSBp cyBubyBzdWNoIGl0ZW0sIHJldHVybiBOdWxsX0xpc3QuCgogICAgICBmdW5jdGlvbiBOdGhfRGF0 YSAoTGlzdCA6IGluIEdsaXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgTiA6IGluIEd1aW50 KQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR3BvaW50ZXI7CiAgICAgIC0tICBSZXR1 cm4gdGhlIERhdGEgY29udGFpbmVkIGluIHRoZSBOLXRoIGl0ZW0gb2YgTGlzdC4KICAgICAgLS0g IFRoZSByZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIHN1Y2ggaXRlbSBpbiB0aGUg bGlzdC4KICAgICAgLS0gIFRoZSBhY3R1YWwgcmVzdWx0IGluIHRoYXQgY2FzZSBpcyB0aGUgcmVz dWx0IG9mCiAgICAgIC0tICAgICAgQ29udmVydCAoU3lzdGVtLk51bGxfQWRkcmVzcyk7CiAgICAg IC0tICB3aGljaCBtaWdodCBub3QgbWVhbiBhbnl0aGluZy4KCiAgICAgIGZ1bmN0aW9uIFBvc2l0 aW9uIChMaXN0IDogaW4gR2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIDogaW4g R2xpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAgICAtLSAgUmV0 dXJuIHRoZSBwb3NpdGlvbiBvZiBMaW5rIGluIHRoZSBMaXN0LgogICAgICAtLSAgSWYgTGluayBp cyBub3QgY29udGFpbmVkIGluIHRoZSBsaXN0LCAtMSBpcyByZXR1cm5lZC4KCiAgICAgIHByb2Nl ZHVyZSBQcmVwZW5kIChMaXN0IDogaW4gb3V0IEdsaXN0OwogICAgICAgICAgICAgICAgICAgICAg ICAgRGF0YSA6IGluIEdwb2ludGVyKTsKICAgICAgLS0gIEFkZCBhbiBpdGVtIGF0IHRoZSBiZWdp bm5pbmcgb2YgdGhlIGxpc3QuCiAgICAgIC0tICBUaGlzIG9wZXJhdGlvbiBhbHdheXMgc3VjY2Vl ZC4KCiAgICAgIGZ1bmN0aW9uIFByZXYgKExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEdsaXN0Owog ICAgICAtLSAgUmV0dXJuIHRoZSBpdGVtIGJlZm9yZSBMaXN0IGluIHRoZSBnbG9iYWwgbGlzdCB0 aGF0IGNvbnRhaW5zIGJvdGguCiAgICAgIC0tICBSZXR1cm4gTnVsbF9MaXN0IGlmIHRoZXJlIGlz IG5vIHN1Y2ggaXRlbS4KCiAgICAgIHByb2NlZHVyZSBSZW1vdmUgKExpc3QgOiBpbiBvdXQgR2xp c3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRlcik7CiAgICAgIC0t ICBSZW1vdmUgdGhlIGZpcnN0IGl0ZW0gaW4gTGlzdCB0aGF0IGNvbnRhaW5zIERhdGEuCiAgICAg IC0tICBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gY2FuIHN1Y2NlZWQgb25seSBpZiBDb252ZXJ0 IGFsd2F5cyByZXR1cm4KICAgICAgLS0gIHRoZSBzYW1lIGFkZHJlc3MgZm9yIGEgZ2l2ZW4gdmFs dWUuCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlX0xpbmsgKExpc3QgOiBpbiBvdXQgR2xpc3Q7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayA6IGluIEdsaXN0KTsKICAgICAgLS0gIFJl bW92ZSBMaW5rIGZyb20gdGhlIGxpc3QgdG8gd2hpY2ggaXQgYmVsb25ncy4KICAgICAgLS0gIElm IHRoYXQgbGlzdCBpcyBub3QgTGlzdCwgbm8gZXJyb3IgaXMgcmV0dXJuZWQsIGJ1dCBMaW5rIGlz IHJlbW92ZWQKICAgICAgLS0gIGFueXdheS4KCiAgICAgIGZ1bmN0aW9uIElzX0NyZWF0ZWQgKExp c3QgOiBpbiBHbGlzdCkgcmV0dXJuIEJvb2xlYW47CiAgICAgIC0tICBSZXR1cm4gVHJ1ZSBpZiB0 aGVyZSBpcyBhIEMgd2lkZ2V0IGFzc29jaWF0ZWQgd2l0aCBMaXN0LgoKICAgICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIEludGVybmFsIGZ1bmN0aW9ucyAtLQogICAgICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gIFBsZWFzZSBkbyBub3QgdXNlIHRoZSBmb2xs b3dpbmcgZnVuY3Rpb25zLiBUaGV5IGFyZSB1c2VkIGludGVybmFsbHkKICAgICAgLS0gIGJ5IEd0 a0FkYS4KICAgICAgLS0gIDxkb2NfaWdub3JlPgoKICAgICAgZnVuY3Rpb24gR2V0X09iamVjdCAo T2JqIDogaW4gR2xpc3QpIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgLS0gIFJldHVybnMg dGhlIEMgb2JqZWN0IGNvbnRhaW5lZCBpbiBPQkouCiAgICAgIHByYWdtYSBJbmxpbmUgKEdldF9P YmplY3QpOwoKICAgICAgcHJvY2VkdXJlIFNldF9PYmplY3QgKE9iaiA6IGluIG91dCBHbGlzdDsg VmFsdWUgIDogaW4gU3lzdGVtLkFkZHJlc3MpOwogICAgICAtLSAgTW9kaWZpZXMgdGhlIEMgb2Jq ZWN0IGNvbnRhaW5lZCBpbiBPQkouCiAgICAgIHByYWdtYSBJbmxpbmUgKFNldF9PYmplY3QpOwoK ICAgICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgIHByaXZhdGUKCiAgICAgIHR5cGUgR2xpc3QgaXMK ICAgICAgICAgcmVjb3JkCiAgICAgICAgICAgIFB0ciA6IFN5c3RlbS5BZGRyZXNzIDo9IFN5c3Rl bS5OdWxsX0FkZHJlc3M7CiAgICAgICAgIGVuZCByZWNvcmQ7CiAgICAgIE51bGxfTGlzdCA6IGNv bnN0YW50IEdsaXN0IDo9IChQdHIgPT4gU3lzdGVtLk51bGxfQWRkcmVzcyk7CiAgIGVuZCBHZW5l cmljX0xpc3Q7CgplbmQgR2xpYi5HbGlzdDsKCi0tICA8ZXhhbXBsZT4KLS0gIDxpbmNsdWRlPi4u L2V4YW1wbGVzL2RvY3VtZW50YXRpb24vZ2xpc3RfdHJhdmVyc2UuYWRiPC9pbmNsdWRlPgotLSAg PC9leGFtcGxlPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5k aW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQot LSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0xOTk5ICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFu ZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJh cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAt LQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg ICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAg ICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdp dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz MCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwg ZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQot LSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHBy b2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRz ZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQg YnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24g ZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAt LQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGlj IExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKd2l0aCBHbGliOyB1c2UgR2xpYjsKCnBh Y2thZ2UgR2RrLlR5cGVzIGlzCgogICB0eXBlIEdka19HZW9tZXRyeSBpcyByZWNvcmQKICAgICAg TWluX1dpZHRoICAgOiBHaW50OwogICAgICBNaW5fSGVpZ2h0ICA6IEdpbnQ7CiAgICAgIE1heF9X aWR0aCAgIDogR2ludDsKICAgICAgTWF4X0hlaWdodCAgOiBHaW50OwogICAgICBCYXNlX1dpZHRo ICA6IEdpbnQ7CiAgICAgIEJhc2VfSGVpZ2h0IDogR2ludDsKICAgICAgV2lkdGhfSW5jICAgOiBH aW50OwogICAgICBIZWlnaHRfSW5jICA6IEdpbnQ7CiAgICAgIE1pbl9Bc3BlY3QgIDogR2RvdWJs ZTsKICAgICAgTWF4X0FzcGVjdCAgOiBHZG91YmxlOwogICBlbmQgcmVjb3JkOwogICBwcmFnbWEg UGFjayAoR2RrX0dlb21ldHJ5KTsKCiAgIHR5cGUgR2RrX1BvaW50IGlzIHJlY29yZAogICAgICBY IDogR2ludDE2OwogICAgICBZIDogR2ludDE2OwogICBlbmQgcmVjb3JkOwogICBwcmFnbWEgUGFj ayAoR2RrX1BvaW50KTsKICAgZm9yIEdka19Qb2ludCdTaXplIHVzZSBHaW50J1NpemU7CgogICB0 eXBlIEdka19Qb2ludHNfQXJyYXkgaXMgYXJyYXkgKFBvc2l0aXZlIHJhbmdlIDw+KSBvZiBHZGtf UG9pbnQ7CiAgIHByYWdtYSBQYWNrIChHZGtfUG9pbnRzX0FycmF5KTsKCiAgIHR5cGUgR2RrX1Nl Z21lbnQgaXMgcmVjb3JkCiAgICAgIFgxIDogR2ludDE2OwogICAgICBZMSA6IEdpbnQxNjsKICAg ICAgWDIgOiBHaW50MTY7CiAgICAgIFkyIDogR2ludDE2OwogICBlbmQgcmVjb3JkOwogICBwcmFn bWEgUGFjayAoR2RrX1NlZ21lbnQpOwogICBmb3IgR2RrX1NlZ21lbnQnU2l6ZSB1c2UgNjQ7Cgog ICB0eXBlIEdka19TZWdtZW50c19BcnJheSBpcyBhcnJheSAoUG9zaXRpdmUgcmFuZ2UgPD4pIG9m IEdka19TZWdtZW50OwogICBwcmFnbWEgUGFjayAoR2RrX1NlZ21lbnRzX0FycmF5KTsKCiAgIC0t CiAgIC0tICBTZWUgYXQgdGhlIGVuZCBvZiB0aGUgcGFja2FnZSBhIGxpc3Qgb2YgYWxsIHRoZSB0 eXBlcyB0aGF0CiAgIC0tICBoYXZlIG5vdCBiZWVuICJib3VuZCIuCiAgIC0tCgogICB0eXBlIEdk a19BdG9tIGlzIG5ldyBHdWxvbmc7CiAgIC0tICBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIHByb3Bl cnR5IG9mIHRoZSBYLXNlcnZlciwgdGhhdCBjYW4gYmUKICAgLS0gIG1hbmlwdWxhdGVkIHRocm91 Z2ggZnVuY3Rpb25zIGluIEdkay5Qcm9wZXJ0eS4gVGhleSBoYXZlIGFuIGFzc29jaWF0ZWQKICAg LS0gIG5hbWUsIHRoYXQgY2FuIGJlIHByaW50ZWQsIGFzIHdlbGwgYXMgYSB2YWx1ZSB3aG9zZSB0 eXBlIG1heSB2YXJ5LgoKICAgdHlwZSBHZGtfQXhpc19Vc2UgaXMKICAgICAoQXhpc19JZ25vcmUs CiAgICAgIEF4aXNfWCwKICAgICAgQXhpc19ZLAogICAgICBBeGlzX1ByZXNzdXJlLAogICAgICBB eGlzX1hfVGlsdCwKICAgICAgQXhpc19ZX1RpbHQsCiAgICAgIEF4aXNfTGFzdCk7CgogICB0eXBl IEdka19CeXRlX09yZGVyIGlzIChMc2JfRmlyc3QsIE1zYl9GaXJzdCk7CgogICB0eXBlIEdka19D YXBfU3R5bGUgaXMgKENhcF9Ob3RfTGFzdCwgQ2FwX0J1dHQsIENhcF9Sb3VuZCwgQ2FwX1Byb2pl Y3RpbmcpOwoKICAgdHlwZSBHZGtfQ3Jvc3NpbmdfTW9kZSBpcyAoQ3Jvc3NpbmdfTm9ybWFsLCBD cm9zc2luZ19HcmFiLCBDcm9zc2luZ19VbmdyYWIpOwoKICAgdHlwZSBHZGtfQ3Vyc29yX1R5cGUg aXMKICAgICAoWF9DdXJzb3IsCiAgICAgIEFycm93LAogICAgICBCYXNlZF9BcnJvd19Eb3duLAog ICAgICBCYXNlZF9BcnJvd19VcCwKICAgICAgQm9hdCwKICAgICAgQm9nb3NpdHksCiAgICAgIEJv dHRvbV9MZWZ0X0Nvcm5lciwKICAgICAgQm90dG9tX1JpZ2h0X0Nvcm5lciwKICAgICAgQm90dG9t X1NpZGUsCiAgICAgIEJvdHRvbV9UZWUsCiAgICAgIEJveF9TcGlyYWwsCiAgICAgIENlbnRlcl9Q dHIsCiAgICAgIENpcmNsZSwKICAgICAgQ2xvY2ssCiAgICAgIENvZmZlZV9NdWcsCiAgICAgIENy b3NzLAogICAgICBDcm9zc19SZXZlcnNlLAogICAgICBDcm9zc2hhaXIsCiAgICAgIERpYW1vbmRf Q3Jvc3MsCiAgICAgIERvdCwKICAgICAgRG90Ym94LAogICAgICBEb3VibGVfQXJyb3csCiAgICAg IERyYWZ0X0xhcmdlLAogICAgICBEcmFmdF9TbWFsbCwKICAgICAgRHJhcGVkX0JveCwKICAgICAg RXhjaGFuZ2UsCiAgICAgIEZsZXVyLAogICAgICBHb2JibGVyLAogICAgICBHdW1ieSwKICAgICAg SGFuZDEsCiAgICAgIEhhbmQyLAogICAgICBIZWFydCwKICAgICAgSWNvbiwKICAgICAgSXJvbl9D cm9zcywKICAgICAgTGVmdF9QdHIsCiAgICAgIExlZnRfU2lkZSwKICAgICAgTGVmdF9UZWUsCiAg ICAgIExlZnRidXR0b24sCiAgICAgIExsX0FuZ2xlLAogICAgICBMcl9BbmdsZSwKICAgICAgTWFu LAogICAgICBNaWRkbGVidXR0b24sCiAgICAgIE1vdXNlLAogICAgICBQZW5jaWwsCiAgICAgIFBp cmF0ZSwKICAgICAgUGx1cywKICAgICAgUXVlc3Rpb25fQXJyb3csCiAgICAgIFJpZ2h0X1B0ciwK ICAgICAgUmlnaHRfU2lkZSwKICAgICAgUmlnaHRfVGVlLAogICAgICBSaWdodGJ1dHRvbiwKICAg ICAgUnRsX0xvZ28sCiAgICAgIFNhaWxib2F0LAogICAgICBTYl9Eb3duX0Fycm93LAogICAgICBT Yl9IX0RvdWJsZV9BcnJvdywKICAgICAgU2JfTGVmdF9BcnJvdywKICAgICAgU2JfUmlnaHRfQXJy b3csCiAgICAgIFNiX1VwX0Fycm93LAogICAgICBTYl9WX0RvdWJsZV9BcnJvdywKICAgICAgU2h1 dHRsZSwKICAgICAgU2l6aW5nLAogICAgICBTcGlkZXIsCiAgICAgIFNwcmF5Y2FuLAogICAgICBT dGFyLAogICAgICBUYXJnZXQsCiAgICAgIFRjcm9zcywKICAgICAgVG9wX0xlZnRfQXJyb3csCiAg ICAgIFRvcF9MZWZ0X0Nvcm5lciwKICAgICAgVG9wX1JpZ2h0X0Nvcm5lciwKICAgICAgVG9wX1Np ZGUsCiAgICAgIFRvcF9UZWUsCiAgICAgIFRyZWssCiAgICAgIFVsX0FuZ2xlLAogICAgICBVbWJy ZWxsYSwKICAgICAgVXJfQW5nbGUsCiAgICAgIFdhdGNoLAogICAgICBYdGVybSk7CgogICB0eXBl IEdka19EZXZpY2VfSWQgaXMgbmV3IEd1aW50MzI7CiAgIC0tICBUaGlzIHR5cGUgaXMgc3BlY2lm aWMgdG8gR3RrQWRhLiBJbiBHZGssIGd1aW50MzIgaXMgdXNlZCBpbnN0ZWFkLgoKICAgdHlwZSBH ZGtfRXZlbnRfTWFzayBpcyBtb2QgMiAqKiAyMTsKICAgLS0gIE5vdGUgdGhhdCB5b3UgbmVlZCB0 byBjaGFuZ2UgdGhlIGV2ZW50IG1hc2sgb2YgYSB3aWRnZXQgaWYgeW91IHdhbnQKICAgLS0gIHRv IGJlIGFibGUgdG8gZ2V0IHNvbWUgZXZlbnRzLiBUbyBjaGFuZ2UgdGhpcyBtYXNrLCB0aGUgd2lk Z2V0CiAgIC0tICBtdXN0IGZpcnN0IGJlIFVucmVhbGl6ZWQuCgogICBOdWxsX0V2ZW50X01hc2sg ICAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzazsKICAgRXhwb3N1cmVfTWFzayAgICAg ICAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01hc2s7CgogICBQb2ludGVyX01vdGlvbl9NYXNr ICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzazsKICAgLS0gIEV2ZXJ5IHRpbWUgdGhlIG1v dXNlIG1vdmVzLCBHdGtBZGEgd2lsbCBzZW5kIGEgTW90aW9uX05vdGlmeSBldmVudC4KICAgLS0g IFRoZXNlIGV2ZW50cyB3aWxsIGJlIHNlbnQgYXMgZmFzdCBhcyBwb3NzaWJsZSwgYW5kIHlvdXIg YXBwbGljYXRpb24KICAgLS0gIG5lZWRzIHRvIGJlIGFibGUgdG8gcmVzcG9uZCBhcyBmYXN0IGFz IHBvc3NpYmxlIChnZW5lcmFsbHkgYWJvdXQKICAgLS0gIDIwMCBldmVudHMgcGVyIHNlY29uZCku CgogICBQb2ludGVyX01vdGlvbl9IaW50X01hc2sgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzazsK ICAgLS0gIEd0a0FkYSB3aWxsIG9ubHkgc2VuZCBvbmUgTW90aW9uX05vdGlmeSBldmVudCB3aGVu IHRoZSBtb3VzZSBtb3Zlcy4KICAgLS0gIFRoZSBoYW5kbGVyIHNob3VsZCBjYWxsIEdkay5XaW5k b3cuR2V0X1BvaW50ZXIsIHRvIGdldCB0aGUgY3VycmVudAogICAtLSAgcG9zaXRpb24gYW5kIHNp Z25hbHMgR3RrQWRhIHRoYXQgaXQgaXMgcmVhZHkgdG8gZ2V0IGFub3RoZXIKICAgLS0gIE1vdGlv bl9Ob3RpZnkgc2lnbmFsLiBObyBuZXcgTW90aW9uX05vdGlmeSB3aWxsIGJlIHNlbnQgdW50aWwK ICAgLS0gIEdldF9Qb2ludGVyIGhhcyBiZWVuIGNhbGxlZC4KCiAgIEJ1dHRvbl9Nb3Rpb25fTWFz ayAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrOwogICBCdXR0b24xX01vdGlvbl9NYXNr ICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzazsKICAgQnV0dG9uMl9Nb3Rpb25fTWFzayAg ICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01hc2s7CiAgIEJ1dHRvbjNfTW90aW9uX01hc2sgICAg ICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrOwogICBCdXR0b25fUHJlc3NfTWFzayAgICAgICAg OiBjb25zdGFudCBHZGtfRXZlbnRfTWFzazsKICAgQnV0dG9uX1JlbGVhc2VfTWFzayAgICAgIDog Y29uc3RhbnQgR2RrX0V2ZW50X01hc2s7CiAgIEtleV9QcmVzc19NYXNrICAgICAgICAgICA6IGNv bnN0YW50IEdka19FdmVudF9NYXNrOwogICBLZXlfUmVsZWFzZV9NYXNrICAgICAgICAgOiBjb25z dGFudCBHZGtfRXZlbnRfTWFzazsKICAgRW50ZXJfTm90aWZ5X01hc2sgICAgICAgIDogY29uc3Rh bnQgR2RrX0V2ZW50X01hc2s7CiAgIExlYXZlX05vdGlmeV9NYXNrICAgICAgICA6IGNvbnN0YW50 IEdka19FdmVudF9NYXNrOwogICBGb2N1c19DaGFuZ2VfTWFzayAgICAgICAgOiBjb25zdGFudCBH ZGtfRXZlbnRfTWFzazsKICAgU3RydWN0dXJlX01hc2sgICAgICAgICAgIDogY29uc3RhbnQgR2Rr X0V2ZW50X01hc2s7CiAgIFByb3BlcnR5X0NoYW5nZV9NYXNrICAgICA6IGNvbnN0YW50IEdka19F dmVudF9NYXNrOwogICBWaXNpYmlsaXR5X05vdGlmeV9NYXNrICAgOiBjb25zdGFudCBHZGtfRXZl bnRfTWFzazsKICAgUHJveGltaXR5X0luX01hc2sgICAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50 X01hc2s7CiAgIFByb3hpbWl0eV9PdXRfTWFzayAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9N YXNrOwogICBBbGxfRXZlbnRzX01hc2sgICAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFz azsKCiAgIHR5cGUgR2RrX0V2ZW50X1R5cGUgaXMKICAgICAoTm90aGluZywKICAgICAgRGVsZXRl LAogICAgICBEZXN0cm95LAogICAgICBFeHBvc2UsCiAgICAgIE1vdGlvbl9Ob3RpZnksCiAgICAg IEJ1dHRvbl9QcmVzcywKICAgICAgR2RrXzJidXR0b25fUHJlc3MsICAtLSAgRG91YmxlLWNsaWNr CiAgICAgIEdka18zYnV0dG9uX1ByZXNzLCAgLS0gIFRyaXBsZS1jbGljawogICAgICBCdXR0b25f UmVsZWFzZSwKICAgICAgS2V5X1ByZXNzLAogICAgICBLZXlfUmVsZWFzZSwKICAgICAgRW50ZXJf Tm90aWZ5LAogICAgICBMZWF2ZV9Ob3RpZnksCiAgICAgIEZvY3VzX0NoYW5nZSwKICAgICAgQ29u ZmlndXJlLAogICAgICBNYXAsCiAgICAgIFVubWFwLAogICAgICBQcm9wZXJ0eV9Ob3RpZnksCiAg ICAgIFNlbGVjdGlvbl9DbGVhciwKICAgICAgU2VsZWN0aW9uX1JlcXVlc3QsCiAgICAgIFNlbGVj dGlvbl9Ob3RpZnksCiAgICAgIFByb3hpbWl0eV9JbiwKICAgICAgUHJveGltaXR5X091dCwKICAg ICAgRHJhZ19FbnRlciwKICAgICAgRHJhZ19MZWF2ZSwKICAgICAgRHJhZ19Nb3Rpb24sCiAgICAg IERyYWdfU3RhdHVzLAogICAgICBEcm9wX1N0YXJ0LAogICAgICBEcm9wX0ZpbmlzaGVkLAogICAg ICBDbGllbnRfRXZlbnQsCiAgICAgIFZpc2liaWxpdHlfTm90aWZ5LAogICAgICBOb19FeHBvc2Up OwoKICAgdHlwZSBHZGtfRXh0ZW5zaW9uX01vZGUgaXMKICAgICAoRXh0ZW5zaW9uX0V2ZW50c19O b25lLCBFeHRlbnNpb25fRXZlbnRzX0FsbCwgRXh0ZW5zaW9uX0V2ZW50c19DdXJzb3IpOwoKICAg dHlwZSBHZGtfRmlsbCBpcyAoU29saWQsIFRpbGVkLCBTdGlwcGxlZCwgT3BhcXVlX1N0aXBwbGVk KTsKCiAgIHR5cGUgR2RrX0ZpbGxfUnVsZSBpcyAoRXZlbl9PZGRfUnVsZSwgV2luZGluZ19SdWxl KTsKCiAgIHR5cGUgR2RrX0Z1bmN0aW9uIGlzCiAgICAgKENvcHksCiAgICAgIEludmVydCwKICAg ICAgR2RrX1hvciwKICAgICAgQ2xlYXIsCiAgICAgIEdka19BbmQsCiAgICAgIEFuZF9SZXZlcnNl LAogICAgICBBbmRfSW52ZXJ0LAogICAgICBOb29wLAogICAgICBHZGtfT3IsCiAgICAgIEVxdWl2 LAogICAgICBPcl9SZXZlcnNlLAogICAgICBDb3B5X0ludmVydCwKICAgICAgT3JfSW52ZXJ0LAog ICAgICBOYW5kLAogICAgICBTZXQpOwoKICAgdHlwZSBHZGtfSm9pbl9TdHlsZSBpcyAoSm9pbl9N aXRlciwgSm9pbl9Sb3VuZCwgSm9pbl9CZXZlbCk7CgogICB0eXBlIEdka19JQ19BdHRyaWJ1dGVz X1R5cGUgaXMgbmV3IEd1aW50OwogICBJY19TdHlsZSAgICAgICAgICAgICAgICA6IGNvbnN0YW50 IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX0NsaWVudF9XaW5kb3cgICAgICAgIDogY29u c3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfRm9jdXNfV2luZG93ICAgICAgICAg OiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19GaWx0ZXJfRXZlbnRzICAg ICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX1Nwb3RfTG9jYXRp b24gICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfTGluZV9T cGFjaW5nICAgICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19D dXJzb3IgICAgICAgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAg IEljX1ByZWVkaXRfRm9udHNldCAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlw ZTsKICAgSWNfUHJlZWRpdF9BcmVhICAgICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRl c19UeXBlOwogICBJY19QcmVlZGl0X0FyZWFfTmVlZGVkICA6IGNvbnN0YW50IEdka19JQ19BdHRy aWJ1dGVzX1R5cGU7CiAgIEljX1ByZWVkaXRfRm9yZWdyb3VuZCAgIDogY29uc3RhbnQgR2RrX0lD X0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfUHJlZWRpdF9CYWNrZ3JvdW5kICAgOiBjb25zdGFudCBH ZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19QcmVlZGl0X1BpeG1hcCAgICAgICA6IGNvbnN0 YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX1ByZWVkaXRfQ29sb3JtYXAgICAgIDog Y29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfU3RhdHVzX0ZvbnRzZXQgICAg ICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19TdGF0dXNfQXJlYSAg ICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX1N0YXR1c19B cmVhX05lZWRlZCAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfU3Rh dHVzX0ZvcmVncm91bmQgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJ Y19TdGF0dXNfQmFja2dyb3VuZCAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7 CiAgIEljX1N0YXR1c19QaXhtYXAgICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNf VHlwZTsKICAgSWNfU3RhdHVzX0NvbG9ybWFwICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmli dXRlc19UeXBlOwogICBJY19BbGxfUmVxICAgICAgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19B dHRyaWJ1dGVzX1R5cGU7CiAgIEljX1ByZWVkaXRfQXJlYV9SZXEgICAgIDogY29uc3RhbnQgR2Rr X0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfUHJlZWRpdF9Qb3NpdGlvbl9SZXEgOiBjb25zdGFu dCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19TdGF0dXNfQXJlYV9SZXEgICAgICA6IGNv bnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CgogICB0eXBlIEdka19JTV9TdHlsZSBpcyBu ZXcgR3VpbnQ7CiAgIEltX1ByZWVkaXRfQXJlYSAgICAgIDogY29uc3RhbnQgR2RrX0lNX1N0eWxl OwogICBJbV9QcmVlZGl0X0NhbGxiYWNrcyA6IGNvbnN0YW50IEdka19JTV9TdHlsZTsKICAgSW1f UHJlZWRpdF9Qb3NpdGlvbiAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGU7CiAgIEltX1ByZWVkaXRf Tm90aGluZyAgIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlOwogICBJbV9QcmVlZGl0X05vbmUgICAg ICA6IGNvbnN0YW50IEdka19JTV9TdHlsZTsKICAgSW1fUHJlZWRpdF9NYXNrICAgICAgOiBjb25z dGFudCBHZGtfSU1fU3R5bGU7CiAgIEltX1N0YXR1c19BcmVhICAgICAgIDogY29uc3RhbnQgR2Rr X0lNX1N0eWxlOwogICBJbV9TdGF0dXNfQ2FsbGJhY2tzICA6IGNvbnN0YW50IEdka19JTV9TdHls ZTsKICAgSW1fU3RhdHVzX05vdGhpbmcgICAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGU7CiAgIElt X1N0YXR1c19Ob25lICAgICAgIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlOwogICBJbV9TdGF0dXNf TWFzayAgICAgICA6IGNvbnN0YW50IEdka19JTV9TdHlsZTsKCiAgIHR5cGUgR2RrX0lucHV0X0Nv bmRpdGlvbiBpcyAoSW5wdXRfUmVhZCwgSW5wdXRfV3JpdGUsIElucHV0X0V4Y2VwdGlvbik7Cgog ICB0eXBlIEdka19JbnB1dF9Nb2RlIGlzIChNb2RlX0Rpc2FibGVkLCBNb2RlX1NjcmVlbiwgTW9k ZV9XaW5kb3cpOwoKICAgdHlwZSBHZGtfSW5wdXRfU291cmNlIGlzCiAgICAgKFNvdXJjZV9Nb3Vz ZSwKICAgICAgU291cmNlX1BlbiwKICAgICAgU291cmNlX0VyYXNlciwKICAgICAgU291cmNlX0N1 cnNvcik7CgogICB0eXBlIEdka19LZXlfVHlwZSBpcyBuZXcgR3VpbnQ7CiAgIC0tICBzZWUgR2Rr LlR5cGVzLktleXN5bXMgZm9yIGtleSB0eXBlIGNvbnN0YW50cwoKICAgdHlwZSBHZGtfTGluZV9T dHlsZSBpcyAoTGluZV9Tb2xpZCwgTGluZV9Pbl9PZmZfRGFzaCwgTGluZV9Eb3VibGVfRGFzaCk7 CgogICB0eXBlIEdka19Nb2RpZmllcl9UeXBlIGlzIG5ldyBHdWludDsKICAgU2hpZnRfTWFzayAg ICA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9UeXBlOwogICBMb2NrX01hc2sgICAgIDogY29uc3Rh bnQgR2RrX01vZGlmaWVyX1R5cGU7CiAgIENvbnRyb2xfTWFzayAgOiBjb25zdGFudCBHZGtfTW9k aWZpZXJfVHlwZTsKICAgTW9kMV9NYXNrICAgICA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9UeXBl OwogICBNb2QyX01hc2sgICAgIDogY29uc3RhbnQgR2RrX01vZGlmaWVyX1R5cGU7CiAgIE1vZDNf TWFzayAgICAgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJfVHlwZTsKICAgTW9kNF9NYXNrICAgICA6 IGNvbnN0YW50IEdka19Nb2RpZmllcl9UeXBlOwogICBNb2Q1X01hc2sgICAgIDogY29uc3RhbnQg R2RrX01vZGlmaWVyX1R5cGU7CiAgIEJ1dHRvbjFfTWFzayAgOiBjb25zdGFudCBHZGtfTW9kaWZp ZXJfVHlwZTsKICAgQnV0dG9uMl9NYXNrICA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9UeXBlOwog ICBCdXR0b24zX01hc2sgIDogY29uc3RhbnQgR2RrX01vZGlmaWVyX1R5cGU7CiAgIEJ1dHRvbjRf TWFzayAgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJfVHlwZTsKICAgQnV0dG9uNV9NYXNrICA6IGNv bnN0YW50IEdka19Nb2RpZmllcl9UeXBlOwogICBSZWxlYXNlX01hc2sgIDogY29uc3RhbnQgR2Rr X01vZGlmaWVyX1R5cGU7CiAgIE1vZGlmaWVyX01hc2sgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJf VHlwZTsKCiAgIHR5cGUgR2RrX05vdGlmeV9UeXBlIGlzCiAgICAgKE5vdGlmeV9BbmNlc3RvciwK ICAgICAgTm90aWZ5X1ZpcnR1YWwsCiAgICAgIE5vdGlmeV9JbmZlcmlvciwKICAgICAgTm90aWZ5 X05vbl9MaW5lYXIsCiAgICAgIE5vdGlmeV9Ob25fTGluZWFyX1ZpcnR1YWwsCiAgICAgIE5vdGlm eV9Vbmtub3duKTsKCiAgIHR5cGUgR2RrX092ZXJsYXBfVHlwZSBpcwogICAgIChPdmVybGFwX1Jl Y3RhbmdsZV9JbiwKICAgICAgT3ZlcmxhcF9SZWN0YW5nbGVfT3V0LAogICAgICBPdmVybGFwX1Jl Y3RhbmdsZV9QYXJ0KTsKCiAgIHR5cGUgR2RrX1Byb3BfTW9kZSBpcwogICAgIChQcm9wX01vZGVf UmVwbGFjZSwgUHJvcF9Nb2RlX1ByZXBlbmQsIFByb3BfTW9kZV9BcHBlbmQpOwoKICAgdHlwZSBH ZGtfU3Vid2luZG93X01vZGUgaXMgKENsaXBfQnlfQ2hpbGRyZW4sIEluY2x1ZGVfSW5mZXJpb3Jz KTsKCiAgIHR5cGUgR2RrX0dDX1ZhbHVlc19NYXNrIGlzIG5ldyBHdWludDsKICAgR0NfRm9yZWdy b3VuZCAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzazsKICAgR0NfQmFja2dyb3VuZCAg ICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzazsKICAgR0NfRm9udCAgICAgICAgICA6IGNv bnN0YW50IEdka19HQ19WYWx1ZXNfTWFzazsKICAgR0NfRnVuY3Rpb24gICAgICA6IGNvbnN0YW50 IEdka19HQ19WYWx1ZXNfTWFzazsKICAgR0NfRmlsbCAgICAgICAgICA6IGNvbnN0YW50IEdka19H Q19WYWx1ZXNfTWFzazsKICAgR0NfVGlsZSAgICAgICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1 ZXNfTWFzazsKICAgR0NfU3RpcHBsZSAgICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFz azsKICAgR0NfQ2xpcF9NYXNrICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzazsKICAg R0NfU3Vid2luZG93ICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzazsKICAgR0NfVHNf WF9PcmlnaW4gICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzazsKICAgR0NfVHhfWV9Pcmln aW4gICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzazsKICAgR0NfQ2xpcF9YX09yaWdpbiA6 IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzazsKICAgR0NfQ2xpcF9ZX09yaWdpbiA6IGNvbnN0 YW50IEdka19HQ19WYWx1ZXNfTWFzazsKICAgR0NfRXhwb3N1cmVzICAgICA6IGNvbnN0YW50IEdk a19HQ19WYWx1ZXNfTWFzazsKICAgR0NfTGluZV9XaWR0aCAgICA6IGNvbnN0YW50IEdka19HQ19W YWx1ZXNfTWFzazsKICAgR0NfTGluZV9TdHlsZSAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNf TWFzazsKICAgR0NfQ2FwX1N0eWxlICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzazsK ICAgR0NfSm9pbl9TdHlsZSAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzazsKCiAgIHR5 cGUgR2RrX1Zpc2liaWxpdHlfU3RhdGUgaXMKICAgICAoVmlzaWJpbGl0eV9Vbm9ic2N1cmVkLAog ICAgICBWaXNpYmlsaXR5X1BhcnRpYWwsCiAgICAgIFZpc2liaWxpdHlfRnVsbHlfT2JzY3VyZWQp OwoKICAgdHlwZSBHZGtfVmlzdWFsX1R5cGUgaXMKICAgICAoVmlzdWFsX1N0YXRpY19HcmF5LAog ICAgICBWaXN1YWxfR3JheXNjYWxlLAogICAgICBWaXN1YWxfU3RhdGljX0NvbG9yLAogICAgICBW aXN1YWxfUHNldWRvX0NvbG9yLAogICAgICBWaXN1YWxfVHJ1ZV9Db2xvciwKICAgICAgVmlzdWFs X0RpcmVjdF9Db2xvcik7CgogICB0eXBlIEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlIGlzIG5l dyBHdWludDsKICAgV2FfVGl0bGUgICAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNf VHlwZTsKICAgV2FfWCAgICAgICAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlw ZTsKICAgV2FfWSAgICAgICAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZTsK ICAgV2FfQ3Vyc29yICAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZTsKICAg V2FfQ29sb3JtYXAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZTsKICAgV2Ff VmlzdWFsICAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZTsKICAgV2FfV21j bGFzcyAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZTsKICAgV2FfTm9yZWRp ciAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZTsKCiAgIHR5cGUgR2RrX1dp bmRvd19DbGFzcyBpcyAoSW5wdXRfT3V0cHV0LCBJbnB1dF9Pbmx5KTsKCiAgIHR5cGUgR2RrX1dp bmRvd19IaW50cyBpcyBuZXcgR3VpbnQ7CiAgIEdka19IaW50X1BvcyAgICAgICAgOiBjb25zdGFu dCBHZGtfV2luZG93X0hpbnRzOwogICBHZGtfSGludF9NaW5fU2l6ZSAgIDogY29uc3RhbnQgR2Rr X1dpbmRvd19IaW50czsKICAgR2RrX0hpbnRfTWF4X1NpemUgICA6IGNvbnN0YW50IEdka19XaW5k b3dfSGludHM7CiAgIEdka19IaW50X0Jhc2VfU2l6ZSAgOiBjb25zdGFudCBHZGtfV2luZG93X0hp bnRzOwogICBHZGtfSGludF9Bc3BlY3QgICAgIDogY29uc3RhbnQgR2RrX1dpbmRvd19IaW50czsK ICAgR2RrX0hpbnRfUmVzaXplX0luYyA6IGNvbnN0YW50IEdka19XaW5kb3dfSGludHM7CgogICB0 eXBlIEdka19XaW5kb3dfVHlwZSBpcwogICAgIChXaW5kb3dfUm9vdCwKICAgICAgV2luZG93X1Rv cGxldmVsLAogICAgICBXaW5kb3dfQ2hpbGQsCiAgICAgIFdpbmRvd19EaWFsb2csCiAgICAgIFdp bmRvd19UZW1wLAogICAgICBXaW5kb3dfUGl4bWFwLAogICAgICBXaW5kb3dfRm9yZWlnbik7Cgog ICB0eXBlIEdka19XbV9EZWNvcmF0aW9uIGlzIG5ldyBHdWludDsKICAgRGVjb3JfQWxsICAgICAg OiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbjsKICAgRGVjb3JfQm9yZGVyICAgOiBjb25zdGFu dCBHZGtfV21fRGVjb3JhdGlvbjsKICAgRGVjb3JfUmVzaXplX0ggOiBjb25zdGFudCBHZGtfV21f RGVjb3JhdGlvbjsKICAgRGVjb3JfVGl0bGUgICAgOiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlv bjsKICAgRGVjb3JfTWVudSAgICAgOiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbjsKICAgRGVj b3JfTWluaW1pemUgOiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbjsKICAgRGVjb3JfTWF4aW1p emUgOiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbjsKCiAgIHR5cGUgR2RrX1dtX0Z1bmN0aW9u IGlzIG5ldyBHdWludDsKICAgRnVuY19BbGwgICAgICA6IGNvbnN0YW50IEdka19XbV9GdW5jdGlv bjsKICAgRnVuY19SZXNpemUgICA6IGNvbnN0YW50IEdka19XbV9GdW5jdGlvbjsKICAgRnVuY19N b3ZlICAgICA6IGNvbnN0YW50IEdka19XbV9GdW5jdGlvbjsKICAgRnVuY19NaW5pbWl6ZSA6IGNv bnN0YW50IEdka19XbV9GdW5jdGlvbjsKICAgRnVuY19NYXhpbWl6ZSA6IGNvbnN0YW50IEdka19X bV9GdW5jdGlvbjsKICAgRnVuY19DbG9zZSAgICA6IGNvbnN0YW50IEdka19XbV9GdW5jdGlvbjsK CiAgIHN1YnR5cGUgR2RrX1dDaGFyIGlzIFN0YW5kYXJkLldpZGVfQ2hhcmFjdGVyOwogICBzdWJ0 eXBlIEdka19XU3RyaW5nIGlzIFN0YW5kYXJkLldpZGVfU3RyaW5nOwogICAtLSAgR2RrIGRvZXMg bm90IGRlZmluZSBhIEdka19XU3RyaW5nIHR5cGUsIGJ1dCB1c2VzIHBvaW50ZXJzCiAgIC0tICB0 byBHZGtfV0NoYXIgaW5zdGVhZC4KCnByaXZhdGUKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAgLS0gIFByaXZhdGUgY29uc3RhbnRzICAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCgogICBOdWxsX0V2ZW50X01hc2sgICAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFz ayA6PSAwOwogICBFeHBvc3VyZV9NYXNrICAgICAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRf TWFzayA6PSAyICoqIDE7CiAgIFBvaW50ZXJfTW90aW9uX01hc2sgICAgICA6IGNvbnN0YW50IEdk a19FdmVudF9NYXNrIDo9IDIgKiogMjsKICAgUG9pbnRlcl9Nb3Rpb25fSGludF9NYXNrIDogY29u c3RhbnQgR2RrX0V2ZW50X01hc2sgOj0gMiAqKiAzOwogICBCdXR0b25fTW90aW9uX01hc2sgICAg ICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDQ7CiAgIEJ1dHRvbjFfTW90aW9u X01hc2sgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogNTsKICAgQnV0dG9u Ml9Nb3Rpb25fTWFzayAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01hc2sgOj0gMiAqKiA2Owog ICBCdXR0b24zX01vdGlvbl9NYXNrICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAy ICoqIDc7CiAgIEJ1dHRvbl9QcmVzc19NYXNrICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9N YXNrIDo9IDIgKiogODsKICAgQnV0dG9uX1JlbGVhc2VfTWFzayAgICAgIDogY29uc3RhbnQgR2Rr X0V2ZW50X01hc2sgOj0gMiAqKiA5OwogICBLZXlfUHJlc3NfTWFzayAgICAgICAgICAgOiBjb25z dGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDEwOwogICBLZXlfUmVsZWFzZV9NYXNrICAgICAg ICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDExOwogICBFbnRlcl9Ob3RpZnlf TWFzayAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDEyOwogICBMZWF2 ZV9Ob3RpZnlfTWFzayAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDEz OwogICBGb2N1c19DaGFuZ2VfTWFzayAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6 PSAyICoqIDE0OwogICBTdHJ1Y3R1cmVfTWFzayAgICAgICAgICAgOiBjb25zdGFudCBHZGtfRXZl bnRfTWFzayA6PSAyICoqIDE1OwogICBQcm9wZXJ0eV9DaGFuZ2VfTWFzayAgICAgOiBjb25zdGFu dCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDE2OwogICBWaXNpYmlsaXR5X05vdGlmeV9NYXNrICAg OiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDE3OwogICBQcm94aW1pdHlfSW5fTWFz ayAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDE4OwogICBQcm94aW1p dHlfT3V0X01hc2sgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDE5Owog ICBTdWJzdHJ1Y3R1cmVfTWFzayAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAy ICoqIDIwOwogICBBbGxfRXZlbnRzX01hc2sgICAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRf TWFzayA6PSAxNiMxRkZGRkYjOwoKICAgSWNfU3R5bGUgICAgICAgICAgICAgICAgOiBjb25zdGFu dCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogMDsKICAgSWNfQ2xpZW50X1dpbmRvdyAg ICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogMTsKICAgSWNf Rm9jdXNfV2luZG93ICAgICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9 IDIgKiogMjsKICAgSWNfRmlsdGVyX0V2ZW50cyAgICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0 cmlidXRlc19UeXBlIDo9IDIgKiogMzsKICAgSWNfU3BvdF9Mb2NhdGlvbiAgICAgICAgOiBjb25z dGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogNDsKICAgSWNfTGluZV9TcGFjaW5n ICAgICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogNTsKICAg SWNfQ3Vyc29yICAgICAgICAgICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBl IDo9IDIgKiogNjsKICAgSWNfUHJlZWRpdF9Gb250c2V0ICAgICAgOiBjb25zdGFudCBHZGtfSUNf QXR0cmlidXRlc19UeXBlIDo9IDIgKiogMTA7CiAgIEljX1ByZWVkaXRfQXJlYSAgICAgICAgIDog Y29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDExOwogICBJY19QcmVlZGl0 X0FyZWFfTmVlZGVkICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAx MjsKICAgSWNfUHJlZWRpdF9Gb3JlZ3JvdW5kICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRl c19UeXBlIDo9IDIgKiogMTM7CiAgIEljX1ByZWVkaXRfQmFja2dyb3VuZCAgIDogY29uc3RhbnQg R2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDE0OwogICBJY19QcmVlZGl0X1BpeG1hcCAg ICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAxNTsKICAgSWNf UHJlZWRpdF9Db2xvcm1hcCAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9 IDIgKiogMTY7CiAgIEljX1N0YXR1c19Gb250c2V0ICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0 dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDIxOwogICBJY19TdGF0dXNfQXJlYSAgICAgICAgICA6IGNv bnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAyMjsKICAgSWNfU3RhdHVzX0Fy ZWFfTmVlZGVkICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogMjM7 CiAgIEljX1N0YXR1c19Gb3JlZ3JvdW5kICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNf VHlwZSA6PSAyICoqIDI0OwogICBJY19TdGF0dXNfQmFja2dyb3VuZCAgICA6IGNvbnN0YW50IEdk a19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAyNTsKICAgSWNfU3RhdHVzX1BpeG1hcCAgICAg ICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogMjY7CiAgIEljX1N0 YXR1c19Db2xvcm1hcCAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PSAy ICoqIDI3OwogICBJY19BbGxfUmVxICAgICAgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRy aWJ1dGVzX1R5cGUgOj0KICAgICBJY19TdHlsZSBvciBJY19DbGllbnRfV2luZG93OwogICBJY19Q cmVlZGl0X0FyZWFfUmVxICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0K ICAgICBJY19QcmVlZGl0X0FyZWEgb3IgSWNfUHJlZWRpdF9Gb250c2V0OwogICBJY19QcmVlZGl0 X1Bvc2l0aW9uX1JlcSA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0KICAgICBJ Y19QcmVlZGl0X0FyZWEgb3IgSWNfU3BvdF9Mb2NhdGlvbiBvciBJY19QcmVlZGl0X0ZvbnRzZXQ7 CiAgIEljX1N0YXR1c19BcmVhX1JlcSAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNf VHlwZSA6PQogICAgIEljX1N0YXR1c19BcmVhIG9yIEljX1N0YXR1c19Gb250c2V0OwoKICAgSW1f UHJlZWRpdF9BcmVhICAgICAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGUgOj0gMTYjMDAwMSM7CiAg IEltX1ByZWVkaXRfQ2FsbGJhY2tzIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlIDo9IDE2IzAwMDIj OwogICBJbV9QcmVlZGl0X1Bvc2l0aW9uICA6IGNvbnN0YW50IEdka19JTV9TdHlsZSA6PSAxNiMw MDA0IzsKICAgSW1fUHJlZWRpdF9Ob3RoaW5nICAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGUgOj0g MTYjMDAwOCM7CiAgIEltX1ByZWVkaXRfTm9uZSAgICAgIDogY29uc3RhbnQgR2RrX0lNX1N0eWxl IDo9IDE2IzAwMTAjOwogICBJbV9QcmVlZGl0X01hc2sgICAgICA6IGNvbnN0YW50IEdka19JTV9T dHlsZSA6PSAxNiMwMDFGIzsKICAgSW1fU3RhdHVzX0FyZWEgICAgICAgOiBjb25zdGFudCBHZGtf SU1fU3R5bGUgOj0gMTYjMDEwMCM7CiAgIEltX1N0YXR1c19DYWxsYmFja3MgIDogY29uc3RhbnQg R2RrX0lNX1N0eWxlIDo9IDE2IzAyMDAjOwogICBJbV9TdGF0dXNfTm90aGluZyAgICA6IGNvbnN0 YW50IEdka19JTV9TdHlsZSA6PSAxNiMwNDAwIzsKICAgSW1fU3RhdHVzX05vbmUgICAgICAgOiBj b25zdGFudCBHZGtfSU1fU3R5bGUgOj0gMTYjMDgwMCM7CiAgIEltX1N0YXR1c19NYXNrICAgICAg IDogY29uc3RhbnQgR2RrX0lNX1N0eWxlIDo9IDE2IzBGMDAjOwoKICAgU2hpZnRfTWFzayAgIDog Y29uc3RhbnQgR2RrX01vZGlmaWVyX1R5cGUgOj0gMiAqKiAwOwogICBMb2NrX01hc2sgICAgOiBj b25zdGFudCBHZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDE7CiAgIENvbnRyb2xfTWFzayA6IGNv bnN0YW50IEdka19Nb2RpZmllcl9UeXBlIDo9IDIgKiogMjsKICAgTW9kMV9NYXNrICAgIDogY29u c3RhbnQgR2RrX01vZGlmaWVyX1R5cGUgOj0gMiAqKiAzOwogICBNb2QyX01hc2sgICAgOiBjb25z dGFudCBHZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDQ7CiAgIE1vZDNfTWFzayAgICA6IGNvbnN0 YW50IEdka19Nb2RpZmllcl9UeXBlIDo9IDIgKiogNTsKICAgTW9kNF9NYXNrICAgIDogY29uc3Rh bnQgR2RrX01vZGlmaWVyX1R5cGUgOj0gMiAqKiA2OwogICBNb2Q1X01hc2sgICAgOiBjb25zdGFu dCBHZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDc7CiAgIEJ1dHRvbjFfTWFzayA6IGNvbnN0YW50 IEdka19Nb2RpZmllcl9UeXBlIDo9IDIgKiogODsKICAgQnV0dG9uMl9NYXNrIDogY29uc3RhbnQg R2RrX01vZGlmaWVyX1R5cGUgOj0gMiAqKiA5OwogICBCdXR0b24zX01hc2sgOiBjb25zdGFudCBH ZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDEwOwogICBCdXR0b240X01hc2sgOiBjb25zdGFudCBH ZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDExOwogICBCdXR0b241X01hc2sgOiBjb25zdGFudCBH ZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDEyOwogICBSZWxlYXNlX01hc2sgIDogY29uc3RhbnQg R2RrX01vZGlmaWVyX1R5cGUgOj0gMiAqKiAxMzsKICAgTW9kaWZpZXJfTWFzayA6IGNvbnN0YW50 IEdka19Nb2RpZmllcl9UeXBlIDo9IDE2IzNGRkYjOwoKICAgV2FfVGl0bGUgICAgOiBjb25zdGFu dCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDE7CiAgIFdhX1ggICAgICAgIDog Y29uc3RhbnQgR2RrX1dpbmRvd19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAyOwogICBXYV9ZICAg ICAgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogMzsKICAg V2FfQ3Vyc29yICAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoq IDQ7CiAgIFdhX0NvbG9ybWFwIDogY29uc3RhbnQgR2RrX1dpbmRvd19BdHRyaWJ1dGVzX1R5cGUg Oj0gMiAqKiA1OwogICBXYV9WaXN1YWwgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRl c19UeXBlIDo9IDIgKiogNjsKICAgV2FfV21jbGFzcyAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0 dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDc7CiAgIFdhX05vcmVkaXIgIDogY29uc3RhbnQgR2RrX1dp bmRvd19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiA4OwoKICAgR0NfRm9yZWdyb3VuZCAgICA6IGNv bnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDA7CiAgIEdDX0JhY2tncm91bmQgICAg OiBjb25zdGFudCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiAxOwogICBHQ19Gb250ICAgICAg ICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMjsKICAgR0NfRnVuY3Rp b24gICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDM7CiAgIEdDX0Zp bGwgICAgICAgICAgOiBjb25zdGFudCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiA0OwogICBH Q19UaWxlICAgICAgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogNTsK ICAgR0NfU3RpcHBsZSAgICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoq IDY7CiAgIEdDX0NsaXBfTWFzayAgICAgOiBjb25zdGFudCBHZGtfR0NfVmFsdWVzX01hc2sgOj0g MiAqKiA3OwogICBHQ19TdWJ3aW5kb3cgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNr IDo9IDIgKiogODsKICAgR0NfVHNfWF9PcmlnaW4gICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNf TWFzayA6PSAyICoqIDk7CiAgIEdDX1R4X1lfT3JpZ2luICAgOiBjb25zdGFudCBHZGtfR0NfVmFs dWVzX01hc2sgOj0gMiAqKiAxMDsKICAgR0NfQ2xpcF9YX09yaWdpbiA6IGNvbnN0YW50IEdka19H Q19WYWx1ZXNfTWFzayA6PSAyICoqIDExOwogICBHQ19DbGlwX1lfT3JpZ2luIDogY29uc3RhbnQg R2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMTI7CiAgIEdDX0V4cG9zdXJlcyAgICAgOiBjb25z dGFudCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiAxMzsKICAgR0NfTGluZV9XaWR0aCAgICA6 IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDE0OwogICBHQ19MaW5lX1N0eWxl ICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMTU7CiAgIEdDX0NhcF9T dHlsZSAgICAgOiBjb25zdGFudCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiAxNjsKICAgR0Nf Sm9pbl9TdHlsZSAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDE3OwoK ICAgR2RrX0hpbnRfUG9zICAgICAgICA6IGNvbnN0YW50IEdka19XaW5kb3dfSGludHMgOj0gMiAq KiAwOwogICBHZGtfSGludF9NaW5fU2l6ZSAgIDogY29uc3RhbnQgR2RrX1dpbmRvd19IaW50cyA6 PSAyICoqIDE7CiAgIEdka19IaW50X01heF9TaXplICAgOiBjb25zdGFudCBHZGtfV2luZG93X0hp bnRzIDo9IDIgKiogMjsKICAgR2RrX0hpbnRfQmFzZV9TaXplICA6IGNvbnN0YW50IEdka19XaW5k b3dfSGludHMgOj0gMiAqKiAzOwogICBHZGtfSGludF9Bc3BlY3QgICAgIDogY29uc3RhbnQgR2Rr X1dpbmRvd19IaW50cyA6PSAyICoqIDQ7CiAgIEdka19IaW50X1Jlc2l6ZV9JbmMgOiBjb25zdGFu dCBHZGtfV2luZG93X0hpbnRzIDo9IDIgKiogNTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICAtLSAgUmVwcmVzZW50YXRpb24gY2xhdXNlcyAgLS0KICAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgogICBmb3IgR2RrX0V2ZW50X1R5cGUgdXNlCiAgICAgKE5vdGhp bmcgPT4gLTEsCiAgICAgIERlbGV0ZSA9PiAwLAogICAgICBEZXN0cm95ID0+IDEsCiAgICAgIEV4 cG9zZSA9PiAyLAogICAgICBNb3Rpb25fTm90aWZ5ID0+IDMsCiAgICAgIEJ1dHRvbl9QcmVzcyA9 PiA0LAogICAgICBHZGtfMmJ1dHRvbl9QcmVzcyA9PiA1LAogICAgICBHZGtfM2J1dHRvbl9QcmVz cyA9PiA2LAogICAgICBCdXR0b25fUmVsZWFzZSA9PiA3LAogICAgICBLZXlfUHJlc3MgPT4gOCwK ICAgICAgS2V5X1JlbGVhc2UgPT4gOSwKICAgICAgRW50ZXJfTm90aWZ5ID0+IDEwLAogICAgICBM ZWF2ZV9Ob3RpZnkgPT4gMTEsCiAgICAgIEZvY3VzX0NoYW5nZSA9PiAxMiwKICAgICAgQ29uZmln dXJlID0+IDEzLAogICAgICBNYXAgPT4gMTQsCiAgICAgIFVubWFwID0+IDE1LAogICAgICBQcm9w ZXJ0eV9Ob3RpZnkgPT4gMTYsCiAgICAgIFNlbGVjdGlvbl9DbGVhciA9PiAxNywKICAgICAgU2Vs ZWN0aW9uX1JlcXVlc3QgPT4gMTgsCiAgICAgIFNlbGVjdGlvbl9Ob3RpZnkgPT4gMTksCiAgICAg IFByb3hpbWl0eV9JbiA9PiAyMCwKICAgICAgUHJveGltaXR5X091dCA9PiAyMSwKICAgICAgRHJh Z19FbnRlciA9PiAyMiwKICAgICAgRHJhZ19MZWF2ZSA9PiAyMywKICAgICAgRHJhZ19Nb3Rpb24g PT4gMjQsCiAgICAgIERyYWdfU3RhdHVzID0+IDI1LAogICAgICBEcm9wX1N0YXJ0ID0+IDI2LAog ICAgICBEcm9wX0ZpbmlzaGVkID0+IDI3LAogICAgICBDbGllbnRfRXZlbnQgPT4gMjgsCiAgICAg IFZpc2liaWxpdHlfTm90aWZ5ID0+IDI5LAogICAgICBOb19FeHBvc2UgPT4gMzApOwoKICAgZm9y IEdka19JbnB1dF9Db25kaXRpb24gdXNlCiAgICAgKElucHV0X1JlYWQgICAgICA9PiAyICoqIDAs CiAgICAgIElucHV0X1dyaXRlICAgICA9PiAyICoqIDEsCiAgICAgIElucHV0X0V4Y2VwdGlvbiA9 PiAyICoqIDIpOwoKICAgZm9yIEdka19TdWJ3aW5kb3dfTW9kZSB1c2UgKENsaXBfQnlfQ2hpbGRy ZW4gID0+IDAsIEluY2x1ZGVfSW5mZXJpb3JzID0+IDEpOwoKICAgLS0gIFdhcm5pbmcgOiB0aGVz ZSB2YWx1ZXMgc2hvdWxkIGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZ2RrL2dkY3Vyc29ycy5o CiAgIC0tICA/Pz8gSG93ZXZlciwgc2luY2UgdGhlc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCBmcm9t IFhsaWIsIGl0IGlzIHVubGlrZWx5CiAgIC0tICB0aGF0IHRoZXkgd2lsbCBjaGFuZ2Ugc29vbi4K CiAgIGZvciBHZGtfQ3Vyc29yX1R5cGUgdXNlCiAgICAgKFhfQ3Vyc29yID0+IDAsCiAgICAgIEFy cm93ICAgID0+IDIsCiAgICAgIEJhc2VkX0Fycm93X0Rvd24gPT4gNCwKICAgICAgQmFzZWRfQXJy b3dfVXAgPT4gNiwKICAgICAgQm9hdCA9PiA4LAogICAgICBCb2dvc2l0eSA9PiAxMCwKICAgICAg Qm90dG9tX0xlZnRfQ29ybmVyID0+IDEyLAogICAgICBCb3R0b21fUmlnaHRfQ29ybmVyID0+IDE0 LAogICAgICBCb3R0b21fU2lkZSA9PiAxNiwKICAgICAgQm90dG9tX1RlZSA9PiAxOCwKICAgICAg Qm94X1NwaXJhbCA9PiAyMCwKICAgICAgQ2VudGVyX1B0ciA9PiAyMiwKICAgICAgQ2lyY2xlID0+ IDI0LAogICAgICBDbG9jayA9PiAyNiwKICAgICAgQ29mZmVlX011ZyA9PiAyOCwKICAgICAgQ3Jv c3MgPT4gMzAsCiAgICAgIENyb3NzX1JldmVyc2UgPT4gMzIsCiAgICAgIENyb3NzaGFpciA9PiAz NCwKICAgICAgRGlhbW9uZF9Dcm9zcyA9PiAzNiwKICAgICAgRG90ID0+IDM4LAogICAgICBEb3Ri b3ggPT4gNDAsCiAgICAgIERvdWJsZV9BcnJvdyA9PiA0MiwKICAgICAgRHJhZnRfTGFyZ2UgPT4g NDQsCiAgICAgIERyYWZ0X1NtYWxsID0+IDQ2LAogICAgICBEcmFwZWRfQm94ID0+IDQ4LAogICAg ICBFeGNoYW5nZSA9PiA1MCwKICAgICAgRmxldXIgPT4gNTIsCiAgICAgIEdvYmJsZXIgPT4gNTQs CiAgICAgIEd1bWJ5ID0+IDU2LAogICAgICBIYW5kMSA9PiA1OCwKICAgICAgSGFuZDIgPT4gNjAs CiAgICAgIEhlYXJ0ID0+IDYyLAogICAgICBJY29uID0+IDY0LAogICAgICBJcm9uX0Nyb3NzID0+ IDY2LAogICAgICBMZWZ0X1B0ciA9PiA2OCwKICAgICAgTGVmdF9TaWRlID0+IDcwLAogICAgICBM ZWZ0X1RlZSA9PiA3MiwKICAgICAgTGVmdGJ1dHRvbiA9PiA3NCwKICAgICAgTGxfQW5nbGUgPT4g NzYsCiAgICAgIExyX0FuZ2xlID0+IDc4LAogICAgICBNYW4gPT4gODAsCiAgICAgIE1pZGRsZWJ1 dHRvbiA9PiA4MiwKICAgICAgTW91c2UgPT4gODQsCiAgICAgIFBlbmNpbCA9PiA4NiwKICAgICAg UGlyYXRlID0+IDg4LAogICAgICBQbHVzID0+IDkwLAogICAgICBRdWVzdGlvbl9BcnJvdyA9PiA5 MiwKICAgICAgUmlnaHRfUHRyID0+IDk0LAogICAgICBSaWdodF9TaWRlID0+IDk2LAogICAgICBS aWdodF9UZWUgPT4gOTgsCiAgICAgIFJpZ2h0YnV0dG9uID0+IDEwMCwKICAgICAgUnRsX0xvZ28g PT4gMTAyLAogICAgICBTYWlsYm9hdCA9PiAxMDQsCiAgICAgIFNiX0Rvd25fQXJyb3cgPT4gMTA2 LAogICAgICBTYl9IX0RvdWJsZV9BcnJvdyA9PiAxMDgsCiAgICAgIFNiX0xlZnRfQXJyb3cgPT4g MTEwLAogICAgICBTYl9SaWdodF9BcnJvdyA9PiAxMTIsCiAgICAgIFNiX1VwX0Fycm93ID0+IDEx NCwKICAgICAgU2JfVl9Eb3VibGVfQXJyb3cgPT4gMTE2LAogICAgICBTaHV0dGxlID0+IDExOCwK ICAgICAgU2l6aW5nID0+IDEyMCwKICAgICAgU3BpZGVyID0+IDEyMiwKICAgICAgU3ByYXljYW4g PT4gMTI0LAogICAgICBTdGFyID0+IDEyNiwKICAgICAgVGFyZ2V0ID0+IDEyOCwKICAgICAgVGNy b3NzID0+IDEzMCwKICAgICAgVG9wX0xlZnRfQXJyb3cgPT4gMTMyLAogICAgICBUb3BfTGVmdF9D b3JuZXIgPT4gMTM0LAogICAgICBUb3BfUmlnaHRfQ29ybmVyID0+IDEzNiwKICAgICAgVG9wX1Np ZGUgPT4gMTM4LAogICAgICBUb3BfVGVlID0+IDE0MCwKICAgICAgVHJlayA9PiAxNDIsCiAgICAg IFVsX0FuZ2xlID0+IDE0NCwKICAgICAgVW1icmVsbGEgPT4gMTQ2LAogICAgICBVcl9BbmdsZSA9 PiAxNDgsCiAgICAgIFdhdGNoID0+IDE1MCwKICAgICAgWHRlcm0gPT4gMTUyKTsKCiAgIERlY29y X0FsbCAgICAgIDogY29uc3RhbnQgR2RrX1dtX0RlY29yYXRpb24gOj0gMiAqKiAwOwogICBEZWNv cl9Cb3JkZXIgICA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uIDo9IDIgKiogMTsKICAgRGVj b3JfUmVzaXplX0ggOiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbiA6PSAyICoqIDI7CiAgIERl Y29yX1RpdGxlICAgIDogY29uc3RhbnQgR2RrX1dtX0RlY29yYXRpb24gOj0gMiAqKiAzOwogICBE ZWNvcl9NZW51ICAgICA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uIDo9IDIgKiogNDsKICAg RGVjb3JfTWluaW1pemUgOiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbiA6PSAyICoqIDU7CiAg IERlY29yX01heGltaXplIDogY29uc3RhbnQgR2RrX1dtX0RlY29yYXRpb24gOj0gMiAqKiA2OwoK ICAgRnVuY19BbGwgICAgICA6IGNvbnN0YW50IEdka19XbV9GdW5jdGlvbiA6PSAyICoqIDA7CiAg IEZ1bmNfUmVzaXplICAgOiBjb25zdGFudCBHZGtfV21fRnVuY3Rpb24gOj0gMiAqKiAxOwogICBG dW5jX01vdmUgICAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uIDo9IDIgKiogMjsKICAgRnVu Y19NaW5pbWl6ZSA6IGNvbnN0YW50IEdka19XbV9GdW5jdGlvbiA6PSAyICoqIDM7CiAgIEZ1bmNf TWF4aW1pemUgOiBjb25zdGFudCBHZGtfV21fRnVuY3Rpb24gOj0gMiAqKiA0OwogICBGdW5jX0Ns b3NlICAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uIDo9IDIgKiogNTsKZW5kIEdkay5UeXBl czsKCi0tICBUaGUgZm9sbG93aW5nIHR5cGVzIHdlcmUgbm90IGJvdW5kIGJlY2F1c2UgaXQgZGlk IG5vdCBzZWVtCi0tICB0byBiZSBuZWNlc3NhcnkgKHlldCkuCi0tCi0tICArIEdka0NvbG9yQ29u dGV4dE1vZGUKLS0gICsgR2RrQ3Jvc3NpbmdNb2RlCi0tICArIEdka0ZpbHRlclJldHVybgotLSAg KyBHZGtGb250VHlwZQotLSAgKyBHZGtOb3RpZnlUeXBlCi0tICArIEdka1Byb3BlcnR5U3RhdGUK LS0gICsgR2RrU3RhdHVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1 IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTE5OTkgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNr ZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMg bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig ICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0t IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxv bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0t Ci0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3Bl Y2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20g IC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMg dG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBi eSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292 ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2Vw dGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRo ZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQ dWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgot LSAgVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggZXZlbnRzIGZy b20gdGhlIHdpbmRvdyBzeXN0ZW0uCi0tICBJbiBHdGtBZGEgYXBwbGljYXRpb25zLCB0aGUgZXZl bnRzIGFyZSBoYW5kbGVkIGF1dG9tYXRpY2FsbHkgaW4KLS0gIEd0ay5NYWluLkRvX0V2ZW50LCBh bmQgcGFzc2VkIG9uIHRvIHRoZSBhcHByb3ByaWF0ZSB3aWRnZXRzLCBzbyB0aGVzZQotLSAgZnVu Y3Rpb25zIGFyZSByYXJlbHkgbmVlZGVkLgotLQotLSAgISEgV2FybmluZyAhISBUaGlzIGlzIG9u ZSBvZiB0aGUgb25seSBwYWNrYWdlIHRoYXQgcmVxdWlyZXMgbWFudWFsCi0tICBtZW1vcnkgbWFu YWdlbWVudCBpbiBzb21lIGNhc2VzLiBJZiB5b3UgdXNlIHRoZSBmdW5jdGlvbiBBbGxvY2F0ZSwK LS0gIHlvdSBoYXZlIHRvIHVzZSB0aGUgZnVuY3Rpb24gRnJlZSB0b28uLi4KLS0gIDwvZGVzY3Jp cHRpb24+Cgp3aXRoIFN5c3RlbTsKd2l0aCBHbGliOyB1c2UgR2xpYjsKd2l0aCBHZGsuUmVjdGFu Z2xlOwp3aXRoIEdkay5UeXBlczsKd2l0aCBHZGsuV2luZG93OwoKcGFja2FnZSBHZGsuRXZlbnQg aXMKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgRGVmaW5pdGlvbiBv ZiB0aGUgdHlwZXMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICB0eXBl IEdka19FdmVudCBpcyBuZXcgR2RrLkNfUHJveHk7CgogICBzdWJ0eXBlIEdka19FdmVudF9Bbnkg aXMgR2RrX0V2ZW50OwogICAtLSAgQ2hhbmdlIGZyb20gR3RrQWRhMS4yLjM6IFRoZXJlIGlzIG5v IGxvbmdlciBhIHRhZ2dlZCB0eXBlCiAgIC0tICBoaWVyYXJjaHksIG9ubHkgb25lIHR5cGUuCiAg IC0tICBIb3dldmVyIHRoZXJlIGFyZSBub3cgYSBmZXcgcnVudGltZSB0ZXN0cyBmb3IgZWFjaCBv ZiB0aGUKICAgLS0gIGZ1bmN0aW9uLCB0byBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gZmllbGQgaXMg YXZhaWxhYmxlIG9yIG5vdC4KICAgLS0KICAgLS0gIEZpZWxkcyBjb21tb24gdG8gYWxsIGV2ZW50 czogV2luZG93LCBTZW5kX0V2ZW50LCBFdmVudF9UeXBlCgogICBzdWJ0eXBlIEdka19FdmVudF9C dXR0b24gaXMgR2RrX0V2ZW50OwogICAtLSAgQSBidXR0b24gd2FzIHByZXNzZWQgb3IgcmVsZWFz ZS4gUmVsZXZhbnQgZmllbGRzOgogICAtLSAgVGltZSwgWCwgWSwgUHJlc3N1cmUsIFh0aWx0LCBZ dGlsdCwgU3RhdGUsIEJ1dHRvbiwgU291cmNlLAogICAtLSAgRGV2aWNlX0lkLCBYX1Jvb3QsIFlf Um9vdCwgV2luZG93LgogICAtLSAgVHlwZTogQnV0dG9uX1ByZXNzLCBHZGtfMkJ1dHRvbl9QcmVz cywgR2RrXzNCdXR0b25fUHJlc3Mgb3IKICAgLS0gIEJ1dHRvbl9SZWxlYXNlLgoKICAgc3VidHlw ZSBHZGtfRXZlbnRfQ29uZmlndXJlIGlzIEdka19FdmVudDsKICAgLS0gIFRoZSB3aW5kb3cgY29u ZmlndXJhdGlvbiBoYXMgY2hhbmdlZDogZWl0aGVyIGl0IHdhcyByZW1hcHBlZCwKICAgLS0gIHJl c2l6ZWQsIG1vdmVkLCAuLi4KICAgLS0gIE5vdGUgdGhhdCB5b3UgdXN1YWxseSBkb24ndCBoYXZl IHRvIHJlZHJhdyB5b3VyIHdpbmRvdyB3aGVuIHlvdQogICAtLSAgcmVjZWl2ZSBzdWNoIGFuIGV2 ZW50LCBzaW5jZSBpdCBpcyBmb2xsb3dlZCBieSBhbiBHZGtfRXZlbnRfRXhwb3NlLgogICAtLSAg UmVsZXZhbnQgZmllbGRzOiBYLCBZLCBXaWR0aCwgSGVpZ2h0CiAgIC0tICBUeXBlOiBDb25maWd1 cmUKCiAgIHN1YnR5cGUgR2RrX0V2ZW50X0Nyb3NzaW5nIGlzIEdka19FdmVudDsKICAgLS0gIFRo ZSBtb3VzZSBoYXMgYmVlbiBtb3ZlZCBpbiBvciBvdXQgb2YgdGhlIHdpbmRvdwogICAtLSAgUmVs ZXZhbnQgZmllbGRzOiBUaW1lLCBTdWJXaW5kb3csIFgsIFksIFhfUm9vdCwgWV9Sb290LCBNb2Rl LAogICAtLSAgRGV0YWlsLCBGb2N1cywgU3RhdGUKICAgLS0gIFR5cGU6IEVudGVyX05vdGlmeSwg TGVhdmVfTm90aWZ5CgogICBzdWJ0eXBlIEdka19FdmVudF9FeHBvc2UgaXMgR2RrX0V2ZW50Owog ICAtLSAgVGhlIHdpbmRvdyBuZWVkcyB0byBiZSByZWRyYXduLiBGb3IgZWZmaWNpZW5jeSwgZ3Rr IGdpdmVzIHlvdSB0aGUKICAgLS0gIHNtYWxsZXN0IGFyZWEgdGhhdCB5b3UgbmVlZCB0byByZWRy YXcKICAgLS0gIFJlbGV2YW50IGZpZWxkczogQXJlYSwgQ291bnQsIEdyYXBoaWNzX0V4cG9zZQog ICAtLSAgVHlwZTogRXhwb3NlCgogICBzdWJ0eXBlIEdka19FdmVudF9Ob19FeHBvc2UgaXMgR2Rr X0V2ZW50OwogICAtLSAgSW5kaWNhdGUgdGhhdCB0aGUgc291cmNlIHJlZ2lvbiB3YXMgY29tcGxl dGVseSBhdmFpbGFibGUgd2hlbiBwYXJ0cyBvZgogICAtLSAgYSBkcmF3YWJsZSB3ZXJlIGNvcGll ZC4KICAgLS0gIFRoaXMgaXMgYWxzbyBlbWl0dGVkIHdoZW4gYSBnYyB3aG9zZSAiZXhwb3N1cmVz IiBhdHRyaWJ1dGUgaXMgc2V0IHRvCiAgIC0tICBGYWxzZSBpbiBhIGNhbGwgdG8gQ29weV9BcmVh IG9yIERyYXdfUGl4bWFwLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCiAgIC0tICBHZGsuR0Mu U2V0X0V4cG9zdXJlcy4KICAgLS0gIE5vIFJlbGV2ZW50IGZpZWxkcyBleGNlcHQgdGhlIGNvbW1v biBvbmVzCiAgIC0tICBUeXBlOiBOb19FeHBvc2UKCiAgIHN1YnR5cGUgR2RrX0V2ZW50X0ZvY3Vz IGlzIEdka19FdmVudDsKICAgLS0gIFRoZSBmb2N1cyBoYXMgY2hhbmdlZCBmb3IgYSB3aW5kb3cu CiAgIC0tICBSZWxldmFudCBmaWVsZHM6IGluCiAgIC0tICBUeXBlOiBGb2N1c19DaGFuZ2UKCiAg IHN1YnR5cGUgR2RrX0V2ZW50X01vdGlvbiBpcyBHZGtfRXZlbnQ7CiAgIC0tICBUaGUgbW91c2Ug aGFzIG1vdmVkCiAgIC0tICBSZWxldmFudCBmaWVsZHM6IFRpbWUsIFgsIFksIFByZXNzdXJlLCBY dGlsdCwgWXRpbHQsIFN0YXRlLAogICAtLSAgSXNfSGludCwgU291cmNlLCBEZXZpY2VfSWQsIFhf Um9vdCwgWV9Sb290CiAgIC0tICBUeXBlOiBNb3Rpb25fTm90aWZ5CgogICBzdWJ0eXBlIEdka19F dmVudF9LZXkgaXMgR2RrX0V2ZW50OwogICAtLSAgQSBrZXlib2FyZCBrZXkgd2FzIHByZXNzZWQK ICAgLS0gIFJlbGV2YW50IGZpZWxkczogVGltZSwgU3RhdGUsIEtleV9WYWwsIFN0cmluZwogICAt LSAgVHlwZTogS2V5X1ByZXNzLCBLZXlfUmVsZWFzZQoKICAgc3VidHlwZSBHZGtfRXZlbnRfUHJv cGVydHkgaXMgR2RrX0V2ZW50OwogICAtLSAgU29tZSBwcm9wZXJ0eSBvZiB0aGUgd2luZG93IHdh cyBtb2RpZmllZC4gR3RrQWRhIHByb3ZpZGVzIGEgaGlnaGVyCiAgIC0tICBsZXZlbCBpbnRlcmZh Y2UsIGFuZCB5b3UgYWxtb3N0IG5ldmVyIG5lZWQgdG8gdXNlIHRoaXMgZXZlbnQuCiAgIC0tICBS ZWxldmVudCBmaWVsZHM6IEF0b20sIFRpbWUsIFByb3BlcnR5X1N0YXRlCiAgIC0tICBUeXBlOiBQ cm9wZXJ0eV9Ob3RpZnkKCiAgIHN1YnR5cGUgR2RrX0V2ZW50X1Byb3hpbWl0eSBpcyBHZGtfRXZl bnQ7CiAgIC0tICBmcm9tIGd0ays6ICJUaGlzIGV2ZW50IHR5cGUgd2lsbCBiZSB1c2VkIHByZXR0 eSByYXJlbHkuIEl0IG9ubHkgaXMKICAgLS0gIGltcG9ydGFudCBmb3IgWElucHV0IGF3YXJlIHBy b2dyYW1zIHRoYXQgYXJlIGRyYXdpbmcgdGhlaXIgb3duCiAgIC0tICBjdXJzb3IiLiBUaGlzIGlz IG9ubHkgdXNlZCB3aXRoIG5vbiBzdGFuZGFyZCBpbnB1dCBkZXZpY2VzLCBsaWtlCiAgIC0tICBn cmFwaGljIHRhYmxldHMuCiAgIC0tICBSZWxldmFudCBmaWVsZHM6IFRpbWUsIFNvdXJjZSwgRGV2 aWNlX0lkCiAgIC0tICBUeXBlOiBQcm94aW1pdHlfSW4sIFByb3hpbWl0eV9PdXQKCiAgIHN1YnR5 cGUgR2RrX0V2ZW50X1Zpc2liaWxpdHkgaXMgR2RrX0V2ZW50OwogICAtLSAgVGhlIHZpc2liaWxp dHkgc3RhdGUgb2YgdGhlIHdpbmRvdyAocGFydGlhbGx5IHZpc2libHksIGZ1bGx5IHZpc2libGUs CiAgIC0tICBoaWRkZW4pLiBUaGlzIGV2ZW50IGFsbW9zdCBuZXZlciBuZWVkIHRvIGJlIHVzZWQs IHNpbmNlIG90aGVyIGV2ZW50cwogICAtLSAgYXJlIGdlbmVyYXRlZCBhdCB0aGUgc2FtZSB0aW1l LCBsaWtlIGV4cG9zZV9ldmVudHMKICAgLS0gIFJlbGV2YW50IGZpZWxkczogVmlzaWJpbGl0eV9T dGF0ZQogICAtLSAgdHlwZTogVmlzaWJpbGl0eV9Ob3RpZnkKCiAgIHN1YnR5cGUgR2RrX0V2ZW50 X1NlbGVjdGlvbiBpcyBHZGtfRXZlbnQ7CiAgIC0tICBUaGlzIGlzIGhvdyBYMTEgaW1wbGVtZW50 cyBhIHNpbXBsZSBjdXQtYW5kLXBhc3RlIG1lY2hhbmlzbS4gSG93ZXZlciwKICAgLS0gIEd0a0Fk YSBwcm92aWRlcyBhIGhpZ2hlciBsZXZlbCBpbnRlcmZhY2UgdG8gdGhlIHNlbGVjdGlvbiBtZWNo YW5pc20sCiAgIC0tICBzbyB0aGlzIGV2ZW50IHdpbGwgYWxtb3N0IG5ldmVyIGJlIHVzZWQuCiAg IC0tICBSZWxldmFudCBmaWVsZHM6IFNlbGVjdGlvbiwgVGFyZ2V0LCBQcm9wZXJ0eSwgUmVxdWVz dG9yLCBUaW1lCiAgIC0tICBUeXBlOiBTZWxlY3Rpb25fQ2xlYXIsIFNlbGVjdGlvbl9SZXF1ZXN0 LCBTZWxlY3Rpb25fTm90aWZ5CgogICBzdWJ0eXBlIEdka19FdmVudF9DbGllbnQgaXMgR2RrX0V2 ZW50OwogICAtLSAgVGhpcyBpcyBhbiBldmVudCB1c2VkIHRvIHNlbmQgYXJiaXRyYXJ5IGRhdGEg ZnJvbSBvbmUgWCBhcHBsaWNhdGlvbgogICAtLSAgdG8gYW5vdGhlci4gVGhpcyBldmVudCB0b28g aXMgYWxtb3N0IG5ldmVyIHVzZWQsIGFuZCBpcyBub3QgZG9jdW1lbnRlZAogICAtLSAgaGVyZS4g UGxlYXNlIGNvbnN1bHQgYW4gWDExIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24u CiAgIC0tICBSZWxldmFudCBmaWVsZHM6IE1lc3NhZ2VfVHlwZSwgRGF0YQogICAtLSAgVHlwZTog Q2xpZW50X0V2ZW50CgogICAtLSAgVGhlIGZvbGxvd2luZyBldmVudCB0eXBlcyBkbyBub3Qgc2Vl bSB0byBoYXZlIGFueSBhc3NvY2lhdGVkIHR5cGU6CiAgIC0tICBEZWxldGUsIERlc3Ryb3ksIE1h cCwgVW5tYXAsIERyYWdfRW50ZXIsIERyYWdfTGVhdmUsIERyYWdfTW90aW9uLAogICAtLSAgRHJh Z19TdGF0dXMsIERyYWdfU3RhcnQsIERyYWdfRmluaXNoZWQKCiAgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU3BlY2lmaWMgZGVmaW5pdGlvbiBmb3IgdGhl IGZpZWxkcyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgog ICB0eXBlIEdka19FdmVudF9DbGllbnRfRGF0YV9Gb3JtYXQgaXMKICAgICAoQ2hhcl9BcnJheSwg U2hvcnRfQXJyYXksIExvbmdfQXJyYXkpOwogICBmb3IgR2RrX0V2ZW50X0NsaWVudF9EYXRhX0Zv cm1hdCB1c2UKICAgICAoQ2hhcl9BcnJheSAgPT4gOCwgU2hvcnRfQXJyYXkgPT4gMTYsIExvbmdf QXJyYXkgID0+IDMyKTsKICAgLS0gIFZhbHVlcyBleHRyYWN0ZWQgZnJvbSB0aGUgWENsaWVudE1l c3NhZ2VFdmVudCBtYW4gcGFnZS4KCiAgIE51bWJlcl9PZl9DaGFyYWN0ZXJzIDogY29uc3RhbnQg Oj0gMjA7CiAgIE51bWJlcl9PZl9TaG9ydHMgICAgIDogY29uc3RhbnQgOj0gMTA7CiAgIE51bWJl cl9PZl9Mb25ncyAgICAgIDogY29uc3RhbnQgOj0gNTsKCiAgIHR5cGUgR2RrX0V2ZW50X0NsaWVu dF9EYXRhCiAgICAgKEZvcm1hdCA6IEdka19FdmVudF9DbGllbnRfRGF0YV9Gb3JtYXQpIGlzCiAg IHJlY29yZAogICAgICBjYXNlIEZvcm1hdCBpcwogICAgICAgICB3aGVuIENoYXJfQXJyYXkgPT4K ICAgICAgICAgICAgQiA6IFN0cmluZyAoMSAuLiBOdW1iZXJfT2ZfQ2hhcmFjdGVycyk7CiAgICAg ICAgIHdoZW4gU2hvcnRfQXJyYXkgPT4KICAgICAgICAgICAgUyA6IEdzaG9ydF9BcnJheSAoMSAu LiBOdW1iZXJfT2ZfU2hvcnRzKTsKICAgICAgICAgd2hlbiBMb25nX0FycmF5ID0+CiAgICAgICAg ICAgIEwgOiBHbG9uZ19BcnJheSAoMSAuLiBOdW1iZXJfT2ZfTG9uZ3MpOwogICAgICBlbmQgY2Fz ZTsKICAgZW5kIHJlY29yZDsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgIC0tIEFjY2VzcyB0byBmaWVsZHMgb2YgdGhlIGV2ZW50IC0tCiAgIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBJbnZhbGlkX0ZpZWxkIDogZXhjZXB0aW9uOwogICAt LSAgSWYgYSBmaWVsZCBkb2VzIG5vdCBleGlzdCBmb3IgdGhlIGV2ZW50IHlvdSBnYXZlLCBhbiBl eGNlcHRpb24KICAgLS0gIEludmFsaWRfRmllbGQgaXMgcmFpc2VkCgogICBmdW5jdGlvbiBHZXRf RXZlbnRfVHlwZSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBUeXBlcy5HZGtfRXZlbnRf VHlwZTsKICAgLS0gIFRoZSB0eXBlIG9mIHRoZSBldmVudC4KCiAgIGZ1bmN0aW9uIEdldF9TZW5k X0V2ZW50IChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBTZXQg dG8gdHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIGdlbmVyYXRlZCBieSB0aGUgYXBwbGljYXRpb24sIEZh bHNlCiAgIC0tICBpZiBnZW5lcmF0ZWQgYnkgdGhlIFggc2VydmVyL1dpbjMyLgoKICAgZnVuY3Rp b24gR2V0X1dpbmRvdyAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZGsuV2luZG93 Lkdka19XaW5kb3c7CiAgIC0tICBUaGUgd2luZG93IHRoZSBldmVudCBvY2N1cmVkIG9uLgoKICAg ZnVuY3Rpb24gR2V0X1RpbWUgICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHdWlu dDMyOwogICAtLSAgVGltZSB3aGVuIHRoZSBldmVudCBvY2N1cmVkLgoKICAgZnVuY3Rpb24gR2V0 X1ggICAgICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZG91YmxlOwogICAtLSAg SG9yaXpvbnRhbCBjb29yZGluYXRlIG9mIHRoZSBtb3VzZSB3aGVuIHRoZSBldmVudCBvY2N1cmVk LgogICAtLSAgVGhlIGNvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgcGFyZW50IHdpbmRv dy4KCiAgIGZ1bmN0aW9uIEdldF9ZICAgICAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1 cm4gR2RvdWJsZTsKICAgLS0gIFZlcnRpY2FsIGNvb3JkaW5hdGUgb2YgdGhlIG1vdXNlIHdoZW4g dGhlIGV2ZW50IG9jY3VyZWQuCiAgIC0tICBUaGUgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRv IHRoZSBwYXJlbnQgd2luZG93LgoKICAgZnVuY3Rpb24gR2V0X1hfUm9vdCAgICAoRXZlbnQgOiBp biBHZGtfRXZlbnQpIHJldHVybiBHZG91YmxlOwogICAtLSAgSG9yaXpvbnRhbCBjb29yZGluYXRl IG9mIHRoZSBtb3VzZSB3aGVuIHRoZSBldmVudCBvY2N1cmVkLgogICAtLSAgUmVsYXRpdmUgdG8g dGhlIHJvb3Qgd2luZG93LgoKICAgZnVuY3Rpb24gR2V0X1lfUm9vdCAgICAoRXZlbnQgOiBpbiBH ZGtfRXZlbnQpIHJldHVybiBHZG91YmxlOwogICAtLSAgVmVydGljYWwgY29vcmRpbmF0ZSBvZiB0 aGUgbW91c2Ugd2hlbiB0aGUgZXZlbnQgb2NjdXJlZC4KICAgLS0gIFJlbGF0aXZlIHRvIHRoZSBy b290IHdpbmRvdy4KCiAgIGZ1bmN0aW9uIEdldF9CdXR0b24gICAgKEV2ZW50IDogaW4gR2RrX0V2 ZW50KSByZXR1cm4gR3VpbnQ7CiAgIC0tICBOdW1iZXIgb2YgdGhlIGJ1dHRvbiB0aGF0IHdhcyBw cmVzc2VkLgoKICAgZnVuY3Rpb24gR2V0X1N0YXRlICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJf VHlwZTsKICAgLS0gIFN0YXRlIG9mIHRoZSBtb3VzZSBidXR0b25zIGFuZCBrZXlib2FyZCBrZXlz IGp1c3QgcHJpb3IgdG8gdGhlIGV2ZW50LgoKICAgZnVuY3Rpb24gR2V0X1N1YndpbmRvdyAoRXZl bnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAgIC0tICBD aGlsZCB3aW5kb3cgZm9yIHRoZSBldmVudC4KICAgLS0gIEZvciBhbiBFbnRlcl9Ob3RpZnlfRXZl bnQsIHRoaXMgaXMgc2V0IHRvIHRoZSBpbml0aWFsIHdpbmRvdyBmb3IgdGhlCiAgIC0tICBwb2lu dGVyOyBmb3IgYW4gTGVhdmVfTm90aWZ5X0V2ZW50IHRoaXMgaXMgc2V0IHRvIHRoZSB3aW5kb3cg b2NjdXBpZWQKICAgLS0gIGJ5IHRoZSBwb2ludGVyIGluIGl0cyBsYXN0IHBvc2l0aW9uLgoKICAg ZnVuY3Rpb24gR2V0X01vZGUgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RrLlR5cGVz Lkdka19Dcm9zc2luZ19Nb2RlOwogICAtLSAgUmV0dXJuIHRoZSBtb2RlIG9mIGFuIEV2ZW50Lgog ICAtLSAgU2V0IHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGV2ZW50cyBhcmUgbm9ybWFsIGV2ZW50 cywgcHNldWRvLW1vdGlvbgogICAtLSAgZXZlbnRzIHdoZW4gYSBncmFiIGFjdGl2YXRlcyBvciBw c2V1ZG8tbW90aW9uIGV2ZW50cyB3aGVuIGEgZ3JhYgogICAtLSAgZGVhdGl2YXRlcy4KCiAgIGZ1 bmN0aW9uIEdldF9EZXRhaWwgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RrLlR5cGVz Lkdka19Ob3RpZnlfVHlwZTsKICAgLS0gIFNldCB0byBpbmRpY2F0ZSB0aGUgbm90aWZ5IGRldGFp bHMuCiAgIC0tICBNb3N0IGFwcGxpY2F0aW9ucyBjYW4gaWdub3JlIGV2ZW50cyB3aXRoIGEgTm90 aWZ5IFZpcnR1YWwgb3IgYQogICAtLSAgTm90aWZ5X05vbl9MaW5lYXJfVmlydHVhbCBkZXRhaWwu CgogICBmdW5jdGlvbiBHZXRfRm9jdXMgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gQm9v bGVhbjsKICAgLS0gIFNldCB0byB0cnVlIGlmIHRoZSB3aW5kb3cgZm9yIHRoZSBldmVudCBpcyB0 aGUgZm9jdXMgd2luZG93LgoKICAgZnVuY3Rpb24gR2V0X1ByZXNzdXJlICAoRXZlbnQgOiBpbiBH ZGtfRXZlbnQpIHJldHVybiBHZG91YmxlOwogICAtLSAgVGhpcyBpcyBzZXQgdG8gYSBjb25zdGFu dCBpbiB0aGUgZ3RrKyBjb2RlIGl0c2VsZiwgc28gaXQKICAgLS0gIGlzIG1vc3QgcHJvYmFibHkg dXNlbGVzcy4uLiBJdHMgdmFsdWUgaXMgMC41LgogICAtLSAgSXQgaXMgb25seSB1c2VkIHdpdGgg c29tZSBzcGVjaWFsIGlucHV0IGRldmljZXMsIGxpa2UgZHJhd2luZwogICAtLSAgdGFibGV0cywu Li4KCiAgIGZ1bmN0aW9uIEdldF9YdGlsdCAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1 cm4gR2RvdWJsZTsKICAgLS0gIFRoaXMgaXMgc2V0IHRvIGEgY29uc3RhbnQgaW4gdGhlIGd0aysg Y29kZSBpdHNlbGYsIHNvIGl0CiAgIC0tICBpcyBtb3N0IHByb2JhYmx5IHVzZWxlc3MuLi4gSXRz IHZhbHVlIGlzIDAuMC4KICAgLS0gIEl0IGlzIG9ubHkgdXNlZCB3aXRoIHNvbWUgc3BlY2lhbCBp bnB1dCBkZXZpY2VzLCBsaWtlIGRyYXdpbmcKICAgLS0gIHRhYmxldHMsLi4uCgogICBmdW5jdGlv biBHZXRfWXRpbHQgICAgIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEdkb3VibGU7CiAg IC0tICBUaGlzIGlzIHNldCB0byBhIGNvbnN0YW50IGluIHRoZSBndGsrIGNvZGUgaXRzZWxmLCBz byBpdAogICAtLSAgaXMgbW9zdCBwcm9iYWJseSB1c2VsZXNzLi4uIEl0cyB2YWx1ZSBpcyAwLjAu CiAgIC0tICBJdCBpcyBvbmx5IHVzZWQgd2l0aCBzb21lIHNwZWNpYWwgaW5wdXQgZGV2aWNlcywg bGlrZSBkcmF3aW5nCiAgIC0tICB0YWJsZXRzLC4uLgoKICAgZnVuY3Rpb24gR2V0X1dpZHRoIChF dmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEdpbnQxNjsKICAgLS0gIEdldCB0aGUgd2lkdGgg aW4gYSBjb25maWd1cmUgZXZlbnQuCgogICBmdW5jdGlvbiBHZXRfSGVpZ2h0IChFdmVudCA6IGlu IEdka19FdmVudCkgcmV0dXJuIEdpbnQxNjsKICAgLS0gIEdldCB0aGUgaGVpZ2h0IGluIGEgY29u ZmlndXJlIGV2ZW50LgoKICAgZnVuY3Rpb24gR2V0X1NvdXJjZQogICAgIChFdmVudCA6IGluIEdk a19FdmVudCkgcmV0dXJuIEdkay5UeXBlcy5HZGtfSW5wdXRfU291cmNlOwogICAtLSAgU2V0IHRv IGEgY29uc3RhbnQgZm9yIG5vdyBpbiB0aGUgZ3RrKyBzb3VyY2UuLi4gUHJvYmFibHkgdXNlbGVz cy4KCiAgIGZ1bmN0aW9uIEdldF9EZXZpY2VfSWQKICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQp IHJldHVybiBHZGsuVHlwZXMuR2RrX0RldmljZV9JZDsKICAgLS0gIFNldCB0byBhIGNvbnN0YW50 IGZvciBub3cgaW4gdGhlIGd0aysgc291cmNlLi4uIFByb2JhYmx5IHVzZWxlc3MuCiAgIC0tICBT aW5jZSBtdWx0aXBsZSBpbnB1dCBkZXZpY2VzIGNhbiBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUs IGxpa2UgYSBtb3VzZQogICAtLSAgYW5kIGEgZ3JhcGhpYyB0YWJsZXQsIHRoaXMgaW5kaWNhdGVk IHdoaWNoIG9uZSBnZW5lcmF0ZWQgdGhlIGV2ZW50LgoKICAgZnVuY3Rpb24gR2V0X0FyZWEgKEV2 ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gUmVjdGFuZ2xlLkdka19SZWN0YW5nbGU7CiAgIC0t ICBUaGUgbWluaW1hbCBhcmVhIG9uIHdoaWNoIHRoZSBldmVudCBhcHBsaWVzLgogICAtLSAgRm9y IEV4cG9zZV9FdmVudHMsIHRoaXMgaXMgdGhlIG1pbmltYWwgYXJlYSB0byByZWRyYXcuCgogICBm dW5jdGlvbiBHZXRfQ291bnQgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2ludDsKICAg LS0gIE51bWJlciBvZiBFeHBvc2VfRXZlbnRzIHRoYXQgYXJlIHRvIGZvbGxvdyB0aGlzIG9uZS4K ICAgLS0gIE1vc3QgYXBwbGljYXRpb25zIGNhbiBpZ25vcmUgdGhlIGV2ZW50IGlmIENvdW50IGlz IG5vdCAwLCB3aGljaCBhbHNvCiAgIC0tICBhbGxvd3MgZm9yIG9wdGltaXphdGlvbnMuCgogICBm dW5jdGlvbiBHZXRfSW4gKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gQm9vbGVhbjsKICAg LS0gIFRydWUgaWYgdGhlIHdpbmRvdyBoYXMgZ2FpbmVkIHRoZSBmb2N1cywgRmFsc2Ugb3RoZXJ3 aXNlLgoKICAgZnVuY3Rpb24gR2V0X0lzX0hpbnQgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1 cm4gQm9vbGVhbjsKICAgLS0gID8/PwoKICAgZnVuY3Rpb24gR2V0X0tleV9WYWwgKEV2ZW50IDog aW4gR2RrX0V2ZW50KSByZXR1cm4gR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAgLS0gIENvZGUg b2YgdGhlIGtleSB0aGF0IHdhcyBwcmVzc2VkIChhbmQgdGhhdCBnZW5lcmF0ZWQgdGhlIGV2ZW50 LgoKICAgZnVuY3Rpb24gR2V0X1N0cmluZyAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4g U3RyaW5nOwogICAtLSAgU3ltYm9sIG9mIHRoZSBrZXkgdGhhdCB3YXMgcHJlc3NlZCwgYXMgYSBz dHJpbmcuCgogICBmdW5jdGlvbiBHZXRfQXRvbSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVy biBHZGsuVHlwZXMuR2RrX0F0b207CiAgIC0tICBJbmRpY2F0ZSB3aGljaCBwcm9wZXJ0eSBoYXMg Y2hhbmdlZC4KICAgLS0gID8/PyBBdG9tIHNob3VsZCBub3QgYmUgYSBHdWludAoKICAgZnVuY3Rp b24gR2V0X1Byb3BlcnR5X1N0YXRlIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEd1aW50 OwogICAtLSAgPz8/IFRoZSByZXR1cm4gdHlwZSBzaG91bGQgYmUgY2hhbmdlZC4KCiAgIGZ1bmN0 aW9uIEdldF9WaXNpYmlsaXR5X1N0YXRlCiAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1 cm4gR2RrLlR5cGVzLkdka19WaXNpYmlsaXR5X1N0YXRlOwogICAtLSAgUmV0dXJuIHRoZSBuZXcg dmlzaWJpbGl0eSBzdGF0ZSBmb3IgdGhlIHdpbmRvdy4KCiAgIGZ1bmN0aW9uIEdldF9TZWxlY3Rp b24gKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RrLlR5cGVzLkdka19BdG9tOwogICAt LSAgV2hhdCB3YXMgc2VsZWN0ZWQgaW4gdGhlIHdpbmRvdy4uLgoKICAgZnVuY3Rpb24gR2V0X1Rh cmdldCAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZGsuVHlwZXMuR2RrX0F0b207CiAg IC0tICA/Pz8KCiAgIGZ1bmN0aW9uIEdldF9Qcm9wZXJ0eSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQp IHJldHVybiBHZGsuVHlwZXMuR2RrX0F0b207CiAgIC0tICA/Pz8KCiAgIGZ1bmN0aW9uIEdldF9S ZXF1ZXN0b3IgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR3VpbnQzMjsKICAgLS0gID8/ PwoKICAgZnVuY3Rpb24gR2V0X01lc3NhZ2VfVHlwZSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJl dHVybiBHZGsuVHlwZXMuR2RrX0F0b207CiAgIC0tICA/Pz8KCiAgIGZ1bmN0aW9uIEdldF9EYXRh IChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEdka19FdmVudF9DbGllbnRfRGF0YTsKICAg LS0gID8/PwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0g TW9kaWZ5aW5nIHRoZSBmaWVsZHMgb2YgYW4gZXZlbnQgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfV2luZG93IChFdmVudCA6IGlu IEdka19FdmVudDsgV2luIDogR2RrLldpbmRvdy5HZGtfV2luZG93KTsKICAgLS0gIFNldCB0aGUg V2luZG93IGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9YICAgICAgKEV2ZW50 IDogaW4gR2RrX0V2ZW50OyBYIDogR2RvdWJsZSk7CiAgIC0tICBTZXQgdGhlIFggZmllbGQgb2Yg YW4gZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X1kgICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7 IFkgOiBHZG91YmxlKTsKICAgLS0gIFNldCB0aGUgWSBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHBy b2NlZHVyZSBTZXRfWHJvb3QgIChFdmVudCA6IGluIEdka19FdmVudDsgWHJvb3QgOiBHZG91Ymxl KTsKICAgLS0gIFNldCB0aGUgWHJvb3QgZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUg U2V0X1lyb290ICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IFlyb290IDogR2RvdWJsZSk7CiAgIC0t ICBTZXQgdGhlIFlyb290IGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9XaWR0 aCAgKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBXaWR0aCA6IEdpbnQxNik7CiAgIC0tICBTZXQgdGhl IFdpZHRoIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9IZWlnaHQgKEV2ZW50 IDogaW4gR2RrX0V2ZW50OyBIZWlnaHQgOiBHaW50MTYpOwogICAtLSAgU2V0IHRoZSBIZWlnaHQg ZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X0J1dHRvbiAoRXZlbnQgOiBpbiBH ZGtfRXZlbnQ7IEJ1dHRvbiA6IEd1aW50KTsKICAgLS0gIFNldCB0aGUgQnV0dG9uIGZpZWxkIG9m IGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9UaW1lIChFdmVudCA6IGluIEdka19FdmVudDsg VGltZSA6IEd1aW50MzIpOwogICAtLSAgU2V0IHRoZSB0aW1lIGZvciB0aGUgZXZlbnQuCiAgIC0t ICBJZiBUaW1lIGlzIDAsIHRoZW4gaXQgaXMgc2V0IHRvIHRoZSBjdXJyZW50IHRpbWUuCgogICBw cm9jZWR1cmUgU2V0X1N0YXRlICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7CiAgICAgICAgICAgICAg ICAgICAgICAgICBTdGF0ZSA6IGluIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSk7CiAgIC0t ICBTZXQgdGhlIFN0YXRlIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9TdWJ3 aW5kb3cgKEV2ZW50ICA6IGluIEdka19FdmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IFdpbmRvdyA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdyk7CiAgIC0tICBTZXQgdGhlIFN1Yndp bmRvdyBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfTW9kZSAgIChFdmVudCA6 IGluIEdka19FdmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUgIDogaW4gR2RrLlR5 cGVzLkdka19Dcm9zc2luZ19Nb2RlKTsKICAgLS0gIFNldCB0aGUgTW9kZSBmaWVsZCBvZiBhbiBl dmVudC4KCiAgIHByb2NlZHVyZSBTZXRfRGV0YWlsIChFdmVudCAgOiBpbiBHZGtfRXZlbnQ7CiAg ICAgICAgICAgICAgICAgICAgICAgICBEZXRhaWwgOiBpbiBHZGsuVHlwZXMuR2RrX05vdGlmeV9U eXBlKTsKICAgLS0gIFNldCB0aGUgRGV0YWlsIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2Vk dXJlIFNldF9Gb2N1cyAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IEhhc19Gb2N1cyA6IEJvb2xlYW4p OwogICAtLSAgU2V0IHRoZSBGb2N1cyBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBT ZXRfQXJlYSAgKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBBcmVhIDogUmVjdGFuZ2xlLkdka19SZWN0 YW5nbGUpOwogICAtLSAgU2V0IHRoZSBBcmVhIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2Vk dXJlIFNldF9JbiAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IEZvY3VzX0luIDogQm9vbGVhbik7 CiAgIC0tICBTZXQgdGhlIEluIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9J c19IaW50IChFdmVudCA6IGluIEdka19FdmVudDsgSXNfSGludCA6IEJvb2xlYW4pOwogICAtLSAg U2V0IHRoZSBJc19IaW50IGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9LZXlf VmFsIChFdmVudCA6IGluIEdka19FdmVudDsgS2V5IDogR2RrLlR5cGVzLkdka19LZXlfVHlwZSk7 CiAgIC0tICBTZXQgdGhlIEtleV9WYWwgZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUg U2V0X0F0b20gKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBBdG9tIDogR2RrLlR5cGVzLkdka19BdG9t KTsKICAgLS0gIFNldCB0aGUgQXRvbSBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBT ZXRfUHJvcGVydHlfU3RhdGUgKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBTdGF0ZSA6IEd1aW50KTsK ICAgLS0gIFNldCB0aGUgUHJvcGVydHlfU3RhdGUgZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9j ZWR1cmUgU2V0X1Zpc2liaWxpdHlfU3RhdGUgKEV2ZW50IDogaW4gR2RrX0V2ZW50OwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlIDogR2RrLlR5cGVzLkdka19WaXNpYmls aXR5X1N0YXRlKTsKICAgLS0gIFNldCB0aGUgVmlzaWJpbGl0eV9TdGF0ZSBmaWVsZCBvZiBhbiBl dmVudC4KCiAgIHByb2NlZHVyZSBTZXRfU2VsZWN0aW9uIChFdmVudCA6IGluIEdka19FdmVudDsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbiA6IEdkay5UeXBlcy5HZGtfQXRv bSk7CiAgIC0tICBTZXQgdGhlIFNlbGVjdGlvbiBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2Nl ZHVyZSBTZXRfVGFyZ2V0IChFdmVudCA6IGluIEdka19FdmVudDsgVGFyZ2V0IDogR2RrLlR5cGVz Lkdka19BdG9tKTsKICAgLS0gIFNldCB0aGUgVGFyZ2V0IGZpZWxkIG9mIGFuIGV2ZW50LgoKICAg cHJvY2VkdXJlIFNldF9Qcm9wZXJ0eSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgIFByb3BlcnR5IDogR2RrLlR5cGVzLkdka19BdG9tKTsKICAgLS0gIFNl dCB0aGUgUHJvcGVydHkgZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X1JlcXVl c3RvciAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IFJlcXVlc3RvciA6IEd1aW50MzIpOwogICAtLSAg U2V0IHRoZSBSZXF1ZXN0b3IgZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X01l c3NhZ2VfVHlwZSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IFR5cCA6IEdkay5UeXBlcy5HZGtfQXRv bSk7CiAgIC0tICBTZXQgdGhlIE1lc3NhZ2VfVHlwZSBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHBy b2NlZHVyZSBTZXRfU3RyaW5nIChFdmVudCA6IGluIEdka19FdmVudDsgU3RyIDogU3RyaW5nKTsK ICAgLS0gIFNldCB0aGUgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCBhbiBldmVudC4KCiAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEdlbmVyYWwgZnVuY3Rpb25zIC0tCiAgIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgRGVlcF9Db3B5IChGcm9tIDogR2RrX0V2ZW50 OyBUbyA6IG91dCBHZGtfRXZlbnQpOwogICAtLSAgRGVlcCBjb3B5IGZvciBhbiBldmVudC4gVGhl IEMgc3RydWN0dXJlIGlzIGl0c2VsZiBkdXBsaWNhdGVkLgogICAtLSAgWW91IG5lZWQgdG8gZGVh bGxvY2F0ZWQgaXQgeW91cnNlbGYgd2l0aCBhIGNhbGwgdG8gRnJlZSBiZWxvdy4KCiAgIHByb2Nl ZHVyZSBHZXRfR3JhcGhpY3NfRXhwb3NlCiAgICAgKEV2ZW50ICA6IG91dCBHZGtfRXZlbnRfRXhw b3NlOwogICAgICBXaW5kb3cgOiBpbiBHZGsuV2luZG93Lkdka19XaW5kb3cpOwogICAtLSAgV2Fp dHMgZm9yIGEgR3JhcGhpY3NFeHBvc2Ugb3IgTm9FeHBvc2UgZXZlbnQKICAgLS0gIElmIGl0IGdl dHMgYSBHcmFwaGljc0V4cG9zZSBldmVudCwgaXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gaXQsCiAg IC0tICBvdGhlcndpc2UgaXQgcmV0dXJucyBhbiBldmVudCBmb3Igd2hpY2ggSXNfQ3JlYXRlZCBp cyBGYWxzZS4KICAgLS0KICAgLS0gIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gaW1wbGVt ZW50IHNjcm9sbGluZzogeW91IG11c3QgY2FsbAogICAtLSAgR2RrLkdDLlNldF9FeHBvc3VyZXMg d2l0aCBUcnVlIG9uIHRoZSBHQyB5b3UgYXJlIHVzaW5nIGZvciB0aGUKICAgLS0gIGRyYXdpbmcs IHNvIHRoYXQgYSBldmVudHMgYXJlIGdlbmVyYXRlZCBmb3Igb2JzY3VyZWQgYXJlYXMgYW5kIGV2 ZXJ5CiAgIC0tICB0aW1lIGEgbmV3IHBhcnQgb2YgdGhlIHdpZGdldCBpcyBkcmF3bi4gSG93ZXZl ciwgdGhlcmUgaXMgYSByYWNlCiAgIC0tICBjb25kaXRpb24gaWYgbXVsdGlwbGUgc2Nyb2xscyBo YXBwZW4gYmVmb3JlIHlvdSBoYXZlIGZpbmlzaGVkCiAgIC0tICBwcm9jZXNzaW5nIHRoZSBmaXJz dCBvbmUuIEEgd29ya2Fyb3VuZCBpcyB0byBjYWxsIEdldF9HcmFwaGljc19FeHBvc2UKICAgLS0g IGFmdGVyIGV2ZXJ5IHNjcm9sbCB1bnRpbCBpdCByZXR1cm5zIGEgbnVsbCBldmVudC4KCiAgIGZ1 bmN0aW9uIEV2ZW50c19QZW5kaW5nIHJldHVybiBCb29sZWFuOwogICAtLSAgSXMgdGhlcmUgYW55 IGV2ZW50IHBlbmRpbmcgb24gdGhlIHF1ZXVlID8KCiAgIHByb2NlZHVyZSBHZXQgKEV2ZW50IDog b3V0IEdka19FdmVudCk7CiAgIC0tICBHZXQgdGhlIG5leHQgZXZlbnQgb24gdGhlIHF1ZXVlLgoK ICAgcHJvY2VkdXJlIFBlZWsgKEV2ZW50IDogb3V0IEdka19FdmVudCk7CiAgIC0tICBMb29rIGF0 IHRoZSBuZXh0IGV2ZW50IG9uIHRoZSBxdWV1ZSwgYnV0IGxlYXZlIGlmIHRoZXJlLgoKICAgcHJv Y2VkdXJlIFB1dCAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpOwogICAtLSAgQWRkIGFuIGV2ZW50IG9u IHRoZSBxdWV1ZSAtIEJldHRlciB0byB1c2UgR3RrLlNpZ25hbC5FbWl0X0J5X05hbWUKCiAgIHBy b2NlZHVyZSBTZXRfU2hvd19FdmVudHMgKFNob3dfRXZlbnRzIDogaW4gQm9vbGVhbiA6PSBUcnVl KTsKICAgLS0gIEZvciBkZWJ1ZyBwdXJwb3NlcywgeW91IGNhbiBjaG9vc2Ugd2hldGhlciB5b3Ug d2FudCB0byBzZWUgdGhlIGV2ZW50cwogICAtLSAgR3RrQWRhIHJlY2VpdmVzLgoKICAgZnVuY3Rp b24gR2V0X1Nob3dfRXZlbnRzIHJldHVybiBCb29sZWFuOwogICAtLSAgUmV0dXJuIHRoZSBjdXJy ZW50IHN0YXRlIG9mIFNob3dfRXZlbnRzLgoKICAgcHJvY2VkdXJlIFNlbmRfQ2xpZW50X01lc3Nh Z2VfVG9fQWxsIChFdmVudCA6IGluIEdka19FdmVudCk7CiAgIC0tICBMb3cgbGV2ZWwgcm91dGlu ZSB0byBzZW5kIGFuIEV2ZW50IHRvIGV2ZXJ5IHdpbmRvdy4KCiAgIGZ1bmN0aW9uIFNlbmRfQ2xp ZW50X01lc3NhZ2UKICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7CiAgICAgIFhpZCAgIDogaW4g R3VpbnQzMikgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBMb3cgbGV2ZWwgcm91dGluZSB0byBzZW5k IGFuIEV2ZW50IHRvIGEgc3BlY2lmaWVkIFggd2luZG93LgoKICAgcHJvY2VkdXJlIEFsbG9jYXRl CiAgICAgKEV2ZW50ICAgICAgOiBvdXQgR2RrX0V2ZW50OwogICAgICBFdmVudF9UeXBlIDogaW4g VHlwZXMuR2RrX0V2ZW50X1R5cGU7CiAgICAgIFdpbmRvdyAgICAgOiBpbiBHZGsuV2luZG93Lkdk a19XaW5kb3cpOwogICAtLSAgQ3JlYXRlIGFuIGV2ZW50LCB3aG9zZSBmaWVsZHMgYXJlIHVuaW5p dGlhbGl6ZWQuCiAgIC0tICBZb3UgbmVlZCB0byB1c2UgdGhlIGZ1bmN0aW9uIFNldF8qIGFib3Zl IHRvIG1vZGlmeSB0aGVtLCBiZWZvcmUgeW91IGNhbgogICAtLSAgc2VuZCB0aGUgZXZlbnQgd2l0 aCBFbWl0X0J5X05hbWUuCiAgIC0tICAhIU5vdGUhITogVGhlIGV2ZW50IGhhcyB0byBiZSBmcmVl ZCBpZiB5b3UgaGF2ZSBjYWxsZWQgdGhpcyBmdW5jdGlvbi4KICAgLS0gIFVzZSB0aGUgZnVuY3Rp b24gRnJlZS4KCiAgIHByb2NlZHVyZSBGcmVlIChFdmVudCA6IGluIG91dCBHZGtfRXZlbnQpOwog ICAtLSAgRnJlZSB0aGUgbWVtb3J5IChhbmQgQyBzdHJ1Y3R1cmUpIGFzc29jaWF0ZWQgd2l0aCBh biBldmVudC4KICAgLS0gIFlvdSBuZWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBvbmx5IGlmIHRo ZSBldmVudCB3YXMgY3JlYXRlZCB0aHJvdWdoCiAgIC0tICBBbGxvY2F0ZSwgbm90IGlmIGl0IHdh cyBjcmVhdGVkIGJ5IEd0a0FkYSBpdHNlbGYgKG9yIHlvdSB3b3VsZCBnZXQKICAgLS0gIGEgc2Vn bWVudGF0aW9uIGZhdWx0KS4KCiAgIHR5cGUgRXZlbnRfSGFuZGxlcl9GdW5jIGlzIGFjY2VzcyBw cm9jZWR1cmUKICAgICAoRXZlbnQgOiBTeXN0ZW0uQWRkcmVzczsgRGF0YSA6IFN5c3RlbS5BZGRy ZXNzKTsKICAgLS0gIEZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBuZXcgZXZlbnQgaGFu ZGxlci4KICAgLS0gIFVzZSBGcm9tX0FkZHJlc3MgYmVsb3cgdG8gY29udmVydCB0byBhIHJlYWwg ZXZlbnQgdHlwZS4KICAgLS0gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGRpc3BhdGNoIGFsbCB0aGUg ZXZlbnRzIHByb3Blcmx5LCBzaW5jZSBpdCByZXBsYWNlcwogICAtLSAgY29tcGxldGx5IHRoZSBk ZWZhdWx0IGV2ZW50IGhhbmRsZXIuIEhvd2V2ZXIsIGl0IGNhbiBjYWxsCiAgIC0tICBHdGsuTWFp bi5Eb19FdmVudCB0byB0YWtlIGNhcmUgb2YgdGhlIGV2ZW50cyBpdCBkb2VzIG5vdCBrbm93IGhv dyB0bwogICAtLSAgaGFuZGxlLgoKICAgcHJvY2VkdXJlIEV2ZW50X0hhbmRsZXJfU2V0CiAgICAg KEZ1bmMgOiBFdmVudF9IYW5kbGVyX0Z1bmM7IERhdGEgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgIC0t ICBTZXQgdXAgYSBuZXcgZXZlbnQgaGFuZGxlci4KICAgLS0gIFRoaXMgaGFuZGxlciByZXBsYWNl cyB0aGUgZGVmYXVsdCBHdGtBZGEgZXZlbnQgaGFuZGxlciwgYW5kIHRodXMgc2hvdWxkCiAgIC0t ICBtYWtlIHN1cmUgdGhhdCBhbGwgZXZlbnRzIGFyZSBjb3JyZWN0bHkgaGFuZGxlZC4KICAgLS0K ICAgLS0gIE5vdGUgdGhhdCBtYW5hZ2luZyB0aGUgbWVtb3J5IGZvciBEYXRhIGlzIHlvdXIgcmVz cG9uc2FiaWxpdHksIGFuZAogICAtLSAgRGF0YSBpcyBwYXNzZWQgYXMgaXMgdG8gRnVuYy4KCiAg IGZ1bmN0aW9uIEZyb21fQWRkcmVzcyAoQyA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gR2RrX0V2 ZW50OwogICAtLSAgQ29udmVydCBhIEMgaGFuZGxlciB0byB0aGUgbWF0Y2hpbmcgRXZlbnQgc3Ry dWN0dXJlLgoKICAgZnVuY3Rpb24gVG9fQWRkcmVzcyAoQyA6IEdka19FdmVudCkgcmV0dXJuIFN5 c3RlbS5BZGRyZXNzOwogICAtLSAgQ29udmVydCBhbiBldmVudCB0byB0aGUgdW5kZXJseWluZyBD IGhhbmRsZXIuCgogICBmdW5jdGlvbiBJc19DcmVhdGVkIChFIDogR2RrX0V2ZW50KSByZXR1cm4g Qm9vbGVhbjsKICAgLS0gIFJldHVybiBUcnVlIGlmIHRoZSB1bmRlcmx5aW5nIEMgZXZlbnQgaGFz IGJlZW4gY3JlYXRlZC4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gRGVzaWduIGlzc3Vl cyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tICBTZWUgZ2RrLWV2ZW50LmFkYiBmb3Ig c29tZSBvZiB0aGUgZGVzaWduIGlzc3VlcyBiZWhpbmcgdGhhdCBwYWNrYWdlLgoKcHJpdmF0ZQog ICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfRXZlbnRfVHlwZSwgImFkYV9nZGtfZXZlbnRfZ2V0X3R5 cGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1dpbmRvdywgImFkYV9nZGtfZXZlbnRfZ2V0 X3dpbmRvdyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfVGltZSwgImdka19ldmVudF9nZXRf dGltZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBQdXQsICJnZGtfZXZlbnRfcHV0Iik7CiAgIHBy YWdtYSBJbXBvcnQKICAgICAoQywgU2VuZF9DbGllbnRfTWVzc2FnZV9Ub19BbGwsICJnZGtfZXZl bnRfc2VuZF9jbGllbnRtZXNzYWdlX3RvYWxsIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9X aW5kb3csICJhZGFfZ2RrX2V2ZW50X3NldF93aW5kb3ciKTsKCmVuZCBHZGsuRXZlbnQ7Ci0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1w IFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAg ICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTE5OTkgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t ICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0 ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0t Ci0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAg IC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7 IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90 aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3Ig eW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0t IGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSBy ZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVy IGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUg ZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0t Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgp3aXRoIEdsaWI7IHVzZSBHbGliOwoKcGFja2FnZSBHZGsuUmVjdGFu Z2xlIGlzCgogICB0eXBlIEdka19SZWN0YW5nbGUgaXMgcmVjb3JkCiAgICAgIFggICAgICA6IEdp bnQxNjsKICAgICAgWSAgICAgIDogR2ludDE2OwogICAgICBXaWR0aCAgOiBHdWludDE2OwogICAg ICBIZWlnaHQgOiBHdWludDE2OwogICBlbmQgcmVjb3JkOwogICBwcmFnbWEgUGFjayAoR2RrX1Jl Y3RhbmdsZSk7CgogICBGdWxsX0FyZWEgOiBjb25zdGFudCBHZGtfUmVjdGFuZ2xlOwogICAtLSAg VGhlIGNvbnN0YW50IGFib3ZlIGNhbiBiZSB1c2VkIGluIEd0ay5XaWRnZXQuRHJhdyB3aGVuIHlv dSB3YW50IHRvCiAgIC0tICByZWRyYXcgdGhlIHdob2xlIHdpZGdldAoKICAgcHJvY2VkdXJlIElu dGVyc2VjdAogICAgIChTcmMxICAgICAgOiBpbiAgICAgR2RrX1JlY3RhbmdsZTsKICAgICAgU3Jj MiAgICAgIDogaW4gICAgIEdka19SZWN0YW5nbGU7CiAgICAgIERlc3QgICAgICA6ICAgIG91dCBH ZGtfUmVjdGFuZ2xlOwogICAgICBJbnRlcnNlY3QgOiAgICBvdXQgQm9vbGVhbik7CgogICBwcm9j ZWR1cmUgVW5pb24KICAgICAoU3JjMSA6IGluICAgICBHZGtfUmVjdGFuZ2xlOwogICAgICBTcmMy IDogaW4gICAgIEdka19SZWN0YW5nbGU7CiAgICAgIERlc3QgOiAgICBvdXQgR2RrX1JlY3Rhbmds ZSk7Cgpwcml2YXRlCgogICBGdWxsX0FyZWEgOiBjb25zdGFudCBHZGtfUmVjdGFuZ2xlIDo9CiAg ICAgKEdpbnQxNidGaXJzdCwgR2ludDE2J0ZpcnN0LCBHdWludDE2J0xhc3QsIEd1aW50MTYnTGFz dCk7CgplbmQgR2RrLlJlY3RhbmdsZTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRh IC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAw MCAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2Vs IEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAg LS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGlj ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAg ICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g QXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJp Y3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhl ciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9l cyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0 byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0K LS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29u cyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRo ZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICBBIEdka19X aW5kb3cgaXMgdGhlIHBoeXNpY2FsIHdpbmRvdyB0aGF0IGFwcGVhcnMgb24gdGhlIHNjcmVlbi4K LS0gIFRoaXMgaXMgdGhlIGxvdy1sZXZlbCBzdHJ1Y3R1cmUga25vd24gdG8gdGhlIFggc2VydmVy IG9yIHRvIFdpbjMyLgotLSAgQWxsIHRoZSB3aWRnZXRzIGFyZSBpbnRlcm5hbGx5IGFzc29jaWF0 ZWQgd2l0aCBhIHNwZWNpZmljIEdka19XaW5kb3csCi0tICB0aGF0IGhvbGRzIGF0dHJpYnV0ZXMg c3VjaCBhcyB0aGUgd2luZG93IGRlY29yYXRpb24sIHdoZXRoZXIgdGhlIHdpbmRvdwotLSAgY2Fu IGJlIGludGVyYWN0aXZlbHkgcmVzaXplZCwuLi4KLS0KLS0gIE9uIHNvbWUgc3lzdGVtcywgdGhl IGdyYXBoaWMgc2VydmVyIGtub3dzIGhvdyB0byBkaXNwbGF5IG5vbi1yZWN0YW5ndWxhcgotLSAg d2luZG93cyAodGhpcyBpcyBwYXJ0IG9mIHRoZSBYIGV4dGVuc2lvbnMpLgotLQotLSAgSWYgeW91 IHNpbXBseSB3YW50IHRvIGNyZWF0ZSBhIHNpbXBseSB3aW5kb3csIHlvdSBzaG91bGQgaW5zdGVh ZCBsb29rCi0tICBhdCB0aGUgZnVuY3Rpb25zIHByb3ZpZGVkIGluIEd0ay5XaW5kb3cgYW5kIEd0 ay5XaWRnZXQsIHdoaWNoIGFyZSBoaWdoZXIKLS0gIGxldmVsIHRoYW4gdGhlc2UuIFNlZSBhbHNv IHRoZSBmdW5jdGlvbiBHdGsuV2lkZ2V0LkdldF9XaW5kb3cgdG8gZ2V0IHRoZQotLSAgR2RrX1dp bmRvdyBhc3NvY2lhdGVkIHdpdGggYSB3aWRnZXQuIEJlIGF3YXJlIHRoYXQgc29tZSBvZiB0aGVt IGRvbid0IGhhdmUKLS0gIHN1Y2ggd2luZG93cyEKLS0KLS0gIFNjcm9sbGluZyBjYW4gYmUgaW1w bGVtZW50ZWQgaW4gc2V2ZXJhbCB3YXlzIHdpdGggR3RrQWRhICh0b3BsZXZlbAotLSAgc2Nyb2xs aW5nIHNob3VsZCBiZSBkb25lIHdpdGggdGhlIEd0a19TY3JvbGxlZF9XaW5kb3cgd2lkZ2V0LCBi dXQgeW91Ci0tICBtaWdodCB3YW50IHRvIGhhbmRsZSBzY3JvbGxpbmcgeW91cnNlbGYpLiBTZWUg dGhlIGZ1bmN0aW9uCi0tICBHZGsuRXZlbnQuR2V0X0dyYXBoaWNzX0V4cG9zZSBmb3IgbW9yZSBp bmZvcm1hdGlvbi4KLS0gIDxjX3ZlcnNpb24+MS4yLjc8L2NfdmVyc2lvbj4KCndpdGggU3lzdGVt Owp3aXRoIEdsaWI7IHVzZSBHbGliOwp3aXRoIEdsaWIuR2xpc3Q7CndpdGggR2RrOwp3aXRoIEdk ay5Db2xvcjsKd2l0aCBHZGsuQ3Vyc29yOwp3aXRoIEdkay5UeXBlczsKd2l0aCBHZGsuVmlzdWFs Owp3aXRoIEdkay5XaW5kb3dfQXR0cjsKd2l0aCBVbmNoZWNrZWRfQ29udmVyc2lvbjsKCnBhY2th Z2UgR2RrLldpbmRvdyBpcwoKICAgc3VidHlwZSBHZGtfV2luZG93IGlzIEdkay5HZGtfV2luZG93 OwoKICAgTnVsbF9XaW5kb3cgOiBjb25zdGFudCBHZGtfV2luZG93OwoKICAgcHJvY2VkdXJlIEdk a19OZXcKICAgICAoV2luZG93ICAgICAgICAgIDogb3V0IEdka19XaW5kb3c7CiAgICAgIFBhcmVu dCAgICAgICAgICA6IEdka19XaW5kb3c7CiAgICAgIEF0dHJpYnV0ZXMgICAgICA6IEdkay5XaW5k b3dfQXR0ci5HZGtfV2luZG93X0F0dHI7CiAgICAgIEF0dHJpYnV0ZXNfTWFzayA6IEdkay5UeXBl cy5HZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZSk7CgogICBwcm9jZWR1cmUgRm9yZWlnbl9OZXcg KFdpbmRvdyA6IG91dCBHZGtfV2luZG93OyBBbl9JZCA6IEd1aW50MzIpOwoKICAgcHJvY2VkdXJl IERlc3Ryb3kgKFdpbmRvdyA6IGluIG91dCBHZGtfV2luZG93KTsKICAgLS0gIERlc3Ryb3kgYSB3 aW5kb3cgYW5kIGFsbCBpdHMgY2hpbGRyZW4uCgogICBwcm9jZWR1cmUgUmVmIChXaW5kb3cgOiBH ZGtfV2luZG93KTsKICAgLS0gIEluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgYXNzb2Np YXRlZCB3aXRoIHdpbmRvdy4KCiAgIHByb2NlZHVyZSBVbnJlZiAoV2luZG93IDogR2RrX1dpbmRv dyk7CiAgIC0tICBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGFzc29jaWF0ZWQgd2l0 aCB3aW5kb3cuCgogICBwcm9jZWR1cmUgV2luZG93X0F0X1BvaW50ZXIKICAgICAoV2luX1ggIDog b3V0IEdpbnQ7CiAgICAgIFdpbl9ZICA6IG91dCBHaW50OwogICAgICBXaW5kb3cgOiBvdXQgR2Rr X1dpbmRvdyk7CiAgIC0tICBSZXR1cm4gdGhlIHdpbmRvdyBhbmQgdGhlIGNvb3JkaW5hdGVzIGNv cnJlc3BvbmRpbmcgdG8gdGhlIGN1cnJlbnQKICAgLS0gIHBvc2l0aW9uIG9mIHRoZSBjdXJzb3Iu CgogICBwcm9jZWR1cmUgU2hvdyAoV2luZG93IDogR2RrX1dpbmRvdyk7CgogICBwcm9jZWR1cmUg SGlkZSAoV2luZG93IDogR2RrX1dpbmRvdyk7CgogICBwcm9jZWR1cmUgV2l0aGRyYXcgKFdpbmRv dyA6IEdka19XaW5kb3cpOwoKICAgcHJvY2VkdXJlIE1vdmUKICAgICAoV2luZG93IDogR2RrX1dp bmRvdzsKICAgICAgWCAgICAgIDogR2ludDsKICAgICAgWSAgICAgIDogR2ludCk7CgogICBwcm9j ZWR1cmUgUmVzaXplCiAgICAgKFdpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFdpZHRoICA6IEdp bnQ7CiAgICAgIEhlaWdodCA6IEdpbnQpOwoKICAgcHJvY2VkdXJlIE1vdmVfUmVzaXplCiAgICAg KFdpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFggICAgICA6IEdpbnQ7CiAgICAgIFkgICAgICA6 IEdpbnQ7CiAgICAgIFdpZHRoICA6IEdpbnQ7CiAgICAgIEhlaWdodCA6IEdpbnQpOwoKICAgcHJv Y2VkdXJlIFJlcGFyZW50CiAgICAgKFdpbmRvdyAgICAgOiBHZGtfV2luZG93OwogICAgICBOZXdf UGFyZW50IDogR2RrX1dpbmRvdzsKICAgICAgWCAgICAgICAgICA6IEdpbnQ7CiAgICAgIFkgICAg ICAgICAgOiBHaW50KTsKCiAgIHByb2NlZHVyZSBDbGVhciAoV2luZG93IDogR2RrX1dpbmRvdyk7 CgogICBwcm9jZWR1cmUgQ2xlYXJfQXJlYQogICAgIChXaW5kb3cgOiBHZGtfV2luZG93OwogICAg ICBYICAgICAgOiBHaW50OwogICAgICBZICAgICAgOiBHaW50OwogICAgICBXaWR0aCAgOiBHaW50 OwogICAgICBIZWlnaHQgOiBHaW50KTsKICAgLS0gIERvZXMgbm90IGdlbmVyYXRlIGFuIGV4cG9z ZSBldmVudC4KCiAgIHByb2NlZHVyZSBDbGVhcl9BcmVhX0UKICAgICAoV2luZG93IDogR2RrX1dp bmRvdzsKICAgICAgWCAgICAgIDogR2ludDsKICAgICAgWSAgICAgIDogR2ludDsKICAgICAgV2lk dGggIDogR2ludDsKICAgICAgSGVpZ2h0IDogR2ludCk7CiAgIC0tICBTYW1lIGFzIENsZWFyX0Fy ZWEsIGJ1dCBnZW5lcmF0ZXMgYW4gZXhwb3NlIGV2ZW50LgoKICAgcHJvY2VkdXJlIENvcHlfQXJl YQogICAgIChXaW5kb3cgICAgICAgIDogR2RrX1dpbmRvdzsKICAgICAgR2MgICAgICAgICAgICA6 IEdkay5HZGtfR0M7CiAgICAgIFggICAgICAgICAgICAgOiBHaW50OwogICAgICBZICAgICAgICAg ICAgIDogR2ludDsKICAgICAgU291cmNlX1dpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFNvdXJj ZV9YICAgICAgOiBHaW50OwogICAgICBTb3VyY2VfWSAgICAgIDogR2ludDsKICAgICAgV2lkdGgg ICAgICAgICA6IEdpbnQ7CiAgICAgIEhlaWdodCAgICAgICAgOiBHaW50KTsKCiAgIHByb2NlZHVy ZSBHZGtfUmFpc2UgKFdpbmRvdyA6IEdka19XaW5kb3cpOwoKICAgcHJvY2VkdXJlIExvd2VyIChX aW5kb3cgOiBHZGtfV2luZG93KTsKCiAgIHByb2NlZHVyZSBTZXRfT3ZlcnJpZGVfUmVkaXJlY3QK ICAgICAoV2luZG93ICAgICAgICAgICAgOiBHZGtfV2luZG93OwogICAgICBPdmVycmlkZV9SZWRp cmVjdCA6IEJvb2xlYW4gOj0gVHJ1ZSk7CgogICBwcm9jZWR1cmUgU2V0X0NoaWxkX1NoYXBlcyAo V2luZG93IDogR2RrX1dpbmRvdyk7CgogICBwcm9jZWR1cmUgTWVyZ2VfQ2hpbGRfU2hhcGVzIChX aW5kb3cgOiBHZGtfV2luZG93KTsKCiAgIGZ1bmN0aW9uIElzX1Zpc2libGUgKFdpbmRvdyA6IEdk a19XaW5kb3cpIHJldHVybiBCb29sZWFuOwoKICAgZnVuY3Rpb24gSXNfVmlld2FibGUgKFdpbmRv dyA6IEdka19XaW5kb3cpIHJldHVybiBCb29sZWFuOwoKICAgcHJvY2VkdXJlIFNldF9IaW50cwog ICAgIChXaW5kb3cgICAgIDogR2RrX1dpbmRvdzsKICAgICAgWCAgICAgICAgICA6IEdpbnQ7CiAg ICAgIFkgICAgICAgICAgOiBHaW50OwogICAgICBNaW5fV2lkdGggIDogR2ludDsKICAgICAgTWlu X0hlaWdodCA6IEdpbnQ7CiAgICAgIE1heF9XaWR0aCAgOiBHaW50OwogICAgICBNYXhfSGVpZ2h0 IDogR2ludDsKICAgICAgRmxhZ3MgICAgICA6IEdkay5UeXBlcy5HZGtfV2luZG93X0hpbnRzKTsK CiAgIHByb2NlZHVyZSBTZXRfR2VvbWV0cnlfSGludHMKICAgICAoV2luZG93ICAgOiBHZGtfV2lu ZG93OwogICAgICBHZW9tZXRyeSA6IGluIG91dCBHZGsuVHlwZXMuR2RrX0dlb21ldHJ5OwogICAg ICBGbGFncyAgICA6IEdkay5UeXBlcy5HZGtfV2luZG93X0hpbnRzKTsKCiAgIHByb2NlZHVyZSBT ZXRfVGl0bGUgKFdpbmRvdyA6IEdka19XaW5kb3c7IFRpdGxlIDogU3RyaW5nKTsKCiAgIHByb2Nl ZHVyZSBTZXRfUm9sZSAoV2luZG93IDogR2RrX1dpbmRvdzsgUm9sZSA6IFN0cmluZyk7CgogICBw cm9jZWR1cmUgU2V0X1RyYW5zaWVudF9Gb3IKICAgICAoV2luZG93IDogR2RrX1dpbmRvdzsgTGVh ZGVyIDogR2RrX1dpbmRvdyk7CgogICBwcm9jZWR1cmUgU2V0X0JhY2tncm91bmQKICAgICAoV2lu ZG93IDogR2RrX1dpbmRvdzsgQ29sb3IgOiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKCiAgIHByb2Nl ZHVyZSBTZXRfQmFja19QaXhtYXAKICAgICAoV2luZG93ICAgICAgICAgIDogR2RrX1dpbmRvdzsK ICAgICAgUGl4bWFwICAgICAgICAgIDogR2RrLkdka19QaXhtYXA7CiAgICAgIFBhcmVudF9SZWxh dGl2ZSA6IEJvb2xlYW4pOwoKICAgcHJvY2VkdXJlIFNldF9DdXJzb3IKICAgICAoV2luZG93IDog R2RrX1dpbmRvdzsgQ3Vyc29yIDogR2RrLkN1cnNvci5HZGtfQ3Vyc29yKTsKICAgLS0gIE5vdGU6 IHRoZSB3aW5kb3cgbXVzdCBiZSByZWFsaXplZCBmaXJzdCwgaWUgaGF2ZSBhbiBhc3NvY2lhdGVk IFgxMS9XaW4zMgogICAtLSAgd2luZG93LgoKICAgcHJvY2VkdXJlIFNldF9Db2xvcm1hcAogICAg IChXaW5kb3cgOiBHZGtfV2luZG93OyBDb2xvcm1hcCA6IEdkay5Db2xvci5HZGtfQ29sb3JtYXAp OwoKICAgcHJvY2VkdXJlIEdldF9HZW9tZXRyeQogICAgIChXaW5kb3cgOiBHZGtfV2luZG93Owog ICAgICBYICAgICAgOiBvdXQgR2ludDsKICAgICAgWSAgICAgIDogb3V0IEdpbnQ7CiAgICAgIFdp ZHRoICA6IG91dCBHaW50OwogICAgICBIZWlnaHQgOiBvdXQgR2ludDsKICAgICAgRGVwdGggIDog b3V0IEdpbnQpOwogICAtLSAgWW91IGNhbiBnZXQgdGhlIHNpemUgb2YgdGhlIHJvb3Qgd2luZG93 IChpZSB0aGUgc2l6ZSBvZiB0aGUgc2NyZWVuKQogICAtLSAgc2ltcGx5IGJ5IGdpdmluZyBOdWxs X1dpbmRvdyBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhpcyBwcm9jZWR1cmUuCgogICBwcm9j ZWR1cmUgR2V0X1Bvc2l0aW9uCiAgICAgKFdpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFggICAg ICA6IG91dCBHaW50OwogICAgICBZICAgICAgOiBvdXQgR2ludCk7CgogICBwcm9jZWR1cmUgR2V0 X1NpemUKICAgICAoV2luZG93IDogR2RrX1dpbmRvdzsKICAgICAgV2lkdGggIDogb3V0IEdpbnQ7 CiAgICAgIEhlaWdodCA6IG91dCBHaW50KTsKCiAgIGZ1bmN0aW9uIEdldF9WaXN1YWwgKFdpbmRv dyA6IEdka19XaW5kb3cpIHJldHVybiBHZGsuVmlzdWFsLkdka19WaXN1YWw7CgogICBmdW5jdGlv biBHZXRfQ29sb3JtYXAgKFdpbmRvdyA6IEdka19XaW5kb3cpIHJldHVybiBHZGsuQ29sb3IuR2Rr X0NvbG9ybWFwOwoKICAgZnVuY3Rpb24gR2V0X1R5cGUgKFdpbmRvdyA6IEdka19XaW5kb3cpIHJl dHVybiBHZGsuVHlwZXMuR2RrX1dpbmRvd19UeXBlOwoKICAgcHJvY2VkdXJlIEdldF9PcmlnaW4K ICAgICAoV2luZG93ICA6IEdka19XaW5kb3c7CiAgICAgIFggICAgICAgOiBvdXQgR2ludDsKICAg ICAgWSAgICAgICA6IG91dCBHaW50OwogICAgICBTdWNjZXNzIDogb3V0IEJvb2xlYW4pOwoKICAg cHJvY2VkdXJlIEdldF9EZXNrX1JlbGF0aXZlX09yaWdpbgogICAgIChXaW5kb3cgIDogR2RrX1dp bmRvdzsKICAgICAgWCAgICAgICA6IG91dCBHaW50OwogICAgICBZICAgICAgIDogb3V0IEdpbnQ7 CiAgICAgIFN1Y2Nlc3MgOiBvdXQgQm9vbGVhbik7CgogICBwcm9jZWR1cmUgR2V0X1Jvb3RfT3Jp Z2luCiAgICAgKFdpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFggICAgICA6IG91dCBHaW50Owog ICAgICBZICAgICAgOiBvdXQgR2ludCk7CgogICBwcm9jZWR1cmUgR2V0X1BvaW50ZXIKICAgICAo V2luZG93IDogR2RrX1dpbmRvdzsKICAgICAgWCAgICAgIDogb3V0IEdpbnQ7CiAgICAgIFkgICAg ICA6IG91dCBHaW50OwogICAgICBNYXNrICAgOiBvdXQgR2RrLlR5cGVzLkdka19Nb2RpZmllcl9U eXBlOwogICAgICBSZXN1bHQgOiBvdXQgR2RrX1dpbmRvdyk7CgogICBmdW5jdGlvbiBHZXRfUGFy ZW50IChXaW5kb3cgOiBHZGtfV2luZG93KSByZXR1cm4gR2RrX1dpbmRvdzsKCiAgIGZ1bmN0aW9u IEdldF9Ub3BsZXZlbCAoV2luZG93IDogR2RrX1dpbmRvdykgcmV0dXJuIEdka19XaW5kb3c7Cgog ICBmdW5jdGlvbiBHZXRfRXZlbnRzIChXaW5kb3cgOiBHZGtfV2luZG93KSByZXR1cm4gR2RrLlR5 cGVzLkdka19FdmVudF9NYXNrOwoKICAgcHJvY2VkdXJlIFNldF9FdmVudHMKICAgICAoV2luZG93 IDogR2RrX1dpbmRvdzsgRXZlbnRfTWFzayA6IEdkay5UeXBlcy5HZGtfRXZlbnRfTWFzayk7Cgog ICBwcm9jZWR1cmUgU2V0X0ljb24KICAgICAoV2luZG93ICAgICAgOiBHZGtfV2luZG93OwogICAg ICBJY29uX1dpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFBpeG1hcCAgICAgIDogR2RrX1BpeG1h cDsKICAgICAgTWFzayAgICAgICAgOiBHZGtfQml0bWFwKTsKCiAgIHByb2NlZHVyZSBTZXRfSWNv bl9OYW1lCiAgICAgKFdpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIE5hbWUgICA6IFN0cmluZyk7 CgogICBwcm9jZWR1cmUgU2V0X0dyb3VwIChXaW5kb3cgOiBHZGtfV2luZG93OyBMZWFkZXIgOiBH ZGtfV2luZG93KTsKCiAgIHByb2NlZHVyZSBTZXRfRGVjb3JhdGlvbnMKICAgICAoV2luZG93ICAg ICAgOiBHZGtfV2luZG93OwogICAgICBEZWNvcmF0aW9ucyA6IEdkay5UeXBlcy5HZGtfV21fRGVj b3JhdGlvbik7CgogICBwcm9jZWR1cmUgU2V0X0Z1bmN0aW9ucwogICAgIChXaW5kb3cgICAgOiBH ZGtfV2luZG93OwogICAgICBGdW5jdGlvbnMgOiBHZGsuVHlwZXMuR2RrX1dtX0Z1bmN0aW9uKTsK CiAgIC0tICBHZGtfV2luZG93X0xpc3QKICAgLS0KICAgZnVuY3Rpb24gQ29udmVydCBpcyBuZXcg VW5jaGVja2VkX0NvbnZlcnNpb24gKEdka19XaW5kb3csIFN5c3RlbS5BZGRyZXNzKTsKICAgZnVu Y3Rpb24gQ29udmVydCBpcyBuZXcgVW5jaGVja2VkX0NvbnZlcnNpb24gKFN5c3RlbS5BZGRyZXNz LCBHZGtfV2luZG93KTsKCiAgIHBhY2thZ2UgR2RrX1dpbmRvd19MaXN0IGlzIG5ldwogICAgIEds aWIuR2xpc3QuR2VuZXJpY19MaXN0IChHcG9pbnRlciA9PiBHZGtfV2luZG93KTsKCiAgIGZ1bmN0 aW9uIEdldF9DaGlsZHJlbgogICAgIChXaW5kb3cgOiBHZGtfV2luZG93KSByZXR1cm4gR2RrX1dp bmRvd19MaXN0LkdsaXN0OwoKICAgZnVuY3Rpb24gR2V0X1RvcGxldmVscyByZXR1cm4gR2RrX1dp bmRvd19MaXN0LkdsaXN0OwoKcHJpdmF0ZQoKICAgTnVsbF9XaW5kb3cgOiBjb25zdGFudCBHZGtf V2luZG93IDo9IG51bGw7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENsZWFyLCAiZ2RrX3dpbmRvd19j bGVhciIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBDbGVhcl9BcmVhLCAiZ2RrX3dpbmRvd19jbGVh cl9hcmVhIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENsZWFyX0FyZWFfRSwgImdka193aW5kb3df Y2xlYXJfYXJlYV9lIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENvcHlfQXJlYSwgImdka193aW5k b3dfY29weV9hcmVhIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9FdmVudHMsICJnZGtfd2lu ZG93X2dldF9ldmVudHMiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0dlb21ldHJ5LCAiZ2Rr X3dpbmRvd19nZXRfZ2VvbWV0cnkiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1BhcmVudCwg Imdka193aW5kb3dfZ2V0X3BhcmVudCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfUG9zaXRp b24sICJnZGtfd2luZG93X2dldF9wb3NpdGlvbiIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRf Um9vdF9PcmlnaW4sICJnZGtfd2luZG93X2dldF9yb290X29yaWdpbiIpOwogICBwcmFnbWEgSW1w b3J0IChDLCBHZXRfU2l6ZSwgImdka193aW5kb3dfZ2V0X3NpemUiKTsKICAgcHJhZ21hIEltcG9y dCAoQywgR2V0X1RvcGxldmVsLCAiZ2RrX3dpbmRvd19nZXRfdG9wbGV2ZWwiKTsKICAgcHJhZ21h IEltcG9ydCAoQywgR2V0X1R5cGUsICJnZGtfd2luZG93X2dldF90eXBlIik7CiAgIHByYWdtYSBJ bXBvcnQgKEMsIEhpZGUsICJnZGtfd2luZG93X2hpZGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywg TG93ZXIsICJnZGtfd2luZG93X2xvd2VyIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIE1lcmdlX0No aWxkX1NoYXBlcywgImdka193aW5kb3dfbWVyZ2VfY2hpbGRfc2hhcGVzIik7CiAgIHByYWdtYSBJ bXBvcnQgKEMsIE1vdmUsICJnZGtfd2luZG93X21vdmUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywg TW92ZV9SZXNpemUsICJnZGtfd2luZG93X21vdmVfcmVzaXplIik7CiAgIHByYWdtYSBJbXBvcnQg KEMsIEdka19SYWlzZSwgImdka193aW5kb3dfcmFpc2UiKTsKICAgcHJhZ21hIEltcG9ydCAoQywg UmVmLCAiZ2RrX3dpbmRvd19yZWYiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUmVwYXJlbnQsICJn ZGtfd2luZG93X3JlcGFyZW50Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJlc2l6ZSwgImdka193 aW5kb3dfcmVzaXplIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9DaGlsZF9TaGFwZXMsICJn ZGtfd2luZG93X3NldF9jaGlsZF9zaGFwZXMiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0Rl Y29yYXRpb25zLCAiZ2RrX3dpbmRvd19zZXRfZGVjb3JhdGlvbnMiKTsKICAgcHJhZ21hIEltcG9y dCAoQywgU2V0X0V2ZW50cywgImdka193aW5kb3dfc2V0X2V2ZW50cyIpOwogICBwcmFnbWEgSW1w b3J0IChDLCBTZXRfRnVuY3Rpb25zLCAiZ2RrX3dpbmRvd19zZXRfZnVuY3Rpb25zIik7CiAgIHBy YWdtYSBJbXBvcnQgKEMsIFNldF9HZW9tZXRyeV9IaW50cywgImdka193aW5kb3dfc2V0X2dlb21l dHJ5X2hpbnRzIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9Hcm91cCwgImdka193aW5kb3df c2V0X2dyb3VwIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9IaW50cywgImdka193aW5kb3df c2V0X2hpbnRzIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9UcmFuc2llbnRfRm9yLCAiZ2Rr X3dpbmRvd19zZXRfdHJhbnNpZW50X2ZvciIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTaG93LCAi Z2RrX3dpbmRvd19zaG93Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFVucmVmLCAiZ2RrX3dpbmRv d191bnJlZiIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBXaXRoZHJhdywgImdka193aW5kb3dfd2l0 aGRyYXciKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0N1cnNvciwgImdka193aW5kb3dfc2V0 X2N1cnNvciIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfQ29sb3JtYXAsICJnZGtfd2luZG93 X2dldF9jb2xvcm1hcCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfVmlzdWFsLCAiZ2RrX3dp bmRvd19nZXRfdmlzdWFsIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9Db2xvcm1hcCwgImdk a193aW5kb3dfc2V0X2NvbG9ybWFwIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9JY29uLCAi Z2RrX3dpbmRvd19zZXRfaWNvbiIpOwplbmQgR2RrLldpbmRvdzsKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0g ICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmln aHQgKEMpIDE5OTgtMjAwMCAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFu dWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAg LS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg ICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAg ICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5z dGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlz IHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwg dGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0K LS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBh bnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBi ZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tICBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGNhcGFi aWxpdHkgdG8gY3JlYXRlIHByZWRlZmluZWQgbW91c2UgY3Vyc29ycwotLSAgYXMgd2VsbCBhcyB1 c2VyIGRlZmluZWQgb25lcy4KLS0gIDwvZGVzY3JpcHRpb24+Ci0tICA8Y192ZXJzaW9uPjEuMi44 PC9jX3ZlcnNpb24+Cgp3aXRoIEdsaWI7CndpdGggR2RrLlR5cGVzOwp3aXRoIEdkay5Db2xvcjsK CnBhY2thZ2UgR2RrLkN1cnNvciBpcwoKICAgdHlwZSBHZGtfQ3Vyc29yIGlzIG5ldyBHZGsuQ19Q cm94eTsKICAgTnVsbF9DdXJzb3IgOiBjb25zdGFudCBHZGtfQ3Vyc29yOwoKICAgcHJvY2VkdXJl IEdka19OZXcKICAgICAoV2lkZ2V0ICAgICAgOiBvdXQgR2RrX0N1cnNvcjsKICAgICAgQ3Vyc29y X1R5cGUgOiBpbiAgR2RrLlR5cGVzLkdka19DdXJzb3JfVHlwZSk7CiAgIC0tICBDcmVhdGUgYSBu ZXcgc3RhbmRhcmQgY3Vyc29yLgoKICAgcHJvY2VkdXJlIEdka19OZXcKICAgICAoV2lkZ2V0IDog b3V0IEdka19DdXJzb3I7CiAgICAgIFNvdXJjZSA6IGluIEdkay5HZGtfUGl4bWFwOwogICAgICBN YXNrICAgOiBpbiBHZGsuR2RrX1BpeG1hcDsKICAgICAgRmcgICAgIDogaW4gR2RrLkNvbG9yLkdk a19Db2xvcjsKICAgICAgQmcgICAgIDogaW4gR2RrLkNvbG9yLkdka19Db2xvcjsKICAgICAgWCAg ICAgIDogaW4gR2xpYi5HaW50OwogICAgICBZICAgICAgOiBpbiBHbGliLkdpbnQpOwogICAtLSAg Q3JlYXRlIGEgbmV3IGN1cnNvciBmcm9tIGEgZ2l2ZW4gcGl4bWFwIGFuZCBtYXNrLgogICAtLSAg Qm90aCB0aGUgcGl4bWFwIGFuZCBtYXNrIG11c3QgaGF2ZSBhIGRlcHRoIG9mIDEgKGkuZS4gZWFj aCBwaXhlbCBoYXMKICAgLS0gIG9ubHkgMiB2YWx1ZXMgLSBvbiBvciBvZmYpLiBUaGUgc3RhbmRh cmQgY3Vyc29yIHNpemUgaXMgMTYgYnkgMTYgcGl4ZWxzLgogICAtLSAgIC0gU291cmNlIGlzIHRo ZSBwaXhtYXAgc3BlY2lmeWluZyB0aGUgY3Vyc29yLgogICAtLSAgIC0gTWFzayBpcyB0aGUgcGl4 bWFwIHNwZWNpZnlpbmcgdGhlIG1hc2ssIHdoaWNoIG11c3QgYmUgdGhlIHNhbWUgc2l6ZQogICAt LSAgIGFzIHNvdXJjZS4KICAgLS0gICAtIEZnIGlzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yLCB1c2Vk IGZvciB0aGUgYml0cyBpbiB0aGUgc291cmNlIHdoaWNoIGFyZQogICAtLSAgIGVuYWJsZWQuIFRo ZSBjb2xvciBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsbG9jYXRlZCBmaXJzdC4KICAgLS0gICAtIEJn IGlzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLCB1c2VkIGZvciB0aGUgYml0cyBpbiB0aGUgc291cmNl IHdoaWNoIGFyZQogICAtLSAgIGRpc2FibGVkLiBUaGUgY29sb3IgZG9lcyBub3QgaGF2ZSB0byBi ZSBhbGxvY2F0ZWQgZmlyc3QuCiAgIC0tICAgLSBYIGlzIHRoZSBob3Jpem9udGFsIG9mZnNldCBv ZiB0aGUgJ2hvdHNwb3QnIG9mIHRoZSBjdXJzb3IuCiAgIC0tICAgLSBZIGlzIHRoZSB2ZXJ0aWNh bCBvZmZzZXQgb2YgdGhlICdob3RzcG90JyBvZiB0aGUgY3Vyc29yLgoKICAgcHJvY2VkdXJlIERl c3Ryb3kgKEN1cnNvciA6IGluIEdka19DdXJzb3IpOwogICAtLSAgRGVzdHJveSBhIGN1cnNvciwg ZnJlZWluZyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgaXQuCgpwcml2YXRlCiAgIE51bGxf Q3Vyc29yIDogY29uc3RhbnQgR2RrX0N1cnNvciA6PSBudWxsOwogICBwcmFnbWEgSW1wb3J0IChD LCBEZXN0cm95LCAiZ2RrX2N1cnNvcl9kZXN0cm95Iik7CmVuZCBHZGsuQ3Vyc29yOwotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBU b29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAg ICAgIENvcHlyaWdodCAoQykgMTk5OC0xOTk5ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAg ICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAg ICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQot LSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAt LQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp ZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0 b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhl ciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlv dSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBl eGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVz dWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBp bnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZp bGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoKd2l0aCBHZGsuQ29sb3I7CndpdGggR2RrLkN1cnNvcjsKd2l0aCBHZGsu VHlwZXM7CndpdGggR2RrLlZpc3VhbDsKd2l0aCBHbGliOwoKcGFja2FnZSBHZGsuV2luZG93X0F0 dHIgaXMKCiAgIHR5cGUgR2RrX1dpbmRvd19BdHRyIGlzIG5ldyBDX1Byb3h5OwogICBOdWxsX1dp bmRvd19BdHRyIDogY29uc3RhbnQgR2RrX1dpbmRvd19BdHRyOwoKICAgcHJvY2VkdXJlIEdka19O ZXcKICAgICAoV2luZG93X0F0dHIgICAgICAgOiAgICBvdXQgR2RrX1dpbmRvd19BdHRyOwogICAg ICBUaXRsZSAgICAgICAgICAgICA6IGluICAgICBTdHJpbmcgOj0gIiI7CiAgICAgIEV2ZW50X01h c2sgICAgICAgIDogaW4gICAgIEdkay5UeXBlcy5HZGtfRXZlbnRfTWFzayA6PQogICAgICAgIEdk ay5UeXBlcy5OdWxsX0V2ZW50X01hc2s7CiAgICAgIFgsIFkgICAgICAgICAgICAgIDogaW4gICAg IEdsaWIuR2ludDE2IDo9IDA7CiAgICAgIFdpZHRoICAgICAgICAgICAgIDogaW4gICAgIEdsaWIu R2ludDE2IDo9IDA7CiAgICAgIEhlaWdodCAgICAgICAgICAgIDogaW4gICAgIEdsaWIuR2ludDE2 IDo9IDA7CiAgICAgIFdjbGFzcyAgICAgICAgICAgIDogaW4gICAgIEdkay5UeXBlcy5HZGtfV2lu ZG93X0NsYXNzIDo9CiAgICAgICAgR2RrLlR5cGVzLklucHV0X091dHB1dDsKICAgICAgVmlzdWFs ICAgICAgICAgICAgOiBpbiAgICAgR2RrLlZpc3VhbC5HZGtfVmlzdWFsIDo9CiAgICAgICAgR2Rr LlZpc3VhbC5OdWxsX1Zpc3VhbDsKICAgICAgQ29sb3JtYXAgICAgICAgICAgOiBpbiAgICAgR2Rr LkNvbG9yLkdka19Db2xvcm1hcCA6PQogICAgICAgIEdkay5Db2xvci5OdWxsX0NvbG9ybWFwOwog ICAgICBXaW5kb3dfVHlwZSAgICAgICA6IGluICAgICBHZGsuVHlwZXMuR2RrX1dpbmRvd19UeXBl IDo9CiAgICAgICAgR2RrLlR5cGVzLldpbmRvd19Sb290OwogICAgICBDdXJzb3IgICAgICAgICAg ICA6IGluICAgICBHZGsuQ3Vyc29yLkdka19DdXJzb3IgOj0KICAgICAgICBHZGsuQ3Vyc29yLk51 bGxfQ3Vyc29yOwogICAgICBXbWNsYXNzX05hbWUgICAgICA6IGluICAgICBTdHJpbmcgOj0gIiI7 CiAgICAgIFdtY2xhc3NfQ2xhc3MgICAgIDogaW4gICAgIFN0cmluZyA6PSAiIjsKICAgICAgT3Zl cnJpZGVfUmVkaXJlY3QgOiBpbiAgICAgQm9vbGVhbiA6PSBUcnVlKTsKCiAgIHByb2NlZHVyZSBE ZXN0cm95IChXaW5kb3dfQXR0ciA6IGluIG91dCBHZGtfV2luZG93X0F0dHIpOwoKICAgcHJvY2Vk dXJlIFNldF9UaXRsZQogICAgIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cjsKICAg ICAgVGl0bGUgICAgICAgOiBpbiBTdHJpbmcpOwoKICAgZnVuY3Rpb24gR2V0X1RpdGxlIChXaW5k b3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cikgcmV0dXJuIFN0cmluZzsKCiAgIHByb2NlZHVy ZSBTZXRfRXZlbnRfTWFzawogICAgIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cjsK ICAgICAgRXZlbnRfTWFzayAgOiBpbiBHZGsuVHlwZXMuR2RrX0V2ZW50X01hc2spOwoKICAgZnVu Y3Rpb24gR2V0X0V2ZW50X01hc2sKICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0 dHIpCiAgICAgIHJldHVybiBHZGsuVHlwZXMuR2RrX0V2ZW50X01hc2s7CgogICBwcm9jZWR1cmUg U2V0X1gKICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAgIFggICAg ICAgICAgIDogaW4gR2xpYi5HaW50MTYpOwoKICAgZnVuY3Rpb24gR2V0X1ggKFdpbmRvd19BdHRy IDogaW4gR2RrX1dpbmRvd19BdHRyKSByZXR1cm4gR2xpYi5HaW50MTY7CgoKICAgcHJvY2VkdXJl IFNldF9ZCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyOwogICAgICBZICAg ICAgICAgICA6IGluIEdsaWIuR2ludDE2KTsKCiAgIGZ1bmN0aW9uIEdldF9ZIChXaW5kb3dfQXR0 ciA6IGluIEdka19XaW5kb3dfQXR0cikgcmV0dXJuIEdsaWIuR2ludDE2OwoKICAgcHJvY2VkdXJl IFNldF9XaWR0aAogICAgIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cjsKICAgICAg V2lkdGggICAgICAgOiBpbiBHbGliLkdpbnQxNik7CgogICBmdW5jdGlvbiBHZXRfV2lkdGggKFdp bmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyKSByZXR1cm4gR2xpYi5HaW50MTY7CgogICBw cm9jZWR1cmUgU2V0X0hlaWdodAogICAgIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0 cjsKICAgICAgSGVpZ2h0ICAgICAgOiBpbiBHbGliLkdpbnQxNik7CgogICBmdW5jdGlvbiBHZXRf SGVpZ2h0IChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cikgcmV0dXJuIEdsaWIuR2lu dDE2OwoKICAgcHJvY2VkdXJlIFNldF9XaW5kb3dfQ2xhc3MKICAgICAoV2luZG93X0F0dHIgOiBp biBHZGtfV2luZG93X0F0dHI7CiAgICAgIFdjbGFzcyAgICAgIDogaW4gR2RrLlR5cGVzLkdka19X aW5kb3dfQ2xhc3MpOwoKICAgZnVuY3Rpb24gR2V0X1dpbmRvd19DbGFzcwogICAgIChXaW5kb3df QXR0ciA6IGluIEdka19XaW5kb3dfQXR0cikgcmV0dXJuIEdkay5UeXBlcy5HZGtfV2luZG93X0Ns YXNzOwoKICAgcHJvY2VkdXJlIFNldF9WaXN1YWwKICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtf V2luZG93X0F0dHI7CiAgICAgIFZpc3VhbCAgICAgIDogaW4gR2RrLlZpc3VhbC5HZGtfVmlzdWFs KTsKCiAgIGZ1bmN0aW9uIEdldF9WaXN1YWwKICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2lu ZG93X0F0dHIpIHJldHVybiBHZGsuVmlzdWFsLkdka19WaXN1YWw7CgogICBwcm9jZWR1cmUgU2V0 X0NvbG9ybWFwCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyOwogICAgICBD b2xvcm1hcCAgICA6IGluIEdkay5Db2xvci5HZGtfQ29sb3JtYXApOwoKICAgZnVuY3Rpb24gR2V0 X0NvbG9ybWFwCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyKSByZXR1cm4g R2RrLkNvbG9yLkdka19Db2xvcm1hcDsKCiAgIHByb2NlZHVyZSBTZXRfV2luZG93X1R5cGUKICAg ICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAgIFdpbmRvd19UeXBlIDog aW4gR2RrLlR5cGVzLkdka19XaW5kb3dfVHlwZSk7CgogICBmdW5jdGlvbiBHZXRfV2luZG93X1R5 cGUKICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHIpIHJldHVybiBHZGsuVHlw ZXMuR2RrX1dpbmRvd19UeXBlOwoKICAgcHJvY2VkdXJlIFNldF9DdXJzb3IKICAgICAoV2luZG93 X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAgIEN1cnNvciAgICAgIDogaW4gR2RrLkN1 cnNvci5HZGtfQ3Vyc29yKTsKCiAgIGZ1bmN0aW9uIEdldF9DdXJzb3IKICAgICAoV2luZG93X0F0 dHIgOiBpbiBHZGtfV2luZG93X0F0dHIpCiAgICAgIHJldHVybiBHZGsuQ3Vyc29yLkdka19DdXJz b3I7CgogICBwcm9jZWR1cmUgU2V0X1dtY2xhc3NfTmFtZQogICAgIChXaW5kb3dfQXR0ciAgOiBp biBHZGtfV2luZG93X0F0dHI7CiAgICAgIFdtY2xhc3NfTmFtZSA6IGluIFN0cmluZyk7CgogICBm dW5jdGlvbiBHZXRfV21jbGFzc19OYW1lIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0 cikgcmV0dXJuIFN0cmluZzsKCgogICBwcm9jZWR1cmUgU2V0X1dtY2xhc3NfQ2xhc3MKICAgICAo V2luZG93X0F0dHIgICA6IGluIEdka19XaW5kb3dfQXR0cjsKICAgICAgV21jbGFzc19DbGFzcyA6 IGluIFN0cmluZyk7CgogICBmdW5jdGlvbiBHZXRfV21jbGFzc19DbGFzcyAoV2luZG93X0F0dHIg OiBpbiBHZGtfV2luZG93X0F0dHIpIHJldHVybiBTdHJpbmc7CgogICBwcm9jZWR1cmUgU2V0X092 ZXJyaWRlX1JlZGlyZWN0CiAgICAgKFdpbmRvd19BdHRyICAgICAgIDogaW4gR2RrX1dpbmRvd19B dHRyOwogICAgICBPdmVycmlkZV9SZWRpcmVjdCA6IGluIEJvb2xlYW4pOwoKICAgZnVuY3Rpb24g R2V0X092ZXJyaWRlX1JlZGlyZWN0CiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19B dHRyKSByZXR1cm4gQm9vbGVhbjsKCnByaXZhdGUKICAgTnVsbF9XaW5kb3dfQXR0ciA6IGNvbnN0 YW50IEdka19XaW5kb3dfQXR0ciA6PSBudWxsOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfQ29s b3JtYXAsICJhZGFfZ2RrX3dpbmRvd19hdHRyX2dldF9jb2xvcm1hcCIpOwogICBwcmFnbWEgSW1w b3J0IChDLCBHZXRfQ3Vyc29yLCAiYWRhX2dka193aW5kb3dfYXR0cl9nZXRfY3Vyc29yIik7CiAg IHByYWdtYSBJbXBvcnQgKEMsIEdldF9FdmVudF9NYXNrLCAiYWRhX2dka193aW5kb3dfYXR0cl9n ZXRfZXZlbnRfbWFzayIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfSGVpZ2h0LCAiYWRhX2dk a193aW5kb3dfYXR0cl9nZXRfaGVpZ2h0Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9WaXN1 YWwsICJhZGFfZ2RrX3dpbmRvd19hdHRyX2dldF92aXN1YWwiKTsKICAgcHJhZ21hIEltcG9ydCAo QywgR2V0X1dpZHRoLCAiYWRhX2dka193aW5kb3dfYXR0cl9nZXRfd2lkdGgiKTsKICAgcHJhZ21h IEltcG9ydCAoQywgR2V0X1dpbmRvd19DbGFzcywgImFkYV9nZGtfd2luZG93X2F0dHJfZ2V0X3dj bGFzcyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfV2luZG93X1R5cGUsICJhZGFfZ2RrX3dp bmRvd19hdHRyX2dldF93aW5kb3dfdHlwZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfWCwg ImFkYV9nZGtfd2luZG93X2F0dHJfZ2V0X3giKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1ks ICJhZGFfZ2RrX3dpbmRvd19hdHRyX2dldF95Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9D b2xvcm1hcCwgImFkYV9nZGtfd2luZG93X2F0dHJfc2V0X2NvbG9ybWFwIik7CiAgIHByYWdtYSBJ bXBvcnQgKEMsIFNldF9DdXJzb3IsICJhZGFfZ2RrX3dpbmRvd19hdHRyX3NldF9jdXJzb3IiKTsK ICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0V2ZW50X01hc2ssICJhZGFfZ2RrX3dpbmRvd19hdHRy X3NldF9ldmVudF9tYXNrIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9IZWlnaHQsICJhZGFf Z2RrX3dpbmRvd19hdHRyX3NldF9oZWlnaHQiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X1Zp c3VhbCwgImFkYV9nZGtfd2luZG93X2F0dHJfc2V0X3Zpc3VhbCIpOwogICBwcmFnbWEgSW1wb3J0 IChDLCBTZXRfV2lkdGgsICJhZGFfZ2RrX3dpbmRvd19hdHRyX3NldF93aWR0aCIpOwogICBwcmFn bWEgSW1wb3J0IChDLCBTZXRfV2luZG93X0NsYXNzLCAiYWRhX2dka193aW5kb3dfYXR0cl9zZXRf d2NsYXNzIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9XaW5kb3dfVHlwZSwgImFkYV9nZGtf d2luZG93X2F0dHJfc2V0X3dpbmRvd190eXBlIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9Y LCAiYWRhX2dka193aW5kb3dfYXR0cl9zZXRfeCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRf WSwgImFkYV9nZGtfd2luZG93X2F0dHJfc2V0X3kiKTsKZW5kIEdkay5XaW5kb3dfQXR0cjsKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLS0gICAgICAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciBH dGsrL0dub21lICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICBDb3B5cmlnaHQg KEMpIDE5OTgtMjAwMCBFLiBCcmlvdCwgSi4gQnJvYmVja2VyIGFuZCBBLiBDaGFybGV0ICAgLS0K LS0gICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDEgQUNULUV1cm9wZSAgICAg ICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAg LS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws ICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0g Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYg b3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBv ciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0K LS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhl IHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2 ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJs ZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAg LS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tCi0tICBQaXhtYXBzIGFyZSBv ZmYtc2NyZWVuIGRyYXdhYmxlcy4gVGhleSBjYW4gYmUgZHJhd24gdXBvbiB3aXRoIHRoZSBzdGFu ZGFyZAotLSAgZHJhd2luZyBwcmltaXRpdmVzLCB0aGVuIGNvcGllZCB0byBhbm90aGVyIGRyYXdh YmxlIChzdWNoIGFzIGEgR2RrX1dpbmRvdykKLS0gIHdpdGggR2RrLlBpeG1hcC5EcmF3LiBUaGUg ZGVwdGggb2YgYSBwaXhtYXAgaXMgdGhlIG51bWJlciBvZiBiaXRzIHBlcgotLSAgcGl4ZWxzLiBC aXRtYXBzIGFyZSBzaW1wbHkgcGl4bWFwcyB3aXRoIGEgZGVwdGggb2YgMS4gKFRoYXQgaXMsIHRo ZXkgYXJlCi0tICBtb25vY2hyb21lIGJpdG1hcHMgLSBlYWNoIHBpeGVsIGNhbiBiZSBlaXRoZXIg b24gb3Igb2ZmKS4KLS0gIEBweHJlZntQYWNrYWdlX0dkay5QaXhtYXB9IGZvciBtb3JlIGRldGFp bHMgb24gcGl4bWFwIGhhbmRsaW5nLgotLQotLSAgPC9kZXNjcmlwdGlvbj4KLS0gIDxjX3ZlcnNp b24+MS4yLjc8L2NfdmVyc2lvbj4KCndpdGggR2xpYjsgdXNlIEdsaWI7Cgp3aXRoIEdkay5XaW5k b3c7CgpwYWNrYWdlIEdkay5CaXRtYXAgaXMKCiAgIHN1YnR5cGUgR2RrX0JpdG1hcCBpcyBHZGsu R2RrX0JpdG1hcDsKICAgLS0gIEEgYmxhY2sgYW5kIHdoaXRlIGltYWdlLgogICAtLSAgVGhpcyB0 eXBlIGlzIG1haW5seSB1c2VkIGFzIGEgbWFzayB3aGVuIGRyYXdpbmcgb3RoZXIgY29sb3JlZCBp bWFnZXMuCiAgIC0tICBFYWNoIHBpeGVsIGNhbiBoYXZlIHR3byB2YWx1ZXMsIDAgb3IgMS4KCiAg IE51bGxfQml0bWFwIDogY29uc3RhbnQgR2RrX0JpdG1hcDsKCiAgIHByb2NlZHVyZSBHZGtfTmV3 IChCaXRtYXAgOiBvdXQgR2RrX0JpdG1hcDsKICAgICAgICAgICAgICAgICAgICAgIFdpbmRvdyA6 IGluICBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAgICAgICAgICAgICAgICAgICAgICBXaWR0aCAg OiBpbiAgR2ludDsKICAgICAgICAgICAgICAgICAgICAgIEhlaWdodCA6IGluICBHaW50KTsKICAg LS0gIENyZWF0ZSBhIG5ldyBiaXRtYXAgd2l0aCBhIGdpdmVuIHNpemUuCiAgIC0tICBXaW5kb3cg aXMgdXNlZCB0byBkZXRlcm1pbmUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBuZXcgYml0bWFwLgog ICAtLSAgQ2FuIGJlIGV2ZW50dWFsbHkgbnVsbCBpbiB3aGljaCBjYXNlIHRoZSByb290IHdpbmRv dyBpcyB1c2VkLgogICAtLSAgV2lkdGggaXMgdGhlIHdpZHRoIG9mIHRoZSBuZXcgYml0bWFwIGlu IHBpeGVscy4KICAgLS0gIEhlaWdodCBpcyB0aGUgaGVpZ2h0IG9mIHRoZSBuZXcgYml0bWFwIGlu IHBpeGVscy4KCiAgIHByb2NlZHVyZSBSZWYgKEJpdG1hcCA6IGluIEdka19CaXRtYXApOwogICAt LSAgQWRkIGEgcmVmZXJlbmNlIHRvIGEgYml0bWFwLgoKICAgcHJvY2VkdXJlIFVucmVmIChCaXRt YXAgOiBpbiBHZGtfQml0bWFwKTsKICAgLS0gIFRoaXMgaXMgdGhlIHVzdWFsIHdheSB0byBkZXN0 cm95IGEgYml0bWFwLiBUaGUgbWVtb3J5IGlzIGZyZWVkIHdoZW4KICAgLS0gIHRoZXJlIGlzIG5v IG1vcmUgcmVmZXJlbmNlCgogICBwcm9jZWR1cmUgQ3JlYXRlX0Zyb21fRGF0YSAoQml0bWFwIDog ICAgb3V0IEdka19CaXRtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3cg OiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRGF0YSAgIDogaW4gICAgIFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFdpZHRoICA6IGluICAgICBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SGVpZ2h0IDogaW4gICAgIEdpbnQpOwogICAtLSAgQ3JlYXRlIGEgYml0bWFwIGZyb20gZGF0YSBp biBYQk0gZm9ybWF0LgogICAtLSAgV2luZG93IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGRlZmF1bHQg dmFsdWVzIGZvciB0aGUgbmV3IGJpdG1hcCwgY2FuIGJlCiAgIC0tICBudWxsIGluIHdoaWNoIGNh c2UgdGhlIHJvb3Qgd2luZG93IGlzIHVzZWQuCiAgIC0tICBEYXRhIGlzIHRoZSBYQk0gZGF0YS4K ICAgLS0gIFdpZHRoIGlzIHRoZSB3aWR0aCBvZiB0aGUgbmV3IGJpdG1hcCBpbiBwaXhlbHMuCiAg IC0tICBIZWlnaHQgaXMgdGhlIGhlaWdodCBvZiB0aGUgbmV3IGJpdG1hcCBpbiBwaXhlbHMuCgpw cml2YXRlCiAgIE51bGxfQml0bWFwIDogY29uc3RhbnQgR2RrX0JpdG1hcCA6PSBudWxsOwogICBw cmFnbWEgSW1wb3J0IChDLCBSZWYsICJnZGtfYml0bWFwX3JlZiIpOwogICBwcmFnbWEgSW1wb3J0 IChDLCBVbnJlZiwgImdka19iaXRtYXBfdW5yZWYiKTsKZW5kIEdkay5CaXRtYXA7Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRv b2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAg ICAgQ29weXJpZ2h0IChDKSAxOTk4LTE5OTkgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAg ICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0t IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0t Ci0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm IG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVy IGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91 IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4 ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1 bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGlu dmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmls ZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgp3aXRoIEdkazsgdXNlIEdkazsKd2l0aCBHZGsuVHlwZXM7CndpdGggR3Rr Lk9iamVjdDsKCnBhY2thZ2UgR3RrLkFjY2VsX0dyb3VwIGlzCgogICB0eXBlIEd0a19BY2NlbF9H cm91cCBpcyBuZXcgR2RrLkNfUHJveHk7CiAgIHR5cGUgR3RrX0FjY2VsX0VudHJ5IGlzIG5ldyBH ZGsuQ19Qcm94eTsKCiAgIHR5cGUgR3RrX0FjY2VsX0ZsYWdzIGlzIG5ldyBHdWludDsKICAgQWNj ZWxfVmlzaWJsZSAgICAgICAgOiBjb25zdGFudCBHdGtfQWNjZWxfRmxhZ3M7CiAgIEFjY2VsX1Np Z25hbF9WaXNpYmxlIDogY29uc3RhbnQgR3RrX0FjY2VsX0ZsYWdzOwogICBBY2NlbF9Mb2NrZWQg ICAgICAgICA6IGNvbnN0YW50IEd0a19BY2NlbF9GbGFnczsKICAgQWNjZWxfTWFzayAgICAgICAg ICAgOiBjb25zdGFudCBHdGtfQWNjZWxfRmxhZ3M7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICAtLSAgQWNjZWxlcmF0b3IgR3JvdXBzICAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQoKICAgcHJvY2VkdXJlIEd0a19OZXcgKFdpZGdldCA6IG91dCBHdGtfQWNjZWxfR3Jv dXApOwoKICAgZnVuY3Rpb24gR2V0X0RlZmF1bHQgcmV0dXJuIEd0a19BY2NlbF9Hcm91cDsKCiAg IC0tICBwcm9jZWR1cmUgUmVmCiAgIC0tICBwcm9jZWR1cmUgVW5yZWYKCiAgIGZ1bmN0aW9uIEFj dGl2YXRlCiAgICAgKEFjY2VsX0dyb3VwIDogaW4gR3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2Nl bF9LZXkgICA6IGluIEdkay5UeXBlcy5HZGtfS2V5X1R5cGU7CiAgICAgIEFjY2VsX01vZHMgIDog aW4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlKSByZXR1cm4gQm9vbGVhbjsKCiAgIGZ1bmN0 aW9uIEFjY2VsX0dyb3Vwc19BY3RpdmF0ZQogICAgIChPYmplY3QgICAgIDogYWNjZXNzIEd0ay5P YmplY3QuR3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgIEFjY2VsX0tleSAgOiBpbiBHZGsu VHlwZXMuR2RrX0tleV9UeXBlOwogICAgICBBY2NlbF9Nb2RzIDogaW4gR2RrLlR5cGVzLkdka19N b2RpZmllcl9UeXBlKSByZXR1cm4gQm9vbGVhbjsKCiAgIHByb2NlZHVyZSBBdHRhY2gKICAgICAo QWNjZWxfR3JvdXAgOiBpbiBHdGtfQWNjZWxfR3JvdXA7CiAgICAgIE9iamVjdCAgICAgIDogYWNj ZXNzIEd0ay5PYmplY3QuR3RrX09iamVjdF9SZWNvcmQnQ2xhc3MpOwogICAtLSAgT2JqZWN0IHNo b3VsZCBiZSBhYmxlIHRvIGdldCBrZXlfcHJlc3MgYW5kIGtleV9yZWxlYXNlIGV2ZW50cyAoaWUK ICAgLS0gIHRoaXMgd29uJ3Qgd29yayBpbiBhIEd0a19Cb3ggd2hpY2ggaGFzIG5vIHdpbmRvdyku CiAgIC0tICBUaGUgcmVjb21tZW5kZWQgd2F5IGlzIHRvIGF0dGFjaCB0aGUgQWNjZWxfR3JvdXAg dG8gdGhlIHRvcGxldmVsIHdpbmRvdy4KCiAgIHByb2NlZHVyZSBEZXRhY2gKICAgICAoQWNjZWxf R3JvdXAgOiBpbiBHdGtfQWNjZWxfR3JvdXA7CiAgICAgIE9iamVjdCAgICAgIDogYWNjZXNzIEd0 ay5PYmplY3QuR3RrX09iamVjdF9SZWNvcmQnQ2xhc3MpOwoKICAgcHJvY2VkdXJlIExvY2sgKEFj Y2VsX0dyb3VwIDogaW4gR3RrX0FjY2VsX0dyb3VwKTsKCiAgIHByb2NlZHVyZSBVbmxvY2sgKEFj Y2VsX0dyb3VwIDogaW4gR3RrX0FjY2VsX0dyb3VwKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICAtLSAgQWNjZWxlcmF0b3IgR3JvdXAgRW50cmllcyAgLS0KICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBHZXRfRW50cnkKICAg ICAoQWNjZWxfR3JvdXAgOiBpbiBHdGtfQWNjZWxfR3JvdXA7CiAgICAgIEFjY2VsX0tleSAgIDog aW4gR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAgICAgQWNjZWxfTW9kcyAgOiBpbiBHZGsuVHlw ZXMuR2RrX01vZGlmaWVyX1R5cGUpIHJldHVybiBHdGtfQWNjZWxfRW50cnk7CgogICBwcm9jZWR1 cmUgTG9ja19FbnRyeQogICAgIChBY2NlbF9Hcm91cCA6IGluIEd0a19BY2NlbF9Hcm91cDsKICAg ICAgQWNjZWxfS2V5ICAgOiBpbiBHZGsuVHlwZXMuR2RrX0tleV9UeXBlOwogICAgICBBY2NlbF9N b2RzICA6IGluIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSk7CgogICBwcm9jZWR1cmUgVW5s b2NrX0VudHJ5CiAgICAgKEFjY2VsX0dyb3VwIDogaW4gR3RrX0FjY2VsX0dyb3VwOwogICAgICBB Y2NlbF9LZXkgICA6IGluIEdkay5UeXBlcy5HZGtfS2V5X1R5cGU7CiAgICAgIEFjY2VsX01vZHMg IDogaW4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlKTsKCiAgIHByb2NlZHVyZSBBZGQKICAg ICAoQWNjZWxfR3JvdXAgIDogaW4gR3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2NlbF9LZXkgICAg OiBpbiAgICAgR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAgICAgQWNjZWxfTW9kcyAgIDogaW4g ICAgIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZTsKICAgICAgQWNjZWxfRmxhZ3MgIDogaW4g ICAgIEd0a19BY2NlbF9GbGFnczsKICAgICAgT2JqZWN0ICAgICAgIDogYWNjZXNzIEd0ay5PYmpl Y3QuR3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgIEFjY2VsX1NpZ25hbCA6IGluICAgICBT dHJpbmcpOwoKICAgcHJvY2VkdXJlIFJlbW92ZQogICAgIChBY2NlbF9Hcm91cCA6IGluIEd0a19B Y2NlbF9Hcm91cDsKICAgICAgQWNjZWxfS2V5ICAgOiBpbiAgICAgR2RrLlR5cGVzLkdka19LZXlf VHlwZTsKICAgICAgQWNjZWxfTW9kcyAgOiBpbiAgICAgR2RrLlR5cGVzLkdka19Nb2RpZmllcl9U eXBlOwogICAgICBPYmplY3QgICAgICA6IGFjY2VzcyBHdGsuT2JqZWN0Lkd0a19PYmplY3RfUmVj b3JkJ0NsYXNzKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgQWNjZWxl cmF0b3IgU2lnbmFscyAgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9j ZWR1cmUgSGFuZGxlX0FkZAogICAgIChPYmplY3QgICAgICAgICAgOiBhY2Nlc3MgR3RrLk9iamVj dC5HdGtfT2JqZWN0X1JlY29yZCdDbGFzczsKICAgICAgQWNjZWxfU2lnbmFsX0lkIDogaW4gICAg IEd1aW50OwogICAgICBBY2NlbF9Hcm91cCAgICAgOiBpbiAgICAgR3RrX0FjY2VsX0dyb3VwOwog ICAgICBBY2NlbF9LZXkgICAgICAgOiBpbiAgICAgR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAg ICAgQWNjZWxfTW9kcyAgICAgIDogaW4gICAgIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZTsK ICAgICAgQWNjZWxfRmxhZ3MgICAgIDogaW4gICAgIEd0a19BY2NlbF9GbGFncyk7CgogICBwcm9j ZWR1cmUgSGFuZGxlX1JlbW92ZQogICAgIChPYmplY3QgICAgICA6IGFjY2VzcyBHdGsuT2JqZWN0 Lkd0a19PYmplY3RfUmVjb3JkJ0NsYXNzOwogICAgICBBY2NlbF9Hcm91cCA6IGluICAgICBHdGtf QWNjZWxfR3JvdXA7CiAgICAgIEFjY2VsX0tleSAgIDogaW4gICAgIEdkay5UeXBlcy5HZGtfS2V5 X1R5cGU7CiAgICAgIEFjY2VsX01vZHMgIDogaW4gICAgIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJf VHlwZSk7CgogICAtLSAgZnVuY3Rpb24gQ3JlYXRlX0FkZAogICAtLSAgZnVuY3Rpb24gQ3JlYXRl X1JlbW92ZQogICAtLSAgcHJvY2VkdXJlIE1hcnNoYWxfQWRkCiAgIC0tICBwcm9jZWR1cmUgTWFy c2hhbF9SZW1vdmUKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgTWlzY2VsbGFuZW91 cyAgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAtLSAgZnVuY3Rpb24gQWNjZWxfR3Jv dXBzX0Zyb21fT2JqZWN0CiAgIC0tICBmdW5jdGlvbiBFbnRyaWVzX0Zyb21fT2JqZWN0CgogICAt LS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgQWNjZWxlcmF0b3JzICAtLQogICAtLS0tLS0tLS0t LS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gQWNjZWxlcmF0b3JfVmFsaWQKICAgICAoS2V5dmFsICAg IDogaW4gR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAgICAgTW9kaWZpZXJzIDogaW4gR2RrLlR5 cGVzLkdka19Nb2RpZmllcl9UeXBlKSByZXR1cm4gQm9vbGVhbjsKCiAgIHByb2NlZHVyZSBBY2Nl bGVyYXRvcl9QYXJzZQogICAgIChBY2NlbGVyYXRvciAgICAgIDogaW4gICAgIFN0cmluZzsKICAg ICAgQWNjZWxlcmF0b3JfS2V5ICA6ICAgIG91dCBHZGsuVHlwZXMuR2RrX0tleV9UeXBlOwogICAg ICBBY2NlbGVyYXRvcl9Nb2RzIDogICAgb3V0IEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSk7 CgogICBmdW5jdGlvbiBBY2NlbGVyYXRvcl9OYW1lCiAgICAgKEFjY2VsZXJhdG9yX0tleSAgOiBp biBHZGsuVHlwZXMuR2RrX0tleV9UeXBlOwogICAgICBBY2NlbGVyYXRvcl9Nb2RzIDogaW4gR2Rr LlR5cGVzLkdka19Nb2RpZmllcl9UeXBlKSByZXR1cm4gU3RyaW5nOwoKICAgcHJvY2VkdXJlIEFj Y2VsZXJhdG9yX1NldF9EZWZhdWx0X01vZF9NYXNrCiAgICAgKERlZmF1bHRfTW9kX01hc2sgOiBp biBHZGsuVHlwZXMuR2RrX01vZGlmaWVyX1R5cGUpOwoKICAgZnVuY3Rpb24gQWNjZWxlcmF0b3Jf R2V0X0RlZmF1bHRfTW9kX01hc2sKICAgICByZXR1cm4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9U eXBlOwoKcHJpdmF0ZQoKICAgQWNjZWxfVmlzaWJsZSAgICAgICAgOiBjb25zdGFudCBHdGtfQWNj ZWxfRmxhZ3MgOj0gMiAqKiAwOwogICBBY2NlbF9TaWduYWxfVmlzaWJsZSA6IGNvbnN0YW50IEd0 a19BY2NlbF9GbGFncyA6PSAyICoqIDE7CiAgIEFjY2VsX0xvY2tlZCAgICAgICAgIDogY29uc3Rh bnQgR3RrX0FjY2VsX0ZsYWdzIDo9IDIgKiogMjsKICAgQWNjZWxfTWFzayAgICAgICAgICAgOiBj b25zdGFudCBHdGtfQWNjZWxfRmxhZ3MgOj0gMTYjMDcjOwoKICAgcHJhZ21hIEltcG9ydCAoQywg QWNjZWxlcmF0b3JfU2V0X0RlZmF1bHRfTW9kX01hc2ssCiAgICAgICAgICAgICAgICAgICJndGtf YWNjZWxlcmF0b3Jfc2V0X2RlZmF1bHRfbW9kX21hc2siKTsKICAgcHJhZ21hIEltcG9ydCAoQywg QWNjZWxlcmF0b3JfR2V0X0RlZmF1bHRfTW9kX01hc2ssCiAgICAgICAgICAgICAgICAgICJndGtf YWNjZWxlcmF0b3JfZ2V0X2RlZmF1bHRfbW9kX21hc2siKTsKICAgcHJhZ21hIEltcG9ydCAoQywg R2V0X0RlZmF1bHQsICJndGtfYWNjZWxfZ3JvdXBfZ2V0X2RlZmF1bHQiKTsKICAgcHJhZ21hIElt cG9ydCAoQywgTG9jaywgImd0a19hY2NlbF9ncm91cF9sb2NrIik7CiAgIHByYWdtYSBJbXBvcnQg KEMsIFVubG9jaywgImd0a19hY2NlbF9ncm91cF91bmxvY2siKTsKZW5kIEd0ay5BY2NlbF9Hcm91 cDsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3Ig dGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAg ICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVk IENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAg ICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAg LS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlv biwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1 bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFu ICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVz ZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90 IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhl Y3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNl LiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tICBUaGlzIGlzIHRo ZSBiYXNlIGNsYXNzIG9mIHRoZSB3aWRnZXQgaGllcmFyY2h5LgotLSAgRXZlcnl0aGluZyBpbiBH dGtBZGEgaW5oZXJpdHMgZnJvbSB0aGlzIGNsYXNzIEd0a19PYmplY3QsIGV4Y2VwdCBmb3IgYSBm ZXcKLS0gIHN0cnVjdHVyZXMgaW4gdGhlIEdkay4qIHBhY2thZ2VzIChsb3ctbGV2ZWwgZHJhd2lu ZyByb3V0aW5lcykuCi0tCi0tICBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2V0IG9mIGhhbmRmdWwg ZmVhdHVyZXMgdGhhdCB5b3UgY2FuIGNob29zZSB0byByZXVzZQotLSAgaW4geW91ciBhcHBsaWNh dGlvbnM6Ci0tCi0tICAtIFJlZmVyZW5jZSBjb3VudGluZzogYW4gb2JqZWN0IGlzIG5vdCBkZWxl dGVkIHdoaWxlIHRoZXJlIGV4aXN0cyBhdCBsZWFzdAotLSAgICBvbmUgcmVmZXJlbmNlIHRvIGl0 LiBBbHRob3VnaCBHdGtBZGEgbW9zdGx5IHRha2VzIGNhcmUgb2YgdGhhdCBhc3BlY3QKLS0gICAg dHJhbnNwYXJlbnRseSwgeW91IG1pZ2h0IG5lZWQgaW4gc29tZSBvYnNjdXJlIGNhc2VzIHRvIGlu Y3JlbWVudCBvcgotLSAgICBkZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgYSB3 aWRnZXQgbWFudWFsbHksIHNvIHRoYXQgaXQgaXMgbm90Ci0tICAgIHJlbW92ZWQgZnJvbSBtZW1v cnkgd2hpbGUgeW91IHN0aWxsIG5lZWQgaXQuCi0tCi0tICAtIFVzZXIgZGF0YTogYW55IG51bWJl ciBvZiBkYXRhIGNhbiBiZSBhdHRhY2hlZCB0byBhIEd0a19PYmplY3Qgb3Igb25lIG9mCi0tICAg IGl0cyBjaGlsZHJlbi4gVGhlc2VzIGRhdGEgYXJlIHJlZmVyZW5jZXMgYnkgYSBTdHJpbmcsIGlu IGEgaGFzaC10YWJsZS4KLS0gICAgR3RrQWRhIGl0c2VsZiB1c2VzIHRoaXMgZmVhdHVyZSB0byBw cm92aWRlIGFuIGVhc3kgY29udmVyc2lvbiBiZXR3ZWVuIEMKLS0gICAgYW5kIEFkYSB3aWRnZXRz LgotLSAgICBBbHRob3VnaCB5b3UgbWlnaHQgcHJlZmVyIHRvIGhhdmUgYSBjb21wbGV0ZWx5IG9i amVjdC1vcmllbnRlZAotLSAgICBhcHBsaWNhdGlvbiAoYW5kIHRodXMgYXNzb2NpYXRlIGRhdGEg dGhyb3VnaCBjbGFzcyBpbmhlcml0YW5jZSksIGl0Ci0tICAgIG1pZ2h0IGJlIGNvbnZlbmllbnQg dG8gZGlyZWN0bHkgYXR0YWNoIHNvbWUgZGF0YSB0byB5b3VyIG9iamVjdHMuCi0tCi0tICAtIEl0 IGFsc28gY29udGFpbnMgdGhlIGJhc2ljIHN0cnVjdHVyZXMgYW5kIHN1YnByb2dyYW1zIHJlcXVp cmVkIGZvciBzaWduYWwKLS0gICAgZW1pc3Npb24uIFRoaXMgaXMgb2YgY291cnNlIHVzZWQgdG8g aW1wbGVtZW50IHRoZSBzaWduYWwgbWVjaGFuaXNtIGluCi0tICAgIEd0a0FkYSBpdHNlbGYsIGJ1 dCBjYW4gYWxzbyBiZSB1c2VkIHRvIGltcGxlbWVudCBhIE1vZGVsL1ZpZXcvQ29udHJvbGxlcgot LSAgICBmcmFtZXdvcmsuCi0tCi0tICBOb3RlIHRoYXQgYSBsb3Qgb2YgZnVuY3Rpb25zIHByb3Zp ZGVkIGluIHRoZSBDIGludGVyZmFjZSBhcmUgbm90IHByb3ZpZGVkCi0tICBoZXJlLiBUaGV5IGFy ZSB1c2VkIHRvIGVtdWxhdGUgYW4gb2JqZWN0LW9yaWVudGVkIGxhbmd1YWdlIGluIEMsIHdoaWNo IGNhbgotLSAgb2YgY291cnNlIGJlIGRvbmUgbXVjaCBtb3JlIGNvbnZlbmllbnRseSBpbiBBZGEu IFRoZXJlZm9yZSBtb3N0IG9mIHRoZXNlCi0tICBmdW5jdGlvbnMgYXJlIG5vdCBuZWVkZWQuCi0t Ci0tICBIZXJlIGlzIGEgYnJpZWYgZXhwbGFuYXRpb24gb24gaG93IHRoZSByZWZlcmVuY2UgY291 bnRpbmcgYW5kIGRlc3RydWN0aW9uCi0tICBwcm9jZXNzIHdvcmsuIFlvdSBzaG91bGQgbm90IGhh dmUgdG8gdW5kZXJzdGFuZCBhbGwgdGhpcyB0byB1c2UgR3RrQWRhLCBidXQKLS0gIGl0IG1pZ2h0 IGhlbHAgYW55d2F5LgotLQotLSAgV2hlbiBhbiBvYmplY3QgKGRlc2NlbmRhbnQgb2YgR3RrLk9i amVjdCkgaXMgY3JlYXRlZCwgaXQgaGFzIGluaXRpYWxseSBhCi0tICByZWZfY291bnQgb2YgMS4g QSBmbGFnIGlzIHNldCB0byBzYXkgdGhlIG9iamVjdCBpcyAiZmxvYXRpbmciLiAgU2VlIHRoZQot LSAgRmxhZ3MgZnVuY3Rpb25zIGluIHRoaXMgcGFja2FnZSBmb3IgaG93IHRvIHJldHJpZXZlIHRo ZSBzdGF0dXMgb2YgdGhpcwotLSAgZmxhZy4KLS0KLS0gIFdoZW4gdGhlIG9iamVjdCBnZXRzIGEg cGFyZW50IChpZSBHdGsuV2lkZ2V0LlNldF9QYXJlbnQgaXMgY2FsbGVkLCBwb3NzaWJseQotLSAg ZnJvbSBvdGhlciBzdWJwcm9ncmFtcyBsaWtlIEd0ay5Db250YWluZXIuQWRkLCBHdGsuQm94LlBh Y2tfU3RhcnQsIC4uLiksCi0tICB0aGUgcmVmX2NvdW50IG9mIHRoZSBvYmplY3QgaXMgaW5jcmVt ZW50ZWQgdG8gMi4KLS0gIElmIHRoZSBvYmplY3Qgd2FzIHN0aWxsICJmbG9hdGluZyIsIGl0IGlz IGFsc28gInNpbmtlZCIsIGllIGl0cyByZWZfY291bnQKLS0gIGlzIGRlY3JlbWVudGVkIHRvIDEs IGFuZCB0aGUgImZsb2F0aW5nIiBmbGFnIGlzIGNsZWFyZWQuCi0tCi0tICBUaGUgc2FtZSBiZWhh dmlvciBhcyBhYm92ZSBoYXBwZW5zIHdoZW4gdGhlIG9iamVjdCBpcyByZWdpc3RlcmVkIGFzIGEK LS0gIHRvcC1sZXZlbCB3aWRnZXQgKGkuZS4gd2Uga25vdyBpdCB3b24ndCBoYXZlIGFueSBwYXJl bnQpLgotLQotLSAgVGh1cyB0aGUgbm9ybWFsIGxpZmUgY3ljbGUgb2YgYW4gb2JqZWN0IGlzIHRv IGhhdmUgYSByZWZfY291bnQgdG8gMSwgYW5kCi0tICBub3QgYmUgYSAiZmxvYXRpbmciIG9iamVj dC4KLS0KLS0gIFdoZW4gdGhlIG9iamVjdCBpcyBkZXN0cm95ZWQsIHRoZSBmb2xsb3dpbmcgaGFw cGVuczoKLS0gICAgIEEgdGVtcG9yYXJ5IHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IGlzIGNyZWF0 ZWQgKGNhbGwgdG8gUmVmKSwgYW5kCi0tICAgICAgICByZWZfY291bnQgdG8gMi4KLS0gICAgIFRo ZSBvYmplY3QgaXMgc2h1dGRvd246Ci0tICAgICAgICBJdCBpcyByZW1vdmVkIGZyb20gaXRzIHBh cmVudCAoaWYgYW55KSwgYW5kIGl0cyByZWZfY291bnQgaXMKLS0gICAgICAgICAgZGVjcmVtZW50 ZWQgdG8gMS4KLS0gICAgICAgIFRoZSAiZGVzdHJveSIgc2lnbmFsIGlzIGVtaXR0ZWQsIHRoZSB1 c2VyJ3MgaGFuZGxlcnMgYXJlIGNhbGxlZCwKLS0gICAgICAgICAgYW5kIHRoZW4gYWxsIHRoZSBo YW5kbGVycyBjb25uZWN0ZWQgdG8gdGhlIG9iamVjdCBhcmUgZGVzdHJveWVkLgotLSAgICAgVGhl IG9iamVjdCBpcyB1bnJlZi1lZC4gSWYgaXRzIHJlZl9jb3VudCBnb2VzIGRvd24gdG8gMCAobm9y bWFsIGNhc2UpLAotLSAgICAgICAgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBvYmplY3QgYW5kIGl0 cyB1c2VyX2RhdGEgaXMgZnJlZWQuCi0tCi0tICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lv bj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0aCBTeXN0ZW07CndpdGggR3RrYWRhLlR5cGVzOwoKcGFj a2FnZSBHdGsuT2JqZWN0IGlzCgogICB0eXBlIEd0a19PYmplY3RfUmVjb3JkIGlzIG5ldyBHdGsu Um9vdF9UeXBlIHdpdGggcHJpdmF0ZTsKICAgdHlwZSBHdGtfT2JqZWN0IGlzIGFjY2VzcyBhbGwg R3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CgogICBwcm9jZWR1cmUgUmVmIChPYmplY3QgOiBhY2Nl c3MgR3RrX09iamVjdF9SZWNvcmQpOwogICAtLSAgSW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291 bnQgb24gdGhlIG9iamVjdC4KICAgLS0gIFNpbmNlIGFuIG9iamVjdCBpcyBub3QgZGVsZXRlZCB3 aGlsZSBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIG5vdCBudWxsLAogICAtLSAgdGhpcyBpcyBhIHdh eSB0byBrZWVwIGFuIG9iamVjdCBpbiBtZW1vcnkuCiAgIC0tICBHdGtBZGEgbW9zdGx5IHRha2Vz IGNhcmUgb2YgZXZlcnl0aGluZywgYW5kIHlvdSBzaG91bGQgbm90IG5lZWQgdGhpcwogICAtLSAg ZnVuY3Rpb24gZXhjZXB0IGluIHNwZWNpYWwgY2FzZXMuCgogICBwcm9jZWR1cmUgVW5yZWYgKE9i amVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCk7CiAgIC0tICBEZWNyZW1lbnQgdGhlIHJl ZmVyZW5jZSBjb3VudCBmb3IgYW4gb2JqZWN0LgogICAtLSAgSWYgaXQgcGFzc2VkIGZyb20gMSB0 byAwLCB0aGVuIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgb2JqZWN0IGlzCiAgIC0tICBm cmVlZCwgYW5kIHRoZSBvYmplY3Qgbm8gbG9uZ2VyIHVzYWJsZS4KICAgLS0gIEl0IGlzIGJldHRl ciB0byB1c2UgRGVzdHJveSB0aGFuIFVucmVmIHRvIGRlc3Ryb3kgYW4gb2JqZWN0LCBhbHRob3Vn aAogICAtLSAgYm90aCBtaWdodCBiZSBhY2NlcHRhYmxlLgoKICAgcHJvY2VkdXJlIFNpbmsgKE9i amVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCk7CiAgIC0tICBTaW5rIHRoZSBvYmplY3Qu CiAgIC0tICBJZiB0aGUgb2JqZWN0IGlzIGZsb2F0aW5nIChkb2VzIG5vdCBoYXZlIGEgcGFyZW50 IHlldCksIGl0IGlzIHVucmVmLWVkCiAgIC0tICBvbmNlIGFuZCB0aGUgZmxvYXRpbmcgZmxhZyBp cyBjbGVhcmVkLgoKICAgcHJvY2VkdXJlIERlc3Ryb3kgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2Jq ZWN0X1JlY29yZCk7CiAgIC0tICBEZXN0cm95IHRoZSBvYmplY3QuCiAgIC0tICBUaGlzIGVtaXRz IGEgImRlc3Ryb3kiIHNpZ25hbCwgY2FsbHMgYWxsIHlvdXIgaGFuZGxlcnMsIGFuZCB0aGVuCiAg IC0tICB1bmNvbm5lY3RzIHRoZW0gYWxsLiBUaGUgb2JqZWN0IGlzIHRoZW4gdW5yZWYtZWQsIGFu ZCBpZiBpdHMgcmVmZXJlbmNlCiAgIC0tICBjb3VudCBnb2VzIGRvd24gdG8gMCwgdGhlIG1lbW9y eSBhc3NvY2lhdGVkIHdpdGggdGhlIG9iamVjdCBhbmQgaXRzCiAgIC0tICB1c2VyIGRhdGEgaXMg ZnJlZWQuCiAgIC0tICBOb3RlIHRoYXQgd2hlbiB5b3UgZGVzdHJveSBoYW5kbGVycyBhcmUgY2Fs bGVkLCB0aGUgdXNlcl9kYXRhIGlzIHN0aWxsCiAgIC0tICBhdmFpbGFibGUuCgogICBmdW5jdGlv biBHZXRfVHlwZSByZXR1cm4gR3RrLkd0a19UeXBlOwogICAtLSAgUmV0dXJuIHRoZSBpbnRlcm5h bCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBHdGtfT2JqZWN0IGludGVybmFsbHkuCiAgIHByYWdt YSBJbXBvcnQgKEMsIEdldF9UeXBlLCAiZ3RrX29iamVjdF9nZXRfdHlwZSIpOwoKICAgZnVuY3Rp b24gR2V0X1R5cGUgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCkgcmV0dXJuIEd0 a19UeXBlOwogICAtLSAgUmV0dXJuIHRoZSB0eXBlIG9mIE9iamVjdC4KICAgLS0gIFRoaXMgZnVu Y3Rpb24gaXMgbW9zdGx5IHVzZWQgaW50ZXJuYWxseSwgc2luY2UgaW4gQWRhIHlvdSBjYW4gc2lt cGx5CiAgIC0tICB0ZXN0IHdoZXRoZXIgYW4gb2JqZWN0IGJlbG9uZyB0byBhIGNsYXNzIHdpdGgg YSBzdGF0ZW1lbnQgbGlrZToKICAgLS0KICAgLS0gICAgIGlmIE9iamVjdCBpbiBHdGtfQnV0dG9u X1JlY29yZCdDbGFzcyB0aGVuIC4uLgogICAtLQogICAtLSAgd2hpY2ggaXMgZWFzaWVyLgoKICAg LS0tLS0tLS0tLS0tLQogICAtLSAgRmxhZ3MgIC0tCiAgIC0tLS0tLS0tLS0tLS0KICAgLS0gIEVh Y2ggb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNldCBvZiBmbGFncywgdGhhdCByZXBvcnRz IHRoZSBzdGF0ZQogICAtLSAgb2YgdGhlIG9iamVjdC4KICAgLS0gIFRoZSBmb2xsb3dpbmcgZmxh Z3MgYXJlIGtub3duIGJ5IGFsbCBvYmplY3RzOgogICAtLQogICAtLSAgLSAiRGVzdHJveWVkIjoK ICAgLS0gICAgIFNldCBpZiB0aGUgb2JqZWN0IGlzIG1hcmtlZCBhcyBkZXN0cm95ZWQgKGlmIGl0 cyByZWZlcmVuY2UgY291bnQgaXMKICAgLS0gICAgIG5vdCB5ZXQgMCwgdGhlIG1lbW9yeSBoYXMg bm90IGJlZW4gZnJlZWQsIGJ1dCB5b3Ugc2hvdWxkIG5vdCB1c2UgaXQKICAgLS0gICAgIGFueXdh eSkuCiAgIC0tCiAgIC0tICAtICJGbG9hdGluZyI6CiAgIC0tICAgICBUaGUgb2JqZWN0IGhhcyBu byBwYXJlbnQgeWV0LCBzaW5jZSBpdCB3YXMganVzdCBjcmVhdGVkLiBJdHMKICAgLS0gICAgIHJl ZmVyZW5jZSBjb3VudCBpcyBzdGlsbCAxIChhcyBpdCB3YXMgaW5pdGlhbGx5KS4gVGhpcyBmbGFn IGlzCiAgIC0tICAgICBjbGVhcmVkIGFzIHNvb24gYXMgU2V0X1BhcmVudCBpcyBjYWxsZWQgb24g dGhlIHdpZGdldCBvciB0aGUgd2lkZ2V0CiAgIC0tICAgICBpcyBxdWFsaWZpZWQgYXMgYSB0b3Bs ZXZlbCB3aWRnZXQgKHNlZQogICAtLSAgICAgR3RrLkNvbnRhaW5lci5SZWdpc3Rlcl9Ub3BsZXZl bCkuCiAgIC0tCiAgIC0tICAtICJDb25uZWN0ZWQiOgogICAtLSAgICAgU2V0IGlmIHRoZSBvYmpl Y3QgaXMgY29ubmVjdGVkIHRvIGF0IGxlYXN0IG9uZSBoYW5kbGVyCiAgIC0tCiAgIC0tICAtICJD b25zdHJ1Y3RlZCI6CiAgIC0tICAgICBTZXQgaWYgdGhlIG9iamVjdCBoYXMgYmVlbiBmdWxseSBj b25zdHJ1Y3RlZCwgYW5kIGlzIG5vdyB1c2FibGUuCiAgIC0tICAgICBFdmVyeSB0aW1lIHlvdSBj cmVhdGUgYW4gb2JqZWN0IGF0IHRoZSBHdGtBZGEgbGV2ZWwsIHRoZSBvYmplY3Qgd2lsbAogICAt LSAgICAgYmUgZnVsbHkgY29uc3RydWN0ZWQsIGFuZCB5b3Ugc2hvdWxkbid0IGhhdmUgdG8gd29y cnkgYWJvdXQgdGhhdAogICAtLSAgICAgZmxhZy4KCiAgIERlc3Ryb3llZCAgIDogY29uc3RhbnQg Oj0gMiAqKiAwOwogICBGbG9hdGluZyAgICA6IGNvbnN0YW50IDo9IDIgKiogMTsKICAgQ29ubmVj dGVkICAgOiBjb25zdGFudCA6PSAyICoqIDI7CiAgIENvbnN0cnVjdGVkIDogY29uc3RhbnQgOj0g MiAqKiAzOwoKICAgZnVuY3Rpb24gRmxhZ3MgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1Jl Y29yZCkgcmV0dXJuIEd1aW50MzI7CiAgIC0tICBSZXR1cm4gdGhlIGZsYWdzIHRoYXQgYXJlIHNl dCBmb3IgdGhlIG9iamVjdCwgYXMgYSBiaW5hcnkgbWFzay4KCiAgIHByb2NlZHVyZSBTZXRfRmxh Z3MgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZDsKICAgICAgICAgICAgICAgICAg ICAgICAgRmxhZ3MgIDogaW4gICAgIEd1aW50MzIpOwogICAtLSAgU2V0IHNvbWUgc3BlY2lmaWMg ZmxhZ3MgZm9yIHRoZSBvYmplY3QuCiAgIC0tICBGbGFncyBpcyBhIG1hc2sgdGhhdCB3aWxsIGJl IGFkZGVkIHRvIHRoZSBjdXJyZW50IGZsYWdzIG9mIHRoZSBvYmplY3QuCgogICBwcm9jZWR1cmUg VW5zZXRfRmxhZ3MgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZDsKICAgICAgICAg ICAgICAgICAgICAgICAgICBGbGFncyAgOiBpbiAgICAgR3VpbnQzMik7CiAgIC0tICBVbnNldCBz b21lIHNwZWNpZmljIGZsYWdzIGZvciB0aGUgb2JqZWN0LgogICAtLSAgRmxhZ3MgaXMgYSBtYXNr IHRoYXQgd2lsbCBiZSBkZWxldGVkIGZyb20gdGhlIGN1cnJlbnQgZmxhZ3Mgb2YgdGhlCiAgIC0t ICBvYmplY3QuCgogICBmdW5jdGlvbiBGbGFnX0lzX1NldCAoT2JqZWN0IDogYWNjZXNzIEd0a19P YmplY3RfUmVjb3JkOwogICAgICAgICAgICAgICAgICAgICAgICAgRmxhZyAgIDogaW4gICAgIEd1 aW50MzIpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLSAgUmV0 dXJuIFRydWUgaWYgdGhlIHNwZWNpZmljIGZsYWcgRmxhZyBpcyBzZXQgZm9yIHRoZSBvYmplY3Qu CgogICBmdW5jdGlvbiBEZXN0cm95ZWRfSXNfU2V0IChPYmplY3QgOiBhY2Nlc3MgR3RrX09iamVj dF9SZWNvcmQnQ2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xl YW47CiAgIC0tICBUZXN0IGlmIHRoZSBEZXN0cm95ZWQgZmxhZyBpcyBzZXQgZm9yIHRoZSBvYmpl Y3QuCgogICBmdW5jdGlvbiBGbG9hdGluZ19Jc19TZXQgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2Jq ZWN0X1JlY29yZCdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29s ZWFuOwogICAtLSAgVGVzdCBpZiB0aGUgRmxvYXRpbmcgZmxhZyBpcyBzZXQgZm9yIHRoZSBvYmpl Y3QuCgogICBmdW5jdGlvbiBDb25uZWN0ZWRfSXNfU2V0IChPYmplY3QgOiBhY2Nlc3MgR3RrX09i amVjdF9SZWNvcmQnQ2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJv b2xlYW47CiAgIC0tICBUZXN0IGlmIHRoZSBDb25uZWN0ZWQgZmxhZyBpcyBzZXQgZm9yIHRoZSBv YmplY3QuCgogICBmdW5jdGlvbiBDb25zdHJ1Y3RlZF9Jc19TZXQgKE9iamVjdCA6IGFjY2VzcyBH dGtfT2JqZWN0X1JlY29yZCdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBCb29sZWFuOwogICAtLSAgVGVzdCBpZiB0aGUgQ29uc3RydWN0ZWQgZmxhZyBpcyBzZXQg Zm9yIHRoZSBvYmplY3QKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIENyZWF0 aW5nIG5ldyB3aWRnZXRzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tICBU aGVzZSB0eXBlcyBhbmQgZnVuY3Rpb25zIGFyZSB1c2VkIG9ubHkgd2hlbiBjcmVhdGluZyBuZXcg d2lkZ2V0IHR5cGVzCiAgIC0tICBkaXJlY3RseSBpbiBBZGEuIFRoZXNlIGZ1bmN0aW9ucyBpbml0 aWFsaXplIHRoZSBjbGFzc2VzIHNvIHRoYXQgdGhleSBhcmUKICAgLS0gIGNvcnJlY3RseSByZWNv Z25pemVkIGJ5IGd0aysgaXRzZWxmCiAgIC0tICBTZWUgdGhlIEd0a0FkYSB1c2VyJ3MgZ3VpZGUg Zm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSB5b3VyCiAgIC0tICBvd24gd2lk Z2V0IHR5cGVzIGluIEFkYS4KCiAgIHR5cGUgU2lnbmFsX1BhcmFtZXRlcl9UeXBlcyBpcyBhcnJh eSAoTmF0dXJhbCByYW5nZSA8PiwgTmF0dXJhbCByYW5nZSA8PikKICAgICBvZiBHdGtfVHlwZTsK ICAgLS0gIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVycyBmb3IgZWFjaCBldmVudC4K ICAgLS0gIEVhY2ggZXZlbnQgZGVmaW5lZCB3aXRoIEluaXRpYWxpemVfQ2xhc3NfUmVjb3JkIGJl bG93IHNob3VsZCBoYXZlIGFuCiAgIC0tICBlbnRyeSBpbiB0aGlzIHRhYmxlLiBJZiBHdGtfVHlw ZV9Ob25lIGlzIGZvdW5kIGluIHRoZSB0YWJsZSwgaXQgaXMKICAgLS0gIGlnbm9yZWQuIEZvciBp bnN0YW5jZSwgYSBTaWduYWxfUGFyYW1ldGVyX1R5cGUgbGlrZToKICAgLS0gICAgKDEgPT4gKDEg PT4gR2RrX1R5cGVfR2RrX0V2ZW50LCAyID0+IEdka19UeXBlX05vbmRlKSwKICAgLS0gICAgIDIg PT4gKDEgPT4gR2RrX1R5cGVfSW50LCAgICAgICAyID0+IEdka19UeXBlX0ludCkpOwogICAtLSAg ZGVmaW5lcyB0d28gc2lnbmFscywgdGhlIGZpcnN0IHdpdGggYSBzaW5nbGUgR2RrX0V2ZW50IHBh cmFtZXRlciwgdGhlCiAgIC0tICBzZWNvbmQgd2l0aCB0d28gaW50cyBwYXJhbWV0ZXJzLgoKICAg TnVsbF9QYXJhbWV0ZXJfVHlwZXMgOiBjb25zdGFudCBTaWduYWxfUGFyYW1ldGVyX1R5cGVzICgx IC4uIDAsIDEgLi4gMCkgOj0KICAgICAob3RoZXJzID0+IChvdGhlcnMgPT4gR3RrX1R5cGVfTm9u ZSkpOwogICAtLSAgQW4gZW1wdHkgYXJyYXksIHVzZWQgYXMgYSBkZWZhdWx0IHBhcmFtZXRlciBp biBJbml0aWFsaXplX0NsYXNzX1JlY29yZC4KCiAgIHByb2NlZHVyZSBJbml0aWFsaXplX0NsYXNz X1JlY29yZAogICAgIChPYmplY3QgICAgICAgICAgICAgICAgICAgIDogYWNjZXNzIEd0a19PYmpl Y3RfUmVjb3JkJ0NsYXNzOwogICAgICBTaWduYWxzICAgICAgICAgICAgICAgICAgIDogR3RrYWRh LlR5cGVzLkNoYXJzX1B0cl9BcnJheTsKICAgICAgQ2xhc3NfUmVjb3JkICAgICAgICAgICAgICA6 IGluIG91dCBTeXN0ZW0uQWRkcmVzczsKICAgICAgUGFyYW1ldGVycyAgICAgICAgICAgICAgICA6 IFNpZ25hbF9QYXJhbWV0ZXJfVHlwZXMgOj0KICAgICAgICBOdWxsX1BhcmFtZXRlcl9UeXBlczsK ICAgICAgU2Nyb2xsX0FkanVzdG1lbnRzX1NpZ25hbCA6IEd1aW50IDo9IDApOwogICAtLSAgQ3Jl YXRlIHRoZSBjbGFzcyByZWNvcmQgZm9yIGEgbmV3IHdpZGdldCB0eXBlLgogICAtLSAgSXQgaXMg YXNzb2NpYXRlZCB3aXRoIFNpZ25hbHMnTGVuZ3RoIG5ldyBzaWduYWxzLiBBIHBvaW50ZXIgdG8g dGhlCiAgIC0tICBuZXdseSBjcmVhdGVkIHN0cnVjdHVyZSBpcyBhbHNvIHJldHVybmVkIGluIENs YXNzX1JlY29yZC4KICAgLS0gIElmIENsYXNzX1JlY29yZCAvPSBTeXN0ZW0uTnVsbF9BZGRyZXNz LCBubyBtZW1vcnkgYWxsb2NhdGlvbiBpcwogICAtLSAgcGVyZm9ybWVkLCB3ZSBqdXN0IHJldXNl IGl0LgogICAtLSAgTm90ZTogVGhlIHVuZGVybHlpbmcgQyB3aWRnZXQgbXVzdCBhbHJlYWR5IGhh dmUgYmVlbiBpbml0aWFsaXplZAogICAtLSAgYnkgYSBjYWxsIHRvIGl0cyBwYXJlbnQncyBJbml0 aWFsaXplIGZ1bmN0aW9uLgogICAtLSAgUGFyYW1ldGVycydMZW5ndGggc2hvdWxkIGJlIHRoZSBz YW1lIGFzIFNpZ25hbHMnTGVuZ3RoLCBvciB0aGUgcmVzdWx0CiAgIC0tICBpcyB1bmRlZmluZWQu CiAgIC0tICBBcyBhIHNwZWNpYWwgY2FzZSwgaWYgUGFyYW1ldGVycyBoYXMgaXRzIGRlZmF1bHQg dmFsdWUsIGFsbCBzaWduYWxzIGFyZQogICAtLSAgY3JlYXRlZCB3aXRoIG5vIGFyZ3VtZW50LiBU aGlzIGlzIGRvbmUgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKICAgLS0gIG1haW5seSwgYW5k IHlvdSBzaG91bGQgaW5zdGVhZCBnaXZlIGl0IGFuIGV4cGxpY2l0IHZhbHVlLgogICAtLQogICAt LSAgU2Nyb2xsX0FkanVzdG1lbnRzX1NpZ25hbCBpcyB0aGUgaW5kZXggb2YgdGhlIG5ldyBzaWdu YWwgdGhhdCB3aWxsIGJlCiAgIC0tICBlbWl0dGVkIHdoZW4gR3RrLldpZGdldC5TZXRfU2Nyb2xs X0FkanVzdG1lbnRzIGlzIGNhbGxlZC4gSWYgaXQgaXMgMCwKICAgLS0gIG5vIHNpZ25hbCBpcyBl bWl0dGVkLiBUaGUgZmlyc3Qgc2lnbmFsIGluIFNpZ25hbHMgaGFzIGluZGV4IDEuIE5vdGUKICAg LS0gIHRoYXQgdGhlIGhhbmRsZXJzIGZvciB0aGlzIHNpZ25hbCB0YWtlIHR3byBhcmd1bWVudHMg aW4gYWRkaXRpb24gdG8gdGhlCiAgIC0tICB3aWRnZXQgKHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0 aWNhbCBhZGp1c3RtZW50cyB0byBiZSB1c2VkKS4gU2VlCiAgIC0tICBHdGsuU2Nyb2xsZWRfV2lu ZG93IGFuZCBHdGsuV2lkZ2V0LlNldF9TY3JvbGxfQWR1c3RtZW50IGZvciBtb3JlCiAgIC0tICBp bmZvcm1hdGlvbiBvbiB0aGlzIHNpZ25hbC4KICAgLS0KICAgLS0gIE9ubHkgdGhlIHNpZ25hbHMg d2l0aCBubyBwYXJhbWV0ZXIgY2FuIGJlIGNvbm5lY3RlZCBmcm9tIEMuIEhvd2V2ZXIsCiAgIC0t ICBhbnkgc2lnbmFsIGNhbiBiZSBjb25uZWN0ZWQgZnJvbSBBZGEuIFRoaXMgaXMgZHVlIHRvIHRo ZSB3YXkgd2UgZGVmaW5lCiAgIC0tICBkZWZhdWx0IG1hcnNoYWxsZXJzIGZvciB0aGUgc2lnbmFs cy4KCiAgIC0tLS0tLS0tLS0tLS0tLQogICAtLSBVc2VyX0RhdGEgLS0KICAgLS0tLS0tLS0tLS0t LS0tCiAgIC0tICBUaGlzIHBhY2thZ2UgYWxsb3cgeW91IHRvIGFzc29jaWF0ZSB5b3VyIG93biBE YXRhIHRvIHRoZSBDIHdpZGdldHMuIE5vCiAgIC0tICB0eXBlIHZlcmlmaWNhdGlvbiBpcyBtYWRl IHRvIGNoZWNrIGlmIHlvdSBhcmUgdXNpbmcgdGhlIGNvcnJlY3QKICAgLS0gIG1hdGNoaW5nIEdl dCBmdW5jdGlvbi4gVGhpcyBpcyB5b3VyIG93biByZXNwb25zYWJpbGl0eS4KICAgLS0KICAgLS0g IFdlIHJlY29tbWVuZCB1c2luZyB0aGlzIHBhY2thZ2Ugb25seSBpZiB5b3Ugd2FudCB5b3VyIGRh dGEgdG8gYmUKICAgLS0gIGF2YWlsYWJsZSBmcm9tIHlvdXIgb3duIEMgY29kZS4gSWYgeW91IGp1 c3Qgd2FudCB0byBhY2Nlc3MgaXQgZnJvbSBBZGEsCiAgIC0tICB5b3Ugc2hvdWxkIGNvbnNpZGVy IGNyZWF0aW5nIGEgbmV3IHRhZ2dlZCB0eXBlIGluc3RlYWQuCgogICAtLSAgPGRvY19pZ25vcmU+ CgogICBnZW5lcmljCiAgICAgIHR5cGUgRGF0YV9UeXBlICg8PikgaXMgcHJpdmF0ZTsKICAgcGFj a2FnZSBVc2VyX0RhdGEgaXMKICAgICAgZnVuY3Rpb24gR2V0IChPYmplY3QgOiBhY2Nlc3MgR3Rr X09iamVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgICAgICAgICAgICAgICAgSWQgICAgIDogaW4gU3Ry aW5nIDo9ICJ1c2VyX2RhdGEiKSByZXR1cm4gRGF0YV9UeXBlOwogICAgICAtLSAgR2V0IHRoZSBp bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGtleSBJRC4KICAgICAgLS0gIFJhaXNlIEd0 a2FkYS5UeXBlcy5EYXRhX0Vycm9yIGlmIHRoZXJlIGlzIG5vbmUuCgogICAgICBwcm9jZWR1cmUg U2V0IChPYmplY3QgOiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgICAgICAg ICAgICAgICAgIERhdGEgICA6IGluIERhdGFfVHlwZTsKICAgICAgICAgICAgICAgICAgICAgSWQg ICAgIDogaW4gU3RyaW5nIDo9ICJ1c2VyX2RhdGEiKTsKICAgICAgLS0gIEFzc29jaWF0ZSBzb21l IG5ldyB1c2VyIGRhdGEgd2l0aCB0aGUgb2JqZWN0LgogICAgICAtLSAgVGhlIHN0cmluZ3Mgc3Rh cnRpbmcgd2l0aCAiZ3RrYWRhXyIgYXJlIHJlc2VydmVkIGZvciBHdGtBZGEncwogICAgICAtLSAg aW50ZXJuYWwgdXNlLCBwbGVhc2UgYXZvaWQgdXNpbmcgdGhlbS4KCiAgICAgIHByb2NlZHVyZSBS ZW1vdmUgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCdDbGFzczsKICAgICAgICAg ICAgICAgICAgICAgICAgSWQgICAgIDogaW4gU3RyaW5nIDo9ICJ1c2VyX2RhdGEiKTsKICAgICAg LS0gIFJlbW92ZSBzb21lIGRhdGEgZnJvbSB0aGUgb2JqZWN0CgogICAgICBmdW5jdGlvbiBHZXQg KE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCdDbGFzczsKICAgICAgICAgICAgICAg ICAgICBJZCAgICAgOiBpbiBHbGliLkdRdWFyaykKICAgICAgICAgICAgICAgICAgIHJldHVybiBE YXRhX1R5cGU7CiAgICAgIC0tICBTYW1lIGZ1bmN0aW9uIGFzIEdldCBhYm92ZSwgYnV0IHVzZXMg ZGlyZWN0bHkgdGhlIFF1YXJrIGFzc29jaWF0ZWQKICAgICAgLS0gIHdpdGggdGhlIHN0cmluZywg d2hpY2ggc3BlZWRzIHVwIHRoZSBhY2Nlc3MgdGltZSBzaWduaWZpY2FudGx5LgoKICAgICAgcHJv Y2VkdXJlIFNldCAoT2JqZWN0IDogYWNjZXNzIEd0a19PYmplY3RfUmVjb3JkJ0NsYXNzOwogICAg ICAgICAgICAgICAgICAgICBEYXRhICAgOiBpbiBEYXRhX1R5cGU7CiAgICAgICAgICAgICAgICAg ICAgIElkICAgICA6IGluIEdsaWIuR1F1YXJrKTsKICAgICAgLS0gIFNhbWUgZnVuY3Rpb24gYXMg U2V0IGFib3ZlLCBidXQgdXNlcyBkaXJlY3RseSB0aGUgUXVhcmsgYXNzb2NpYXRlZAogICAgICAt LSAgd2l0aCB0aGUgc3RyaW5nLCB3aGljaCBzcGVlZHMgdXAgdGhlIGFjY2VzcyB0aW1lIHNpZ25p ZmljYW50bHkuCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlIChPYmplY3QgOiBhY2Nlc3MgR3RrX09i amVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgICAgICAgICAgICAgICAgICAgIElkICAgICA6IGluIEds aWIuR1F1YXJrKTsKICAgICAgLS0gIFNhbWUgZnVuY3Rpb24gYXMgUmVtb3ZlIGFib3ZlLCBidXQg dXNlcyBkaXJlY3RseSB0aGUgUXVhcmsgYXNzb2NpYXRlZAogICAgICAtLSAgd2l0aCB0aGUgc3Ry aW5nLCB3aGljaCBzcGVlZHMgdXAgdGhlIGFjY2VzcyB0aW1lIHNpZ25pZmljYW50bHkuCgogICBl bmQgVXNlcl9EYXRhOwoKICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgIC0tLS0tLS0tLS0tLS0KICAg LS0gU2lnbmFscyAtLQogICAtLS0tLS0tLS0tLS0tCgogICAtLSAgPHNpZ25hbHM+CiAgIC0tICBU aGUgZm9sbG93aW5nIG5ldyBzaWduYWxzIGFyZSBkZWZpbmVkIGZvciB0aGlzIHdpZGdldDoKICAg LS0KICAgLS0gIC0gImRlc3Ryb3kiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChPYmplY3Qg OiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQnQ2xhc3MpOwogICAtLQogICAtLSAgICBSYWlzZWQg d2hlbiB0aGUgb2JqZWN0IGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gVGhlICJkZXN0cm95ZWQi CiAgIC0tICAgIGZsYWcgaGFzIGJlZW4gc2V0IG9uIHRoZSBvYmplY3QgZmlyc3QuIEhhbmRsZXJz IHNob3VsZCBub3Qga2VlcAogICAtLSAgICBhIHJlZmVyZW5jZSBvbiB0aGUgb2JqZWN0LgogICAt LSAgICBOb3RlIHRoYXQgd2hlbiB5b3VyIGRlc3Ryb3kgaGFuZGxlcnMgYXJlIGNhbGxlZCwgdGhl IHVzZXJfZGF0YSBpcwogICAtLSAgICBzdGlsbCBhdmFpbGFibGUuCiAgIC0tICAgIFRoZSBkZWZh dWx0IGltcGxlbWVudGF0aW9uIGRlc3Ryb3lzIGFsbCB0aGUgaGFuZGxlcnMuCiAgIC0tICA8L3Np Z25hbHM+Cgpwcml2YXRlCiAgIHR5cGUgR3RrX09iamVjdF9SZWNvcmQgaXMgbmV3IEd0ay5Sb290 X1R5cGUgd2l0aCBudWxsIHJlY29yZDsKCiAgIHByYWdtYSBJbmxpbmUgKERlc3Ryb3llZF9Jc19T ZXQpOwogICBwcmFnbWEgSW5saW5lIChGbG9hdGluZ19Jc19TZXQpOwogICBwcmFnbWEgSW5saW5l IChDb25uZWN0ZWRfSXNfU2V0KTsKICAgcHJhZ21hIElubGluZSAoQ29uc3RydWN0ZWRfSXNfU2V0 KTsKCmVuZCBHdGsuT2JqZWN0OwoKLS0gIEZ1bmN0aW9ucyB0aGF0IGhhdmUgbm8gQWRhIGVxdWl2 YWxlbnQ6Ci0tICAtIGd0a19vYmplY3RfY2xhc3NfdXNlcl9zaWduYWxfbmV3Ci0tICAtIGd0a19v YmplY3RfY2xhc3NfdXNlcl9zaWduYWxfbmV3dgotLSAgLSBndGtfb2JqZWN0X25ldwotLSAgLSBn dGtfb2JqZWN0X25ld3YKLS0gIC0gZ3RrX29iamVjdF9kZWZhdWx0X2NvbnN0cnVjdAotLSAgLSBn dGtfb2JqZWN0X2NvbnN0cnVjdGVkCi0tICAtIGd0a19vYmplY3Rfd2Vha3JlZgotLSAgLSBndGtf b2JqZWN0X3dlYWt1bnJlZgotLSAgLSBndGtfb2JqZWN0X2dldHYKLS0gIC0gZ3RrX29iamVjdF9n ZXQKLS0gIC0gZ3RrX29iamVjdF9zZXQKLS0gIC0gZ3RrX29iamVjdF9zZXR2Ci0tICAtIGd0a19v YmplY3RfcXVlcnlfYXJncwotLSAgLSBndGtfb2JqZWN0X2NsYXNzX2FkZF9zaWduYWxzID0+IGlu IEluaXRpYWxpemVfQ2xhc3NfUmVjb3JkCi0tICAtIGd0a19vYmplY3RfYWRkX2FyZ190eXBlCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBH aW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAg ICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFy bGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAg IC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMg bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0t IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlm IG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwg b3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0t Ci0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRo ZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dl dmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFi bGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAg IC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyBpcyB0aGUg cGFyZW50IHBhY2thZ2UgZm9yIHRoZSBHdGtBZGEgc3BlY2lmaWMgdW5pdHMuCi0tCi0tICA8L2Rl c2NyaXB0aW9uPgoKcGFja2FnZSBHdGthZGEgaXMKCiAgIHByYWdtYSBQdXJlIChHdGthZGEpOwoK ZW5kIEd0a2FkYTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmlu ZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBh bmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAg LS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj ICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3 aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0g RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFs IGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0K LS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBw cm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0 c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVk IGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9u IGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAg LS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1Ymxp YyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tCi0t ICBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgR3RrQWRhIHNwZWNpZmljIHR5cGVzIGFuZCB0aGVpciBh c3NvY2lhdGVkIGZ1bmN0aW9ucy4KLS0KLS0gIDwvZGVzY3JpcHRpb24+Cgp3aXRoIEludGVyZmFj ZXMuQy5TdHJpbmdzOwoKcGFja2FnZSBHdGthZGEuVHlwZXMgaXMKCiAgIHByYWdtYSBQcmVlbGFi b3JhdGU7CgogICBEYXRhX0Vycm9yIDogZXhjZXB0aW9uOwoKICAgLS0gIDxkb2NfaWdub3JlPgog ICBzdWJ0eXBlIENoYXJzX1B0ciBpcyBJbnRlcmZhY2VzLkMuU3RyaW5ncy5jaGFyc19wdHI7CiAg IHN1YnR5cGUgQ2hhcnNfUHRyX0FycmF5IGlzIEludGVyZmFjZXMuQy5TdHJpbmdzLmNoYXJzX3B0 cl9hcnJheTsKICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgIE51bGxfUHRyIDogQ2hhcnNfUHRyIHJl bmFtZXMgSW50ZXJmYWNlcy5DLlN0cmluZ3MuTnVsbF9QdHI7CgogICBmdW5jdGlvbiBOdWxsX0Fy cmF5IHJldHVybiBDaGFyc19QdHJfQXJyYXk7CiAgIC0tICBSZXR1cm4gYSBudWxsIGFycmF5Lgog ICBwcmFnbWEgSW5saW5lIChOdWxsX0FycmF5KTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgLS0gIEhhbmRsaW5nIG9mIGFycmF5cyBvZiBTdHJpbmdzICAtLQog ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tICBUaGUgZm9sbG93 aW5nIGZ1bmN0aW9ucyBwcm92aWRlIGEgdmVyeSBjb252ZW5pZW50IHdheSB0byBjcmVhdGUKICAg LS0gIEMgYXJyYXlzIG9mIG51bGwgdGVybWluYXRlZCBzdHJpbmdzIGluIEFkYS4KICAgLS0KICAg LS0gIFlvdSBjYW4gZWl0aGVyIGNyZWF0ZSBzdWNoIGEgU3RyaW5nIG9uIHRoZSBmbHksIG9yIGRl Y2xhcmUgYSB2YXJpYWJsZToKICAgLS0KICAgLS0gICAgIFNpZ25hbHMgOiBDaGFyc19QdHJfQXJy YXkgOj0gImNsaWNrZWQiICsgIm1pc3NlZCIgKyAibmV3IHNpZ25hbCI7CiAgIC0tCiAgIC0tICB3 aGljaCBjb3JyZXNwb25kcyB0byB0aGUgQyBkZWNsYXJhdGlvbjoKICAgLS0KICAgLS0gICAgIGNo YXIgKnNpZ25hbHNbXSA9IEB7ImNsaWNrZWQiLCAibWlzc2VkIiwgIm5ldyBzaWduYWwiQH07CiAg IC0tCiAgIC0tICBOb3RlIHRoYXQgeW91IHN0aWxsIG5lZWQgdG8gbWFudWFsbHkgY2FsbCBGcmVl IChTaWduYWxzKSBpZiB5b3Ugd2FudCB0bwogICAtLSAgcmVsZWFzZSB0aGUgbWVtb3J5IGR5bmFt aWNhbGx5IGFsbG9jYXRlZCBieSB0aGUgIisiIGZ1bmN0aW9ucy4KCiAgIGZ1bmN0aW9uICIrIiAo UzEsIFMyIDogU3RyaW5nKSByZXR1cm4gQ2hhcnNfUHRyX0FycmF5OwogICAtLSAgQ3JlYXRlIGFu IGFycmF5IGNvbnRhaW5pbmcgUzEgYW5kIFMyLgogICAtLSAgTm90ZSB0aGF0IHRoaXMgZnVuY3Rp b24gYWxsb2NhdGVzIG1lbW9yeSB0byBzdG9yZSBTMSBhbmQgUzIgYXMgbnVsbAogICAtLSAgdGVy bWluYXRlZCBTdHJpbmdzLiBUaGUgdXNlciBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBGcmVl IG9uIHRoZQogICAtLSAgcmVzdWx0aW5nIGFycmF5LgoKICAgZnVuY3Rpb24gIisiIChTMSA6IENo YXJzX1B0cl9BcnJheTsgUzIgOiBTdHJpbmcpIHJldHVybiBDaGFyc19QdHJfQXJyYXk7CiAgIC0t ICBBcHBlbmQgUzIgdG8gUzEuCiAgIC0tICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBhbGxvY2F0 ZXMgbWVtb3J5IHRvIHN0b3JlIFMyIGFzIGEgbnVsbAogICAtLSAgdGVybWluYXRlZCBTdHJpbmdz LiBUaGUgdXNlciBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBGcmVlIG9uIHRoZQogICAtLSAg cmVzdWx0aW5nIGFycmF5LgoKICAgZnVuY3Rpb24gIisiIChTMSA6IENoYXJzX1B0cl9BcnJheTsg UzIgOiBDaGFyc19QdHIpIHJldHVybiBDaGFyc19QdHJfQXJyYXk7CiAgIC0tICBBcHBlbmQgUzIg dG8gUzEuCiAgIC0tICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgbWVtb3J5IHRv IHN0b3JlIFMyIGFzIGEgbnVsbAogICAtLSAgdGVybWluYXRlZCBTdHJpbmdzLiBUaGUgdXNlciBp cyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBGcmVlIG9uIHRoZQogICAtLSAgcmVzdWx0aW5nIGFy cmF5LgoKICAgZnVuY3Rpb24gIisiIChTMSA6IENoYXJzX1B0cjsgUzIgOiBTdHJpbmcpIHJldHVy biBDaGFyc19QdHJfQXJyYXk7CiAgIC0tICBDcmVhdGUgYW4gYXJyYXkgY29udGFpbmluZyBTMSBh bmQgUzIuCiAgIC0tICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgbWVtb3J5IHRv IHN0b3JlIFMyIGFzIGEgbnVsbAogICAtLSAgdGVybWluYXRlZCBzdHJpbmcuIFRoZSB1c2VyIGlz IHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIEZyZWUgb24gdGhlCiAgIC0tICByZXN1bHRpbmcgYXJy YXkuCgogICBwcm9jZWR1cmUgRnJlZSAoQSA6IGluIG91dCBDaGFyc19QdHJfQXJyYXkpOwogICAt LSAgRnJlZSBhbGwgdGhlIHN0cmluZ3MgaW4gQS4KCmVuZCBHdGthZGEuVHlwZXM7Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRv b2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAg ICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAg ICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0t IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0t Ci0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm IG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVy IGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91 IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4 ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1 bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGlu dmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmls ZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyBvYmplY3QgcmVwcmVz ZW50cyBhbiBhZGp1c3RhYmxlIGJvdW5kZWQgdmFsdWUuCi0tICBJdCBpcyB1c2VkIGluIG1hbnkg b3RoZXIgd2lkZ2V0cyB0aGF0IGhhdmUgc3VjaCBpbnRlcm5hbCB2YWx1ZXMsCi0tICBsaWtlIEd0 a19TY3JvbGxiYXIsIEd0a19TcGluX0J1dHRvbiwgR3RrX1JhbmdlLCAuLi4KLS0gIE1vZGlmeWlu ZyB0aGUgdmFsdWUgb2YgdGhlc2Ugd2lkZ2V0cyBpcyBkb25lIHRocm91Z2ggdGhlaXIKLS0gIGFz c29jaWF0ZWQgYWRqdXN0bWVudHMuCi0tCi0tICBUaGUgbW9kaWZpY2F0aW9uIG9mIHRoZSB2YWx1 ZSBpcyBsZWZ0IHRvIHRoZSB1c2VyLCB3aG8gc2hvdWxkCi0tICBjYWxsIFZhbHVlX0NoYW5nZWQg b3IgQ2hhbmdlZCB0byBlbWl0IHRoZSByZWxldmFudCBzaWduYWxzLgotLQotLSAgPC9kZXNjcmlw dGlvbj4KLS0gIDxleGFtcGxlPgotLQotLSAgVGhlIG1lYW5pbmcgb2YgdGhlIG1vc3QgaW1wb3J0 YW50IGZpZWxkcyBjYW4gYmUgZXhwbGFpbmVkIG9uIHRoZQotLSAgZm9sbG93aW5nIGZpZ3VyZSAo aW1hZ2luZSB0aGlzIGlzIGEgc2Nyb2xsYmFyKToKLS0KLS0gICAgIFstLS0tLS0tfD09PT09PT09 PT09PT09PT09fC0tLS0tLS0tLS0tLS0tLS0tLS1dCi0tICAgIGxvd2VyICAgIHZhbHVlICAgICAg ICB2YWx1ZSArIHBhZ2Vfc2l6ZSAgICAgICB1cHBlcgotLQotLSAgPC9leGFtcGxlPgotLSAgPGNf dmVyc2lvbj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0aCBHdGsuRGF0YTsKCnBhY2thZ2UgR3RrLkFk anVzdG1lbnQgaXMKCiAgIHR5cGUgR3RrX0FkanVzdG1lbnRfUmVjb3JkIGlzIG5ldyBEYXRhLkd0 a19EYXRhX1JlY29yZCB3aXRoIHByaXZhdGU7CiAgIHR5cGUgR3RrX0FkanVzdG1lbnQgaXMgYWNj ZXNzIGFsbCBHdGtfQWRqdXN0bWVudF9SZWNvcmQnQ2xhc3M7CgogICBOdWxsX0FkanVzdG1lbnQg OiBjb25zdGFudCBHdGtfQWRqdXN0bWVudDsKCiAgIHByb2NlZHVyZSBHdGtfTmV3IChBZGp1c3Rt ZW50ICAgICA6IG91dCBHdGtfQWRqdXN0bWVudDsKICAgICAgICAgICAgICAgICAgICAgIFZhbHVl ICAgICAgICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAgIExvd2VyICAg ICAgICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAgIFVwcGVyICAgICAg ICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAgIFN0ZXBfSW5jcmVtZW50 IDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAgIFBhZ2VfSW5jcmVtZW50IDog aW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAgIFBhZ2VfU2l6ZSAgICAgIDogaW4g ICAgIEdmbG9hdCk7CiAgIC0tICBDcmVhdGUgYSBuZXcgYWRqdXN0bWVudC4KICAgLS0gIFZhbHVl IGlzIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBhZGp1c3RtZW50LiBJdCBtdXN0IGJlIGluIHRo ZQogICAtLSAgcmFuZ2UgKExvd2VyIC4uIFVwcGVyKSBhbmQgdGhlIGFkanVzdG1lbnQncyB2YWx1 ZSB3aWxsIG5ldmVyIGJlCiAgIC0tICBvdXRzaWRlIHRoaXMgcmFuZ2UuCiAgIC0tICBTdGVwX0lu Y3JlbWVudCBpcyB0aGUgdmFsdWUgdXNlZCB0byBtYWtlIG1pbm9yIGFkanVzdG1lbnRzLCBzdWNo CiAgIC0tICBhcyB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgYXJyb3dzIG9mIGEgc2Nyb2xs YmFyLgogICAtLSAgUGFnZV9JbmNyZW1lbnQgaXMgdXNlZCB0byBtYWtlIG1ham9yIGFkanVzdG1l bnRzLCBzdWNoIGFzIHdoZW4KICAgLS0gIHRoZSB1c2VyIGNsaWNrcyBpbiB0aGUgdGhyb3VnaCBv biBhIHNjcm9sbGJhci4KICAgLS0gIFBhZ2VfU2l6ZSBpcyB0aGUgc2l6ZSBvZiB0aGUgYXJlYSB0 aGF0IGlzIGN1cnJlbnRseSB2aXNpYmxlCiAgIC0tICAoZm9yIGluc3RhbmNlIGluIGEgR3RrX1Nj cm9sbGVkX1dpbmRvdykuCgogICBwcm9jZWR1cmUgSW5pdGlhbGl6ZSAoQWRqdXN0bWVudCAgICAg OiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkJ0NsYXNzOwogICAgICAgICAgICAgICAgICAg ICAgICAgVmFsdWUgICAgICAgICAgOiBpbiAgICAgR2Zsb2F0OwogICAgICAgICAgICAgICAgICAg ICAgICAgTG93ZXIgICAgICAgICAgOiBpbiAgICAgR2Zsb2F0OwogICAgICAgICAgICAgICAgICAg ICAgICAgVXBwZXIgICAgICAgICAgOiBpbiAgICAgR2Zsb2F0OwogICAgICAgICAgICAgICAgICAg ICAgICAgU3RlcF9JbmNyZW1lbnQgOiBpbiAgICAgR2Zsb2F0OwogICAgICAgICAgICAgICAgICAg ICAgICAgUGFnZV9JbmNyZW1lbnQgOiBpbiAgICAgR2Zsb2F0OwogICAgICAgICAgICAgICAgICAg ICAgICAgUGFnZV9TaXplICAgICAgOiBpbiAgICAgR2Zsb2F0KTsKICAgLS0gIEludGVybmFsIGlu aXRpYWxpemF0aW9uIGZ1bmN0aW9uLgogICAtLSAgU2VlIHRoZSBzZWN0aW9uICJDcmVhdGluZyB5 b3VyIG93biB3aWRnZXRzIiBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KCiAgIGZ1bmN0aW9uIEdldF9U eXBlIHJldHVybiBHdGsuR3RrX1R5cGU7CiAgIC0tICBSZXR1cm4gdGhlIGludGVybmFsIHZhbHVl IGFzc29jaWF0ZWQgd2l0aCBhIEd0a19BZGp1c3RtZW50LgoKICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAgLS0gUmVhZCBmdW5jdGlvbnMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZ1 bmN0aW9uIEdldF9WYWx1ZSAoQWRqdXN0bWVudCA6IGFjY2VzcyBHdGtfQWRqdXN0bWVudF9SZWNv cmQpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2Zsb2F0OwogICAtLSAgUmV0dXJuIHRo ZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBhZGp1c3RtZW50LgoKICAgZnVuY3Rpb24gR2V0X0xvd2Vy IChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCkKICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBHZmxvYXQ7CiAgIC0tICBSZXR1cm4gdGhlIGxvd2VyIGJvdW5kIG9m IHRoZSBhZGp1c3RtZW50LgoKICAgZnVuY3Rpb24gR2V0X1VwcGVyIChBZGp1c3RtZW50IDogYWNj ZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBH ZmxvYXQ7CiAgIC0tICBSZXR1cm4gdGhlIHVwcGVyIGJvdW5kIG9mIHRoZSBhZGp1c3RtZW50LgoK ICAgZnVuY3Rpb24gR2V0X1N0ZXBfSW5jcmVtZW50IChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19B ZGp1c3RtZW50X1JlY29yZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBH ZmxvYXQ7CiAgIC0tICBSZXR1cm4gdGhlIHN0ZXAgaW5jcmVtZW50IG9mIHRoZSBhZGp1c3RtZW50 LgoKICAgZnVuY3Rpb24gR2V0X1BhZ2VfSW5jcmVtZW50IChBZGp1c3RtZW50IDogYWNjZXNzIEd0 a19BZGp1c3RtZW50X1JlY29yZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBHZmxvYXQ7CiAgIC0tICBSZXR1cm4gdGhlIHBhZ2UgaW5jcmVtZW50IG9mIHRoZSBhZGp1c3Rt ZW50LgoKICAgZnVuY3Rpb24gR2V0X1BhZ2VfU2l6ZSAoQWRqdXN0bWVudCA6IGFjY2VzcyBHdGtf QWRqdXN0bWVudF9SZWNvcmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdmbG9h dDsKICAgLS0gIFJldHVybiB0aGUgcGFnZSBzaXplIG9mIHRoZSBhZGp1c3RtZW50LgoKICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFdyaXRlIGZ1bmN0aW9ucyAtLQogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfVXBwZXIgKEFkanVzdG1lbnQgOiBhY2Nlc3Mg R3RrX0FkanVzdG1lbnRfUmVjb3JkOwogICAgICAgICAgICAgICAgICAgICAgICBVcHBlciAgICAg IDogaW4gR2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgdXBwZXIgYm91bmQgb2YgdGhlIGFkanVz dG1lbnQuCiAgIC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdlZCBhZnRlciBtb2RpZnlpbmcgdGhp cyB2YWx1ZS4KCiAgIHByb2NlZHVyZSBTZXRfTG93ZXIgKEFkanVzdG1lbnQgOiBhY2Nlc3MgR3Rr X0FkanVzdG1lbnRfUmVjb3JkOwogICAgICAgICAgICAgICAgICAgICAgICBMb3dlciAgICAgIDog aW4gR2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgbG93ZXIgYm91bmQgb2YgdGhlIGFkanVzdG1l bnQuCiAgIC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdlZCBhZnRlciBtb2RpZnlpbmcgdGhpcyB2 YWx1ZS4KCiAgIHByb2NlZHVyZSBTZXRfVmFsdWUgKEFkanVzdG1lbnQgOiBhY2Nlc3MgR3RrX0Fk anVzdG1lbnRfUmVjb3JkOwogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgIDogaW4g R2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgYWRqdXN0bWVu dC4KICAgLS0gIFlvdSBkbyBub3QgbmVlZCB0byBjYWxsIFZhbHVlX0NoYW5nZWQgYWZ0ZXIgbW9k aWZ5aW5nIHRoaXMgdmFsdWUsCiAgIC0tICB0aGlzIGlzIGRvbmUgYXV0b21hdGljYWxseS4KCiAg IHByb2NlZHVyZSBTZXRfUGFnZV9TaXplIChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3Rt ZW50X1JlY29yZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2VfU2l6ZSAgOiBpbiBH ZmxvYXQpOwogICAtLSAgTW9kaWZ5IHRoZSBwYWdlIHNpemUgb2YgdGhlIGFkanVzdG1lbnQuCiAg IC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdlZCBhZnRlciBtb2RpZnlpbmcgdGhpcyB2YWx1ZS4K CiAgIHByb2NlZHVyZSBTZXRfUGFnZV9JbmNyZW1lbnQgKEFkanVzdG1lbnQgICAgIDogYWNjZXNz IEd0a19BZGp1c3RtZW50X1JlY29yZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UGFnZV9JbmNyZW1lbnQgOiBpbiBHZmxvYXQpOwogICAtLSAgTW9kaWZ5IHRoZSBwYWdlIGluY3Jl bWVudCBvZiB0aGUgYWRqdXN0bWVudC4KICAgLS0gIFlvdSBzaG91bGQgY2FsbCBDaGFuZ2VkIGFm dGVyIG1vZGlmeWluZyB0aGlzIHZhbHVlLgoKICAgcHJvY2VkdXJlIFNldF9TdGVwX0luY3JlbWVu dCAoQWRqdXN0bWVudCA6IGFjY2VzcyBHdGtfQWRqdXN0bWVudF9SZWNvcmQ7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0ZXBfSW5jcmVtZW50IDogaW4gR2Zsb2F0KTsKICAgLS0g IE1vZGlmeSB0aGUgc3RlcCBpbmNyZW1lbnQgb2YgdGhlIGFkanVzdG1lbnQuCiAgIC0tICBZb3Ug c2hvdWxkIGNhbGwgQ2hhbmdlZCBhZnRlciBtb2RpZnlpbmcgdGhpcyB2YWx1ZS4KCiAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgIC0tIE1pc2MgZnVuY3Rpb25zIC0tCiAgIC0tLS0tLS0tLS0tLS0t LS0tLS0tCgogICBwcm9jZWR1cmUgQ2xhbXBfUGFnZSAoQWRqdXN0bWVudCA6IGFjY2VzcyBHdGtf QWRqdXN0bWVudF9SZWNvcmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBMb3dlciAgICAgIDog aW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAgICAgIFVwcGVyICAgICAgOiBpbiAg ICAgR2Zsb2F0KTsKICAgLS0gIFVwZGF0ZSB0aGUgQWRqdXN0bWVudCB2YWx1ZSB0byBlbnN1cmUg dGhhdCB0aGUgcmFuZ2UgYmV0d2VlbiBMb3dlciBhbmQKICAgLS0gIFVwcGVyIGlzIGluIHRoZSBj dXJyZW50IHBhZ2UgKGkuZS4gYmV0d2VlbiB2YWx1ZSBhbmQgdmFsdWUgKwogICAtLSAgcGFnZV9z aXplKS4gSWYgdGhlIHJhbmdlIGlzIGxhcmdlciB0aGFuIHRoZSBwYWdlIHNpemUsIHRoZW4gb25s eSB0aGUKICAgLS0gIHN0YXJ0IG9mIGl0IHdpbGwgYmUgaW4gdGhlIGN1cnJlbnQgcGFnZS4KICAg LS0gIEEgInZhbHVlX2NoYW5nZWQiIHNpZ25hbCB3aWxsIGJlIGVtaXR0ZWQgaWYgdGhlIHZhbHVl IGlzIGNoYW5nZWQuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNpZ25hbHMgZW1p c3Npb24gLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIENoYW5nZWQg KEFkanVzdG1lbnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkKTsKICAgLS0gIEVtaXQg dGhlICJjaGFuZ2VkIiBzaWduYWwgb24gQWRqdXN0bWVudC4KICAgLS0gIFRoaXMgd2FybnMgYW55 IGxpc3RlbmVyIHRoYXQgc29tZSBmaWVsZCBvdGhlciB0aGFuIHRoZSB2YWx1ZSBoYXMgYmVlbgog ICAtLSAgY2hhbmdlZC4KCiAgIHByb2NlZHVyZSBWYWx1ZV9DaGFuZ2VkIChBZGp1c3RtZW50IDog YWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCk7CiAgIC0tICBFbWl0IHRoZSAidmFsdWVfY2hh bmdlZCIgc2lnbmFsIG9uIEFkanVzdG1lbnQuCiAgIC0tICBUaGlzIHdhcm5zIGFueSBsaXN0ZW5l ciB0aGF0IHRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkLgoKICAgLS0tLS0tLS0tLS0tLQogICAt LSBTaWduYWxzIC0tCiAgIC0tLS0tLS0tLS0tLS0KCiAgIC0tICA8c2lnbmFscz4KICAgLS0gIFRo ZSBmb2xsb3dpbmcgbmV3IHNpZ25hbHMgYXJlIGRlZmluZWQgZm9yIHRoaXMgd2lkZ2V0OgogICAt LQogICAtLSAgLSAiY2hhbmdlZCIKICAgLS0gICAgcHJvY2VkdXJlIEhhbmRsZXIgKEFkanVzdG1l bnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkJ0NsYXNzKTsKICAgLS0KICAgLS0gICAg VGhpcyBzaWduYWwgaXMgZW1pdHRlZCBldmVyeSB0aW1lIG9uZSBvZiB0aGUgcGFyYW1ldGVycyBp cyBtb2RpZmllZCwKICAgLS0gICAgZXhjZXB0IHRoZSB2YWx1ZS4KICAgLS0KICAgLS0gIC0gInZh bHVlX2NoYW5nZWQiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChBZGp1c3RtZW50IDogYWNj ZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCdDbGFzcyk7CiAgIC0tCiAgIC0tICAgIFRoaXMgc2ln bmFsIGlzIGVtaXR0ZWQgZXZlcnkgdGltZSB0aGUgdmFsdWUgb2YgdGhlIGFkanVzdG1lbnQgaXMK ICAgLS0gICAgbW9kaWZpZWQKICAgLS0gIDwvc2lnbmFscz4KCnByaXZhdGUKCiAgIHR5cGUgR3Rr X0FkanVzdG1lbnRfUmVjb3JkIGlzIG5ldyBEYXRhLkd0a19EYXRhX1JlY29yZCB3aXRoIG51bGwg cmVjb3JkOwoKICAgTnVsbF9BZGp1c3RtZW50IDogY29uc3RhbnQgR3RrX0FkanVzdG1lbnQgOj0g bnVsbDsKCiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9UeXBlLCAiZ3RrX2FkanVzdG1lbnRfZ2V0 X3R5cGUiKTsKZW5kIEd0ay5BZGp1c3RtZW50OwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAg R3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAg LS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5 OTgtMTk5OSAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90 LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0g TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0K LS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg ICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV U0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUg Z2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0 aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5p dCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0 YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhp cyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIg cmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVk IGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8 ZGVzY3JpcHRpb24+Ci0tCi0tICBBYnN0cmFjdCBjbGFzcyBmb3Igb2JqZWN0cyBjb250YWluaW5n IGRhdGEKLS0gIFRoaXMgb2JqZWN0IGlzIGN1cnJlbnRseSBub3QgdmVyeSB1c2VmdWwgc2luY2Ug aXQgb25seSBwcm92aWRlcwotLSAgYSBzaW5nbGUgImRpc2Nvbm5lY3QiIHNpZ25hbC4KLS0KLS0g IFRoaXMgaXMgdGhlICJNb2RlbCIgaW4gdGhlIE1vZGVsL1ZpZXcvQ29udHJvbGxlciBmcmFtZXdv cmsuCi0tICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lvbj4xLjIuNjwvY192ZXJzaW9uPgoK d2l0aCBHdGsuT2JqZWN0OwoKcGFja2FnZSBHdGsuRGF0YSBpcwoKICAgdHlwZSBHdGtfRGF0YV9S ZWNvcmQgaXMgbmV3IE9iamVjdC5HdGtfT2JqZWN0X1JlY29yZCB3aXRoIHByaXZhdGU7CiAgIHR5 cGUgR3RrX0RhdGEgaXMgYWNjZXNzIGFsbCBHdGtfRGF0YV9SZWNvcmQnQ2xhc3M7CgogICBmdW5j dGlvbiBHZXRfVHlwZSByZXR1cm4gR3RrLkd0a19UeXBlOwogICAtLSAgUmV0dXJuIHRoZSBpbnRl cm5hbCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBHdGtfRGF0YS4KCiAgIC0tLS0tLS0tLS0tLS0K ICAgLS0gU2lnbmFscyAtLQogICAtLS0tLS0tLS0tLS0tCgogICAtLSAgPHNpZ25hbHM+CiAgIC0t ICBUaGUgZm9sbG93aW5nIG5ldyBzaWduYWxzIGFyZSBkZWZpbmVkIGZvciB0aGlzIHdpZGdldDoK ICAgLS0KICAgLS0gIC0gImRpc2Nvbm5lY3QiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChE YXRhIDogYWNjZXNzIEd0a19EYXRhX1JlY29yZCdDbGFzcyk7CiAgIC0tCiAgIC0tICAgIEVtaXR0 ZWQganVzdCBiZWZvcmUgRGF0YSBpcyBkZXN0cm95ZWQuCiAgIC0tICA8L3NpZ25hbHM+Cgpwcml2 YXRlCiAgIHR5cGUgR3RrX0RhdGFfUmVjb3JkIGlzIG5ldyBPYmplY3QuR3RrX09iamVjdF9SZWNv cmQgd2l0aCBudWxsIHJlY29yZDsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1R5cGUsICJndGtf ZGF0YV9nZXRfdHlwZSIpOwplbmQgR3RrLkRhdGE7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAg IEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAg IC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAx OTk4LTE5OTkgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlv dCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0t IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4g ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0t Ci0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl ICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRl IGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdp dGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVu aXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1 dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRo aXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVy IHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJl ZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgp3aXRo IEdsaWI7CndpdGggR2xpYi5HbGlzdDsKcHJhZ21hIEVsYWJvcmF0ZV9BbGwgKEdsaWIuR2xpc3Qp OwoKd2l0aCBTeXN0ZW07CgpwYWNrYWdlIEd0ay5FbnVtcyBpcwoKICAgdHlwZSBHdGtfU3RhdGVf VHlwZSBpcwogICAgIChTdGF0ZV9Ob3JtYWwsCiAgICAgIFN0YXRlX0FjdGl2ZSwKICAgICAgU3Rh dGVfUHJlbGlnaHQsCiAgICAgIFN0YXRlX1NlbGVjdGVkLAogICAgICBTdGF0ZV9JbnNlbnNpdGl2 ZSk7CgogICB0eXBlIEd0a19XaW5kb3dfVHlwZSBpcyAoV2luZG93X1RvcGxldmVsLCBXaW5kb3df RGlhbG9nLCBXaW5kb3dfUG9wdXApOwoKICAgdHlwZSBHdGtfQnV0dG9uX0FjdGlvbiBpcyBuZXcg R3VpbnQ7CiAgIEJ1dHRvbl9JZ25vcmVkIDogY29uc3RhbnQgR3RrX0J1dHRvbl9BY3Rpb24gOj0g MDsKICAgQnV0dG9uX1NlbGVjdHMgOiBjb25zdGFudCBHdGtfQnV0dG9uX0FjdGlvbiA6PSAxICoq IDA7CiAgIEJ1dHRvbl9EcmFncyAgIDogY29uc3RhbnQgR3RrX0J1dHRvbl9BY3Rpb24gOj0gMSAq KiAxOwogICBCdXR0b25fRXhwYW5kcyA6IGNvbnN0YW50IEd0a19CdXR0b25fQWN0aW9uIDo9IDEg KiogMjsKCiAgIHR5cGUgR3RrX0J1dHRvbl9Cb3hfU3R5bGUgaXMKICAgICAoQnV0dG9uYm94X0Rl ZmF1bHRfU3R5bGUsCiAgICAgIEJ1dHRvbmJveF9TcHJlYWQsCiAgICAgIEJ1dHRvbmJveF9FZGdl LAogICAgICBCdXR0b25ib3hfU3RhcnQsCiAgICAgIEJ1dHRvbmJveF9FbmQpOwoKICAgdHlwZSBH dGtfRGlyZWN0aW9uX1R5cGUgaXMKICAgICAoRGlyX1RhYl9Gb3J3YXJkLAogICAgICBEaXJfVGFi X0JhY2t3YXJkLAogICAgICBEaXJfVXAsCiAgICAgIERpcl9Eb3duLAogICAgICBEaXJfTGVmdCwK ICAgICAgRGlyX1JpZ2h0KTsKCiAgIHR5cGUgR3RrX1NoYWRvd19UeXBlIGlzCiAgICAgKFNoYWRv d19Ob25lLAogICAgICBTaGFkb3dfSW4sCiAgICAgIFNoYWRvd19PdXQsCiAgICAgIFNoYWRvd19F dGNoZWRfSW4sCiAgICAgIFNoYWRvd19FdGNoZWRfT3V0KTsKCiAgIHR5cGUgR3RrX0Fycm93X1R5 cGUgaXMgKEFycm93X1VwLCBBcnJvd19Eb3duLCBBcnJvd19MZWZ0LCBBcnJvd19SaWdodCk7Cgog ICB0eXBlIEd0a19DZWxsX1R5cGUgaXMKICAgICAoQ2VsbF9FbXB0eSwKICAgICAgQ2VsbF9UZXh0 LAogICAgICBDZWxsX1BpeG1hcCwKICAgICAgQ2VsbF9QaXh0ZXh0LAogICAgICBDZWxsX1dpZGdl dCk7CgogICB0eXBlIEd0a19QYWNrX1R5cGUgaXMgKFBhY2tfU3RhcnQsIFBhY2tfRW5kKTsKCiAg IHR5cGUgR3RrX1BvbGljeV9UeXBlIGlzIChQb2xpY3lfQWx3YXlzLCBQb2xpY3lfQXV0b21hdGlj LCBQb2xpY3lfTmV2ZXIpOwoKICAgdHlwZSBHdGtfVXBkYXRlX1R5cGUgaXMKICAgICAoVXBkYXRl X0NvbnRpbnVvdXMsCiAgICAgIFVwZGF0ZV9EaXNjb250aW51b3VzLAogICAgICBVcGRhdGVfRGVs YXllZCk7CgogICB0eXBlIEd0a19SZWxpZWZfU3R5bGUgaXMgKFJlbGllZl9Ob3JtYWwsIFJlbGll Zl9IYWxmLCBSZWxpZWZfTm9uZSk7CgogICB0eXBlIEd0a19BdHRhY2hfT3B0aW9ucyBpcyBuZXcg R2xpYi5HdWludDMyOwogICBFeHBhbmQgOiBjb25zdGFudCBHdGtfQXR0YWNoX09wdGlvbnMgOj0g MTsKICAgU2hyaW5rIDogY29uc3RhbnQgR3RrX0F0dGFjaF9PcHRpb25zIDo9IDI7CiAgIEZpbGwg ICA6IGNvbnN0YW50IEd0a19BdHRhY2hfT3B0aW9ucyA6PSA0OwoKICAgdHlwZSBHdGtfV2luZG93 X1Bvc2l0aW9uIGlzCiAgICAgKFdpbl9Qb3NfTm9uZSwKICAgICAgV2luX1Bvc19DZW50ZXIsCiAg ICAgIFdpbl9Qb3NfTW91c2UsCiAgICAgIFdpbl9Qb3NfQ2VudGVyX0Fsd2F5cyk7CgogICB0eXBl IEd0a19TdWJtZW51X0RpcmVjdGlvbiBpcyAoRGlyZWN0aW9uX0xlZnQsIERpcmVjdGlvbl9SaWdo dCk7CgogICB0eXBlIEd0a19TdWJtZW51X1BsYWNlbWVudCBpcyAoVG9wX0JvdHRvbSwgTGVmdF9S aWdodCk7CgogICB0eXBlIEd0a19SZXNpemVfTW9kZSBpcwogICAgIChSZXNpemVfUGFyZW50LCAg ICAgLS0gIFBhc3MgcmVxdWVzdCB0byB0aGUgcGFyZW50CiAgICAgIFJlc2l6ZV9RdWV1ZSwgICAg ICAtLSAgUXVldWUgcmVzaXplcyBvbiB0aGlzIHdpZGdldAogICAgICBSZXNpemVfSW1tZWRpYXRl KTsgLS0gIFBlcmZvcm0gdGhlIHJlc2l6ZXMgbm93CgogICB0eXBlIEd0a19NZXRyaWNfVHlwZSBp cyAoUGl4ZWxzLCBJbmNoZXMsIENlbnRpbWV0ZXJzKTsKCiAgIHR5cGUgR3RrX1Njcm9sbF9UeXBl IGlzCiAgICAgKFNjcm9sbF9Ob25lLAogICAgICBTY3JvbGxfU3RlcF9CYWNrd2FyZCwKICAgICAg U2Nyb2xsX1N0ZXBfRm9yd2FyZCwKICAgICAgU2Nyb2xsX1BhZ2VfQmFja3dhcmQsCiAgICAgIFNj cm9sbF9QYWdlX0ZvcndhcmQsCiAgICAgIFNjcm9sbF9KdW1wKTsKCiAgIHR5cGUgR3RrX1Ryb3Vn aF9UeXBlIGlzCiAgICAgKFRyb3VnaF9Ob25lLAogICAgICBUcm91Z2hfU3RhcnQsCiAgICAgIFRy b3VnaF9FbmQsCiAgICAgIFRyb3VnaF9KdW1wKTsKCiAgIHR5cGUgR3RrX1Bvc2l0aW9uX1R5cGUg aXMKICAgICAoUG9zX0xlZnQsCiAgICAgIFBvc19SaWdodCwKICAgICAgUG9zX1RvcCwKICAgICAg UG9zX0JvdHRvbSk7CgogICB0eXBlIEd0a19QcmV2aWV3X1R5cGUgaXMgKFByZXZpZXdfQ29sb3Is IFByZXZpZXdfR3JheXNjYWxlKTsKCiAgIHR5cGUgR3RrX0p1c3RpZmljYXRpb24gaXMKICAgICAo SnVzdGlmeV9MZWZ0LAogICAgICBKdXN0aWZ5X1JpZ2h0LAogICAgICBKdXN0aWZ5X0NlbnRlciwK ICAgICAgSnVzdGlmeV9GaWxsKTsKCiAgIHR5cGUgR3RrX1NlbGVjdGlvbl9Nb2RlIGlzCiAgICAg KFNlbGVjdGlvbl9TaW5nbGUsCiAgICAgIFNlbGVjdGlvbl9Ccm93c2UsCiAgICAgIFNlbGVjdGlv bl9NdWx0aXBsZSwKICAgICAgU2VsZWN0aW9uX0V4dGVuZGVkKTsKCiAgIHR5cGUgR3RrX09yaWVu dGF0aW9uIGlzIChPcmllbnRhdGlvbl9Ib3Jpem9udGFsLCBPcmllbnRhdGlvbl9WZXJ0aWNhbCk7 CgogICB0eXBlIEd0a19TcGluX0J1dHRvbl9VcGRhdGVfUG9saWN5IGlzIChVcGRhdGVfQWx3YXlz LCBVcGRhdGVfSWZfVmFsaWQpOwoKICAgdHlwZSBHdGtfVG9vbGJhcl9DaGlsZF9UeXBlIGlzCiAg ICAgKFRvb2xiYXJfQ2hpbGRfU3BhY2UsCiAgICAgIFRvb2xiYXJfQ2hpbGRfQnV0dG9uLAogICAg ICBUb29sYmFyX0NoaWxkX1RvZ2dsZWJ1dHRvbiwKICAgICAgVG9vbGJhcl9DaGlsZF9SYWRpb2J1 dHRvbiwKICAgICAgVG9vbGJhcl9DaGlsZF9XaWRnZXQpOwoKICAgdHlwZSBHdGtfVG9vbGJhcl9T dHlsZSBpcyAoVG9vbGJhcl9JY29ucywgVG9vbGJhcl9UZXh0LCBUb29sYmFyX0JvdGgpOwoKICAg dHlwZSBHdGtfVG9vbGJhcl9TcGFjZV9TdHlsZSBpcyAoVG9vbGJhcl9TcGFjZV9FbXB0eSwgVG9v bGJhcl9TcGFjZV9MaW5lKTsKCiAgIHR5cGUgR3RrX1RyZWVfVmlld19Nb2RlIGlzIChUcmVlX1Zp ZXdfTGluZSwgVHJlZV9WaWV3X0l0ZW0pOwoKICAgdHlwZSBHdGtfVmlzaWJpbGl0eSBpcwogICAg IChWaXNpYmlsaXR5X05vbmUsIFZpc2liaWxpdHlfUGFydGlhbCwgVmlzaWJpbGl0eV9GdWxsKTsK CiAgIHR5cGUgR3RrX1Byb2dyZXNzX0Jhcl9TdHlsZSBpcwogICAgIChQcm9ncmVzc19Db250aW51 b3VzLCBQcm9ncmVzc19EaXNjcmV0ZSk7CgogICB0eXBlIEd0a19Qcm9ncmVzc19CYXJfT3JpZW50 YXRpb24gaXMKICAgICAoUHJvZ3Jlc3NfTGVmdF9Ub19SaWdodCwKICAgICAgUHJvZ3Jlc3NfUmln aHRfVG9fTGVmdCwKICAgICAgUHJvZ3Jlc3NfQm90dG9tX1RvX1RvcCwKICAgICAgUHJvZ3Jlc3Nf VG9wX1RvX0JvdHRvbSk7CgogICB0eXBlIEd0a19DdHJlZV9MaW5lX1N0eWxlIGlzCiAgICAgKEN0 cmVlX0xpbmVzX05vbmUsCiAgICAgIC0tICBObyBsaW5lIHdpbGwgYmUgZHJhd24gaW4gdGhlIEN0 cmVlCgogICAgICBDdHJlZV9MaW5lc19Tb2xpZCwKICAgICAgLS0gIFNvbGlkIGxpbmVzIHdpbGwg YmUgZHJhd24KCiAgICAgIEN0cmVlX0xpbmVzX0RvdHRlZCwKICAgICAgLS0gIERvdHRlZCBsaW5l cyB3aWxsIGJlIGRyYXduCgogICAgICBDdHJlZV9MaW5lc19UYWJiZWQKICAgICAgLS0gIFRoZSB0 cmVlIHdvbid0IGJlIGhpZ2hsaWdodGVkIGJ5IGxpbmVzIGJ1dCBieSB0YWJzIHN1cnJvdW5kaW5n IG5vZGVzCiAgICAgKTsKICAgLS0gIFNlZSBHdGsuQ3RyZWUuU2V0X0xpbmVfU3R5bGUgZm9yIG1v cmUgZGV0YWlscy4KCiAgIHR5cGUgR3RrX0N0cmVlX0V4cGFuZGVyX1N0eWxlIGlzCiAgICAgKEN0 cmVlX0V4cGFuZGVyX05vbmUsCiAgICAgIC0tICBObyBwaXhtYXAgd2lsbCBiZSBkcmF3biwgeW91 IHdpbGwgaGF2ZSB0byBkb3VibGUtY2xpY2sgb24gdGhlIG5vZGUgdG8KICAgICAgLS0gIGV4cGFu ZCBpdC4KCiAgICAgIEN0cmVlX0V4cGFuZGVyX1NxdWFyZSwKICAgICAgLS0gIFRoZSBwaXhtYXAg d2lsbCBiZSBhIHNxdWFyZQoKICAgICAgQ3RyZWVfRXhwYW5kZXJfVHJpYW5nbGUsCiAgICAgIC0t ICBUaGUgcGl4bWFwIHdpbGwgYmUgYSB0cmlhbmdsZQoKICAgICAgQ3RyZWVfRXhwYW5kZXJfQ2ly Y3VsYXIKICAgICAgLS0gIFRoZSBwaXhtYXAgd2lsbCBiZSBhIGNpcmNsZQogICAgICk7CiAgIC0t ICBTZWUgR3RrLkN0cmVlLlNldF9FeHBhbmRlcl9TdHlsZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAg LS0gIFNvbWUgR2xpYiBpbnN0YW50aWF0aW9ucwoKICAgZnVuY3Rpb24gQ29udmVydCAoUyA6IFN0 cmluZykgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICBmdW5jdGlvbiBDb252ZXJ0IChTIDogU3lz dGVtLkFkZHJlc3MpIHJldHVybiBTdHJpbmc7CiAgIGZ1bmN0aW9uIENvbnZlcnRfSSAoSSA6IEdp bnQpIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgZnVuY3Rpb24gQ29udmVydF9BIChTIDogU3lz dGVtLkFkZHJlc3MpIHJldHVybiBHaW50OwogICBwcmFnbWEgSW1wb3J0IChDLCBDb252ZXJ0X0ks ICJjb252ZXJ0X2kiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgQ29udmVydF9BLCAiY29udmVydF9h Iik7CgogICBwYWNrYWdlIFN0cmluZ19MaXN0IGlzIG5ldyBHbGliLkdsaXN0LkdlbmVyaWNfTGlz dCAoU3RyaW5nKTsKICAgLS0gIFdhcm5pbmc6IHdoZW4geW91IGNyZWF0ZSB0aGlzIGxpc3QsIG5l dyBtZW1vcnkgZ2V0cyBhbGxvY2F0ZWQgZm9yCiAgIC0tICBhbGwgdGhlIHN0cmluZ3MuIFlvdSBz aG91bGQgdXNlIHRoZSBmdW5jdGlvbiBGcmVlX1N0cmluZ19MaXN0CiAgIC0tICBpbnN0ZWFkIG9m IEdsaWIuR2xpc3QuRnJlZSB0byBiZSBzdXJlIHRvIGZyZWUgdGhpcyBtZW1vcnkuCgogICBwcm9j ZWR1cmUgRnJlZV9TdHJpbmdfTGlzdCAoTGlzdCA6IGluIG91dCBTdHJpbmdfTGlzdC5HbGlzdCk7 CiAgIC0tICBGcmVlIHRoZSBtZW1vcnkgb2NjdXBpZWQgYnkgYWxsIHRoZSBzdHJpbmdzIGluIHRo ZSBsaXN0LCBhcyB3ZWxsCiAgIC0tICBhcyB0aGUgbWVtb3J5IG9jY3VwaWVkIGJ5IHRoZSBsaXN0 IGl0c2VsZi4KCiAgIHBhY2thZ2UgR2ludF9MaXN0IGlzIG5ldwogICAgIEdsaWIuR2xpc3QuR2Vu ZXJpY19MaXN0IChHaW50LCBDb252ZXJ0X0ksIENvbnZlcnRfQSk7CgogICBmdW5jdGlvbiBDb252 ZXJ0X1VJIChJIDogR3VpbnQpIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgZnVuY3Rpb24gQ29u dmVydF9VQSAoUyA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gR3VpbnQ7CiAgIHByYWdtYSBJbXBv cnQgKEMsIENvbnZlcnRfVUksICJjb252ZXJ0X3VpIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENv bnZlcnRfVUEsICJjb252ZXJ0X3VhIik7CiAgIHBhY2thZ2UgR3VpbnRfTGlzdCBpcyBuZXcKICAg ICBHbGliLkdsaXN0LkdlbmVyaWNfTGlzdCAoR3VpbnQsIENvbnZlcnRfVUksIENvbnZlcnRfVUEp OwoKZW5kIEd0ay5FbnVtczsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRh OTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2Jl Y2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhp cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0K LS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBh bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAg LS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT dWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBz cGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJv bSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxl cyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3Qg IGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBj b3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhj ZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkg dGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05V IFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCndpdGggR2RrOyB1c2UgR2Rr Owp3aXRoIEdkay5Db2xvcjsKd2l0aCBHZGsuR0M7CndpdGggR2RrLkZvbnQ7CndpdGggR2RrLlR5 cGVzOwp3aXRoIEdkay5QaXhtYXA7CndpdGggR2RrLldpbmRvdzsKd2l0aCBHdGsuRW51bXM7Cgpw YWNrYWdlIEd0ay5TdHlsZSBpcwoKICAgdHlwZSBHdGtfU3R5bGUgaXMgbmV3IEdkay5DX1Byb3h5 OwogICAtLSAgVHlwZSB1c2VkIHRvIGhhbmRsZSBzdHlsZXMuCiAgIC0tICBAcHhyZWZ7UGFja2Fn ZV9HdGsuV2lkZ2V0fSBmb3Igc3R5bGUgaGFuZGxpbmcuCgogICBOdWxsX1N0eWxlIDogY29uc3Rh bnQgR3RrX1N0eWxlIDo9IG51bGw7CgogICBwcm9jZWR1cmUgR3RrX05ldyAoU3R5bGUgOiBvdXQg R3RrX1N0eWxlKTsKCiAgIGZ1bmN0aW9uIENvcHkgKFNvdXJjZSA6IGluIEd0a19TdHlsZSkgcmV0 dXJuIEd0a19TdHlsZTsKCiAgIGZ1bmN0aW9uIEF0dGFjaAogICAgIChTdHlsZSAgOiBpbiBHdGtf U3R5bGU7CiAgICAgIFdpbmRvdyA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdykgcmV0dXJuIEd0 a19TdHlsZTsKCiAgIHByb2NlZHVyZSBEZXRhY2ggKFN0eWxlIDogaW4gR3RrX1N0eWxlKTsKCiAg IHByb2NlZHVyZSBTZXRfQmFja2dyb3VuZAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxl OwogICAgICBXaW5kb3cgICAgIDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICBTdGF0 ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpOwoKICAgcHJvY2VkdXJlIFNldF9Gb3Jl Z3JvdW5kCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUg OiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgQ29sb3IgICAgICA6IGluIEdkay5Db2xv ci5HZGtfQ29sb3IpOwoKICAgcHJvY2VkdXJlIFNldF9GZwogICAgIChTdHlsZSAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAg ICAgIENvbG9yICAgICAgOiBpbiBHZGsuQ29sb3IuR2RrX0NvbG9yKSByZW5hbWVzIFNldF9Gb3Jl Z3JvdW5kOwoKICAgZnVuY3Rpb24gR2V0X0ZvcmVncm91bmQKICAgICAoU3R5bGUgICAgICA6IGlu IEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSBy ZXR1cm4gR2RrLkNvbG9yLkdka19Db2xvcjsKCiAgIGZ1bmN0aW9uIEdldF9GZwogICAgIChTdHls ZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0 YXRlX1R5cGUpIHJldHVybiBHZGsuQ29sb3IuR2RrX0NvbG9yCiAgICAgIHJlbmFtZXMgR2V0X0Zv cmVncm91bmQ7CgogICBwcm9jZWR1cmUgU2V0X0JhY2tncm91bmQKICAgICAoU3R5bGUgICAgICA6 IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBl OwogICAgICBDb2xvciAgICAgIDogaW4gR2RrLkNvbG9yLkdka19Db2xvcik7CgogICBwcm9jZWR1 cmUgU2V0X0JnCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5 cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgQ29sb3IgICAgICA6IGluIEdkay5D b2xvci5HZGtfQ29sb3IpIHJlbmFtZXMgU2V0X0JhY2tncm91bmQ7CgogICBmdW5jdGlvbiBHZXRf QmFja2dyb3VuZAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9U eXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuQ29sb3IuR2RrX0NvbG9y OwoKICAgZnVuY3Rpb24gR2V0X0JnCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAg ICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5Db2xv ci5HZGtfQ29sb3IKICAgICAgcmVuYW1lcyBHZXRfQmFja2dyb3VuZDsKCiAgIHByb2NlZHVyZSBT ZXRfTGlnaHQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlw ZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBDb2xvciAgICAgIDogaW4gR2RrLkNv bG9yLkdka19Db2xvcik7CgogICBmdW5jdGlvbiBHZXRfTGlnaHQKICAgICAoU3R5bGUgICAgICA6 IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBl KSByZXR1cm4gR2RrLkNvbG9yLkdka19Db2xvcjsKCiAgIHByb2NlZHVyZSBTZXRfRGFyawogICAg IChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMu R3RrX1N0YXRlX1R5cGU7CiAgICAgIENvbG9yICAgICAgOiBpbiBHZGsuQ29sb3IuR2RrX0NvbG9y KTsKCiAgIGZ1bmN0aW9uIEdldF9EYXJrCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7 CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5D b2xvci5HZGtfQ29sb3I7CgogICBwcm9jZWR1cmUgU2V0X01pZGRsZQogICAgIChTdHlsZSAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGU7CiAgICAgIENvbG9yICAgICAgOiBpbiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKCiAgIHByb2Nl ZHVyZSBTZXRfTWlkCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRl X1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgQ29sb3IgICAgICA6IGluIEdk ay5Db2xvci5HZGtfQ29sb3IpIHJlbmFtZXMgU2V0X01pZGRsZTsKCiAgIGZ1bmN0aW9uIEdldF9N aWRkbGUKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6 IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkNvbG9yLkdka19Db2xvcjsKCiAg IGZ1bmN0aW9uIEdldF9NaWQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAg U3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkNvbG9yLkdk a19Db2xvcgogICAgICByZW5hbWVzIEdldF9NaWRkbGU7CgogICBwcm9jZWR1cmUgU2V0X1RleHQK ICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVu dW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBDb2xvciAgICAgIDogaW4gR2RrLkNvbG9yLkdka19D b2xvcik7CgogICBmdW5jdGlvbiBHZXRfVGV4dAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0 eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBH ZGsuQ29sb3IuR2RrX0NvbG9yOwoKICAgcHJvY2VkdXJlIFNldF9CYXNlCiAgICAgKFN0eWxlICAg ICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVf VHlwZTsKICAgICAgQ29sb3IgICAgICA6IGluIEdkay5Db2xvci5HZGtfQ29sb3IpOwoKICAgZnVu Y3Rpb24gR2V0X0Jhc2UKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3Rh dGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkNvbG9yLkdka19D b2xvcjsKCiAgIHByb2NlZHVyZSBTZXRfQmxhY2sKICAgICAoU3R5bGUgOiBpbiBHdGtfU3R5bGU7 CiAgICAgIENvbG9yIDogaW4gR2RrLkNvbG9yLkdka19Db2xvcik7CgogICBmdW5jdGlvbiBHZXRf QmxhY2sgKFN0eWxlIDogaW4gR3RrX1N0eWxlKSByZXR1cm4gR2RrLkNvbG9yLkdka19Db2xvcjsK CiAgIHByb2NlZHVyZSBTZXRfV2hpdGUgKFN0eWxlIDogaW4gR3RrX1N0eWxlOyBDb2xvciA6IGlu IEdkay5Db2xvci5HZGtfQ29sb3IpOwoKICAgZnVuY3Rpb24gR2V0X1doaXRlIChTdHlsZSA6IGlu IEd0a19TdHlsZSkgcmV0dXJuIEdkay5Db2xvci5HZGtfQ29sb3I7CgogICBwcm9jZWR1cmUgU2V0 X0ZvbnQgKFN0eWxlIDogaW4gR3RrX1N0eWxlOyBGb250IDogaW4gR2RrLkZvbnQuR2RrX0ZvbnQp OwoKICAgZnVuY3Rpb24gR2V0X0ZvbnQgKFN0eWxlIDogaW4gR3RrX1N0eWxlKSByZXR1cm4gR2Rr LkZvbnQuR2RrX0ZvbnQ7CgogICBwcm9jZWR1cmUgU2V0X0JsYWNrX0dDIChTdHlsZSA6IGluIEd0 a19TdHlsZTsgR0MgOiBpbiBHZGsuR0MuR2RrX0dDKTsKCiAgIGZ1bmN0aW9uIEdldF9CbGFja19H QyAoU3R5bGUgOiBpbiBHdGtfU3R5bGUpIHJldHVybiBHZGsuR0MuR2RrX0dDOwoKICAgcHJvY2Vk dXJlIFNldF9CbGFjawogICAgIChTdHlsZSA6IGluIEd0a19TdHlsZTsgR0MgOiBpbiBHZGsuR0Mu R2RrX0dDKSByZW5hbWVzIFNldF9CbGFja19HQzsKCiAgIGZ1bmN0aW9uIEdldF9CbGFjawogICAg IChTdHlsZSA6IGluIEd0a19TdHlsZSkgcmV0dXJuIEdkay5HQy5HZGtfR0MgcmVuYW1lcyBHZXRf QmxhY2tfR0M7CgogICBwcm9jZWR1cmUgU2V0X1doaXRlX0dDIChTdHlsZSA6IGluIEd0a19TdHls ZTsgR0MgOiBpbiBHZGsuR0MuR2RrX0dDKTsKCiAgIGZ1bmN0aW9uIEdldF9XaGl0ZV9HQyAoU3R5 bGUgOiBpbiBHdGtfU3R5bGUpIHJldHVybiBHZGsuR0MuR2RrX0dDOwoKICAgcHJvY2VkdXJlIFNl dF9XaGl0ZQogICAgIChTdHlsZSA6IGluIEd0a19TdHlsZTsgR0MgOiBpbiBHZGsuR0MuR2RrX0dD KSByZW5hbWVzIFNldF9XaGl0ZV9HQzsKCiAgIGZ1bmN0aW9uIEdldF9XaGl0ZQogICAgIChTdHls ZSA6IGluIEd0a19TdHlsZSkgcmV0dXJuIEdkay5HQy5HZGtfR0MgcmVuYW1lcyBHZXRfV2hpdGVf R0M7CgogICBwcm9jZWR1cmUgU2V0X0ZvcmVncm91bmRfR0MKICAgICAoU3R5bGUgICAgICA6IGlu IEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwog ICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdDLkdka19HQyk7CgogICBmdW5jdGlvbiBHZXRfRm9y ZWdyb3VuZF9HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9U eXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuR0MuR2RrX0dDOwoKICAg cHJvY2VkdXJlIFNldF9Gb3JlZ3JvdW5kCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7 CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAg ICAgICA6IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMgU2V0X0ZvcmVncm91bmRfR0M7CgogICBm dW5jdGlvbiBHZXRfRm9yZWdyb3VuZAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwog ICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuR0Mu R2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X0ZvcmVncm91bmRfR0M7CgogICBwcm9jZWR1cmUgU2V0 X0ZnCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBp biBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtf R0MpIHJlbmFtZXMgU2V0X0ZvcmVncm91bmRfR0M7CgogICBmdW5jdGlvbiBHZXRfRmcKICAgICAo U3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0 a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkdDLkdka19HQwogICAgICByZW5hbWVzIEdldF9Gb3Jl Z3JvdW5kX0dDOwoKICAgcHJvY2VkdXJlIFNldF9GZ19HQwogICAgIChTdHlsZSAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAg ICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9Gb3JlZ3JvdW5k X0dDOwoKICAgZnVuY3Rpb24gR2V0X0ZnX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5 bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdk ay5HQy5HZGtfR0MKICAgICAgcmVuYW1lcyBHZXRfRm9yZWdyb3VuZF9HQzsKCiAgIHByb2NlZHVy ZSBTZXRfQmFja2dyb3VuZF9HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAg ICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIEdDICAgICAgICAg OiBpbiBHZGsuR0MuR2RrX0dDKTsKCiAgIGZ1bmN0aW9uIEdldF9CYWNrZ3JvdW5kX0dDCiAgICAg KFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5H dGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5HQy5HZGtfR0M7CgogICBwcm9jZWR1cmUgU2V0X0Jh Y2tncm91bmQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlw ZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdD Lkdka19HQykgcmVuYW1lcyBTZXRfQmFja2dyb3VuZF9HQzsKCiAgIGZ1bmN0aW9uIEdldF9CYWNr Z3JvdW5kCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUg OiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5HQy5HZGtfR0MKICAgICAgcmVu YW1lcyBHZXRfQmFja2dyb3VuZF9HQzsKCiAgIHByb2NlZHVyZSBTZXRfQmcKICAgICAoU3R5bGUg ICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0 ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdDLkdka19HQykgcmVuYW1lcyBTZXRf QmFja2dyb3VuZF9HQzsKCiAgIGZ1bmN0aW9uIEdldF9CZwogICAgIChTdHlsZSAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJl dHVybiBHZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X0JhY2tncm91bmRfR0M7CgogICBw cm9jZWR1cmUgU2V0X0JnX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAg IFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6 IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMgU2V0X0JhY2tncm91bmRfR0M7CgogICBmdW5jdGlv biBHZXRfQmdfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVf VHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkdDLkdka19HQwogICAg ICByZW5hbWVzIEdldF9CYWNrZ3JvdW5kX0dDOwoKICAgcHJvY2VkdXJlIFNldF9MaWdodF9HQwog ICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51 bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKTsK CiAgIGZ1bmN0aW9uIEdldF9MaWdodF9HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxl OwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsu R0MuR2RrX0dDOwoKICAgcHJvY2VkdXJlIFNldF9MaWdodAogICAgIChTdHlsZSAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAg ICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9MaWdodF9HQzsK CiAgIGZ1bmN0aW9uIEdldF9MaWdodAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwog ICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuR0Mu R2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X0xpZ2h0X0dDOwoKICAgcHJvY2VkdXJlIFNldF9EYXJr X0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBp biBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtf R0MpOwoKICAgZnVuY3Rpb24gR2V0X0RhcmtfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19T dHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4g R2RrLkdDLkdka19HQzsKCiAgIHByb2NlZHVyZSBTZXRfRGFyawogICAgIChTdHlsZSAgICAgIDog aW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7 CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9EYXJrX0dD OwoKICAgZnVuY3Rpb24gR2V0X0RhcmsKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsK ICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkdD Lkdka19HQwogICAgICByZW5hbWVzIEdldF9EYXJrX0dDOwoKICAgcHJvY2VkdXJlIFNldF9NaWRk bGVfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6 IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdDLkdk a19HQyk7CgogICBmdW5jdGlvbiBHZXRfTWlkZGxlX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBH dGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0 dXJuIEdkay5HQy5HZGtfR0M7CgogICBwcm9jZWR1cmUgU2V0X01pZGRsZQogICAgIChTdHlsZSAg ICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRl X1R5cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9N aWRkbGVfR0M7CgogICBmdW5jdGlvbiBHZXRfTWlkZGxlCiAgICAgKFN0eWxlICAgICAgOiBpbiBH dGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0 dXJuIEdkay5HQy5HZGtfR0MKICAgICAgcmVuYW1lcyBHZXRfTWlkZGxlX0dDOwoKICAgcHJvY2Vk dXJlIFNldF9NaWRfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3Rh dGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4g R2RrLkdDLkdka19HQykgcmVuYW1lcyBTZXRfTWlkZGxlX0dDOwoKICAgZnVuY3Rpb24gR2V0X01p ZF9HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDog aW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFt ZXMgR2V0X01pZGRsZV9HQzsKCiAgIHByb2NlZHVyZSBTZXRfTWlkCiAgICAgKFN0eWxlICAgICAg OiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlw ZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMgU2V0X01pZGRs ZV9HQzsKCiAgIGZ1bmN0aW9uIEdldF9NaWQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHls ZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2Rr LkdDLkdka19HQwogICAgICByZW5hbWVzIEdldF9NaWRkbGVfR0M7CgogICBwcm9jZWR1cmUgU2V0 X1RleHRfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlw ZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdD Lkdka19HQyk7CgogICBmdW5jdGlvbiBHZXRfVGV4dF9HQwogICAgIChTdHlsZSAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJl dHVybiBHZGsuR0MuR2RrX0dDOwoKICAgcHJvY2VkdXJlIFNldF9UZXh0CiAgICAgKFN0eWxlICAg ICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVf VHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMgU2V0X1Rl eHRfR0M7CgogICBmdW5jdGlvbiBHZXRfVGV4dAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0 eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBH ZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X1RleHRfR0M7CgogICBwcm9jZWR1cmUgU2V0 X0Jhc2VfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlw ZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdD Lkdka19HQyk7CgogICBmdW5jdGlvbiBHZXRfQmFzZV9HQwogICAgIChTdHlsZSAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJl dHVybiBHZGsuR0MuR2RrX0dDOwoKICAgcHJvY2VkdXJlIFNldF9CYXNlCiAgICAgKFN0eWxlICAg ICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVf VHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMgU2V0X0Jh c2VfR0M7CgogICBmdW5jdGlvbiBHZXRfQmFzZQogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0 eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBH ZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X0Jhc2VfR0M7CgogICBwcm9jZWR1cmUgU2V0 X0JnX1BpeG1hcAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9U eXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIFBpeG1hcCAgICAgOiBpbiBHZGsu UGl4bWFwLkdka19QaXhtYXApOwoKICAgZnVuY3Rpb24gR2V0X0JnX1BpeG1hcAogICAgIChTdHls ZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0 YXRlX1R5cGUpIHJldHVybiBHZGsuUGl4bWFwLkdka19QaXhtYXA7CgogICBmdW5jdGlvbiBYX1Ro aWNrbmVzcyAoU3R5bGUgOiBpbiBHdGtfU3R5bGUpIHJldHVybiBHaW50OwogICAtLSAgV2lkdGgg b2YgdGhlIHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJhbmdlcyB3aGVuIFN0eWxlIGlzIGFwcGxp ZWQuCiAgIC0tICBJbiBmYWN0LCB0aGlzIHRoaWNrbmVzcyBpcyB1c2VkIGZvciBhIGxvdCBvZiB3 aWRnZXRzIHdob3NlIHdpZHRoCiAgIC0tICBkb2VzIG5vdCBkZXBlbmQgb24gdGhlaXIgY29udGVu dCwgc3VjaCBhcyBydWxlcnMsLi4uCgogICBmdW5jdGlvbiBZX1RoaWNrbmVzcyAoU3R5bGUgOiBp biBHdGtfU3R5bGUpIHJldHVybiBHaW50OwogICAtLSAgSGVpZ2h0IG9mIHRoZSBob3Jpem9udGFs IHNjcm9sbGJhcnMgYW5kIHJhbmdlcyB3aGVuIFN0eWxlIGlzIGFwcGxpZWQuCgogICBwcm9jZWR1 cmUgRHJhd19IbGluZQogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBXaW5k b3cgICAgIDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICBTdGF0ZV9UeXBlIDogaW4g RW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIFgxLCBYMiAgICAgOiBpbiBHaW50OwogICAgICBZ ICAgICAgICAgIDogaW4gR2ludCk7CgogICBwcm9jZWR1cmUgRHJhd19WbGluZQogICAgIChTdHls ZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBXaW5kb3cgICAgIDogaW4gR2RrLldpbmRvdy5H ZGtfV2luZG93OwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAg ICAgIFkxLCBZMiAgICAgOiBpbiBHaW50OwogICAgICBYICAgICAgICAgIDogaW4gR2ludCk7Cgog ICBwcm9jZWR1cmUgRHJhd19TaGFkb3cKICAgICAoU3R5bGUgICAgICAgOiBpbiBHdGtfU3R5bGU7 CiAgICAgIFdpbmRvdyAgICAgIDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICBTdGF0 ZV9UeXBlICA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBTaGFkb3dfVHlwZSA6IGlu IEVudW1zLkd0a19TaGFkb3dfVHlwZTsKICAgICAgWCwgWSAgICAgICAgOiBpbiBHaW50OwogICAg ICBXaWR0aCAgICAgICA6IGluIEdpbnQ7CiAgICAgIEhlaWdodCAgICAgIDogaW4gR2ludCk7Cgog ICBwcm9jZWR1cmUgRHJhd19Qb2x5Z29uCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7 CiAgICAgIFdpbmRvdyAgICAgOiBpbiBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAgICAgIFN0YXRl X1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgU2hhZG93X1R5cGUgOiBpbiBF bnVtcy5HdGtfU2hhZG93X1R5cGU7CiAgICAgIFBvaW50cyAgICAgOiBpbiBHZGsuVHlwZXMuR2Rr X1BvaW50c19BcnJheTsKICAgICAgRmlsbCAgICAgICA6IGluIEJvb2xlYW4pOwoKICAgcHJvY2Vk dXJlIERyYXdfQXJyb3cKICAgICAoU3R5bGUgICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFdp bmRvdyAgICAgIDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICBTdGF0ZV9UeXBlICA6 IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBTaGFkb3dfVHlwZSA6IGluIEVudW1zLkd0 a19TaGFkb3dfVHlwZTsKICAgICAgQXJyb3dfVHlwZSAgOiBpbiBFbnVtcy5HdGtfQXJyb3dfVHlw ZTsKICAgICAgRmlsbCAgICAgICAgOiBpbiBCb29sZWFuOwogICAgICBYLCBZICAgICAgICA6IGlu IEdpbnQ7CiAgICAgIFdpZHRoICAgICAgIDogaW4gR2ludDsKICAgICAgSGVpZ2h0ICAgICAgOiBp biBHaW50KTsKCiAgIHByb2NlZHVyZSBEcmF3X0RpYW1vbmQKICAgICAoU3R5bGUgICAgICAgOiBp biBHdGtfU3R5bGU7CiAgICAgIFdpbmRvdyAgICAgIDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93 OwogICAgICBTdGF0ZV9UeXBlICA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBTaGFk b3dfVHlwZSA6IGluIEVudW1zLkd0a19TaGFkb3dfVHlwZTsKICAgICAgWCwgWSAgICAgICAgOiBp biBHaW50OwogICAgICBXaWR0aCAgICAgICA6IGluIEdpbnQ7CiAgICAgIEhlaWdodCAgICAgIDog aW4gR2ludCk7CgogICBwcm9jZWR1cmUgRHJhd19PdmFsCiAgICAgKFN0eWxlICAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBXaW5kb3cgICAgICA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsK ICAgICAgU3RhdGVfVHlwZSAgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgU2hhZG93 X1R5cGUgOiBpbiBFbnVtcy5HdGtfU2hhZG93X1R5cGU7CiAgICAgIFgsIFkgICAgICAgIDogaW4g R2ludDsKICAgICAgV2lkdGggICAgICAgOiBpbiBHaW50OwogICAgICBIZWlnaHQgICAgICA6IGlu IEdpbnQpOwoKICAgcHJvY2VkdXJlIERyYXdfU3RyaW5nCiAgICAgKFN0eWxlICAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBXaW5kb3cgICAgICA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsK ICAgICAgU3RhdGVfVHlwZSAgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgWCwgWSAg ICAgICAgOiBpbiBHaW50OwogICAgICBTdHIgICAgICAgICA6IGluIFN0cmluZyk7CgogICBwcm9j ZWR1cmUgUmVmIChPYmplY3QgOiBpbiBHdGtfU3R5bGUpOwogICBwcm9jZWR1cmUgVW5yZWYgKE9i amVjdCA6IGluIEd0a19TdHlsZSk7Cgpwcml2YXRlCiAgIHByYWdtYSBJbXBvcnQgKEMsIEF0dGFj aCwgImd0a19zdHlsZV9hdHRhY2giKTsKICAgcHJhZ21hIEltcG9ydCAoQywgQ29weSwgImd0a19z dHlsZV9jb3B5Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIERldGFjaCwgImd0a19zdHlsZV9kZXRh Y2giKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUmVmLCAiZ3RrX3N0eWxlX3JlZiIpOwogICBwcmFn bWEgSW1wb3J0IChDLCBVbnJlZiwgImd0a19zdHlsZV91bnJlZiIpOwogICBwcmFnbWEgSW1wb3J0 IChDLCBEcmF3X0RpYW1vbmQsICJndGtfZHJhd19kaWFtb25kIik7CiAgIHByYWdtYSBJbXBvcnQg KEMsIERyYXdfSGxpbmUsICJndGtfZHJhd19obGluZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBE cmF3X092YWwsICJndGtfZHJhd19vdmFsIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIERyYXdfU2hh ZG93LCAiZ3RrX2RyYXdfc2hhZG93Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIERyYXdfVmxpbmUs ICJndGtfZHJhd192bGluZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRm9udCwgImFkYV9z dHlsZV9zZXRfZm9udCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfRm9udCwgImFkYV9zdHls ZV9nZXRfZm9udCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfQmxhY2tfR0MsICJhZGFfc3R5 bGVfc2V0X2JsYWNrX2djIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9CbGFja19HQywgImFk YV9zdHlsZV9nZXRfYmxhY2tfZ2MiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X1doaXRlX0dD LCAiYWRhX3N0eWxlX3NldF93aGl0ZV9nYyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfV2hp dGVfR0MsICJhZGFfc3R5bGVfZ2V0X3doaXRlX2djIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFhf VGhpY2tuZXNzLCAiYWRhX3N0eWxlX2dldF94X3RoaWNrbmVzcyIpOwogICBwcmFnbWEgSW1wb3J0 IChDLCBZX1RoaWNrbmVzcywgImFkYV9zdHlsZV9nZXRfeV90aGlja25lc3MiKTsKZW5kIEd0ay5T dHlsZTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBm b3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAg ICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJu YXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0g bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAg ICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRo aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAg ICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2Vw dGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhp cyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNl IGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBj YXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMg bm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0g ZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNl bnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tCi0tICBBIGdy YXBoaWMgY29udGV4dCBpcyBhIHN0cnVjdHVyZSB0aGF0IGRlc2NyaWJlcyBhbGwgdGhlIGF0dHJp YnV0ZXMKLS0gIHVzZWQgYnkgdGhlIGRyYXdpbmcgZnVuY3Rpb25zIGluIEdkay4KLS0gIFRoZSBj b2xvcnMsIGxpbmUgc3R5bGVzLCBGaWxsIHN0eWxlcyBhbmQgc28gb24gYXJlIGRlZmluZWQgdGhy b3VnaAotLSAgdGhpcyBzdHJ1Y3R1cmUuCi0tCi0tICBPbiBYMTEgc3lzdGVtcywgdGhpcyBzdHJ1 Y3R1cmUgaXMgc3RvcmVkIGRpcmVjdGx5IG9uIHRoZSBYU2VydmVyLAotLSAgd2hpY2ggc3BlZWRz IHVwIHRoZSB0cmFuc2ZlciBvZiB0aGUgZHJhd2luZyBhdHRyaWJ1dGVzIGEgbG90LiBJbnN0ZWFk Ci0tICBvZiB0cmFuc2ZlcnJpbmcgYWxsIG9mIHRoZW0gZXZlcnkgdGltZSB5b3UgY2FsbCBvbmUg b2YgdGhlIGRyYXdpbmcKLS0gIGZ1bmN0aW9ucywgeW91IHNpbXBseSBzcGVjaWZ5IHdoaWNoIEdD IHlvdSB3YW50IHRvIHVzZS4KLS0KLS0gIFRodXMsIGl0IGlzIHJlY29tbWVuZGVkIHRvIGNyZWF0 ZSBhcyBtYW55IEdDcyBhcyB5b3UgbmVlZCwgaW5zdGVhZAotLSAgb2YgY3JlYXRpbmcgYSBzaW5n bGUgb25lIHRoYXQgaXMgbW9kaWZpZWQgZXZlcnkgdGltZSB5b3UgbmVlZCB0bwotLSAgbW9kaWZ5 IG9uZSBvZiB0aGUgYXR0cmlidXRlcy4KLS0KLS0gIE9uIFVuaXggbWFjaGluZXMsIHlvdSBzaG91 bGQgaGF2ZSBhIGxvb2sgYXQgdGhlIGV4dGVybmFsIHV0aWxpdHkgJ3hnYycKLS0gIHdoaWNoIGRl bW9uc3RyYXRlcyBhbGwgdGhlIGJhc2ljIHNldHRpbmdzIG9mIHRoZSBncmFwaGljIGNvbnRleHRz LgotLQotLSAgPC9kZXNjcmlwdGlvbj4KLS0gIDxjX3ZlcnNpb24+MS4yLjY8L2NfdmVyc2lvbj4K CndpdGggR2xpYjsgdXNlIEdsaWI7CndpdGggR2RrLkNvbG9yOwp3aXRoIEdkay5Gb250Owp3aXRo IEdkay5SZWN0YW5nbGU7CndpdGggR2RrLlJlZ2lvbjsKd2l0aCBHZGsuVHlwZXM7CndpdGggR2Rr LldpbmRvdzsKCnBhY2thZ2UgR2RrLkdDIGlzCgogICBzdWJ0eXBlIEdka19HQyBpcyBHZGsuR2Rr X0dDOwogICAtLSAgQSBncmFwaGljIGNvbnRleHQgdGhhdCBjb250YWluIGFsbCB0aGUgaW5mb3Jt YXRpb24gdG8gZHJhdyBncmFwaGljcwogICAtLSAgb24gdGhlIHNjcmVlbi4KICAgLS0gIENyZWF0 aW5nIHRoZXNlIEdDIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gcGFzc2luZyBhIGxvdCBvZiBwYXJh bWV0ZXJzCiAgIC0tICB0byBlYWNoIG9mIHRoZSBkcmF3aW5nIGZ1bmN0aW9ucywgc2luY2UgdGhl c2UgR0MgYXJlIHN0b3JlZCBvbiB0aGUKICAgLS0gIHNlcnZlciBzaWRlIGFuZCBkbyBub3QgbmVl ZCB0byBiZSBwYXNzIHRocm91Z2ggdGhlIG5ldHdvcmsuCgogICB0eXBlIEdka19HQ19WYWx1ZXMg aXMgbmV3IEdkay5DX1Byb3h5OwogICAtLSAgQSBzdHJ1Y3R1cmUgdXNlZCBvbiB0aGUgY2xpZW50 IHNpZGUgdG8gc3RvcmUgdGhlIHNhbWUgaW5mb3JtYXRpb24KICAgLS0gIGFzIHRoZSBHQy4gQ3Jl YXRpbmcgYSBHQyBmcm9tIHRoaXMgc3RydWN0dXJlIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4KICAg LS0gIGNhbGxpbmcgYSBsb3Qgb2YgZnVuY3Rpb25zIHRvIG1vZGlmeSB0aGUgR0MgZGlyZWN0bHks IHNpbmNlIHRoZXJlIGlzCiAgIC0tICBhIHNpbmdsZSBjYWxsIHRvIHRoZSBzZXJ2ZXIuCgogICBO dWxsX0dDIDogY29uc3RhbnQgR2RrX0dDOwogICBOdWxsX0dDX1ZhbHVlcyA6IGNvbnN0YW50IEdk a19HQ19WYWx1ZXM7CgogICAtLS0tLS0tLS0tLS0KICAgLS0gR2RrX0dDIC0tCiAgIC0tLS0tLS0t LS0tLQoKICAgcHJvY2VkdXJlIEdka19OZXcgKEdDICAgICA6ICAgIG91dCBHZGtfR0M7CiAgICAg ICAgICAgICAgICAgICAgICBXaW5kb3cgOiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2luZG93KTsK ICAgLS0gIENyZWF0ZSBhIG5ldyBncmFwaGljIGNvbnRleHQuCiAgIC0tICBUaGUgd2luZG93IG11 c3QgaGF2ZSBiZWVuIHJlYWxpemVkIGZpcnN0IChzbyB0aGF0IGl0IGlzIGFzc29jaWF0ZWQKICAg LS0gIHdpdGggc29tZSByZXNvdXJjZXMgb24gdGhlIFhzZXJ2ZXIpLgogICAtLSAgVGhlIEdDIGNh biB0aGVuIGJlIHVzZWQgZm9yIGFueSB3aW5kb3cgdGhhdCBoYXMgdGhlIHNhbWUgcm9vdCB3aW5k b3csCiAgIC0tICBhbmQgc2FtZSBjb2xvciBkZXB0aCBhcyBXaW5kb3cuCiAgIC0tICBTZWUgdGhl IG1hbnVhbCBwYWdlIGZvciBYQ3JlYXRlR0Mgb24gVW5peCBzeXN0ZW1zIGZvciBtb3JlIGluZm9y bWF0aW9uLgoKICAgcHJvY2VkdXJlIEdka19OZXcgKEdDICAgICAgICAgIDogICAgb3V0IEdka19H QzsKICAgICAgICAgICAgICAgICAgICAgIFdpbmRvdyAgICAgIDogaW4gICAgIEdkay5XaW5kb3cu R2RrX1dpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyAgICAgIDogaW4gICAgIEdk a19HQ19WYWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXNfTWFzayA6IGluICAgICBU eXBlcy5HZGtfR0NfVmFsdWVzX01hc2spOwogICAtLSAgQ3JlYXRlIGEgbmV3IGdyYXBoaWMgY29u dGV4dC4KICAgLS0gIEl0IGlzIGRpcmVjdGx5IGNyZWF0ZWQgd2l0aCB0aGUgdmFsdWVzIHNldCBp biBWYWx1ZXMsIGFuZCB3aG9zZQogICAtLSAgYXNzb2NpYXRlZCBmaWVsZCBoYXMgYmVlbiBzZXQg aW4gVmFsdWVzX01hc2suCiAgIC0tICBUaGlzIGlzIGZhc3RlciB0aGFuIGNhbGxpbmcgdGhlIHNp bXBsZSBHZGtfTmV3IGZ1bmN0aW9uIGFuZCBlYWNoIG9mCiAgIC0tICBvdGhlciBmdW5jdGlvbnMg aW4gdGhpcyBwYWNrYWdlLCBzaW5jZSBlYWNoIG9mIHRoZW0gcmVxdWlyZXMgYSBjYWxsCiAgIC0t ICB0byB0aGUgc2VydmVyLgoKICAgcHJvY2VkdXJlIERlc3Ryb3kgKEdDIDogaW4gR2RrX0dDKTsK ICAgLS0gIEZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgb24gdGhlIHNlcnZlciBmb3IgdGhlIGdy YXBoaWMgY29udGV4dC4KICAgLS0gIEdyYXBoaWMgY29udGV4dHMgYXJlIG5ldmVyIGZyZWVkIGF1 dG9tYXRpY2FsbHkgYnkgR3RrQWRhLCB0aGlzIGlzCiAgIC0tICB0aGUgdXNlciByZXNwb25zaWJp bGl0eSB0byBkbyBzby4KCiAgIHByb2NlZHVyZSBSZWYgKEdDIDogaW4gR2RrX0dDKTsKICAgLS0g IEluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGZvciB0aGUgZ3JhcGhpYyBjb250ZXh0 LgogICAtLSAgWW91IHNob3VsZCB1c3VhbGx5IG5vdCBoYXZlIHRvIHVzZSBpdC4KCiAgIHByb2Nl ZHVyZSBVbnJlZiAoR0MgOiBpbiBHZGtfR0MpOwogICAtLSAgRGVjcmVtZW50IHRoZSByZWZlcmVu Y2UgY291bnRpbmcgZm9yIHRoZSBncmFwaGljIGNvbnRleHQuCiAgIC0tICBXaGVuIHRoaXMgcmVh Y2hlcyAwLCB0aGUgZ3JhcGhpYyBjb250ZXh0IGlzIGRlc3Ryb3llZC4KCiAgIHByb2NlZHVyZSBH ZXRfVmFsdWVzIChHQyAgICAgOiBpbiBHZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICAgICBW YWx1ZXMgOiBpbiBHZGtfR0NfVmFsdWVzKTsKICAgLS0gIEdldCB0aGUgdmFsdWVzIHNldCBpbiB0 aGUgR0MuCiAgIC0tICBUaGlzIGNvcGllcyB0aGUgdmFsdWVzIGZyb20gdGhlIHNlcnZlciB0byBj bGllbnQsIGFsbG93aW5nIGZhc3RlcgogICAtLSAgbW9kaWZpY2F0aW9ucy4gVmFsdWVzIGNhbiB0 aGVuIGJlIGNvcGllZCBiYWNrIHRvIHRoZSBzZXJ2ZXIgYnkKICAgLS0gIGNyZWF0aW5nIGEgbmV3 IGdyYXBoaWMgY29udGV4dCB3aXRoIHRoZSBmdW5jdGlvbiBHZGtfTmV3IGFib3ZlLgogICAtLSAg VmFsdWVzIHNob3VsZCBoYXZlIGJlZW4gYWxsb2NhdGVkIGZpcnN0IHdpdGggYSBjYWxsIHRvIEdk a19OZXcuCgogICBwcm9jZWR1cmUgU2V0X0ZvcmVncm91bmQgKEdDICAgIDogaW4gR2RrX0dDOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIDogaW4gR2RrLkNvbG9yLkdka19Db2xv cik7CiAgIC0tICBTZXQgdGhlIGZvcmVncm91bmQgY29sb3IgZm9yIHRoZSBncmFwaGljIGNvbnRl eHQuCiAgIC0tICBUaGlzIGNvbG9yIGlzIHRoZSBvbmUgdGhhdCBpcyB1c2VkIGJ5IG1vc3QgZHJh d2luZyBmdW5jdGlvbnMuCgogICBwcm9jZWR1cmUgU2V0X0JhY2tncm91bmQgKEdDICAgICA6IGlu IEdka19HQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciAgOiBpbiBHZGsuQ29s b3IuR2RrX0NvbG9yKTsKICAgLS0gIFNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGdy YXBoaWMgY29udGV4dC4KCiAgIHByb2NlZHVyZSBTZXRfRm9udCAoR0MgICA6IGluIEdka19HQzsK ICAgICAgICAgICAgICAgICAgICAgICBGb250IDogaW4gR2RrLkZvbnQuR2RrX0ZvbnQpOwogICAt LSAgU2V0IHRoZSBmb250IHVzZWQgYnkgdGhlIGdyYXBoaWMgY29udGV4dC4KICAgLS0gIFRoaXMg Zm9udCBpcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiBHZGsuRHJhd2FibGUuRHJhd19UZXh0LgoKICAg cHJvY2VkdXJlIFNldF9GdW5jdGlvbiAoR0MgICA6IGluIEdka19HQzsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgRnVuYyA6IGluIFR5cGVzLkdka19GdW5jdGlvbik7CiAgIC0tICBTZXQgdGhl IGZ1bmN0aW9uIGluIHRoZSBncmFwaGljIGNvbnRleHQuCiAgIC0tICBUaGlzIGZ1bmN0aW9uIHNw ZWNpZmllcyBob3cgdGhlIHBvaW50cyBhcmUgcHV0IG9uIHRoZSBzY3JlZW4sIGllCiAgIC0tICBp ZiBHdGtBZGEgaG93IEd0a0FkYSBzaG91bGQgbWl4IHRoZSBwb2ludCBhbHJlYWR5IG9uIHRoZSBz Y3JlZW4KICAgLS0gIGFuZCB0aGUgbmV3IHBvaW50IGJlaW5nIHB1dC4KICAgLS0gIE5vdGUgdGhh dCBzZXR0aW5nIHRoZSBmdW5jdGlvbiB0byBHZGtfWG9yIGlzIG5vdCB0aGUgcmlnaHQgd2F5CiAg IC0tICB0byBkbyBhbmltYXRpb24uIFlvdSBzaG91bGQgaW5zdGVhZCBzYXZlIHRoZSBiYWNrZ3Jv dW5kIHBpeG1hcCwKICAgLS0gIHB1dCB0aGUgaW1hZ2UsIGFuZCB0aGVuIHJlc3RvcmUgdGhlIGJh Y2tncm91bmQuCiAgIC0tCiAgIC0tICBJbiBnZW5lcmFsLCB0aGVyZSBhcmUgdGhyZWUgYmFzaWMg c3RlcHMgdG8gZHJhd2luZzogcmVhZGluZyB0aGUgc291cmNlCiAgIC0tICBwaXhlbHMsIHJlYWRp bmcgdGhlIGRlc3RpbmF0aW9uIHBpeGVscywgYW5kIHdyaXRpbmcgdGhlIGRlc3RpbmF0aW9uCiAg IC0tICBwaXhlbHMuICBTb21lIGZ1bmN0aW9ucyBvbmx5IHBlcmZvcm0gdGhlIHRoaXJkIHN0ZXAg KFNldCBhbmQgQ2xlYXIpLAogICAtLSAgc29tZSBkbyBub3QgbmVlZCB0aGUgbWlkZGxlIHN0ZXAg KENvcHkpLCB3aGVyZWFzIG1vc3QgcmVxdWlyZSB0aGUgdGhyZWUKICAgLS0gIHN0ZXBzLCBhbmQg dGh1cyBjYW4gYmUgbXVjaCBzbG93ZXIuCgogICBwcm9jZWR1cmUgU2V0X0ZpbGwgKEdDICAgOiBp biBHZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICAgRmlsbCA6IGluIFR5cGVzLkdka19GaWxs KTsKICAgLS0gIFNldCB0aGUgcGF0dGVybiB1c2VkIGZvciBmaWxsaW5nIHRoZSBwb2x5Z29ucy4K CiAgIHByb2NlZHVyZSBTZXRfVGlsZSAoR0MgICA6IGluIEdka19HQzsKICAgICAgICAgICAgICAg ICAgICAgICBUaWxlIDogaW4gR2RrLkdka19QaXhtYXApOwoKICAgcHJvY2VkdXJlIFNldF9TdGlw cGxlIChHQyAgICAgIDogaW4gR2RrX0dDOwogICAgICAgICAgICAgICAgICAgICAgICAgIFN0aXBw bGUgOiBpbiBHZGsuR2RrX1BpeG1hcCk7CgogICBwcm9jZWR1cmUgU2V0X0NsaXBfTWFzayAoR0Mg ICAgOiBpbiBHZGsuR0MuR2RrX0dDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFzayAg OiBpbiBHZGsuR2RrX0JpdG1hcCk7CiAgIC0tICBJZiBNYXNrIGlzIHNldCB0byBOdWxsX0JpdG1h cCwgdGhlbiBubyBjbGlwX21hc2sgaXMgdXNlZCBmb3IgZHJhd2luZy4KICAgLS0gIFBvaW50cyB3 aWxsIGJlIGRyYXduIHRocm91Z2ggdGhpcyBHQyBvbmx5IHdoZXJlIHRoZSBiaXRzIGFyZSBzZXQg dG8gMQogICAtLSAgaW4gdGhlIG1hc2suIFNlZSBhbHNvIHRoZSBmdW5jdGlvbiBTZXRfQ2xpcF9P cmlnaW4gZm9yCiAgIC0tICBob3cgdG8gbW92ZSB0aGUgbWFzayBpbnNpZGUgdGhlIEdDLgoKICAg cHJvY2VkdXJlIFNldF9Uc19PcmlnaW4gKEdDICAgOiBpbiBHZGtfR0M7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYLCBZIDogaW4gR2ludCk7CiAgIC0tICBTZXQgdGhlIFRpbGUgYW5kIFN0 aXBwbGUgb3JpZ2luIGluIHRoZSBncmFwaGljIGNvbnRleHQuCgogICBwcm9jZWR1cmUgU2V0X0Ns aXBfT3JpZ2luIChHQyAgIDogaW4gR2RrX0dDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBYLCBZIDogaW4gR2ludCk7CiAgIC0tICBTZXQgdGhlIG9yaWdpbiBvZiB0aGUgY2xpcCBtYXNr LgogICAtLSAgU2VlIHRoZSBmdW5jdGlvbnMgU2V0X0NsaXBfUmVjdGFuZ2xlLCBTZXRfQ2xpcF9S ZWdpb24gYW5kCiAgIC0tICBHZGsuQml0bWFwLlNldF9DbGlwX01hc2sgZm9yIG1vcmUgZXhwbGFu YXRpb24uCgogICBwcm9jZWR1cmUgU2V0X0NsaXBfUmVjdGFuZ2xlCiAgICAgKEdDICAgICAgICA6 IGluIEdka19HQzsKICAgICAgUmVjdGFuZ2xlIDogaW4gR2RrLlJlY3RhbmdsZS5HZGtfUmVjdGFu Z2xlKTsKICAgLS0gIFNldCB0aGUgY2xpcCByZWN0YW5nbGUuCiAgIC0tICBPbmx5IHRoZSBwb2lu dHMgdGhhdCBhcmUgZHJhd24gaW5zaWRlIHRoaXMgcmVjdGFuZ2xlIHdpbGwgYmUgZGlzcGxheWVk CiAgIC0tICBvbiB0aGUgc2NyZWVuLiBOb3RlIHRoYXQgeW91IG1pZ2h0IGhhdmUgdG8gbW9kaWZ5 IHRoZSBDbGlwIG9yaWdpbiBmaXJzdAogICAtLSAgd2l0aCBTZXRfQ2xpcF9PcmlnaW4uCiAgIC0t ICBTZWUgU2V0X0NsaXBfTWFzayB0byBkZWxldGUgdGhlIGN1cnJlbnQgY2xpcCBtYXNrLgoKICAg cHJvY2VkdXJlIFNldF9DbGlwX1JlZ2lvbiAoR0MgICAgIDogaW4gR2RrX0dDOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZWdpb24gOiBpbiBHZGsuUmVnaW9uLkdka19SZWdpb24pOwog ICAtLSAgRGVmaW5lIGEgY2xpcCByZWdpb24gb24gdGhlIHNjcmVlbi4KICAgLS0gIFRoaXMgaXMg anVzdCBsaWtlIFNldF9DbGlwX1JlY3RhbmdsZSwgZXhjZXB0IHRoYXQgYSByZWdpb24gaXMgYSBt b3JlCiAgIC0tICBjb21wbGV4IHJlZ2lvbiwgdGhhdCBjYW4gYmUgdGhlIGludGVyc2VjdGlvbiBv ciB1bmlvbiBvZiBtdWx0aXBsZQogICAtLSAgcmVjdGFuZ2xlcy4gTm90ZSB0aGF0IHRoZSBDbGlw X09yaWdpbiBjYW4gaGF2ZSBhbiBpbmZsdWVuY2Ugb24gdGhpcwogICAtLSAgZnVuY3Rpb24uCgog ICBwcm9jZWR1cmUgU2V0X1N1YndpbmRvdyAoR0MgICA6IGluIEdka19HQzsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1vZGUgOiBpbiBUeXBlcy5HZGtfU3Vid2luZG93X01vZGUpOwogICAt LSAgU2V0IHRoZSBzdWJ3aW5kb3cgbW9kZSBmb3IgdGhlIGdyYXBoaWMgY29udGV4dC4KICAgLS0g IFRoaXMgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGRyYXdpbmcgcm91dGluZXMgc2hvdWxkIGJlIGNs aXBwZWQgdG8KICAgLS0gIHRoZSBzcGVjaWZpYyB3aW5kb3cgdGhleSBhcmUgZHJhd24gaW50bywg b3IgaWYgdGhleSBzaG91bGQgZXh0ZW5kCiAgIC0tICB0byBzdWJ3aW5kb3dzIGFzIHdlbGwuCgog ICBwcm9jZWR1cmUgU2V0X0V4cG9zdXJlcyAoR0MgICAgICAgIDogaW4gR2RrX0dDOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgRXhwb3N1cmVzIDogaW4gQm9vbGVhbik7CiAgIC0tICBFeHBv c3VyZXMgaW5kaWNhdGVzIHdoZXRoZXIgeW91IHdhbnQgImV4cG9zZSIgYW5kICJub2V4cG9zZSIg ZXZlbnRzIHRvCiAgIC0tICBiZSByZXBvcnRlZCB3aGVuIGNhbGxpbmcgQ29weV9BcmVhIGFuZCBD b3B5X1BsYW5lIHdpdGggdGhpcyBHQy4KICAgLS0gIFlvdSBzaG91bGQgZGlzYWJsZSB0aGlzIGlm IHlvdSBkb24ndCBuZWVkIHRoZSBldmVudCBhbmQgd2FudCB0byBvcHRpbWl6ZQogICAtLSAgeW91 ciBhcHBsaWNhdGlvbi4KICAgLS0gIElmIEV4cG9zdXJlcyBpcyBUcnVlLCB0aGVuIGFueSBjYWxs IHRvIENvcHlfQXJlYSBvciBEcmF3X1BpeG1hcCB3aWxsCiAgIC0tICBnZW5lcmF0ZSBhbiBleHBv c2UgZXZlbnQuIE90aGVyd2lzZSwgdGhlc2Ugd2lsbCBnZW5lcmF0ZSBhIG5vX2V4cG9zZQogICAt LSAgZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X0xpbmVfQXR0cmlidXRlcyAoR0MgICAgICAgICA6 IGluIEdka19HQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVfV2lkdGgg OiBpbiBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZV9TdHlsZSA6 IGluIFR5cGVzLkdka19MaW5lX1N0eWxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ2FwX1N0eWxlICA6IGluIFR5cGVzLkdka19DYXBfU3R5bGU7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBKb2luX1N0eWxlIDogaW4gVHlwZXMuR2RrX0pvaW5fU3R5bGUpOwog ICAtLSAgU2V0IHRoZSBsaW5lIGF0dHJpYnV0ZXMgZm9yIHRoaXMgR0MuCiAgIC0tICBMaW5lX1dp ZHRoIGlzIHRoZSB3aWR0aCBvZiB0aGUgbGluZS4gSWYgaXRzIHZhbHVlIGlzIDAsIHRoZSBsaW5l IGlzIGFzCiAgIC0tICB0aGluIGFzIHBvc3NpYmxlLCBwb3NzaWJseSBldmVuIG1vcmUgc28gdGhh biBpZiB0aGUgd2lkdGggaXMgMS4gSXQgaXMKICAgLS0gIGFsc28gZmFzdGVyIHRvIGRyYXcgYSBs aW5lIHdpdGggd2lkdGggMCB0aGFuIGFueSBvdGhlciBsaW5lIHdpZHRoLgogICAtLQogICAtLSAg TGluZV9TdHlsZSBzcGVjaWZpZXMgd2hldGhlciB0aGUgbGluZSBzaG91bGQgYmUgc29saWQgb3Ig ZGFzaGVkLgogICAtLSAgV2l0aCBMaW5lX09uX09mZl9EYXNoLCB0aGUgY29sb3JzIGFyZSBhbHRl cm5hdGl2ZWx5IHRoZSBmb3JlZ3JvdW5kCiAgIC0tICBjb2xvciwgYW5kIGJsYW5rLiBXaXRoIExp bmVfRG91YmxlX0Rhc2gsIHRoZSBjb2xvcnMgYXJlCiAgIC0tICBhbHRlcm5hdGl2ZWx5IHRoZSBm b3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KICAgLS0KICAgLS0gIENhcF9TdHlsZSBz cGVjaWZpZXMgaG93IHRoZSBsaW5lIHNob3VsZCBlbmQsIGVpdGhlciBmbGF0IG9yIHJvdW5kZWQu CiAgIC0tCiAgIC0tICBKb2luX1N0eWxlIHNwZWNpZmllcyBob3cgdHdvIGNvbnNlY3V0aXZlIGxp bmVzIGRyYXduIGJ5IERyYXdfTGluZXMgYXJlCiAgIC0tICBjb25uZWN0ZWQuCgogICBwcm9jZWR1 cmUgU2V0X0Rhc2hlcyAoR2MgICAgICAgICAgOiBpbiBHZGtfR0M7CiAgICAgICAgICAgICAgICAg ICAgICAgICBEYXNoX09mZnNldCA6IGluIEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBE YXNoX0xpc3QgICA6IGluIEd1Y2hhcl9BcnJheSk7CiAgIC0tICBTcGVjaWZ5IHRoZSBkYXNoIHBh dHRlcm4gd2hlbiB0aGUgbGluZSdzIHN0eWxlIGlzIGFueXRoaW5nIGJ1dCBzb2xpZC4KICAgLS0g IFRoZSB2YWx1ZXMgaW4gdGhlIGFycmF5IGFsdGVybmF0aXZlbHkgZ2l2ZSB0aGUgbGVuZ3RoIChp biBwaXhlbHMpIG9mCiAgIC0tICB0aGUgcGxhaW4gZGFzaCwgdGhlIGVtcHR5IGRhc2gsIHRoZSBz ZWNvbmQgcGxhaW4gZGFzaCwgLi4uIE5vbmUgb2YKICAgLS0gIHRoZXNlIHZhbHVlcyBjYW4gYmUg MC4gSWYgdGhlcmUgaXMgYW4gb2RkIG51bWJlciBvZiBpdGVtcyBpbiBEYXNoX0xpc3QsCiAgIC0t ICB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gZ2l2aW5nIHRoZSBhcnJheSBjb25jYXRlbmF0ZWQgd2l0 aCBpdHNlbGYuCiAgIC0tICBEYXNoX09mZnNldCBzcGVjaWZpZXMgdGhlIHBoYXNlIG9mIHRoZSBw YXR0ZXJuIHRvIHN0YXJ0IHdpdGguCgogICBwcm9jZWR1cmUgQ29weSAoRHN0X0dDIDogaW4gR2Rr X0dDOwogICAgICAgICAgICAgICAgICAgU3JjX0dDIDogaW4gR2RrX0dDKTsKICAgLS0gIENvcHkg YSBTcmNfR0MgdG8gRHN0X0dDLgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBHZGtf Q29sb3JfVmFsdWVzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdk a19OZXcgcmV0dXJuIEdka19HQ19WYWx1ZXM7CiAgIC0tICBBbGxvY2F0ZSBhIG5ldyBWYWx1ZXMg c3RydWN0dXJlIG9uIHRoZSBjbGllbnQuCiAgIC0tICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBh bGxvY2F0ZXMgYSBDIHN0cnVjdHVyZSwgYW5kIHRodXMgbmVlZHMgdG8KICAgLS0gIGJlIGZyZWVk IHdpdGggYSBjYWxsIHRvIEZyZWUgYmVsb3cuCgogICBwcm9jZWR1cmUgRnJlZSAoVmFsdWVzIDog aW4gR2RrX0dDX1ZhbHVlcyk7CiAgIC0tICBGcmVlIHRoZSBDIHN0cnVjdHVyZSBhc3NvY2lhdGVk IHdpdGggVmFsdWVzLgoKICAgcHJvY2VkdXJlIFNldF9Gb3JlZ3JvdW5kIChWYWx1ZXMgOiBpbiBH ZGtfR0NfVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yICA6IGluIEdk ay5Db2xvci5HZGtfQ29sb3IpOwogICAtLSAgU2FtZSBhcyBTZXRfRm9yZWdyb3VuZCwgYnV0IG9u IHRoZSBjbGllbnQgc2lkZQoKICAgcHJvY2VkdXJlIFNldF9CYWNrZ3JvdW5kIChWYWx1ZXMgOiBp biBHZGtfR0NfVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yICA6IGlu IEdkay5Db2xvci5HZGtfQ29sb3IpOwogICAtLSAgU2FtZSBhcyBTZXRfQmFja2dyb3VuZCwgYnV0 IG9uIHRoZSBjbGllbnQgc2lkZQoKICAgcHJvY2VkdXJlIFNldF9Gb250IChWYWx1ZXMgOiBpbiBH ZGtfR0NfVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgIEZvbnQgICA6IGluIEdkay5Gb250 Lkdka19Gb250KTsKICAgLS0gIFNhbWUgYXMgU2V0X0ZvbnQsIGJ1dCBvbiB0aGUgY2xpZW50IHNp ZGUKCiAgIHByb2NlZHVyZSBTZXRfRnVuY3Rpb24gKFZhbHVlcyA6IGluIEdka19HQ19WYWx1ZXM7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmMgICA6IGluIFR5cGVzLkdka19GdW5jdGlv bik7CiAgIC0tICBTYW1lIGFzIFNldF9GdW5jdGlvbiwgYnV0IG9uIHRoZSBjbGllbnQgc2lkZQoK ICAgcHJvY2VkdXJlIFNldF9GaWxsIChWYWx1ZXMgOiBpbiBHZGtfR0NfVmFsdWVzOwogICAgICAg ICAgICAgICAgICAgICAgIEZpbGwgICA6IGluIFR5cGVzLkdka19GaWxsKTsKICAgLS0gIFNhbWUg YXMgU2V0X0ZpbGwsIGJ1dCBvbiB0aGUgY2xpZW50IHNpZGUKCiAgIHByb2NlZHVyZSBTZXRfVHNf T3JpZ2luIChWYWx1ZXMgOiBpbiBHZGtfR0NfVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgWCwgWSAgIDogaW4gR2ludCk7CiAgIC0tICBTYW1lIGFzIFNldF9Uc19PcmlnaW4sIGJ1 dCBvbiB0aGUgY2xpZW50IHNpZGUKCiAgIHByb2NlZHVyZSBTZXRfQ2xpcF9PcmlnaW4gKFZhbHVl cyA6IGluIEdka19HQ19WYWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgsIFkg ICA6IGluIEdpbnQpOwogICAtLSAgU2FtZSBhcyBTZXRfQ2xpcF9PcmlnaW4sIGJ1dCBvbiB0aGUg Y2xpZW50IHNpZGUKCiAgIHByb2NlZHVyZSBTZXRfU3Vid2luZG93IChWYWx1ZXMgOiBpbiBHZGtf R0NfVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZSAgIDogaW4gVHlwZXMu R2RrX1N1YndpbmRvd19Nb2RlKTsKICAgLS0gIFNhbWUgYXMgU2V0X1N1YndpbmRvdywgYnV0IG9u IHRoZSBjbGllbnQgc2lkZQoKICAgcHJvY2VkdXJlIFNldF9FeHBvc3VyZXMgKFZhbHVlcyAgICA6 IGluIEdka19HQ19WYWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBvc3VyZXMg OiBpbiBCb29sZWFuKTsKICAgLS0gIFNhbWUgYXMgU2V0X0V4cG9zdXJlcywgYnV0IG9uIHRoZSBj bGllbnQgc2lkZQoKICAgcHJvY2VkdXJlIFNldF9MaW5lX0F0dHJpYnV0ZXMgKFZhbHVlcyAgICAg OiBpbiBHZGtfR0NfVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlu ZV9XaWR0aCA6IGluIEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5l X1N0eWxlIDogaW4gVHlwZXMuR2RrX0xpbmVfU3R5bGU7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDYXBfU3R5bGUgIDogaW4gVHlwZXMuR2RrX0NhcF9TdHlsZTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEpvaW5fU3R5bGUgOiBpbiBUeXBlcy5HZGtfSm9pbl9T dHlsZSk7CiAgIC0tICBTYW1lIGFzIFNldF9MaW5lX0F0dHJpYnV0ZXMsIGJ1dCBvbiB0aGUgY2xp ZW50IHNpZGUKCnByaXZhdGUKICAgTnVsbF9HQyA6IGNvbnN0YW50IEdka19HQyA6PSBudWxsOwog ICBOdWxsX0dDX1ZhbHVlcyA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXMgOj0gbnVsbDsKCiAgIHBy YWdtYSBJbXBvcnQgKEMsIENvcHksICJnZGtfZ2NfY29weSIpOwogICBwcmFnbWEgSW1wb3J0IChD LCBEZXN0cm95LCAiZ2RrX2djX2Rlc3Ryb3kiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgRnJlZSwg ImFkYV9nZGtfZ2NfZnJlZV92YWx1ZXMiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1ZhbHVl cywgImdka19nY19nZXRfdmFsdWVzIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJlZiwgImdka19n Y19yZWYiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgVW5yZWYsICJnZGtfZ2NfdW5yZWYiKTsKICAg cHJhZ21hIEltcG9ydCAoQywgU2V0X1N0aXBwbGUsICJnZGtfZ2Nfc2V0X3N0aXBwbGUiKTsKICAg cHJhZ21hIEltcG9ydCAoQywgU2V0X1RpbGUsICJnZGtfZ2Nfc2V0X3RpbGUiKTsKICAgcHJhZ21h IEltcG9ydCAoQywgU2V0X0NsaXBfTWFzaywgImdka19nY19zZXRfY2xpcF9tYXNrIik7CmVuZCBH ZGsuR0M7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcg Zm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFy bmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0t IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAg ICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0 aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAg ICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNl cHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRo aXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVj ZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYg Y2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2Vz IG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0t IGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGlj ZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLSAgVGhpcyBp cyB0aGUgYmFzZSBwYWNrYWdlIGZvciBoYW5kbGluZyBmb250cy4KLS0gIEd0a0FkYSBrbm93cyBh Ym91dCBiaXRtYXAgYW5kIHZlY3RvcmlhbCBmb250cywgYW5kIGNhbiBkcmF3IGJvdGguCi0tICBU aGUgbGlzdCBvZiBmb250cyBhdmFpbGFibGUgdG8geW91IGRlcGVuZHMgb24gd2hhdCBpcyBpbnN0 YWxsZWQgb24KLS0gIHlvdXIgc3lzdGVtLgotLQotLSAgVGhlIG5hbWUgb2YgdGhlIGZvbnQgaXMg aW5kaWNhdGVkIGluIHRoZSBzdGFuZGFyZCBYMTEgZmFzaGlvbiwgbmFtZWx5OgotLSAgKGV4YW1w bGUgZXh0cmFjdGVkIGZyb20gdGhlIFhsaWIgbWFudWFsKToKLS0KLS0gIC1hZG9iZS1jb3VyaWVy LWJvbGQtby1ub3JtYWwtLTEwLTEwMC03NS03NS1tLTYwLWlzbzg4NTktMQotLSAgd2hlcmU6Ci0t ICAgIC0gYWRvYmUgICAgIDogZm91bmRyeQotLSAgICAtIGNvdXJpZXIgICA6IGZvbnQgZmFtaWx5 Ci0tICAgIC0gYm9sZCAgICAgIDogd2VpZ2h0IChlLmcuIGJvbGQsIG1lZGl1bSkKLS0gICAgLSBv ICAgICAgICAgOiBzbGFudCAoZS5nLiByb21hbiwgaXRhbGljLCBvYmxpcXVlKQotLSAgICAtIG5v cm1hbCAgICA6IHNldCB3aWR0aCAoZS5nLiBub3JtYWwsIGNvbmRlbnNlZCwgbmFycm93LCBkb3Vi bGUpCi0tICAgIC0gMTAgICAgICAgIDogcGl4ZWxzCi0tICAgIC0gMTAwICAgICAgIDogcG9pbnRz IChpbiB0ZW50aHMgb2YgYSBwb2ludCkKLS0gICAgLSA3NSAgICAgICAgOiBob3Jpem9udGFsIHJl c29sdXRpb24gaW4gZHBpCi0tICAgIC0gNzUgICAgICAgIDogdmVydGljYWwgcmVzb2x1dGlvbiBp biBkcGkKLS0gICAgLSBtICAgICAgICAgOiBzcGFjaW5nIChlLmcuIG1vbm9zcGFjZSBvciBwcm9w b3J0aW9uYWwpCi0tICAgIC0gNjAgICAgICAgIDogYXZlcmFnZSB3aWR0aCAoaW4gdGVudGhzIG9m IGEgcGl4ZWwpCi0tICAgIC0gaXNvODg1OS0xIDogY2hhcmFjdGVyIHNldAotLQotLSAgQW55IG9m IHRoZSBmaWVsZHMgY2FuIGhhdmUgYSAnKicgaW5zdGVhZCwgc28gdGhhdCB0aGUgc3lzdGVtIHdp bGwKLS0gIGF1dG9tYXRpY2FsbHkgZmluZCBhIGZvbnQgdGhhdCBtYXRjaGVzIHRoZSByZXN0IG9m IHRoZSBzdHJpbmcsIGFuZCB3b24ndAotLSAgY2FyZSBhYm91dCB0aGF0IHNwZWNpZmljIGZpZWxk LgotLQotLSAgQnV0IHRoZSBlYXNpZXN0IHdheSB0byBzZWxlY3QgYSBmb250IGlzIGJ5IHVzaW5n IHNvbWUgZXh0ZXJuYWwgcHJvZ3JhbXMsCi0tICBmb3IgaW5zdGFuY2UgeGZvbnRzZWwsIHhsc2Zv bnQsIGdmb250c2VsLCBvciBldmVuIHRoZSBmb250IHNlbGVjdGlvbgotLSAgZGlhbG9nIGV4YW1w bGUgaW4gdGhlIHRlc3RndGsvIGRpcmVjdG9yeSBvZiB0aGUgR3RrQWRhIGRpc3RyaWJ1dGlvbi4K LS0KLS0gIEBweHJlZntQYWNrYWdlX0d0ay5FeHRyYS5Qc0ZvbnR9IGZvciBhIHBhY2thZ2UgdGhh dCBwcm9jZXNzZXMgcG9zdHNjcmlwdAotLSAgZm9udHMsIHdpdGggdGhlaXIgbW9yZSB1c3VhbCBu YW1lcywgYW5kIGNhbiBlYXNpbHkgY29udmVydCB0aGVtIHRvIHN0YW5kYXJkCi0tICBHZGtfRm9u dCBzdHJ1Y3R1cmVzLgotLQotLSAgU29tZSBvZiB0aGUgZnVuY3Rpb25zIGJlbG93IHNob3VsZCBi ZSB1c2VkIG9ubHkgZm9yIHdpZGUtY2hhcmFjdGVyIHN0cmluZ3MuCi0tICBUaGlzIGlzIG5lZWRl ZCBmb3IgbGFuZ3VhZ2VzIHdpdGggbW9yZSB0aGFuIDI1NiBjaGFyYWN0ZXJzLgotLQotLSAgV2lk ZSBjaGFyYWN0ZXIgdmFsdWVzIGJldHdlZW4gMCBhbmQgMTI3IGFyZSBhbHdheXMgaWRlbnRpY2Fs IGluIG1lYW5pbmcgdG8KLS0gIHRoZSBBU0NJSSBjaGFyYWN0ZXIgY29kZXMuCi0tICBBbiBhbHRl cm5hdGl2ZSB0byB3aWRlIGNoYXJhY3RlcnMgaXMgbXVsdGktYnl0ZSBjaGFyYWN0ZXJzLCB3aGlj aCBleHRlbmQKLS0gIG5vcm1hbCBjaGFyIHN0cmluZ3MgdG8gY29wZSB3aXRoIGxhcmdlciBjaGFy YWN0ZXIgc2V0cy4gQXMgdGhlIG5hbWUKLS0gIHN1Z2dlc3RzLCBtdWx0aS1ieXRlIGNoYXJhY3Rl cnMgdXNlIGEgZGlmZmVyZW50IG51bWJlciBvZiBieXRlcyB0byBzdG9yZQotLSAgZGlmZmVyZW50 IGNoYXJhY3RlciBjb2Rlcy4gRm9yIGV4YW1wbGUgY29kZXMgMC0xMjcgKGkuZS4gdGhlIEFTQ0lJ IGNvZGVzKQotLSAgb2Z0ZW4gdXNlIGp1c3Qgb25lIGJ5dGUgb2YgbWVtb3J5LCB3aGlsZSBvdGhl ciBjb2RlcyBtYXkgdXNlIDIsIDMgb3IgZXZlbgotLSAgNCBieXRlcy4gTXVsdGktYnl0ZSBjaGFy YWN0ZXJzIGhhdmUgdGhlIGFkdmFudGFnZSB0aGF0IHRoZXkgY2FuIG9mdGVuIGJlCi0tICB1c2Vk IGluIGFuIGFwcGxpY2F0aW9uIHdpdGggbGl0dGxlIGNoYW5nZSwgc2luY2Ugc3RyaW5ncyBhcmUg c3RpbGwKLS0gIHJlcHJlc2VudGVkIGFzIGFycmF5cyBvZiBjaGFyIHZhbHVlcy4gSG93ZXZlciBt dWx0aS1ieXRlIHN0cmluZ3MgYXJlIG11Y2gKLS0gIGVhc2llciB0byBtYW5pcHVsYXRlIHNpbmNl IHRoZSBjaGFyYWN0ZXIgYXJlIGFsbCBvZiB0aGUgc2FtZSBzaXplLgotLQotLSAgT24gVW5peCBz eXN0ZW1zLCB0aGUgZXh0ZXJuYWwgdXRpbGl0eSAneGZkJyBjYW4gYmUgdXNlZCB0byBkaXNwbGF5 IGFsbAotLSAgdGhlIGNoYXJhY3RlcnMgaW4gYSBmb250LgotLQotLSAgPC9kZXNjcmlwdGlvbj4K LS0gIDxjX3ZlcnNpb24+MS4yLjc8L2NfdmVyc2lvbj4KLS0gIDxzY3JlZW5zaG90PmZvbnQ8L3Nj cmVlbnNob3Q+Cgp3aXRoIEdsaWI7IHVzZSBHbGliOwp3aXRoIEdkay5UeXBlczsKCnBhY2thZ2Ug R2RrLkZvbnQgaXMKCiAgIHR5cGUgR2RrX0ZvbnQgaXMgbmV3IEdkay5DX1Byb3h5OwogICAtLSAg QSBmb250IHVzZWQgdG8gZHJhdyB0ZXh0LgogICAtLSAgVGhpcyBjYW4gcmVwcmVzZW50IGEgYml0 bWFwIGZvbnQsIGEgc2NhbGFibGUgKHZlY3RvcmlhbCkgZm9udCwgb3IKICAgLS0gIGEgZm9udHNl dC4gQSBmb250c2V0IGlzIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgZm9udHMsIHRoYXQgcGVy bWl0cwogICAtLSAgR3RrQWRhIHRvIG9idGFpbiB0aGUgZm9udHMgbmVlZGVkIGZvciBhIHZhcmll dHkgb2YgbG9jYWxlcyBmcm9tIGEKICAgLS0gIHNpbmdsZSBsb2NhbGUtaW5kZXBlbmRlbnQgYmFz ZSBmb250IG5hbWUuIFRoZSBzaW5nbGUgYmFzZSBmb250IG5hbWUKICAgLS0gIHNob3VsZCBuYW1l IGEgZmFtaWx5IG9mIGZvbnRzIHdob3NlIG1lbWJlcnMgYXJlIGVuY29kZWQgaW4gdGhlIHZhcmlv dXMKICAgLS0gIGNoYXJzZXRzIG5lZWRlZCBieSB0aGUgbG9jYWxlcyBvZiBpbnRlcmVzdC4KICAg LS0gIFRoZSBhbGdvcml0aG0gdXNlZCB0byBzZWxlY3QgdGhlIGZvbnQgaXMgZGVzY3JpYmVkIGlu IHRoZSBtYW51YWwgcGFnZQogICAtLSAgZm9yIFhDcmVhdGVGb250U2V0KDNYKS4KCiAgIE51bGxf Rm9udCA6IGNvbnN0YW50IEdka19Gb250OwoKICAgcHJvY2VkdXJlIExvYWQgKEZvbnQgICAgICA6 ICAgIG91dCBHZGtfRm9udDsKICAgICAgICAgICAgICAgICAgIEZvbnRfTmFtZSA6IGluICAgICBT dHJpbmcpOwogICAtLSAgTG9hZCBhIG5ldyBmb250LCBnaXZlbiBpdHMgbmFtZS4KICAgLS0gIFRo aXMgaXMgdGhlIGZpcnN0IHN0ZXAgYmVmb3JlIHVzaW5nIGEgZm9udC4KICAgLS0gIFRoZSBmb250 IGlzIGZpcnN0IGxvb2tlZCB1cCBpbiB0aGUgY2FjaGUsIGFuZCBpZiBpdCB3YXMgYWxyZWFkeQog ICAtLSAgbG9hZGVkLCBpdCBpcyBub3QgcmVsb2FkZWQgYWdhaW4uIFRodXMsIGl0IGRvZXMgbm90 IGhhcm0gdG8gY2FsbAogICAtLSAgdGhpcyBmdW5jdGlvbiBtdWx0aXBsZSB0aW1lcyB3aXRoIHRo ZSBzYW1lIEZvbnRfTmFtZS4KICAgLS0gIE51bGxfRm9udCBpcyByZXR1cm5lZCBpZiB0aGUgZm9u dCBjb3VsZCBub3QgYmUgbG9hZGVkLgoKICAgcHJvY2VkdXJlIEZvbnRzZXRfTG9hZCAoRm9udCAg ICAgICAgIDogICBvdXQgR2RrX0ZvbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRz ZXRfTmFtZSA6IGluICAgIFN0cmluZyk7CiAgIC0tICBMb2FkIGEgbmV3IGZvbnQgc2V0LgogICAt LSAgRm9udHNldF9OYW1lIGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZm9udHMgdGhhdCB3 aWxsIGJlIGxvYWRlZAogICAtLSAgYXMgcGFydCBvZiB0aGUgZm9udHNldC4KCiAgIHByb2NlZHVy ZSBSZWYgKEZvbnQgOiBpbiBHZGtfRm9udCk7CiAgIC0tICBJbmNyZW1lbnQgdGhlIHJlZmVyZW5j ZSBjb3VudGVyIGZvciB0aGUgZm9udC4KICAgLS0gIFlvdSBzaG91bGQgbm90IG1ha2UgYW55IGFz c3VtcHRpb24gb2YgdGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGZvbnRzCiAgIC0tICByZXR1cm5l ZCBieSBMb2FkIG9yIEZvbnRzZXRfTG9hZCwgc2luY2UgdGhlc2UgY2FuIGJlIGV4dHJhY3RlZCBm cm9tIGEKICAgLS0gIGNhY2hlLgoKICAgcHJvY2VkdXJlIFVucmVmIChGb250IDogaW4gR2RrX0Zv bnQpOwogICAtLSAgRGVjcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnRlciBmb3IgdGhlIGZvbnQu CiAgIC0tICBXaGVuIHRoaXMgY291bnRlciByZWFjaGVzIDAsIHRoZSBmb250IGlzIGRlbGV0ZWQg ZnJvbSBtZW1vcnkuCgogICBmdW5jdGlvbiBJZCAoRm9udCA6IGluIEdka19Gb250KSByZXR1cm4g R2ludDsKICAgLS0gIFJldHVybiB0aGUgWCBmb250IGlkIGZvciB0aGUgZm9udC4KICAgLS0gIFRo aXMgSWQgd2lsbCBvbmx5IGJlIG5lZWRlZCBpZiB5b3Ugd2FudCB0byBjYWxsIGRpcmVjdGx5IFgx MSBmdW5jdGlvbnMsCiAgIC0tICB5b3Ugd29uJ3QgbmVlZCBpdCB3aXRoIEd0a0FkYS4KCiAgIGZ1 bmN0aW9uIEVxdWFsIChGb250YSwgRm9udGIgOiBpbiBHZGtfRm9udCkgcmV0dXJuIEJvb2xlYW47 CiAgIC0tICBDb21wYXJlIHR3byBmb250cyBvciB0d28gZm9udHNldHMgZm9yIGVxdWFsaXR5Lgog ICAtLSAgVHdvIGZvbnRzIGFyZSBlcXVhbCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgZm9udCBJZC4K ICAgLS0gIFR3byBmb250c2V0cyBhcmUgZXF1YWwgaWYgdGhlIG5hbWUgZ2l2ZW4gdG8gRm9udHNl dF9Mb2FkIHdhcyB0aGUgc2FtZS4KCiAgIGZ1bmN0aW9uIEdldF9Bc2NlbnQgKEZvbnQgOiBpbiBH ZGtfRm9udCkgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIG1heGltYWwgYXNjZW50IGZv ciB0aGUgZm9udC4KICAgLS0gIFRoaXMgaXMgdGhlIGxvZ2ljYWwgZXh0ZW50IGFib3ZlIHRoZSBi YXNlbGluZSBmb3Igc3BhY2luZyBiZXR3ZWVuIHR3bwogICAtLSAgbGluZXMuCgogICBmdW5jdGlv biBHZXRfRGVzY2VudCAoRm9udCA6IGluIEdka19Gb250KSByZXR1cm4gR2ludDsKICAgLS0gIFJl dHVybiB0aGUgbWF4aW1hbCBkZXNjZW50IGZvciB0aGUgZm9udC4KICAgLS0gIFRoaXMgaXMgdGhl IGxvZ2ljYWwgZXh0ZW50IGJlbG93IHRoZSBiYXNlbGluZSBmb3Igc3BhY2luZyBiZXR3ZWVuIHR3 bwogICAtLSAgbGluZXMuCgogICBmdW5jdGlvbiBTdHJpbmdfV2lkdGggKEZvbnQgOiBpbiBHZGtf Rm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgIDogaW4gU3RyaW5nKQogICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIHdpZHRoIGlu IHBpeGVscyB0aGF0IFN0ciB3aWxsIG9jY3VweSBpZiBkcmF3biB3aXRoIEZvbnQuCiAgIC0tICBU aGUgdmFsdWUgcmV0dXJuZWQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIG9yaWdpbiBvZiB0 aGUgdGV4dCBhbmQKICAgLS0gIHRoZSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgbmV4dCBzdHJpbmcg c2hvdWxkIGJlIGRyYXduLgoKICAgZnVuY3Rpb24gVGV4dF9XaWR0aCAoRm9udCA6IGluIEdka19G b250OwogICAgICAgICAgICAgICAgICAgICAgICBUZXh0IDogaW4gU3RyaW5nKQogICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAtLSAgVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlv biBhcyBTdHJpbmdfV2lkdGguCiAgIC0tICBJbiBDLCB0aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVk IHRvIG1lYXN1cmUgb25seSB0aGUgd2lkdGggb2YgYSBwYXJ0CiAgIC0tICBvZiB0aGUgc3RyaW5n LCBidXQgeW91IGNhbiBzaW1wbHkgcGFzcyBpdCBhIHN1YnN0cmluZyBpbiBBZGEuCgogICBmdW5j dGlvbiBUZXh0X1dpZHRoIChGb250IDogaW4gR2RrX0ZvbnQ7CiAgICAgICAgICAgICAgICAgICAg ICAgIFRleHQgOiBpbiBHZGsuVHlwZXMuR2RrX1dTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIHdpZHRoIGluIHBpeGVscyB0aGF0IFRl eHQgd2lsbCBvY2N1cHkgb24gdGhlIHNjcmVlbi4KICAgLS0gIFRoaXMgZnVuY3Rpb24gc2hvdWxk IGJlIHVzZWQgd2l0aCBzdHJpbmdzIHRoYXQgY29udGFpbiBVbmljb2RlCiAgIC0tICBjaGFyYWN0 ZXJzCgogICBmdW5jdGlvbiBDaGFyX1dpZHRoIChGb250IDogaW4gR2RrX0ZvbnQ7CiAgICAgICAg ICAgICAgICAgICAgICAgIENoYXIgOiBpbiBDaGFyYWN0ZXIpCiAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIHdpZHRoIGluIHBpeGVscyBvY2N1cGll ZCBieSBhIHNpbmdsZSBjaGFyYWN0ZXIgb24gdGhlIHNjcmVlbi4KICAgLS0gIFRoZSB2YWx1ZSBy ZXR1cm5lZCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiBDaGFyJ3Mgb3JpZ2luIG9uIHRoZSBzY3Jl ZW4KICAgLS0gIGFuZCB0aGUgb3JpZ2luIG9mIHRoZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgc3Ry aW5nLgoKICAgZnVuY3Rpb24gQ2hhcl9XaWR0aCAoRm9udCA6IGluIEdka19Gb250OwogICAgICAg ICAgICAgICAgICAgICAgICBDaGFyIDogaW4gR2RrLlR5cGVzLkdka19XQ2hhcikKICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgLS0gIFJldHVybiB0aGUgd2lkdGggaW4gcGl4 ZWxzIG9jY3VwaWVkIGJ5IGEgc2luZ2xlIHdpZGUtY2hhcmFjdGVyLgoKICAgZnVuY3Rpb24gU3Ry aW5nX01lYXN1cmUgKEZvbnQgOiBpbiBHZGtfRm9udDsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFN0ciAgOiBpbiBTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBH aW50OwogICAtLSAgRGV0ZXJtaW5lIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSBvcmlnaW4gdG8gdGhl IHJpZ2h0bW9zdCBwb3J0aW9uIG9mIFN0ci4KICAgLS0gIFRoaXMgaXMgbm90IHRoZSBjb3JyZWN0 IHZhbHVlIGZvciBkZXRlcm1pbmluZyB0aGUgb3JpZ2luIG9mIHRoZSBuZXh0CiAgIC0tICBwb3J0 aW9uIHdoZW4gZHJhd2luZyB0ZXh0IGluIG11bHRpcGxlIHBpZWNlcy4KICAgLS0gIFNlZSBTdHJp bmdfV2lkdGggaW5zdGVhZC4KCiAgIGZ1bmN0aW9uIFRleHRfTWVhc3VyZSAoRm9udCA6IGluIEdk a19Gb250OwogICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgOiBpbiBTdHJpbmcpCiAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgLS0gIFNhbWUgZnVuY3Rpb24gYSBT dHJpbmdfTWVhc3VyZS4KICAgLS0gIEluIEMsIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8g bWVhc3VyZSBvbmx5IHRoZSB3aWR0aCBvZiBhIHBhcnQgb2YKICAgLS0gIHRoZSBzdHJpbmcsIGJ1 dCB5b3UgY2FuIHNpbXBseSBwYXNzIGl0IGEgc3Vic3RyaW5nIGluIEFkYS4KICAgLS0gIFRoaXMg aXMgYWxzbyBjYWxsZWQgdGhlIHJpZ2h0IGJlYXJpbmcgb2YgdGhlIHN0cmluZy4KCiAgIGZ1bmN0 aW9uIENoYXJfTWVhc3VyZSAoRm9udCA6IGluIEdka19Gb250OwogICAgICAgICAgICAgICAgICAg ICAgICAgIENoYXIgOiBpbiBDaGFyYWN0ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gR2ludDsKICAgLS0gIFJldHVybiB0aGUgd2lkdGggaW4gcGl4ZWxzIG9mIENoYXIuCiAgIC0t ICBBcyBvcHBvc2VkIHRvIENoYXJfV2lkdGgsIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBub3QgdGhl IGRpc3RhbmNlIGF0CiAgIC0tICB3aGljaCB0aGUgbmV4dCBjaGFyYWN0ZXIgc2hvdWxkIGJlIGRy YXduLgogICAtLSAgVGhpcyBpcyBhbHNvIGNhbGxlZCB0aGUgcmlnaHQgYmVhcmluZyBvZiB0aGUg Y2hhcmFjdGVyLgoKICAgcHJvY2VkdXJlIFN0cmluZ19FeHRlbnRzIChGb250ICAgICA6IGluICAg ICBHZGsuRm9udC5HZGtfRm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgICAg ICA6IGluICAgICBTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGJlYXJpbmcg OiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYmVhcmluZyA6ICAg IG91dCBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRoICAgIDogICAgb3V0 IEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNjZW50ICAgOiAgICBvdXQgR2lu dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjZW50ICA6ICAgIG91dCBHaW50KTsK ICAgLS0gIFJldHVybiB0aGUgbWV0cmljcyBmb3IgYSBnaXZlbiB0ZXh0LgogICAtLSAgU2VlIHRo ZSBwaWN0dXJlIGZvciBtb3JlIGV4cGxhbmF0aW9ucyBvbiBhbGwgdGhlIGZpZWxkcy4KICAgLS0g IExiZWFyaW5nIDogT3JpZ2luIHRvIGxlZnQgZWRnZSBvZiBjaGFyYWN0ZXIuCiAgIC0tICBSYmVh cmluZyA6IE9yaWdpbiB0byByaWdodCBlZGdlIG9mIGNoYXJhY3Rlci4KICAgLS0gIFdpZHRoICAg IDogQWR2YW5jZSB0byBuZXh0IGNoYXJhY3RlcidzIG9yaWdpbi4KICAgLS0gIEFzY2VudCAgIDog QmFzZWxpbmUgdG8gdG9wIGVkZ2Ugb2YgY2hhcmFjdGVyLgogICAtLSAgRGVzY2VudCAgOiBCYXNl bGluZSB0byBib3R0b20gZWRnZSBvZiBjaGFyYWN0ZXIuCgogICBwcm9jZWR1cmUgVGV4dF9FeHRl bnRzIChGb250ICAgICAgICA6IGluICAgICBHZGtfRm9udDsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgVGV4dCAgICAgICAgOiBpbiAgICAgU3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAg ICAgICBMYmVhcmluZyAgICA6ICAgIG91dCBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAg ICBSYmVhcmluZyAgICA6ICAgIG91dCBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICBX aWR0aCAgICAgICA6ICAgIG91dCBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICBBc2Nl bnQgICAgICA6ICAgIG91dCBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjZW50 ICAgICA6ICAgIG91dCBHaW50KTsKICAgLS0gIFJldHVybiBhbGwgdGhlIG1ldHJpY3MgZm9yIGEg Z2l2ZW4gdGV4dC4KICAgLS0gIFNlZSB0aGUgcGljdHVyZSBmb3IgbW9yZSBleHBsYW5hdGlvbnMg b24gYWxsIHRoZSBmaWVsZHMuCiAgIC0tICBpbiBDLCB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlIHVz ZWQgZm9yIHBhcnQgb2YgYSBzdHJpbmcsIHdoaWNoIHlvdSBjYW4KICAgLS0gIHNpbXVsYXRlIGlu IEFkYSB3aXRoIGEgc3Vic3RyaW5nLgoKICAgcHJvY2VkdXJlIFRleHRfRXh0ZW50cyAoRm9udCAg ICAgICAgOiBpbiAgICAgR2RrX0ZvbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQg ICAgICAgIDogaW4gICAgIEdkay5UeXBlcy5HZGtfV1N0cmluZzsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGJlYXJpbmcgICAgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgUmJlYXJpbmcgICAgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgV2lkdGggICAgICAgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg QXNjZW50ICAgICAgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVz Y2VudCAgICAgOiAgICBvdXQgR2ludCk7CiAgIC0tICBSZXR1cm4gYWxsIHRoZSBtZXRyaWNzIGZv ciBhIGdpdmVuIHdpZGUtY2hhcmFjdGVyIHN0cmluZy4KICAgLS0gIFNlZSB0aGUgcGljdHVyZSBm b3IgbW9yZSBleHBsYW5hdGlvbnMgb24gdGhlIHJldHVybmVkIHZhbHVlcy4KCiAgIGZ1bmN0aW9u IFN0cmluZ19IZWlnaHQgKEZvbnQgOiBpbiBHZGtfRm9udDsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RyICA6IGluIFN0cmluZykKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g R2ludDsKICAgLS0gIFJldHVybiB0aGUgaGVpZ2h0IGluIHBpeGVscyBvZiB0aGUgc3RyaW5nLgog ICAtLSAgVGhpcyBpcyB0aGUgdG90YWwgaGVpZ2h0LCBhbmQgeW91IGNhbiBub3QgZWFzaWx5IHRl bGwgaG93IHRoaXMgaGVpZ2h0CiAgIC0tICBpcyBzcGxpdCBhcm91bmQgdGhlIGJhc2VsaW5lLgoK ICAgZnVuY3Rpb24gVGV4dF9IZWlnaHQgKEZvbnQgOiBpbiBHZGtfRm9udDsKICAgICAgICAgICAg ICAgICAgICAgICAgIFN0ciAgOiBpbiBTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBHaW50OwogICAtLSAgU2FtZSBhcyBTdHJpbmdfSGVpZ2h0LgogICAtLSAgSW4gQywgdGhp cyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBtZWFzdXJlIG9ubHkgdGhlIHdpZHRoIG9mIGEgcGFy dCBvZgogICAtLSAgdGhlIHN0cmluZywgYnV0IHlvdSBjYW4gc2ltcGx5IHBhc3MgaXQgYSBzdWJz dHJpbmcgaW4gQWRhLgogICAtLSAgVGhpcyBpcyBhbHNvIGNhbGxlZCB0aGUgcmlnaHQgYmVhcmlu ZyBvZiB0aGUgc3RyaW5nLgoKICAgZnVuY3Rpb24gQ2hhcl9IZWlnaHQgKEZvbnQgOiBpbiBHZGtf Rm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgIENoYXIgOiBpbiBDaGFyYWN0ZXIpCiAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAtLSAgUmV0dXJuIHRoZSB0b3RhbCBo ZWlnaHQgaW4gcGl4ZWxzIG9mIGEgc2luZ2xlIGNoYXJhY3Rlci4KCgpwcml2YXRlCiAgIE51bGxf Rm9udCA6IGNvbnN0YW50IEdka19Gb250IDo9IG51bGw7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENo YXJfSGVpZ2h0LCAiZ2RrX2NoYXJfaGVpZ2h0Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIElkLCAi Z2RrX2ZvbnRfaWQiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUmVmLCAiZ2RrX2ZvbnRfcmVmIik7 CiAgIHByYWdtYSBJbXBvcnQgKEMsIFVucmVmLCAiZ2RrX2ZvbnRfdW5yZWYiKTsKICAgcHJhZ21h IEltcG9ydCAoQywgR2V0X0FzY2VudCwgImFkYV9nZGtfZm9udF9nZXRfYXNjZW50Iik7CiAgIHBy YWdtYSBJbXBvcnQgKEMsIEdldF9EZXNjZW50LCAiYWRhX2dka19mb250X2dldF9kZXNjZW50Iik7 CmVuZCBHZGsuRm9udDsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUg YmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMTk5OSAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tl ciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBs aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAg ICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0g R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9u ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0K LS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVj aWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAg LS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0 byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5 IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3Zl cmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0 aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhl ICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1 YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCndpdGggR2xpYjsgdXNlIEdsaWI7 CndpdGggR2RrLlJlY3RhbmdsZTsKd2l0aCBHZGsuVHlwZXM7CgpwYWNrYWdlIEdkay5SZWdpb24g aXMKCiAgIHR5cGUgR2RrX1JlZ2lvbiBpcyBuZXcgR2RrLkNfUHJveHk7CiAgIE51bGxfUmVnaW9u IDogY29uc3RhbnQgR2RrX1JlZ2lvbjsKCiAgIHByb2NlZHVyZSBHZGtfTmV3IChSZWdpb24gOiBv dXQgR2RrX1JlZ2lvbik7CgogICBwcm9jZWR1cmUgRGVzdHJveSAoUmVnaW9uIDogaW4gb3V0IEdk a19SZWdpb24pOwoKICAgcHJvY2VkdXJlIEdldF9DbGlwYm94CiAgICAgKFJlZ2lvbiAgICA6IGlu ICAgICBHZGtfUmVnaW9uOwogICAgICBSZWN0YW5nbGUgOiAgICBvdXQgR2RrLlJlY3RhbmdsZS5H ZGtfUmVjdGFuZ2xlKTsKCiAgIGZ1bmN0aW9uIEVtcHR5IChSZWdpb24gOiBpbiBHZGtfUmVnaW9u KSByZXR1cm4gQm9vbGVhbjsKCiAgIGZ1bmN0aW9uICI9IiAoTGVmdCwgUmlnaHQgOiBpbiBHZGtf UmVnaW9uKSByZXR1cm4gQm9vbGVhbjsKCiAgIGZ1bmN0aW9uIFBvaW50X0luCiAgICAgKFJlZ2lv biA6IGluIEdka19SZWdpb247CiAgICAgIFgsIFkgICA6IGluIEludGVnZXIpIHJldHVybiBCb29s ZWFuOwoKICAgZnVuY3Rpb24gUmVjdF9JbgogICAgIChSZWdpb24gOiBpbiBHZGtfUmVnaW9uOwog ICAgICBSZWN0ICAgOiBpbiBSZWN0YW5nbGUuR2RrX1JlY3RhbmdsZSkgcmV0dXJuIFR5cGVzLkdk a19PdmVybGFwX1R5cGU7CgogICBwcm9jZWR1cmUgUG9seWdvbgogICAgIChSZWdpb24gOiAgICBv dXQgR2RrX1JlZ2lvbjsKICAgICAgUG9pbnRzIDogaW4gICAgIEdkay5UeXBlcy5HZGtfUG9pbnRz X0FycmF5OwogICAgICBGaWxsX1J1bGUgOiBpbiAgICAgVHlwZXMuR2RrX0ZpbGxfUnVsZSk7Cgog ICBwcm9jZWR1cmUgT2Zmc2V0CiAgICAgKFJlZ2lvbiA6IGluIEdka19SZWdpb247CiAgICAgIER4 ICAgICA6IGluIEdpbnQ7CiAgICAgIER5ICAgICA6IGluIEdpbnQpOwoKICAgcHJvY2VkdXJlIFNo cmluawogICAgIChSZWdpb24gOiBpbiBHZGtfUmVnaW9uOwogICAgICBEeCAgICAgOiBpbiBHaW50 OwogICAgICBEeSAgICAgOiBpbiBHaW50KTsKCiAgIHByb2NlZHVyZSBVbmlvbl9XaXRoX1JlY3QK ICAgICAoUmVzdWx0IDogICAgb3V0IEdka19SZWdpb247CiAgICAgIFJlZ2lvbiA6IGluICAgICBH ZGtfUmVnaW9uOwogICAgICBSZWN0ICAgOiBpbiAgICAgUmVjdGFuZ2xlLkdka19SZWN0YW5nbGUp OwoKICAgcHJvY2VkdXJlIEludGVyc2VjdAogICAgIChSZXN1bHQgIDogICAgb3V0IEdka19SZWdp b247CiAgICAgIFNvdXJjZTEgOiBpbiAgICAgR2RrX1JlZ2lvbjsKICAgICAgU291cmNlMiA6IGlu ICAgICBHZGtfUmVnaW9uKTsKCiAgIHByb2NlZHVyZSBVbmlvbgogICAgIChSZXN1bHQgIDogICAg IG91dCBHZGtfUmVnaW9uOwogICAgICBTb3VyY2UxIDogaW4gICAgICBHZGtfUmVnaW9uOwogICAg ICBTb3VyY2UyIDogaW4gICAgICBHZGtfUmVnaW9uKTsKCiAgIHByb2NlZHVyZSBTdWJzdHJhY3QK ICAgICAoUmVzdWx0ICA6ICAgICBvdXQgR2RrX1JlZ2lvbjsKICAgICAgU291cmNlMSA6IGluICAg ICAgR2RrX1JlZ2lvbjsKICAgICAgU291cmNlMiA6IGluICAgICAgR2RrX1JlZ2lvbik7CgogICBw cm9jZWR1cmUgR2RrX1hvcgogICAgIChSZXN1bHQgIDogICAgIG91dCBHZGtfUmVnaW9uOwogICAg ICBTb3VyY2UxIDogaW4gICAgICBHZGtfUmVnaW9uOwogICAgICBTb3VyY2UyIDogaW4gICAgICBH ZGtfUmVnaW9uKTsKCnByaXZhdGUKICAgTnVsbF9SZWdpb24gOiBjb25zdGFudCBHZGtfUmVnaW9u IDo9IG51bGw7CiAgIHByYWdtYSBJbXBvcnQgKEMsIE9mZnNldCwgImdka19yZWdpb25fb2Zmc2V0 Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNocmluaywgImdka19yZWdpb25fc2hyaW5rIik7CmVu ZCBHZGsuUmVnaW9uOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBi aW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt LQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0yMDAwICAgICAgICAg ICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2Vy IGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAg ICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAg ICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25n IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQot LSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl IDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNp YWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAt LQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRv IHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkg aXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVy ZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRp b24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUg ICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVi bGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlvbj4KLS0K LS0gIFBpeG1hcHMgYXJlIG9mZi1zY3JlZW4gZHJhd2FibGVzLiBUaGV5IGNhbiBiZSBkcmF3biB1 cG9uIHdpdGggdGhlIHN0YW5kYXJkCi0tICBkcmF3aW5nIHByaW1pdGl2ZXMsIHRoZW4gY29waWVk IHRvIGFub3RoZXIgZHJhd2FibGUgKHN1Y2ggYXMgYSBHZGtfV2luZG93KQotLSAgd2l0aCBHZGsu UGl4bWFwLkRyYXcuIFRoZSBkZXB0aCBvZiBhIHBpeG1hcCBpcyB0aGUgbnVtYmVyIG9mIGJpdHMg cGVyCi0tICBwaXhlbHMuIEJpdG1hcHMgYXJlIHNpbXBseSBwaXhtYXBzIHdpdGggYSBkZXB0aCBv ZiAxLiAoVGhhdCBpcywgdGhleSBhcmUKLS0gIG1vbm9jaHJvbWUgYml0bWFwcyAtIGVhY2ggcGl4 ZWwgY2FuIGJlIGVpdGhlciBvbiBvciBvZmYpLgotLSAgQHB4cmVme1BhY2thZ2VfR2RrLkJpdG1h cH0gZm9yIG1vcmUgZGV0YWlscyBvbiBiaXRtYXAgaGFuZGxpbmcuCi0tCi0tICA8L2Rlc2NyaXB0 aW9uPgotLSAgPGNfdmVyc2lvbj4xLjIuNzwvY192ZXJzaW9uPgoKd2l0aCBHbGliOyB1c2UgR2xp YjsKd2l0aCBHZGsuQml0bWFwOwp3aXRoIEdkay5Db2xvcjsKd2l0aCBHZGsuV2luZG93Owp3aXRo IEd0a2FkYS5UeXBlczsKCnBhY2thZ2UgR2RrLlBpeG1hcCBpcwoKICAgc3VidHlwZSBHZGtfUGl4 bWFwIGlzIEdkay5HZGtfUGl4bWFwOwogICAtLSAgQSBzZXJ2ZXItc2lkZSBpbWFnZS4KICAgLS0g IFlvdSBjYW4gY3JlYXRlIGFuIGVtcHR5IHBpeG1hcCwgb3IgbG9hZCBpZiBmcm9tIGV4dGVybmFs IGZpbGVzIGluCiAgIC0tICBiaXRtYXAgYW5kIHBpeG1hcCBmb3JtYXQuIFNlZSBHZGsuUGl4YnVm IGlmIHlvdSBuZWVkIHRvIGxvYWQKICAgLS0gIGltYWdlcyBpbiBvdGhlciBmb3JtYXRzLgoKICAg TnVsbF9QaXhtYXAgOiBjb25zdGFudCBHZGtfUGl4bWFwOwoKICAgcHJvY2VkdXJlIEdka19OZXcg KFBpeG1hcCA6ICAgIG91dCBHZGtfUGl4bWFwOwogICAgICAgICAgICAgICAgICAgICAgV2luZG93 IDogaW4gICAgIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgIFdp ZHRoICA6IGluICAgICBHaW50OwogICAgICAgICAgICAgICAgICAgICAgSGVpZ2h0IDogaW4gICAg IEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICBEZXB0aCAgOiBpbiAgICAgR2ludCA6PSAtMSk7 CiAgIC0tICBDcmVhdGUgYSBuZXcgcGl4bWFwIHdpdGggYSBnaXZlbiBzaXplLgogICAtLSAgV2lu ZG93IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgbmV3IHBpeG1h cC4KICAgLS0gIENhbiBiZSBldmVudHVhbGx5IG51bGwuCiAgIC0tICBXaWR0aCBpcyB0aGUgd2lk dGggb2YgdGhlIG5ldyBwaXhtYXAgaW4gcGl4ZWxzLgogICAtLSAgSGVpZ2h0IGlzIHRoZSBoZWln aHQgb2YgdGhlIG5ldyBwaXhtYXAgaW4gcGl4ZWxzLgogICAtLSAgRGVwdGggaXMgdGhlIGRlcHRo IChudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwpIG9mIHRoZSBuZXcgcGl4bWFwLgogICAtLSAgSWYg LTEsIGFuZCB3aW5kb3cgaXMgbm90IG51bGwsIHRoZSBkZXB0aCBvZiB0aGUgbmV3IHBpeG1hcCB3 aWxsIGJlCiAgIC0tICBlcXVhbCB0byB0aGF0IG9mIHdpbmRvdy4KICAgLS0gIEF1dG9tYXRpY2Fs bHkgcmVmZXJlbmNlIHRoZSBwaXhtYXAgb25jZS4KCiAgIHByb2NlZHVyZSBSZWYgKFBpeG1hcCA6 IGluIEdka19QaXhtYXApOwogICAtLSAgQWRkIGEgcmVmZXJlbmNlIHRvIGEgcGl4bWFwLgoKICAg cHJvY2VkdXJlIFVucmVmIChQaXhtYXAgOiBpbiBHZGtfUGl4bWFwKTsKICAgLS0gIFRoaXMgaXMg dGhlIHVzdWFsIHdheSB0byBkZXN0cm95IGEgcGl4bWFwLiBUaGUgbWVtb3J5IGlzIGZyZWVkIHdo ZW4KICAgLS0gIHRoZXJlIGlzIG5vIG1vcmUgcmVmZXJlbmNlCgogICBwcm9jZWR1cmUgQ3JlYXRl X0Zyb21fRGF0YSAoUGl4bWFwIDogICAgb3V0IEdka19QaXhtYXA7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBXaW5kb3cgOiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgIDogaW4gICAgIFN0cmluZzsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRoICA6IGluICAgICBHaW50OwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSGVpZ2h0IDogaW4gICAgIEdpbnQ7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEZXB0aCAgOiBpbiAgICAgR2ludDsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEZnICAgICA6IGluICAgICBDb2xvci5HZGtfQ29sb3I7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBCZyAgICAgOiBpbiAgICAgQ29sb3IuR2RrX0NvbG9yKTsKICAg LS0gIENyZWF0ZSBhIHBpeG1hcCBmcm9tIGRhdGEgaW4gWEJNIGZvcm1hdC4KICAgLS0gIFdpbmRv dyBpcyB1c2VkIHRvIGRldGVybWluZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIG5ldyBiaXRtYXAs IGNhbiBiZQogICAtLSAgbnVsbCBpbiB3aGljaCBjYXNlIHRoZSByb290IHdpbmRvdyBpcyB1c2Vk LgogICAtLSAgRGF0YSBpcyB0aGUgWEJNIGRhdGEuCiAgIC0tICBXaWR0aCBpcyB0aGUgd2lkdGgg b2YgdGhlIG5ldyBiaXRtYXAgaW4gcGl4ZWxzLgogICAtLSAgSGVpZ2h0IGlzIHRoZSBoZWlnaHQg b2YgdGhlIG5ldyBiaXRtYXAgaW4gcGl4ZWxzLgogICAtLSAgRGVwdGggaXMgdGhlIGRlcHRoIChu dW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwpIG9mIHRoZSBuZXcgcGl4bWFwLgogICAtLSAgRmcgaXMg dGhlIGZvcmVncm91bmQgY29sb3IuCiAgIC0tICBCZyBpcyB0aGUgYmFja2dyb3VuZCBjb2xvci4K CiAgIHByb2NlZHVyZSBDcmVhdGVfRnJvbV9YcG0gKFBpeG1hcCAgICAgIDogICAgb3V0IEdka19Q aXhtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvdyAgICAgIDogaW4gICAg IEdkay5XaW5kb3cuR2RrX1dpbmRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFz ayAgICAgICAgOiBpbiBvdXQgR2RrLkJpdG1hcC5HZGtfQml0bWFwOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUcmFuc3BhcmVudCA6IGluICAgICBHZGsuQ29sb3IuR2RrX0NvbG9yOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA6IGluICAgICBTdHJpbmcp OwogICAtLSAgQ3JlYXRlIGEgcGl4bWFwIGZyb20gYSBYUE0gZmlsZS4KICAgLS0gIFdpbmRvdyBp cyB1c2VkIHRvIGRldGVybWluZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIG5ldyBwaXhtYXAuCiAg IC0tICBNYXNrIGlzIGEgcG9pbnRlciB0byBhIHBsYWNlIHRvIHN0b3JlIGEgYml0bWFwIHJlcHJl c2VudGluZyB0aGUKICAgLS0gIHRyYW5zcGFyZW5jeSBtYXNrIG9mIHRoZSBYUE0gZmlsZS4gQ2Fu IGJlIG51bGwsIGluIHdoaWNoIGNhc2UKICAgLS0gIHRyYW5zcGFyZW5jeSB3aWxsIGJlIGlnbm9y ZWQuCiAgIC0tICBUcmFuc3BhcmVudCBpcyB0aGUgY29sb3IgdG8gYmUgdXNlZCBmb3IgdGhlIHBp eGVscyB0aGF0IGFyZSB0cmFuc3BhcmVudAogICAtLSAgaW4gdGhlIGlucHV0IGZpbGUuIENhbiBi ZSBudWxsLCBpbiB3aGljaCBjYXNlIGEgZGVmYXVsdCBjb2xvciB3aWxsIGJlCiAgIC0tICB1c2Vk LgogICAtLSAgRmlsZW5hbWUgaXMgdGhlIGZpbGVuYW1lIG9mIGEgZmlsZSBjb250YWluaW5nIFhQ TSBkYXRhLgoKICAgcHJvY2VkdXJlIENyZWF0ZV9Gcm9tX1hwbSAoUGl4bWFwICAgICAgOiAgICBv dXQgR2RrX1BpeG1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93ICAgICAg OiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDb2xvcm1hcCAgICA6IGluICAgICBHZGsuQ29sb3IuR2RrX0NvbG9ybWFwOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNYXNrICAgICAgICA6IGluIG91dCBHZGsuQml0bWFwLkdk a19CaXRtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcGFyZW50IDogaW4g ICAgIEdkay5Db2xvci5HZGtfQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZp bGVuYW1lICAgIDogaW4gICAgIFN0cmluZyk7CiAgIC0tICBDcmVhdGUgYSBwaXhtYXAgZnJvbSBh IFhQTSBmaWxlIHVzaW5nIGEgcGFydGljdWxhciBjb2xvcm1hcC4KICAgLS0gIFdpbmRvdyBpcyB1 c2VkIHRvIGRldGVybWluZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIG5ldyBwaXhtYXAuIENhbiBi ZQogICAtLSAgbnVsbCBpZiBjb2xvcm1hcCBpcyBnaXZlbi4KICAgLS0gIENvbG9ybWFwIGlzIHRo ZSBHZGtfQ29sb3JtYXAgdGhhdCB0aGUgbmV3IHBpeG1hcCB3aWxsIHVzZS4gSWYgb21pdHRlZCwK ICAgLS0gIHRoZSBjb2xvcm1hcCBmb3Igd2luZG93IHdpbGwgYmUgdXNlZC4KICAgLS0gIE1hc2sg aXMgYSBwb2ludGVyIHRvIGEgcGxhY2UgdG8gc3RvcmUgYSBiaXRtYXAgcmVwcmVzZW50aW5nIHRo ZQogICAtLSAgdHJhbnNwYXJlbmN5IG1hc2sgb2YgdGhlIFhQTSBmaWxlLiBDYW4gYmUgbnVsbCwg aW4gd2hpY2ggY2FzZQogICAtLSAgdHJhbnNwYXJlbmN5IHdpbGwgYmUgaWdub3JlZC4KICAgLS0g IFRyYW5zcGFyZW50IGlzIHRoZSBjb2xvciB0byBiZSB1c2VkIGZvciB0aGUgcGl4ZWxzIHRoYXQg YXJlIHRyYW5zcGFyZW50CiAgIC0tICBpbiB0aGUgaW5wdXQgZmlsZS4gQ2FuIGJlIG51bGwsIGlu IHdoaWNoIGNhc2UgYSBkZWZhdWx0IGNvbG9yIHdpbGwgYmUKICAgLS0gIHVzZWQuCiAgIC0tICBG aWxlbmFtZSBpcyB0aGUgZmlsZW5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcgWFBNIGRhdGEuCgog ICBwcm9jZWR1cmUgQ3JlYXRlX0Zyb21fWHBtX0QKICAgICAoUGl4bWFwICAgICAgOiAgICBvdXQg R2RrX1BpeG1hcDsKICAgICAgV2luZG93ICAgICAgOiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2lu ZG93OwogICAgICBNYXNrICAgICAgICA6IGluIG91dCBHZGsuQml0bWFwLkdka19CaXRtYXA7CiAg ICAgIFRyYW5zcGFyZW50IDogaW4gICAgIEdkay5Db2xvci5HZGtfQ29sb3I7CiAgICAgIERhdGEg ICAgICAgIDogaW4gICAgIEd0a2FkYS5UeXBlcy5DaGFyc19QdHJfQXJyYXkpOwogICAtLSAgQ3Jl YXRlIGEgcGl4bWFwIGZyb20gZGF0YSBpbiBYUE0gZm9ybWF0LgogICAtLSAgV2luZG93IGlzIHVz ZWQgdG8gZGV0ZXJtaW5lIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgbmV3IHBpeG1hcC4KICAgLS0g IE1hc2sgaXMgYSBwb2ludGVyIHRvIGEgcGxhY2UgdG8gc3RvcmUgYSBiaXRtYXAgcmVwcmVzZW50 aW5nIHRoZQogICAtLSAgdHJhbnNwYXJlbmN5IG1hc2sgb2YgdGhlIFhQTSBmaWxlLiBDYW4gYmUg bnVsbCwgaW4gd2hpY2ggY2FzZQogICAtLSAgdHJhbnNwYXJlbmN5IHdpbGwgYmUgaWdub3JlZC4K ICAgLS0gIFRyYW5zcGFyZW50IHdpbGwgYmUgdXNlZCBmb3IgdGhlIHBpeGVscyB0aGF0IGFyZSB0 cmFuc3BhcmVudCBpbiB0aGUKICAgLS0gIGlucHV0IGZpbGUuIENhbiBiZSBudWxsIGluIHdoaWNo IGNhc2UgYSBkZWZhdWx0IGNvbG9yIHdpbGwgYmUgdXNlZC4KICAgLS0gIERhdGEgaXMgYSBwb2lu dGVyIHRvIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFhQTSBkYXRhLgoKICAgcHJvY2VkdXJlIENy ZWF0ZV9Gcm9tX1hwbV9ECiAgICAgKFBpeG1hcCAgICAgIDogICAgb3V0IEdka19QaXhtYXA7CiAg ICAgIFdpbmRvdyAgICAgIDogaW4gICAgIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsKICAgICAgQ29s b3JtYXAgICAgOiBpbiAgICAgR2RrLkNvbG9yLkdka19Db2xvcm1hcDsKICAgICAgTWFzayAgICAg ICAgOiBpbiBvdXQgR2RrLkJpdG1hcC5HZGtfQml0bWFwOwogICAgICBUcmFuc3BhcmVudCA6IGlu ICAgICBHZGsuQ29sb3IuR2RrX0NvbG9yOwogICAgICBEYXRhICAgICAgICA6IGluICAgICBHdGth ZGEuVHlwZXMuQ2hhcnNfUHRyX0FycmF5KTsKICAgLS0gIENyZWF0ZSBhIHBpeG1hcCBmcm9tIGRh dGEgaW4gWFBNIGZvcm1hdCB1c2luZyBhIHBhcnRpY3VsYXIgY29sb3JtYXAuCiAgIC0tICBXaW5k b3cgaXMgdXNlZCB0byBkZXRlcm1pbmUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBuZXcgcGl4bWFw LgogICAtLSAgQ29sb3JtYXAgaXMgdGhlIEdka19Db2xvcm1hcCB0aGF0IHRoZSBuZXcgcGl4bWFw IHdpbGwgYmUgdXNlLiBJZgogICAtLSAgb21pdHRlZCwgdGhlIGNvbG9ybWFwIGZvciB3aW5kb3cg d2lsbCBiZSB1c2VkLgogICAtLSAgTWFzayBpcyBhIHBvaW50ZXIgdG8gYSBwbGFjZSB0byBzdG9y ZSBhIGJpdG1hcCByZXByZXNlbnRpbmcgdGhlCiAgIC0tICB0cmFuc3BhcmVuY3kgbWFzayBvZiB0 aGUgWFBNIGZpbGUuIENhbiBiZSBudWxsLCBpbiB3aGljaCBjYXNlCiAgIC0tICB0cmFuc3BhcmVu Y3kgd2lsbCBiZSBpZ25vcmVkLgogICAtLSAgVHJhbnNwYXJlbnQgd2lsbCBiZSB1c2VkIGZvciB0 aGUgcGl4ZWxzIHRoYXQgYXJlIHRyYW5zcGFyZW50IGluIHRoZQogICAtLSAgaW5wdXQgZmlsZS4g Q2FuIGJlIG51bGwgaW4gd2hpY2ggY2FzZSBhIGRlZmF1bHQgY29sb3Igd2lsbCBiZSB1c2VkLgog ICAtLSAgRGF0YSBpcyBhIHBvaW50ZXIgdG8gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgWFBNIGRh dGEuCgpwcml2YXRlCiAgIE51bGxfUGl4bWFwIDogY29uc3RhbnQgR2RrX1BpeG1hcCA6PSBudWxs OwogICBwcmFnbWEgSW1wb3J0IChDLCBSZWYsICJnZGtfcGl4bWFwX3JlZiIpOwogICBwcmFnbWEg SW1wb3J0IChDLCBVbnJlZiwgImdka19waXhtYXBfdW5yZWYiKTsKZW5kIEdkay5QaXhtYXA7Ci0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBH aW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAg ICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFy bGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAg IC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMg bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0t IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlm IG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwg b3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0t Ci0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRo ZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dl dmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFi bGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAg IC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyBwYWNrYWdl cyBwcm92aWRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBnZW5lcmljIHNpbmdsZS1saW5rZWQK LS0gIGxpc3QuCi0tICBPbmUgaW5zdGFudGlhdGlvbiBpcyBmb3VuZCBpbiBHdGsuV2lkZ2V0Lldp ZGdldF9TbGlzdCBmb3IgYSBsaXN0IG9mCi0tICB3aWRnZXRzLgotLQotLSAgU2VlIHRoZSBkb2N1 bWVudGF0aW9uIG9mIEdsaWIuR2xpc3QgZm9yIG1vcmUgaW5mb3JtYXRpb24sIGl0IHByb3ZpZGVz Ci0tICB0aGUgc2FtZSBBUEkgYXMgdGhpcyBwYWNrYWdlLgotLSAgU2luZ2xlIGxpbmtlZCBsaXN0 cyBhcmUgdHJhdmVyc2VkIHRoZSBzYW1lIHdheSBhcyBkb3VibGUtbGlua2VkIGxpc3RzLAotLSAg ZXZlbiB0aG91Z2ggbW9zdCBzdWJwcm9ncmFtcyBhcmUgbGVzcyBlZmZpY2llbnQgdGhhbiB0aGVp cgotLSAgZG91YmxlLWxpbmtlZCBjb3VudGVycGFydHMuCi0tCi0tICA8L2Rlc2NyaXB0aW9uPgot LSAgPGNfdmVyc2lvbj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0aCBTeXN0ZW07CgpwYWNrYWdlIEds aWIuR1NsaXN0IGlzCgogICAtLSAgPGRvY19pZ25vcmU+CgogICBnZW5lcmljCiAgICAgIHR5cGUg R3BvaW50ZXIgKDw+KSBpcyBwcml2YXRlOwogICAgICB3aXRoIGZ1bmN0aW9uIENvbnZlcnQgKFAg OiBHcG9pbnRlcikgcmV0dXJuIFN5c3RlbS5BZGRyZXNzIGlzIDw+OwogICAgICB3aXRoIGZ1bmN0 aW9uIENvbnZlcnQgKFMgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEdwb2ludGVyIGlzIDw+Owog ICBwYWNrYWdlIEdlbmVyaWNfU0xpc3QgaXMKCiAgICAgIHR5cGUgR1NsaXN0IGlzIHByaXZhdGU7 CiAgICAgIE51bGxfTGlzdCA6IGNvbnN0YW50IEdTbGlzdDsKCiAgICAgIHByb2NlZHVyZSBBbGxv YyAoTGlzdCA6IG91dCBHU2xpc3QpOwogICAgICBwcm9jZWR1cmUgQXBwZW5kIChMaXN0IDogaW4g b3V0IEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIEdwb2ludGVyKTsK ICAgICAgZnVuY3Rpb24gQ29uY2F0IChMaXN0MSA6IGluIEdTbGlzdDsKICAgICAgICAgICAgICAg ICAgICAgICBMaXN0MiA6IGluIEdTbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g R1NsaXN0OwogICAgICBwcm9jZWR1cmUgSW5zZXJ0IChMaXN0IDogaW4gb3V0IEdTbGlzdDsKICAg ICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIEdwb2ludGVyOwogICAgICAgICAgICAgICAg ICAgICAgICBQb3NpdGlvbiA6IGluIEdpbnQpOwogICAgICBmdW5jdGlvbiBGaW5kIChMaXN0IDog aW4gR1NsaXN0OwogICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBHU2xpc3Q7CiAgICAgIHByb2NlZHVyZSBGcmVlIChMaXN0 IDogaW4gb3V0IEdTbGlzdCk7CiAgICAgIGZ1bmN0aW9uIEdldF9EYXRhIChMaXN0IDogaW4gR1Ns aXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdwb2ludGVyOwogICAgICBmdW5j dGlvbiBJbmRleCAoTGlzdCA6IGluIEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgIERhdGEg OiBpbiBHcG9pbnRlcikKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAgICBm dW5jdGlvbiBMYXN0IChMaXN0IDogaW4gR1NsaXN0KQogICAgICAgICAgICAgICAgICAgICByZXR1 cm4gR1NsaXN0OwogICAgICBmdW5jdGlvbiBMZW5ndGggKExpc3QgOiBpbiBHU2xpc3QpCiAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIEd1aW50OwogICAgICBwcm9jZWR1cmUgTGlzdF9SZXZl cnNlIChMaXN0IDogaW4gb3V0IEdTbGlzdCk7CiAgICAgIGZ1bmN0aW9uIE5leHQgKExpc3QgOiBp biBHU2xpc3QpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHU2xpc3Q7CiAgICAgIGZ1bmN0 aW9uIE50aCAoTGlzdCA6IGluIEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICBOICAgIDogaW4g R3VpbnQpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdTbGlzdDsKICAgICAgZnVuY3Rpb24g TnRoX0RhdGEgKExpc3QgOiBpbiBHU2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBOIDog aW4gR3VpbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR3BvaW50ZXI7CiAgICAg IGZ1bmN0aW9uIFBvc2l0aW9uIChMaXN0IDogaW4gR1NsaXN0OwogICAgICAgICAgICAgICAgICAg ICAgICAgTGluayA6IGluIEdTbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBH aW50OwogICAgICBwcm9jZWR1cmUgUHJlcGVuZCAoTGlzdCA6IGluIG91dCBHU2xpc3Q7CiAgICAg ICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpOwogICAgICBwcm9jZWR1cmUg UmVtb3ZlIChMaXN0IDogaW4gb3V0IEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgRGF0 YSA6IGluIEdwb2ludGVyKTsKICAgICAgcHJvY2VkdXJlIFJlbW92ZV9MaW5rIChMaXN0IDogaW4g b3V0IEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIDogaW4gR1NsaXN0 KTsKICAgICAgZnVuY3Rpb24gR2V0X09iamVjdCAoT2JqIDogaW4gR1NsaXN0KQogICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgIHByYWdtYSBJbmxp bmUgKEdldF9PYmplY3QpOwogICAgICBwcm9jZWR1cmUgU2V0X09iamVjdCAoT2JqICAgIDogaW4g b3V0IEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICA6IGluICAgICBT eXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbmxpbmUgKFNldF9PYmplY3QpOwogICBwcml2 YXRlCgogICAgICB0eXBlIEdTbGlzdCBpcwogICAgICAgICByZWNvcmQKICAgICAgICAgICAgUHRy IDogU3lzdGVtLkFkZHJlc3MgOj0gU3lzdGVtLk51bGxfQWRkcmVzczsKICAgICAgICAgZW5kIHJl Y29yZDsKICAgICAgTnVsbF9MaXN0IDogY29uc3RhbnQgR1NsaXN0IDo9IChQdHIgPT4gU3lzdGVt Lk51bGxfQWRkcmVzcyk7CiAgIGVuZCBHZW5lcmljX1NMaXN0OwoKICAgLS0gIDwvZG9jX2lnbm9y ZT4KCmVuZCBHbGliLkdTbGlzdDsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0g QWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJy b2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg LS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5z ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAg ICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug LSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMg YSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3Mg ZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBm aWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBu b3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBi ZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0g ZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3 aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAg R05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnBhY2thZ2UgYm9keSBH bGliLkdsaXN0IGlzCgogICB1c2UgdHlwZSBTeXN0ZW0uQWRkcmVzczsKCiAgIHBhY2thZ2UgYm9k eSBHZW5lcmljX0xpc3QgaXMKICAgICAgLS0tLS0tLS0tLS0KICAgICAgLS0gQWxsb2MgLS0KICAg ICAgLS0tLS0tLS0tLS0KCiAgICAgIHByb2NlZHVyZSBBbGxvYyAoTGlzdCA6IG91dCBHbGlzdCkg aXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAg ICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdfbGlzdF9hbGxvYyIpOwogICAgICBi ZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRlcm5hbCk7CiAgICAgIGVuZCBBbGxv YzsKCiAgICAgIC0tLS0tLS0tLS0tLQogICAgICAtLSBBcHBlbmQgLS0KICAgICAgLS0tLS0tLS0t LS0tCgogICAgICBwcm9jZWR1cmUgQXBwZW5kCiAgICAgICAgKExpc3QgOiBpbiBvdXQgR2xpc3Q7 CiAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRlcikKICAgICAgaXMKICAgICAgICAgZnVuY3Rpb24g SW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERhdGEgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWws ICJnX2xpc3RfYXBwZW5kIik7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKExpc3Qs IEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENvbnZlcnQgKERhdGEpKSk7CiAgICAgIGVuZCBBcHBlbmQ7CgogICAgICAtLS0t LS0tLS0tLS0KICAgICAgLS0gQ29uY2F0IC0tCiAgICAgIC0tLS0tLS0tLS0tLQoKICAgICAgZnVu Y3Rpb24gQ29uY2F0CiAgICAgICAgKExpc3QxIDogaW4gR2xpc3Q7CiAgICAgICAgIExpc3QyIDog aW4gR2xpc3QpCiAgICAgICAgIHJldHVybiBHbGlzdAogICAgICBpcwogICAgICAgICBmdW5jdGlv biBJbnRlcm5hbCAoTGlzdDEgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3QyIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVy bmFsLCAiZ19saXN0X2FwcGVuZCIpOwogICAgICAgICBUbXAgOiBHbGlzdDsKICAgICAgYmVnaW4K ICAgICAgICAgU2V0X09iamVjdCAoVG1wLCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdDEpLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRfT2JqZWN0IChMaXN0MikpKTsK ICAgICAgICAgcmV0dXJuIFRtcDsKICAgICAgZW5kIENvbmNhdDsKCiAgICAgIC0tLS0tLS0tLS0t LQogICAgICAtLSBJbnNlcnQgLS0KICAgICAgLS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUg SW5zZXJ0CiAgICAgICAgKExpc3QgICAgIDogaW4gb3V0IEdsaXN0OwogICAgICAgICBEYXRhICAg ICA6IGluICAgICBHcG9pbnRlcjsKICAgICAgICAgUG9zaXRpb24gOiBpbiAgICAgR2ludCkKICAg ICAgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBvcyAgOiBHaW50KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJ bnRlcm5hbCwgImdfbGlzdF9pbnNlcnQiKTsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09iamVj dCAoTGlzdCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ29udmVydCAoRGF0YSksIFBvc2l0aW9uKSk7CiAgICAgIGVuZCBJ bnNlcnQ7CgogICAgICAtLS0tLS0tLS0tCiAgICAgIC0tIEZpbmQgLS0KICAgICAgLS0tLS0tLS0t LQoKICAgICAgZnVuY3Rpb24gRmluZAogICAgICAgIChMaXN0IDogaW4gR2xpc3Q7CiAgICAgICAg IERhdGEgOiBpbiBHcG9pbnRlcikKICAgICAgICAgcmV0dXJuIEdsaXN0CiAgICAgIGlzCiAgICAg ICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEYXRhIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQg KEMsIEludGVybmFsLCAiZ19saXN0X2ZpbmQiKTsKICAgICAgICAgVG1wIDogR2xpc3Q7CiAgICAg IGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKFRtcCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExp c3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0IChEYXRhKSkp OwogICAgICAgICByZXR1cm4gVG1wOwogICAgICBlbmQgRmluZDsKCiAgICAgIC0tLS0tLS0tLS0t CiAgICAgIC0tIEZpcnN0IC0tCiAgICAgIC0tLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBGaXJz dCAoTGlzdCA6IGluIEdsaXN0KQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdsaXN0CiAg ICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3Mp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAg ICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0X2ZpcnN0Iik7CiAgICAgICAg IFRtcCA6IEdsaXN0OwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChUbXAsIEludGVy bmFsIChHZXRfT2JqZWN0IChMaXN0KSkpOwogICAgICAgICByZXR1cm4gVG1wOwogICAgICBlbmQg Rmlyc3Q7CgogICAgICAtLS0tLS0tLS0tCiAgICAgIC0tIEZyZWUgLS0KICAgICAgLS0tLS0tLS0t LQoKICAgICAgcHJvY2VkdXJlIEZyZWUgKExpc3QgOiBpbiBvdXQgR2xpc3QpIGlzCiAgICAgICAg IHByb2NlZHVyZSBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgICAgcHJh Z21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3RfZnJlZSIpOwogICAgICBiZWdpbgogICAg ICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCkpOwogICAgICBlbmQgRnJlZTsKCiAgICAg IC0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIEdldF9EYXRhIC0tCiAgICAgIC0tLS0tLS0tLS0tLS0t CgogICAgICBmdW5jdGlvbiBHZXRfRGF0YSAoTGlzdCA6IGluIEdsaXN0KSByZXR1cm4gR3BvaW50 ZXIgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBpbiBTeXN0ZW0uQWRkcmVz cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAg ICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJhZGFfbGlzdF9nZXRfZGF0YSIpOwog ICAgICBiZWdpbgogICAgICAgICByZXR1cm4gQ29udmVydCAoSW50ZXJuYWwgKEdldF9PYmplY3Qg KExpc3QpKSk7CiAgICAgIGVuZCBHZXRfRGF0YTsKCiAgICAgIC0tLS0tLS0tLS0tLS0tCiAgICAg IC0tIEdldF9EYXRhIC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBHZXRf RGF0YV9BZGRyZXNzIChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBTeXN0ZW0uQWRkcmVzcyBpcwog ICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IGluIFN5c3RlbS5BZGRyZXNzKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBw cmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImFkYV9saXN0X2dldF9kYXRhIik7CiAgICAgIGJl Z2luCiAgICAgICAgIHJldHVybiBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCkpOwogICAgICBl bmQgR2V0X0RhdGFfQWRkcmVzczsKCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgIC0t ICBHZXRfR3BvaW50ZXIgIC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICBmdW5j dGlvbiBHZXRfR3BvaW50ZXIgKExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEdwb2ludGVyIGlzCiAg ICAgIGJlZ2luCiAgICAgICAgIHJldHVybiBDb252ZXJ0IChHZXRfT2JqZWN0IChMaXN0KSk7CiAg ICAgIGVuZCBHZXRfR3BvaW50ZXI7CgogICAgICAtLS0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIEdl dF9PYmplY3QgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gR2V0X09i amVjdCAoT2JqIDogaW4gR2xpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBT eXN0ZW0uQWRkcmVzcyBpcwogICAgICBiZWdpbgogICAgICAgICByZXR1cm4gT2JqLlB0cjsKICAg ICAgZW5kIEdldF9PYmplY3Q7CgogICAgICAtLS0tLS0tLS0tLQogICAgICAtLSBJbmRleCAtLQog ICAgICAtLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gSW5kZXgKICAgICAgICAoTGlzdCA6IGlu IEdsaXN0OwogICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAgICAgICAgIHJldHVybiBHaW50 CiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJl c3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogU3lzdGVtLkFkZHJlc3MpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgICAgICAgcHJhZ21hIElt cG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3RfaW5kZXgiKTsKICAgICAgYmVnaW4KICAgICAgICAg cmV0dXJuIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwKICAgICAgICAgICAgICAgICAgICAg ICAgICBDb252ZXJ0IChEYXRhKSk7CiAgICAgIGVuZCBJbmRleDsKCiAgICAgIC0tLS0tLS0tLS0t LS0tLS0tLQogICAgICAtLSAgSXNfQ3JlYXRlZCAgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0tLS0t CgogICAgICBmdW5jdGlvbiBJc19DcmVhdGVkIChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBCb29s ZWFuIGlzCiAgICAgIGJlZ2luCiAgICAgICAgIHJldHVybiBHZXRfT2JqZWN0IChMaXN0KSAvPSBT eXN0ZW0uTnVsbF9BZGRyZXNzOwogICAgICBlbmQgSXNfQ3JlYXRlZDsKCiAgICAgIC0tLS0tLS0t LS0KICAgICAgLS0gTGFzdCAtLQogICAgICAtLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBMYXN0 IChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBHbGlzdCBpcwogICAgICAgICBmdW5jdGlvbiBJbnRl cm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5h bCwgImdfbGlzdF9sYXN0Iik7CiAgICAgICAgIFRtcCA6IEdsaXN0OwogICAgICBiZWdpbgogICAg ICAgICBTZXRfT2JqZWN0IChUbXAsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSkpOwogICAg ICAgICByZXR1cm4gVG1wOwogICAgICBlbmQgTGFzdDsKCiAgICAgIC0tLS0tLS0tLS0tLQogICAg ICAtLSBMZW5ndGggLS0KICAgICAgLS0tLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBMZW5ndGgg KExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEd1aW50IGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVy bmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gR3VpbnQ7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0 X2xlbmd0aCIpOwogICAgICBiZWdpbgogICAgICAgICByZXR1cm4gSW50ZXJuYWwgKEdldF9PYmpl Y3QgKExpc3QpKTsKICAgICAgZW5kIExlbmd0aDsKCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQog ICAgICAtLSBMaXN0X1JldmVyc2UgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICBw cm9jZWR1cmUgTGlzdF9SZXZlcnNlIChMaXN0IDogaW4gb3V0IEdsaXN0KSBpcwogICAgICAgICBm dW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0 IChDLCBJbnRlcm5hbCwgImdfbGlzdF9yZXZlcnNlIik7CiAgICAgIGJlZ2luCiAgICAgICAgIFNl dF9PYmplY3QgKExpc3QsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSkpOwogICAgICBlbmQg TGlzdF9SZXZlcnNlOwoKICAgICAgLS0tLS0tLS0tLQogICAgICAtLSBOZXh0IC0tCiAgICAgIC0t LS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIE5leHQgKExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEds aXN0IGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3Mp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAg ICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiYWRhX2xpc3RfbmV4dCIpOwogICAgICAg ICBUbXAgOiBHbGlzdDsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09iamVjdCAoVG1wLCBJbnRl cm5hbCAoR2V0X09iamVjdCAoTGlzdCkpKTsKICAgICAgICAgcmV0dXJuIFRtcDsKICAgICAgZW5k IE5leHQ7CgogICAgICAtLS0tLS0tLS0KICAgICAgLS0gTnRoIC0tCiAgICAgIC0tLS0tLS0tLQoK ICAgICAgZnVuY3Rpb24gTnRoCiAgICAgICAgKExpc3QgOiBpbiBHbGlzdDsKICAgICAgICAgTiAg ICA6IGluIEd1aW50KQogICAgICAgICByZXR1cm4gR2xpc3QKICAgICAgaXMKICAgICAgICAgZnVu Y3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE4gICAgOiBHdWludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJn X2xpc3RfbnRoIik7CiAgICAgICAgIFRtcCA6IEdsaXN0OwogICAgICBiZWdpbgogICAgICAgICBT ZXRfT2JqZWN0IChUbXAsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwgTikpOwogICAgICAg ICByZXR1cm4gVG1wOwogICAgICBlbmQgTnRoOwoKICAgICAgLS0tLS0tLS0tLS0tLS0KICAgICAg LS0gTnRoX0RhdGEgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIE50aF9E YXRhCiAgICAgICAgKExpc3QgOiBpbiBHbGlzdDsKICAgICAgICAgTiAgICA6IGluIEd1aW50KQog ICAgICAgICByZXR1cm4gR3BvaW50ZXIKICAgICAgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJu YWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4g ICAgOiBHdWludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRk cmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3RfbnRoX2Rh dGEiKTsKICAgICAgYmVnaW4KICAgICAgICAgcmV0dXJuIENvbnZlcnQgKEludGVybmFsIChHZXRf T2JqZWN0IChMaXN0KSwgTikpOwogICAgICBlbmQgTnRoX0RhdGE7CgogICAgICAtLS0tLS0tLS0t LS0tLQogICAgICAtLSBQb3NpdGlvbiAtLQogICAgICAtLS0tLS0tLS0tLS0tLQoKICAgICAgZnVu Y3Rpb24gUG9zaXRpb24KICAgICAgICAoTGlzdCA6IGluIEdsaXN0OwogICAgICAgICBMaW5rIDog aW4gR2xpc3QpCiAgICAgICAgIHJldHVybiBHaW50CiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9u IEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaW5rIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gR2ludDsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3Rf cG9zaXRpb24iKTsKICAgICAgYmVnaW4KICAgICAgICAgcmV0dXJuIEludGVybmFsIChHZXRfT2Jq ZWN0IChMaXN0KSwgR2V0X09iamVjdCAoTGluaykpOwogICAgICBlbmQgUG9zaXRpb247CgogICAg ICAtLS0tLS0tLS0tLS0tCiAgICAgIC0tIFByZXBlbmQgLS0KICAgICAgLS0tLS0tLS0tLS0tLQoK ICAgICAgcHJvY2VkdXJlIFByZXBlbmQKICAgICAgICAoTGlzdCA6IGluIG91dCBHbGlzdDsKICAg ICAgICAgRGF0YSA6IGluIEdwb2ludGVyKQogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJbnRl cm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg RGF0YSA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdf bGlzdF9wcmVwZW5kIik7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKExpc3QsIElu dGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENvbnZlcnQgKERhdGEpKSk7CiAgICAgIGVuZCBQcmVwZW5kOwoKICAgICAgLS0tLS0t LS0tLQogICAgICAtLSBQcmV2IC0tCiAgICAgIC0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIFBy ZXYgKExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEdsaXN0IGlzCiAgICAgICAgIGZ1bmN0aW9uIElu dGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVy bmFsLCAiYWRhX2xpc3RfcHJldiIpOwogICAgICAgICBUbXAgOiBHbGlzdDsKICAgICAgYmVnaW4K ICAgICAgICAgU2V0X09iamVjdCAoVG1wLCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCkpKTsK ICAgICAgICAgcmV0dXJuIFRtcDsKICAgICAgZW5kIFByZXY7CgogICAgICAtLS0tLS0tLS0tLS0K ICAgICAgLS0gUmVtb3ZlIC0tCiAgICAgIC0tLS0tLS0tLS0tLQoKICAgICAgcHJvY2VkdXJlIFJl bW92ZQogICAgICAgIChMaXN0IDogaW4gb3V0IEdsaXN0OwogICAgICAgICBEYXRhIDogaW4gR3Bv aW50ZXIpCiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVt LkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogU3lzdGVtLkFkZHJl c3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAg ICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0X3JlbW92ZSIpOwogICAg ICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRlcm5hbCAoR2V0X09iamVjdCAo TGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0IChEYXRh KSkpOwogICAgICBlbmQgUmVtb3ZlOwoKICAgICAgLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgLS0g UmVtb3ZlX0xpbmsgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgIHByb2NlZHVyZSBS ZW1vdmVfTGluawogICAgICAgIChMaXN0IDogaW4gb3V0IEdsaXN0OwogICAgICAgICBMaW5rIDog aW4gR2xpc3QpCiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lz dGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIDogU3lzdGVtLkFk ZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7 CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0X3JlbW92ZV9saW5r Iik7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKExpc3QsIEludGVybmFsIChHZXRf T2JqZWN0IChMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldF9P YmplY3QgKExpbmspKSk7CiAgICAgIGVuZCBSZW1vdmVfTGluazsKCiAgICAgIC0tLS0tLS0tLS0t LS0tLS0KICAgICAgLS0gU2V0X09iamVjdCAtLQogICAgICAtLS0tLS0tLS0tLS0tLS0tCgogICAg ICBwcm9jZWR1cmUgU2V0X09iamVjdCAoT2JqICAgOiBpbiBvdXQgR2xpc3Q7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBWYWx1ZSA6IGluICAgICBTeXN0ZW0uQWRkcmVzcykgaXMKICAgICAg YmVnaW4KICAgICAgICAgT2JqLlB0ciA6PSBWYWx1ZTsKICAgICAgZW5kIFNldF9PYmplY3Q7Cgog ICBlbmQgR2VuZXJpY19MaXN0OwplbmQgR2xpYi5HbGlzdDsKCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAg ICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0 IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVl bCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0t Ci0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAg IC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAg ICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg dG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEt MTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3Rh bnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1 bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRo aXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0t IGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55 IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUg Y292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgpwYWNrYWdlIGJvZHkgR2xpYi5HU2xpc3QgaXMKCiAgIHBhY2thZ2UgYm9keSBHZW5lcmljX1NM aXN0IGlzCiAgICAgIC0tLS0tLS0tLS0tCiAgICAgIC0tIEFsbG9jIC0tCiAgICAgIC0tLS0tLS0t LS0tCgogICAgICBwcm9jZWR1cmUgQWxsb2MgKExpc3QgOiBvdXQgR1NsaXN0KSBpcwogICAgICAg ICBmdW5jdGlvbiBJbnRlcm5hbCByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdt YSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9hbGxvYyIpOwogICAgICBiZWdpbgogICAg ICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRlcm5hbCk7CiAgICAgIGVuZCBBbGxvYzsKCiAgICAg IC0tLS0tLS0tLS0tLQogICAgICAtLSBBcHBlbmQgLS0KICAgICAgLS0tLS0tLS0tLS0tCgogICAg ICBwcm9jZWR1cmUgQXBwZW5kCiAgICAgICAgKExpc3QgOiBpbiBvdXQgR1NsaXN0OwogICAgICAg ICBEYXRhIDogaW4gR3BvaW50ZXIpCiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFs IChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRh IDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lz dGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlz dF9hcHBlbmQiKTsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09iamVjdCAoTGlzdCwgSW50ZXJu YWwgKEdldF9PYmplY3QgKExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ29udmVydCAoRGF0YSkpKTsKICAgICAgZW5kIEFwcGVuZDsKCiAgICAgIC0tLS0tLS0tLS0t LQogICAgICAtLSBDb25jYXQgLS0KICAgICAgLS0tLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBD b25jYXQKICAgICAgICAoTGlzdDEgOiBpbiBHU2xpc3Q7CiAgICAgICAgIExpc3QyIDogaW4gR1Ns aXN0KQogICAgICAgICByZXR1cm4gR1NsaXN0CiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIElu dGVybmFsIChMaXN0MSA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdDIgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWws ICJnX3NsaXN0X2FwcGVuZCIpOwogICAgICAgICBUbXAgOiBHU2xpc3Q7CiAgICAgIGJlZ2luCiAg ICAgICAgIFNldF9PYmplY3QgKFRtcCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QxKSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0X09iamVjdCAoTGlzdDIpKSk7CiAg ICAgICAgIHJldHVybiBUbXA7CiAgICAgIGVuZCBDb25jYXQ7CgogICAgICAtLS0tLS0tLS0tLS0t LQogICAgICAtLSBHZXRfRGF0YSAtLQogICAgICAtLS0tLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rp b24gR2V0X0RhdGEgKExpc3QgOiBpbiBHU2xpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gR3BvaW50ZXIKICAgICAgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3Qg OiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEg SW1wb3J0IChDLCBJbnRlcm5hbCwgImFkYV9nc2xpc3RfZ2V0X2RhdGEiKTsKICAgICAgYmVnaW4K ICAgICAgICAgcmV0dXJuIENvbnZlcnQgKEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSkpOwog ICAgICBlbmQgR2V0X0RhdGE7CgogICAgICAtLS0tLS0tLS0tLS0KICAgICAgLS0gSW5zZXJ0IC0t CiAgICAgIC0tLS0tLS0tLS0tLQoKICAgICAgcHJvY2VkdXJlIEluc2VydAogICAgICAgIChMaXN0 ICAgICA6IGluIG91dCBHU2xpc3Q7CiAgICAgICAgIERhdGEgICAgIDogaW4gICAgIEdwb2ludGVy OwogICAgICAgICBQb3NpdGlvbiA6IGluICAgICBHaW50KQogICAgICBpcwogICAgICAgICBmdW5j dGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgRGF0YSA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgUG9zICA6IEdpbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVt LkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9p bnNlcnQiKTsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09iamVjdCAoTGlzdCwgSW50ZXJuYWwg KEdldF9PYmplY3QgKExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q29udmVydCAoRGF0YSksIFBvc2l0aW9uKSk7CiAgICAgIGVuZCBJbnNlcnQ7CgogICAgICAtLS0t LS0tLS0tCiAgICAgIC0tIEZpbmQgLS0KICAgICAgLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24g RmluZAogICAgICAgIChMaXN0IDogaW4gR1NsaXN0OwogICAgICAgICBEYXRhIDogaW4gR3BvaW50 ZXIpCiAgICAgICAgIHJldHVybiBHU2xpc3QKICAgICAgaXMKICAgICAgICAgZnVuY3Rpb24gSW50 ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IERhdGEgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJn X3NsaXN0X2ZpbmQiKTsKICAgICAgICAgVG1wIDogR1NsaXN0OwogICAgICBiZWdpbgogICAgICAg ICBTZXRfT2JqZWN0IChUbXAsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydCAoRGF0YSkpKTsKICAgICAgICAgcmV0 dXJuIFRtcDsKICAgICAgZW5kIEZpbmQ7CgogICAgICAtLS0tLS0tLS0tCiAgICAgIC0tIEZyZWUg LS0KICAgICAgLS0tLS0tLS0tLQoKICAgICAgcHJvY2VkdXJlIEZyZWUgKExpc3QgOiBpbiBvdXQg R1NsaXN0KSBpcwogICAgICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRk cmVzcyk7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9mcmVl Iik7CiAgICAgIGJlZ2luCiAgICAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSk7CiAg ICAgIGVuZCBGcmVlOwoKICAgICAgLS0tLS0tLS0tLS0tLS0tLQogICAgICAtLSBHZXRfT2JqZWN0 IC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIEdldF9PYmplY3QgKE9i aiA6IGluIEdTbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5B ZGRyZXNzIGlzCiAgICAgIGJlZ2luCiAgICAgICAgIHJldHVybiBPYmouUHRyOwogICAgICBlbmQg R2V0X09iamVjdDsKCiAgICAgIC0tLS0tLS0tLS0tCiAgICAgIC0tIEluZGV4IC0tCiAgICAgIC0t LS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBJbmRleAogICAgICAgIChMaXN0IDogaW4gR1NsaXN0 OwogICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAgICAgICAgIHJldHVybiBHaW50CiAgICAg IGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgICAgICAgcHJhZ21hIEltcG9ydCAo QywgSW50ZXJuYWwsICJnX3NsaXN0X2luZGV4Iik7CiAgICAgIGJlZ2luCiAgICAgICAgIHJldHVy biBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg Q29udmVydCAoRGF0YSkpOwogICAgICBlbmQgSW5kZXg7CgogICAgICAtLS0tLS0tLS0tCiAgICAg IC0tIExhc3QgLS0KICAgICAgLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gTGFzdCAoTGlzdCA6 IGluIEdTbGlzdCkgcmV0dXJuIEdTbGlzdCBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAo TGlzdCA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdf c2xpc3RfbGFzdCIpOwogICAgICAgICBUbXAgOiBHU2xpc3Q7CiAgICAgIGJlZ2luCiAgICAgICAg IFNldF9PYmplY3QgKFRtcCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpKSk7CiAgICAgICAg IHJldHVybiBUbXA7CiAgICAgIGVuZCBMYXN0OwoKICAgICAgLS0tLS0tLS0tLS0tCiAgICAgIC0t IExlbmd0aCAtLQogICAgICAtLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIExlbmd0aCAoTGlz dCA6IGluIEdTbGlzdCkgcmV0dXJuIEd1aW50IGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFs IChMaXN0IDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gR3VpbnQ7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9s ZW5ndGgiKTsKICAgICAgYmVnaW4KICAgICAgICAgcmV0dXJuIEludGVybmFsIChHZXRfT2JqZWN0 IChMaXN0KSk7CiAgICAgIGVuZCBMZW5ndGg7CgogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0KICAg ICAgLS0gTGlzdF9SZXZlcnNlIC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgcHJv Y2VkdXJlIExpc3RfUmV2ZXJzZSAoTGlzdCA6IGluIG91dCBHU2xpc3QpIGlzCiAgICAgICAgIGZ1 bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQg KEMsIEludGVybmFsLCAiZ19zbGlzdF9yZXZlcnNlIik7CiAgICAgIGJlZ2luCiAgICAgICAgIFNl dF9PYmplY3QgKExpc3QsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSkpOwogICAgICBlbmQg TGlzdF9SZXZlcnNlOwoKICAgICAgLS0tLS0tLS0tLQogICAgICAtLSBOZXh0IC0tCiAgICAgIC0t LS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIE5leHQgKExpc3QgOiBpbiBHU2xpc3QpIHJldHVybiBH U2xpc3QgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVz cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAg ICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJhZGFfZ3NsaXN0X25leHQiKTsKICAg ICAgICAgVG1wIDogR1NsaXN0OwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChUbXAs IEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSkpOwogICAgICAgICByZXR1cm4gVG1wOwogICAg ICBlbmQgTmV4dDsKCiAgICAgIC0tLS0tLS0tLQogICAgICAtLSBOdGggLS0KICAgICAgLS0tLS0t LS0tCgogICAgICBmdW5jdGlvbiBOdGgKICAgICAgICAoTGlzdCA6IGluIEdTbGlzdDsKICAgICAg ICAgTiAgICA6IGluIEd1aW50KQogICAgICAgICByZXR1cm4gR1NsaXN0CiAgICAgIGlzCiAgICAg ICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOICAgIDogR3VpbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVy bmFsLCAiZ19zbGlzdF9udGgiKTsKICAgICAgICAgVG1wIDogR1NsaXN0OwogICAgICBiZWdpbgog ICAgICAgICBTZXRfT2JqZWN0IChUbXAsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwgTikp OwogICAgICAgICByZXR1cm4gVG1wOwogICAgICBlbmQgTnRoOwoKICAgICAgLS0tLS0tLS0tLS0t LS0KICAgICAgLS0gTnRoX0RhdGEgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0 aW9uIE50aF9EYXRhCiAgICAgICAgKExpc3QgOiBpbiBHU2xpc3Q7CiAgICAgICAgIE4gICAgOiBp biBHdWludCkKICAgICAgICAgcmV0dXJuIEdwb2ludGVyCiAgICAgIGlzCiAgICAgICAgIGZ1bmN0 aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOICAgIDogR3VpbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g U3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19z bGlzdF9udGhfZGF0YSIpOwogICAgICBiZWdpbgogICAgICAgICByZXR1cm4gQ29udmVydCAoSW50 ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLCBOKSk7CiAgICAgIGVuZCBOdGhfRGF0YTsKCiAgICAg IC0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIFBvc2l0aW9uIC0tCiAgICAgIC0tLS0tLS0tLS0tLS0t CgogICAgICBmdW5jdGlvbiBQb3NpdGlvbgogICAgICAgIChMaXN0IDogaW4gR1NsaXN0OwogICAg ICAgICBMaW5rIDogaW4gR1NsaXN0KQogICAgICAgICByZXR1cm4gR2ludAogICAgICBpcwogICAg ICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGluayA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIEdpbnQ7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVy bmFsLCAiZ19zbGlzdF9wb3NpdGlvbiIpOwogICAgICBiZWdpbgogICAgICAgICByZXR1cm4gSW50 ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLCBHZXRfT2JqZWN0IChMaW5rKSk7CiAgICAgIGVuZCBQ b3NpdGlvbjsKCiAgICAgIC0tLS0tLS0tLS0tLS0KICAgICAgLS0gUHJlcGVuZCAtLQogICAgICAt LS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgUHJlcGVuZAogICAgICAgIChMaXN0IDogaW4g b3V0IEdTbGlzdDsKICAgICAgICAgRGF0YSA6IGluIEdwb2ludGVyKQogICAgICBpcwogICAgICAg ICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgRGF0YSA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChD LCBJbnRlcm5hbCwgImdfc2xpc3RfcHJlcGVuZCIpOwogICAgICBiZWdpbgogICAgICAgICBTZXRf T2JqZWN0IChMaXN0LCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0IChEYXRhKSkpOwogICAgICBlbmQgUHJlcGVu ZDsKCiAgICAgIC0tLS0tLS0tLS0tLQogICAgICAtLSBSZW1vdmUgLS0KICAgICAgLS0tLS0tLS0t LS0tCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlCiAgICAgICAgKExpc3QgOiBpbiBvdXQgR1NsaXN0 OwogICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9u IEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEYXRhIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFs LCAiZ19zbGlzdF9yZW1vdmUiKTsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09iamVjdCAoTGlz dCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ29udmVydCAoRGF0YSkpKTsKICAgICAgZW5kIFJlbW92ZTsKCiAgICAgIC0t LS0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIFJlbW92ZV9MaW5rIC0tCiAgICAgIC0tLS0tLS0tLS0t LS0tLS0tCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlX0xpbmsKICAgICAgICAoTGlzdCA6IGluIG91 dCBHU2xpc3Q7CiAgICAgICAgIExpbmsgOiBpbiBHU2xpc3QpCiAgICAgIGlzCiAgICAgICAgIGZ1 bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaW5rIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIElu dGVybmFsLCAiZ19zbGlzdF9yZW1vdmVfbGluayIpOwogICAgICBiZWdpbgogICAgICAgICBTZXRf T2JqZWN0IChMaXN0LCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHZXRfT2JqZWN0IChMaW5rKSkpOwogICAgICBlbmQgUmVt b3ZlX0xpbms7CgogICAgICAtLS0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIFNldF9PYmplY3QgLS0K ICAgICAgLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgcHJvY2VkdXJlIFNldF9PYmplY3QgKE9iaiAg IDogaW4gb3V0IEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIDogaW4g ICAgIFN5c3RlbS5BZGRyZXNzKSBpcwogICAgICBiZWdpbgogICAgICAgICBPYmouUHRyIDo9IFZh bHVlOwogICAgICBlbmQgU2V0X09iamVjdDsKCiAgIGVuZCBHZW5lcmljX1NMaXN0OwplbmQgR2xp Yi5HU2xpc3Q7Cgo=