From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web08.2931.1663985977493715256 for ; Fri, 23 Sep 2022 19:19:37 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=m2iEA+mK; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663985977; x=1695521977; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=LizK0seL8N7WLSGtMkYeJb1FyejjqfNmcNPojmfxu6U=; b=m2iEA+mKdFy2k6aP7A5rnlW73N5QKBLEOkqu07cK5m8ZAFI1ppoI2shy MsmBcmZurgyDXAl2cb4JYBA/kGOnk8kmmRpqHpA4ZJM7jSDQ4Opz2MWK5 mXrb5UHsFqChMmSJ5hVxRBLd/B9jVKmWUR+V7VqJvFn2TwlT4bNeBRDNI Bv/B63C5bvtzU4M4RIgFElBctt0AsV8xcFB4ObVr3jQKUIa+ipkqgs+pp KDVmw0qWegDkgDHo8n8IavRyqmJ/sLsybsY7wbQ0oBNrBzcik70CMOW57 SI0C5+ve2ozWk/Vd2Yu1cyJ27V9lGIBoeVWCxYLn5Xd4+HIPmMuiiigL/ Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10479"; a="287860686" X-IronPort-AV: E=Sophos;i="5.93,340,1654585200"; d="scan'208";a="287860686" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2022 19:19:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,340,1654585200"; d="scan'208";a="795718191" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga005.jf.intel.com with ESMTP; 23 Sep 2022 19:19:36 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 23 Sep 2022 19:19:36 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Fri, 23 Sep 2022 19:19:36 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Fri, 23 Sep 2022 19:19:36 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.109) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Fri, 23 Sep 2022 19:19:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nYrqR5OJ5u9rWwWSzTk8O2+w5rlvXqkfL2ACxOthhGRb5TBJXI7rxwhDOI+wS6pH97Vinhuqmih6RoCHbUlYd/3XxASBBf2rvnDDN1M6qzuJhzNXCof9zQzbu8/QoQREus8wtqm9G2pW9gJFRb+6oRDt59z1RT6OQk57CLTJPPg6TzYmePCJriGAWQZc2MhsoPozYrMFtz8jnJPvsoAk55MBXbh4dRh0GocUiSmGjmKD14NPTtCuXtH/OTSgKv1WxD4iotj4KEr9HFDxMQZWO/VXUPiOr2bqEDD+F/paVuRHmVO5INo9ieC8LkjdsDTJeuCbFON9Y9mRnjdLpmFPkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LizK0seL8N7WLSGtMkYeJb1FyejjqfNmcNPojmfxu6U=; b=RP54eF/UemT8V/llH2y2MkxER4JFAK4uKG9RyTaGwZKYZYlE7AdtdjS9vnCAQ+9ZIRclPgw8OMnUNf4fnTjzc6kbe0Fawctw5fuzXBA/bDXNRvUtUfxbkAJnBdM56GrMouJqL3zo9DsV61ZElvkAJkMAUbguknA8y/2csAfuwEZ+dNMhz2LVZ7o93iZremKnCDNAh7EZ/GFDqXDvwaraYXyxXgNu9Q4rbrVfv9GXy7i02dbqeVWt4WK156Jm2AAS9TM03p3sk7HU5mRJOCT3KuLDeb50Cltc7KWN2jf8wFBt7IVJT4qWFsCifcejDVWXRwxiR+exoDvUAph/qmoNfg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by SJ0PR11MB5070.namprd11.prod.outlook.com (2603:10b6:a03:2d5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.22; Sat, 24 Sep 2022 02:19:29 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ce64:b1b4:e087:4cc2]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ce64:b1b4:e087:4cc2%7]) with mapi id 15.20.5654.022; Sat, 24 Sep 2022 02:19:29 +0000 From: "Michael D Kinney" To: "Yao, Jiewen" , "Li, Yi1" , "devel@edk2.groups.io" , "Chen, Christine" , "Feng, Bob C" , "Kinney, Michael D" CC: "Wang, Jian J" , "Lu, Xiaoyu1" , "Jiang, Guomin" , "Luo, Heng" Subject: Re: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Topic: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Index: AQHYzXZUSlj4dA4GnU+byMn1X74/Xa3qEDxAgACnSgCAABuVUIAAltwAgACfoRCAAE0RAIAAJi3QgAAe2YCAAQRSAIAANplw Date: Sat, 24 Sep 2022 02:19:28 +0000 Message-ID: References: <9dcccc674996fa3fdcb8858e3609437e66ce82ac.1663735439.git.yi1.li@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|SJ0PR11MB5070:EE_ x-ms-office365-filtering-correlation-id: 71f7a640-8bc3-4ff8-c431-08da9dd335a9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2f6SMCcVr6oqw9cCl3aBARQdcmrNeNJ3M85hfF4VhiqobrLzdWL9PxwKiaAUfM2I4+YhPDtNdIA6/VUM6nHuJV8nSDqVoeZ+Gctu27TIPhd2LmwlbAlAyjDG6APaMes0C5NpftpfYlVM8cvC/SYpzGfCGWtSDpb2haJV7ixNNGLOyA+ITFowQA/nv2MIwWsXsDhYhn9mxmJnKFPcbhv35NODTR7ULcpE0eutbBee2qf0nGIVF0dSC7nWN9MqCZBLMEcciMpFoS2uGMlWx9kLFq7Ov+jtQN1qMJZ8RxWxFCQDqvFRkeC6BEuaAfLqcasHWCw0jApPD+e/J3hMk0A/LMV4RvyzdqFgpVG75Bw+zZfhBZYpM+6wr3Fzs0gPKN4YD8nUeo1r+TuzFpV/bobKYmy/EErhioj6/zmhb+fkOAWGbTvu7plG/JoFnh8rOpvNpstvFGIvQvwDfxEkRfEJCxMoAU76/5k3fxVfmYdGPjyBJO9aHe/elUIWmdJAk3SRGmbn42mPCVhEuHjurNAUZfv9afmbQ+/O9JXaNao8jVf+iILFm5bBLFfXnWSKY8fcMaD30MqXXFe8tcYeu7M9a8w3U7E6QnPhDQuEYFtocbdm8hxXrH9MjmoAoQhx58N9OGA/Yk23gGKNbo5LA6lMQYqKZc7WMjhMgTGGNwesp1Zh5J7/rpdJm2yO+Qj+takE5f3+hqzPt1Fe4VsPSLBPPtVVv3Zj6HcuXYSszufLpwqRkZTF0fc5SpEtrPSI7WqjoGEwu+7uiy85EuVWd2NOIUknmTOhRcXUPCEQQaUTCVdV6Vtf7Nec6U56OpKkpPwwgHhJeyHzRakCoEzMhykGG932FT5g9qEWx/4hLmau7cI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(376002)(136003)(346002)(366004)(396003)(39860400002)(451199015)(122000001)(52536014)(38100700002)(8936002)(83380400001)(478600001)(316002)(54906003)(110136005)(82960400001)(19627235002)(921005)(966005)(4326008)(66446008)(64756008)(66476007)(86362001)(66556008)(8676002)(55016003)(76116006)(66946007)(38070700005)(71200400001)(41300700001)(26005)(6506007)(7696005)(53546011)(186003)(107886003)(33656002)(2906002)(9686003)(5660300002)(30864003)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Mk5uTXFqQVlUUXhlMTBwT2hpKzlhRTJocFFJK0hTVHo4Q2ZyYnEzT3Z1aGRG?= =?utf-8?B?YXdwalhGY1h0S1JPc2ZBbG54Q0VOVEUzOEVBd2NvUmhlc0ZoU0kvckl3OHky?= =?utf-8?B?RUIra0s4aHFrMXc2WVhaRTlSVHNQR2dML2F0UTc1S01rSXQ3RUNVUjJjUTho?= =?utf-8?B?UkNjc0ljZlpnclh0c01hTytOUnVha24xV3RaN3NvRmpXRWpLWExCdWdyY29r?= =?utf-8?B?MEt5ejJMZEJSSmlkcm5DMHVka2g5ZmJNZCswV2Y2d0xyVmJ0MHZ6RWxQZUN5?= =?utf-8?B?QVE2T2crdEdxanZHZ1Y3ZG16QmQ2OUZGRE5JeE9Hc1pUVHpUbkp3S05tVi9J?= =?utf-8?B?VXJpM0hDTGVIMEhKOFBHdEMxTWhqc2pWazRVSDE4RW0vWjNEa1RpTVpxQUd0?= =?utf-8?B?azBmM0wzZnEvdW5TUXFROU92N0hDSFRlK0ZXM2ZRRmREZXI3ZllkdDcwNmJK?= =?utf-8?B?ZTdZR0tlZW0rQWFJYXVhQkR1R1JUcGFxSmRZYWhhNVR4bWdNdGtQRGlyZlg0?= =?utf-8?B?cUYvb0NyNXhBOXBXN20wb250YVpwakJMUGQ3SGx4V2pCcHRkYTI2bjBiMW1j?= =?utf-8?B?Y0c5amIzYTJOQnUvNXpGY0lBckZScUtWK0hGWlpKZHhHdkZaa2xsTU9Hejd3?= =?utf-8?B?aWRIUVJhRUpyZDBuaDRqUnNPdkFraG1SbmNvcFFscFUrdzY5endmc2hKRm9G?= =?utf-8?B?Z1dIQy9rQ01wRGNodVZUWkhKN05TNWtvQnZoaWhsUmxiRExHMlBITW51N3Bq?= =?utf-8?B?VHFqTDM1M0IxM2NDVjV0TmFMelQrYnBoNUpoaHNJOUVSWnA5SzJKc0Y0QnRv?= =?utf-8?B?bjJxb2FiaXBvMzJSdDlhUERTaVFFdkNWYkxsQjJtcXd3TWxMV29ET1RDTTRM?= =?utf-8?B?d2pEdWEwWWpkNlFNY3k3bjdDWGN1WHd6cHE5UnJ2c0FFblpwZjc4RGN6V2VF?= =?utf-8?B?ZVdwNW1ySzRSZnBqZ0UxRFBycVRzOERISDhab0NGVldZWHhUZEFkbFc1bjRp?= =?utf-8?B?UlZNcStkSFZZYVp4REpublk4bnBvVVVYdHYvd0RJMmFhelN6MTBReHpNNm91?= =?utf-8?B?UHVsMWNGalowZzNQSEZXamJtUzk3NU1STzZMUVpyTlZlekhBTkU0LzAvWVVZ?= =?utf-8?B?MWIxeDl4N2NjamVEZ09MdWRkd0c5NzArVlQ0WUpBYk9LOXpMNkdqQUtFMEZ6?= =?utf-8?B?enZnZld0VDdFR085SmJUTTRVa1BnS1JEWldRVHJUWERETHhjK1BraFYySis1?= =?utf-8?B?aFdaRGs4VHJ4WUY5UVU3cXpwTllDRlY4S0FaMnlxb2N2eXBIUk41WjNyRHNw?= =?utf-8?B?TlBmb1VKb3RRYjl2MDZsK2F3YnVFeHZmUFYwdVdMTVdLOGI5NnVpalZhNnRo?= =?utf-8?B?UlFnOWl2d2FTdTRMNWw1bVY1L280VUNZRUM5V0pIT0lxVm5GM3VSVGUzdVcx?= =?utf-8?B?M3pVTDdxSmc3bTgzWnpKUUhVai9YcklJUU5NNmNJRk5kT29Dc2cwZld6UGZX?= =?utf-8?B?T1Z5enZtdWV4T01HcUxOVGs2TUEvSlRHSXF1Uk1ZbDArRis0K1I3TjFRS2VH?= =?utf-8?B?eSs3TFgvVzNuN2NrOVpwb1dHNUt6TU5DV3R1Q2VlbVFUZi9Ld0dsT2VWK2Nv?= =?utf-8?B?U3YybG1BaXJFUk1NYjRkeG55OU9qNjA2RXBBaE5NZS92NGUrNnY3THV5TEdx?= =?utf-8?B?NVoxWXM3SS9NRlBKeWp5NVc3b2wyZzB4dWN4N3o4MkxtL0l3elJkMkpMc2lU?= =?utf-8?B?ayt6RUprWENqYW1iMUdUOHB5UlRzVUxONCtHa1pPNytMYjdOMzVEOWtmUkUz?= =?utf-8?B?ZVA4QS80cUJlVzJJYWtodEVhUi9lbUxyUWpSbFk3T1R5RWRlSlBSNWx2c1do?= =?utf-8?B?NytjV2NwdXhQNlBBV1R3aTdLaDZiUVlRWmtIM1hSRis2YkQxajl1Z3VHZDVp?= =?utf-8?B?V1VPWU9zOGRGUVlxcXkvOCtuY1hadEc3NzA2SStjRXFSN2JyaXpvakg4RnZI?= =?utf-8?B?bFBFUUMwSHFoZmZVcUx1NU5sOUJOMmF2VHNBTHMrb2JmUHlZelpoWDVBeXJn?= =?utf-8?B?b2FnR1d6L1hOUXdOQkJOQVRhU1BKSWk1WWRBSjc4YkxhcGlxcXdNRCs3YU9N?= =?utf-8?B?OThmallxNGFDSWg2R0FQekxMODJHcE5LaFJPOWVQUXlQWTYxSDJlNXNDay9m?= =?utf-8?B?TkE9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71f7a640-8bc3-4ff8-c431-08da9dd335a9 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Sep 2022 02:19:28.9856 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 7i014n0P0tobC+jyQAk1Bu+DXUPT73USzWyewaVB2U0jz+FWskJGdzv4z9IF6LvtrLucf24pp7Bl3Sgk7Lk3Ge30PF+8qZj0Htkbimo2Md8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5070 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgSmlld2VuLA0KDQpNeSBmZWVkYmFjayBvbiB0aGlzIHRvcGljIGJhY2sgb24gNC8xOC8yMiB3 YXMgbmV2ZXIgYWRkcmVzc2VkIGFuZCB0aGlzIFBDRCB3YXMgYWRkZWQgYW55d2F5cy4NCg0KICAg IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzg5MDE5DQoNCk15IG1haW4g Y29uY2VybiBhdCB0aGlzIHBvaW50IGlzIGhvdyBhIHBsYXRmb3JtIGRldmVsb3BlciBrbm93cyBo b3cgdG8gY29uZmlndXJlIHRoZXNlIFBDRHMuDQoNCldoZW4gc2hvdWxkIFBjZE9wZW5zc2xFY0Vu YWJsZWQgYmUgc2V0IHRvIFRSVUU/ICBUaGUgbmFtZSBvZiB0aGUgUENEIGltcGxpZXMgdGhhdCBF QyBzZXJ2aWNlcw0KYXJlIGF2YWlsYWJsZSwgYnV0IHRoYXQgaXMgbm90IGFjdHVhbGx5IHRydWUu ICBJdCBvbmx5IGNvbXBpbGVzIHRoZSBFQyBzb3VyY2UgZmlsZXMgaW50bw0KdGhlIG9wZW5zc2wg bGliLg0KDQpJIHRoaW5rIGEgZGV2ZWxvcGVyIGhhcyB0byBlbmFibGUgb3RoZXIgZmVhdHVyZXMg aW4gb3JkZXIgdG8gYWN0dWFsbHkgbWFrZSB1c2Ugb2YgdGhlIA0KY29udGVudCBwcm92aWRlZCBi eSB0aG9zZSBzb3VyY2UgZmlsZXMuICBDb3JyZWN0Pw0KDQpUaGUgb3RoZXIgSU5GIHRoYXQgYWRk cyB0aGUgU1NMIGZpbGVzIGhhcyB0aGUgc2FtZSBpc3N1ZS4gIEhvdyBkb2VzIGEgZGV2ZWxvcGVy IGtub3cgd2hlbg0KdG8gdXNlIHRoZSBJTkYgd2l0aCB0aGUgU1NMIGZpbGVzIG9yIG5vdC4gIEFu ZCB3aGF0IGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZCBpbiBvcmRlciB0byB1c2UNCnRoZSBj b250ZW50IGFkZGVkIGJ5IHRob3NlIFNTTCBmaWxlcy4gIA0KDQpXZSBoYXZlIGEgbnVtYmVyIG9m IHNlcnZpY2VzIGluIHRoZSBCYXNlQ3J5cHRMaWIgdGhhdCBjYW4gYmUgZW5hYmxlZCBhbmQgZGlz YWJsZWQgdXNpbmcNCnRoZSBzdHJ1Y3R1cmVkIFBDRCBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1 aWQuUGNkQ3J5cHRvU2VydmljZUZhbWlseUVuYWJsZS4NCg0KQ2FuIHNvbWVvbmUgcHJvdmlkZSBh IHRhYmxlIHRoYXQgc2hvd3MgZWFjaCBzZXJ2aWNlIGZyb20gZ0VmaUNyeXB0b1BrZ1Rva2VuU3Bh Y2VHdWlkLlBjZENyeXB0b1NlcnZpY2VGYW1pbHlFbmFibGUNCmFuZCBpZiB0aGUgc2VydmljZSBp cyBpbXBhY3RlZCBieSB0aGUgaW5jbHVzaW9uIG9mIHRoZSBzc2wgc291cmNlcyBhbmQvb3IgdGhl IGVjIHNvdXJjZXMuICBJZiB0aGVyZSBpcyBhbiBpbXBhY3QsDQp0aGVuIGRlc2NyaWJlIHRoZSBk aWZmZXJlbmNlIGluIHRoZSBiZWhhdmlvciBmb3IgZWFjaCBvZiB0aGUgNCBjb21iaW5hdGlvbnMg b2Ygc3NsIGFuZCBlYyBzb3VyY2VzDQoNCkV4YW1wbGU6DQoNCmdFZmlDcnlwdG9Qa2dUb2tlblNw YWNlR3VpZC5QY2RDcnlwdG9TZXJ2aWNlRmFtaWx5RW5hYmxlICAgU1NMICAgIEVDICAgIERlc2Ny aXB0aW9uDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSAgPT09PT0gID09PT09ICA9PT09PT09PT09PQ0KU2hhMjU2LlNlcnZpY2VzLkluaXQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFICBGQUxTRQ0KU2hhMjU2 LlNlcnZpY2VzLkluaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF ICAgVFJVRQ0KU2hhMjU2LlNlcnZpY2VzLkluaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUUlVFICBGQUxTRQ0KU2hhMjU2LlNlcnZpY2VzLkluaXQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFICAgVFJVRQ0KDQpJZiB0aGVyZSBpcyBhIHNo b3J0ZXIgd2F5IHRvIGRlc2NyaWJlIHRoZSBpbXBhY3QgYXQgdGhlIGZhbWlseSBsZXZlbCBvciBn cm91cHMgb2YgZmFtaWxpZXMsIHRoZW4gDQp0aGF0IHdvdWxkIGJlIGFjY2VwdGFibGUgYXMgd2Vs bC4NCg0KSSB3b3VsZCBwcmVmZXIgdGhlIHNzbCBhbmQgZWMgc291cmNlcyBmcm9tIG9wZW5zc2wg YmUgYWRkZWQvcmVtb3ZlZCBiYXNlZCBvbiBzZXR0aW5ncw0KaW4gdGhlIGdFZmlDcnlwdG9Qa2dU b2tlblNwYWNlR3VpZC5QY2RDcnlwdG9TZXJ2aWNlRmFtaWx5RW5hYmxlLiAgSG93ZXZlciwgdGhl IGZlYXR1cmUNCmZsYWcgZXhwcmVzc2lvbnMgc3VwcG9ydGVkIGluIElORiBmaWxlcyB0b2RheSBk byBub3Qgc3VwcG9ydCB1c2Ugb2YgZmllbGRzIGZyb20NCnN0cnVjdHVyZWQgUENEcy4gIFRoaXMg bmVlZHMgdG8gYmUgZGlzY3VzcyB3aXRoIHRoZSBCYXNlVG9vbHMgb3duZXJzIHRvIHNlZSBpZiB0 aGlzDQp3b3VsZCBiZSBkaWZmaWN1bHQgdG8gc3VwcG9ydCBvciBub3QuDQoNClRoYW5rcywNCg0K TWlrZQ0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWWFvLCBKaWV3 ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiBTZW50OiBGcmlkYXksIFNlcHRlbWJlciAyMywg MjAyMiAzOjQwIFBNDQo+IFRvOiBMaSwgWWkxIDx5aTEubGlAaW50ZWwuY29tPjsgS2lubmV5LCBN aWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMu aW87IENoZW4sIENocmlzdGluZQ0KPiA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+OyBGZW5nLCBCb2Ig QyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+DQo+IENjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5n QGludGVsLmNvbT47IEx1LCBYaWFveXUxIDx4aWFveXUxLmx1QGludGVsLmNvbT47IEppYW5nLCBH dW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+OyBMdW8sDQo+IEhlbmcgPGhlbmcubHVvQGlu dGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlw dG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQo+IA0KPiBIaSBNaWtlDQo+IFRoaXMgaGFzIGJlZW4gaW52 ZXN0aWdhdGVkIGJlZm9yZSwgYnV0IHdlIGRvbuKAmXQgaGF2ZSBiZXR0ZXIgc29sdXRpb24gdGhh biBQY2RPcGVuc3NsRWNFbmFibGVkLg0KPiANCj4gR2l2ZW4gdGhlIGZhY3QgdGhhdCB0aGlzIFBD RCBpcyBpbnRyb2R1Y2VkIGJlZm9yZSAobm90IGluIHRoaXMgcGF0Y2ggc2V0KSwgZG8geW91IHRo aW5rIHdlIGNhbiBtZXJnZSB0aGlzIGZpcnN0LCB0aGVuIGRvDQo+IGVuaGFuY2VtZW50IGZvciBQ Q0QgcmVsYXRlZCBzdHVmZiBsYXRlcj8NCj4gDQo+IE9yIGlmIHlvdSBoYXZlIGFueSBvdGhlciBp ZGVhLCBwbGVhc2UgbGV0IHVzIGtub3cuDQo+IA0KPiBUaGFuayB5b3UNCj4gWWFvIEppZXdlbg0K PiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IExpLCBZaTEgPHlp MS5saUBpbnRlbC5jb20+DQo+ID4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMjMsIDIwMjIgMzow OSBQTQ0KPiA+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+Ow0KPiA+IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBDaGVuLCBDaHJpc3RpbmUgPHl1d2VpLmNo ZW5AaW50ZWwuY29tPjsgRmVuZywgQm9iDQo+ID4gQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+DQo+ ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0K PiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRl bC5jb20+OyBKaWFuZywNCj4gPiBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+OyBMdW8s IEhlbmcgPGhlbmcubHVvQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxd IFtQQVRDSCBWMiAxLzNdIENyeXB0b1BrZzogQWRkIEVDIHN1cHBvcnQNCj4gPg0KPiA+IEhpIE1p a2UsDQo+ID4NCj4gPiBJIGRpZCBtYWtlIHNvbWUgYXR0ZW1wdHMgd2l0aCBpdCwgYnV0IGl0IGRv ZXNuJ3Qgd29yaywgdHdvIHRyb3VibGVzIGhlcmU6DQo+ID4NCj4gPiBCb2IgYW5kIFl1d2VpLCBw bGVhc2UgcG9pbnQgb3V0IGlmIEknbSB3cm9uZzoNCj4gPiAxLiBVc2luZyBtZW1iZXIgb2Ygc3Ry dWN0dXJlIFBDRCBpbiBJTkYgaXNu4oCZdCBzdXBwb3J0ZWQgYnkgQmFzZXRvb2xzDQo+ID4gY3Vy cmVudGx5LA0KPiA+IEF0IGxlYXN0IGl0IGNhbm5vdCBiZSB1c2VkIGFzIEZlYXR1cmVGbGFnIEV4 cHJlc3Npb24uDQo+ID4NCj4gPiAyLiBBcyBmYXIgYXMgSSBrbm93LCBzdHJ1Y3R1cmUgUENEIGFj dHVhbGx5IGlzIGEgY29uc3QgYXJyYXkgaW4gY29kZSwNCj4gPiBJIGFmcmFpZCBpdCB3aWxsIG5v dCB3b3JrIGZpbmUgd2l0aCBwcmVjb21waWxlIGJ1dCB3ZSBkbyBoYXZlIHRoaXMgbmVlZDoNCj4g PiAjaWYgIUZpeGVkUGNkR2V0Qm9vbCAoUGNkT3BlbnNzbEVjRW5hYmxlZCkNCj4gPiAjIGlmbmRl ZiBPUEVOU1NMX05PX0VDDQo+ID4gIyAgZGVmaW5lIE9QRU5TU0xfTk9fRUMNCj4gPiAjIGVuZGlm DQo+ID4gI2VuZGlmDQo+ID4NCj4gPiBUaGlzIGlzIHJlYWxseSBjYXVzZWQgYnkgdGhlIGJhZCBz dHJ1Y3R1cmUgb2Ygb3BlbnNzbCwNCj4gPiBtYXliZSB3ZSB1c2UgbW9yZSBkZXRhaWxlZCBjb21t ZW50cyB0byByZW1pbmQgZGV2ZWxvcGVycyB0byBzeW5jIHRoZQ0KPiA+IHR3byBQQ0RzPw0KPiA+ DQo+ID4gVGhhbmtzLA0KPiA+IFlpDQo+ID4NCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4NCj4gPiBTZW50OiBGcmlkYXksIFNlcHRlbWJlciAyMywgMjAyMiAxOjI1IFBNDQo+ID4gVG86 IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgQ2hlbiwg Q2hyaXN0aW5lDQo+ID4gPHl1d2VpLmNoZW5AaW50ZWwuY29tPjsgRmVuZywgQm9iIEMgPGJvYi5j LmZlbmdAaW50ZWwuY29tPjsgS2lubmV5LA0KPiA+IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+DQo+ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47 IFdhbmcsIEppYW4gSg0KPiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MSA8 eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywNCj4gPiBHdW9taW4gPGd1b21pbi5qaWFuZ0Bp bnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8zXSBD cnlwdG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQo+ID4NCj4gPiBIaSBZaSwNCj4gPg0KPiA+IEkgYWdy ZWUgdGhlcmUgYXJlIHNvbWUgY29tcGxleCBpbnRlcmFjdGlvbnMgaW4gdGhlIG9wZW5zbGwgc291 cmNlcy4NCj4gPg0KPiA+IFNpbmNlIHlvdSBhcmUgZGVmaW5pbmcgYSBmYW1pbHkgZm9yIEVDLCBj YW4gd2UgdXNlIHRoZSBFQyBGYW1pbHkgIT0gMCBpbnN0ZWFkDQo+ID4gb2YNCj4gPiBQY2RPcGVu c3NsRWNFbmFibGVkIGFuZCByZW1vdmUgUGNkT3BlbnNzbEVjRW5hYmxlZC4NCj4gPg0KPiA+IEkg d2FudCB0byBtYWtlIHN1cmUgZGV2ZWxvcGVycyBkbyBub3QgcnVuIGludG8gc3RyYW5nZSBidWls ZCBmYWlsdXJlcyBpZg0KPiA+IHRoZXkgZG8gbm90IGtlZXAgdGhlIDIgZGlmZmVyZW50IFBDRHMg YWxpZ25lZC4gIEkgcHJlZmVyIGEgc2luZ2xlIFBDRA0KPiA+IHNldHRpbmcgdG8gZW5hYmxlIHVz ZSBvZiBFQyBzZXJ2aWNlcy4NCj4gPg0KPiA+IEkgYWxzbyBub3RpY2VkIHRoYXQgdGhlIHVzZSBv ZiBhIFBDRCBleHByZXNzaW9uIGluIGFuIElORiB0byBzZWxlY3Qgc291cmNlDQo+ID4gZmlsZXMg ZG9lcyBub3Qgd29yayBpZiB0aGUgUENEIHZhbHVlIGlzIHNwZWNpZmllZCB3aXRoIHRoZSAtLXBj ZCBmbGFnIG9uDQo+ID4gdGhlIGJ1aWxkIGNvbW1hbmQgbGluZS4gIFRoaXMgbG9va3MgbGlrZSBh IHNpZ25pZmljYW50IGJ1ZyB3aXRoIHRoZSBQQ0QNCj4gPiBleHByZXNzaW9uIGluIGFuIElORiBm aWxlLiAgVGhpcyBhbHNvIG5lZWRzIHRvIGJlIGZpeGVkLg0KPiA+DQo+ID4gTWlrZQ0KPiA+DQo+ ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogTGksIFlpMSA8eWkx LmxpQGludGVsLmNvbT4NCj4gPiA+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjIsIDIwMjIg ODowMiBQTQ0KPiA+ID4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbT47DQo+ID4gZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+IENjOiBZYW8sIEppZXdl biA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEoNCj4gPiA8amlhbi5qLndhbmdA aW50ZWwuY29tPjsgTHUsIFhpYW95dTEgPHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsDQo+ ID4gPiBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0OiBSRTog W2VkazItZGV2ZWxdIFtQQVRDSCBWMiAxLzNdIENyeXB0b1BrZzogQWRkIEVDIHN1cHBvcnQNCj4g PiA+DQo+ID4gPiBIaSBNaWtlLA0KPiA+ID4NCj4gPiA+IDEuIFllcywgaXQgbWF0Y2hlcy4NCj4g PiA+IEJ5IEludGVsIHNpZGUsIDEwMCtrYigyMCUrKSBGViBzaXplIGluY3JlYXNlIHdpbGwgYmUg YSBiaWcgY29uY2VybiwgcGxlYXNlDQo+ID4gcmVmZXIgdG8gYW5vdGhlciBpbnRlcm5hbCBlbWFp bC4NCj4gPiA+DQo+ID4gPiAyLiBBZGRpdGlvbmFsIHNpemUgaXMgY29taW5nIGZyb20gbW9kdWxl cyBtYXkgY29uc3VtZWQgRUMgQVBJcywgZWcuIFRMUw0KPiA+IFBFTSBYNTA5ICAuLi4NCj4gPiA+ DQo+ID4gPiBJZiB3ZSBhZGRlZCBFQyBzb3VyY2UgdG8gT3BlbnNzbExpYi5pbmYgYW5kIGRpc2Fi bGVkIG1hY3JvDQo+ID4gT1BFTlNTTF9OT19FQywgdGhvc2UgbW9kdWxlcyB3aWxsIGxpbmsgRUMg QVBJcyBhbmQgaW5jcmVhc2UgYmluYXJ5DQo+ID4gPiBzaXplLA0KPiA+ID4gVGhpcyBhbiBleGFt cGxlIGZyb20geDUwOS94X3B1YmtleS5jICwgb3RoZXIgbW9kdWxlcyBpcyBzaW1pbGFyOg0KPiA+ ID4gI2lmbmRlZiBPUEVOU1NMX05PX0VDDQo+ID4gPiBFQ19LRVkgKmQyaV9FQ19QVUJLRVkoRUNf S0VZICoqYSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBwLCBsb25nDQo+ID4gbGVuZ3RoKQ0KPiA+ ID4gew0KPiA+ID4gICAgIEVWUF9QS0VZICpwa2V5Ow0KPiA+ID4gICAgIEVDX0tFWSAqa2V5ID0g TlVMTDsNCj4gPiA+ICAgICAvLy4uLi4gY2FsbCBFQyBmdW5jdGlvbnMNCj4gPiA+IH0NCj4gPiA+ ICNlbmRpZg0KPiA+ID4NCj4gPiA+IElmIHdlIGFkZGVkIEVDIHNvdXJjZSB0byBPcGVuc3NsTGli LmluZiBhbmQgZW5hYmxlIG1hY3JvDQo+ID4gT1BFTlNTTF9OT19FQywgRUMgbW9kdWxlIHdpbGwg dGhyb3cgYnVpbGQgZXJyb3IsDQo+ID4gPiBTaW5jZSBzb21lIEVDIGludGVybmFsIEFQSXMgb3Ig c3RydWN0cyBoYXZlIGJlZW4gZGlzYWJsZWQgYnkNCj4gPiBPUEVOU1NMX05PX0VDIGJ1dCAgbm90 IGFub3RoZXIuDQo+ID4gPiBUaGlzIGFuIGV4YW1wbGUgZnJvbSBlYy9lY19sb2NhbC5oICwgb3Ro ZXIgZXJyb3IgaXMgc2ltaWxhcjoNCj4gPiA+DQo+ID4gPiAjaWZuZGVmIE9QRU5TU0xfTk9fRUMN Cj4gPiA+IHR5cGVkZWYgc3RydWN0IGVjX2dyb3VwX3N0IEVDX0dST1VQOw0KPiA+ID4gdHlwZWRl ZiBzdHJ1Y3QgZWNfcG9pbnRfc3QgRUNfUE9JTlQ7DQo+ID4gPiAjZW5kaWYNCj4gPiA+DQo+ID4g PiAvLyBidXQgdGhpcyBmdW5jdGlvbiBub3QgYmVlbiBlbmNsb3NlZCBieSBPUEVOU1NMX05PX0VD LCBhbmQgd2lsbA0KPiA+IHRocm93IGJ1aWxkIGVycm9yDQo+ID4gPiAgICAgaW50ICgqcG9pbnRf c2V0X0pwcm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcCkgKGNvbnN0IEVDX0dST1VQICosDQo+ID4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDX1BP SU5UICosIGNvbnN0IEJJR05VTSAqeCwNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICp5LA0KPiA+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCSUdOVU0gKnos IEJOX0NUWCAqKTsNCj4gPiA+DQo+ID4gPiBUbyBhdm9pZCB0aGlzIGFubm95aW5nIG9wZW5zc2wg ZXJyb3IsIHdlIGludHJvZHVjZWQgY29uZGl0aW9uYWwgRUMuDQo+ID4gPg0KPiA+ID4gVGhhbmtz LA0KPiA+ID4gWWkNCj4gPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ ID4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0K PiA+ID4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMjMsIDIwMjIgNjo0NyBBTQ0KPiA+ID4gVG86 IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS2lubmV5 LCBNaWNoYWVsIEQNCj4gPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiBDYzog WWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKDQo+ID4gPGpp YW4uai53YW5nQGludGVsLmNvbT47IEx1LCBYaWFveXUxIDx4aWFveXUxLmx1QGludGVsLmNvbT47 IEppYW5nLA0KPiA+ID4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ID4gU3Vi amVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBz dXBwb3J0DQo+ID4gPg0KPiA+ID4gSGkgWWksDQo+ID4gPg0KPiA+ID4gSSBhZ3JlZSBFQyBpcyBh biBpbXBvcnRhbnQgZmVhdHVyZS4NCj4gPiA+DQo+ID4gPiBJIGRpZCBzb21lIGFuYWx5c2lzIG9m IHRoZSBzaXplIGltcGFjdCB0byB0aGUgQ3J5cHRvUGtnIG1vZHVsZXMgb24NCj4gPiBjdXJyZW50 IHRydW5rDQo+ID4gPiB3aXRoIEVDIG9uIGFuZCBvZmYuIFVuY29tcHJlc3NlZCBzaXplIGlzIGlt cG9ydGFudCBmb3IgUEVJIFBoYXNlLiAgRm9yDQo+ID4gRFhFIGFuZA0KPiA+ID4gU01NIHBoYXNl LCB0aGUgQ3J5cHRvIHNlcnZpY2VzIGNhbiBhbHdheXMgYmUgY29tcHJlc3NlZC4gIEZyb20gdGhl DQo+ID4gdGFibGUgYmVsb3csDQo+ID4gPiBidWlsZGluZyBhbGwgdGhlIEVDIHNlcnZpY2VzIGlu IHRoZSBPcGVuc3NsTGliIGhhcyBubyBzaXplIGltcGFjdCB0byB0aGUNCj4gPiBOT05FDQo+ID4g PiBwcm9maWxlIGFuZCB0aGUgTUlOX1BFSSBwcm9maWxlLiAgSXQgaGFzIH4xMDUgS0IgaW1wYWN0 IHRvIGNvbXByZXNzZWQNCj4gPiBEWEUvU01NDQo+ID4gPiB1c2FnZXMgdGhhdCBtYXkgdXNlIHRo ZSBNSU5fRFhFX01JTl9TTU0gb3IgQUxMIHByb2ZpbGVzLg0KPiA+ID4NCj4gPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5jb21wcmVzc2VkICAgICAgTFpNQSBDb21wcmVz c2VkDQo+ID4gPiBDUFUgICBDUllQVE9fU0VSVklDRVMgICAgTW9kdWxlICBFQz1GQUxTRSAgRUM9 VFJVRSAgRUM9RkFMU0UNCj4gPiBFQz1UUlVFICBJbmNyZWFzZQ0KPiA+ID4gPT09PSAgPT09PT09 PT09PT09PT09ICA9PT09PT09PSAgPT09PT09PT0gID09PT09PT0gID09PT09PT09DQo+ID4gPT09 PT09PSAgPT09PT09PT0NCj4gPiA+IElBMzIgIE5PTkUgICAgICAgICAgICAgQ3J5cHRvUGVpICAg IDIxNTM2ICAgIDIxNTY4ICAgICAgICAgICAgICAgICAgICAgICAgIDAgS0INCj4gPiA+IElBMzIg IE5PTkUgICAgICAgICAgICAgQ3J5cHRvRHhlICAgIDIxNjMyICAgIDIxNjk2ICAgICAgICAgICAg ICAgICAgICAgICAgIDAgS0INCj4gPiA+IElBMzIgIE5PTkUgICAgICAgICAgICAgQ3J5cHRvU21t ICAgIDIyOTc2ICAgIDIzMDcyICAgICAgICAgICAgICAgICAgICAgICAgIDAgS0INCj4gPiA+IElB MzIgIE1JTl9QRUkgICAgICAgICAgQ3J5cHRvUGVpICAgMjQ4OTkyICAgMjQ5MTIwICAgICAgICAg ICAgICAgICAgICAgICAgIDAgS0INCj4gPiA+IElBMzIgIE1JTl9EWEVfTUlOX1NNTSAgQ3J5cHRv RHhlICAgNjM2NjcyICAgODI5NTY4ICAgIDI4ODUyMA0KPiA+IDQwMTAzNCAgICAxMTMgS0INCj4g PiA+IElBMzIgIE1JTl9EWEVfTUlOX1NNTSAgQ3J5cHRvU21tICAgNDI2MDQ4ICAgNjAxNDcyICAg IDE5MTUxNw0KPiA+IDI5NjAyMiAgICAxMDUgS0INCj4gPiA+IElBMzIgIEFMTCAgICAgICAgICAg ICAgQ3J5cHRvUGVpICAgNDIzODQwICAgNTk4OTc2ICAgIDE4OTA0NyAgIDI5Mzc1OSAgICAxMDQN Cj4gPiBLQg0KPiA+ID4gSUEzMiAgQUxMICAgICAgICAgICAgICBDcnlwdG9EeGUgICA2NDUyODAg ICA4MzgxNDQgICAgMjkyOTU1ICAgNDA1Mjc3ICAgIDExMw0KPiA+IEtCDQo+ID4gPiBJQTMyICBB TEwgICAgICAgICAgICAgIENyeXB0b1NtbSAgIDQ0MTg4OCAgIDYxNzE4NCAgICAxOTg3NzkgICAz MDM2MjggICAgMTA1DQo+ID4gS0INCj4gPiA+IFg2NCAgIE5PTkUgICAgICAgICAgICAgQ3J5cHRv UGVpICAgIDI5NjMyICAgIDI5NjY0ICAgICAgICAgICAgICAgICAgICAgICAgIDAgS0INCj4gPiA+ IFg2NCAgIE5PTkUgICAgICAgICAgICAgQ3J5cHRvRHhlICAgIDI5NzkyICAgIDI5NzkyICAgICAg ICAgICAgICAgICAgICAgICAgIDAgS0INCj4gPiA+IFg2NCAgIE5PTkUgICAgICAgICAgICAgQ3J5 cHRvU21tICAgIDMxMjk2ICAgIDMxMjk2ICAgICAgICAgICAgICAgICAgICAgICAgIDAgS0INCj4g PiA+IFg2NCAgIE1JTl9QRUkgICAgICAgICAgQ3J5cHRvUGVpICAgMzEwNzg0ICAgMzEwODQ4ICAg ICAgICAgICAgICAgICAgICAgICAgIDAgS0INCj4gPiA+IFg2NCAgIE1JTl9EWEVfTUlOX1NNTSAg Q3J5cHRvRHhlICAgODA0Mjg4ICAxMDE2MjU2ICAgIDMxMTQzNg0KPiA+IDQyNjU5NiAgICAxMTUg S0INCj4gPiA+IFg2NCAgIE1JTl9EWEVfTUlOX1NNTSAgQ3J5cHRvU21tICAgNTQzNzc2ICAgNzMz OTIwICAgIDIwNDQ4Mw0KPiA+IDMxMDc3NSAgICAxMDYgS0INCj4gPiA+IFg2NCAgIEFMTCAgICAg ICAgICAgICAgQ3J5cHRvUGVpICAgNTQwMzg0ICAgNzMwMjQwICAgIDIwMjQ5NCAgIDMwODQ2NyAg ICAxMDYNCj4gPiBLQg0KPiA+ID4gWDY0ICAgQUxMICAgICAgICAgICAgICBDcnlwdG9EeGUgICA4 MTUzOTIgIDEwMjcyOTYgICAgMzE2MjI4ICAgNDMxMzIxICAgIDExNQ0KPiA+IEtCDQo+ID4gPiBY NjQgICBBTEwgICAgICAgICAgICAgIENyeXB0b1NtbSAgIDU2MzY0OCAgIDc1MzY5NiAgICAyMTM0 ODggICAzMTk2NDQgICAgMTA2DQo+ID4gS0INCj4gPiA+DQo+ID4gPiBOT1RFOiBFdmVuIGlmIG11 bHRpcGxlIG1vZHVsZXMgaW4gYW4gRlYgdXNlIHN0YXRpYyBsaW5raW5nIG9mIENyeXB0byBsaWJz LCBpZg0KPiA+IHRoZQ0KPiA+ID4gICAgICAgZW50aXJlIEZWIGlzIGNvbXByZXNzZWQsIHRoZSB0 b3RhbCBzaXplIGltcGFjdCBpcyB0eXBpY2FsbHkgdGhlIHNpemUgb2YgYQ0KPiA+ID4gICAgICAg c2luZ2xlIGluc3RhbmNlIG9mIGEgY29tcHJlc3NlZCBDcnlwdG9MaWIuICBUaGUgc2l6ZXMgb2Yg dGhlIENyeXB0byoNCj4gPiBtb2R1bGVzDQo+ID4gPiAgICAgICBpbiB0aGUgdGFibGUgYWJvdmUg c2hvdWxkIGJlIGEgY2xvc2UgYXBwcm94aW1hdGlvbiBvZiB0aGUgc2l6ZSBpbXBhY3QNCj4gPiB0 byBhDQo+ID4gPiAgICAgICBzaW5nbGUgRlYuDQo+ID4gPg0KPiA+ID4gRG9lcyB0aGlzIG1hdGNo IHlvdXIgcHJldmlvdXMgc2l6ZSBhbmFseXNpcz8NCj4gPiA+DQo+ID4gPiBUaGUgY3JpdGljYWwg aXNzdWUgdG8gZXZhbHVhdGUgaGVyZSBpcyB3aHkgYWRkaW5nIHRoZSBFQyBzb3VyY2VzIHRvDQo+ ID4gT3BlbnNsbExpYi5pbmYNCj4gPiA+IGNhdXNlcyB0aGUgbW9kdWxlcyB0aGF0IGRvIG5vdCB1 c2UgYW55IEVDIHNlcnZpY2VzIHRvIGdyb3cgYnkgfjEwNUtCLg0KPiA+IEhhcyBhbnkNCj4gPiA+ IGRldGFpbGVkIGFuYWx5c2lzIG9mIHRoZSBmaW5hbCBsaW5rZWQgaW1hZ2VzIGJlZW4gcGVyZm9y bWVkIHRvIHNlZSB3aGVyZQ0KPiA+IHRoaXMNCj4gPiA+IGFkZGl0aW9uYWwgc2l6ZSBpcyBjb21p bmcgZnJvbT8NCj4gPiA+DQo+ID4gPiBUaGFua3MsDQo+ID4gPg0KPiA+ID4gTWlrZQ0KPiA+ID4N Cj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogTGksIFlp MSA8eWkxLmxpQGludGVsLmNvbT4NCj4gPiA+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAy MiwgMjAyMiA1OjU0IEFNDQo+ID4gPiA+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5k Lmtpbm5leUBpbnRlbC5jb20+Ow0KPiA+IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaXNob3JlLCBT aGVsbHkgPHNoZWxseS5raXNob3JlQGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA+IDxqaWFuLmoud2FuZ0Bp bnRlbC5jb20+OyBMdSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywNCj4g PiA+ID4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ID4gPiBTdWJqZWN0OiBS RTogW2VkazItZGV2ZWxdIFtQQVRDSCBWMiAxLzNdIENyeXB0b1BrZzogQWRkIEVDIHN1cHBvcnQN Cj4gPiA+ID4NCj4gPiA+ID4gSGkgTWlrZSwNCj4gPiA+ID4gSSBoYXZlIGRpZCBzb21lIFBPQyB0 aGF0IHNlZW1zIGV4aXN0ZWQgc3RydWN0dXJlZCBQQ0QgaXMgaGFyZCB0bw0KPiA+IGNvbnRyb2wg YmluYXJ5IHNpemUsDQo+ID4gPiA+IEhlcmUgaXMgdGhlIHByZXZpb3VzIGRpc2N1c3Npb24gZm9y IHJlZmVyZW5jZS4NCj4gPiA+ID4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3df YnVnLmNnaT9pZD0zNjc5DQo+ID4gPiA+IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC90 b3BpYy84NjI1NzgxMCM4MTgxNA0KPiA+ID4gPiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5v cmcvc2hvd19idWcuY2dpP2lkPTE0NDYNCj4gPiA+ID4NCj4gPiA+ID4gQW55d2F5IEVDIGlzIGFu IGltcG9ydGFudCBmZWF0dXJlIHdoaWNoIGNvbnN1bWVkIGJ5IHZhcnkgbW9kZXJuDQo+ID4gc2Vj dXJpdHkgZmVhdHVyZXMgc3VjaCBXUEEzICwgU1BETSwgVExTMS4zIGV0Yy4NCj4gPiA+ID4gSG9w ZSBpdCBjYW4gYmUgYWRkZWQgdG8gZWRrMiwgYW5kIEkgYW0gZ2xhZCB0byB0YWtlIHRoZSBjb2Rl IGFuZCB0ZXN0DQo+ID4gd29yayBpZiB0aGVyZSBhcmUgb3RoZXIgd2F5cyB0byBjb250cm9sIHRo ZSBzaXplLg0KPiA+ID4gPg0KPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+IFlpDQo+ID4gPiA+DQo+ ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IEtpbm5leSwg TWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+ID4gU2VudDogVGh1 cnNkYXksIFNlcHRlbWJlciAyMiwgMjAyMiAxMTo1NiBBTQ0KPiA+ID4gPiBUbzogTGksIFlpMSA8 eWkxLmxpQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaXNob3JlLCBTaGVsbHkN Cj4gPiA8c2hlbGx5Lmtpc2hvcmVAaW50ZWwuY29tPg0KPiA+ID4gPiBDYzogWWFvLCBKaWV3ZW4g PGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKDQo+ID4gPGppYW4uai53YW5nQGlu dGVsLmNvbT47IEx1LCBYaWFveXUxIDx4aWFveXUxLmx1QGludGVsLmNvbT47IEppYW5nLA0KPiA+ ID4gPiBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFJF OiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3VwcG9ydA0K PiA+ID4gPg0KPiA+ID4gPiBUaGF0IGNoYW5nZSB0byBPcGVuc3NsTGliLmluZiBzaG91bGQgbm90 IGhhdmUgYmVlbiBkb25lIGVpdGhlci4NCj4gPiA+ID4NCj4gPiA+ID4gTG9va3MgbGlrZSB0aGlz IEVDIGZlYXR1cmUgbmVlZHMgbW9yZSBldmFsdWF0aW9uIHRvIGZpdCBpbnRvIHRoZQ0KPiA+ID4g PiBzdHJ1Y3R1cmVkIFBDRCBjb250cm9sIG9mIHRoZSBsaWIgc2l6ZXMuDQo+ID4gPiA+DQo+ID4g PiA+IE1pa2UNCj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+ID4gPiA+IEZyb206IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gU2Vu dDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMjEsIDIwMjIgNzoxNiBQTQ0KPiA+ID4gPiA+IFRvOiBL aW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiA+IGRldmVs QGVkazIuZ3JvdXBzLmlvDQo+ID4gPiA+ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGlu dGVsLmNvbT47IFdhbmcsIEppYW4gSg0KPiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwg WGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywNCj4gPiA+ID4gPiBHdW9taW4g PGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRl dmVsXSBbUEFUQ0ggVjIgMS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBIaSBNaWtlLA0KPiA+ID4gPiA+IFRoYW5rcyBmb3IgcmV2aWV3Lg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gRXZlbiBQQ0RfQ1JZUFRPX1NFUlZJQ0VfRkFNSUxZX0VOQUJMRSBpcyBz ZXQgdG8gMCwgQ3J5cHRvRWMuYw0KPiA+IHdpbGwgYWxzbyBiZSBjb21waWxlZCBhbmQgdGhyb3cg YnVpbGQgZXJyb3I6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+IGQ6XHdvcmtzcGFjZVx0aWFu b2NvcmVcZWRrMlxDcnlwdG9Qa2dcTGlicmFyeVxCYXNlQ3J5cHRMaWJcUGtcQ3J5cHRFYy4NCj4g PiBjKDc3KTogZXJyb3IgQzIyMjA6IHRoZSBmb2xsb3dpbmcgd2FybmluZyBpcyB0cmVhdGVkDQo+ ID4gPiA+IGFzDQo+ID4gPiA+ID4gYW4gZXJyb3INCj4gPiA+ID4gPiAgICAgICAgIDEgZmlsZShz KSBjb3BpZWQuDQo+ID4gPiA+ID4NCj4gPiBkOlx3b3Jrc3BhY2VcdGlhbm9jb3JlXGVkazJcQ3J5 cHRvUGtnXExpYnJhcnlcQmFzZUNyeXB0TGliXFBrXENyeXB0RWMuDQo+ID4gYyg3Nyk6IHdhcm5p bmcgQzQwMTM6ICdFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZScNCj4gPiA+ID4gPiB1bmRlZmlu ZWQ7IGFzc3VtaW5nIGV4dGVybiByZXR1cm5pbmcgaW50DQo+ID4gPiA+ID4NCj4gPiBkOlx3b3Jr c3BhY2VcdGlhbm9jb3JlXGVkazJcQ3J5cHRvUGtnXExpYnJhcnlcQmFzZUNyeXB0TGliXFBrXENy eXB0RWMuDQo+ID4gYyg3Nyk6IHdhcm5pbmcgQzQwNDc6ICdyZXR1cm4nOiAndm9pZCAqJyBkaWZm ZXJzIGluDQo+ID4gPiA+ID4gbGV2ZWxzIG9mIGluZGlyZWN0aW9uIGZyb20gJ2ludCcNCj4gPiA+ ID4gPg0KPiA+IGQ6XHdvcmtzcGFjZVx0aWFub2NvcmVcZWRrMlxDcnlwdG9Qa2dcTGlicmFyeVxC YXNlQ3J5cHRMaWJcUGtcQ3J5cHRFYy4NCj4gPiBjKDEwNSk6IHdhcm5pbmcgQzQwMTM6ICdFQ19H Uk9VUF9nZXRfY3VydmUnDQo+ID4gPiB1bmRlZmluZWQ7DQo+ID4gPiA+ID4gYXNzdW1pbmcgZXh0 ZXJuIHJldHVybmluZyBpbnQNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkgdGhpbmsgdGhlIHJvb3Qg Y2F1c2UgaXMgdGhhdCB3ZSBoYXZlIGVuYWJsZWQgY29uZGl0aW9uYWwgZWMgaW4NCj4gPiBPcGVu c3NsTGliLmluZiBiZWZvcmUgYnkgUGNkT3BlbnNzbEVjRW5hYmxlZCwNCj4gPiA+ID4gPg0KPiA+ ID4gPg0KPiA+ID4NCj4gPiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi8y YzE3ZDY3NmU0MDJkNzVhM2E2NzQ0OTkzNA0KPiA+IDJmN2RkYWNjZjM4N2JkL0NyeXB0b1BrZy9M aWJyYXJ5L09wZW5zc2xMaWIvT3BlbnNzbExpYi5pbmYjTDINCj4gPiA+ID4gPiAwMi1MMjM4DQo+ ID4gPiA+ID4gIGlmIFBjZE9wZW5zc2xFY0VuYWJsZWQgbm90IHRydWUsIGFsbCBlYyBmaWxlcyB3 aWxsIG5vdCBiZSBjb21waWxlZC4NCj4gPiA+ID4gPiBUaGlzIHdpbGwgc2F2ZSAyMDAra2IgbWVt b3J5IG9uIHBsYXRmb3JtcyB3aGljaCB1c2UgZHhlIGRyaXZlciBidXQNCj4gPiBkbyBub3QgbmVl ZCBlYyBmZWF0dXJlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gU28gSSBhZGQgdGhpcyBQQ0QgdG8g QmFzZUNyeXB0TGliLmluZiBhbHNvIHRvIGF2b2lkIGJ1aWxkIGVycm9yLCBOb3QNCj4gPiBzdXJl IGlmIHRoZXJlIGlzIGFueSBvdGhlciB3YXksIG90aGVyIGJldHRlciBpZGVhcw0KPiA+ID4gYXJl DQo+ID4gPiA+ID4gd2VsY29tZS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoYW5rcywNCj4gPiA+ ID4gPiBZaQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiA+ID4gPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRl bC5jb20+DQo+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyMiwgMjAyMiAxMjoy MiBBTQ0KPiA+ID4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgTGksIFlpMSA8eWkxLmxp QGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbA0KPiA+IEQgPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPg0KPiA+ID4gPiA+IENjOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+ OyBXYW5nLCBKaWFuIEoNCj4gPiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsIFhpYW95dTEg PHhpYW95dTEubHVAaW50ZWwuY29tPjsgSmlhbmcsDQo+ID4gPiA+ID4gR3VvbWluIDxndW9taW4u amlhbmdAaW50ZWwuY29tPg0KPiA+ID4gPiA+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BB VENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3VwcG9ydA0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gQ29tbWVudHMgZW1iZWRkZWQgYmVsb3cuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBNaWtlDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ ID4gPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9u IEJlaGFsZiBPZg0KPiA+IHlpMSBsaQ0KPiA+ID4gPiA+ID4gU2VudDogVHVlc2RheSwgU2VwdGVt YmVyIDIwLCAyMDIyIDk6NTUgUE0NCj4gPiA+ID4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5p bw0KPiA+ID4gPiA+ID4gQ2M6IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+OyBZYW8sIEppZXdl biA8amlld2VuLnlhb0BpbnRlbC5jb20+Ow0KPiA+IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdA aW50ZWwuY29tPjsgTHUsIFhpYW95dTENCj4gPiA+ID4gPiA+IDx4aWFveXUxLmx1QGludGVsLmNv bT47IEppYW5nLCBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiBT dWJqZWN0OiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRvUGtnOiBBZGQgRUMgc3Vw cG9ydA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFJFRjogaHR0cHM6Ly9idWd6aWxsYS50aWFu b2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zODI4DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g VGhpcyBwYXRjaCBpcyB1c2VkIHRvIGFkZCBDcnlwdEVjIGxpYnJhcnksIHdoaWNoIGlzIHdyYXBw ZWQNCj4gPiA+ID4gPiA+IG92ZXIgT3BlblNTTC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBD YzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiBDYzogSmlh biBKIFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+IENjOiBYaWFveXUg THUgPHhpYW95dTEubHVAaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gQ2M6IEd1b21pbiBKaWFuZyA8 Z3VvbWluLmppYW5nQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBTaWduZWQt b2ZmLWJ5OiBZaSBMaSA8eWkxLmxpQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+IC0tLQ0KPiA+ID4g PiA+ID4gIENyeXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUNyeXB0TGliLmggICAgICB8IDQy NCArKysrKysrKysrDQo+ID4gPiA+ID4gPiAgLi4uL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VD cnlwdExpYi5pbmYgICAgIHwgICAyICsNCj4gPiA+ID4gPiA+ICAuLi4vTGlicmFyeS9CYXNlQ3J5 cHRMaWIvUGVpQ3J5cHRMaWIuaW5mICAgICAgfCAgIDEgKw0KPiA+ID4gPiA+ID4gIENyeXB0b1Br Zy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVjLmMgICB8IDc2NQ0KPiA+ICsrKysrKysr KysrKysrKysrKw0KPiA+ID4gPiA+ID4gIC4uLi9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9Dcnlw dEVjTnVsbC5jICAgICB8IDQ5NiArKysrKysrKysrKysNCj4gPiA+ID4gPiA+ICAuLi4vTGlicmFy eS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mICAgICAgfCAgIDEgKw0KPiA+ID4gPiA+ID4g IC4uLi9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mICAgICB8ICAgMSArDQo+ ID4gPiA+ID4gPiAgLi4uL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9Qay9DcnlwdEVjTnVsbC5j IHwgNDk2ICsrKysrKysrKysrKw0KPiA+ID4gPiA+ID4gIDggZmlsZXMgY2hhbmdlZCwgMjE4NiBp bnNlcnRpb25zKCspDQo+ID4gPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IENyeXB0b1BrZy9M aWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVjLmMNCj4gPiA+ID4gPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQNCj4gPiBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFY051 bGwuYw0KPiA+ID4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IENyeXB0b1BrZy9MaWJy YXJ5L0Jhc2VDcnlwdExpYk51bGwvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi5oDQo+ID4gYi9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ID4g PiA+ID4gPiBpbmRleCBiMjUzOTIzZGQ4Li5kNzRmYzIxYzFlIDEwMDY0NA0KPiA+ID4gPiA+ID4g LS0tIGEvQ3J5cHRvUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0KPiA+ID4gPiA+ ID4gKysrIGIvQ3J5cHRvUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaA0KPiA+ID4g PiA+ID4gQEAgLTE0LDYgKzE0LDEzIEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICNpbmNsdWRlIDxVZWZpL1Vl ZmlCYXNlVHlwZS5oPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICsjZGVmaW5lIENSWVBUT19O SURfTlVMTCAgMHgwMDAwDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLy8gS2V5IEV4Y2hh bmdlDQo+ID4gPiA+ID4gPiArI2RlZmluZSBDUllQVE9fTklEX1NFQ1AyNTZSMSAgMHgwMjA0DQo+ ID4gPiA+ID4gPiArI2RlZmluZSBDUllQVE9fTklEX1NFQ1AzODRSMSAgMHgwMjA1DQo+ID4gPiA+ ID4gPiArI2RlZmluZSBDUllQVE9fTklEX1NFQ1A1MjFSMSAgMHgwMjA2DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiAgLy8vDQo+ID4gPiA+ID4gPiAgLy8vIE1ENSBkaWdlc3Qgc2l6ZSBpbiBi eXRlcw0KPiA+ID4gPiA+ID4gIC8vLw0KPiA+ID4gPiA+ID4gQEAgLTI4NTAsNCArMjg1Nyw0MjEg QEAgQmlnTnVtQWRkTW9kICgNCj4gPiA+ID4gPiA+ICAgIE9VVCBWT0lEICAgICAgICpCblJlcw0K PiA+ID4gPiA+ID4gICAgKTsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArLy8NCj4gPiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ID4gPiArLy8gICAgQmFzaWMg RWxsaXB0aWMgQ3VydmUgUHJpbWl0aXZlcw0KPiA+ID4gPiA+ID4gKy8vDQo+ID4gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8q Kg0KPiA+ID4gPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVjR3JvdXAgb2JqZWN0LiBU aGlzIG9iamVjdCByZXByZXNlbnRzIGFuIEVDDQo+ID4gY3VydmUgYW5kDQo+ID4gPiA+ID4gPiAr ICBhbmQgaXMgdXNlZCBmb3IgY2FsY3VsYXRpb24gd2l0aGluIHRoaXMgZ3JvdXAuIFRoaXMgb2Jq ZWN0IHNob3VsZCBiZQ0KPiA+IGZyZWVkDQo+ID4gPiA+ID4gPiArICB1c2luZyBFY0dyb3VwRnJl ZSgpIGZ1bmN0aW9uLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAg Q3J5cHRvTmlkICAgSWRlbnRpZnlpbmcgbnVtYmVyIGZvciB0aGUgRUNDIGN1cnZlDQo+ID4gKERl ZmluZWQgaW4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VDcnlw dExpYi5oKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRWNHcm91cCBv YmplY3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAg ICBPbiBmYWlsdXJlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1ZPSUQgKg0KPiA+ ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjR3JvdXBJbml0ICgNCj4gPiA+ID4gPiA+ ICsgIElOIFVJTlROICBDcnlwdG9OaWQNCj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZXQgRUMgY3VydmUgcGFyYW1ldGVy cy4gV2hpbGUgZWxsaXB0aWMgY3VydmUgZXF1YXRpb24gaXMgWV4yIG1vZA0KPiA+IFAgPSAoWF4z ICsgQVggKyBCKSBNb2QgUC4NCj4gPiA+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQg dGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyAgdG8gdGhlDQo+ID4gY29ycmVzcG9uZGlu Zw0KPiA+ID4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBh bGwgdGhlICJvdXQiIEJpZ051bWJlcg0KPiA+IHBhcmFtZXRlcnMNCj4gPiA+ID4gPiA+ICsgIGFy ZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBh cmFtW291dF0gQm5QcmltZSAgICBHcm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiA+ID4gPiArICBA cGFyYW1bb3V0XSBCbkEgICAgICAgIEEgY29lZmZpY2llbnQuDQo+ID4gPiA+ID4gPiArICBAcGFy YW1bb3V0XSBCbkIgICAgICAgIEIgY29lZmZpY2llbnQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1b aW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g PiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjR3JvdXBHZXRD dXJ2ZSAoDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4g PiA+ICsgIE9VVCBWT0lEICAgICAgICpCblByaW1lLA0KPiA+ID4gPiA+ID4gKyAgT1VUIFZPSUQg ICAgICAgKkJuQSwNCj4gPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCbkIsDQo+ID4gPiA+ ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZXQgRUMgZ3JvdXAgb3Jk ZXIuDQo+ID4gPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBC aWcgTnVtYmVyIG9iamVjdCB0byB0aGUNCj4gPiBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ID4gPiAr ICB2YWx1ZS4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgIm91dCIgQmln TnVtYmVyDQo+ID4gcGFyYW1ldGVyDQo+ID4gPiA+ID4gPiArICBpcyBwcm9wZXJseSBpbml0aWFs aXplZC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAg ICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCbk9yZGVyICAg R3JvdXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHZh bCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNF ICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xF QU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY0dyb3VwR2V0T3JkZXIgKA0K PiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICpFY0dyb3VwLA0KPiA+ID4gPiA+ID4gKyAgT1VUIFZP SUQgICpCbk9yZGVyDQo+ID4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBncm91 cCBvYmplY3QgdXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QgdG8gZnJlZS4NCj4gPiA+ ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4g PiA+ID4gPiArRWNHcm91cEZyZWUgKA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgKkVjR3JvdXAN Cj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4g PiA+ID4gPiArICBJbml0aWFsaXplIG5ldyBvcGFxdWUgRUMgUG9pbnQgb2JqZWN0LiBUaGlzIG9i amVjdCByZXByZXNlbnRzIGFuIEVDDQo+ID4gcG9pbnQNCj4gPiA+ID4gPiA+ICsgIHdpdGhpbiB0 aGUgZ2l2ZW4gRUMgZ3JvdXAgKGN1cnZlKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsg IEBwYXJhbVtpbl0gIEVDIEdyb3VwLCBwcm9wZXJseSBpbml0aWFsaXplZCB1c2luZyBFY0dyb3Vw SW5pdCgpLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBFQyBQb2ludCBv YmplY3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAg ICAgT24gZmFpbHVyZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtWT0lEICoNCj4g PiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY1BvaW50SW5pdCAoDQo+ID4gPiA+ID4g PiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cA0KPiA+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIEZyZWUgcHJldmlvdXNseSBh bGxvY2F0ZWQgRUMgUG9pbnQgb2JqZWN0IHVzaW5nIEVjUG9pbnRJbml0KCkuDQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgUG9pbnQgdG8gZnJl ZS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENsZWFyICAgICBUUlVFIGlmZiB0aGUgbWVt b3J5IHNob3VsZCBiZSBjbGVhcmVkLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1ZP SUQNCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY1BvaW50RGVJbml0ICgNCj4g PiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICpFY1BvaW50LA0KPiA+ID4gPiA+ID4gKyAgSU4gQk9P TEVBTiAgQ2xlYXINCj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArLyoqDQo+ID4gPiA+ID4gPiArICBHZXQgRUMgcG9pbnQgYWZmaW5lICh4LHkpIGNvb3JkaW5h dGVzLg0KPiA+ID4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQg QmlnIE51bWJlciBvYmplY3RzIHRvIHRoZQ0KPiA+IGNvcnJlc3BvbmRpbmcNCj4gPiA+ID4gPiA+ ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBC aWdOdW1iZXINCj4gPiBwYXJhbWV0ZXJzDQo+ID4gPiA+ID4gPiArICBhcmUgcHJvcGVybHkgaW5p dGlhbGl6ZWQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dy b3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9p bnQgICAgRUMgcG9pbnQgb2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5YICAg ICAgICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCblkgICAgICAg IFkgY29vcmRpbmF0ZS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgQk4g Y29udGV4dCwgY3JlYXRlZCB3aXRoDQo+ID4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gPiA+ICtFY1BvaW50R2V0QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ID4gPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQ b2ludCwNCj4gPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblgsDQo+ID4gPiA+ID4gPiAr ICBPVVQgVk9JRCAgICAgICAqQm5ZLA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJu Q3R4DQo+ID4gPiA+ID4gPiArICApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0K PiA+ID4gPiA+ID4gKyAgU2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3Jv dXAgb2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2lu dCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCblggICAgICAgIFggY29vcmRp bmF0ZS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWSAgICAgICAgWSBjb29yZGluYXRl Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVh dGVkIHdpdGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ICsg IEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4g PiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjUG9p bnRTZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNHcm91cCwNCj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4g PiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZP SUQgICpCblksDQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4g PiA+ICsgICk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiAr ICBFQyBQb2ludCBhZGRpdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnRBICsgRWNQb2ludEIu DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAg ICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRS ZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUNCj4gPiBwb2ludCBzaG91 bGQNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcHJvcGVy bHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QSAgICAg ICAgIEVDIFBvaW50Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEIgICAgICAg ICBFQyBQb2ludC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgICAgICAg Qk4gY29udGV4dCwgY3JlYXRlZCB3aXRoDQo+ID4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3Mu DQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4g PiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4g PiA+ID4gPiA+ICtFY1BvaW50QWRkICgNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y0dyb3VwLA0KPiA+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQsDQo+ ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiA+ID4gPiArICBJ TiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAq Qm5DdHgNCj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoq DQo+ID4gPiA+ID4gPiArICBWYXJpYWJsZSBFQyBwb2ludCBtdWx0aXBsaWNhdGlvbi4gRWNQb2lu dFJlc3VsdCA9IEVjUG9pbnQgKg0KPiA+IEJuUFNjYWxhci4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0K PiA+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBo b2xkIHRoZSByZXN1bHQuIFRoZQ0KPiA+IHBvaW50IHNob3VsZA0KPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiA+ ID4gPiArICBAcGFyYW1baW5dICBCblBTY2FsYXIgICAgICAgIFAgU2NhbGFyLg0KPiA+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdp dGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g PiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjUG9pbnRNdWwg KA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gPiAr ICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNU IFZPSUQgICpFY1BvaW50LA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuUFNjYWxh ciwNCj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ID4gKyAg KTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIENhbGN1 bGF0ZSB0aGUgaW52ZXJzZSBvZiB0aGUgc3VwcGxpZWQgRUMgcG9pbnQuDQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0 Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luLG91dF0gRWNQb2ludCAgIEVDIHBvaW50IHRvIGlu dmVydC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEJuQ3R4ICAgICBCTiBjb250ZXh0 LCBjcmVhdGVkIHdpdGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4g PiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gPiArKiov DQo+ID4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4g K0VjUG9pbnRJbnZlcnQgKA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAs DQo+ID4gPiA+ID4gPiArICBJTiBPVVQgVk9JRCAgICAqRWNQb2ludCwNCj4gPiA+ID4gPiA+ICsg IElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIENoZWNrIGlmIHRoZSBzdXBwbGllZCBw b2ludCBpcyBvbiBFQyBjdXJ2ZS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1b aW5dICBFY1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiA+ID4gPiArICBAcGFyYW1b aW5dICBCbkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoDQo+ID4gQmlnTnVtTmV3Q29u dGV4dCgpLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIE9uIGN1cnZlLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVy d2lzZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4g PiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNQb2ludElzT25DdXJ2ZSAoDQo+ID4gPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY1BvaW50LA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ ID4gPiArICApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4g KyAgQ2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIGF0IGluZmluaXR5Lg0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVj dC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0byBjaGVj ay4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBB dCBpbmZpbml0eS4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjUG9pbnRJc0F0SW5maW5pdHkgKA0KPiA+ID4gPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lE ICAqRWNQb2ludA0KPiA+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsvKioNCj4gPiA+ID4gPiA+ICsgIENoZWNrIGlmIEVDIHBvaW50cyBhcmUgZXF1YWwuDQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAg b2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEEgIEVDIHBvaW50IEEu DQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgRUMgcG9pbnQgQi4NCj4gPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgN Cj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBA cmV0dmFsIFRSVUUgICAgICAgICAgQSA9PSBCLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxT RSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09M RUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNQb2ludEVxdWFsICgNCj4g PiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkVjUG9pbnRBLA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVj UG9pbnRCLA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4g PiArICApOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAg U2V0IEVDIHBvaW50IGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIFBvaW50cyBjYW4gYmUgZGVzY3Jp YmVkIGluDQo+ID4gdGVybXMgb2YNCj4gPiA+ID4gPiA+ICsgIHRoZWlyIGNvbXByZXNzZWQgY29v cmRpbmF0ZXMuIEZvciBhIHBvaW50ICh4LCB5KSwgZm9yIGFueSBnaXZlbg0KPiA+IHZhbHVlIGZv ciB4DQo+ID4gPiA+ID4gPiArICBzdWNoIHRoYXQgdGhlIHBvaW50IGlzIG9uIHRoZSBjdXJ2ZSB0 aGVyZSB3aWxsIG9ubHkgZXZlciBiZSB0d28NCj4gPiBwb3NzaWJsZQ0KPiA+ID4gPiA+ID4gKyAg dmFsdWVzIGZvciB5LiBUaGVyZWZvcmUsIGEgcG9pbnQgY2FuIGJlIHNldCB1c2luZyB0aGlzIGZ1 bmN0aW9uDQo+ID4gd2hlcmUgQm5YIGlzDQo+ID4gPiA+ID4gPiArICB0aGUgeCBjb29yZGluYXRl IGFuZCBZQml0IGlzIGEgdmFsdWUgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNoIG9mIHRoZQ0KPiA+ IHR3bw0KPiA+ID4gPiA+ID4gKyAgcG9zc2libGUgdmFsdWVzIGZvciB5IHNob3VsZCBiZSB1c2Vk Lg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBF QyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVD IFBvaW50Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5YICAgICAgICBYIGNvb3JkaW5h dGUuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBZQml0ICAgICAgIDAgb3IgMSB0byBpZGVu dGlmeSB3aGljaCBZIHZhbHVlIGlzIHVzZWQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBC bkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiA+IEJpZ051bU5ld0NvbnRleHQo KS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBP biBzdWNjZXNzLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lz ZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiAr RUZJQVBJDQo+ID4gPiA+ID4gPiArRWNQb2ludFNldENvbXByZXNzZWRDb29yZGluYXRlcyAoDQo+ ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiA+ICsgIElO IFZPSUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJu WCwNCj4gPiA+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgIFlCaXQsDQo+ID4gPiA+ID4gPiArICBJ TiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArLy8NCj4gPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ ID4gPiA+ID4gPiArLy8gICAgRWxsaXB0aWMgQ3VydmUgRGlmZmllIEhlbGxtYW4gUHJpbWl0aXZl cw0KPiA+ID4gPiA+ID4gKy8vDQo+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgQWxsb2Nh dGVzIGFuZCBJbml0aWFsaXplcyBvbmUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCBmb3Igc3Vic2Vx dWVudA0KPiA+IHVzZQ0KPiA+ID4gPiA+ID4gKyAgd2l0aCB0aGUgTklELg0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgTmlkIGNpcGhlciBOSUQNCj4gPiA+ID4gPiA+ ICsgIEByZXR1cm4gICAgIFBvaW50ZXIgdG8gdGhlIEVsbGlwdGljIEN1cnZlIENvbnRleHQgdGhh dCBoYXMgYmVlbg0KPiA+IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg SWYgdGhlIGFsbG9jYXRpb25zIGZhaWxzLCBFY05ld0J5TmlkKCkgcmV0dXJucyBOVUxMLg0KPiA+ ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiA+ID4gK0VjTmV3QnlOaWQgKA0KPiA+ID4gPiA+ID4gKyAgSU4gVUlOVE4gIE5pZA0K PiA+ID4gPiA+ID4gKyAgKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ ID4gPiA+ICsgIFJlbGVhc2UgdGhlIHNwZWNpZmllZCBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBF QyBjb250ZXh0IHRvIGJlIHJlbGVhc2VkLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4g K1ZPSUQNCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY0ZyZWUgKA0KPiA+ID4g PiA+ID4gKyAgSU4gIFZPSUQgICpFY0NvbnRleHQNCj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZW5lcmF0ZXMgRUMga2V5 IGFuZCByZXR1cm5zIEVDIHB1YmxpYyBrZXkgKFgsIFkpLCBQbGVhc2Ugbm90ZSwNCj4gPiB0aGlz IGZ1bmN0aW9uIHVzZXMNCj4gPiA+ID4gPiA+ICsgIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVy YXRvci4gVGhlIGNhbGxlciBtdXN0IG1ha2Ugc3VyZQ0KPiA+IFJhbmRvbVNlZWQoKQ0KPiA+ID4g PiA+ID4gKyAgZnVuY3Rpb24gd2FzIHByb3Blcmx5IGNhbGxlZCBiZWZvcmUuDQo+ID4gPiA+ID4g PiArICBUaGUgRWMgY29udGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IEVj TmV3QnlOaWQuDQo+ID4gPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyByYW5kb20g c2VjcmV0LCBhbmQgY29tcHV0ZXMgdGhlIHB1YmxpYw0KPiA+IGtleSAoWCwgWSksIHdoaWNoIGlz DQo+ID4gPiA+ID4gPiArICByZXR1cm5lZCB2aWEgcGFyYW1ldGVyIFB1YmxpYywgUHVibGljU2l6 ZS4NCj4gPiA+ID4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYgb2YgUHVibGljIHdpdGggc2l6 ZSBiZWluZyBQdWJsaWNTaXplIC8gMiwNCj4gPiA+ID4gPiA+ICsgIFkgaXMgdGhlIHNlY29uZCBo YWxmIG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUHVibGljU2l6ZSAvIDIuDQo+ID4gPiA+ID4g PiArICBFQyBjb250ZXh0IGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ID4gPiA+ID4gPiArICBJ ZiB0aGUgUHVibGljIGJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcHVibGljIFgsIFks IEZBTFNFIGlzDQo+ID4gcmV0dXJuZWQgYW5kDQo+ID4gPiA+ID4gPiArICBQdWJsaWNTaXplIGlz IHNldCB0byB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUgdG8gb2J0YWluIHRoZSBwdWJsaWMgWCwN Cj4gPiBZLg0KPiA+ID4gPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4g Rmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZQ0KPiA+IGlzIFkuDQo+ID4gPiA+ID4g PiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgs IFNlY29uZCA0OC1ieXRlDQo+ID4gaXMgWS4NCj4gPiA+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhl IFB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlDQo+ ID4gaXMgWS4NCj4gPiA+ID4gPiA+ICsgIElmIEVjQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVy biBGQUxTRS4NCj4gPiA+ID4gPiA+ICsgIElmIFB1YmxpY1NpemUgaXMgTlVMTCwgdGhlbiByZXR1 cm4gRkFMU0UuDQo+ID4gPiA+ID4gPiArICBJZiBQdWJsaWNTaXplIGlzIGxhcmdlIGVub3VnaCBi dXQgUHVibGljIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ID4gKyAgQHBh cmFtW2luLCBvdXRdICBFY0NvbnRleHQgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0K PiA+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRv IHQgYnVmZmVyIHRvIHJlY2VpdmUNCj4gPiBnZW5lcmF0ZWQgcHVibGljIFgsWS4NCj4gPiA+ID4g PiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgUHVibGljS2V5U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXpl IG9mIFB1YmxpYyBidWZmZXINCj4gPiBpbiBieXRlcy4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVy bmVkIGluIFB1YmxpYw0KPiA+IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2 YWwgVFJVRSAgIEVDIHB1YmxpYyBYLFkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4gPiA+ID4g PiArICBAcmV0dmFsIEZBTFNFICBFQyBwdWJsaWMgWCxZIGdlbmVyYXRpb24gZmFpbGVkLg0KPiA+ ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgUHVibGljS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5v dWdoLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY0dlbmVyYXRlS2V5ICgNCj4gPiA+ID4gPiA+ICsgIElO IE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAq UHVibGljS2V5LA0KPiA+ID4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUN Cj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4g PiA+ID4gPiArICBHZXRzIHRoZSBwdWJsaWMga2V5IGNvbXBvbmVudCBmcm9tIHRoZSBlc3RhYmxp c2hlZCBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ID4gKyAgVGhlIEVjIGNvbnRleHQgc2hvdWxkIGJl IGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBFY05ld0J5TmlkLCBhbmQNCj4gPiBzdWNjZXNzZnVs bHkNCj4gPiA+ID4gPiA+ICsgIGdlbmVyYXRlIGtleSBwYWlyIGZyb20gRWNHZW5lcmF0ZUtleSgp Lg0KPiA+ID4gPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmlyc3Qg MzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZQ0KPiA+IGlzIFkuDQo+ID4gPiA+ID4gPiArICBG b3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29u ZCA0OC1ieXRlDQo+ID4gaXMgWS4NCj4gPiA+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1Ymxp Y1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlDQo+ID4gaXMg WS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRl ciB0byBFQyBjb250ZXh0IGJlaW5nIHNldC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICAg ICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlDQo+ID4gZ2Vu ZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1Ymxp Y0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVyDQo+ID4gaW4gYnl0 ZXMuDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91 dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMNCj4gPiBidWZmZXIgaW4g Ynl0ZXMuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsICBUUlVFICAgRUMga2V5IGNvbXBvbmVudCB3 YXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgIEZBTFNF ICBJbnZhbGlkIEVDIGtleSBjb21wb25lbnQuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g PiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjR2V0UHViS2V5 ICgNCj4gPiA+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ID4g PiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ID4gPiA+ID4gKyAgSU4gT1VUICBV SU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBDb21wdXRlcyBleGNoYW5nZWQgY29tbW9u IGtleS4NCj4gPiA+ID4gPiA+ICsgIEdpdmVuIHBlZXIncyBwdWJsaWMga2V5IChYLCBZKSwgdGhp cyBmdW5jdGlvbiBjb21wdXRlcyB0aGUNCj4gPiBleGNoYW5nZWQgY29tbW9uIGtleSwNCj4gPiA+ ID4gPiA+ICsgIGJhc2VkIG9uIGl0cyBvd24gY29udGV4dCBpbmNsdWRpbmcgdmFsdWUgb2YgY3Vy dmUgcGFyYW1ldGVyIGFuZA0KPiA+IHJhbmRvbSBzZWNyZXQuDQo+ID4gPiA+ID4gPiArICBYIGlz IHRoZSBmaXJzdCBoYWxmIG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNT aXplIC8gMiwNCj4gPiA+ID4gPiA+ICsgIFkgaXMgdGhlIHNlY29uZCBoYWxmIG9mIFBlZXJQdWJs aWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNTaXplIC8NCj4gPiAyLg0KPiA+ID4gPiA+ID4g KyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ID4g KyAgSWYgUGVlclB1YmxpYyBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiA+ ICsgIElmIFBlZXJQdWJsaWNTaXplIGlzIDAsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ ID4gKyAgSWYgS2V5IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ID4gKyAg SWYgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1i eXRlIGlzIFgsIFNlY29uZCAzMi0NCj4gPiBieXRlIGlzIFkuDQo+ID4gPiA+ID4gPiArICBGb3Ig UC0zODQsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNv bmQgNDgtDQo+ID4gYnl0ZSBpcyBZLg0KPiA+ID4gPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUGVl clB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni0NCj4gPiBi eXRlIGlzIFkuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgICAgICBQZWVyUHVibGljICAgICAgICAgUG9pbnRlciB0byB0aGUgcGVlcidzIHB1YmxpYyBY LFkuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWNTaXplICAgICBT aXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5dGVzLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFt W2luXSAgICAgICBDb21wcmVzc0ZsYWcgICAgICAgRmxhZyBvZiBQZWVyUHVibGljIGlzDQo+ID4g Y29tcHJlc3NlZCBvciBub3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIEtleSAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZQ0KPiA+IGdlbmVy YXRlZCBrZXkuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEtleVNpemUgICAgICAg ICAgICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgS2V5IGJ1ZmZlciBpbg0KPiA+IGJ5dGVzLg0KPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0 LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIEtleQ0KPiA+IGJ1ZmZlciBpbiBieXRlcy4N Cj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlv biBzdWNjZWVkZWQuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBFQyBleGNoYW5nZWQg a2V5IGdlbmVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgS2V5 U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4g K0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY0RoQ29tcHV0ZUtl eSAoDQo+ID4gPiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICAqRWNDb250ZXh0LA0KPiA+ ID4gPiA+ID4gKyAgSU4gICAgICBDT05TVCBVSU5UOCAgKlBlZXJQdWJsaWMsDQo+ID4gPiA+ID4g PiArICBJTiAgICAgIFVJTlROICAgICAgICBQZWVyUHVibGljU2l6ZSwNCj4gPiA+ID4gPiA+ICsg IElOICAgICAgQ09OU1QgSU5UMzIgICpDb21wcmVzc0ZsYWcsDQo+ID4gPiA+ID4gPiArICBPVVQg ICAgIFVJTlQ4ICAgICAgICAqS2V5LA0KPiA+ID4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgICAg ICAgKktleVNpemUNCj4gPiA+ID4gPiA+ICsgICk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiAgI2VuZGlmIC8vIF9fQkFTRV9DUllQVF9MSUJfSF9fDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5pbmYNCj4gPiBi L0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWIuaW5mDQo+ID4gPiA+ ID4gPiBpbmRleCA5ZTRiZTJmYjBkLi5hZGU2ZWUzZmRkIDEwMDY0NA0KPiA+ID4gPiA+ID4gLS0t IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5pbmYNCj4gPiA+ ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWIu aW5mDQo+ID4gPiA+ID4gPiBAQCAtNTIsNiArNTIsOCBAQA0KPiA+ID4gPiA+ID4gICAgUGsvQ3J5 cHRUcy5jDQo+ID4gPiA+ID4gPiAgICBQay9DcnlwdFJzYVBzcy5jDQo+ID4gPiA+ID4gPiAgICBQ ay9DcnlwdFJzYVBzc1NpZ24uYw0KPiA+ID4gPiA+ID4gKyAgUGsvQ3J5cHRFY051bGwuYw0KPiA+ IHwqfCp8KnwhZ0VmaUNyeXB0b1BrZ1Rva2VuU3BhY2VHdWlkLlBjZE9wZW5zc2xFY0VuYWJsZWQN Cj4gPiA+ID4gPiA+ICsgIFBrL0NyeXB0RWMuYw0KPiA+IHwqfCp8KnxnRWZpQ3J5cHRvUGtnVG9r ZW5TcGFjZUd1aWQuUGNkT3BlbnNzbEVjRW5hYmxlZA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhl IHVzZSBvZiB0aGUgUENEIHRvIHNlbGVjdCB0aGUgZmlsZSBzaG91bGQgbm90IGJlIG5lZWRlZCBo ZXJlLiAgVGhlDQo+ID4gPiA+ID4gRWMgRmFtaWx5IGFuZCBpbmRpdmlkdWFsIHNlcnZpY2UgZW5h YmxlL2Rpc2FibGUgZmllbGRzIGluIHRoZQ0KPiA+ID4gPiA+IFBDRF9DUllQVE9fU0VSVklDRV9G QU1JTFlfRU5BQkxFIHN0cnVjdHVyZWQgUENEIGFyZSBhbGwgdGhhdCBpcw0KPiA+IG5lZWRlZCB0 bw0KPiA+ID4gPiA+IGRpc2FibGUgdGhlIEVjIHNlcnZpY2VzLg0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gVGhlIFBDRCBnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkT3BlbnNzbEVjRW5hYmxl ZCBzaG91bGQNCj4gPiBiZSByZW1vdmVkDQo+ID4gPiA+ID4gY29tcGxldGVseSBhcyBwYXJ0IG9m IHRoaXMgcGF0Y2ggc2VyaWVzLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICBQZW0vQ3J5cHRQ ZW0uYw0KPiA+ID4gPiA+ID4gICAgQm4vQ3J5cHRCbi5jDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExp Yi5pbmYNCj4gPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9QZWlDcnlwdExpYi5p bmYNCj4gPiA+ID4gPiA+IGluZGV4IDY1YWQyM2ZiODEuLjM4M2RmMmIyM2MgMTAwNjQ0DQo+ID4g PiA+ID4gPiAtLS0gYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGVpQ3J5cHRMaWIu aW5mDQo+ID4gPiA+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGVp Q3J5cHRMaWIuaW5mDQo+ID4gPiA+ID4gPiBAQCAtNTgsNiArNTgsNyBAQA0KPiA+ID4gPiA+ID4g ICAgUGsvQ3J5cHRUc051bGwuYw0KPiA+ID4gPiA+ID4gICAgUGsvQ3J5cHRSc2FQc3MuYw0KPiA+ ID4gPiA+ID4gICAgUGsvQ3J5cHRSc2FQc3NTaWduTnVsbC5jDQo+ID4gPiA+ID4gPiArICBQay9D cnlwdEVjTnVsbC5jDQo+ID4gPiA+ID4gPiAgICBQZW0vQ3J5cHRQZW1OdWxsLmMNCj4gPiA+ID4g PiA+ICAgIFJhbmQvQ3J5cHRSYW5kTnVsbC5jDQo+ID4gPiA+ID4gPiAgICBCbi9DcnlwdEJuTnVs bC5jDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliL1BrL0NyeXB0RWMuYw0KPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1Br L0NyeXB0RWMuYw0KPiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+ IGluZGV4IDAwMDAwMDAwMDAuLjM5NmM4MTk4MzQNCj4gPiA+ID4gPiA+IC0tLSAvZGV2L251bGwN Cj4gPiA+ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9Dcnlw dEVjLmMNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsNzY1IEBADQo+ID4gPiA+ID4gPiArLyoqIEBm aWxlDQo+ID4gPiA+ID4gPiArICBFbGxpcHRpYyBDdXJ2ZSBhbmQgRUNESCBBUEkgaW1wbGVtZW50 YXRpb24gYmFzZWQgb24gT3BlblNTTA0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQ29w eXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gPiA+ID4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKyNpbmNsdWRlICJJbnRlcm5hbENyeXB0TGliLmgiDQo+ID4gPiA+ID4gPiAr I2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPg0KPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxvcGVu c3NsL2JuLmg+DQo+ID4gPiA+ID4gPiArI2luY2x1ZGUgPG9wZW5zc2wvZWMuaD4NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsvLw0KPiA+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCj4gPiA+ID4gPiA+ICsvLyAgICBCYXNpYyBFbGxpcHRpYyBDdXJ2ZSBQcmltaXRpdmVz DQo+ID4gPiA+ID4gPiArLy8NCj4gPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09 DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBSZXR1cm4g dGhlIE5pZCBvZiBjZXJ0YWluIEVDQyBjdXJ2ZS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIENyeXB0b05pZCAgIElkZW50aWZ5aW5nIG51bWJlciBmb3IgdGhlIEVD QyBjdXJ2ZQ0KPiA+IChEZWZpbmVkIGluDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICBCYXNlQ3J5cHRMaWIuaCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBA cmV0dmFsICE9LTEgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgLTEgICAg ICBFQ0MgY3VydmUgbm90IHN1cHBvcnRlZC4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ ICtTVEFUSUMNCj4gPiA+ID4gPiA+ICtJTlQzMg0KPiA+ID4gPiA+ID4gK0NyeXB0b05pZFRvT3Bl bnNzbE5pZCAoDQo+ID4gPiA+ID4gPiArICBJTiBVSU5UTiAgQ3J5cHRvTmlkDQo+ID4gPiA+ID4g PiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgSU5UMzIgIE5pZDsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHN3aXRjaCAoQ3J5cHRvTmlkKSB7DQo+ID4gPiA+ID4g PiArICAgIGNhc2UgQ1JZUFRPX05JRF9TRUNQMjU2UjE6DQo+ID4gPiA+ID4gPiArICAgICAgTmlk ID0gTklEX1g5XzYyX3ByaW1lMjU2djE7DQo+ID4gPiA+ID4gPiArICAgICAgYnJlYWs7DQo+ID4g PiA+ID4gPiArICAgIGNhc2UgQ1JZUFRPX05JRF9TRUNQMzg0UjE6DQo+ID4gPiA+ID4gPiArICAg ICAgTmlkID0gTklEX3NlY3AzODRyMTsNCj4gPiA+ID4gPiA+ICsgICAgICBicmVhazsNCj4gPiA+ ID4gPiA+ICsgICAgY2FzZSBDUllQVE9fTklEX1NFQ1A1MjFSMToNCj4gPiA+ID4gPiA+ICsgICAg ICBOaWQgPSBOSURfc2VjcDUyMXIxOw0KPiA+ID4gPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4g PiA+ID4gKyAgICBkZWZhdWx0Og0KPiA+ID4gPiA+ID4gKyAgICAgIHJldHVybiAtMTsNCj4gPiA+ ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBOaWQ7DQo+ ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVjR3JvdXAgb2JqZWN0LiBUaGlzIG9iamVjdCBy ZXByZXNlbnRzIGFuIEVDDQo+ID4gY3VydmUgYW5kDQo+ID4gPiA+ID4gPiArICBhbmQgaXMgdXNl ZCBmb3IgY2FsY3VsYXRpb24gd2l0aGluIHRoaXMgZ3JvdXAuIFRoaXMgb2JqZWN0IHNob3VsZCBi ZQ0KPiA+IGZyZWVkDQo+ID4gPiA+ID4gPiArICB1c2luZyBFY0dyb3VwRnJlZSgpIGZ1bmN0aW9u Lg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3J5cHRvTmlkICAg SWRlbnRpZnlpbmcgbnVtYmVyIGZvciB0aGUgRUNDIGN1cnZlDQo+ID4gKERlZmluZWQgaW4NCj4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VDcnlwdExpYi5oKS4NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRWNHcm91cCBvYmplY3QgIE9uIHN1 Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICBPbiBmYWlsdXJl Lg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiA+ID4gK0VG SUFQSQ0KPiA+ID4gPiA+ID4gK0VjR3JvdXBJbml0ICgNCj4gPiA+ID4gPiA+ICsgIElOIFVJTlRO ICBDcnlwdG9OaWQNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4g PiArICBJTlQzMiAgTmlkOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgTmlkID0gQ3J5 cHRvTmlkVG9PcGVuc3NsTmlkIChDcnlwdG9OaWQpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgaWYgKE5pZCA8IDApIHsNCj4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4g PiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICByZXR1cm4gRUNfR1JP VVBfbmV3X2J5X2N1cnZlX25hbWUgKE5pZCk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgR2V0IEVDIGN1cnZlIHBhcmFtZXRl cnMuIFdoaWxlIGVsbGlwdGljIGN1cnZlIGVxdWF0aW9uIGlzIFleMiBtb2QNCj4gPiBQID0gKFhe MyArIEFYICsgQikgTW9kIFAuDQo+ID4gPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0 IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgIHRvIHRoZQ0KPiA+IGNvcnJlc3BvbmRp bmcNCj4gPiA+ID4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUg YWxsIHRoZSAib3V0IiBCaWdOdW1iZXINCj4gPiBwYXJhbWV0ZXJzDQo+ID4gPiA+ID4gPiArICBh cmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBA cGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiA+ICsgIEBw YXJhbVtvdXRdIEJuUHJpbWUgICAgR3JvdXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gPiA+ID4gKyAg QHBhcmFtW291dF0gQm5BICAgICAgICBBIGNvZWZmaWNpZW50Lg0KPiA+ID4gPiA+ID4gKyAgQHBh cmFtW291dF0gQm5CICAgICAgICBCIGNvZWZmaWNpZW50Li4NCj4gPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEJuQ3R4ICAgICAgQk4gY29udGV4dC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4g PiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNHcm91cEdl dEN1cnZlICgNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4g PiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuUHJpbWUsDQo+ID4gPiA+ID4gPiArICBPVVQgVk9J RCAgICAgICAqQm5BLA0KPiA+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuQiwNCj4gPiA+ ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4g PiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgIHJldHVybiAoQk9PTEVBTilFQ19HUk9VUF9nZXRfY3Vy dmUgKEVjR3JvdXAsIEJuUHJpbWUsIEJuQSwNCj4gPiBCbkIsIEJuQ3R4KTsNCj4gPiA+ID4gPiA+ ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZXQg RUMgZ3JvdXAgb3JkZXIuDQo+ID4gPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRo ZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdCB0byB0aGUNCj4gPiBjb3JyZXNwb25kaW5nDQo+ ID4gPiA+ID4gPiArICB2YWx1ZS4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgdGhhdCB0 aGUgIm91dCIgQmlnTnVtYmVyDQo+ID4gcGFyYW1ldGVyDQo+ID4gPiA+ID4gPiArICBpcyBwcm9w ZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0 XSBCbk9yZGVyICAgR3JvdXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBA cmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4g PiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY0dyb3Vw R2V0T3JkZXIgKA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICpFY0dyb3VwLA0KPiA+ID4gPiA+ ID4gKyAgT1VUIFZPSUQgICpCbk9yZGVyDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiAr ew0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVDX0dST1VQX2dldF9vcmRlciAoRWNH cm91cCwgQm5PcmRlciwNCj4gPiBOVUxMKTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBGcmVlIHByZXZpb3VzbHkgYWxsb2Nh dGVkIEVDIGdyb3VwIG9iamVjdCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdCB0byBm cmVlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gPiA+ICtF RklBUEkNCj4gPiA+ID4gPiA+ICtFY0dyb3VwRnJlZSAoDQo+ID4gPiA+ID4gPiArICBJTiBWT0lE ICAqRWNHcm91cA0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ ICsgIEVDX0dST1VQX2ZyZWUgKEVjR3JvdXApOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1 ZSBFQyBQb2ludCBvYmplY3QuIFRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYW4gRUMNCj4gPiBwb2lu dA0KPiA+ID4gPiA+ID4gKyAgd2l0aGluIHRoZSBnaXZlbiBFQyBncm91cCAoY3VydmUpLg0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRUMgR3JvdXAsIHByb3Blcmx5 IGluaXRpYWxpemVkIHVzaW5nIEVjR3JvdXBJbml0KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICBAcmV0dmFsIEVDIFBvaW50IG9iamVjdCAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgICBPbiBmYWlsdXJlLg0KPiA+ID4gPiA+ID4gKyoq Lw0KPiA+ID4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4g K0VjUG9pbnRJbml0ICgNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwDQo+ ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEVD X1BPSU5UX25ldyAoRWNHcm91cCk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBF QyBQb2ludCBvYmplY3QgdXNpbmcgRWNQb2ludEluaXQoKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBQb2ludCB0byBmcmVlLg0KPiA+ID4g PiA+ID4gKyAgQHBhcmFtW2luXSAgQ2xlYXIgICAgIFRSVUUgaWZmIHRoZSBtZW1vcnkgc2hvdWxk IGJlIGNsZWFyZWQuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArVk9JRA0KPiA+ID4g PiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjUG9pbnREZUluaXQgKA0KPiA+ID4gPiA+ID4g KyAgSU4gVk9JRCAgICAgKkVjUG9pbnQsDQo+ID4gPiA+ID4gPiArICBJTiBCT09MRUFOICBDbGVh cg0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgIGlmIChD bGVhcikgew0KPiA+ID4gPiA+ID4gKyAgICBFQ19QT0lOVF9jbGVhcl9mcmVlIChFY1BvaW50KTsN Cj4gPiA+ID4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiA+ID4gPiArICAgIEVDX1BPSU5UX2ZyZWUg KEVjUG9pbnQpOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIEdldCBFQyBwb2ludCBhZmZpbmUg KHgseSkgY29vcmRpbmF0ZXMuDQo+ID4gPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0 IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgdG8gdGhlDQo+ID4gY29ycmVzcG9uZGlu Zw0KPiA+ID4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBh bGwgdGhlICJvdXQiIEJpZ051bWJlcg0KPiA+IHBhcmFtZXRlcnMNCj4gPiA+ID4gPiA+ICsgIGFy ZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFy YW1bb3V0XSBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtv dXRdIEJuWSAgICAgICAgWSBjb29yZGluYXRlLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAg Qm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0 KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAg T24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjUG9pbnRHZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4g PiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiA+ICsgIElOIENP TlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuWCwN Cj4gPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblksDQo+ID4gPiA+ID4gPiArICBJTiBW T0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4g PiA+ID4gPiArICByZXR1cm4gKEJPT0xFQU4pRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRl cyAoRWNHcm91cCwNCj4gPiBFY1BvaW50LCBCblgsIEJuWSwgQm5DdHgpOw0KPiA+ID4gPiA+ID4g K30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIFNldCBF QyBwb2ludCBhZmZpbmUgKHgseSkgY29vcmRpbmF0ZXMuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgRUMgcG9pbnQgb2JqZWN0Lg0KPiA+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgQm5YICAgICAgICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ID4gPiAr ICBAcGFyYW1baW5dICBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEJuQ3R4ICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoDQo+ID4gQmlnTnVt TmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVF ICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAg ICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4g PiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY1BvaW50U2V0QWZmaW5lQ29vcmRpbmF0 ZXMgKA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4g PiArICBJTiBWT0lEICAgICAgICAqRWNQb2ludCwNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZP SUQgICpCblgsDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5ZLA0KPiA+ID4gPiA+ ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4g PiArew0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVDX1BPSU5UX3NldF9hZmZpbmVf Y29vcmRpbmF0ZXMgKEVjR3JvdXAsDQo+ID4gRWNQb2ludCwgQm5YLCBCblksIEJuQ3R4KTsNCj4g PiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4g PiArICBFQyBQb2ludCBhZGRpdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnRBICsgRWNQb2lu dEIuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAg ICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9p bnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUgcmVzdWx0LiBUaGUNCj4gPiBwb2ludCBz aG91bGQNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcHJv cGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QSAg ICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEIgICAg ICAgICBFQyBQb2ludC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgICAg ICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoDQo+ID4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nl c3MuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkN Cj4gPiA+ID4gPiA+ICtFY1BvaW50QWRkICgNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY0dyb3VwLA0KPiA+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQs DQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAg ICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiAr ICByZXR1cm4gKEJPT0xFQU4pRUNfUE9JTlRfYWRkIChFY0dyb3VwLCBFY1BvaW50UmVzdWx0LA0K PiA+IEVjUG9pbnRBLCBFY1BvaW50QiwgQm5DdHgpOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIFZhcmlhYmxlIEVDIHBvaW50 IG11bHRpcGxpY2F0aW9uLiBFY1BvaW50UmVzdWx0ID0gRWNQb2ludCAqDQo+ID4gQm5QU2NhbGFy Lg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICAg ICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBFY1BvaW50 UmVzdWx0ICAgIEVDIHBvaW50IHRvIGhvbGQgdGhlIHJlc3VsdC4gVGhlDQo+ID4gcG9pbnQgc2hv dWxkDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHByb3Bl cmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICAg ICAgICBFQyBQb2ludC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuUFNjYWxhciAgICAg ICAgUCBTY2FsYXIuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgICAgICAg IEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiA+IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNz Lg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ ID4gPiA+ID4gPiArRWNQb2ludE11bCAoDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNHcm91cCwNCj4gPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVzdWx0LA0K PiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ID4gPiArICBJ TiBDT05TVCBWT0lEICAqQm5QU2NhbGFyLA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAg KkJuQ3R4DQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAg cmV0dXJuIChCT09MRUFOKUVDX1BPSU5UX211bCAoRWNHcm91cCwgRWNQb2ludFJlc3VsdCwgTlVM TCwNCj4gPiBFY1BvaW50LCBCblBTY2FsYXIsIEJuQ3R4KTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBDYWxjdWxhdGUgdGhl IGludmVyc2Ugb2YgdGhlIHN1cHBsaWVkIEVDIHBvaW50Lg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKyAgQHBhcmFtW2luXSAgICAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbixvdXRdIEVjUG9pbnQgICBFQyBwb2ludCB0byBpbnZlcnQuDQo+ ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgICBCbkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRl ZCB3aXRoDQo+ID4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBA cmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4g PiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY1BvaW50 SW52ZXJ0ICgNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4g PiA+ID4gKyAgSU4gT1VUIFZPSUQgICAgKkVjUG9pbnQsDQo+ID4gPiA+ID4gPiArICBJTiBWT0lE ICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ ID4gPiArICByZXR1cm4gKEJPT0xFQU4pRUNfUE9JTlRfaW52ZXJ0IChFY0dyb3VwLCBFY1BvaW50 LCBCbkN0eCk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8q Kg0KPiA+ID4gPiA+ID4gKyAgQ2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIG9uIEVDIGN1 cnZlLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAg IEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBF QyBwb2ludCB0byBjaGVjay4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICBC TiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gY3VydmUuDQo+ ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gPiA+ICtFY1BvaW50SXNPbkN1cnZlICgNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY0dyb3VwLA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4g PiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gRUNfUE9JTlRfaXNfb25fY3VydmUgKEVj R3JvdXAsIEVjUG9pbnQsIEJuQ3R4KSA9PSAxOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIENoZWNrIGlmIHRoZSBzdXBwbGll ZCBwb2ludCBpcyBhdCBpbmZpbml0eS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFy YW1baW5dICBFY1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgQXQgaW5maW5pdHkuDQo+ID4gPiA+ID4g PiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4gKyoqLw0K PiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtF Y1BvaW50SXNBdEluZmluaXR5ICgNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dy b3VwLA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQNCj4gPiA+ID4gPiA+ ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gRUNfUE9JTlRfaXNf YXRfaW5maW5pdHkgKEVjR3JvdXAsIEVjUG9pbnQpID09IDE7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgQ2hlY2sgaWYgRUMg cG9pbnRzIGFyZSBlcXVhbC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5d ICBFY1BvaW50QSAgRUMgcG9pbnQgQS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9p bnRCICBFQyBwb2ludCBCLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJO IGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiA+IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBID09IEIuDQo+ID4g PiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4g KyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4g PiA+ICtFY1BvaW50RXF1YWwgKA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3Jv dXAsDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiA+ID4g PiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAg ICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4g PiArICByZXR1cm4gRUNfUE9JTlRfY21wIChFY0dyb3VwLCBFY1BvaW50QSwgRWNQb2ludEIsIEJu Q3R4KSA9PSAwOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsv KioNCj4gPiA+ID4gPiA+ICsgIFNldCBFQyBwb2ludCBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBQ b2ludHMgY2FuIGJlIGRlc2NyaWJlZCBpbg0KPiA+IHRlcm1zIG9mDQo+ID4gPiA+ID4gPiArICB0 aGVpciBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBGb3IgYSBwb2ludCAoeCwgeSksIGZvciBhbnkg Z2l2ZW4NCj4gPiB2YWx1ZSBmb3IgeA0KPiA+ID4gPiA+ID4gKyAgc3VjaCB0aGF0IHRoZSBwb2lu dCBpcyBvbiB0aGUgY3VydmUgdGhlcmUgd2lsbCBvbmx5IGV2ZXIgYmUgdHdvDQo+ID4gcG9zc2li bGUNCj4gPiA+ID4gPiA+ICsgIHZhbHVlcyBmb3IgeS4gVGhlcmVmb3JlLCBhIHBvaW50IGNhbiBi ZSBzZXQgdXNpbmcgdGhpcyBmdW5jdGlvbg0KPiA+IHdoZXJlIEJuWCBpcw0KPiA+ID4gPiA+ID4g KyAgdGhlIHggY29vcmRpbmF0ZSBhbmQgWUJpdCBpcyBhIHZhbHVlIDAgb3IgMSB0byBpZGVudGlm eSB3aGljaCBvZiB0aGUNCj4gPiB0d28NCj4gPiA+ID4gPiA+ICsgIHBvc3NpYmxlIHZhbHVlcyBm b3IgeSBzaG91bGQgYmUgdXNlZC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFt W2luXSAgRWNQb2ludCAgICBFQyBQb2ludC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJu WCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgWUJpdCAg ICAgICAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggWSB2YWx1ZSBpcyB1c2VkLg0KPiA+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4g PiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0 dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFM U0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArQk9P TEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjUG9pbnRTZXRDb21wcmVz c2VkQ29vcmRpbmF0ZXMgKA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAs DQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqRWNQb2ludCwNCj4gPiA+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpCblgsDQo+ID4gPiA+ID4gPiArICBJTiBVSU5UOCAgICAgICBZQml0 LA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gPiArICAp DQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVDX1BPSU5U X3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzDQo+ID4gKEVjR3JvdXAsIEVjUG9pbnQsIEJuWCwg WUJpdCwgQm5DdHgpOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsvLw0KPiA+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NCj4gPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ID4gPiA+ ICsvLyAgICBFbGxpcHRpYyBDdXJ2ZSBEaWZmaWUgSGVsbG1hbiBQcmltaXRpdmVzDQo+ID4gPiA+ ID4gPiArLy8NCj4gPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQo+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBBbGxvY2F0ZXMgYW5kIElu aXRpYWxpemVzIG9uZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0IGZvciBzdWJzZXF1ZW50DQo+ID4g dXNlDQo+ID4gPiA+ID4gPiArICB3aXRoIHRoZSBOSUQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICBAcGFyYW1baW5dICBOaWQgICBJZGVudGlmeWluZyBudW1iZXIgZm9yIHRoZSBFQ0Mg Y3VydmUgKERlZmluZWQNCj4gPiBpbg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg QmFzZUNyeXB0TGliLmgpLg0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgICAgUG9pbnRlciB0byB0 aGUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCB0aGF0IGhhcyBiZWVuDQo+ID4gaW5pdGlhbGl6ZWQu DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICBJZiB0aGUgYWxsb2NhdGlvbnMgZmFpbHMsIEVj TmV3QnlOaWQoKSByZXR1cm5zIE5VTEwuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiAr Vk9JRCAqDQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNOZXdCeU5pZCAoDQo+ ID4gPiA+ID4gPiArICBJTiBVSU5UTiAgTmlkDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4g PiArew0KPiA+ID4gPiA+ID4gKyAgSU5UMzIgIE9wZW5Tc2xOaWQ7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArICBPcGVuU3NsTmlkID0gQ3J5cHRvTmlkVG9PcGVuc3NsTmlkIChOaWQpOw0K PiA+ID4gPiA+ID4gKyAgaWYgKE9wZW5Tc2xOaWQgPCAwKSB7DQo+ID4gPiA+ID4gPiArICAgIHJl dHVybiBOVUxMOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g KyAgcmV0dXJuIChWT0lEICopRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lIChPcGVuU3NsTmlkKTsN Cj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ ID4gPiArICBSZWxlYXNlIHRoZSBzcGVjaWZpZWQgRUMgY29udGV4dC4NCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjQ29udGV4dCAgUG9pbnRlciB0byB0aGUgRUMg Y29udGV4dCB0byBiZSByZWxlYXNlZC4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtW T0lEDQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNGcmVlICgNCj4gPiA+ID4g PiA+ICsgIElOICBWT0lEICAqRWNDb250ZXh0DQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4g PiArew0KPiA+ID4gPiA+ID4gKyAgRUNfS0VZX2ZyZWUgKChFQ19LRVkgKilFY0NvbnRleHQpOw0K PiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4g PiA+ICsgIEdlbmVyYXRlcyBFQyBrZXkgYW5kIHJldHVybnMgRUMgcHVibGljIGtleSAoWCwgWSks IFBsZWFzZSBub3RlLA0KPiA+IHRoaXMgZnVuY3Rpb24gdXNlcw0KPiA+ID4gPiA+ID4gKyAgcHNl dWRvIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiBUaGUgY2FsbGVyIG11c3QgbWFrZSBzdXJlDQo+ ID4gUmFuZG9tU2VlZCgpDQo+ID4gPiA+ID4gPiArICBmdW5jdGlvbiB3YXMgcHJvcGVybHkgY2Fs bGVkIGJlZm9yZS4NCj4gPiA+ID4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBiZSBjb3Jy ZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZC4NCj4gPiA+ID4gPiA+ICsgIFRoaXMgZnVu Y3Rpb24gZ2VuZXJhdGVzIHJhbmRvbSBzZWNyZXQsIGFuZCBjb21wdXRlcyB0aGUgcHVibGljDQo+ ID4ga2V5IChYLCBZKSwgd2hpY2ggaXMNCj4gPiA+ID4gPiA+ICsgIHJldHVybmVkIHZpYSBwYXJh bWV0ZXIgUHVibGljLCBQdWJsaWNTaXplLg0KPiA+ID4gPiA+ID4gKyAgWCBpcyB0aGUgZmlyc3Qg aGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFB1YmxpY1NpemUgLyAyLA0KPiA+ID4gPiA+ ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUHVibGljIHdpdGggc2l6ZSBiZWluZyBQdWJs aWNTaXplIC8gMi4NCj4gPiA+ID4gPiA+ICsgIEVDIGNvbnRleHQgaXMgdXBkYXRlZCBhY2NvcmRp bmdseS4NCj4gPiA+ID4gPiA+ICsgIElmIHRoZSBQdWJsaWMgYnVmZmVyIGlzIHRvbyBzbWFsbCB0 byBob2xkIHRoZSBwdWJsaWMgWCwgWSwgRkFMU0UgaXMNCj4gPiByZXR1cm5lZCBhbmQNCj4gPiA+ ID4gPiA+ICsgIFB1YmxpY1NpemUgaXMgc2V0IHRvIHRoZSByZXF1aXJlZCBidWZmZXIgc2l6ZSB0 byBvYnRhaW4gdGhlIHB1YmxpYyBYLA0KPiA+IFkuDQo+ID4gPiA+ID4gPiArICBGb3IgUC0yNTYs IHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRl DQo+ID4gaXMgWS4NCj4gPiA+ID4gPiA+ICsgIEZvciBQLTM4NCwgdGhlIFB1YmxpY1NpemUgaXMg OTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwgU2Vjb25kIDQ4LWJ5dGUNCj4gPiBpcyBZLg0KPiA+ID4g PiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUg aXMgWCwgU2Vjb25kIDY2LWJ5dGUNCj4gPiBpcyBZLg0KPiA+ID4gPiA+ID4gKyAgSWYgRWNDb250 ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ID4gKyAgSWYgUHVibGlj U2l6ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiA+ICsgIElmIFB1Ymxp Y1NpemUgaXMgbGFyZ2UgZW5vdWdoIGJ1dCBQdWJsaWMgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFM U0UuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgIFBvaW50 ZXIgdG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIFB1 YmxpY0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2ZQ0KPiA+IGdlbmVyYXRl ZCBwdWJsaWMgWCxZLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNLZXlT aXplICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlcg0KPiA+IGluIGJ5dGVzLg0K PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQs IHRoZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVibGljDQo+ID4gYnVmZmVyIGluIGJ5dGVz Lg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9u IHN1Y2NlZWRlZC4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEVDIHB1YmxpYyBYLFkg Z2VuZXJhdGlvbiBmYWlsZWQuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBQdWJsaWNL ZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91Z2guDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g PiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjR2VuZXJhdGVL ZXkgKA0KPiA+ID4gPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ID4g PiA+ICsgIE9VVCAgICAgVUlOVDggICpQdWJsaWNLZXksDQo+ID4gPiA+ID4gPiArICBJTiBPVVQg IFVJTlROICAqUHVibGljS2V5U2l6ZQ0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sN Cj4gPiA+ID4gPiA+ICsgIEVDX0tFWSAgICAgICAgICAqRWNLZXk7DQo+ID4gPiA+ID4gPiArICBD T05TVCBFQ19HUk9VUCAgKkdyb3VwOw0KPiA+ID4gPiA+ID4gKyAgQ09OU1QgRUNfUE9JTlQgICpF Y1BvaW50Ow0KPiA+ID4gPiA+ID4gKyAgQk9PTEVBTiAgICAgICAgIFJldFZhbDsNCj4gPiA+ID4g PiA+ICsgIEJJR05VTSAgICAgICAgICAqQm5YOw0KPiA+ID4gPiA+ID4gKyAgQklHTlVNICAgICAg ICAgICpCblk7DQo+ID4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgSGFsZlNpemU7DQo+ID4g PiA+ID4gPiArICBJTlROICAgICAgICAgICAgWFNpemU7DQo+ID4gPiA+ID4gPiArICBJTlROICAg ICAgICAgICAgWVNpemU7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoKEVjQ29u dGV4dCA9PSBOVUxMKSB8fCAoUHVibGljS2V5U2l6ZSA9PSBOVUxMKSkgew0KPiA+ID4gPiA+ID4g KyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArICBpZiAoKFB1YmxpY0tleSA9PSBOVUxMKSAmJiAoKlB1YmxpY0tleVNpemUgIT0g MCkpIHsNCj4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ID4gKyAgfQ0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgRWNLZXkgICAgPSAoRUNfS0VZICopRWNDb250 ZXh0Ow0KPiA+ID4gPiA+ID4gKyAgR3JvdXAgICAgPSBFQ19LRVlfZ2V0MF9ncm91cCAoRWNLZXkp Ow0KPiA+ID4gPiA+ID4gKyAgSGFsZlNpemUgPSAoRUNfR1JPVVBfZ2V0X2RlZ3JlZSAoR3JvdXAp ICsgNykgLyA4Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgLy8gQXNzdW1lIFJBTkRf c2VlZCB3YXMgY2FsbGVkDQo+ID4gPiA+ID4gPiArICBpZiAoRUNfS0VZX2dlbmVyYXRlX2tleSAo RWNLZXkpICE9IDEpIHsNCj4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKCpQdWJsaWNLZXlTaXpl IDwgSGFsZlNpemUgKiAyKSB7DQo+ID4gPiA+ID4gPiArICAgICpQdWJsaWNLZXlTaXplID0gSGFs ZlNpemUgKiAyOw0KPiA+ID4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gPiAr ICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAqUHVibGljS2V5U2l6ZSA9IEhhbGZT aXplICogMjsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEVjUG9pbnQgPSBFQ19LRVlf Z2V0MF9wdWJsaWNfa2V5IChFY0tleSk7DQo+ID4gPiA+ID4gPiArICBpZiAoRWNQb2ludCA9PSBO VUxMKSB7DQo+ID4gPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIFJldFZhbCA9IEZBTFNFOw0KPiA+ID4gPiA+ ID4gKyAgQm5YICAgID0gQk5fbmV3ICgpOw0KPiA+ID4gPiA+ID4gKyAgQm5ZICAgID0gQk5fbmV3 ICgpOw0KPiA+ID4gPiA+ID4gKyAgaWYgKChCblggPT0gTlVMTCkgfHwgKEJuWSA9PSBOVUxMKSkg ew0KPiA+ID4gPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRl cyAoR3JvdXAsIEVjUG9pbnQsIEJuWCwgQm5ZLA0KPiA+IE5VTEwpICE9IDEpIHsNCj4gPiA+ID4g PiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgWFNpemUgPSBCTl9udW1fYnl0ZXMgKEJuWCk7DQo+ID4gPiA+ID4gPiArICBZ U2l6ZSA9IEJOX251bV9ieXRlcyAoQm5ZKTsNCj4gPiA+ID4gPiA+ICsgIGlmICgoWFNpemUgPD0g MCkgfHwgKFlTaXplIDw9IDApKSB7DQo+ID4gPiA+ID4gPiArICAgIGdvdG8gZmFpbDsNCj4gPiA+ ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEFTU0VSVCAoKFVJTlRO KVhTaXplIDw9IEhhbGZTaXplICYmIChVSU5UTilZU2l6ZSA8PSBIYWxmU2l6ZSk7DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArICBaZXJvTWVtIChQdWJsaWNLZXksICpQdWJsaWNLZXlTaXpl KTsNCj4gPiA+ID4gPiA+ICsgIEJOX2JuMmJpbiAoQm5YLCAmUHVibGljS2V5WzAgKyBIYWxmU2l6 ZSAtIFhTaXplXSk7DQo+ID4gPiA+ID4gPiArICBCTl9ibjJiaW4gKEJuWSwgJlB1YmxpY0tleVtI YWxmU2l6ZSArIEhhbGZTaXplIC0gWVNpemVdKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgIFJldFZhbCA9IFRSVUU7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArZmFpbDoNCj4g PiA+ID4gPiA+ICsgIEJOX2ZyZWUgKEJuWCk7DQo+ID4gPiA+ID4gPiArICBCTl9mcmVlIChCblkp Ow0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIFJldFZhbDsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZXRzIHRoZSBwdWJsaWMg a2V5IGNvbXBvbmVudCBmcm9tIHRoZSBlc3RhYmxpc2hlZCBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ ID4gKyAgVGhlIEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBF Y05ld0J5TmlkLCBhbmQNCj4gPiBzdWNjZXNzZnVsbHkNCj4gPiA+ID4gPiA+ICsgIGdlbmVyYXRl IGtleSBwYWlyIGZyb20gRWNHZW5lcmF0ZUtleSgpLg0KPiA+ID4gPiA+ID4gKyAgRm9yIFAtMjU2 LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0 ZQ0KPiA+IGlzIFkuDQo+ID4gPiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlz IDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlDQo+ID4gaXMgWS4NCj4gPiA+ ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRl IGlzIFgsIFNlY29uZCA2Ni1ieXRlDQo+ID4gaXMgWS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp biwgb3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0byBFQyBjb250ZXh0IGJlaW5nIHNldC4N Cj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0 byB0IGJ1ZmZlciB0byByZWNlaXZlDQo+ID4gZ2VuZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiA+ ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1YmxpY0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6 ZSBvZiBQdWJsaWMgYnVmZmVyDQo+ID4gaW4gYnl0ZXMuDQo+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1 cm5lZCBpbiBQdWJsaWMNCj4gPiBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ID4gPiArICBAcmV0 dmFsICBUUlVFICAgRUMga2V5IGNvbXBvbmVudCB3YXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4N Cj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgIEZBTFNFICBJbnZhbGlkIEVDIGtleSBjb21wb25lbnQu DQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VG SUFQSQ0KPiA+ID4gPiA+ID4gK0VjR2V0UHViS2V5ICgNCj4gPiA+ID4gPiA+ICsgIElOIE9VVCAg Vk9JRCAgICpFY0NvbnRleHQsDQo+ID4gPiA+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGlj S2V5LA0KPiA+ID4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBFQ19LRVkgICAgICAg ICAgKkVjS2V5Ow0KPiA+ID4gPiA+ID4gKyAgQ09OU1QgRUNfR1JPVVAgICpHcm91cDsNCj4gPiA+ ID4gPiA+ICsgIENPTlNUIEVDX1BPSU5UICAqRWNQb2ludDsNCj4gPiA+ID4gPiA+ICsgIEJJR05V TSAgICAgICAgICAqQm5YOw0KPiA+ID4gPiA+ID4gKyAgQklHTlVNICAgICAgICAgICpCblk7DQo+ ID4gPiA+ID4gPiArICBVSU5UTiAgICAgICAgICAgSGFsZlNpemU7DQo+ID4gPiA+ID4gPiArICBJ TlROICAgICAgICAgICAgWFNpemU7DQo+ID4gPiA+ID4gPiArICBJTlROICAgICAgICAgICAgWVNp emU7DQo+ID4gPiA+ID4gPiArICBCT09MRUFOICAgICAgICAgUmV0VmFsOw0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgaWYgKChFY0NvbnRleHQgPT0gTlVMTCkgfHwgKFB1YmxpY0tleVNp emUgPT0gTlVMTCkpIHsNCj4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKChQdWJsaWNLZXkgPT0g TlVMTCkgJiYgKCpQdWJsaWNLZXlTaXplICE9IDApKSB7DQo+ID4gPiA+ID4gPiArICAgIHJldHVy biBGQUxTRTsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsg IEVjS2V5ICAgID0gKEVDX0tFWSAqKUVjQ29udGV4dDsNCj4gPiA+ID4gPiA+ICsgIEdyb3VwICAg ID0gRUNfS0VZX2dldDBfZ3JvdXAgKEVjS2V5KTsNCj4gPiA+ID4gPiA+ICsgIEhhbGZTaXplID0g KEVDX0dST1VQX2dldF9kZWdyZWUgKEdyb3VwKSArIDcpIC8gODsNCj4gPiA+ID4gPiA+ICsgIGlm ICgqUHVibGljS2V5U2l6ZSA8IEhhbGZTaXplICogMikgew0KPiA+ID4gPiA+ID4gKyAgICAqUHVi bGljS2V5U2l6ZSA9IEhhbGZTaXplICogMjsNCj4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZBTFNF Ow0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgKlB1Ymxp Y0tleVNpemUgPSBIYWxmU2l6ZSAqIDI7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBF Y1BvaW50ID0gRUNfS0VZX2dldDBfcHVibGljX2tleSAoRWNLZXkpOw0KPiA+ID4gPiA+ID4gKyAg aWYgKEVjUG9pbnQgPT0gTlVMTCkgew0KPiA+ID4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBSZXRWYWwgPSBG QUxTRTsNCj4gPiA+ID4gPiA+ICsgIEJuWCAgICA9IEJOX25ldyAoKTsNCj4gPiA+ID4gPiA+ICsg IEJuWSAgICA9IEJOX25ldyAoKTsNCj4gPiA+ID4gPiA+ICsgIGlmICgoQm5YID09IE5VTEwpIHx8 IChCblkgPT0gTlVMTCkpIHsNCj4gPiA+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiA+ ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKEVDX1BPSU5UX2dldF9h ZmZpbmVfY29vcmRpbmF0ZXMgKEdyb3VwLCBFY1BvaW50LCBCblgsIEJuWSwNCj4gPiBOVUxMKSAh PSAxKSB7DQo+ID4gPiA+ID4gPiArICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gPiA+ICsgIH0NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIFhTaXplID0gQk5fbnVtX2J5dGVzIChCblgpOw0K PiA+ID4gPiA+ID4gKyAgWVNpemUgPSBCTl9udW1fYnl0ZXMgKEJuWSk7DQo+ID4gPiA+ID4gPiAr ICBpZiAoKFhTaXplIDw9IDApIHx8IChZU2l6ZSA8PSAwKSkgew0KPiA+ID4gPiA+ID4gKyAgICBn b3RvIGZhaWw7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICBBU1NFUlQgKChVSU5UTilYU2l6ZSA8PSBIYWxmU2l6ZSAmJiAoVUlOVE4pWVNpemUgPD0gSGFs ZlNpemUpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKFB1YmxpY0tleSAhPSBO VUxMKSB7DQo+ID4gPiA+ID4gPiArICAgIFplcm9NZW0gKFB1YmxpY0tleSwgKlB1YmxpY0tleVNp emUpOw0KPiA+ID4gPiA+ID4gKyAgICBCTl9ibjJiaW4gKEJuWCwgJlB1YmxpY0tleVswICsgSGFs ZlNpemUgLSBYU2l6ZV0pOw0KPiA+ID4gPiA+ID4gKyAgICBCTl9ibjJiaW4gKEJuWSwgJlB1Ymxp Y0tleVtIYWxmU2l6ZSArIEhhbGZTaXplIC0gWVNpemVdKTsNCj4gPiA+ID4gPiA+ICsgIH0NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIFJldFZhbCA9IFRSVUU7DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArZmFpbDoNCj4gPiA+ID4gPiA+ICsgIEJOX2ZyZWUgKEJuWCk7DQo+ID4g PiA+ID4gPiArICBCTl9mcmVlIChCblkpOw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIFJldFZhbDsN Cj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ ID4gPiArICBDb21wdXRlcyBleGNoYW5nZWQgY29tbW9uIGtleS4NCj4gPiA+ID4gPiA+ICsgIEdp dmVuIHBlZXIncyBwdWJsaWMga2V5IChYLCBZKSwgdGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUN Cj4gPiBleGNoYW5nZWQgY29tbW9uIGtleSwNCj4gPiA+ID4gPiA+ICsgIGJhc2VkIG9uIGl0cyBv d24gY29udGV4dCBpbmNsdWRpbmcgdmFsdWUgb2YgY3VydmUgcGFyYW1ldGVyIGFuZA0KPiA+IHJh bmRvbSBzZWNyZXQuDQo+ID4gPiA+ID4gPiArICBYIGlzIHRoZSBmaXJzdCBoYWxmIG9mIFBlZXJQ dWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNTaXplIC8gMiwNCj4gPiA+ID4gPiA+ICsg IFkgaXMgdGhlIHNlY29uZCBoYWxmIG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQ dWJsaWNTaXplIC8NCj4gPiAyLg0KPiA+ID4gPiA+ID4gKyAgSWYgcHVibGljIGtleSBpcyBjb21w cmVzc2VkLCB0aGUgUGVlclB1YmxpYyB3aWxsIG9ubHkgY29udGFpbiBoYWxmDQo+ID4ga2V5IChY KS4NCj4gPiA+ID4gPiA+ICsgIElmIEVjQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxT RS4NCj4gPiA+ID4gPiA+ICsgIElmIFBlZXJQdWJsaWMgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFM U0UuDQo+ID4gPiA+ID4gPiArICBJZiBQZWVyUHVibGljU2l6ZSBpcyAwLCB0aGVuIHJldHVybiBG QUxTRS4NCj4gPiA+ID4gPiA+ICsgIElmIEtleSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4N Cj4gPiA+ID4gPiA+ICsgIElmIEtleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaCwgdGhlbiByZXR1 cm4gRkFMU0UuDQo+ID4gPiA+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQZWVyUHVibGljU2l6ZSBp cyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItDQo+ID4gYnl0ZSBpcyBZLg0KPiA+ ID4gPiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUGVlclB1YmxpY1NpemUgaXMgOTYuIEZpcnN0IDQ4 LWJ5dGUgaXMgWCwgU2Vjb25kIDQ4LQ0KPiA+IGJ5dGUgaXMgWS4NCj4gPiA+ID4gPiA+ICsgIEZv ciBQLTUyMSwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBT ZWNvbmQgNjYtDQo+ID4gYnl0ZSBpcyBZLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRd ICBFY0NvbnRleHQgICAgICAgICAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dC4NCj4gPiA+ID4g PiA+ICsgIEBwYXJhbVtpbl0gICAgICAgUGVlclB1YmxpYyAgICAgICAgIFBvaW50ZXIgdG8gdGhl IHBlZXIncyBwdWJsaWMgWCxZLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgICBQZWVy UHVibGljU2l6ZSAgICAgU2l6ZSBvZiBwZWVyJ3MgcHVibGljIFgsWSBpbiBieXRlcy4NCj4gPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgQ29tcHJlc3NGbGFnICAgICAgIEZsYWcgb2YgUGVl clB1YmxpYyBpcw0KPiA+IGNvbXByZXNzZWQgb3Igbm90Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFt W291dF0gICAgICBLZXkgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIHJl Y2VpdmUNCj4gPiBnZW5lcmF0ZWQga2V5Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRd ICBLZXlTaXplICAgICAgICAgICAgT24gaW5wdXQsIHRoZSBzaXplIG9mIEtleSBidWZmZXIgaW4N Cj4gPiBieXRlcy4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBLZXkNCj4gPiBi dWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFQyBleGNoYW5n ZWQga2V5IGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxT RSAgRUMgZXhjaGFuZ2VkIGtleSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ID4gPiA+ICsgIEBy ZXR2YWwgRkFMU0UgIEtleVNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ID4gPiA+ICsq Ki8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4g PiArRWNEaENvbXB1dGVLZXkgKA0KPiA+ID4gPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgICAgICAg KkVjQ29udGV4dCwNCj4gPiA+ID4gPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDggICpQZWVyUHVi bGljLA0KPiA+ID4gPiA+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgUGVlclB1YmxpY1NpemUs DQo+ID4gPiA+ID4gPiArICBJTiAgICAgIENPTlNUIElOVDMyICAqQ29tcHJlc3NGbGFnLA0KPiA+ ID4gPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgICAgICAgKktleSwNCj4gPiA+ID4gPiA+ICsgIElO IE9VVCAgVUlOVE4gICAgICAgICpLZXlTaXplDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4g PiArew0KPiA+ID4gPiA+ID4gKyAgRUNfS0VZICAgICAgICAgICpFY0tleTsNCj4gPiA+ID4gPiA+ ICsgIEVDX0tFWSAgICAgICAgICAqUGVlckVjS2V5Ow0KPiA+ID4gPiA+ID4gKyAgQ09OU1QgRUNf R1JPVVAgICpHcm91cDsNCj4gPiA+ID4gPiA+ICsgIEJPT0xFQU4gICAgICAgICBSZXRWYWw7DQo+ ID4gPiA+ID4gPiArICBCSUdOVU0gICAgICAgICAgKkJuWDsNCj4gPiA+ID4gPiA+ICsgIEJJR05V TSAgICAgICAgICAqQm5ZOw0KPiA+ID4gPiA+ID4gKyAgRUNfUE9JTlQgICAgICAgICpQb2ludDsN Cj4gPiA+ID4gPiA+ICsgIElOVDMyICAgICAgICAgICBPcGVuU3NsTmlkOw0KPiA+ID4gPiA+ID4g KyAgVUlOVE4gICAgICAgICAgIEhhbGZTaXplOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g KyAgaWYgKChFY0NvbnRleHQgPT0gTlVMTCkgfHwgKFBlZXJQdWJsaWMgPT0gTlVMTCkgfHwgKEtl eVNpemUgPT0NCj4gPiBOVUxMKSkgew0KPiA+ID4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoKEtleSA9 PSBOVUxMKSAmJiAoKktleVNpemUgIT0gMCkpIHsNCj4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIEZB TFNFOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYg KFBlZXJQdWJsaWNTaXplID4gSU5UX01BWCkgew0KPiA+ID4gPiA+ID4gKyAgICByZXR1cm4gRkFM U0U7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBFY0tl eSAgICA9IChFQ19LRVkgKilFY0NvbnRleHQ7DQo+ID4gPiA+ID4gPiArICBHcm91cCAgICA9IEVD X0tFWV9nZXQwX2dyb3VwIChFY0tleSk7DQo+ID4gPiA+ID4gPiArICBIYWxmU2l6ZSA9IChFQ19H Uk9VUF9nZXRfZGVncmVlIChHcm91cCkgKyA3KSAvIDg7DQo+ID4gPiA+ID4gPiArICBpZiAoKENv bXByZXNzRmxhZyA9PSBOVUxMKSAmJiAoUGVlclB1YmxpY1NpemUgIT0gSGFsZlNpemUgKiAyKSkg ew0KPiA+ID4gPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gPiArICB9DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoKENvbXByZXNzRmxhZyAhPSBOVUxMKSAmJiAo UGVlclB1YmxpY1NpemUgIT0gSGFsZlNpemUpKSB7DQo+ID4gPiA+ID4gPiArICAgIHJldHVybiBG QUxTRTsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGlm ICgqS2V5U2l6ZSA8IEhhbGZTaXplKSB7DQo+ID4gPiA+ID4gPiArICAgICpLZXlTaXplID0gSGFs ZlNpemU7DQo+ID4gPiA+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICsgIH0N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICpLZXlTaXplID0gSGFsZlNpemU7DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBSZXRWYWwgICAgPSBGQUxTRTsNCj4gPiA+ID4gPiA+ ICsgIFBvaW50ICAgICA9IE5VTEw7DQo+ID4gPiA+ID4gPiArICBCblggICAgICAgPSBCTl9iaW4y Ym4gKFBlZXJQdWJsaWMsIChJTlQzMilIYWxmU2l6ZSwgTlVMTCk7DQo+ID4gPiA+ID4gPiArICBC blkgICAgICAgPSBOVUxMOw0KPiA+ID4gPiA+ID4gKyAgUG9pbnQgICAgID0gRUNfUE9JTlRfbmV3 IChHcm91cCk7DQo+ID4gPiA+ID4gPiArICBQZWVyRWNLZXkgPSBOVUxMOw0KPiA+ID4gPiA+ID4g KyAgaWYgKChCblggPT0gTlVMTCkgfHwgKFBvaW50ID09IE5VTEwpKSB7DQo+ID4gPiA+ID4gPiAr ICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgIGlmIChDb21wcmVzc0ZsYWcgPT0gTlVMTCkgew0KPiA+ID4gPiA+ID4gKyAgICBCblkg PSBCTl9iaW4yYm4gKFBlZXJQdWJsaWMgKyBIYWxmU2l6ZSwgKElOVDMyKUhhbGZTaXplLCBOVUxM KTsNCj4gPiA+ID4gPiA+ICsgICAgaWYgKEJuWSA9PSBOVUxMKSB7DQo+ID4gPiA+ID4gPiArICAg ICAgZ290byBmYWlsOw0KPiA+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICAgIGlmIChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzIChHcm91cCwgUG9p bnQsIEJuWCwgQm5ZLA0KPiA+IE5VTEwpICE9IDEpIHsNCj4gPiA+ID4gPiA+ICsgICAgICBnb3Rv IGZhaWw7DQo+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ICsgIH0gZWxzZSB7DQo+ID4g PiA+ID4gPiArICAgIGlmIChFQ19QT0lOVF9zZXRfY29tcHJlc3NlZF9jb29yZGluYXRlcyAoR3Jv dXAsIFBvaW50LCBCblgsDQo+ID4gKkNvbXByZXNzRmxhZywgTlVMTCkgIT0gMSkgew0KPiA+ID4g PiA+ID4gKyAgICAgIGdvdG8gZmFpbDsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4g KyAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgLy8gVmFsaWRhdGUgTklTVCBFQ0RI IHB1YmxpYyBrZXkNCj4gPiA+ID4gPiA+ICsgIE9wZW5Tc2xOaWQgPSBFQ19HUk9VUF9nZXRfY3Vy dmVfbmFtZSAoR3JvdXApOw0KPiA+ID4gPiA+ID4gKyAgUGVlckVjS2V5ICA9IEVDX0tFWV9uZXdf YnlfY3VydmVfbmFtZSAoT3BlblNzbE5pZCk7DQo+ID4gPiA+ID4gPiArICBpZiAoUGVlckVjS2V5 ID09IE5VTEwpIHsNCj4gPiA+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiA+ID4gKyAg fQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgaWYgKEVDX0tFWV9zZXRfcHVibGljX2tl eSAoUGVlckVjS2V5LCBQb2ludCkgIT0gMSkgew0KPiA+ID4gPiA+ID4gKyAgICBnb3RvIGZhaWw7 DQo+ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoRUNf S0VZX2NoZWNrX2tleSAoUGVlckVjS2V5KSAhPSAxKSB7DQo+ID4gPiA+ID4gPiArICAgIGdvdG8g ZmFpbDsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGlm IChFQ0RIX2NvbXB1dGVfa2V5IChLZXksICpLZXlTaXplLCBQb2ludCwgRWNLZXksIE5VTEwpIDw9 IDApIHsNCj4gPiA+ID4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgUmV0VmFsID0gVFJVRTsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICtmYWlsOg0KPiA+ID4gPiA+ID4gKyAgQk5fZnJlZSAoQm5YKTsNCj4gPiA+ ID4gPiA+ICsgIEJOX2ZyZWUgKEJuWSk7DQo+ID4gPiA+ID4gPiArICBFQ19QT0lOVF9mcmVlIChQ b2ludCk7DQo+ID4gPiA+ID4gPiArICBFQ19LRVlfZnJlZSAoUGVlckVjS2V5KTsNCj4gPiA+ID4g PiA+ICsgIHJldHVybiBSZXRWYWw7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gZGlmZiAt LWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVjTnVsbC5jDQo+ ID4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFY051bGwuYw0KPiA+ ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAw MDAuLmQ5ZjEwMDRmNmMNCj4gPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ICsr KyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdEVjTnVsbC5jDQo+ID4g PiA+ID4gPiBAQCAtMCwwICsxLDQ5NiBAQA0KPiA+ID4gPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4g PiA+ID4gKyAgRWxsaXB0aWMgQ3VydmUgYW5kIEVDREggQVBJIGltcGxlbWVudGF0aW9uIGJhc2Vk IG9uIE9wZW5TU0wNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIENvcHlyaWdodCAoYykg MjAyMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4g PiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlQ3J5cHRMaWIuaD4NCj4gPiA+ID4gPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0K PiA+ID4gPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVjR3JvdXAgb2JqZWN0LiBUaGlz IG9iamVjdCByZXByZXNlbnRzIGFuIEVDDQo+ID4gY3VydmUgYW5kDQo+ID4gPiA+ID4gPiArICBh bmQgaXMgdXNlZCBmb3IgY2FsY3VsYXRpb24gd2l0aGluIHRoaXMgZ3JvdXAuIFRoaXMgb2JqZWN0 IHNob3VsZCBiZQ0KPiA+IGZyZWVkDQo+ID4gPiA+ID4gPiArICB1c2luZyBFY0dyb3VwRnJlZSgp IGZ1bmN0aW9uLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3J5 cHRvTmlkICAgSWRlbnRpZnlpbmcgbnVtYmVyIGZvciB0aGUgRUNDIGN1cnZlDQo+ID4gKERlZmlu ZWQgaW4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VDcnlwdExp Yi5oKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRWNHcm91cCBvYmpl Y3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICBP biBmYWlsdXJlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1ZPSUQgKg0KPiA+ID4g PiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjR3JvdXBJbml0ICgNCj4gPiA+ID4gPiA+ICsg IElOIFVJTlROICBDcnlwdG9OaWQNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBOVUxM Ow0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ ID4gPiA+ICsgIEdldCBFQyBjdXJ2ZSBwYXJhbWV0ZXJzLiBXaGlsZSBlbGxpcHRpYyBjdXJ2ZSBl cXVhdGlvbiBpcyBZXjIgbW9kDQo+ID4gUCA9IChYXjMgKyBBWCArIEIpIE1vZCBQLg0KPiA+ID4g PiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBv YmplY3RzICB0byB0aGUNCj4gPiBjb3JyZXNwb25kaW5nDQo+ID4gPiA+ID4gPiArICB2YWx1ZXMu IFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIGFsbCB0aGUgIm91dCIgQmlnTnVtYmVyDQo+ ID4gcGFyYW1ldGVycw0KPiA+ID4gPiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBn cm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCblByaW1lICAgIEdyb3Vw IHByaW1lIG51bWJlci4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQSAgICAgICAgQSBj b2VmZmljaWVudC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQiAgICAgICAgQiBjb2Vm ZmljaWVudC4uDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRl eHQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAg T24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndp c2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjR3JvdXBHZXRDdXJ2ZSAoDQo+ID4gPiA+ID4gPiArICBJ TiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpC blByaW1lLA0KPiA+ID4gPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuQSwNCj4gPiA+ID4gPiA+ ICsgIE9VVCBWT0lEICAgICAgICpCbkIsDQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAq Qm5DdHgNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBB U1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZXQg RUMgZ3JvdXAgb3JkZXIuDQo+ID4gPiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRo ZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdCB0byB0aGUNCj4gPiBjb3JyZXNwb25kaW5nDQo+ ID4gPiA+ID4gPiArICB2YWx1ZS4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgdGhhdCB0 aGUgIm91dCIgQmlnTnVtYmVyDQo+ID4gcGFyYW1ldGVyDQo+ID4gPiA+ID4gPiArICBpcyBwcm9w ZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0 XSBCbk9yZGVyICAgR3JvdXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBA cmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4g PiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY0dyb3Vw R2V0T3JkZXIgKA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICpFY0dyb3VwLA0KPiA+ID4gPiA+ ID4gKyAgT1VUIFZPSUQgICpCbk9yZGVyDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiAr ew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gPiArICByZXR1cm4g RkFMU0U7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0K PiA+ID4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBncm91cCBvYmplY3Qg dXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QgdG8gZnJlZS4NCj4gPiA+ID4gPiA+ICsq Ki8NCj4gPiA+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiAr RWNHcm91cEZyZWUgKA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgKkVjR3JvdXANCj4gPiA+ID4g PiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsN Cj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ ID4gPiArICBJbml0aWFsaXplIG5ldyBvcGFxdWUgRUMgUG9pbnQgb2JqZWN0LiBUaGlzIG9iamVj dCByZXByZXNlbnRzIGFuIEVDDQo+ID4gcG9pbnQNCj4gPiA+ID4gPiA+ICsgIHdpdGhpbiB0aGUg Z2l2ZW4gRUMgZ3JvdXAgKGN1cnZlKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVDIEdyb3VwLCBwcm9wZXJseSBpbml0aWFsaXplZCB1c2luZyBFY0dyb3VwSW5p dCgpLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBFQyBQb2ludCBvYmpl Y3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICAg T24gZmFpbHVyZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtWT0lEICoNCj4gPiA+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY1BvaW50SW5pdCAoDQo+ID4gPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNHcm91cA0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4g K3sNCj4gPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJu IE5VTEw7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0K PiA+ID4gPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBQb2ludCBvYmplY3Qg dXNpbmcgRWNQb2ludEluaXQoKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjUG9pbnQgICBFQyBQb2ludCB0byBmcmVlLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFt W2luXSAgQ2xlYXIgICAgIFRSVUUgaWZmIHRoZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFyZWQuDQo+ ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArVk9JRA0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiA+ID4gK0VjUG9pbnREZUluaXQgKA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAg KkVjUG9pbnQsDQo+ID4gPiA+ID4gPiArICBJTiBCT09MRUFOICBDbGVhcg0KPiA+ID4gPiA+ID4g KyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ ICsgIEdldCBFQyBwb2ludCBhZmZpbmUgKHgseSkgY29vcmRpbmF0ZXMuDQo+ID4gPiA+ID4gPiAr ICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMg dG8gdGhlDQo+ID4gY29ycmVzcG9uZGluZw0KPiA+ID4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2Fs bGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBhbGwgdGhlICJvdXQiIEJpZ051bWJlcg0KPiA+IHBhcmFt ZXRlcnMNCj4gPiA+ID4gPiA+ICsgIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2Jq ZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmpl Y3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCblggICAgICAgIFggY29vcmRpbmF0ZS4N Cj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuWSAgICAgICAgWSBjb29yZGluYXRlLg0KPiA+ ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdp dGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g PiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjUG9pbnRHZXRB ZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91 cCwNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gPiA+ID4g KyAgT1VUIFZPSUQgICAgICAgKkJuWCwNCj4gPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpC blksDQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsg ICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBTZXQgRUMgcG9pbnQgYWZmaW5lICh4LHkp IGNvb3JkaW5hdGVzLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAg RWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBF Y1BvaW50ICAgIEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJu WCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5ZICAg ICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAg IEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiA+IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNz Lg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ ID4gPiA+ID4gPiArRWNQb2ludFNldEFmZmluZUNvb3JkaW5hdGVzICgNCj4gPiA+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAg KkVjUG9pbnQsDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWSwNCj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAg ICpCbkN0eA0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsg IEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIEVD IFBvaW50IGFkZGl0aW9uLiBFY1BvaW50UmVzdWx0ID0gRWNQb2ludEEgKyBFY1BvaW50Qi4NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgICAgICAg RUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3Vs dCAgICBFQyBwb2ludCB0byBob2xkIHRoZSByZXN1bHQuIFRoZQ0KPiA+IHBvaW50IHNob3VsZA0K PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBwcm9wZXJseSBp bml0aWFsaXplZC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICAgICAgICAg RUMgUG9pbnQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgICAgICAgIEVD IFBvaW50Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAgICBCTiBj b250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4g PiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4g PiArKiovDQo+ID4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4g PiA+ID4gK0VjUG9pbnRBZGQgKA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3Jv dXAsDQo+ID4gPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QSwNCj4gPiA+ID4gPiA+ICsgIElOIENP TlNUIFZPSUQgICpFY1BvaW50QiwNCj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0 eA0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIFZhcmlhYmxl IEVDIHBvaW50IG11bHRpcGxpY2F0aW9uLiBFY1BvaW50UmVzdWx0ID0gRWNQb2ludCAqDQo+ID4g Qm5QU2NhbGFyLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0 XSBFY1BvaW50UmVzdWx0ICAgIEVDIHBvaW50IHRvIGhvbGQgdGhlIHJlc3VsdC4gVGhlDQo+ID4g cG9pbnQgc2hvdWxkDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQ b2ludCAgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuUFNj YWxhciAgICAgICAgUCBTY2FsYXIuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAg ICAgICAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiA+IEJpZ051bU5ld0NvbnRleHQo KS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBP biBzdWNjZXNzLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lz ZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiAr RUZJQVBJDQo+ID4gPiA+ID4gPiArRWNQb2ludE11bCAoDQo+ID4gPiA+ID4gPiArICBJTiBDT05T VCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50 UmVzdWx0LA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiA+ ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5QU2NhbGFyLA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9J RCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4g PiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ID4gKyAgQ2FsY3VsYXRlIHRoZSBpbnZlcnNlIG9mIHRoZSBzdXBwbGllZCBFQyBwb2ludC4NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEVjR3JvdXAgICBFQyBn cm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW4sb3V0XSBFY1BvaW50ICAgRUMg cG9pbnQgdG8gaW52ZXJ0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgQm5DdHggICAg IEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiA+IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNz Lg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ ID4gPiA+ID4gPiArRWNQb2ludEludmVydCAoDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lE ICAqRWNHcm91cCwNCj4gPiA+ID4gPiA+ICsgIElOIE9VVCBWT0lEICAgICpFY1BvaW50LA0KPiA+ ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gPiArICApDQo+ID4g PiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gPiAr ICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgQ2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIG9u IEVDIGN1cnZlLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9p bnQgICBFQyBwb2ludCB0byBjaGVjay4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4 ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gY3Vy dmUuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkN Cj4gPiA+ID4gPiA+ICtFY1BvaW50SXNPbkN1cnZlICgNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNU IFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQs DQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsgICkN Cj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4g PiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxpZWQgcG9pbnQg aXMgYXQgaW5maW5pdHkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5d ICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAg RWNQb2ludCAgIEVDIHBvaW50IHRvIGNoZWNrLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g KyAgQHJldHZhbCBUUlVFICAgICAgICAgIEF0IGluZmluaXR5Lg0KPiA+ID4gPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4g PiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNQb2ludElz QXRJbmZpbml0eSAoDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4g PiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50DQo+ID4gPiA+ID4gPiArICApDQo+ ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4g PiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgQ2hlY2sgaWYgRUMgcG9pbnRzIGFyZSBlcXVhbC4N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBn cm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QSAgRUMgcG9p bnQgQS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRCICBFQyBwb2ludCBCLg0K PiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQg d2l0aA0KPiA+IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBID09IEIuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFs IEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4g K0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY1BvaW50RXF1YWwg KA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lE ICAqRWNQb2ludEIsDQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNF KTsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBTZXQgRUMgcG9pbnQgY29t cHJlc3NlZCBjb29yZGluYXRlcy4gUG9pbnRzIGNhbiBiZSBkZXNjcmliZWQgaW4NCj4gPiB0ZXJt cyBvZg0KPiA+ID4gPiA+ID4gKyAgdGhlaXIgY29tcHJlc3NlZCBjb29yZGluYXRlcy4gRm9yIGEg cG9pbnQgKHgsIHkpLCBmb3IgYW55IGdpdmVuDQo+ID4gdmFsdWUgZm9yIHgNCj4gPiA+ID4gPiA+ ICsgIHN1Y2ggdGhhdCB0aGUgcG9pbnQgaXMgb24gdGhlIGN1cnZlIHRoZXJlIHdpbGwgb25seSBl dmVyIGJlIHR3bw0KPiA+IHBvc3NpYmxlDQo+ID4gPiA+ID4gPiArICB2YWx1ZXMgZm9yIHkuIFRo ZXJlZm9yZSwgYSBwb2ludCBjYW4gYmUgc2V0IHVzaW5nIHRoaXMgZnVuY3Rpb24NCj4gPiB3aGVy ZSBCblggaXMNCj4gPiA+ID4gPiA+ICsgIHRoZSB4IGNvb3JkaW5hdGUgYW5kIFlCaXQgaXMgYSB2 YWx1ZSAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggb2YgdGhlDQo+ID4gdHdvDQo+ID4gPiA+ID4g PiArICBwb3NzaWJsZSB2YWx1ZXMgZm9yIHkgc2hvdWxkIGJlIHVzZWQuDQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4N Cj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgRUMgUG9pbnQuDQo+ID4gPiA+ ID4gPiArICBAcGFyYW1baW5dICBCblggICAgICAgIFggY29vcmRpbmF0ZS4NCj4gPiA+ID4gPiA+ ICsgIEBwYXJhbVtpbl0gIFlCaXQgICAgICAgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNoIFkgdmFs dWUgaXMgdXNlZC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgQk4gY29u dGV4dCwgY3JlYXRlZCB3aXRoDQo+ID4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4g PiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4g KyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4g PiA+ICtFY1BvaW50U2V0Q29tcHJlc3NlZENvb3JkaW5hdGVzICgNCj4gPiA+ID4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkVj UG9pbnQsDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gPiA+ID4g KyAgSU4gVUlOVDggICAgICAgWUJpdCwNCj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpC bkN0eA0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgIEFT U0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ID4g K30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIEFsbG9j YXRlcyBhbmQgSW5pdGlhbGl6ZXMgb25lIEVsbGlwdGljIEN1cnZlIENvbnRleHQgZm9yIHN1YnNl cXVlbnQNCj4gPiB1c2UNCj4gPiA+ID4gPiA+ICsgIHdpdGggdGhlIE5JRC4NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIE5pZCBjaXBoZXIgTklEDQo+ID4gPiA+ID4g PiArICBAcmV0dXJuICAgICBQb2ludGVyIHRvIHRoZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0IHRo YXQgaGFzIGJlZW4NCj4gPiBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg IElmIHRoZSBhbGxvY2F0aW9ucyBmYWlscywgRWNOZXdCeU5pZCgpIHJldHVybnMgTlVMTC4NCj4g PiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gPiA+ICtFRklBUEkN Cj4gPiA+ID4gPiA+ICtFY05ld0J5TmlkICgNCj4gPiA+ID4gPiA+ICsgIElOIFVJTlROICBOaWQN Cj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NFUlQg KEZBTFNFKTsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ID4gPiA+ID4gK30NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIFJlbGVhc2UgdGhl IHNwZWNpZmllZCBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSAgRWNDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0IHRvIGJlIHJlbGVh c2VkLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1ZPSUQNCj4gPiA+ID4gPiA+ICtF RklBUEkNCj4gPiA+ID4gPiA+ICtFY0ZyZWUgKA0KPiA+ID4gPiA+ID4gKyAgSU4gIFZPSUQgICpF Y0NvbnRleHQNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiAr ICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZW5lcmF0ZXMgRUMga2V5IGFuZCByZXR1cm5zIEVD IHB1YmxpYyBrZXkgKFgsIFkpLCBQbGVhc2Ugbm90ZSwNCj4gPiB0aGlzIGZ1bmN0aW9uIHVzZXMN Cj4gPiA+ID4gPiA+ICsgIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gVGhlIGNhbGxl ciBtdXN0IG1ha2Ugc3VyZQ0KPiA+IFJhbmRvbVNlZWQoKQ0KPiA+ID4gPiA+ID4gKyAgZnVuY3Rp b24gd2FzIHByb3Blcmx5IGNhbGxlZCBiZWZvcmUuDQo+ID4gPiA+ID4gPiArICBUaGUgRWMgY29u dGV4dCBzaG91bGQgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IEVjTmV3QnlOaWQuDQo+ID4g PiA+ID4gPiArICBUaGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyByYW5kb20gc2VjcmV0LCBhbmQgY29t cHV0ZXMgdGhlIHB1YmxpYw0KPiA+IGtleSAoWCwgWSksIHdoaWNoIGlzDQo+ID4gPiA+ID4gPiAr ICByZXR1cm5lZCB2aWEgcGFyYW1ldGVyIFB1YmxpYywgUHVibGljU2l6ZS4NCj4gPiA+ID4gPiA+ ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYgb2YgUHVibGljIHdpdGggc2l6ZSBiZWluZyBQdWJsaWNT aXplIC8gMiwNCj4gPiA+ID4gPiA+ICsgIFkgaXMgdGhlIHNlY29uZCBoYWxmIG9mIFB1YmxpYyB3 aXRoIHNpemUgYmVpbmcgUHVibGljU2l6ZSAvIDIuDQo+ID4gPiA+ID4gPiArICBFQyBjb250ZXh0 IGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ID4gPiA+ID4gPiArICBJZiB0aGUgUHVibGljIGJ1 ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcHVibGljIFgsIFksIEZBTFNFIGlzDQo+ID4g cmV0dXJuZWQgYW5kDQo+ID4gPiA+ID4gPiArICBQdWJsaWNTaXplIGlzIHNldCB0byB0aGUgcmVx dWlyZWQgYnVmZmVyIHNpemUgdG8gb2J0YWluIHRoZSBwdWJsaWMgWCwNCj4gPiBZLg0KPiA+ID4g PiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBp cyBYLCBTZWNvbmQgMzItYnl0ZQ0KPiA+IGlzIFkuDQo+ID4gPiA+ID4gPiArICBGb3IgUC0zODQs IHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRl DQo+ID4gaXMgWS4NCj4gPiA+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUgaXMg MTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlDQo+ID4gaXMgWS4NCj4gPiA+ ID4gPiA+ICsgIElmIEVjQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ ID4gPiA+ICsgIElmIFB1YmxpY1NpemUgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4g PiA+ID4gPiArICBJZiBQdWJsaWNTaXplIGlzIGxhcmdlIGVub3VnaCBidXQgUHVibGljIGlzIE5V TEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBF Y0NvbnRleHQgICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ID4gKyAg QHBhcmFtW291dF0gICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVmZmVyIHRvIHJl Y2VpdmUNCj4gPiBnZW5lcmF0ZWQgcHVibGljIFgsWS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp biwgb3V0XSAgUHVibGljS2V5U2l6ZSAgT24gaW5wdXQsIHRoZSBzaXplIG9mIFB1YmxpYyBidWZm ZXINCj4gPiBpbiBieXRlcy4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYw0K PiA+IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgIEVDIHB1 YmxpYyBYLFkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZB TFNFICBFQyBwdWJsaWMgWCxZIGdlbmVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgUHVibGljS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLg0KPiA+ID4gPiA+ ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gPiA+ICtFY0dlbmVyYXRlS2V5ICgNCj4gPiA+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpF Y0NvbnRleHQsDQo+ID4gPiA+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ ID4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ID4gPiA+ICsg ICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZXRzIHRoZSBwdWJsaWMga2V5IGNvbXBv bmVudCBmcm9tIHRoZSBlc3RhYmxpc2hlZCBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ID4gKyAgVGhl IEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBFY05ld0J5Tmlk LCBhbmQNCj4gPiBzdWNjZXNzZnVsbHkNCj4gPiA+ID4gPiA+ICsgIGdlbmVyYXRlIGtleSBwYWly IGZyb20gRWNHZW5lcmF0ZUtleSgpLg0KPiA+ID4gPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUHVi bGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItYnl0ZQ0KPiA+IGlz IFkuDQo+ID4gPiA+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJz dCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlDQo+ID4gaXMgWS4NCj4gPiA+ID4gPiA+ICsg IEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNl Y29uZCA2Ni1ieXRlDQo+ID4gaXMgWS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAg RWNDb250ZXh0ICAgICAgUG9pbnRlciB0byBFQyBjb250ZXh0IGJlaW5nIHNldC4NCj4gPiA+ID4g PiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZl ciB0byByZWNlaXZlDQo+ID4gZ2VuZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiA+ID4gPiArICBA cGFyYW1baW4sIG91dF0gIFB1YmxpY0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJs aWMgYnVmZmVyDQo+ID4gaW4gYnl0ZXMuDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBQ dWJsaWMNCj4gPiBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsICBUUlVF ICAgRUMga2V5IGNvbXBvbmVudCB3YXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4g PiA+ICsgIEByZXR2YWwgIEZBTFNFICBJbnZhbGlkIEVDIGtleSBjb21wb25lbnQuDQo+ID4gPiA+ ID4gPiArKiovDQo+ID4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ ID4gPiA+ID4gK0VjR2V0UHViS2V5ICgNCj4gPiA+ID4gPiA+ICsgIElOIE9VVCAgVk9JRCAgICpF Y0NvbnRleHQsDQo+ID4gPiA+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAqUHVibGljS2V5LA0KPiA+ ID4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgKlB1YmxpY0tleVNpemUNCj4gPiA+ID4gPiA+ICsg ICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBDb21wdXRlcyBleGNoYW5nZWQgY29tbW9u IGtleS4NCj4gPiA+ID4gPiA+ICsgIEdpdmVuIHBlZXIncyBwdWJsaWMga2V5IChYLCBZKSwgdGhp cyBmdW5jdGlvbiBjb21wdXRlcyB0aGUNCj4gPiBleGNoYW5nZWQgY29tbW9uIGtleSwNCj4gPiA+ ID4gPiA+ICsgIGJhc2VkIG9uIGl0cyBvd24gY29udGV4dCBpbmNsdWRpbmcgdmFsdWUgb2YgY3Vy dmUgcGFyYW1ldGVyIGFuZA0KPiA+IHJhbmRvbSBzZWNyZXQuDQo+ID4gPiA+ID4gPiArICBYIGlz IHRoZSBmaXJzdCBoYWxmIG9mIFBlZXJQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNT aXplIC8gMiwNCj4gPiA+ID4gPiA+ICsgIFkgaXMgdGhlIHNlY29uZCBoYWxmIG9mIFBlZXJQdWJs aWMgd2l0aCBzaXplIGJlaW5nIFBlZXJQdWJsaWNTaXplIC8NCj4gPiAyLg0KPiA+ID4gPiA+ID4g KyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ID4g KyAgSWYgUGVlclB1YmxpYyBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiA+ ICsgIElmIFBlZXJQdWJsaWNTaXplIGlzIDAsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ ID4gKyAgSWYgS2V5IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ID4gKyAg SWYgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1i eXRlIGlzIFgsIFNlY29uZCAzMi0NCj4gPiBieXRlIGlzIFkuDQo+ID4gPiA+ID4gPiArICBGb3Ig UC0zODQsIHRoZSBQZWVyUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNv bmQgNDgtDQo+ID4gYnl0ZSBpcyBZLg0KPiA+ID4gPiA+ID4gKyAgRm9yIFAtNTIxLCB0aGUgUGVl clB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni0NCj4gPiBi eXRlIGlzIFkuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBFQyBjb250ZXh0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2lu XSAgICAgICBQZWVyUHVibGljICAgICAgICAgUG9pbnRlciB0byB0aGUgcGVlcidzIHB1YmxpYyBY LFkuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWNTaXplICAgICBT aXplIG9mIHBlZXIncyBwdWJsaWMgWCxZIGluIGJ5dGVzLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFt W2luXSAgICAgICBDb21wcmVzc0ZsYWcgICAgICAgRmxhZyBvZiBQZWVyUHVibGljIGlzDQo+ID4g Y29tcHJlc3NlZCBvciBub3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIEtleSAg ICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZQ0KPiA+IGdlbmVy YXRlZCBrZXkuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEtleVNpemUgICAgICAg ICAgICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgS2V5IGJ1ZmZlciBpbg0KPiA+IGJ5dGVzLg0KPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0 LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIEtleQ0KPiA+IGJ1ZmZlciBpbiBieXRlcy4N Cj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlv biBzdWNjZWVkZWQuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICBFQyBleGNoYW5nZWQg a2V5IGdlbmVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgS2V5 U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4g K0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY0RoQ29tcHV0ZUtl eSAoDQo+ID4gPiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICAqRWNDb250ZXh0LA0KPiA+ ID4gPiA+ID4gKyAgSU4gICAgICBDT05TVCBVSU5UOCAgKlBlZXJQdWJsaWMsDQo+ID4gPiA+ID4g PiArICBJTiAgICAgIFVJTlROICAgICAgICBQZWVyUHVibGljU2l6ZSwNCj4gPiA+ID4gPiA+ICsg IElOICAgICAgQ09OU1QgSU5UMzIgICpDb21wcmVzc0ZsYWcsDQo+ID4gPiA+ID4gPiArICBPVVQg ICAgIFVJTlQ4ICAgICAgICAqS2V5LA0KPiA+ID4gPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgICAg ICAgKktleVNpemUNCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4g PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFz ZUNyeXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL1NtbUNyeXB0TGliLmluZg0KPiA+ID4gPiA+ID4gaW5kZXggY2U2YTc4OWRmZC4uNGJj MzA2MzQ4NSAxMDA2NDQNCj4gPiA+ID4gPiA+IC0tLSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9TbW1DcnlwdExpYi5pbmYNCj4gPiA+ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJy YXJ5L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExpYi5pbmYNCj4gPiA+ID4gPiA+IEBAIC01OSw2ICs1 OSw3IEBADQo+ID4gPiA+ID4gPiAgICBQay9DcnlwdFRzTnVsbC5jDQo+ID4gPiA+ID4gPiAgICBQ ay9DcnlwdFJzYVBzcy5jDQo+ID4gPiA+ID4gPiAgICBQay9DcnlwdFJzYVBzc1NpZ25OdWxsLmMN Cj4gPiA+ID4gPiA+ICsgIFBrL0NyeXB0RWNOdWxsLmMNCj4gPiA+ID4gPiA+ICAgIFBlbS9Dcnlw dFBlbS5jDQo+ID4gPiA+ID4gPiAgICBCbi9DcnlwdEJuTnVsbC5jDQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYk51bGwv QmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPiA+ID4gPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5pbmYNCj4gPiA+ID4gPiA+IGluZGV4IDM1NGYz ZDgwYWEuLmUxYTU3ZWYwOWYgMTAwNjQ0DQo+ID4gPiA+ID4gPiAtLS0gYS9DcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mDQo+ID4gPiA+ID4gPiAr KysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwu aW5mDQo+ID4gPiA+ID4gPiBAQCAtNDksNiArNDksNyBAQA0KPiA+ID4gPiA+ID4gICAgUGsvQ3J5 cHRYNTA5TnVsbC5jDQo+ID4gPiA+ID4gPiAgICBQay9DcnlwdEF1dGhlbnRpY29kZU51bGwuYw0K PiA+ID4gPiA+ID4gICAgUGsvQ3J5cHRUc051bGwuYw0KPiA+ID4gPiA+ID4gKyAgUGsvQ3J5cHRF Y051bGwuYw0KPiA+ID4gPiA+ID4gICAgUGVtL0NyeXB0UGVtTnVsbC5jDQo+ID4gPiA+ID4gPiAg ICBSYW5kL0NyeXB0UmFuZE51bGwuYw0KPiA+ID4gPiA+ID4gICAgUGsvQ3J5cHRSc2FQc3NOdWxs LmMNCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWJOdWxsL1BrL0NyeXB0RWNOdWxsLmMNCj4gPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlw dExpYk51bGwvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLmQ5ZjEwMDRmNmMNCj4gPiA+ID4gPiA+ IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYk51bGwvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gPiA+ID4gQEAgLTAsMCArMSw0OTYg QEANCj4gPiA+ID4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ID4gPiA+ICsgIEVsbGlwdGljIEN1cnZl IGFuZCBFQ0RIIEFQSSBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBPcGVuU1NMDQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArICBDb3B5cmlnaHQgKGMpIDIwMjIsIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gPiA+ICsgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArKiovDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFz ZUNyeXB0TGliLmg+DQo+ID4gPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIEluaXRpYWxp emUgbmV3IG9wYXF1ZSBFY0dyb3VwIG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBF Qw0KPiA+IGN1cnZlIGFuZA0KPiA+ID4gPiA+ID4gKyAgYW5kIGlzIHVzZWQgZm9yIGNhbGN1bGF0 aW9uIHdpdGhpbiB0aGlzIGdyb3VwLiBUaGlzIG9iamVjdCBzaG91bGQgYmUNCj4gPiBmcmVlZA0K PiA+ID4gPiA+ID4gKyAgdXNpbmcgRWNHcm91cEZyZWUoKSBmdW5jdGlvbi4NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENyeXB0b05pZCAgIElkZW50aWZ5aW5nIG51 bWJlciBmb3IgdGhlIEVDQyBjdXJ2ZQ0KPiA+IChEZWZpbmVkIGluDQo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBCYXNlQ3J5cHRMaWIuaCkuDQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArICBAcmV0dmFsIEVjR3JvdXAgb2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ID4g PiA+ID4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ID4gPiA+ ICsqKi8NCj4gPiA+ID4gPiA+ICtWT0lEICoNCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4g PiA+ICtFY0dyb3VwSW5pdCAoDQo+ID4gPiA+ID4gPiArICBJTiBVSU5UTiAgQ3J5cHRvTmlkDQo+ ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChG QUxTRSk7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gPiA+ICt9DQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZXQgRUMgY3VydmUg cGFyYW1ldGVycy4gV2hpbGUgZWxsaXB0aWMgY3VydmUgZXF1YXRpb24gaXMgWV4yIG1vZA0KPiA+ IFAgPSAoWF4zICsgQVggKyBCKSBNb2QgUC4NCj4gPiA+ID4gPiA+ICsgIFRoaXMgZnVuY3Rpb24g d2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyAgdG8gdGhlDQo+ID4gY29y cmVzcG9uZGluZw0KPiA+ID4gPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1h a2Ugc3VyZSBhbGwgdGhlICJvdXQiIEJpZ051bWJlcg0KPiA+IHBhcmFtZXRlcnMNCj4gPiA+ID4g PiA+ICsgIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ ID4gKyAgQHBhcmFtW291dF0gQm5QcmltZSAgICBHcm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiA+ ID4gPiArICBAcGFyYW1bb3V0XSBCbkEgICAgICAgIEEgY29lZmZpY2llbnQuDQo+ID4gPiA+ID4g PiArICBAcGFyYW1bb3V0XSBCbkIgICAgICAgIEIgY29lZmZpY2llbnQuLg0KPiA+ID4gPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0Lg0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4g PiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4gKyoqLw0K PiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtF Y0dyb3VwR2V0Q3VydmUgKA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAs DQo+ID4gPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5QcmltZSwNCj4gPiA+ID4gPiA+ICsg IE9VVCBWT0lEICAgICAgICpCbkEsDQo+ID4gPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5C LA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gPiArICAp DQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgR2V0IEVDIGdyb3VwIG9yZGVyLg0KPiA+ID4g PiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBv YmplY3QgdG8gdGhlDQo+ID4gY29ycmVzcG9uZGluZw0KPiA+ID4gPiA+ID4gKyAgdmFsdWUuIFRo ZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlICJvdXQiIEJpZ051bWJlcg0KPiA+ IHBhcmFtZXRlcg0KPiA+ID4gPiA+ID4gKyAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAg b2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gQm5PcmRlciAgIEdyb3VwIHByaW1l IG51bWJlci4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAg ICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90 aGVyd2lzZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNHcm91cEdldE9yZGVyICgNCj4gPiA+ID4gPiA+ ICsgIElOIFZPSUQgICAqRWNHcm91cCwNCj4gPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAqQm5PcmRl cg0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIEZyZWUgcHJl dmlvdXNseSBhbGxvY2F0ZWQgRUMgZ3JvdXAgb2JqZWN0IHVzaW5nIEVjR3JvdXBJbml0KCkuDQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3Jv dXAgb2JqZWN0IHRvIGZyZWUuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArVk9JRA0K PiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjR3JvdXBGcmVlICgNCj4gPiA+ID4g PiA+ICsgIElOIFZPSUQgICpFY0dyb3VwDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiAr ew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcg b3BhcXVlIEVDIFBvaW50IG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQw0KPiA+ IHBvaW50DQo+ID4gPiA+ID4gPiArICB3aXRoaW4gdGhlIGdpdmVuIEVDIGdyb3VwIChjdXJ2ZSku DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFQyBHcm91cCwgcHJv cGVybHkgaW5pdGlhbGl6ZWQgdXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgIEByZXR2YWwgRUMgUG9pbnQgb2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ID4g PiA+ID4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAgIE9uIGZhaWx1cmUuDQo+ID4gPiA+ID4g PiArKiovDQo+ID4gPiA+ID4gPiArVk9JRCAqDQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ ID4gPiArRWNQb2ludEluaXQgKA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3Jv dXANCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NF UlQgKEZBTFNFKTsNCj4gPiA+ID4gPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIEZyZWUgcHJl dmlvdXNseSBhbGxvY2F0ZWQgRUMgUG9pbnQgb2JqZWN0IHVzaW5nIEVjUG9pbnRJbml0KCkuDQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgUG9p bnQgdG8gZnJlZS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIENsZWFyICAgICBUUlVFIGlm ZiB0aGUgbWVtb3J5IHNob3VsZCBiZSBjbGVhcmVkLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4g PiA+ID4gK1ZPSUQNCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY1BvaW50RGVJ bml0ICgNCj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICpFY1BvaW50LA0KPiA+ID4gPiA+ID4g KyAgSU4gQk9PTEVBTiAgQ2xlYXINCj4gPiA+ID4gPiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZXQgRUMgcG9pbnQgYWZmaW5l ICh4LHkpIGNvb3JkaW5hdGVzLg0KPiA+ID4gPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNl dCB0aGUgcHJvdmlkZWQgQmlnIE51bWJlciBvYmplY3RzIHRvIHRoZQ0KPiA+IGNvcnJlc3BvbmRp bmcNCj4gPiA+ID4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUg YWxsIHRoZSAib3V0IiBCaWdOdW1iZXINCj4gPiBwYXJhbWV0ZXJzDQo+ID4gPiA+ID4gPiArICBh cmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBA cGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ID4gPiA+ICsgIEBw YXJhbVtpbl0gIEVjUG9pbnQgICAgRUMgcG9pbnQgb2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBh cmFtW291dF0gQm5YICAgICAgICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1b b3V0XSBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IEJuQ3R4ICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoDQo+ID4gQmlnTnVtTmV3Q29udGV4 dCgpLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAg IE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3 aXNlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gPiA+ ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY1BvaW50R2V0QWZmaW5lQ29vcmRpbmF0ZXMgKA0KPiA+ ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gPiArICBJTiBD T05TVCBWT0lEICAqRWNQb2ludCwNCj4gPiA+ID4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblgs DQo+ID4gPiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5ZLA0KPiA+ID4gPiA+ID4gKyAgSU4g Vk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gRkFMU0U7 DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4g PiA+ID4gKyAgU2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2Jq ZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBwb2ludCBvYmpl Y3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCblggICAgICAgIFggY29vcmRpbmF0ZS4N Cj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWSAgICAgICAgWSBjb29yZGluYXRlLg0KPiA+ ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdp dGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g PiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjUG9pbnRTZXRB ZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91 cCwNCj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4gPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpC blksDQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsg ICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBFQyBQb2ludCBhZGRpdGlvbi4gRWNQb2lu dFJlc3VsdCA9IEVjUG9pbnRBICsgRWNQb2ludEIuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0 aGUgcmVzdWx0LiBUaGUNCj4gPiBwb2ludCBzaG91bGQNCj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ID4g PiArICBAcGFyYW1baW5dICBFY1BvaW50QSAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNQb2ludEIgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ID4gPiA+ICsg IEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoDQo+ ID4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHJl dHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIEZB TFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JP T0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY1BvaW50QWRkICgNCj4g PiA+ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ID4gKyAgT1VU IFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQsDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lE ICAqRWNQb2ludEEsDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsgICkNCj4g PiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4gPiA+ ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBWYXJpYWJsZSBFQyBwb2ludCBtdWx0aXBsaWNhdGlv bi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnQgKg0KPiA+IEJuUFNjYWxhci4NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAg b2JqZWN0Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBw b2ludCB0byBob2xkIHRoZSByZXN1bHQuIFRoZQ0KPiA+IHBvaW50IHNob3VsZA0KPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBwcm9wZXJseSBpbml0aWFsaXpl ZC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgICAgICAgRUMgUG9pbnQu DQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCblBTY2FsYXIgICAgICAgIFAgU2NhbGFyLg0K PiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAgICBCTiBjb250ZXh0LCBj cmVhdGVkIHdpdGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ ID4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0Vj UG9pbnRNdWwgKA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4g PiA+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ID4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAg KkJuUFNjYWxhciwNCj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4g PiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgIEFTU0VSVCAoRkFMU0Up Ow0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ID4gK30NCj4gPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIENhbGN1bGF0ZSB0aGUgaW52 ZXJzZSBvZiB0aGUgc3VwcGxpZWQgRUMgcG9pbnQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArICBAcGFyYW1baW5dICAgICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ ID4gKyAgQHBhcmFtW2luLG91dF0gRWNQb2ludCAgIEVDIHBvaW50IHRvIGludmVydC4NCj4gPiA+ ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdp dGgNCj4gPiBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ID4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4g PiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjUG9pbnRJbnZl cnQgKA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4g PiArICBJTiBPVVQgVk9JRCAgICAqRWNQb2ludCwNCj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAg ICAgICpCbkN0eA0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4g PiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsg IENoZWNrIGlmIHRoZSBzdXBwbGllZCBwb2ludCBpcyBvbiBFQyBjdXJ2ZS4NCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3Qu DQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2su DQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRl ZCB3aXRoDQo+ID4gQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIGN1cnZlLg0KPiA+ID4gPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4g PiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNQb2ludElz T25DdXJ2ZSAoDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ ID4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gPiA+ID4gKyAgSU4gVk9J RCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4g PiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ ID4gKyAgQ2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIGF0IGluZmluaXR5Lg0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9i amVjdC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0byBj aGVjay4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAg ICBBdCBpbmZpbml0eS4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhl cndpc2UuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0VjUG9pbnRJc0F0SW5maW5pdHkgKA0KPiA+ID4gPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBW T0lEICAqRWNQb2ludA0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4g PiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ ID4gPiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ ICsgIENoZWNrIGlmIEVDIHBvaW50cyBhcmUgZXF1YWwuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gPiA+ ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEEgIEVDIHBvaW50IEEuDQo+ID4gPiA+ID4gPiArICBA cGFyYW1baW5dICBFY1BvaW50QiAgRUMgcG9pbnQgQi4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtp bl0gIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgNCj4gPiBCaWdOdW1OZXdDb250 ZXh0KCkuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAg ICAgQSA9PSBCLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lz ZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiAr RUZJQVBJDQo+ID4gPiA+ID4gPiArRWNQb2ludEVxdWFsICgNCj4gPiA+ID4gPiA+ICsgIElOIENP TlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9p bnRBLA0KPiA+ID4gPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ID4gPiA+ ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4g PiArew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gPiArICByZXR1 cm4gRkFMU0U7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8q Kg0KPiA+ID4gPiA+ID4gKyAgU2V0IEVDIHBvaW50IGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIFBv aW50cyBjYW4gYmUgZGVzY3JpYmVkIGluDQo+ID4gdGVybXMgb2YNCj4gPiA+ID4gPiA+ICsgIHRo ZWlyIGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIEZvciBhIHBvaW50ICh4LCB5KSwgZm9yIGFueSBn aXZlbg0KPiA+IHZhbHVlIGZvciB4DQo+ID4gPiA+ID4gPiArICBzdWNoIHRoYXQgdGhlIHBvaW50 IGlzIG9uIHRoZSBjdXJ2ZSB0aGVyZSB3aWxsIG9ubHkgZXZlciBiZSB0d28NCj4gPiBwb3NzaWJs ZQ0KPiA+ID4gPiA+ID4gKyAgdmFsdWVzIGZvciB5LiBUaGVyZWZvcmUsIGEgcG9pbnQgY2FuIGJl IHNldCB1c2luZyB0aGlzIGZ1bmN0aW9uDQo+ID4gd2hlcmUgQm5YIGlzDQo+ID4gPiA+ID4gPiAr ICB0aGUgeCBjb29yZGluYXRlIGFuZCBZQml0IGlzIGEgdmFsdWUgMCBvciAxIHRvIGlkZW50aWZ5 IHdoaWNoIG9mIHRoZQ0KPiA+IHR3bw0KPiA+ID4gPiA+ID4gKyAgcG9zc2libGUgdmFsdWVzIGZv ciB5IHNob3VsZCBiZSB1c2VkLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQHBhcmFt W2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1b aW5dICBFY1BvaW50ICAgIEVDIFBvaW50Lg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5Y ICAgICAgICBYIGNvb3JkaW5hdGUuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW5dICBZQml0ICAg ICAgIDAgb3IgMSB0byBpZGVudGlmeSB3aGljaCBZIHZhbHVlIGlzIHVzZWQuDQo+ID4gPiA+ID4g PiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aA0KPiA+ IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2 YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxT RSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09M RUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNQb2ludFNldENvbXByZXNz ZWRDb29yZGluYXRlcyAoDQo+ID4gPiA+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwN Cj4gPiA+ID4gPiA+ICsgIElOIFZPSUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4gPiA+ID4gKyAg SU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgIFlCaXQs DQo+ID4gPiA+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ID4gPiA+ICsgICkN Cj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ID4g PiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBBbGxvY2F0ZXMgYW5kIEluaXRpYWxpemVzIG9u ZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0IGZvciBzdWJzZXF1ZW50DQo+ID4gdXNlDQo+ID4gPiA+ ID4gPiArICB3aXRoIHRoZSBOSUQuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFy YW1baW5dICBOaWQgY2lwaGVyIE5JRA0KPiA+ID4gPiA+ID4gKyAgQHJldHVybiAgICAgUG9pbnRl ciB0byB0aGUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCB0aGF0IGhhcyBiZWVuDQo+ID4gaW5pdGlh bGl6ZWQuDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICBJZiB0aGUgYWxsb2NhdGlvbnMgZmFp bHMsIEVjTmV3QnlOaWQoKSByZXR1cm5zIE5VTEwuDQo+ID4gPiA+ID4gPiArKiovDQo+ID4gPiA+ ID4gPiArVk9JRCAqDQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNOZXdCeU5p ZCAoDQo+ID4gPiA+ID4gPiArICBJTiBVSU5UTiAgTmlkDQo+ID4gPiA+ID4gPiArICApDQo+ID4g PiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gPiAr ICByZXR1cm4gTlVMTDsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArLyoqDQo+ID4gPiA+ID4gPiArICBSZWxlYXNlIHRoZSBzcGVjaWZpZWQgRUMgY29udGV4dC4N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjQ29udGV4dCAgUG9p bnRlciB0byB0aGUgRUMgY29udGV4dCB0byBiZSByZWxlYXNlZC4NCj4gPiA+ID4gPiA+ICsqKi8N Cj4gPiA+ID4gPiA+ICtWT0lEDQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNG cmVlICgNCj4gPiA+ID4gPiA+ICsgIElOICBWT0lEICAqRWNDb250ZXh0DQo+ID4gPiA+ID4gPiAr ICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4g PiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4gPiA+ID4g KyAgR2VuZXJhdGVzIEVDIGtleSBhbmQgcmV0dXJucyBFQyBwdWJsaWMga2V5IChYLCBZKSwgUGxl YXNlIG5vdGUsDQo+ID4gdGhpcyBmdW5jdGlvbiB1c2VzDQo+ID4gPiA+ID4gPiArICBwc2V1ZG8g cmFuZG9tIG51bWJlciBnZW5lcmF0b3IuIFRoZSBjYWxsZXIgbXVzdCBtYWtlIHN1cmUNCj4gPiBS YW5kb21TZWVkKCkNCj4gPiA+ID4gPiA+ICsgIGZ1bmN0aW9uIHdhcyBwcm9wZXJseSBjYWxsZWQg YmVmb3JlLg0KPiA+ID4gPiA+ID4gKyAgVGhlIEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJlY3Rs eSBpbml0aWFsaXplZCBieSBFY05ld0J5TmlkLg0KPiA+ID4gPiA+ID4gKyAgVGhpcyBmdW5jdGlv biBnZW5lcmF0ZXMgcmFuZG9tIHNlY3JldCwgYW5kIGNvbXB1dGVzIHRoZSBwdWJsaWMNCj4gPiBr ZXkgKFgsIFkpLCB3aGljaCBpcw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuZWQgdmlhIHBhcmFtZXRl ciBQdWJsaWMsIFB1YmxpY1NpemUuDQo+ID4gPiA+ID4gPiArICBYIGlzIHRoZSBmaXJzdCBoYWxm IG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUHVibGljU2l6ZSAvIDIsDQo+ID4gPiA+ID4gPiAr ICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFB1YmxpY1Np emUgLyAyLg0KPiA+ID4gPiA+ID4gKyAgRUMgY29udGV4dCBpcyB1cGRhdGVkIGFjY29yZGluZ2x5 Lg0KPiA+ID4gPiA+ID4gKyAgSWYgdGhlIFB1YmxpYyBidWZmZXIgaXMgdG9vIHNtYWxsIHRvIGhv bGQgdGhlIHB1YmxpYyBYLCBZLCBGQUxTRSBpcw0KPiA+IHJldHVybmVkIGFuZA0KPiA+ID4gPiA+ ID4gKyAgUHVibGljU2l6ZSBpcyBzZXQgdG8gdGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplIHRvIG9i dGFpbiB0aGUgcHVibGljIFgsDQo+ID4gWS4NCj4gPiA+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhl IFB1YmxpY1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUNCj4g PiBpcyBZLg0KPiA+ID4gPiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5Ni4g Rmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQgNDgtYnl0ZQ0KPiA+IGlzIFkuDQo+ID4gPiA+ID4g PiArICBGb3IgUC01MjEsIHRoZSBQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBY LCBTZWNvbmQgNjYtYnl0ZQ0KPiA+IGlzIFkuDQo+ID4gPiA+ID4gPiArICBJZiBFY0NvbnRleHQg aXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gPiArICBJZiBQdWJsaWNTaXpl IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gPiA+ID4gKyAgSWYgUHVibGljU2l6 ZSBpcyBsYXJnZSBlbm91Z2ggYnV0IFB1YmxpYyBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4N Cj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0 byB0aGUgRUMgY29udGV4dC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGlj S2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlDQo+ID4gZ2VuZXJhdGVkIHB1 YmxpYyBYLFkuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1YmxpY0tleVNpemUg IE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVyDQo+ID4gaW4gYnl0ZXMuDQo+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhl IHNpemUgb2YgZGF0YSByZXR1cm5lZCBpbiBQdWJsaWMNCj4gPiBidWZmZXIgaW4gYnl0ZXMuDQo+ ID4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFQyBwdWJsaWMgWCxZIGdlbmVyYXRpb24gc3Vj Y2VlZGVkLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgcHVibGljIFgsWSBnZW5l cmF0aW9uIGZhaWxlZC4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIFB1YmxpY0tleVNp emUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtC T09MRUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gPiArRWNHZW5lcmF0ZUtleSAo DQo+ID4gPiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAqRWNDb250ZXh0LA0KPiA+ID4gPiA+ID4g KyAgT1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwNCj4gPiA+ID4gPiA+ICsgIElOIE9VVCAgVUlO VE4gICpQdWJsaWNLZXlTaXplDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gRkFMU0U7 DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4g PiA+ID4gKyAgR2V0cyB0aGUgcHVibGljIGtleSBjb21wb25lbnQgZnJvbSB0aGUgZXN0YWJsaXNo ZWQgRUMgY29udGV4dC4NCj4gPiA+ID4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBiZSBj b3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZCwgYW5kDQo+ID4gc3VjY2Vzc2Z1bGx5 DQo+ID4gPiA+ID4gPiArICBnZW5lcmF0ZSBrZXkgcGFpciBmcm9tIEVjR2VuZXJhdGVLZXkoKS4N Cj4gPiA+ID4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFB1YmxpY1NpemUgaXMgNjQuIEZpcnN0IDMy LWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUNCj4gPiBpcyBZLg0KPiA+ID4gPiA+ID4gKyAgRm9y IFAtMzg0LCB0aGUgUHVibGljU2l6ZSBpcyA5Ni4gRmlyc3QgNDgtYnl0ZSBpcyBYLCBTZWNvbmQg NDgtYnl0ZQ0KPiA+IGlzIFkuDQo+ID4gPiA+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQdWJsaWNT aXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZQ0KPiA+IGlzIFku DQo+ID4gPiA+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAgIFBvaW50ZXIg dG8gRUMgY29udGV4dCBiZWluZyBzZXQuDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSAgICAg IFB1YmxpY0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2ZQ0KPiA+IGdlbmVy YXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNL ZXlTaXplICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlcg0KPiA+IGluIGJ5dGVz Lg0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRw dXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVibGljDQo+ID4gYnVmZmVyIGluIGJ5 dGVzLg0KPiA+ID4gPiA+ID4gKyAgQHJldHZhbCAgVFJVRSAgIEVDIGtleSBjb21wb25lbnQgd2Fz IHJldHJpZXZlZCBzdWNjZXNzZnVsbHkuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsICBGQUxTRSAg SW52YWxpZCBFQyBrZXkgY29tcG9uZW50Lg0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4g K0JPT0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtFY0dldFB1YktleSAo DQo+ID4gPiA+ID4gPiArICBJTiBPVVQgIFZPSUQgICAqRWNDb250ZXh0LA0KPiA+ID4gPiA+ID4g KyAgT1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwNCj4gPiA+ID4gPiA+ICsgIElOIE9VVCAgVUlO VE4gICpQdWJsaWNLZXlTaXplDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiA+ID4gPiArICByZXR1cm4gRkFMU0U7 DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ID4g PiA+ID4gKyAgQ29tcHV0ZXMgZXhjaGFuZ2VkIGNvbW1vbiBrZXkuDQo+ID4gPiA+ID4gPiArICBH aXZlbiBwZWVyJ3MgcHVibGljIGtleSAoWCwgWSksIHRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgdGhl DQo+ID4gZXhjaGFuZ2VkIGNvbW1vbiBrZXksDQo+ID4gPiA+ID4gPiArICBiYXNlZCBvbiBpdHMg b3duIGNvbnRleHQgaW5jbHVkaW5nIHZhbHVlIG9mIGN1cnZlIHBhcmFtZXRlciBhbmQNCj4gPiBy YW5kb20gc2VjcmV0Lg0KPiA+ID4gPiA+ID4gKyAgWCBpcyB0aGUgZmlyc3QgaGFsZiBvZiBQZWVy UHVibGljIHdpdGggc2l6ZSBiZWluZyBQZWVyUHVibGljU2l6ZSAvIDIsDQo+ID4gPiA+ID4gPiAr ICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQZWVyUHVibGljIHdpdGggc2l6ZSBiZWluZyBQZWVy UHVibGljU2l6ZSAvDQo+ID4gMi4NCj4gPiA+ID4gPiA+ICsgIElmIEVjQ29udGV4dCBpcyBOVUxM LCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiA+ICsgIElmIFBlZXJQdWJsaWMgaXMgTlVM TCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gPiArICBJZiBQZWVyUHVibGljU2l6ZSBp cyAwLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiA+ICsgIElmIEtleSBpcyBOVUxMLCB0 aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ID4gPiA+ICsgIElmIEtleVNpemUgaXMgbm90IGxhcmdl IGVub3VnaCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiA+ID4gPiArICBGb3IgUC0yNTYsIHRo ZSBQZWVyUHVibGljU2l6ZSBpcyA2NC4gRmlyc3QgMzItYnl0ZSBpcyBYLCBTZWNvbmQgMzItDQo+ ID4gYnl0ZSBpcyBZLg0KPiA+ID4gPiA+ID4gKyAgRm9yIFAtMzg0LCB0aGUgUGVlclB1YmxpY1Np emUgaXMgOTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwgU2Vjb25kIDQ4LQ0KPiA+IGJ5dGUgaXMgWS4N Cj4gPiA+ID4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDEzMi4gRmly c3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtDQo+ID4gYnl0ZSBpcyBZLg0KPiA+ID4gPiA+ID4g KyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRleHQgICAgICAgICAgUG9pbnRlciB0byB0aGUgRUMg Y29udGV4dC4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgUGVlclB1YmxpYyAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHBlZXIncyBwdWJsaWMgWCxZLg0KPiA+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSAgICAgICBQZWVyUHVibGljU2l6ZSAgICAgU2l6ZSBvZiBwZWVyJ3MgcHVibGljIFgs WSBpbiBieXRlcy4NCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gICAgICAgQ29tcHJlc3NGbGFn ICAgICAgIEZsYWcgb2YgUGVlclB1YmxpYyBpcw0KPiA+IGNvbXByZXNzZWQgb3Igbm90Lg0KPiA+ ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBLZXkgICAgICAgICAgICAgICAgUG9pbnRlciB0 byB0aGUgYnVmZmVyIHRvIHJlY2VpdmUNCj4gPiBnZW5lcmF0ZWQga2V5Lg0KPiA+ID4gPiA+ID4g KyAgQHBhcmFtW2luLCBvdXRdICBLZXlTaXplICAgICAgICAgICAgT24gaW5wdXQsIHRoZSBzaXpl IG9mIEtleSBidWZmZXIgaW4NCj4gPiBieXRlcy4NCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1 cm5lZCBpbiBLZXkNCj4gPiBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiA+ID4gPiArICBAcmV0dmFs IFRSVUUgICBFQyBleGNoYW5nZWQga2V5IGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gPiA+ ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgZXhjaGFuZ2VkIGtleSBnZW5lcmF0aW9uIGZhaWxlZC4N Cj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIEtleVNpemUgaXMgbm90IGxhcmdlIGVub3Vn aC4NCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiAr RUZJQVBJDQo+ID4gPiA+ID4gPiArRWNEaENvbXB1dGVLZXkgKA0KPiA+ID4gPiA+ID4gKyAgSU4g T1VUICBWT0lEICAgICAgICAgKkVjQ29udGV4dCwNCj4gPiA+ID4gPiA+ICsgIElOICAgICAgQ09O U1QgVUlOVDggICpQZWVyUHVibGljLA0KPiA+ID4gPiA+ID4gKyAgSU4gICAgICBVSU5UTiAgICAg ICAgUGVlclB1YmxpY1NpemUsDQo+ID4gPiA+ID4gPiArICBJTiAgICAgIENPTlNUIElOVDMyICAq Q29tcHJlc3NGbGFnLA0KPiA+ID4gPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgICAgICAgKktleSwN Cj4gPiA+ID4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICAgICAgICpLZXlTaXplDQo+ID4gPiA+ID4g PiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ ID4gPiA+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4g LS0NCj4gPiA+ID4gPiA+IDIuMzEuMS53aW5kb3dzLjENCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4NCg0K