From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 8F17E3858CDB for ; Thu, 20 Jul 2023 16:31:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8F17E3858CDB Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-URL-LookUp-ScanningError: 1 X-IronPort-AV: E=Sophos;i="6.01,219,1684828800"; d="diff'?scan'208";a="13943943" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 20 Jul 2023 08:31:47 -0800 IronPort-SDR: ioR+zuGdrDG8mjMJZ9QEboEQ4UaBmgpFbgFNtG4i5Mu37ww8674u5qrW2AklzVO1UbeOl3oFfh bzKBpFIyfQS1qC9Xrb7/Wq1npsOHn0AUb7YWZKfYTx3bR7vXs9sVpnEcqe8fXogLuNndGtRm2z dSXTO0kijpwtJauArnaX/8nuEE/s7H0BjtFZ89ayrX0csiDUumUR8je6l+gCpLPXVa+Cx3R2nW 9D4uuqVDzTKlQ4sbilfd0F6mwm5Um9Gg7kxj5zX/h1dfuvyzqDJk0IOvLVpD/kHHhZhSgg0rSP adU= Content-Type: multipart/mixed; boundary="------------9rirenD4qwFwoFUvxckGGgwO" Message-ID: <4786fe69-93fb-ccb4-8f1e-2e3cf1123801@codesourcery.com> Date: Thu, 20 Jul 2023 18:31:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US To: gcc-patches From: Tobias Burnus Subject: [committed] libgomp.texi: Split OpenMP routines chapter into sections X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------9rirenD4qwFwoFUvxckGGgwO Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable When recently looking at the libgomp documentation, here the current GCC 13= version, https://gcc.gnu.org/onlinedocs/gcc-13.1.0/libgomp/Runtime-Library-Routin= es.html I found both the order confusing and the wording: "The routines are structured in following three parts:" as I did not see any separation. In the "info" version, one could indeed se= e: Control threads, processors and the parallel environment. They have C linkage, and do not throw exceptions. (long list of routines) Initialize, set, test, unset and destroy simple and nested locks. (short list) Portable, thread-based, wall clock timer. (two rourines) Support for event objects. (one routine) which are the three parts - or do I count four? OpenMP itself split the long list into several parts; the attached commit d= oes likewise. Result (before or after the change, depending when you have a loo= k): https://gcc.gnu.org/onlinedocs/libgomp/ (The commit also fixed a typo in the OMP_ALLOCATOR example.) Committed as r14-2681-g506f068e7d01ad * * * If you look at the '@c' items in the '@menu' you will also see which routin= es are missing - either * because they have not yet been documented - or * because they have not yet been implemented. 37 routines fall into the first category. Possibly, some of the dicumented = routines need to be updated as well, if somethines has changed after their initial implementation (or to improve the wording). See also https://gcc.gnu.org/PR110364 for improvements which should eventua= lly be done. Tobias PS: If someone feels bored, proof reading or adding a description for the m= issing routines would be useful :-) - But assume/fear that no one feels bored :-) ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------9rirenD4qwFwoFUvxckGGgwO Content-Type: text/x-patch; charset="UTF-8"; name="committed.diff" Content-Disposition: attachment; filename="committed.diff" Content-Transfer-Encoding: base64 Y29tbWl0IDUwNmYwNjhlN2QwMWFkMmZiMTA3MTg1YjhmYjIwNGEwZWMyMzc4NWMKQXV0aG9y OiBUb2JpYXMgQnVybnVzIDx0b2JpYXNAY29kZXNvdXJjZXJ5LmNvbT4KRGF0ZTogICBUaHUg SnVsIDIwIDE4OjEyOjU3IDIwMjMgKzAyMDAKCiAgICBsaWJnb21wLnRleGk6IFNwbGl0IE9w ZW5NUCByb3V0aW5lcyBjaGFwdGVyIGludG8gc2VjdGlvbnMKICAgIAogICAgVGhlIHByZXZp b3VzIGxpc3Qgb2YgT3Blbk1QIHJvdXRpbmVzIHdhcyByYXRoZXIgbGVuZ3RoeSBhbmQgdGhl IG9yZGVyIHNlZW1lZAogICAgdG8gYmUgcmF0aGVyIHJhbmRvbSAtIGVzcGVjaWFsbHkgZm9y IG91dHB1dHMgd2hpY2ggZGlkIG5vdCBoYXZlIEBtZW51IGFzIHRoZW4KICAgIHRoZSBzZWN0 aW9uaW5nIHdhcyBub3QgdmlzaWJsZS4KICAgIAogICAgVGhlIE9wZW5NUCBzcGVjaWZpY2F0 aW9uIHNwbGl0IGluIDUuMSB0aGUgbGVuZ3RoeSBsaXN0IGJ5IGFkZGluZwogICAgc2VjdGlv bnMgdG8gdGhlIGNoYXB0ZXIgYW5kIGdyb3VwaW5nIHRoZSByb3V0aW5lcyB1bmRlciB0aGVt LgogICAgCiAgICBUaGlzIHBhdGNoIGZvbGxvdyBzdWl0ZSBhbmQgdXNlcyB0aGUgc2FtZSBz ZWN0aW9ucyBhbmQgb3JkZXIuIFRoZSBjb21taXQgYWxzbwogICAgcHJlcGFyZXMgZm9yIGFk ZGluZyBub3QteWV0LWRvY3VtZW50ZWQgcm91dGluZXMgYnkgbGlzdGVuaW5nIHRob3NlIGlu IHRoZQogICAgQG1lbnUgKEBjIGNvbW1lbnRlZCAtIGJvdGggZm9yIGp1c3QgdW5kb2N1bWVu dGVkIGFuZCBmb3IgYWxzbyB1bmltcGxlbWVudGVkCiAgICByb3V0aW5lcykuIFNlZSBhbHNv IFBSIDExMDM2NC4KICAgIAogICAgbGliZ29tcC9DaGFuZ2VMb2c6CiAgICAKICAgICAgICAg ICAgKiBsaWJnb21wLnRleGkgKE9wZW5NUCBSdW50aW1lIExpYnJhcnkgUm91dGluZXMpOgog ICAgICAgICAgICBTcGxpdCBsb25nIGxpc3QgYnkgYWRkaW5nIHNlY3Rpb25zIGFuZCBtb3Zp bmcgcm91dGluZXMgdGhlcmUuCiAgICAgICAgICAgIChPTVBfQUxMT0NBVE9SUyk6IEZpeCB0 eXBvLgotLS0KIGxpYmdvbXAvbGliZ29tcC50ZXhpIHwgMTI2NyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcy NyBpbnNlcnRpb25zKCspLCA1NDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliZ29t cC9saWJnb21wLnRleGkgYi9saWJnb21wL2xpYmdvbXAudGV4aQppbmRleCBhODU4MmI1MDE3 Ny4uOWQzYjJhZTU0Y2IgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvbGliZ29tcC50ZXhpCisrKyBi L2xpYmdvbXAvbGliZ29tcC50ZXhpCkBAIC01MDAsMjE0ICs1MDAsMjI5IEBAIFRlY2huaWNh bCBSZXBvcnQgKFRSKSAxMSBpcyB0aGUgZmlyc3QgcHJldmlldyBmb3IgT3Blbk1QIDYuMC4K IEBub2RlIFJ1bnRpbWUgTGlicmFyeSBSb3V0aW5lcwogQGNoYXB0ZXIgT3Blbk1QIFJ1bnRp bWUgTGlicmFyeSBSb3V0aW5lcwogCi1UaGUgcnVudGltZSByb3V0aW5lcyBkZXNjcmliZWQg aGVyZSBhcmUgZGVmaW5lZCBieSBTZWN0aW9uIDMgb2YgdGhlIE9wZW5NUAotc3BlY2lmaWNh dGlvbiBpbiB2ZXJzaW9uIDQuNS4gIFRoZSByb3V0aW5lcyBhcmUgc3RydWN0dXJlZCBpbiBm b2xsb3dpbmcKLXRocmVlIHBhcnRzOgorVGhlIHJ1bnRpbWUgcm91dGluZXMgZGVzY3JpYmVk IGhlcmUgYXJlIGRlZmluZWQgYnkgU2VjdGlvbiAxOCBvZiB0aGUgT3Blbk1QCitzcGVjaWZp Y2F0aW9uIGluIHZlcnNpb24gNS4yLgogCiBAbWVudQotQ29udHJvbCB0aHJlYWRzLCBwcm9j ZXNzb3JzIGFuZCB0aGUgcGFyYWxsZWwgZW52aXJvbm1lbnQuICBUaGV5IGhhdmUgQwotbGlu a2FnZSwgYW5kIGRvIG5vdCB0aHJvdyBleGNlcHRpb25zLgorKiBUaHJlYWQgVGVhbSBSb3V0 aW5lczo6CisqIFRocmVhZCBBZmZpbml0eSBSb3V0aW5lczo6CisqIFRlYW1zIFJlZ2lvbiBS b3V0aW5lczo6CisqIFRhc2tpbmcgUm91dGluZXM6OgorQGMgKiBSZXNvdXJjZSBSZWxpbnF1 aXNoaW5nIFJvdXRpbmVzOjoKKyogRGV2aWNlIEluZm9ybWF0aW9uIFJvdXRpbmVzOjoKK0Bj ICogRGV2aWNlIE1lbW9yeSBSb3V0aW5lczo6CisqIExvY2sgUm91dGluZXM6OgorKiBUaW1p bmcgUm91dGluZXM6OgorKiBFdmVudCBSb3V0aW5lOjoKK0BjICogSW50ZXJvcGVyYWJpbGl0 eSBSb3V0aW5lczo6CitAYyAqIE1lbW9yeSBNYW5hZ2VtZW50IFJvdXRpbmVzOjoKK0BjICog VG9vbCBDb250cm9sIFJvdXRpbmU6OgorQGMgKiBFbnZpcm9ubWVudCBEaXNwbGF5IFJvdXRp bmU6OgorQGVuZCBtZW51CiAKLSogb21wX2dldF9hY3RpdmVfbGV2ZWw6OiAgICAgICAgTnVt YmVyIG9mIGFjdGl2ZSBwYXJhbGxlbCByZWdpb25zCi0qIG9tcF9nZXRfYW5jZXN0b3JfdGhy ZWFkX251bTo6IEFuY2VzdG9yIHRocmVhZCBJRAotKiBvbXBfZ2V0X2NhbmNlbGxhdGlvbjo6 ICAgICAgICBXaGV0aGVyIGNhbmNlbGxhdGlvbiBzdXBwb3J0IGlzIGVuYWJsZWQKLSogb21w X2dldF9kZWZhdWx0X2RldmljZTo6ICAgICAgR2V0IHRoZSBkZWZhdWx0IGRldmljZSBmb3Ig dGFyZ2V0IHJlZ2lvbnMKLSogb21wX2dldF9kZXZpY2VfbnVtOjogICAgICAgICAgR2V0IGRl dmljZSB0aGF0IGN1cnJlbnQgdGhyZWFkIGlzIHJ1bm5pbmcgb24KLSogb21wX2dldF9keW5h bWljOjogICAgICAgICAgICAgRHluYW1pYyB0ZWFtcyBzZXR0aW5nCi0qIG9tcF9nZXRfaW5p dGlhbF9kZXZpY2U6OiAgICAgIERldmljZSBudW1iZXIgb2YgaG9zdCBkZXZpY2UKLSogb21w X2dldF9sZXZlbDo6ICAgICAgICAgICAgICAgTnVtYmVyIG9mIHBhcmFsbGVsIHJlZ2lvbnMK LSogb21wX2dldF9tYXhfYWN0aXZlX2xldmVsczo6ICAgQ3VycmVudCBtYXhpbXVtIG51bWJl ciBvZiBhY3RpdmUgcmVnaW9ucwotKiBvbXBfZ2V0X21heF90YXNrX3ByaW9yaXR5OjogICBN YXhpbXVtIHRhc2sgcHJpb3JpdHkgdmFsdWUgdGhhdCBjYW4gYmUgc2V0Ci0qIG9tcF9nZXRf bWF4X3RlYW1zOjogICAgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIHRlYW1zIGZvciB0ZWFt cyByZWdpb24KLSogb21wX2dldF9tYXhfdGhyZWFkczo6ICAgICAgICAgTWF4aW11bSBudW1i ZXIgb2YgdGhyZWFkcyBvZiBwYXJhbGxlbCByZWdpb24KLSogb21wX2dldF9uZXN0ZWQ6OiAg ICAgICAgICAgICAgTmVzdGVkIHBhcmFsbGVsIHJlZ2lvbnMKLSogb21wX2dldF9udW1fZGV2 aWNlczo6ICAgICAgICAgTnVtYmVyIG9mIHRhcmdldCBkZXZpY2VzCi0qIG9tcF9nZXRfbnVt X3Byb2NzOjogICAgICAgICAgIE51bWJlciBvZiBwcm9jZXNzb3JzIG9ubGluZQotKiBvbXBf Z2V0X251bV90ZWFtczo6ICAgICAgICAgICBOdW1iZXIgb2YgdGVhbXMKKworCitAbm9kZSBU aHJlYWQgVGVhbSBSb3V0aW5lcworQHNlY3Rpb24gVGhyZWFkIFRlYW0gUm91dGluZXMKKwor Um91dGluZXMgY29udHJvbGxpbmcgdGhyZWFkcyBpbiB0aGUgY3VycmVudCBjb250ZW50aW9u IGdyb3VwLgorVGhleSBoYXZlIEMgbGlua2FnZSBhbmQgZG8gbm90IHRocm93IGV4Y2VwdGlv bnMuCisKK0BtZW51CisqIG9tcF9zZXRfbnVtX3RocmVhZHM6OiAgICAgICAgIFNldCB1cHBl ciB0ZWFtIHNpemUgbGltaXQKICogb21wX2dldF9udW1fdGhyZWFkczo6ICAgICAgICAgU2l6 ZSBvZiB0aGUgYWN0aXZlIHRlYW0KLSogb21wX2dldF9wcm9jX2JpbmQ6OiAgICAgICAgICAg V2hldGhlciB0aHJlYWRzIG1heSBiZSBtb3ZlZCBiZXR3ZWVuIENQVXMKLSogb21wX2dldF9z Y2hlZHVsZTo6ICAgICAgICAgICAgT2J0YWluIHRoZSBydW50aW1lIHNjaGVkdWxpbmcgbWV0 aG9kCi0qIG9tcF9nZXRfc3VwcG9ydGVkX2FjdGl2ZV9sZXZlbHM6OiBNYXhpbXVtIG51bWJl ciBvZiBhY3RpdmUgcmVnaW9ucyBzdXBwb3J0ZWQKLSogb21wX2dldF90ZWFtX251bTo6ICAg ICAgICAgICAgR2V0IHRlYW0gbnVtYmVyCi0qIG9tcF9nZXRfdGVhbV9zaXplOjogICAgICAg ICAgIE51bWJlciBvZiB0aHJlYWRzIGluIGEgdGVhbQotKiBvbXBfZ2V0X3RlYW1zX3RocmVh ZF9saW1pdDo6ICBNYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIGltcG9zZWQgYnkgdGVhbXMK LSogb21wX2dldF90aHJlYWRfbGltaXQ6OiAgICAgICAgTWF4aW11bSBudW1iZXIgb2YgdGhy ZWFkcworKiBvbXBfZ2V0X21heF90aHJlYWRzOjogICAgICAgICBNYXhpbXVtIG51bWJlciBv ZiB0aHJlYWRzIG9mIHBhcmFsbGVsIHJlZ2lvbgogKiBvbXBfZ2V0X3RocmVhZF9udW06OiAg ICAgICAgICBDdXJyZW50IHRocmVhZCBJRAogKiBvbXBfaW5fcGFyYWxsZWw6OiAgICAgICAg ICAgICBXaGV0aGVyIGEgcGFyYWxsZWwgcmVnaW9uIGlzIGFjdGl2ZQotKiBvbXBfaW5fZmlu YWw6OiAgICAgICAgICAgICAgICBXaGV0aGVyIGluIGZpbmFsIG9yIGluY2x1ZGVkIHRhc2sg cmVnaW9uCi0qIG9tcF9pc19pbml0aWFsX2RldmljZTo6ICAgICAgIFdoZXRoZXIgZXhlY3V0 aW5nIG9uIHRoZSBob3N0IGRldmljZQotKiBvbXBfc2V0X2RlZmF1bHRfZGV2aWNlOjogICAg ICBTZXQgdGhlIGRlZmF1bHQgZGV2aWNlIGZvciB0YXJnZXQgcmVnaW9ucwogKiBvbXBfc2V0 X2R5bmFtaWM6OiAgICAgICAgICAgICBFbmFibGUvZGlzYWJsZSBkeW5hbWljIHRlYW1zCi0q IG9tcF9zZXRfbWF4X2FjdGl2ZV9sZXZlbHM6OiAgIExpbWl0cyB0aGUgbnVtYmVyIG9mIGFj dGl2ZSBwYXJhbGxlbCByZWdpb25zCisqIG9tcF9nZXRfZHluYW1pYzo6ICAgICAgICAgICAg IER5bmFtaWMgdGVhbXMgc2V0dGluZworKiBvbXBfZ2V0X2NhbmNlbGxhdGlvbjo6ICAgICAg ICBXaGV0aGVyIGNhbmNlbGxhdGlvbiBzdXBwb3J0IGlzIGVuYWJsZWQKICogb21wX3NldF9u ZXN0ZWQ6OiAgICAgICAgICAgICAgRW5hYmxlL2Rpc2FibGUgbmVzdGVkIHBhcmFsbGVsIHJl Z2lvbnMKLSogb21wX3NldF9udW1fdGVhbXM6OiAgICAgICAgICAgU2V0IHVwcGVyIHRlYW1z IGxpbWl0IGZvciB0ZWFtcyByZWdpb24KLSogb21wX3NldF9udW1fdGhyZWFkczo6ICAgICAg ICAgU2V0IHVwcGVyIHRlYW0gc2l6ZSBsaW1pdAorKiBvbXBfZ2V0X25lc3RlZDo6ICAgICAg ICAgICAgICBOZXN0ZWQgcGFyYWxsZWwgcmVnaW9ucwogKiBvbXBfc2V0X3NjaGVkdWxlOjog ICAgICAgICAgICBTZXQgdGhlIHJ1bnRpbWUgc2NoZWR1bGluZyBtZXRob2QKLSogb21wX3Nl dF90ZWFtc190aHJlYWRfbGltaXQ6OiAgU2V0IHVwcGVyIHRocmVhZCBsaW1pdCBmb3IgdGVh bXMgY29uc3RydWN0CisqIG9tcF9nZXRfc2NoZWR1bGU6OiAgICAgICAgICAgIE9idGFpbiB0 aGUgcnVudGltZSBzY2hlZHVsaW5nIG1ldGhvZAorKiBvbXBfZ2V0X3RlYW1zX3RocmVhZF9s aW1pdDo6ICBNYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIGltcG9zZWQgYnkgdGVhbXMKKyog b21wX2dldF9zdXBwb3J0ZWRfYWN0aXZlX2xldmVsczo6IE1heGltdW0gbnVtYmVyIG9mIGFj dGl2ZSByZWdpb25zIHN1cHBvcnRlZAorKiBvbXBfc2V0X21heF9hY3RpdmVfbGV2ZWxzOjog ICBMaW1pdHMgdGhlIG51bWJlciBvZiBhY3RpdmUgcGFyYWxsZWwgcmVnaW9ucworKiBvbXBf Z2V0X21heF9hY3RpdmVfbGV2ZWxzOjogICBDdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGFj dGl2ZSByZWdpb25zCisqIG9tcF9nZXRfbGV2ZWw6OiAgICAgICAgICAgICAgIE51bWJlciBv ZiBwYXJhbGxlbCByZWdpb25zCisqIG9tcF9nZXRfYW5jZXN0b3JfdGhyZWFkX251bTo6IEFu Y2VzdG9yIHRocmVhZCBJRAorKiBvbXBfZ2V0X3RlYW1fc2l6ZTo6ICAgICAgICAgICBOdW1i ZXIgb2YgdGhyZWFkcyBpbiBhIHRlYW0KKyogb21wX2dldF9hY3RpdmVfbGV2ZWw6OiAgICAg ICAgTnVtYmVyIG9mIGFjdGl2ZSBwYXJhbGxlbCByZWdpb25zCitAZW5kIG1lbnUKIAotSW5p dGlhbGl6ZSwgc2V0LCB0ZXN0LCB1bnNldCBhbmQgZGVzdHJveSBzaW1wbGUgYW5kIG5lc3Rl ZCBsb2Nrcy4KIAotKiBvbXBfaW5pdF9sb2NrOjogICAgICAgICAgICBJbml0aWFsaXplIHNp bXBsZSBsb2NrCi0qIG9tcF9zZXRfbG9jazo6ICAgICAgICAgICAgIFdhaXQgZm9yIGFuZCBz ZXQgc2ltcGxlIGxvY2sKLSogb21wX3Rlc3RfbG9jazo6ICAgICAgICAgICAgVGVzdCBhbmQg c2V0IHNpbXBsZSBsb2NrIGlmIGF2YWlsYWJsZQotKiBvbXBfdW5zZXRfbG9jazo6ICAgICAg ICAgICBVbnNldCBzaW1wbGUgbG9jawotKiBvbXBfZGVzdHJveV9sb2NrOjogICAgICAgICBE ZXN0cm95IHNpbXBsZSBsb2NrCi0qIG9tcF9pbml0X25lc3RfbG9jazo6ICAgICAgIEluaXRp YWxpemUgbmVzdGVkIGxvY2sKLSogb21wX3NldF9uZXN0X2xvY2s6OiAgICAgICAgV2FpdCBm b3IgYW5kIHNldCBzaW1wbGUgbG9jawotKiBvbXBfdGVzdF9uZXN0X2xvY2s6OiAgICAgICBU ZXN0IGFuZCBzZXQgbmVzdGVkIGxvY2sgaWYgYXZhaWxhYmxlCi0qIG9tcF91bnNldF9uZXN0 X2xvY2s6OiAgICAgIFVuc2V0IG5lc3RlZCBsb2NrCi0qIG9tcF9kZXN0cm95X25lc3RfbG9j azo6ICAgIERlc3Ryb3kgbmVzdGVkIGxvY2sKIAotUG9ydGFibGUsIHRocmVhZC1iYXNlZCwg d2FsbCBjbG9jayB0aW1lci4KK0Bub2RlIG9tcF9zZXRfbnVtX3RocmVhZHMKK0BzdWJzZWN0 aW9uIEBjb2Rle29tcF9zZXRfbnVtX3RocmVhZHN9IC0tIFNldCB1cHBlciB0ZWFtIHNpemUg bGltaXQKK0B0YWJsZSBAYXNpcworQGl0ZW0gQGVtcGh7RGVzY3JpcHRpb259OgorU3BlY2lm aWVzIHRoZSBudW1iZXIgb2YgdGhyZWFkcyB1c2VkIGJ5IGRlZmF1bHQgaW4gc3Vic2VxdWVu dCBwYXJhbGxlbAorc2VjdGlvbnMsIGlmIHRob3NlIGRvIG5vdCBzcGVjaWZ5IGEgQGNvZGV7 bnVtX3RocmVhZHN9IGNsYXVzZS4gIFRoZQorYXJndW1lbnQgb2YgQGNvZGV7b21wX3NldF9u dW1fdGhyZWFkc30gc2hhbGwgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLgogCi0qIG9tcF9nZXRf d3RpY2s6OiAgICAgICAgICAgIEdldCB0aW1lciBwcmVjaXNpb24uCi0qIG9tcF9nZXRfd3Rp bWU6OiAgICAgICAgICAgIEVsYXBzZWQgd2FsbCBjbG9jayB0aW1lLgorQGl0ZW0gQGVtcGh7 Qy9DKyt9OgorQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCitAaXRlbSBA ZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle3ZvaWQgb21wX3NldF9udW1fdGhyZWFkcyhp bnQgbnVtX3RocmVhZHMpO30KK0BlbmQgbXVsdGl0YWJsZQogCi1TdXBwb3J0IGZvciBldmVu dCBvYmplY3RzLgorQGl0ZW0gQGVtcGh7Rm9ydHJhbn06CitAbXVsdGl0YWJsZSBAY29sdW1u ZnJhY3Rpb25zIC4yMCAuODAKK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7 c3Vicm91dGluZSBvbXBfc2V0X251bV90aHJlYWRzKG51bV90aHJlYWRzKX0KK0BpdGVtICAg ICAgICAgICAgICAgICAgIEB0YWIgQGNvZGV7aW50ZWdlciwgaW50ZW50KGluKSA6OiBudW1f dGhyZWFkc30KK0BlbmQgbXVsdGl0YWJsZQogCi0qIG9tcF9mdWxmaWxsX2V2ZW50OjogICAg ICAgIEZ1bGZpbGwgYW5kIGRlc3Ryb3kgYW4gT3Blbk1QIGV2ZW50LgotQGVuZCBtZW51CitA aXRlbSBAZW1waHtTZWUgYWxzb306CitAcmVme09NUF9OVU1fVEhSRUFEU30sIEByZWZ7b21w X2dldF9udW1fdGhyZWFkc30sIEByZWZ7b21wX2dldF9tYXhfdGhyZWFkc30KIAorQGl0ZW0g QGVtcGh7UmVmZXJlbmNlfToKK0B1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5N UCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi4xLgorQGVuZCB0YWJsZQogCiAK LUBub2RlIG9tcF9nZXRfYWN0aXZlX2xldmVsCi1Ac2VjdGlvbiBAY29kZXtvbXBfZ2V0X2Fj dGl2ZV9sZXZlbH0gLS0gTnVtYmVyIG9mIHBhcmFsbGVsIHJlZ2lvbnMKKworQG5vZGUgb21w X2dldF9udW1fdGhyZWFkcworQHN1YnNlY3Rpb24gQGNvZGV7b21wX2dldF9udW1fdGhyZWFk c30gLS0gU2l6ZSBvZiB0aGUgYWN0aXZlIHRlYW0KIEB0YWJsZSBAYXNpcwogQGl0ZW0gQGVt cGh7RGVzY3JpcHRpb259OgotVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBuZXN0aW5nIGxl dmVsIGZvciB0aGUgYWN0aXZlIHBhcmFsbGVsIGJsb2NrcywKLXdoaWNoIGVuY2xvc2UgdGhl IGNhbGxpbmcgY2FsbC4KK1JldHVybnMgdGhlIG51bWJlciBvZiB0aHJlYWRzIGluIHRoZSBj dXJyZW50IHRlYW0uICBJbiBhIHNlcXVlbnRpYWwgc2VjdGlvbiBvZgordGhlIHByb2dyYW0g QGNvZGV7b21wX2dldF9udW1fdGhyZWFkc30gcmV0dXJucyAxLgogCi1AaXRlbSBAZW1waHtD L0MrK30KK1RoZSBkZWZhdWx0IHRlYW0gc2l6ZSBtYXkgYmUgaW5pdGlhbGl6ZWQgYXQgc3Rh cnR1cCBieSB0aGUKK0BlbnZ7T01QX05VTV9USFJFQURTfSBlbnZpcm9ubWVudCB2YXJpYWJs ZS4gIEF0IHJ1bnRpbWUsIHRoZSBzaXplCitvZiB0aGUgY3VycmVudCB0ZWFtIG1heSBiZSBz ZXQgZWl0aGVyIGJ5IHRoZSBAY29kZXtOVU1fVEhSRUFEU30KK2NsYXVzZSBvciBieSBAY29k ZXtvbXBfc2V0X251bV90aHJlYWRzfS4gIElmIG5vbmUgb2YgdGhlIGFib3ZlIHdlcmUKK3Vz ZWQgdG8gZGVmaW5lIGEgc3BlY2lmaWMgdmFsdWUgYW5kIEBlbnZ7T01QX0RZTkFNSUN9IGlz IGRpc2FibGVkLAorb25lIHRocmVhZCBwZXIgQ1BVIG9ubGluZSBpcyB1c2VkLgorCitAaXRl bSBAZW1waHtDL0MrK306CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAK LUBpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50IG9tcF9nZXRfYWN0aXZl X2xldmVsKHZvaWQpO30KK0BpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50 IG9tcF9nZXRfbnVtX3RocmVhZHModm9pZCk7fQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVt IEBlbXBoe0ZvcnRyYW59OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgw Ci1AaXRlbSBAZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle2ludGVnZXIgZnVuY3Rpb24g b21wX2dldF9hY3RpdmVfbGV2ZWwoKX0KK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIg QGNvZGV7aW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X251bV90aHJlYWRzKCl9CiBAZW5kIG11 bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7U2VlIGFsc299OgotQHJlZntvbXBfZ2V0X2xldmVs fSwgQHJlZntvbXBfZ2V0X21heF9hY3RpdmVfbGV2ZWxzfSwgQHJlZntvbXBfc2V0X21heF9h Y3RpdmVfbGV2ZWxzfQorQHJlZntvbXBfZ2V0X21heF90aHJlYWRzfSwgQHJlZntvbXBfc2V0 X251bV90aHJlYWRzfSwgQHJlZntPTVBfTlVNX1RIUkVBRFN9CiAKIEBpdGVtIEBlbXBoe1Jl ZmVyZW5jZX06Ci1AdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lm aWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMjAuCitAdXJlZntodHRwczovL3d3dy5vcGVu bXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMi4KIEBl bmQgdGFibGUKIAogCiAKLUBub2RlIG9tcF9nZXRfYW5jZXN0b3JfdGhyZWFkX251bQotQHNl Y3Rpb24gQGNvZGV7b21wX2dldF9hbmNlc3Rvcl90aHJlYWRfbnVtfSAtLSBBbmNlc3RvciB0 aHJlYWQgSUQKK0Bub2RlIG9tcF9nZXRfbWF4X3RocmVhZHMKK0BzdWJzZWN0aW9uIEBjb2Rl e29tcF9nZXRfbWF4X3RocmVhZHN9IC0tIE1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgb2Yg cGFyYWxsZWwgcmVnaW9uCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9u fToKLVRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdGhyZWFkIGlkZW50aWZpY2F0aW9uIG51 bWJlciBmb3IgdGhlIGdpdmVuCi1uZXN0aW5nIGxldmVsIG9mIHRoZSBjdXJyZW50IHRocmVh ZC4gIEZvciB2YWx1ZXMgb2YgQHZhcntsZXZlbH0gb3V0c2lkZQotemVybyB0byBAY29kZXtv bXBfZ2V0X2xldmVsfSAtMSBpcyByZXR1cm5lZDsgaWYgQHZhcntsZXZlbH0gaXMKLUBjb2Rl e29tcF9nZXRfbGV2ZWx9IHRoZSByZXN1bHQgaXMgaWRlbnRpY2FsIHRvIEBjb2Rle29tcF9n ZXRfdGhyZWFkX251bX0uCitSZXR1cm4gdGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMg dXNlZCBmb3IgdGhlIGN1cnJlbnQgcGFyYWxsZWwgcmVnaW9uCit0aGF0IGRvZXMgbm90IHVz ZSB0aGUgY2xhdXNlIEBjb2Rle251bV90aHJlYWRzfS4KIAotQGl0ZW0gQGVtcGh7Qy9DKyt9 CitAaXRlbSBAZW1waHtDL0MrK306CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4y MCAuODAKLUBpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50IG9tcF9nZXRf YW5jZXN0b3JfdGhyZWFkX251bShpbnQgbGV2ZWwpO30KK0BpdGVtIEBlbXBoe1Byb3RvdHlw ZX06IEB0YWIgQGNvZGV7aW50IG9tcF9nZXRfbWF4X3RocmVhZHModm9pZCk7fQogQGVuZCBt dWx0aXRhYmxlCiAKIEBpdGVtIEBlbXBoe0ZvcnRyYW59OgogQG11bHRpdGFibGUgQGNvbHVt bmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rl e2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF9hbmNlc3Rvcl90aHJlYWRfbnVtKGxldmVsKX0K LUBpdGVtICAgICAgICAgICAgICAgICAgIEB0YWIgQGNvZGV7aW50ZWdlciBsZXZlbH0KK0Bp dGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7aW50ZWdlciBmdW5jdGlvbiBvbXBf Z2V0X21heF90aHJlYWRzKCl9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7U2Vl IGFsc299OgotQHJlZntvbXBfZ2V0X2xldmVsfSwgQHJlZntvbXBfZ2V0X3RocmVhZF9udW19 LCBAcmVme29tcF9nZXRfdGVhbV9zaXplfQorQHJlZntvbXBfc2V0X251bV90aHJlYWRzfSwg QHJlZntvbXBfc2V0X2R5bmFtaWN9LCBAcmVme29tcF9nZXRfdGhyZWFkX2xpbWl0fQogCiBA aXRlbSBAZW1waHtSZWZlcmVuY2V9OgotQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywg T3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rpb24gMy4yLjE4LgorQHVyZWZ7aHR0 cHM6Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rp b24gMy4yLjMuCiBAZW5kIHRhYmxlCiAKIAogCi1Abm9kZSBvbXBfZ2V0X2NhbmNlbGxhdGlv bgotQHNlY3Rpb24gQGNvZGV7b21wX2dldF9jYW5jZWxsYXRpb259IC0tIFdoZXRoZXIgY2Fu Y2VsbGF0aW9uIHN1cHBvcnQgaXMgZW5hYmxlZAorQG5vZGUgb21wX2dldF90aHJlYWRfbnVt CitAc3Vic2VjdGlvbiBAY29kZXtvbXBfZ2V0X3RocmVhZF9udW19IC0tIEN1cnJlbnQgdGhy ZWFkIElECiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKLVRoaXMg ZnVuY3Rpb24gcmV0dXJucyBAY29kZXt0cnVlfSBpZiBjYW5jZWxsYXRpb24gaXMgYWN0aXZh dGVkLCBAY29kZXtmYWxzZX0KLW90aGVyd2lzZS4gIEhlcmUsIEBjb2Rle3RydWV9IGFuZCBA Y29kZXtmYWxzZX0gcmVwcmVzZW50IHRoZWlyIGxhbmd1YWdlLXNwZWNpZmljCi1jb3VudGVy cGFydHMuICBVbmxlc3MgQGVudntPTVBfQ0FOQ0VMTEFUSU9OfSBpcyBzZXQgdHJ1ZSwgY2Fu Y2VsbGF0aW9ucyBhcmUKLWRlYWN0aXZhdGVkLgorUmV0dXJucyBhIHVuaXF1ZSB0aHJlYWQg aWRlbnRpZmljYXRpb24gbnVtYmVyIHdpdGhpbiB0aGUgY3VycmVudCB0ZWFtLgorSW4gYSBz ZXF1ZW50aWFsIHBhcnRzIG9mIHRoZSBwcm9ncmFtLCBAY29kZXtvbXBfZ2V0X3RocmVhZF9u dW19CithbHdheXMgcmV0dXJucyAwLiAgSW4gcGFyYWxsZWwgcmVnaW9ucyB0aGUgcmV0dXJu IHZhbHVlIHZhcmllcworZnJvbSAwIHRvIEBjb2Rle29tcF9nZXRfbnVtX3RocmVhZHN9LTEg aW5jbHVzaXZlLiAgVGhlIHJldHVybgordmFsdWUgb2YgdGhlIHByaW1hcnkgdGhyZWFkIG9m IGEgdGVhbSBpcyBhbHdheXMgMC4KIAogQGl0ZW0gQGVtcGh7Qy9DKyt9OgogQG11bHRpdGFi bGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtQcm90b3R5cGV9OiBA dGFiIEBjb2Rle2ludCBvbXBfZ2V0X2NhbmNlbGxhdGlvbih2b2lkKTt9CitAaXRlbSBAZW1w aHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBvbXBfZ2V0X3RocmVhZF9udW0odm9pZCk7 fQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVtIEBlbXBoe0ZvcnRyYW59OgogQG11bHRpdGFi bGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtJbnRlcmZhY2V9OiBA dGFiIEBjb2Rle2xvZ2ljYWwgZnVuY3Rpb24gb21wX2dldF9jYW5jZWxsYXRpb24oKX0KK0Bp dGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7aW50ZWdlciBmdW5jdGlvbiBvbXBf Z2V0X3RocmVhZF9udW0oKX0KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtTZWUg YWxzb306Ci1AcmVme09NUF9DQU5DRUxMQVRJT059CitAcmVme29tcF9nZXRfbnVtX3RocmVh ZHN9LCBAcmVme29tcF9nZXRfYW5jZXN0b3JfdGhyZWFkX251bX0KIAogQGl0ZW0gQGVtcGh7 UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVj aWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi45LgorQHVyZWZ7aHR0cHM6Ly93d3cub3Bl bm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rpb24gMy4yLjQuCiBA ZW5kIHRhYmxlCiAKIAogCi1Abm9kZSBvbXBfZ2V0X2RlZmF1bHRfZGV2aWNlCi1Ac2VjdGlv biBAY29kZXtvbXBfZ2V0X2RlZmF1bHRfZGV2aWNlfSAtLSBHZXQgdGhlIGRlZmF1bHQgZGV2 aWNlIGZvciB0YXJnZXQgcmVnaW9ucworQG5vZGUgb21wX2luX3BhcmFsbGVsCitAc3Vic2Vj dGlvbiBAY29kZXtvbXBfaW5fcGFyYWxsZWx9IC0tIFdoZXRoZXIgYSBwYXJhbGxlbCByZWdp b24gaXMgYWN0aXZlCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToK LUdldCB0aGUgZGVmYXVsdCBkZXZpY2UgZm9yIHRhcmdldCByZWdpb25zIHdpdGhvdXQgZGV2 aWNlIGNsYXVzZS4KK1RoaXMgZnVuY3Rpb24gcmV0dXJucyBAY29kZXt0cnVlfSBpZiBjdXJy ZW50bHkgcnVubmluZyBpbiBwYXJhbGxlbCwKK0Bjb2Rle2ZhbHNlfSBvdGhlcndpc2UuICBI ZXJlLCBAY29kZXt0cnVlfSBhbmQgQGNvZGV7ZmFsc2V9IHJlcHJlc2VudAordGhlaXIgbGFu Z3VhZ2Utc3BlY2lmaWMgY291bnRlcnBhcnRzLgogCiBAaXRlbSBAZW1waHtDL0MrK306CiBA bXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe1Byb3Rv dHlwZX06IEB0YWIgQGNvZGV7aW50IG9tcF9nZXRfZGVmYXVsdF9kZXZpY2Uodm9pZCk7fQor QGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21wX2luX3BhcmFsbGVs KHZvaWQpO30KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtGb3J0cmFufToKIEBt dWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJm YWNlfTogQHRhYiBAY29kZXtpbnRlZ2VyIGZ1bmN0aW9uIG9tcF9nZXRfZGVmYXVsdF9kZXZp Y2UoKX0KK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7bG9naWNhbCBmdW5j dGlvbiBvbXBfaW5fcGFyYWxsZWwoKX0KIEBlbmQgbXVsdGl0YWJsZQogCi1AaXRlbSBAZW1w aHtTZWUgYWxzb306Ci1AcmVme09NUF9ERUZBVUxUX0RFVklDRX0sIEByZWZ7b21wX3NldF9k ZWZhdWx0X2RldmljZX0KLQogQGl0ZW0gQGVtcGh7UmVmZXJlbmNlfToKLUB1cmVme2h0dHBz Oi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9u IDMuMi4zMC4KK0B1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZp Y2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi42LgogQGVuZCB0YWJsZQogCiAKLQotQG5vZGUg b21wX2dldF9kZXZpY2VfbnVtCi1Ac2VjdGlvbiBAY29kZXtvbXBfZ2V0X2RldmljZV9udW19 IC0tIFJldHVybiBkZXZpY2UgbnVtYmVyIG9mIGN1cnJlbnQgZGV2aWNlCitAbm9kZSBvbXBf c2V0X2R5bmFtaWMKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF9zZXRfZHluYW1pY30gLS0gRW5h YmxlL2Rpc2FibGUgZHluYW1pYyB0ZWFtcwogQHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtE ZXNjcmlwdGlvbn06Ci1UaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBkZXZpY2UgbnVtYmVyIHRo YXQgcmVwcmVzZW50cyB0aGUgZGV2aWNlIHRoYXQgdGhlCi1jdXJyZW50IHRocmVhZCBpcyBl eGVjdXRpbmcgb24uIEZvciBPcGVuTVAgNS4wLCB0aGlzIG11c3QgYmUgZXF1YWwgdG8gdGhl Ci12YWx1ZSByZXR1cm5lZCBieSB0aGUgQGNvZGV7b21wX2dldF9pbml0aWFsX2RldmljZX0g ZnVuY3Rpb24gd2hlbiBjYWxsZWQKLWZyb20gdGhlIGhvc3QuCitFbmFibGUgb3IgZGlzYWJs ZSB0aGUgZHluYW1pYyBhZGp1c3RtZW50IG9mIHRoZSBudW1iZXIgb2YgdGhyZWFkcyAKK3dp dGhpbiBhIHRlYW0uICBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlIGxhbmd1YWdlLXNwZWNpZmlj IGVxdWl2YWxlbnQKK29mIEBjb2Rle3RydWV9IGFuZCBAY29kZXtmYWxzZX0sIHdoZXJlIEBj b2Rle3RydWV9IGVuYWJsZXMgZHluYW1pYyAKK2FkanVzdG1lbnQgb2YgdGVhbSBzaXplcyBh bmQgQGNvZGV7ZmFsc2V9IGRpc2FibGVzIGl0LgogCi1AaXRlbSBAZW1waHtDL0MrK30KK0Bp dGVtIEBlbXBoe0MvQysrfToKIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44 MAotQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21wX2dldF9kZXZp Y2VfbnVtKHZvaWQpO30KK0BpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7dm9p ZCBvbXBfc2V0X2R5bmFtaWMoaW50IGR5bmFtaWNfdGhyZWFkcyk7fQogQGVuZCBtdWx0aXRh YmxlCiAKIEBpdGVtIEBlbXBoe0ZvcnRyYW59OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0 aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle2ludGVn ZXIgZnVuY3Rpb24gb21wX2dldF9kZXZpY2VfbnVtKCl9CitAaXRlbSBAZW1waHtJbnRlcmZh Y2V9OiBAdGFiIEBjb2Rle3N1YnJvdXRpbmUgb21wX3NldF9keW5hbWljKGR5bmFtaWNfdGhy ZWFkcyl9CitAaXRlbSAgICAgICAgICAgICAgICAgICBAdGFiIEBjb2Rle2xvZ2ljYWwsIGlu dGVudChpbikgOjogZHluYW1pY190aHJlYWRzfQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVt IEBlbXBoe1NlZSBhbHNvfToKLUByZWZ7b21wX2dldF9pbml0aWFsX2RldmljZX0KK0ByZWZ7 T01QX0RZTkFNSUN9LCBAcmVme29tcF9nZXRfZHluYW1pY30KIAogQGl0ZW0gQGVtcGh7UmVm ZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZp Y2F0aW9uIHY1LjB9LCBTZWN0aW9uIDMuMi4zNy4KK0B1cmVme2h0dHBzOi8vd3d3Lm9wZW5t cC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi43LgogQGVu ZCB0YWJsZQogCiAKIAogQG5vZGUgb21wX2dldF9keW5hbWljCi1Ac2VjdGlvbiBAY29kZXtv bXBfZ2V0X2R5bmFtaWN9IC0tIER5bmFtaWMgdGVhbXMgc2V0dGluZworQHN1YnNlY3Rpb24g QGNvZGV7b21wX2dldF9keW5hbWljfSAtLSBEeW5hbWljIHRlYW1zIHNldHRpbmcKIEB0YWJs ZSBAYXNpcwogQGl0ZW0gQGVtcGh7RGVzY3JpcHRpb259OgogVGhpcyBmdW5jdGlvbiByZXR1 cm5zIEBjb2Rle3RydWV9IGlmIGVuYWJsZWQsIEBjb2Rle2ZhbHNlfSBvdGhlcndpc2UuIApA QCAtNzM4LDMwNCArNzUzLDQxOSBAQCBkaXNhYmxlZCBieSBkZWZhdWx0LgogCiAKIAotQG5v ZGUgb21wX2dldF9pbml0aWFsX2RldmljZQotQHNlY3Rpb24gQGNvZGV7b21wX2dldF9pbml0 aWFsX2RldmljZX0gLS0gUmV0dXJuIGRldmljZSBudW1iZXIgb2YgaW5pdGlhbCBkZXZpY2UK K0Bub2RlIG9tcF9nZXRfY2FuY2VsbGF0aW9uCitAc3Vic2VjdGlvbiBAY29kZXtvbXBfZ2V0 X2NhbmNlbGxhdGlvbn0gLS0gV2hldGhlciBjYW5jZWxsYXRpb24gc3VwcG9ydCBpcyBlbmFi bGVkCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKLVRoaXMgZnVu Y3Rpb24gcmV0dXJucyBhIGRldmljZSBudW1iZXIgdGhhdCByZXByZXNlbnRzIHRoZSBob3N0 IGRldmljZS4KLUZvciBPcGVuTVAgNS4xLCB0aGlzIG11c3QgYmUgZXF1YWwgdG8gdGhlIHZh bHVlIHJldHVybmVkIGJ5IHRoZQotQGNvZGV7b21wX2dldF9udW1fZGV2aWNlc30gZnVuY3Rp b24uCitUaGlzIGZ1bmN0aW9uIHJldHVybnMgQGNvZGV7dHJ1ZX0gaWYgY2FuY2VsbGF0aW9u IGlzIGFjdGl2YXRlZCwgQGNvZGV7ZmFsc2V9CitvdGhlcndpc2UuICBIZXJlLCBAY29kZXt0 cnVlfSBhbmQgQGNvZGV7ZmFsc2V9IHJlcHJlc2VudCB0aGVpciBsYW5ndWFnZS1zcGVjaWZp YworY291bnRlcnBhcnRzLiAgVW5sZXNzIEBlbnZ7T01QX0NBTkNFTExBVElPTn0gaXMgc2V0 IHRydWUsIGNhbmNlbGxhdGlvbnMgYXJlCitkZWFjdGl2YXRlZC4KIAotQGl0ZW0gQGVtcGh7 Qy9DKyt9CitAaXRlbSBAZW1waHtDL0MrK306CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rp b25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50IG9t cF9nZXRfaW5pdGlhbF9kZXZpY2Uodm9pZCk7fQorQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTog QHRhYiBAY29kZXtpbnQgb21wX2dldF9jYW5jZWxsYXRpb24odm9pZCk7fQogQGVuZCBtdWx0 aXRhYmxlCiAKIEBpdGVtIEBlbXBoe0ZvcnRyYW59OgogQG11bHRpdGFibGUgQGNvbHVtbmZy YWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle2lu dGVnZXIgZnVuY3Rpb24gb21wX2dldF9pbml0aWFsX2RldmljZSgpfQorQGl0ZW0gQGVtcGh7 SW50ZXJmYWNlfTogQHRhYiBAY29kZXtsb2dpY2FsIGZ1bmN0aW9uIG9tcF9nZXRfY2FuY2Vs bGF0aW9uKCl9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7U2VlIGFsc299Ogot QHJlZntvbXBfZ2V0X251bV9kZXZpY2VzfQorQHJlZntPTVBfQ0FOQ0VMTEFUSU9OfQogCiBA aXRlbSBAZW1waHtSZWZlcmVuY2V9OgotQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywg T3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rpb24gMy4yLjM1LgorQHVyZWZ7aHR0 cHM6Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rp b24gMy4yLjkuCiBAZW5kIHRhYmxlCiAKIAogCi1Abm9kZSBvbXBfZ2V0X2xldmVsCi1Ac2Vj dGlvbiBAY29kZXtvbXBfZ2V0X2xldmVsfSAtLSBPYnRhaW4gdGhlIGN1cnJlbnQgbmVzdGlu ZyBsZXZlbAorQG5vZGUgb21wX3NldF9uZXN0ZWQKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF9z ZXRfbmVzdGVkfSAtLSBFbmFibGUvZGlzYWJsZSBuZXN0ZWQgcGFyYWxsZWwgcmVnaW9ucwog QHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06Ci1UaGlzIGZ1bmN0aW9u IHJldHVybnMgdGhlIG5lc3RpbmcgbGV2ZWwgZm9yIHRoZSBwYXJhbGxlbCBibG9ja3MsCi13 aGljaCBlbmNsb3NlIHRoZSBjYWxsaW5nIGNhbGwuCitFbmFibGUgb3IgZGlzYWJsZSBuZXN0 ZWQgcGFyYWxsZWwgcmVnaW9ucywgaS5lLiwgd2hldGhlciB0ZWFtIG1lbWJlcnMKK2FyZSBh bGxvd2VkIHRvIGNyZWF0ZSBuZXcgdGVhbXMuICBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlIGxh bmd1YWdlLXNwZWNpZmljCitlcXVpdmFsZW50IG9mIEBjb2Rle3RydWV9IGFuZCBAY29kZXtm YWxzZX0sIHdoZXJlIEBjb2Rle3RydWV9IGVuYWJsZXMgCitkeW5hbWljIGFkanVzdG1lbnQg b2YgdGVhbSBzaXplcyBhbmQgQGNvZGV7ZmFsc2V9IGRpc2FibGVzIGl0LgogCi1AaXRlbSBA ZW1waHtDL0MrK30KK0VuYWJsaW5nIG5lc3RlZCBwYXJhbGxlbCByZWdpb25zIHdpbGwgYWxz byBzZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mCithY3RpdmUgbmVzdGVkIHJlZ2lvbnMgdG8g dGhlIG1heGltdW0gc3VwcG9ydGVkLiAgRGlzYWJsaW5nIG5lc3RlZCBwYXJhbGxlbAorcmVn aW9ucyB3aWxsIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWN0aXZlIG5lc3RlZCByZWdp b25zIHRvIG9uZS4KKworTm90ZSB0aGF0IHRoZSBAY29kZXtvbXBfc2V0X25lc3RlZH0gQVBJ IHJvdXRpbmUgd2FzIGRlcHJlY2F0ZWQKK2luIHRoZSBPcGVuTVAgc3BlY2lmaWNhdGlvbiA1 LjIgaW4gZmF2b3Igb2YgQGNvZGV7b21wX3NldF9tYXhfYWN0aXZlX2xldmVsc30uCisKK0Bp dGVtIEBlbXBoe0MvQysrfToKIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44 MAotQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21wX2dldF9sZXZl bCh2b2lkKTt9CitAaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle3ZvaWQgb21w X3NldF9uZXN0ZWQoaW50IG5lc3RlZCk7fQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVtIEBl bXBoe0ZvcnRyYW59OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1A aXRlbSBAZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle2ludGVnZXIgZnVuY3Rpb24gb21w X2xldmVsKCl9CitAaXRlbSBAZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle3N1YnJvdXRp bmUgb21wX3NldF9uZXN0ZWQobmVzdGVkKX0KK0BpdGVtICAgICAgICAgICAgICAgICAgIEB0 YWIgQGNvZGV7bG9naWNhbCwgaW50ZW50KGluKSA6OiBuZXN0ZWR9CiBAZW5kIG11bHRpdGFi bGUKIAogQGl0ZW0gQGVtcGh7U2VlIGFsc299OgotQHJlZntvbXBfZ2V0X2FjdGl2ZV9sZXZl bH0KK0ByZWZ7b21wX2dldF9uZXN0ZWR9LCBAcmVme29tcF9zZXRfbWF4X2FjdGl2ZV9sZXZl bHN9LAorQHJlZntPTVBfTUFYX0FDVElWRV9MRVZFTFN9LCBAcmVme09NUF9ORVNURUR9CiAK IEBpdGVtIEBlbXBoe1JlZmVyZW5jZX06Ci1AdXJlZntodHRwczovL3d3dy5vcGVubXAub3Jn LCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMTcuCitAdXJlZnto dHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2Vj dGlvbiAzLjIuMTAuCiBAZW5kIHRhYmxlCiAKIAogCi1Abm9kZSBvbXBfZ2V0X21heF9hY3Rp dmVfbGV2ZWxzCi1Ac2VjdGlvbiBAY29kZXtvbXBfZ2V0X21heF9hY3RpdmVfbGV2ZWxzfSAt LSBDdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGFjdGl2ZSByZWdpb25zCitAbm9kZSBvbXBf Z2V0X25lc3RlZAorQHN1YnNlY3Rpb24gQGNvZGV7b21wX2dldF9uZXN0ZWR9IC0tIE5lc3Rl ZCBwYXJhbGxlbCByZWdpb25zCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0 aW9ufToKLVRoaXMgZnVuY3Rpb24gb2J0YWlucyB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJl ciBvZiBuZXN0ZWQsIGFjdGl2ZSBwYXJhbGxlbCByZWdpb25zLgorVGhpcyBmdW5jdGlvbiBy ZXR1cm5zIEBjb2Rle3RydWV9IGlmIG5lc3RlZCBwYXJhbGxlbCByZWdpb25zIGFyZQorZW5h YmxlZCwgQGNvZGV7ZmFsc2V9IG90aGVyd2lzZS4gIEhlcmUsIEBjb2Rle3RydWV9IGFuZCBA Y29kZXtmYWxzZX0KK3JlcHJlc2VudCB0aGVpciBsYW5ndWFnZS1zcGVjaWZpYyBjb3VudGVy cGFydHMuCisKK1RoZSBzdGF0ZSBvZiBuZXN0ZWQgcGFyYWxsZWwgcmVnaW9ucyBhdCBzdGFy dHVwIGRlcGVuZHMgb24gc2V2ZXJhbAorZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgSWYgQGVu dntPTVBfTUFYX0FDVElWRV9MRVZFTFN9IGlzIGRlZmluZWQKK2FuZCBpcyBzZXQgdG8gZ3Jl YXRlciB0aGFuIG9uZSwgdGhlbiBuZXN0ZWQgcGFyYWxsZWwgcmVnaW9ucyB3aWxsIGJlCitl bmFibGVkLiAgSWYgbm90IGRlZmluZWQsIHRoZW4gdGhlIHZhbHVlIG9mIHRoZSBAZW52e09N UF9ORVNURUR9CitlbnZpcm9ubWVudCB2YXJpYWJsZSB3aWxsIGJlIGZvbGxvd2VkIGlmIGRl ZmluZWQuICBJZiBuZWl0aGVyIGFyZQorZGVmaW5lZCwgdGhlbiBpZiBlaXRoZXIgQGVudntP TVBfTlVNX1RIUkVBRFN9IG9yIEBlbnZ7T01QX1BST0NfQklORH0KK2FyZSBkZWZpbmVkIHdp dGggYSBsaXN0IG9mIG1vcmUgdGhhbiBvbmUgdmFsdWUsIHRoZW4gbmVzdGVkIHBhcmFsbGVs CityZWdpb25zIGFyZSBlbmFibGVkLiAgSWYgbm9uZSBvZiB0aGVzZSBhcmUgZGVmaW5lZCwg dGhlbiBuZXN0ZWQgcGFyYWxsZWwKK3JlZ2lvbnMgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQu CisKK05lc3RlZCBwYXJhbGxlbCByZWdpb25zIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVk IGF0IHJ1bnRpbWUgdXNpbmcKK0Bjb2Rle29tcF9zZXRfbmVzdGVkfSwgb3IgYnkgc2V0dGlu ZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbmVzdGVkCityZWdpb25zIHdpdGggQGNvZGV7b21w X3NldF9tYXhfYWN0aXZlX2xldmVsc30gdG8gb25lIHRvIGRpc2FibGUsIG9yCithYm92ZSBv bmUgdG8gZW5hYmxlLgorCitOb3RlIHRoYXQgdGhlIEBjb2Rle29tcF9nZXRfbmVzdGVkfSBB UEkgcm91dGluZSB3YXMgZGVwcmVjYXRlZAoraW4gdGhlIE9wZW5NUCBzcGVjaWZpY2F0aW9u IDUuMiBpbiBmYXZvciBvZiBAY29kZXtvbXBfZ2V0X21heF9hY3RpdmVfbGV2ZWxzfS4KKwor QGl0ZW0gQGVtcGh7Qy9DKyt9OgorQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAg LjgwCitAaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBvbXBfZ2V0X25l c3RlZCh2b2lkKTt9CitAZW5kIG11bHRpdGFibGUKKworQGl0ZW0gQGVtcGh7Rm9ydHJhbn06 CitAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKK0BpdGVtIEBlbXBoe0lu dGVyZmFjZX06IEB0YWIgQGNvZGV7bG9naWNhbCBmdW5jdGlvbiBvbXBfZ2V0X25lc3RlZCgp fQorQGVuZCBtdWx0aXRhYmxlCisKK0BpdGVtIEBlbXBoe1NlZSBhbHNvfToKK0ByZWZ7b21w X2dldF9tYXhfYWN0aXZlX2xldmVsc30sIEByZWZ7b21wX3NldF9uZXN0ZWR9LAorQHJlZntP TVBfTUFYX0FDVElWRV9MRVZFTFN9LCBAcmVme09NUF9ORVNURUR9CisKK0BpdGVtIEBlbXBo e1JlZmVyZW5jZX06CitAdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3Bl Y2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMTEuCitAZW5kIHRhYmxlCisKKworCitA bm9kZSBvbXBfc2V0X3NjaGVkdWxlCitAc3Vic2VjdGlvbiBAY29kZXtvbXBfc2V0X3NjaGVk dWxlfSAtLSBTZXQgdGhlIHJ1bnRpbWUgc2NoZWR1bGluZyBtZXRob2QKK0B0YWJsZSBAYXNp cworQGl0ZW0gQGVtcGh7RGVzY3JpcHRpb259OgorU2V0cyB0aGUgcnVudGltZSBzY2hlZHVs aW5nIG1ldGhvZC4gIFRoZSBAdmFye2tpbmR9IGFyZ3VtZW50IGNhbiBoYXZlIHRoZQordmFs dWUgQGNvZGV7b21wX3NjaGVkX3N0YXRpY30sIEBjb2Rle29tcF9zY2hlZF9keW5hbWljfSwK K0Bjb2Rle29tcF9zY2hlZF9ndWlkZWR9IG9yIEBjb2Rle29tcF9zY2hlZF9hdXRvfS4gIEV4 Y2VwdCBmb3IKK0Bjb2Rle29tcF9zY2hlZF9hdXRvfSwgdGhlIGNodW5rIHNpemUgaXMgc2V0 IHRvIHRoZSB2YWx1ZSBvZgorQHZhcntjaHVua19zaXplfSBpZiBwb3NpdGl2ZSwgb3IgdG8g dGhlIGRlZmF1bHQgdmFsdWUgaWYgemVybyBvciBuZWdhdGl2ZS4KK0ZvciBAY29kZXtvbXBf c2NoZWRfYXV0b30gdGhlIEB2YXJ7Y2h1bmtfc2l6ZX0gYXJndW1lbnQgaXMgaWdub3JlZC4K IAogQGl0ZW0gQGVtcGh7Qy9DKyt9CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4y MCAuODAKLUBpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50IG9tcF9nZXRf bWF4X2FjdGl2ZV9sZXZlbHModm9pZCk7fQorQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRh YiBAY29kZXt2b2lkIG9tcF9zZXRfc2NoZWR1bGUob21wX3NjaGVkX3Qga2luZCwgaW50IGNo dW5rX3NpemUpO30KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtGb3J0cmFufToK IEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50 ZXJmYWNlfTogQHRhYiBAY29kZXtpbnRlZ2VyIGZ1bmN0aW9uIG9tcF9nZXRfbWF4X2FjdGl2 ZV9sZXZlbHMoKX0KK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7c3Vicm91 dGluZSBvbXBfc2V0X3NjaGVkdWxlKGtpbmQsIGNodW5rX3NpemUpfQorQGl0ZW0gICAgICAg ICAgICAgICAgICAgQHRhYiBAY29kZXtpbnRlZ2VyKGtpbmQ9b21wX3NjaGVkX2tpbmQpIGtp bmR9CitAaXRlbSAgICAgICAgICAgICAgICAgICBAdGFiIEBjb2Rle2ludGVnZXIgY2h1bmtf c2l6ZX0KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtTZWUgYWxzb306Ci1AcmVm e29tcF9zZXRfbWF4X2FjdGl2ZV9sZXZlbHN9LCBAcmVme29tcF9nZXRfYWN0aXZlX2xldmVs fQorQHJlZntvbXBfZ2V0X3NjaGVkdWxlfQorQHJlZntPTVBfU0NIRURVTEV9CiAKIEBpdGVt IEBlbXBoe1JlZmVyZW5jZX06Ci1AdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVu TVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMTYuCitAdXJlZntodHRwczov L3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAz LjIuMTIuCiBAZW5kIHRhYmxlCiAKIAotQG5vZGUgb21wX2dldF9tYXhfdGFza19wcmlvcml0 eQotQHNlY3Rpb24gQGNvZGV7b21wX2dldF9tYXhfdGFza19wcmlvcml0eX0gLS0gTWF4aW11 bSBwcmlvcml0eSB2YWx1ZQotdGhhdCBjYW4gYmUgc2V0IGZvciB0YXNrcy4KKworQG5vZGUg b21wX2dldF9zY2hlZHVsZQorQHN1YnNlY3Rpb24gQGNvZGV7b21wX2dldF9zY2hlZHVsZX0g LS0gT2J0YWluIHRoZSBydW50aW1lIHNjaGVkdWxpbmcgbWV0aG9kCiBAdGFibGUgQGFzaXMK IEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKLVRoaXMgZnVuY3Rpb24gb2J0YWlucyB0aGUg bWF4aW11bSBhbGxvd2VkIHByaW9yaXR5IG51bWJlciBmb3IgdGFza3MuCitPYnRhaW4gdGhl IHJ1bnRpbWUgc2NoZWR1bGluZyBtZXRob2QuICBUaGUgQHZhcntraW5kfSBhcmd1bWVudCB3 aWxsIGJlCitzZXQgdG8gdGhlIHZhbHVlIEBjb2Rle29tcF9zY2hlZF9zdGF0aWN9LCBAY29k ZXtvbXBfc2NoZWRfZHluYW1pY30sCitAY29kZXtvbXBfc2NoZWRfZ3VpZGVkfSBvciBAY29k ZXtvbXBfc2NoZWRfYXV0b30uICBUaGUgc2Vjb25kIGFyZ3VtZW50LAorQHZhcntjaHVua19z aXplfSwgaXMgc2V0IHRvIHRoZSBjaHVuayBzaXplLgogCiBAaXRlbSBAZW1waHtDL0MrK30K IEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7UHJv dG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21wX2dldF9tYXhfdGFza19wcmlvcml0eSh2b2lk KTt9CitAaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle3ZvaWQgb21wX2dldF9z Y2hlZHVsZShvbXBfc2NoZWRfdCAqa2luZCwgaW50ICpjaHVua19zaXplKTt9CiBAZW5kIG11 bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7Rm9ydHJhbn06CiBAbXVsdGl0YWJsZSBAY29sdW1u ZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7 aW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X21heF90YXNrX3ByaW9yaXR5KCl9CitAaXRlbSBA ZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle3N1YnJvdXRpbmUgb21wX2dldF9zY2hlZHVs ZShraW5kLCBjaHVua19zaXplKX0KK0BpdGVtICAgICAgICAgICAgICAgICAgIEB0YWIgQGNv ZGV7aW50ZWdlcihraW5kPW9tcF9zY2hlZF9raW5kKSBraW5kfQorQGl0ZW0gICAgICAgICAg ICAgICAgICAgQHRhYiBAY29kZXtpbnRlZ2VyIGNodW5rX3NpemV9CiBAZW5kIG11bHRpdGFi bGUKIAorQGl0ZW0gQGVtcGh7U2VlIGFsc299OgorQHJlZntvbXBfc2V0X3NjaGVkdWxlfSwg QHJlZntPTVBfU0NIRURVTEV9CisKIEBpdGVtIEBlbXBoe1JlZmVyZW5jZX06Ci1AdXJlZnto dHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2Vj dGlvbiAzLjIuMjkuCitAdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3Bl Y2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMTMuCiBAZW5kIHRhYmxlCiAKIAotQG5v ZGUgb21wX2dldF9tYXhfdGVhbXMKLUBzZWN0aW9uIEBjb2Rle29tcF9nZXRfbWF4X3RlYW1z fSAtLSBNYXhpbXVtIG51bWJlciBvZiB0ZWFtcyBvZiB0ZWFtcyByZWdpb24KK0Bub2RlIG9t cF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0CitAc3Vic2VjdGlvbiBAY29kZXtvbXBfZ2V0X3Rl YW1zX3RocmVhZF9saW1pdH0gLS0gTWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyBpbXBvc2Vk IGJ5IHRlYW1zCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKLVJl dHVybiB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGVhbXMgdXNlZCBmb3IgdGhlIHRlYW1zIHJl Z2lvbgotdGhhdCBkb2VzIG5vdCB1c2UgdGhlIGNsYXVzZSBAY29kZXtudW1fdGVhbXN9Lgor UmV0dXJuIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgd2lsbCBiZSBhYmxl IHRvIHBhcnRpY2lwYXRlIGluCitlYWNoIHRlYW0gY3JlYXRlZCBieSBhIHRlYW1zIGNvbnN0 cnVjdC4KIAogQGl0ZW0gQGVtcGh7Qy9DKyt9OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0 aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBv bXBfZ2V0X21heF90ZWFtcyh2b2lkKTt9CitAaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFi IEBjb2Rle2ludCBvbXBfZ2V0X3RlYW1zX3RocmVhZF9saW1pdCh2b2lkKTt9CiBAZW5kIG11 bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7Rm9ydHJhbn06CiBAbXVsdGl0YWJsZSBAY29sdW1u ZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7 aW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X21heF90ZWFtcygpfQorQGl0ZW0gQGVtcGh7SW50 ZXJmYWNlfTogQHRhYiBAY29kZXtpbnRlZ2VyIGZ1bmN0aW9uIG9tcF9nZXRfdGVhbXNfdGhy ZWFkX2xpbWl0KCl9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7U2VlIGFsc299 OgotQHJlZntvbXBfc2V0X251bV90ZWFtc30sIEByZWZ7b21wX2dldF9udW1fdGVhbXN9CitA cmVme29tcF9zZXRfdGVhbXNfdGhyZWFkX2xpbWl0fSwgQHJlZntPTVBfVEVBTVNfVEhSRUFE X0xJTUlUfQogCiBAaXRlbSBAZW1waHtSZWZlcmVuY2V9OgotQHVyZWZ7aHR0cHM6Ly93d3cu b3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjUuMX0sIFNlY3Rpb24gMy40LjQu CitAdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2 NS4xfSwgU2VjdGlvbiAzLjQuNi4KIEBlbmQgdGFibGUKIAogCiAKLUBub2RlIG9tcF9nZXRf bWF4X3RocmVhZHMKLUBzZWN0aW9uIEBjb2Rle29tcF9nZXRfbWF4X3RocmVhZHN9IC0tIE1h eGltdW0gbnVtYmVyIG9mIHRocmVhZHMgb2YgcGFyYWxsZWwgcmVnaW9uCitAbm9kZSBvbXBf Z2V0X3N1cHBvcnRlZF9hY3RpdmVfbGV2ZWxzCitAc3Vic2VjdGlvbiBAY29kZXtvbXBfZ2V0 X3N1cHBvcnRlZF9hY3RpdmVfbGV2ZWxzfSAtLSBNYXhpbXVtIG51bWJlciBvZiBhY3RpdmUg cmVnaW9ucyBzdXBwb3J0ZWQKIEB0YWJsZSBAYXNpcwogQGl0ZW0gQGVtcGh7RGVzY3JpcHRp b259OgotUmV0dXJuIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHVzZWQgZm9yIHRo ZSBjdXJyZW50IHBhcmFsbGVsIHJlZ2lvbgotdGhhdCBkb2VzIG5vdCB1c2UgdGhlIGNsYXVz ZSBAY29kZXtudW1fdGhyZWFkc30uCitUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG1heGlt dW0gbnVtYmVyIG9mIG5lc3RlZCwgYWN0aXZlIHBhcmFsbGVsIHJlZ2lvbnMKK3N1cHBvcnRl ZCBieSB0aGlzIGltcGxlbWVudGF0aW9uLgogCi1AaXRlbSBAZW1waHtDL0MrK306CitAaXRl bSBAZW1waHtDL0MrK30KIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAot QGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21wX2dldF9tYXhfdGhy ZWFkcyh2b2lkKTt9CitAaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBv bXBfZ2V0X3N1cHBvcnRlZF9hY3RpdmVfbGV2ZWxzKHZvaWQpO30KIEBlbmQgbXVsdGl0YWJs ZQogCiBAaXRlbSBAZW1waHtGb3J0cmFufToKIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlv bnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBAY29kZXtpbnRlZ2Vy IGZ1bmN0aW9uIG9tcF9nZXRfbWF4X3RocmVhZHMoKX0KK0BpdGVtIEBlbXBoe0ludGVyZmFj ZX06IEB0YWIgQGNvZGV7aW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X3N1cHBvcnRlZF9hY3Rp dmVfbGV2ZWxzKCl9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7U2VlIGFsc299 OgotQHJlZntvbXBfc2V0X251bV90aHJlYWRzfSwgQHJlZntvbXBfc2V0X2R5bmFtaWN9LCBA cmVme29tcF9nZXRfdGhyZWFkX2xpbWl0fQorQHJlZntvbXBfZ2V0X21heF9hY3RpdmVfbGV2 ZWxzfSwgQHJlZntvbXBfc2V0X21heF9hY3RpdmVfbGV2ZWxzfQogCiBAaXRlbSBAZW1waHtS ZWZlcmVuY2V9OgotQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNp ZmljYXRpb24gdjQuNX0sIFNlY3Rpb24gMy4yLjMuCitAdXJlZntodHRwczovL3d3dy5vcGVu bXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NS4wfSwgU2VjdGlvbiAzLjIuMTUuCiBA ZW5kIHRhYmxlCiAKIAogCi1Abm9kZSBvbXBfZ2V0X25lc3RlZAotQHNlY3Rpb24gQGNvZGV7 b21wX2dldF9uZXN0ZWR9IC0tIE5lc3RlZCBwYXJhbGxlbCByZWdpb25zCitAbm9kZSBvbXBf c2V0X21heF9hY3RpdmVfbGV2ZWxzCitAc3Vic2VjdGlvbiBAY29kZXtvbXBfc2V0X21heF9h Y3RpdmVfbGV2ZWxzfSAtLSBMaW1pdHMgdGhlIG51bWJlciBvZiBhY3RpdmUgcGFyYWxsZWwg cmVnaW9ucwogQHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06Ci1UaGlz IGZ1bmN0aW9uIHJldHVybnMgQGNvZGV7dHJ1ZX0gaWYgbmVzdGVkIHBhcmFsbGVsIHJlZ2lv bnMgYXJlCi1lbmFibGVkLCBAY29kZXtmYWxzZX0gb3RoZXJ3aXNlLiAgSGVyZSwgQGNvZGV7 dHJ1ZX0gYW5kIEBjb2Rle2ZhbHNlfQotcmVwcmVzZW50IHRoZWlyIGxhbmd1YWdlLXNwZWNp ZmljIGNvdW50ZXJwYXJ0cy4KK1RoaXMgZnVuY3Rpb24gbGltaXRzIHRoZSBtYXhpbXVtIGFs bG93ZWQgbnVtYmVyIG9mIG5lc3RlZCwgYWN0aXZlCitwYXJhbGxlbCByZWdpb25zLiAgQHZh cnttYXhfbGV2ZWxzfSBtdXN0IGJlIGxlc3Mgb3IgZXF1YWwgdG8KK3RoZSB2YWx1ZSByZXR1 cm5lZCBieSBAY29kZXtvbXBfZ2V0X3N1cHBvcnRlZF9hY3RpdmVfbGV2ZWxzfS4KIAotVGhl IHN0YXRlIG9mIG5lc3RlZCBwYXJhbGxlbCByZWdpb25zIGF0IHN0YXJ0dXAgZGVwZW5kcyBv biBzZXZlcmFsCi1lbnZpcm9ubWVudCB2YXJpYWJsZXMuICBJZiBAZW52e09NUF9NQVhfQUNU SVZFX0xFVkVMU30gaXMgZGVmaW5lZAotYW5kIGlzIHNldCB0byBncmVhdGVyIHRoYW4gb25l LCB0aGVuIG5lc3RlZCBwYXJhbGxlbCByZWdpb25zIHdpbGwgYmUKLWVuYWJsZWQuICBJZiBu b3QgZGVmaW5lZCwgdGhlbiB0aGUgdmFsdWUgb2YgdGhlIEBlbnZ7T01QX05FU1RFRH0KLWVu dmlyb25tZW50IHZhcmlhYmxlIHdpbGwgYmUgZm9sbG93ZWQgaWYgZGVmaW5lZC4gIElmIG5l aXRoZXIgYXJlCi1kZWZpbmVkLCB0aGVuIGlmIGVpdGhlciBAZW52e09NUF9OVU1fVEhSRUFE U30gb3IgQGVudntPTVBfUFJPQ19CSU5EfQotYXJlIGRlZmluZWQgd2l0aCBhIGxpc3Qgb2Yg bW9yZSB0aGFuIG9uZSB2YWx1ZSwgdGhlbiBuZXN0ZWQgcGFyYWxsZWwKLXJlZ2lvbnMgYXJl IGVuYWJsZWQuICBJZiBub25lIG9mIHRoZXNlIGFyZSBkZWZpbmVkLCB0aGVuIG5lc3RlZCBw YXJhbGxlbAotcmVnaW9ucyBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdC4KK0BpdGVtIEBlbXBo e0MvQysrfQorQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCitAaXRlbSBA ZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle3ZvaWQgb21wX3NldF9tYXhfYWN0aXZlX2xl dmVscyhpbnQgbWF4X2xldmVscyk7fQorQGVuZCBtdWx0aXRhYmxlCiAKLU5lc3RlZCBwYXJh bGxlbCByZWdpb25zIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGF0IHJ1bnRpbWUgdXNp bmcKLUBjb2Rle29tcF9zZXRfbmVzdGVkfSwgb3IgYnkgc2V0dGluZyB0aGUgbWF4aW11bSBu dW1iZXIgb2YgbmVzdGVkCi1yZWdpb25zIHdpdGggQGNvZGV7b21wX3NldF9tYXhfYWN0aXZl X2xldmVsc30gdG8gb25lIHRvIGRpc2FibGUsIG9yCi1hYm92ZSBvbmUgdG8gZW5hYmxlLgor QGl0ZW0gQGVtcGh7Rm9ydHJhbn06CitAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4y MCAuODAKK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7c3Vicm91dGluZSBv bXBfc2V0X21heF9hY3RpdmVfbGV2ZWxzKG1heF9sZXZlbHMpfQorQGl0ZW0gICAgICAgICAg ICAgICAgICAgQHRhYiBAY29kZXtpbnRlZ2VyIG1heF9sZXZlbHN9CitAZW5kIG11bHRpdGFi bGUKIAotTm90ZSB0aGF0IHRoZSBAY29kZXtvbXBfZ2V0X25lc3RlZH0gQVBJIHJvdXRpbmUg d2FzIGRlcHJlY2F0ZWQKLWluIHRoZSBPcGVuTVAgc3BlY2lmaWNhdGlvbiA1LjIgaW4gZmF2 b3Igb2YgQGNvZGV7b21wX2dldF9tYXhfYWN0aXZlX2xldmVsc30uCitAaXRlbSBAZW1waHtT ZWUgYWxzb306CitAcmVme29tcF9nZXRfbWF4X2FjdGl2ZV9sZXZlbHN9LCBAcmVme29tcF9n ZXRfYWN0aXZlX2xldmVsfSwKK0ByZWZ7b21wX2dldF9zdXBwb3J0ZWRfYWN0aXZlX2xldmVs c30KIAotQGl0ZW0gQGVtcGh7Qy9DKyt9OgorQGl0ZW0gQGVtcGh7UmVmZXJlbmNlfToKK0B1 cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9 LCBTZWN0aW9uIDMuMi4xNS4KK0BlbmQgdGFibGUKKworCisKK0Bub2RlIG9tcF9nZXRfbWF4 X2FjdGl2ZV9sZXZlbHMKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF9nZXRfbWF4X2FjdGl2ZV9s ZXZlbHN9IC0tIEN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYWN0aXZlIHJlZ2lvbnMKK0B0 YWJsZSBAYXNpcworQGl0ZW0gQGVtcGh7RGVzY3JpcHRpb259OgorVGhpcyBmdW5jdGlvbiBv YnRhaW5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIG5lc3RlZCwgYWN0aXZlIHBh cmFsbGVsIHJlZ2lvbnMuCisKK0BpdGVtIEBlbXBoe0MvQysrfQogQG11bHRpdGFibGUgQGNv bHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBj b2Rle2ludCBvbXBfZ2V0X25lc3RlZCh2b2lkKTt9CitAaXRlbSBAZW1waHtQcm90b3R5cGV9 OiBAdGFiIEBjb2Rle2ludCBvbXBfZ2V0X21heF9hY3RpdmVfbGV2ZWxzKHZvaWQpO30KIEBl bmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtGb3J0cmFufToKIEBtdWx0aXRhYmxlIEBj b2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBA Y29kZXtsb2dpY2FsIGZ1bmN0aW9uIG9tcF9nZXRfbmVzdGVkKCl9CitAaXRlbSBAZW1waHtJ bnRlcmZhY2V9OiBAdGFiIEBjb2Rle2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF9tYXhfYWN0 aXZlX2xldmVscygpfQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVtIEBlbXBoe1NlZSBhbHNv fToKLUByZWZ7b21wX2dldF9tYXhfYWN0aXZlX2xldmVsc30sIEByZWZ7b21wX3NldF9uZXN0 ZWR9LAotQHJlZntPTVBfTUFYX0FDVElWRV9MRVZFTFN9LCBAcmVme09NUF9ORVNURUR9CitA cmVme29tcF9zZXRfbWF4X2FjdGl2ZV9sZXZlbHN9LCBAcmVme29tcF9nZXRfYWN0aXZlX2xl dmVsfQogCiBAaXRlbSBAZW1waHtSZWZlcmVuY2V9OgotQHVyZWZ7aHR0cHM6Ly93d3cub3Bl bm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rpb24gMy4yLjExLgor QHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQu NX0sIFNlY3Rpb24gMy4yLjE2LgogQGVuZCB0YWJsZQogCiAKLQotQG5vZGUgb21wX2dldF9u dW1fZGV2aWNlcwotQHNlY3Rpb24gQGNvZGV7b21wX2dldF9udW1fZGV2aWNlc30gLS0gTnVt YmVyIG9mIHRhcmdldCBkZXZpY2VzCitAbm9kZSBvbXBfZ2V0X2xldmVsCitAc3Vic2VjdGlv biBAY29kZXtvbXBfZ2V0X2xldmVsfSAtLSBPYnRhaW4gdGhlIGN1cnJlbnQgbmVzdGluZyBs ZXZlbAogQHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06Ci1SZXR1cm5z IHRoZSBudW1iZXIgb2YgdGFyZ2V0IGRldmljZXMuCitUaGlzIGZ1bmN0aW9uIHJldHVybnMg dGhlIG5lc3RpbmcgbGV2ZWwgZm9yIHRoZSBwYXJhbGxlbCBibG9ja3MsCit3aGljaCBlbmNs b3NlIHRoZSBjYWxsaW5nIGNhbGwuCiAKLUBpdGVtIEBlbXBoe0MvQysrfToKK0BpdGVtIEBl bXBoe0MvQysrfQogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRl bSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBvbXBfZ2V0X251bV9kZXZpY2Vz KHZvaWQpO30KK0BpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50IG9tcF9n ZXRfbGV2ZWwodm9pZCk7fQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVtIEBlbXBoe0ZvcnRy YW59OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1w aHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF9udW1f ZGV2aWNlcygpfQorQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBAY29kZXtpbnRlZ2Vy IGZ1bmN0aW9uIG9tcF9sZXZlbCgpfQogQGVuZCBtdWx0aXRhYmxlCiAKK0BpdGVtIEBlbXBo e1NlZSBhbHNvfToKK0ByZWZ7b21wX2dldF9hY3RpdmVfbGV2ZWx9CisKIEBpdGVtIEBlbXBo e1JlZmVyZW5jZX06Ci1AdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3Bl Y2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMzEuCitAdXJlZntodHRwczovL3d3dy5v cGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMTcu CiBAZW5kIHRhYmxlCiAKIAogCi1Abm9kZSBvbXBfZ2V0X251bV9wcm9jcwotQHNlY3Rpb24g QGNvZGV7b21wX2dldF9udW1fcHJvY3N9IC0tIE51bWJlciBvZiBwcm9jZXNzb3JzIG9ubGlu ZQorQG5vZGUgb21wX2dldF9hbmNlc3Rvcl90aHJlYWRfbnVtCitAc3Vic2VjdGlvbiBAY29k ZXtvbXBfZ2V0X2FuY2VzdG9yX3RocmVhZF9udW19IC0tIEFuY2VzdG9yIHRocmVhZCBJRAog QHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06Ci1SZXR1cm5zIHRoZSBu dW1iZXIgb2YgcHJvY2Vzc29ycyBvbmxpbmUgb24gdGhhdCBkZXZpY2UuCitUaGlzIGZ1bmN0 aW9uIHJldHVybnMgdGhlIHRocmVhZCBpZGVudGlmaWNhdGlvbiBudW1iZXIgZm9yIHRoZSBn aXZlbgorbmVzdGluZyBsZXZlbCBvZiB0aGUgY3VycmVudCB0aHJlYWQuICBGb3IgdmFsdWVz IG9mIEB2YXJ7bGV2ZWx9IG91dHNpZGUKK3plcm8gdG8gQGNvZGV7b21wX2dldF9sZXZlbH0g LTEgaXMgcmV0dXJuZWQ7IGlmIEB2YXJ7bGV2ZWx9IGlzCitAY29kZXtvbXBfZ2V0X2xldmVs fSB0aGUgcmVzdWx0IGlzIGlkZW50aWNhbCB0byBAY29kZXtvbXBfZ2V0X3RocmVhZF9udW19 LgogCi1AaXRlbSBAZW1waHtDL0MrK306CitAaXRlbSBAZW1waHtDL0MrK30KIEBtdWx0aXRh YmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTog QHRhYiBAY29kZXtpbnQgb21wX2dldF9udW1fcHJvY3Modm9pZCk7fQorQGl0ZW0gQGVtcGh7 UHJvdG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21wX2dldF9hbmNlc3Rvcl90aHJlYWRfbnVt KGludCBsZXZlbCk7fQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVtIEBlbXBoe0ZvcnRyYW59 OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtJ bnRlcmZhY2V9OiBAdGFiIEBjb2Rle2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF9udW1fcHJv Y3MoKX0KK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7aW50ZWdlciBmdW5j dGlvbiBvbXBfZ2V0X2FuY2VzdG9yX3RocmVhZF9udW0obGV2ZWwpfQorQGl0ZW0gICAgICAg ICAgICAgICAgICAgQHRhYiBAY29kZXtpbnRlZ2VyIGxldmVsfQogQGVuZCBtdWx0aXRhYmxl CiAKK0BpdGVtIEBlbXBoe1NlZSBhbHNvfToKK0ByZWZ7b21wX2dldF9sZXZlbH0sIEByZWZ7 b21wX2dldF90aHJlYWRfbnVtfSwgQHJlZntvbXBfZ2V0X3RlYW1fc2l6ZX0KKwogQGl0ZW0g QGVtcGh7UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5N UCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi41LgorQHVyZWZ7aHR0cHM6Ly93 d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rpb24gMy4y LjE4LgogQGVuZCB0YWJsZQogCiAKIAotQG5vZGUgb21wX2dldF9udW1fdGVhbXMKLUBzZWN0 aW9uIEBjb2Rle29tcF9nZXRfbnVtX3RlYW1zfSAtLSBOdW1iZXIgb2YgdGVhbXMKK0Bub2Rl IG9tcF9nZXRfdGVhbV9zaXplCitAc3Vic2VjdGlvbiBAY29kZXtvbXBfZ2V0X3RlYW1fc2l6 ZX0gLS0gTnVtYmVyIG9mIHRocmVhZHMgaW4gYSB0ZWFtCiBAdGFibGUgQGFzaXMKIEBpdGVt IEBlbXBoe0Rlc2NyaXB0aW9ufToKLVJldHVybnMgdGhlIG51bWJlciBvZiB0ZWFtcyBpbiB0 aGUgY3VycmVudCB0ZWFtIHJlZ2lvbi4KK1RoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVt YmVyIG9mIHRocmVhZHMgaW4gYSB0aHJlYWQgdGVhbSB0byB3aGljaAorZWl0aGVyIHRoZSBj dXJyZW50IHRocmVhZCBvciBpdHMgYW5jZXN0b3IgYmVsb25ncy4gIEZvciB2YWx1ZXMgb2Yg QHZhcntsZXZlbH0KK291dHNpZGUgemVybyB0byBAY29kZXtvbXBfZ2V0X2xldmVsfSwgLTEg aXMgcmV0dXJuZWQ7IGlmIEB2YXJ7bGV2ZWx9IGlzIHplcm8sCisxIGlzIHJldHVybmVkLCBh bmQgZm9yIEBjb2Rle29tcF9nZXRfbGV2ZWx9LCB0aGUgcmVzdWx0IGlzIGlkZW50aWNhbAor dG8gQGNvZGV7b21wX2dldF9udW1fdGhyZWFkc30uCiAKIEBpdGVtIEBlbXBoe0MvQysrfToK IEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7UHJv dG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21wX2dldF9udW1fdGVhbXModm9pZCk7fQorQGl0 ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21wX2dldF90ZWFtX3NpemUo aW50IGxldmVsKTt9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7Rm9ydHJhbn06 CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe0lu dGVyZmFjZX06IEB0YWIgQGNvZGV7aW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X251bV90ZWFt cygpfQorQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBAY29kZXtpbnRlZ2VyIGZ1bmN0 aW9uIG9tcF9nZXRfdGVhbV9zaXplKGxldmVsKX0KK0BpdGVtICAgICAgICAgICAgICAgICAg IEB0YWIgQGNvZGV7aW50ZWdlciBsZXZlbH0KIEBlbmQgbXVsdGl0YWJsZQogCitAaXRlbSBA ZW1waHtTZWUgYWxzb306CitAcmVme29tcF9nZXRfbnVtX3RocmVhZHN9LCBAcmVme29tcF9n ZXRfbGV2ZWx9LCBAcmVme29tcF9nZXRfYW5jZXN0b3JfdGhyZWFkX251bX0KKwogQGl0ZW0g QGVtcGh7UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5N UCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi4zMi4KK0B1cmVme2h0dHBzOi8v d3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMu Mi4xOS4KIEBlbmQgdGFibGUKIAogCiAKLUBub2RlIG9tcF9nZXRfbnVtX3RocmVhZHMKLUBz ZWN0aW9uIEBjb2Rle29tcF9nZXRfbnVtX3RocmVhZHN9IC0tIFNpemUgb2YgdGhlIGFjdGl2 ZSB0ZWFtCitAbm9kZSBvbXBfZ2V0X2FjdGl2ZV9sZXZlbAorQHN1YnNlY3Rpb24gQGNvZGV7 b21wX2dldF9hY3RpdmVfbGV2ZWx9IC0tIE51bWJlciBvZiBwYXJhbGxlbCByZWdpb25zCiBA dGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKLVJldHVybnMgdGhlIG51 bWJlciBvZiB0aHJlYWRzIGluIHRoZSBjdXJyZW50IHRlYW0uICBJbiBhIHNlcXVlbnRpYWwg c2VjdGlvbiBvZgotdGhlIHByb2dyYW0gQGNvZGV7b21wX2dldF9udW1fdGhyZWFkc30gcmV0 dXJucyAxLgotCi1UaGUgZGVmYXVsdCB0ZWFtIHNpemUgbWF5IGJlIGluaXRpYWxpemVkIGF0 IHN0YXJ0dXAgYnkgdGhlIAotQGVudntPTVBfTlVNX1RIUkVBRFN9IGVudmlyb25tZW50IHZh cmlhYmxlLiAgQXQgcnVudGltZSwgdGhlIHNpemUKLW9mIHRoZSBjdXJyZW50IHRlYW0gbWF5 IGJlIHNldCBlaXRoZXIgYnkgdGhlIEBjb2Rle05VTV9USFJFQURTfQotY2xhdXNlIG9yIGJ5 IEBjb2Rle29tcF9zZXRfbnVtX3RocmVhZHN9LiAgSWYgbm9uZSBvZiB0aGUgYWJvdmUgd2Vy ZQotdXNlZCB0byBkZWZpbmUgYSBzcGVjaWZpYyB2YWx1ZSBhbmQgQGVudntPTVBfRFlOQU1J Q30gaXMgZGlzYWJsZWQsCi1vbmUgdGhyZWFkIHBlciBDUFUgb25saW5lIGlzIHVzZWQuCitU aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG5lc3RpbmcgbGV2ZWwgZm9yIHRoZSBhY3RpdmUg cGFyYWxsZWwgYmxvY2tzLAord2hpY2ggZW5jbG9zZSB0aGUgY2FsbGluZyBjYWxsLgogCi1A aXRlbSBAZW1waHtDL0MrK306CitAaXRlbSBAZW1waHtDL0MrK30KIEBtdWx0aXRhYmxlIEBj b2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBA Y29kZXtpbnQgb21wX2dldF9udW1fdGhyZWFkcyh2b2lkKTt9CitAaXRlbSBAZW1waHtQcm90 b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBvbXBfZ2V0X2FjdGl2ZV9sZXZlbCh2b2lkKTt9CiBA ZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7Rm9ydHJhbn06CiBAbXVsdGl0YWJsZSBA Y29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIg QGNvZGV7aW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X251bV90aHJlYWRzKCl9CitAaXRlbSBA ZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF9h Y3RpdmVfbGV2ZWwoKX0KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtTZWUgYWxz b306Ci1AcmVme29tcF9nZXRfbWF4X3RocmVhZHN9LCBAcmVme29tcF9zZXRfbnVtX3RocmVh ZHN9LCBAcmVme09NUF9OVU1fVEhSRUFEU30KK0ByZWZ7b21wX2dldF9sZXZlbH0sIEByZWZ7 b21wX2dldF9tYXhfYWN0aXZlX2xldmVsc30sIEByZWZ7b21wX3NldF9tYXhfYWN0aXZlX2xl dmVsc30KIAogQGl0ZW0gQGVtcGh7UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9w ZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi4yLgor QHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQu NX0sIFNlY3Rpb24gMy4yLjIwLgogQGVuZCB0YWJsZQogCiAKIAorQG5vZGUgVGhyZWFkIEFm ZmluaXR5IFJvdXRpbmVzCitAc2VjdGlvbiBUaHJlYWQgQWZmaW5pdHkgUm91dGluZXMKKwor Um91dGluZXMgY29udHJvbGxpbmcgYW5kIGFjY2Vzc2luZyB0aHJlYWQtYWZmaW5pdHkgcG9s aWNpZXMuCitUaGV5IGhhdmUgQyBsaW5rYWdlIGFuZCBkbyBub3QgdGhyb3cgZXhjZXB0aW9u cy4KKworQG1lbnUKKyogb21wX2dldF9wcm9jX2JpbmQ6OiAgICAgICAgICAgV2hldGhlciB0 aHJlYWRzIG1heSBiZSBtb3ZlZCBiZXR3ZWVuIENQVXMKK0BjICogb21wX2dldF9udW1fcGxh Y2VzOjogPGZpeG1lPgorQGMgKiBvbXBfZ2V0X3BsYWNlX251bV9wcm9jczo6IDxmaXhtZT4K K0BjICogb21wX2dldF9wbGFjZV9wcm9jX2lkczo6IDxmaXhtZT4KK0BjICogb21wX2dldF9w bGFjZV9udW06OiA8Zml4bWU+CitAYyAqIG9tcF9nZXRfcGFydGl0aW9uX251bV9wbGFjZXM6 OiA8Zml4bWU+CitAYyAqIG9tcF9nZXRfcGFydGl0aW9uX3BsYWNlX251bXM6OiA8Zml4bWU+ CitAYyAqIG9tcF9zZXRfYWZmaW5pdHlfZm9ybWF0OjogPGZpeG1lPgorQGMgKiBvbXBfZ2V0 X2FmZmluaXR5X2Zvcm1hdDo6IDxmaXhtZT4KK0BjICogb21wX2Rpc3BsYXlfYWZmaW5pdHk6 OiA8Zml4bWU+CitAYyAqIG9tcF9jYXB0dXJlX2FmZmluaXR5OjogPGZpeG1lPgorQGVuZCBt ZW51CisKKworCiBAbm9kZSBvbXBfZ2V0X3Byb2NfYmluZAotQHNlY3Rpb24gQGNvZGV7b21w X2dldF9wcm9jX2JpbmR9IC0tIFdoZXRoZXIgdGhyZWFkcyBtYXkgYmUgbW92ZWQgYmV0d2Vl biBDUFVzCitAc3Vic2VjdGlvbiBAY29kZXtvbXBfZ2V0X3Byb2NfYmluZH0gLS0gV2hldGhl ciB0aHJlYWRzIG1heSBiZSBtb3ZlZCBiZXR3ZWVuIENQVXMKIEB0YWJsZSBAYXNpcwogQGl0 ZW0gQGVtcGh7RGVzY3JpcHRpb259OgogVGhpcyBmdW5jdGlvbnMgcmV0dXJucyB0aGUgY3Vy cmVudGx5IGFjdGl2ZSB0aHJlYWQgYWZmaW5pdHkgcG9saWN5LCB3aGljaCBpcwpAQCAtMTA2 Myw2MyArMTE5Myw0NyBAQCB3aGVyZSBAY29kZXtvbXBfcHJvY19iaW5kX21hc3Rlcn0gaXMg YW4gYWxpYXMgZm9yIEBjb2Rle29tcF9wcm9jX2JpbmRfcHJpbWFyeX0uCiAKIAogCi1Abm9k ZSBvbXBfZ2V0X3NjaGVkdWxlCi1Ac2VjdGlvbiBAY29kZXtvbXBfZ2V0X3NjaGVkdWxlfSAt LSBPYnRhaW4gdGhlIHJ1bnRpbWUgc2NoZWR1bGluZyBtZXRob2QKLUB0YWJsZSBAYXNpcwot QGl0ZW0gQGVtcGh7RGVzY3JpcHRpb259OgotT2J0YWluIHRoZSBydW50aW1lIHNjaGVkdWxp bmcgbWV0aG9kLiAgVGhlIEB2YXJ7a2luZH0gYXJndW1lbnQgd2lsbCBiZQotc2V0IHRvIHRo ZSB2YWx1ZSBAY29kZXtvbXBfc2NoZWRfc3RhdGljfSwgQGNvZGV7b21wX3NjaGVkX2R5bmFt aWN9LAotQGNvZGV7b21wX3NjaGVkX2d1aWRlZH0gb3IgQGNvZGV7b21wX3NjaGVkX2F1dG99 LiAgVGhlIHNlY29uZCBhcmd1bWVudCwKLUB2YXJ7Y2h1bmtfc2l6ZX0sIGlzIHNldCB0byB0 aGUgY2h1bmsgc2l6ZS4KK0Bub2RlIFRlYW1zIFJlZ2lvbiBSb3V0aW5lcworQHNlY3Rpb24g VGVhbXMgUmVnaW9uIFJvdXRpbmVzCiAKLUBpdGVtIEBlbXBoe0MvQysrfQotQG11bHRpdGFi bGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtQcm90b3R5cGV9OiBA dGFiIEBjb2Rle3ZvaWQgb21wX2dldF9zY2hlZHVsZShvbXBfc2NoZWRfdCAqa2luZCwgaW50 ICpjaHVua19zaXplKTt9Ci1AZW5kIG11bHRpdGFibGUKK1JvdXRpbmVzIGNvbnRyb2xsaW5n IHRoZSBsZWFndWUgb2YgdGVhbXMgdGhhdCBhcmUgZXhlY3V0ZWQgaW4gYSBAY29kZXt0ZWFt c30KK3JlZ2lvbi4gIFRoZXkgaGF2ZSBDIGxpbmthZ2UgYW5kIGRvIG5vdCB0aHJvdyBleGNl cHRpb25zLgogCi1AaXRlbSBAZW1waHtGb3J0cmFufToKLUBtdWx0aXRhYmxlIEBjb2x1bW5m cmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBAY29kZXtz dWJyb3V0aW5lIG9tcF9nZXRfc2NoZWR1bGUoa2luZCwgY2h1bmtfc2l6ZSl9Ci1AaXRlbSAg ICAgICAgICAgICAgICAgICBAdGFiIEBjb2Rle2ludGVnZXIoa2luZD1vbXBfc2NoZWRfa2lu ZCkga2luZH0KLUBpdGVtICAgICAgICAgICAgICAgICAgIEB0YWIgQGNvZGV7aW50ZWdlciBj aHVua19zaXplfQotQGVuZCBtdWx0aXRhYmxlCi0KLUBpdGVtIEBlbXBoe1NlZSBhbHNvfToK LUByZWZ7b21wX3NldF9zY2hlZHVsZX0sIEByZWZ7T01QX1NDSEVEVUxFfQorQG1lbnUKKyog b21wX2dldF9udW1fdGVhbXM6OiAgICAgICAgICAgTnVtYmVyIG9mIHRlYW1zCisqIG9tcF9n ZXRfdGVhbV9udW06OiAgICAgICAgICAgIEdldCB0ZWFtIG51bWJlcgorKiBvbXBfc2V0X251 bV90ZWFtczo6ICAgICAgICAgICBTZXQgdXBwZXIgdGVhbXMgbGltaXQgZm9yIHRlYW1zIHJl Z2lvbgorKiBvbXBfZ2V0X21heF90ZWFtczo6ICAgICAgICAgICBNYXhpbXVtIG51bWJlciBv ZiB0ZWFtcyBmb3IgdGVhbXMgcmVnaW9uCisqIG9tcF9zZXRfdGVhbXNfdGhyZWFkX2xpbWl0 OjogIFNldCB1cHBlciB0aHJlYWQgbGltaXQgZm9yIHRlYW1zIGNvbnN0cnVjdAorKiBvbXBf Z2V0X3RocmVhZF9saW1pdDo6ICAgICAgICBNYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzCitA ZW5kIG1lbnUKIAotQGl0ZW0gQGVtcGh7UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3 Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi4x My4KLUBlbmQgdGFibGUKIAogCi1Abm9kZSBvbXBfZ2V0X3N1cHBvcnRlZF9hY3RpdmVfbGV2 ZWxzCi1Ac2VjdGlvbiBAY29kZXtvbXBfZ2V0X3N1cHBvcnRlZF9hY3RpdmVfbGV2ZWxzfSAt LSBNYXhpbXVtIG51bWJlciBvZiBhY3RpdmUgcmVnaW9ucyBzdXBwb3J0ZWQKK0Bub2RlIG9t cF9nZXRfbnVtX3RlYW1zCitAc3Vic2VjdGlvbiBAY29kZXtvbXBfZ2V0X251bV90ZWFtc30g LS0gTnVtYmVyIG9mIHRlYW1zCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0 aW9ufToKLVRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbmVz dGVkLCBhY3RpdmUgcGFyYWxsZWwgcmVnaW9ucwotc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVt ZW50YXRpb24uCitSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGVhbXMgaW4gdGhlIGN1cnJlbnQg dGVhbSByZWdpb24uCiAKLUBpdGVtIEBlbXBoe0MvQysrfQorQGl0ZW0gQGVtcGh7Qy9DKyt9 OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtQ cm90b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBvbXBfZ2V0X3N1cHBvcnRlZF9hY3RpdmVfbGV2 ZWxzKHZvaWQpO30KK0BpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50IG9t cF9nZXRfbnVtX3RlYW1zKHZvaWQpO30KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1w aHtGb3J0cmFufToKIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0 ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBAY29kZXtpbnRlZ2VyIGZ1bmN0aW9uIG9tcF9n ZXRfc3VwcG9ydGVkX2FjdGl2ZV9sZXZlbHMoKX0KK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06 IEB0YWIgQGNvZGV7aW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X251bV90ZWFtcygpfQogQGVu ZCBtdWx0aXRhYmxlCiAKLUBpdGVtIEBlbXBoe1NlZSBhbHNvfToKLUByZWZ7b21wX2dldF9t YXhfYWN0aXZlX2xldmVsc30sIEByZWZ7b21wX3NldF9tYXhfYWN0aXZlX2xldmVsc30KLQog QGl0ZW0gQGVtcGh7UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcs IE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY1LjB9LCBTZWN0aW9uIDMuMi4xNS4KK0B1cmVme2h0 dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0 aW9uIDMuMi4zMi4KIEBlbmQgdGFibGUKIAogCiAKIEBub2RlIG9tcF9nZXRfdGVhbV9udW0K LUBzZWN0aW9uIEBjb2Rle29tcF9nZXRfdGVhbV9udW19IC0tIEdldCB0ZWFtIG51bWJlcgor QHN1YnNlY3Rpb24gQGNvZGV7b21wX2dldF90ZWFtX251bX0gLS0gR2V0IHRlYW0gbnVtYmVy CiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKIFJldHVybnMgdGhl IHRlYW0gbnVtYmVyIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KQEAgLTExNDAsMTQxICsxMjU0 LDE1MyBAQCBSZXR1cm5zIHRoZSB0ZWFtIG51bWJlciBvZiB0aGUgY2FsbGluZyB0aHJlYWQu CiAKIAogCi1Abm9kZSBvbXBfZ2V0X3RlYW1fc2l6ZQotQHNlY3Rpb24gQGNvZGV7b21wX2dl dF90ZWFtX3NpemV9IC0tIE51bWJlciBvZiB0aHJlYWRzIGluIGEgdGVhbQorQG5vZGUgb21w X3NldF9udW1fdGVhbXMKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF9zZXRfbnVtX3RlYW1zfSAt LSBTZXQgdXBwZXIgdGVhbXMgbGltaXQgZm9yIHRlYW1zIGNvbnN0cnVjdAogQHRhYmxlIEBh c2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06Ci1UaGlzIGZ1bmN0aW9uIHJldHVybnMg dGhlIG51bWJlciBvZiB0aHJlYWRzIGluIGEgdGhyZWFkIHRlYW0gdG8gd2hpY2gKLWVpdGhl ciB0aGUgY3VycmVudCB0aHJlYWQgb3IgaXRzIGFuY2VzdG9yIGJlbG9uZ3MuICBGb3IgdmFs dWVzIG9mIEB2YXJ7bGV2ZWx9Ci1vdXRzaWRlIHplcm8gdG8gQGNvZGV7b21wX2dldF9sZXZl bH0sIC0xIGlzIHJldHVybmVkOyBpZiBAdmFye2xldmVsfSBpcyB6ZXJvLAotMSBpcyByZXR1 cm5lZCwgYW5kIGZvciBAY29kZXtvbXBfZ2V0X2xldmVsfSwgdGhlIHJlc3VsdCBpcyBpZGVu dGljYWwKLXRvIEBjb2Rle29tcF9nZXRfbnVtX3RocmVhZHN9LgorU3BlY2lmaWVzIHRoZSB1 cHBlciBib3VuZCBmb3IgbnVtYmVyIG9mIHRlYW1zIGNyZWF0ZWQgYnkgdGhlIHRlYW1zIGNv bnN0cnVjdAord2hpY2ggZG9lcyBub3Qgc3BlY2lmeSBhIEBjb2Rle251bV90ZWFtc30gY2xh dXNlLiAgVGhlCithcmd1bWVudCBvZiBAY29kZXtvbXBfc2V0X251bV90ZWFtc30gc2hhbGwg YmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLgogCiBAaXRlbSBAZW1waHtDL0MrK306CiBAbXVsdGl0 YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe1Byb3RvdHlwZX06 IEB0YWIgQGNvZGV7aW50IG9tcF9nZXRfdGVhbV9zaXplKGludCBsZXZlbCk7fQorQGl0ZW0g QGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXt2b2lkIG9tcF9zZXRfbnVtX3RlYW1zKGlu dCBudW1fdGVhbXMpO30KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtGb3J0cmFu fToKIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7 SW50ZXJmYWNlfTogQHRhYiBAY29kZXtpbnRlZ2VyIGZ1bmN0aW9uIG9tcF9nZXRfdGVhbV9z aXplKGxldmVsKX0KLUBpdGVtICAgICAgICAgICAgICAgICAgIEB0YWIgQGNvZGV7aW50ZWdl ciBsZXZlbH0KK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7c3Vicm91dGlu ZSBvbXBfc2V0X251bV90ZWFtcyhudW1fdGVhbXMpfQorQGl0ZW0gICAgICAgICAgICAgICAg ICAgQHRhYiBAY29kZXtpbnRlZ2VyLCBpbnRlbnQoaW4pIDo6IG51bV90ZWFtc30KIEBlbmQg bXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtTZWUgYWxzb306Ci1AcmVme29tcF9nZXRfbnVt X3RocmVhZHN9LCBAcmVme29tcF9nZXRfbGV2ZWx9LCBAcmVme29tcF9nZXRfYW5jZXN0b3Jf dGhyZWFkX251bX0KK0ByZWZ7T01QX05VTV9URUFNU30sIEByZWZ7b21wX2dldF9udW1fdGVh bXN9LCBAcmVme29tcF9nZXRfbWF4X3RlYW1zfQogCiBAaXRlbSBAZW1waHtSZWZlcmVuY2V9 OgotQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24g djQuNX0sIFNlY3Rpb24gMy4yLjE5LgorQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywg T3Blbk1QIHNwZWNpZmljYXRpb24gdjUuMX0sIFNlY3Rpb24gMy40LjMuCiBAZW5kIHRhYmxl CiAKIAogCi1Abm9kZSBvbXBfZ2V0X3RlYW1zX3RocmVhZF9saW1pdAotQHNlY3Rpb24gQGNv ZGV7b21wX2dldF90ZWFtc190aHJlYWRfbGltaXR9IC0tIE1heGltdW0gbnVtYmVyIG9mIHRo cmVhZHMgaW1wb3NlZCBieSB0ZWFtcworQG5vZGUgb21wX2dldF9tYXhfdGVhbXMKK0BzdWJz ZWN0aW9uIEBjb2Rle29tcF9nZXRfbWF4X3RlYW1zfSAtLSBNYXhpbXVtIG51bWJlciBvZiB0 ZWFtcyBvZiB0ZWFtcyByZWdpb24KIEB0YWJsZSBAYXNpcwogQGl0ZW0gQGVtcGh7RGVzY3Jp cHRpb259OgotUmV0dXJuIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgd2ls bCBiZSBhYmxlIHRvIHBhcnRpY2lwYXRlIGluCi1lYWNoIHRlYW0gY3JlYXRlZCBieSBhIHRl YW1zIGNvbnN0cnVjdC4KK1JldHVybiB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGVhbXMgdXNl ZCBmb3IgdGhlIHRlYW1zIHJlZ2lvbgordGhhdCBkb2VzIG5vdCB1c2UgdGhlIGNsYXVzZSBA Y29kZXtudW1fdGVhbXN9LgogCiBAaXRlbSBAZW1waHtDL0MrK306CiBAbXVsdGl0YWJsZSBA Y29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIg QGNvZGV7aW50IG9tcF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0KHZvaWQpO30KK0BpdGVtIEBl bXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50IG9tcF9nZXRfbWF4X3RlYW1zKHZvaWQp O30KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtGb3J0cmFufToKIEBtdWx0aXRh YmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTog QHRhYiBAY29kZXtpbnRlZ2VyIGZ1bmN0aW9uIG9tcF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0 KCl9CitAaXRlbSBAZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle2ludGVnZXIgZnVuY3Rp b24gb21wX2dldF9tYXhfdGVhbXMoKX0KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1w aHtTZWUgYWxzb306Ci1AcmVme29tcF9zZXRfdGVhbXNfdGhyZWFkX2xpbWl0fSwgQHJlZntP TVBfVEVBTVNfVEhSRUFEX0xJTUlUfQorQHJlZntvbXBfc2V0X251bV90ZWFtc30sIEByZWZ7 b21wX2dldF9udW1fdGVhbXN9CiAKIEBpdGVtIEBlbXBoe1JlZmVyZW5jZX06Ci1AdXJlZnto dHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NS4xfSwgU2Vj dGlvbiAzLjQuNi4KK0B1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVj aWZpY2F0aW9uIHY1LjF9LCBTZWN0aW9uIDMuNC40LgogQGVuZCB0YWJsZQogCiAKIAotQG5v ZGUgb21wX2dldF90aHJlYWRfbGltaXQKLUBzZWN0aW9uIEBjb2Rle29tcF9nZXRfdGhyZWFk X2xpbWl0fSAtLSBNYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzCitAbm9kZSBvbXBfc2V0X3Rl YW1zX3RocmVhZF9saW1pdAorQHN1YnNlY3Rpb24gQGNvZGV7b21wX3NldF90ZWFtc190aHJl YWRfbGltaXR9IC0tIFNldCB1cHBlciB0aHJlYWQgbGltaXQgZm9yIHRlYW1zIGNvbnN0cnVj dAogQHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06Ci1SZXR1cm4gdGhl IG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgb2YgdGhlIHByb2dyYW0uCitTcGVjaWZpZXMg dGhlIHVwcGVyIGJvdW5kIGZvciBudW1iZXIgb2YgdGhyZWFkcyB0aGF0IHdpbGwgYmUgYXZh aWxhYmxlCitmb3IgZWFjaCB0ZWFtIGNyZWF0ZWQgYnkgdGhlIHRlYW1zIGNvbnN0cnVjdCB3 aGljaCBkb2VzIG5vdCBzcGVjaWZ5IGEKK0Bjb2Rle3RocmVhZF9saW1pdH0gY2xhdXNlLiAg VGhlIGFyZ3VtZW50IG9mCitAY29kZXtvbXBfc2V0X3RlYW1zX3RocmVhZF9saW1pdH0gc2hh bGwgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLgogCiBAaXRlbSBAZW1waHtDL0MrK306CiBAbXVs dGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe1Byb3RvdHlw ZX06IEB0YWIgQGNvZGV7aW50IG9tcF9nZXRfdGhyZWFkX2xpbWl0KHZvaWQpO30KK0BpdGVt IEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7dm9pZCBvbXBfc2V0X3RlYW1zX3RocmVh ZF9saW1pdChpbnQgdGhyZWFkX2xpbWl0KTt9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0g QGVtcGh7Rm9ydHJhbn06CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAK LUBpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7aW50ZWdlciBmdW5jdGlvbiBv bXBfZ2V0X3RocmVhZF9saW1pdCgpfQorQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBA Y29kZXtzdWJyb3V0aW5lIG9tcF9zZXRfdGVhbXNfdGhyZWFkX2xpbWl0KHRocmVhZF9saW1p dCl9CitAaXRlbSAgICAgICAgICAgICAgICAgICBAdGFiIEBjb2Rle2ludGVnZXIsIGludGVu dChpbikgOjogdGhyZWFkX2xpbWl0fQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVtIEBlbXBo e1NlZSBhbHNvfToKLUByZWZ7b21wX2dldF9tYXhfdGhyZWFkc30sIEByZWZ7T01QX1RIUkVB RF9MSU1JVH0KK0ByZWZ7T01QX1RFQU1TX1RIUkVBRF9MSU1JVH0sIEByZWZ7b21wX2dldF90 ZWFtc190aHJlYWRfbGltaXR9LCBAcmVme29tcF9nZXRfdGhyZWFkX2xpbWl0fQogCiBAaXRl bSBAZW1waHtSZWZlcmVuY2V9OgotQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywgT3Bl bk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rpb24gMy4yLjE0LgorQHVyZWZ7aHR0cHM6 Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjUuMX0sIFNlY3Rpb24g My40LjUuCiBAZW5kIHRhYmxlCiAKIAogCi1Abm9kZSBvbXBfZ2V0X3RocmVhZF9udW0KLUBz ZWN0aW9uIEBjb2Rle29tcF9nZXRfdGhyZWFkX251bX0gLS0gQ3VycmVudCB0aHJlYWQgSUQK K0Bub2RlIG9tcF9nZXRfdGhyZWFkX2xpbWl0CitAc3Vic2VjdGlvbiBAY29kZXtvbXBfZ2V0 X3RocmVhZF9saW1pdH0gLS0gTWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcwogQHRhYmxlIEBh c2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06Ci1SZXR1cm5zIGEgdW5pcXVlIHRocmVh ZCBpZGVudGlmaWNhdGlvbiBudW1iZXIgd2l0aGluIHRoZSBjdXJyZW50IHRlYW0uCi1JbiBh IHNlcXVlbnRpYWwgcGFydHMgb2YgdGhlIHByb2dyYW0sIEBjb2Rle29tcF9nZXRfdGhyZWFk X251bX0KLWFsd2F5cyByZXR1cm5zIDAuICBJbiBwYXJhbGxlbCByZWdpb25zIHRoZSByZXR1 cm4gdmFsdWUgdmFyaWVzCi1mcm9tIDAgdG8gQGNvZGV7b21wX2dldF9udW1fdGhyZWFkc30t MSBpbmNsdXNpdmUuICBUaGUgcmV0dXJuCi12YWx1ZSBvZiB0aGUgcHJpbWFyeSB0aHJlYWQg b2YgYSB0ZWFtIGlzIGFsd2F5cyAwLgorUmV0dXJuIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0 aHJlYWRzIG9mIHRoZSBwcm9ncmFtLgogCiBAaXRlbSBAZW1waHtDL0MrK306CiBAbXVsdGl0 YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe1Byb3RvdHlwZX06 IEB0YWIgQGNvZGV7aW50IG9tcF9nZXRfdGhyZWFkX251bSh2b2lkKTt9CitAaXRlbSBAZW1w aHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBvbXBfZ2V0X3RocmVhZF9saW1pdCh2b2lk KTt9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7Rm9ydHJhbn06CiBAbXVsdGl0 YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe0ludGVyZmFjZX06 IEB0YWIgQGNvZGV7aW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0X3RocmVhZF9udW0oKX0KK0Bp dGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7aW50ZWdlciBmdW5jdGlvbiBvbXBf Z2V0X3RocmVhZF9saW1pdCgpfQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVtIEBlbXBoe1Nl ZSBhbHNvfToKLUByZWZ7b21wX2dldF9udW1fdGhyZWFkc30sIEByZWZ7b21wX2dldF9hbmNl c3Rvcl90aHJlYWRfbnVtfQorQHJlZntvbXBfZ2V0X21heF90aHJlYWRzfSwgQHJlZntPTVBf VEhSRUFEX0xJTUlUfQogCiBAaXRlbSBAZW1waHtSZWZlcmVuY2V9OgotQHVyZWZ7aHR0cHM6 Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rpb24g My4yLjQuCitAdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNh dGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMTQuCiBAZW5kIHRhYmxlCiAKIAogCi1Abm9kZSBv bXBfaW5fcGFyYWxsZWwKLUBzZWN0aW9uIEBjb2Rle29tcF9pbl9wYXJhbGxlbH0gLS0gV2hl dGhlciBhIHBhcmFsbGVsIHJlZ2lvbiBpcyBhY3RpdmUKK0Bub2RlIFRhc2tpbmcgUm91dGlu ZXMKK0BzZWN0aW9uIFRhc2tpbmcgUm91dGluZXMKKworUm91dGluZXMgcmVsYXRpbmcgdG8g ZXhwbGljaXQgdGFza3MuCitUaGV5IGhhdmUgQyBsaW5rYWdlIGFuZCBkbyBub3QgdGhyb3cg ZXhjZXB0aW9ucy4KKworQG1lbnUKKyogb21wX2dldF9tYXhfdGFza19wcmlvcml0eTo6ICAg TWF4aW11bSB0YXNrIHByaW9yaXR5IHZhbHVlIHRoYXQgY2FuIGJlIHNldAorQGMgKiBvbXBf aW5fZXhwbGljaXRfdGFzazo6IDxmaXhtZT4KKyogb21wX2luX2ZpbmFsOjogICAgICAgICAg ICAgICAgV2hldGhlciBpbiBmaW5hbCBvciBpbmNsdWRlZCB0YXNrIHJlZ2lvbgorQGVuZCBt ZW51CisKKworCitAbm9kZSBvbXBfZ2V0X21heF90YXNrX3ByaW9yaXR5CitAc3Vic2VjdGlv biBAY29kZXtvbXBfZ2V0X21heF90YXNrX3ByaW9yaXR5fSAtLSBNYXhpbXVtIHByaW9yaXR5 IHZhbHVlCit0aGF0IGNhbiBiZSBzZXQgZm9yIHRhc2tzLgogQHRhYmxlIEBhc2lzCiBAaXRl bSBAZW1waHtEZXNjcmlwdGlvbn06Ci1UaGlzIGZ1bmN0aW9uIHJldHVybnMgQGNvZGV7dHJ1 ZX0gaWYgY3VycmVudGx5IHJ1bm5pbmcgaW4gcGFyYWxsZWwsCi1AY29kZXtmYWxzZX0gb3Ro ZXJ3aXNlLiAgSGVyZSwgQGNvZGV7dHJ1ZX0gYW5kIEBjb2Rle2ZhbHNlfSByZXByZXNlbnQK LXRoZWlyIGxhbmd1YWdlLXNwZWNpZmljIGNvdW50ZXJwYXJ0cy4KK1RoaXMgZnVuY3Rpb24g b2J0YWlucyB0aGUgbWF4aW11bSBhbGxvd2VkIHByaW9yaXR5IG51bWJlciBmb3IgdGFza3Mu CiAKLUBpdGVtIEBlbXBoe0MvQysrfToKK0BpdGVtIEBlbXBoe0MvQysrfQogQG11bHRpdGFi bGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtQcm90b3R5cGV9OiBA dGFiIEBjb2Rle2ludCBvbXBfaW5fcGFyYWxsZWwodm9pZCk7fQorQGl0ZW0gQGVtcGh7UHJv dG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21wX2dldF9tYXhfdGFza19wcmlvcml0eSh2b2lk KTt9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7Rm9ydHJhbn06CiBAbXVsdGl0 YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe0ludGVyZmFjZX06 IEB0YWIgQGNvZGV7bG9naWNhbCBmdW5jdGlvbiBvbXBfaW5fcGFyYWxsZWwoKX0KK0BpdGVt IEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7aW50ZWdlciBmdW5jdGlvbiBvbXBfZ2V0 X21heF90YXNrX3ByaW9yaXR5KCl9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7 UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVj aWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi42LgorQHVyZWZ7aHR0cHM6Ly93d3cub3Bl bm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rpb24gMy4yLjI5Lgog QGVuZCB0YWJsZQogCiAKKwogQG5vZGUgb21wX2luX2ZpbmFsCi1Ac2VjdGlvbiBAY29kZXtv bXBfaW5fZmluYWx9IC0tIFdoZXRoZXIgaW4gZmluYWwgb3IgaW5jbHVkZWQgdGFzayByZWdp b24KK0BzdWJzZWN0aW9uIEBjb2Rle29tcF9pbl9maW5hbH0gLS0gV2hldGhlciBpbiBmaW5h bCBvciBpbmNsdWRlZCB0YXNrIHJlZ2lvbgogQHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtE ZXNjcmlwdGlvbn06CiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgQGNvZGV7dHJ1ZX0gaWYgY3Vy cmVudGx5IHJ1bm5pbmcgaW4gYSBmaW5hbApAQCAtMTI5NywzMiArMTQyMyw2MCBAQCBhbmQg QGNvZGV7ZmFsc2V9IHJlcHJlc2VudCB0aGVpciBsYW5ndWFnZS1zcGVjaWZpYyBjb3VudGVy cGFydHMuCiAKIAogCi1Abm9kZSBvbXBfaXNfaW5pdGlhbF9kZXZpY2UKLUBzZWN0aW9uIEBj b2Rle29tcF9pc19pbml0aWFsX2RldmljZX0gLS0gV2hldGhlciBleGVjdXRpbmcgb24gdGhl IGhvc3QgZGV2aWNlCitAYyBAbm9kZSBSZXNvdXJjZSBSZWxpbnF1aXNoaW5nIFJvdXRpbmVz CitAYyBAc2VjdGlvbiBSZXNvdXJjZSBSZWxpbnF1aXNoaW5nIFJvdXRpbmVzCitAYworQGMg Um91dGluZXMgcmVsZWFzaW5nIHJlc291cmNlcyB1c2VkIGJ5IHRoZSBPcGVuTVAgcnVudGlt ZS4KK0BjIFRoZXkgaGF2ZSBDIGxpbmthZ2UgYW5kIGRvIG5vdCB0aHJvdyBleGNlcHRpb25z LgorQGMKK0BjIEBtZW51CitAYyAqIG9tcF9wYXVzZV9yZXNvdXJjZTo6IDxmaXhtZT4KK0Bj ICogb21wX3BhdXNlX3Jlc291cmNlX2FsbDo6IDxmaXhtZT4KK0BjIEBlbmQgbWVudQorCitA bm9kZSBEZXZpY2UgSW5mb3JtYXRpb24gUm91dGluZXMKK0BzZWN0aW9uIERldmljZSBJbmZv cm1hdGlvbiBSb3V0aW5lcworCitSb3V0aW5lcyByZWxhdGVkIHRvIGRldmljZXMgYXZhaWxh YmxlIHRvIGFuIE9wZW5NUCBwcm9ncmFtLgorVGhleSBoYXZlIEMgbGlua2FnZSBhbmQgZG8g bm90IHRocm93IGV4Y2VwdGlvbnMuCisKK0BtZW51CisqIG9tcF9nZXRfbnVtX3Byb2NzOjog ICAgICAgICAgIE51bWJlciBvZiBwcm9jZXNzb3JzIG9ubGluZQorQGMgKiBvbXBfZ2V0X21h eF9wcm9ncmVzc193aWR0aDo6IDxmaXhtZT4vVFIxMQorKiBvbXBfc2V0X2RlZmF1bHRfZGV2 aWNlOjogICAgICBTZXQgdGhlIGRlZmF1bHQgZGV2aWNlIGZvciB0YXJnZXQgcmVnaW9ucwor KiBvbXBfZ2V0X2RlZmF1bHRfZGV2aWNlOjogICAgICBHZXQgdGhlIGRlZmF1bHQgZGV2aWNl IGZvciB0YXJnZXQgcmVnaW9ucworKiBvbXBfZ2V0X251bV9kZXZpY2VzOjogICAgICAgICBO dW1iZXIgb2YgdGFyZ2V0IGRldmljZXMKKyogb21wX2dldF9kZXZpY2VfbnVtOjogICAgICAg ICAgR2V0IGRldmljZSB0aGF0IGN1cnJlbnQgdGhyZWFkIGlzIHJ1bm5pbmcgb24KKyogb21w X2lzX2luaXRpYWxfZGV2aWNlOjogICAgICAgV2hldGhlciBleGVjdXRpbmcgb24gdGhlIGhv c3QgZGV2aWNlCisqIG9tcF9nZXRfaW5pdGlhbF9kZXZpY2U6OiAgICAgIERldmljZSBudW1i ZXIgb2YgaG9zdCBkZXZpY2UKK0BlbmQgbWVudQorCisKKworQG5vZGUgb21wX2dldF9udW1f cHJvY3MKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF9nZXRfbnVtX3Byb2NzfSAtLSBOdW1iZXIg b2YgcHJvY2Vzc29ycyBvbmxpbmUKIEB0YWJsZSBAYXNpcwogQGl0ZW0gQGVtcGh7RGVzY3Jp cHRpb259OgotVGhpcyBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle3RydWV9IGlmIGN1cnJlbnRs eSBydW5uaW5nIG9uIHRoZSBob3N0IGRldmljZSwKLUBjb2Rle2ZhbHNlfSBvdGhlcndpc2Uu ICBIZXJlLCBAY29kZXt0cnVlfSBhbmQgQGNvZGV7ZmFsc2V9IHJlcHJlc2VudAotdGhlaXIg bGFuZ3VhZ2Utc3BlY2lmaWMgY291bnRlcnBhcnRzLgorUmV0dXJucyB0aGUgbnVtYmVyIG9m IHByb2Nlc3NvcnMgb25saW5lIG9uIHRoYXQgZGV2aWNlLgogCiBAaXRlbSBAZW1waHtDL0Mr K306CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBo e1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50IG9tcF9pc19pbml0aWFsX2RldmljZSh2b2lk KTt9CitAaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBvbXBfZ2V0X251 bV9wcm9jcyh2b2lkKTt9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7Rm9ydHJh bn06CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBo e0ludGVyZmFjZX06IEB0YWIgQGNvZGV7bG9naWNhbCBmdW5jdGlvbiBvbXBfaXNfaW5pdGlh bF9kZXZpY2UoKX0KK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7aW50ZWdl ciBmdW5jdGlvbiBvbXBfZ2V0X251bV9wcm9jcygpfQogQGVuZCBtdWx0aXRhYmxlCiAKIEBp dGVtIEBlbXBoe1JlZmVyZW5jZX06Ci1AdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBP cGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMzQuCitAdXJlZntodHRw czovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlv biAzLjIuNS4KIEBlbmQgdGFibGUKIAogCiAKIEBub2RlIG9tcF9zZXRfZGVmYXVsdF9kZXZp Y2UKLUBzZWN0aW9uIEBjb2Rle29tcF9zZXRfZGVmYXVsdF9kZXZpY2V9IC0tIFNldCB0aGUg ZGVmYXVsdCBkZXZpY2UgZm9yIHRhcmdldCByZWdpb25zCitAc3Vic2VjdGlvbiBAY29kZXtv bXBfc2V0X2RlZmF1bHRfZGV2aWNlfSAtLSBTZXQgdGhlIGRlZmF1bHQgZGV2aWNlIGZvciB0 YXJnZXQgcmVnaW9ucwogQHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06 CiBTZXQgdGhlIGRlZmF1bHQgZGV2aWNlIGZvciB0YXJnZXQgcmVnaW9ucyB3aXRob3V0IGRl dmljZSBjbGF1c2UuICBUaGUgYXJndW1lbnQKQEAgLTEzNDgsMjIxICsxNTAyLDE3NyBAQCBz aGFsbCBiZSBhIG5vbm5lZ2F0aXZlIGRldmljZSBudW1iZXIuCiAKIAogCi1Abm9kZSBvbXBf c2V0X2R5bmFtaWMKLUBzZWN0aW9uIEBjb2Rle29tcF9zZXRfZHluYW1pY30gLS0gRW5hYmxl L2Rpc2FibGUgZHluYW1pYyB0ZWFtcwotQHRhYmxlIEBhc2lzCi1AaXRlbSBAZW1waHtEZXNj cmlwdGlvbn06Ci1FbmFibGUgb3IgZGlzYWJsZSB0aGUgZHluYW1pYyBhZGp1c3RtZW50IG9m IHRoZSBudW1iZXIgb2YgdGhyZWFkcyAKLXdpdGhpbiBhIHRlYW0uICBUaGUgZnVuY3Rpb24g dGFrZXMgdGhlIGxhbmd1YWdlLXNwZWNpZmljIGVxdWl2YWxlbnQKLW9mIEBjb2Rle3RydWV9 IGFuZCBAY29kZXtmYWxzZX0sIHdoZXJlIEBjb2Rle3RydWV9IGVuYWJsZXMgZHluYW1pYyAK LWFkanVzdG1lbnQgb2YgdGVhbSBzaXplcyBhbmQgQGNvZGV7ZmFsc2V9IGRpc2FibGVzIGl0 LgotCi1AaXRlbSBAZW1waHtDL0MrK306Ci1AbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25z IC4yMCAuODAKLUBpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7dm9pZCBvbXBf c2V0X2R5bmFtaWMoaW50IGR5bmFtaWNfdGhyZWFkcyk7fQotQGVuZCBtdWx0aXRhYmxlCi0K LUBpdGVtIEBlbXBoe0ZvcnRyYW59OgotQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAu MjAgLjgwCi1AaXRlbSBAZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle3N1YnJvdXRpbmUg b21wX3NldF9keW5hbWljKGR5bmFtaWNfdGhyZWFkcyl9Ci1AaXRlbSAgICAgICAgICAgICAg ICAgICBAdGFiIEBjb2Rle2xvZ2ljYWwsIGludGVudChpbikgOjogZHluYW1pY190aHJlYWRz fQotQGVuZCBtdWx0aXRhYmxlCi0KLUBpdGVtIEBlbXBoe1NlZSBhbHNvfToKLUByZWZ7T01Q X0RZTkFNSUN9LCBAcmVme29tcF9nZXRfZHluYW1pY30KLQotQGl0ZW0gQGVtcGh7UmVmZXJl bmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0 aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi43LgotQGVuZCB0YWJsZQotCi0KLQotQG5vZGUgb21w X3NldF9tYXhfYWN0aXZlX2xldmVscwotQHNlY3Rpb24gQGNvZGV7b21wX3NldF9tYXhfYWN0 aXZlX2xldmVsc30gLS0gTGltaXRzIHRoZSBudW1iZXIgb2YgYWN0aXZlIHBhcmFsbGVsIHJl Z2lvbnMKLUB0YWJsZSBAYXNpcwotQGl0ZW0gQGVtcGh7RGVzY3JpcHRpb259OgotVGhpcyBm dW5jdGlvbiBsaW1pdHMgdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXIgb2YgbmVzdGVkLCBh Y3RpdmUKLXBhcmFsbGVsIHJlZ2lvbnMuICBAdmFye21heF9sZXZlbHN9IG11c3QgYmUgbGVz cyBvciBlcXVhbCB0bwotdGhlIHZhbHVlIHJldHVybmVkIGJ5IEBjb2Rle29tcF9nZXRfc3Vw cG9ydGVkX2FjdGl2ZV9sZXZlbHN9LgotCi1AaXRlbSBAZW1waHtDL0MrK30KLUBtdWx0aXRh YmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTog QHRhYiBAY29kZXt2b2lkIG9tcF9zZXRfbWF4X2FjdGl2ZV9sZXZlbHMoaW50IG1heF9sZXZl bHMpO30KLUBlbmQgbXVsdGl0YWJsZQotCi1AaXRlbSBAZW1waHtGb3J0cmFufToKLUBtdWx0 aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJmYWNl fTogQHRhYiBAY29kZXtzdWJyb3V0aW5lIG9tcF9zZXRfbWF4X2FjdGl2ZV9sZXZlbHMobWF4 X2xldmVscyl9Ci1AaXRlbSAgICAgICAgICAgICAgICAgICBAdGFiIEBjb2Rle2ludGVnZXIg bWF4X2xldmVsc30KLUBlbmQgbXVsdGl0YWJsZQotCi1AaXRlbSBAZW1waHtTZWUgYWxzb306 Ci1AcmVme29tcF9nZXRfbWF4X2FjdGl2ZV9sZXZlbHN9LCBAcmVme29tcF9nZXRfYWN0aXZl X2xldmVsfSwKLUByZWZ7b21wX2dldF9zdXBwb3J0ZWRfYWN0aXZlX2xldmVsc30KLQotQGl0 ZW0gQGVtcGh7UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9w ZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi4xNS4KLUBlbmQgdGFibGUK LQotCi0KLUBub2RlIG9tcF9zZXRfbmVzdGVkCi1Ac2VjdGlvbiBAY29kZXtvbXBfc2V0X25l c3RlZH0gLS0gRW5hYmxlL2Rpc2FibGUgbmVzdGVkIHBhcmFsbGVsIHJlZ2lvbnMKK0Bub2Rl IG9tcF9nZXRfZGVmYXVsdF9kZXZpY2UKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF9nZXRfZGVm YXVsdF9kZXZpY2V9IC0tIEdldCB0aGUgZGVmYXVsdCBkZXZpY2UgZm9yIHRhcmdldCByZWdp b25zCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKLUVuYWJsZSBv ciBkaXNhYmxlIG5lc3RlZCBwYXJhbGxlbCByZWdpb25zLCBpLmUuLCB3aGV0aGVyIHRlYW0g bWVtYmVycwotYXJlIGFsbG93ZWQgdG8gY3JlYXRlIG5ldyB0ZWFtcy4gIFRoZSBmdW5jdGlv biB0YWtlcyB0aGUgbGFuZ3VhZ2Utc3BlY2lmaWMKLWVxdWl2YWxlbnQgb2YgQGNvZGV7dHJ1 ZX0gYW5kIEBjb2Rle2ZhbHNlfSwgd2hlcmUgQGNvZGV7dHJ1ZX0gZW5hYmxlcyAKLWR5bmFt aWMgYWRqdXN0bWVudCBvZiB0ZWFtIHNpemVzIGFuZCBAY29kZXtmYWxzZX0gZGlzYWJsZXMg aXQuCi0KLUVuYWJsaW5nIG5lc3RlZCBwYXJhbGxlbCByZWdpb25zIHdpbGwgYWxzbyBzZXQg dGhlIG1heGltdW0gbnVtYmVyIG9mCi1hY3RpdmUgbmVzdGVkIHJlZ2lvbnMgdG8gdGhlIG1h eGltdW0gc3VwcG9ydGVkLiAgRGlzYWJsaW5nIG5lc3RlZCBwYXJhbGxlbAotcmVnaW9ucyB3 aWxsIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWN0aXZlIG5lc3RlZCByZWdpb25zIHRv IG9uZS4KLQotTm90ZSB0aGF0IHRoZSBAY29kZXtvbXBfc2V0X25lc3RlZH0gQVBJIHJvdXRp bmUgd2FzIGRlcHJlY2F0ZWQKLWluIHRoZSBPcGVuTVAgc3BlY2lmaWNhdGlvbiA1LjIgaW4g ZmF2b3Igb2YgQGNvZGV7b21wX3NldF9tYXhfYWN0aXZlX2xldmVsc30uCitHZXQgdGhlIGRl ZmF1bHQgZGV2aWNlIGZvciB0YXJnZXQgcmVnaW9ucyB3aXRob3V0IGRldmljZSBjbGF1c2Uu CiAKIEBpdGVtIEBlbXBoe0MvQysrfToKIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMg LjIwIC44MAotQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXt2b2lkIG9tcF9z ZXRfbmVzdGVkKGludCBuZXN0ZWQpO30KK0BpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIg QGNvZGV7aW50IG9tcF9nZXRfZGVmYXVsdF9kZXZpY2Uodm9pZCk7fQogQGVuZCBtdWx0aXRh YmxlCiAKIEBpdGVtIEBlbXBoe0ZvcnRyYW59OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0 aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle3N1YnJv dXRpbmUgb21wX3NldF9uZXN0ZWQobmVzdGVkKX0KLUBpdGVtICAgICAgICAgICAgICAgICAg IEB0YWIgQGNvZGV7bG9naWNhbCwgaW50ZW50KGluKSA6OiBuZXN0ZWR9CitAaXRlbSBAZW1w aHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF9kZWZh dWx0X2RldmljZSgpfQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVtIEBlbXBoe1NlZSBhbHNv fToKLUByZWZ7b21wX2dldF9uZXN0ZWR9LCBAcmVme29tcF9zZXRfbWF4X2FjdGl2ZV9sZXZl bHN9LAotQHJlZntPTVBfTUFYX0FDVElWRV9MRVZFTFN9LCBAcmVme09NUF9ORVNURUR9CitA cmVme09NUF9ERUZBVUxUX0RFVklDRX0sIEByZWZ7b21wX3NldF9kZWZhdWx0X2RldmljZX0K IAogQGl0ZW0gQGVtcGh7UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5v cmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi4xMC4KK0B1cmVm e2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBT ZWN0aW9uIDMuMi4zMC4KIEBlbmQgdGFibGUKIAogCiAKLUBub2RlIG9tcF9zZXRfbnVtX3Rl YW1zCi1Ac2VjdGlvbiBAY29kZXtvbXBfc2V0X251bV90ZWFtc30gLS0gU2V0IHVwcGVyIHRl YW1zIGxpbWl0IGZvciB0ZWFtcyBjb25zdHJ1Y3QKK0Bub2RlIG9tcF9nZXRfbnVtX2Rldmlj ZXMKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF9nZXRfbnVtX2RldmljZXN9IC0tIE51bWJlciBv ZiB0YXJnZXQgZGV2aWNlcwogQHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlv bn06Ci1TcGVjaWZpZXMgdGhlIHVwcGVyIGJvdW5kIGZvciBudW1iZXIgb2YgdGVhbXMgY3Jl YXRlZCBieSB0aGUgdGVhbXMgY29uc3RydWN0Ci13aGljaCBkb2VzIG5vdCBzcGVjaWZ5IGEg QGNvZGV7bnVtX3RlYW1zfSBjbGF1c2UuICBUaGUKLWFyZ3VtZW50IG9mIEBjb2Rle29tcF9z ZXRfbnVtX3RlYW1zfSBzaGFsbCBiZSBhIHBvc2l0aXZlIGludGVnZXIuCitSZXR1cm5zIHRo ZSBudW1iZXIgb2YgdGFyZ2V0IGRldmljZXMuCiAKIEBpdGVtIEBlbXBoe0MvQysrfToKIEBt dWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7UHJvdG90 eXBlfTogQHRhYiBAY29kZXt2b2lkIG9tcF9zZXRfbnVtX3RlYW1zKGludCBudW1fdGVhbXMp O30KK0BpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50IG9tcF9nZXRfbnVt X2RldmljZXModm9pZCk7fQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVtIEBlbXBoe0ZvcnRy YW59OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1w aHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle3N1YnJvdXRpbmUgb21wX3NldF9udW1fdGVhbXMo bnVtX3RlYW1zKX0KLUBpdGVtICAgICAgICAgICAgICAgICAgIEB0YWIgQGNvZGV7aW50ZWdl ciwgaW50ZW50KGluKSA6OiBudW1fdGVhbXN9CitAaXRlbSBAZW1waHtJbnRlcmZhY2V9OiBA dGFiIEBjb2Rle2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF9udW1fZGV2aWNlcygpfQogQGVu ZCBtdWx0aXRhYmxlCiAKLUBpdGVtIEBlbXBoe1NlZSBhbHNvfToKLUByZWZ7T01QX05VTV9U RUFNU30sIEByZWZ7b21wX2dldF9udW1fdGVhbXN9LCBAcmVme29tcF9nZXRfbWF4X3RlYW1z fQotCiBAaXRlbSBAZW1waHtSZWZlcmVuY2V9OgotQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1w Lm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjUuMX0sIFNlY3Rpb24gMy40LjMuCitAdXJl ZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwg U2VjdGlvbiAzLjIuMzEuCiBAZW5kIHRhYmxlCiAKIAogCi1Abm9kZSBvbXBfc2V0X251bV90 aHJlYWRzCi1Ac2VjdGlvbiBAY29kZXtvbXBfc2V0X251bV90aHJlYWRzfSAtLSBTZXQgdXBw ZXIgdGVhbSBzaXplIGxpbWl0CitAbm9kZSBvbXBfZ2V0X2RldmljZV9udW0KK0BzdWJzZWN0 aW9uIEBjb2Rle29tcF9nZXRfZGV2aWNlX251bX0gLS0gUmV0dXJuIGRldmljZSBudW1iZXIg b2YgY3VycmVudCBkZXZpY2UKIEB0YWJsZSBAYXNpcwogQGl0ZW0gQGVtcGh7RGVzY3JpcHRp b259OgotU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgdGhyZWFkcyB1c2VkIGJ5IGRlZmF1bHQg aW4gc3Vic2VxdWVudCBwYXJhbGxlbCAKLXNlY3Rpb25zLCBpZiB0aG9zZSBkbyBub3Qgc3Bl Y2lmeSBhIEBjb2Rle251bV90aHJlYWRzfSBjbGF1c2UuICBUaGUKLWFyZ3VtZW50IG9mIEBj b2Rle29tcF9zZXRfbnVtX3RocmVhZHN9IHNoYWxsIGJlIGEgcG9zaXRpdmUgaW50ZWdlci4K K1RoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGRldmljZSBudW1iZXIgdGhhdCByZXByZXNlbnRz IHRoZSBkZXZpY2UgdGhhdCB0aGUKK2N1cnJlbnQgdGhyZWFkIGlzIGV4ZWN1dGluZyBvbi4g Rm9yIE9wZW5NUCA1LjAsIHRoaXMgbXVzdCBiZSBlcXVhbCB0byB0aGUKK3ZhbHVlIHJldHVy bmVkIGJ5IHRoZSBAY29kZXtvbXBfZ2V0X2luaXRpYWxfZGV2aWNlfSBmdW5jdGlvbiB3aGVu IGNhbGxlZAorZnJvbSB0aGUgaG9zdC4KIAotQGl0ZW0gQGVtcGh7Qy9DKyt9OgorQGl0ZW0g QGVtcGh7Qy9DKyt9CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBp dGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7dm9pZCBvbXBfc2V0X251bV90aHJl YWRzKGludCBudW1fdGhyZWFkcyk7fQorQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBA Y29kZXtpbnQgb21wX2dldF9kZXZpY2VfbnVtKHZvaWQpO30KIEBlbmQgbXVsdGl0YWJsZQog CiBAaXRlbSBAZW1waHtGb3J0cmFufToKLUBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMg LjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBAY29kZXtzdWJyb3V0aW5l IG9tcF9zZXRfbnVtX3RocmVhZHMobnVtX3RocmVhZHMpfQotQGl0ZW0gICAgICAgICAgICAg ICAgICAgQHRhYiBAY29kZXtpbnRlZ2VyLCBpbnRlbnQoaW4pIDo6IG51bV90aHJlYWRzfQor QG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCitAaXRlbSBAZW1waHtJbnRl cmZhY2V9OiBAdGFiIEBjb2Rle2ludGVnZXIgZnVuY3Rpb24gb21wX2dldF9kZXZpY2VfbnVt KCl9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7U2VlIGFsc299OgotQHJlZntP TVBfTlVNX1RIUkVBRFN9LCBAcmVme29tcF9nZXRfbnVtX3RocmVhZHN9LCBAcmVme29tcF9n ZXRfbWF4X3RocmVhZHN9CitAcmVme29tcF9nZXRfaW5pdGlhbF9kZXZpY2V9CiAKIEBpdGVt IEBlbXBoe1JlZmVyZW5jZX06Ci1AdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVu TVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjIuMS4KK0B1cmVme2h0dHBzOi8v d3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY1LjB9LCBTZWN0aW9uIDMu Mi4zNy4KIEBlbmQgdGFibGUKIAogCiAKLUBub2RlIG9tcF9zZXRfc2NoZWR1bGUKLUBzZWN0 aW9uIEBjb2Rle29tcF9zZXRfc2NoZWR1bGV9IC0tIFNldCB0aGUgcnVudGltZSBzY2hlZHVs aW5nIG1ldGhvZAorQG5vZGUgb21wX2lzX2luaXRpYWxfZGV2aWNlCitAc3Vic2VjdGlvbiBA Y29kZXtvbXBfaXNfaW5pdGlhbF9kZXZpY2V9IC0tIFdoZXRoZXIgZXhlY3V0aW5nIG9uIHRo ZSBob3N0IGRldmljZQogQHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06 Ci1TZXRzIHRoZSBydW50aW1lIHNjaGVkdWxpbmcgbWV0aG9kLiAgVGhlIEB2YXJ7a2luZH0g YXJndW1lbnQgY2FuIGhhdmUgdGhlCi12YWx1ZSBAY29kZXtvbXBfc2NoZWRfc3RhdGljfSwg QGNvZGV7b21wX3NjaGVkX2R5bmFtaWN9LAotQGNvZGV7b21wX3NjaGVkX2d1aWRlZH0gb3Ig QGNvZGV7b21wX3NjaGVkX2F1dG99LiAgRXhjZXB0IGZvcgotQGNvZGV7b21wX3NjaGVkX2F1 dG99LCB0aGUgY2h1bmsgc2l6ZSBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mCi1AdmFye2NodW5r X3NpemV9IGlmIHBvc2l0aXZlLCBvciB0byB0aGUgZGVmYXVsdCB2YWx1ZSBpZiB6ZXJvIG9y IG5lZ2F0aXZlLgotRm9yIEBjb2Rle29tcF9zY2hlZF9hdXRvfSB0aGUgQHZhcntjaHVua19z aXplfSBhcmd1bWVudCBpcyBpZ25vcmVkLgorVGhpcyBmdW5jdGlvbiByZXR1cm5zIEBjb2Rl e3RydWV9IGlmIGN1cnJlbnRseSBydW5uaW5nIG9uIHRoZSBob3N0IGRldmljZSwKK0Bjb2Rl e2ZhbHNlfSBvdGhlcndpc2UuICBIZXJlLCBAY29kZXt0cnVlfSBhbmQgQGNvZGV7ZmFsc2V9 IHJlcHJlc2VudAordGhlaXIgbGFuZ3VhZ2Utc3BlY2lmaWMgY291bnRlcnBhcnRzLgogCi1A aXRlbSBAZW1waHtDL0MrK30KK0BpdGVtIEBlbXBoe0MvQysrfToKIEBtdWx0aXRhYmxlIEBj b2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBA Y29kZXt2b2lkIG9tcF9zZXRfc2NoZWR1bGUob21wX3NjaGVkX3Qga2luZCwgaW50IGNodW5r X3NpemUpO30KK0BpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7aW50IG9tcF9p c19pbml0aWFsX2RldmljZSh2b2lkKTt9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0gQGVt cGh7Rm9ydHJhbn06CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBp dGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7c3Vicm91dGluZSBvbXBfc2V0X3Nj aGVkdWxlKGtpbmQsIGNodW5rX3NpemUpfQotQGl0ZW0gICAgICAgICAgICAgICAgICAgQHRh YiBAY29kZXtpbnRlZ2VyKGtpbmQ9b21wX3NjaGVkX2tpbmQpIGtpbmR9Ci1AaXRlbSAgICAg ICAgICAgICAgICAgICBAdGFiIEBjb2Rle2ludGVnZXIgY2h1bmtfc2l6ZX0KK0BpdGVtIEBl bXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7bG9naWNhbCBmdW5jdGlvbiBvbXBfaXNfaW5p dGlhbF9kZXZpY2UoKX0KIEBlbmQgbXVsdGl0YWJsZQogCi1AaXRlbSBAZW1waHtTZWUgYWxz b306Ci1AcmVme29tcF9nZXRfc2NoZWR1bGV9Ci1AcmVme09NUF9TQ0hFRFVMRX0KLQogQGl0 ZW0gQGVtcGh7UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9w ZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMi4xMi4KK0B1cmVme2h0dHBz Oi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9u IDMuMi4zNC4KIEBlbmQgdGFibGUKIAogCiAKLUBub2RlIG9tcF9zZXRfdGVhbXNfdGhyZWFk X2xpbWl0Ci1Ac2VjdGlvbiBAY29kZXtvbXBfc2V0X3RlYW1zX3RocmVhZF9saW1pdH0gLS0g U2V0IHVwcGVyIHRocmVhZCBsaW1pdCBmb3IgdGVhbXMgY29uc3RydWN0CitAbm9kZSBvbXBf Z2V0X2luaXRpYWxfZGV2aWNlCitAc3Vic2VjdGlvbiBAY29kZXtvbXBfZ2V0X2luaXRpYWxf ZGV2aWNlfSAtLSBSZXR1cm4gZGV2aWNlIG51bWJlciBvZiBpbml0aWFsIGRldmljZQogQHRh YmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06Ci1TcGVjaWZpZXMgdGhlIHVw cGVyIGJvdW5kIGZvciBudW1iZXIgb2YgdGhyZWFkcyB0aGF0IHdpbGwgYmUgYXZhaWxhYmxl Ci1mb3IgZWFjaCB0ZWFtIGNyZWF0ZWQgYnkgdGhlIHRlYW1zIGNvbnN0cnVjdCB3aGljaCBk b2VzIG5vdCBzcGVjaWZ5IGEKLUBjb2Rle3RocmVhZF9saW1pdH0gY2xhdXNlLiAgVGhlIGFy Z3VtZW50IG9mCi1AY29kZXtvbXBfc2V0X3RlYW1zX3RocmVhZF9saW1pdH0gc2hhbGwgYmUg YSBwb3NpdGl2ZSBpbnRlZ2VyLgorVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgZGV2aWNlIG51 bWJlciB0aGF0IHJlcHJlc2VudHMgdGhlIGhvc3QgZGV2aWNlLgorRm9yIE9wZW5NUCA1LjEs IHRoaXMgbXVzdCBiZSBlcXVhbCB0byB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlCitAY29k ZXtvbXBfZ2V0X251bV9kZXZpY2VzfSBmdW5jdGlvbi4KIAotQGl0ZW0gQGVtcGh7Qy9DKyt9 OgorQGl0ZW0gQGVtcGh7Qy9DKyt9CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4y MCAuODAKLUBpdGVtIEBlbXBoe1Byb3RvdHlwZX06IEB0YWIgQGNvZGV7dm9pZCBvbXBfc2V0 X3RlYW1zX3RocmVhZF9saW1pdChpbnQgdGhyZWFkX2xpbWl0KTt9CitAaXRlbSBAZW1waHtQ cm90b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBvbXBfZ2V0X2luaXRpYWxfZGV2aWNlKHZvaWQp O30KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtGb3J0cmFufToKIEBtdWx0aXRh YmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTog QHRhYiBAY29kZXtzdWJyb3V0aW5lIG9tcF9zZXRfdGVhbXNfdGhyZWFkX2xpbWl0KHRocmVh ZF9saW1pdCl9Ci1AaXRlbSAgICAgICAgICAgICAgICAgICBAdGFiIEBjb2Rle2ludGVnZXIs IGludGVudChpbikgOjogdGhyZWFkX2xpbWl0fQorQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTog QHRhYiBAY29kZXtpbnRlZ2VyIGZ1bmN0aW9uIG9tcF9nZXRfaW5pdGlhbF9kZXZpY2UoKX0K IEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtTZWUgYWxzb306Ci1AcmVme09NUF9U RUFNU19USFJFQURfTElNSVR9LCBAcmVme29tcF9nZXRfdGVhbXNfdGhyZWFkX2xpbWl0fSwg QHJlZntvbXBfZ2V0X3RocmVhZF9saW1pdH0KK0ByZWZ7b21wX2dldF9udW1fZGV2aWNlc30K IAogQGl0ZW0gQGVtcGh7UmVmZXJlbmNlfToKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5v cmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY1LjF9LCBTZWN0aW9uIDMuNC41LgorQHVyZWZ7 aHR0cHM6Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNl Y3Rpb24gMy4yLjM1LgogQGVuZCB0YWJsZQogCiAKIAorQGMgQG5vZGUgRGV2aWNlIE1lbW9y eSBSb3V0aW5lcworQGMgQHNlY3Rpb24gRGV2aWNlIE1lbW9yeSBSb3V0aW5lcworQGMKK0Bj IFJvdXRpbmVzIHJlbGF0ZWQgdG8gbWVtb3J5IGFsbG9jYXRpb24gYW5kIG1hbmFnaW5nIGNv cnJlc3BvbmRpbmcKK0BjIHBvaW50ZXJzIG9uIGRldmljZXMuIFRoZXkgaGF2ZSBDIGxpbmth Z2UgYW5kIGRvIG5vdCB0aHJvdyBleGNlcHRpb25zLgorQGMgCitAYyBAbWVudQorQGMgKiBv bXBfdGFyZ2V0X2FsbG9jOjogPGZpeG1lPgorQGMgKiBvbXBfdGFyZ2V0X2ZyZWU6OiA8Zml4 bWU+CitAYyAqIG9tcF90YXJnZXRfaXNfcHJlc2VudDo6IDxmaXhtZT4KK0BjICogb21wX3Rh cmdldF9pc19hY2Nlc3NpYmxlOjogPGZpeG1lPgorQGMgKiBvbXBfdGFyZ2V0X21lbWNweTo6 IDxmaXhtZT4KK0BjICogb21wX3RhcmdldF9tZW1jcHlfcmVjdDo6IDxmaXhtZT4KK0BjICog b21wX3RhcmdldF9tZW1jcHlfYXN5bmM6OiA8Zml4bWU+CitAYyAqIG9tcF90YXJnZXRfbWVt Y3B5X3JlY3RfYXN5bmM6OiA8Zml4bWU+CitAYyAqIG9tcF90YXJnZXRfYXNzb2NpYXRlX3B0 cjo6IDxmaXhtZT4KK0BjICogb21wX3RhcmdldF9kaXNhc3NvY2lhdGVfcHRyOjogPGZpeG1l PgorQGMgKiBvbXBfZ2V0X21hcHBlZF9wdHI6OiA8Zml4bWU+CitAYyBAZW5kIG1lbnUKKwor QG5vZGUgTG9jayBSb3V0aW5lcworQHNlY3Rpb24gTG9jayBSb3V0aW5lcworCitJbml0aWFs aXplLCBzZXQsIHRlc3QsIHVuc2V0IGFuZCBkZXN0cm95IHNpbXBsZSBhbmQgbmVzdGVkIGxv Y2tzLgorVGhlIHJvdXRpbmVzIGhhdmUgQyBsaW5rYWdlIGFuZCBkbyBub3QgdGhyb3cgZXhj ZXB0aW9ucy4KKworQG1lbnUKKyogb21wX2luaXRfbG9jazo6ICAgICAgICAgICAgSW5pdGlh bGl6ZSBzaW1wbGUgbG9jaworKiBvbXBfaW5pdF9uZXN0X2xvY2s6OiAgICAgICBJbml0aWFs aXplIG5lc3RlZCBsb2NrCitAYyAqIG9tcF9pbml0X2xvY2tfd2l0aF9oaW50OjogPGZpeG1l PgorQGMgKiBvbXBfaW5pdF9uZXN0X2xvY2tfd2l0aF9oaW50OjogPGZpeG1lPgorKiBvbXBf ZGVzdHJveV9sb2NrOjogICAgICAgICBEZXN0cm95IHNpbXBsZSBsb2NrCisqIG9tcF9kZXN0 cm95X25lc3RfbG9jazo6ICAgIERlc3Ryb3kgbmVzdGVkIGxvY2sKKyogb21wX3NldF9sb2Nr OjogICAgICAgICAgICAgV2FpdCBmb3IgYW5kIHNldCBzaW1wbGUgbG9jaworKiBvbXBfc2V0 X25lc3RfbG9jazo6ICAgICAgICBXYWl0IGZvciBhbmQgc2V0IHNpbXBsZSBsb2NrCisqIG9t cF91bnNldF9sb2NrOjogICAgICAgICAgIFVuc2V0IHNpbXBsZSBsb2NrCisqIG9tcF91bnNl dF9uZXN0X2xvY2s6OiAgICAgIFVuc2V0IG5lc3RlZCBsb2NrCisqIG9tcF90ZXN0X2xvY2s6 OiAgICAgICAgICAgIFRlc3QgYW5kIHNldCBzaW1wbGUgbG9jayBpZiBhdmFpbGFibGUKKyog b21wX3Rlc3RfbmVzdF9sb2NrOjogICAgICAgVGVzdCBhbmQgc2V0IG5lc3RlZCBsb2NrIGlm IGF2YWlsYWJsZQorQGVuZCBtZW51CisKKworCiBAbm9kZSBvbXBfaW5pdF9sb2NrCi1Ac2Vj dGlvbiBAY29kZXtvbXBfaW5pdF9sb2NrfSAtLSBJbml0aWFsaXplIHNpbXBsZSBsb2NrCitA c3Vic2VjdGlvbiBAY29kZXtvbXBfaW5pdF9sb2NrfSAtLSBJbml0aWFsaXplIHNpbXBsZSBs b2NrCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKIEluaXRpYWxp emUgYSBzaW1wbGUgbG9jay4gIEFmdGVyIGluaXRpYWxpemF0aW9uLCB0aGUgbG9jayBpcyBp bgpAQCAtMTU4OCwxNTAgKzE2OTgsMTE4IEBAIGFuIHVubG9ja2VkIHN0YXRlLgogCiAKIAot QG5vZGUgb21wX3NldF9sb2NrCi1Ac2VjdGlvbiBAY29kZXtvbXBfc2V0X2xvY2t9IC0tIFdh aXQgZm9yIGFuZCBzZXQgc2ltcGxlIGxvY2sKK0Bub2RlIG9tcF9pbml0X25lc3RfbG9jawor QHN1YnNlY3Rpb24gQGNvZGV7b21wX2luaXRfbmVzdF9sb2NrfSAtLSBJbml0aWFsaXplIG5l c3RlZCBsb2NrCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKLUJl Zm9yZSBzZXR0aW5nIGEgc2ltcGxlIGxvY2ssIHRoZSBsb2NrIHZhcmlhYmxlIG11c3QgYmUg aW5pdGlhbGl6ZWQgYnkgCi1AY29kZXtvbXBfaW5pdF9sb2NrfS4gIFRoZSBjYWxsaW5nIHRo cmVhZCBpcyBibG9ja2VkIHVudGlsIHRoZSBsb2NrIAotaXMgYXZhaWxhYmxlLiAgSWYgdGhl IGxvY2sgaXMgYWxyZWFkeSBoZWxkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgCi1hIGRlYWRs b2NrIG9jY3Vycy4KK0luaXRpYWxpemUgYSBuZXN0ZWQgbG9jay4gIEFmdGVyIGluaXRpYWxp emF0aW9uLCB0aGUgbG9jayBpcyBpbgorYW4gdW5sb2NrZWQgc3RhdGUgYW5kIHRoZSBuZXN0 aW5nIGNvdW50IGlzIHNldCB0byB6ZXJvLgogCiBAaXRlbSBAZW1waHtDL0MrK306CiBAbXVs dGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe1Byb3RvdHlw ZX06IEB0YWIgQGNvZGV7dm9pZCBvbXBfc2V0X2xvY2sob21wX2xvY2tfdCAqbG9jayk7fQor QGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXt2b2lkIG9tcF9pbml0X25lc3Rf bG9jayhvbXBfbmVzdF9sb2NrX3QgKmxvY2spO30KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRl bSBAZW1waHtGb3J0cmFufToKIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44 MAotQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBAY29kZXtzdWJyb3V0aW5lIG9tcF9z ZXRfbG9jayhzdmFyKX0KLUBpdGVtICAgICAgICAgICAgICAgICAgIEB0YWIgQGNvZGV7aW50 ZWdlcihvbXBfbG9ja19raW5kKSwgaW50ZW50KGlub3V0KSA6OiBzdmFyfQorQGl0ZW0gQGVt cGh7SW50ZXJmYWNlfTogQHRhYiBAY29kZXtzdWJyb3V0aW5lIG9tcF9pbml0X25lc3RfbG9j ayhudmFyKX0KK0BpdGVtICAgICAgICAgICAgICAgICAgIEB0YWIgQGNvZGV7aW50ZWdlcihv bXBfbmVzdF9sb2NrX2tpbmQpLCBpbnRlbnQob3V0KSA6OiBudmFyfQogQGVuZCBtdWx0aXRh YmxlCiAKIEBpdGVtIEBlbXBoe1NlZSBhbHNvfToKLUByZWZ7b21wX2luaXRfbG9ja30sIEBy ZWZ7b21wX3Rlc3RfbG9ja30sIEByZWZ7b21wX3Vuc2V0X2xvY2t9CitAcmVme29tcF9kZXN0 cm95X25lc3RfbG9ja30KIAotQGl0ZW0gQGVtcGh7UmVmZXJlbmNlfTogCi1AdXJlZntodHRw czovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlv biAzLjMuNC4KK0BpdGVtIEBlbXBoe1JlZmVyZW5jZX06CitAdXJlZntodHRwczovL3d3dy5v cGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjMuMS4K IEBlbmQgdGFibGUKIAogCiAKLUBub2RlIG9tcF90ZXN0X2xvY2sKLUBzZWN0aW9uIEBjb2Rl e29tcF90ZXN0X2xvY2t9IC0tIFRlc3QgYW5kIHNldCBzaW1wbGUgbG9jayBpZiBhdmFpbGFi bGUKK0Bub2RlIG9tcF9kZXN0cm95X2xvY2sKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF9kZXN0 cm95X2xvY2t9IC0tIERlc3Ryb3kgc2ltcGxlIGxvY2sKIEB0YWJsZSBAYXNpcwogQGl0ZW0g QGVtcGh7RGVzY3JpcHRpb259OgotQmVmb3JlIHNldHRpbmcgYSBzaW1wbGUgbG9jaywgdGhl IGxvY2sgdmFyaWFibGUgbXVzdCBiZSBpbml0aWFsaXplZCBieSAKLUBjb2Rle29tcF9pbml0 X2xvY2t9LiAgQ29udHJhcnkgdG8gQGNvZGV7b21wX3NldF9sb2NrfSwgQGNvZGV7b21wX3Rl c3RfbG9ja30gCi1kb2VzIG5vdCBibG9jayBpZiB0aGUgbG9jayBpcyBub3QgYXZhaWxhYmxl LiAgVGhpcyBmdW5jdGlvbiByZXR1cm5zCi1AY29kZXt0cnVlfSB1cG9uIHN1Y2Nlc3MsIEBj b2Rle2ZhbHNlfSBvdGhlcndpc2UuICBIZXJlLCBAY29kZXt0cnVlfSBhbmQKLUBjb2Rle2Zh bHNlfSByZXByZXNlbnQgdGhlaXIgbGFuZ3VhZ2Utc3BlY2lmaWMgY291bnRlcnBhcnRzLgor RGVzdHJveSBhIHNpbXBsZSBsb2NrLiAgSW4gb3JkZXIgdG8gYmUgZGVzdHJveWVkLCBhIHNp bXBsZSBsb2NrIG11c3QgYmUKK2luIHRoZSB1bmxvY2tlZCBzdGF0ZS4gCiAKIEBpdGVtIEBl bXBoe0MvQysrfToKIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0 ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21wX3Rlc3RfbG9jayhvbXBf bG9ja190ICpsb2NrKTt9CitAaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle3Zv aWQgb21wX2Rlc3Ryb3lfbG9jayhvbXBfbG9ja190ICpsb2NrKTt9CiBAZW5kIG11bHRpdGFi bGUKIAogQGl0ZW0gQGVtcGh7Rm9ydHJhbn06CiBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rp b25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7bG9naWNh bCBmdW5jdGlvbiBvbXBfdGVzdF9sb2NrKHN2YXIpfQorQGl0ZW0gQGVtcGh7SW50ZXJmYWNl fTogQHRhYiBAY29kZXtzdWJyb3V0aW5lIG9tcF9kZXN0cm95X2xvY2soc3Zhcil9CiBAaXRl bSAgICAgICAgICAgICAgICAgICBAdGFiIEBjb2Rle2ludGVnZXIob21wX2xvY2tfa2luZCks IGludGVudChpbm91dCkgOjogc3Zhcn0KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1w aHtTZWUgYWxzb306Ci1AcmVme29tcF9pbml0X2xvY2t9LCBAcmVme29tcF9zZXRfbG9ja30s IEByZWZ7b21wX3NldF9sb2NrfQorQHJlZntvbXBfaW5pdF9sb2NrfQogCiBAaXRlbSBAZW1w aHtSZWZlcmVuY2V9OiAKLUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBz cGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMy42LgorQHVyZWZ7aHR0cHM6Ly93d3cu b3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rpb24gMy4zLjMu CiBAZW5kIHRhYmxlCiAKIAogCi1Abm9kZSBvbXBfdW5zZXRfbG9jawotQHNlY3Rpb24gQGNv ZGV7b21wX3Vuc2V0X2xvY2t9IC0tIFVuc2V0IHNpbXBsZSBsb2NrCitAbm9kZSBvbXBfZGVz dHJveV9uZXN0X2xvY2sKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF9kZXN0cm95X25lc3RfbG9j a30gLS0gRGVzdHJveSBuZXN0ZWQgbG9jawogQHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtE ZXNjcmlwdGlvbn06Ci1BIHNpbXBsZSBsb2NrIGFib3V0IHRvIGJlIHVuc2V0IG11c3QgaGF2 ZSBiZWVuIGxvY2tlZCBieSBAY29kZXtvbXBfc2V0X2xvY2t9Ci1vciBAY29kZXtvbXBfdGVz dF9sb2NrfSBiZWZvcmUuICBJbiBhZGRpdGlvbiwgdGhlIGxvY2sgbXVzdCBiZSBoZWxkIGJ5 IHRoZQotdGhyZWFkIGNhbGxpbmcgQGNvZGV7b21wX3Vuc2V0X2xvY2t9LiAgVGhlbiwgdGhl IGxvY2sgYmVjb21lcyB1bmxvY2tlZC4gIElmIG9uZQotb3IgbW9yZSB0aHJlYWRzIGF0dGVt cHRlZCB0byBzZXQgdGhlIGxvY2sgYmVmb3JlLCBvbmUgb2YgdGhlbSBpcyBjaG9zZW4gdG8s Ci1hZ2Fpbiwgc2V0IHRoZSBsb2NrIHRvIGl0c2VsZi4KK0Rlc3Ryb3kgYSBuZXN0ZWQgbG9j ay4gIEluIG9yZGVyIHRvIGJlIGRlc3Ryb3llZCwgYSBuZXN0ZWQgbG9jayBtdXN0IGJlCitp biB0aGUgdW5sb2NrZWQgc3RhdGUgYW5kIGl0cyBuZXN0aW5nIGNvdW50IG11c3QgZXF1YWwg emVyby4KIAogQGl0ZW0gQGVtcGh7Qy9DKyt9OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0 aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle3ZvaWQg b21wX3Vuc2V0X2xvY2sob21wX2xvY2tfdCAqbG9jayk7fQorQGl0ZW0gQGVtcGh7UHJvdG90 eXBlfTogQHRhYiBAY29kZXt2b2lkIG9tcF9kZXN0cm95X25lc3RfbG9jayhvbXBfbmVzdF9s b2NrX3QgKik7fQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVtIEBlbXBoe0ZvcnRyYW59Ogog QG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAgLjgwCi1AaXRlbSBAZW1waHtJbnRl cmZhY2V9OiBAdGFiIEBjb2Rle3N1YnJvdXRpbmUgb21wX3Vuc2V0X2xvY2soc3Zhcil9Ci1A aXRlbSAgICAgICAgICAgICAgICAgICBAdGFiIEBjb2Rle2ludGVnZXIob21wX2xvY2tfa2lu ZCksIGludGVudChpbm91dCkgOjogc3Zhcn0KK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0 YWIgQGNvZGV7c3Vicm91dGluZSBvbXBfZGVzdHJveV9uZXN0X2xvY2sobnZhcil9CitAaXRl bSAgICAgICAgICAgICAgICAgICBAdGFiIEBjb2Rle2ludGVnZXIob21wX25lc3RfbG9ja19r aW5kKSwgaW50ZW50KGlub3V0KSA6OiBudmFyfQogQGVuZCBtdWx0aXRhYmxlCiAKIEBpdGVt IEBlbXBoe1NlZSBhbHNvfToKLUByZWZ7b21wX3NldF9sb2NrfSwgQHJlZntvbXBfdGVzdF9s b2NrfQorQHJlZntvbXBfaW5pdF9sb2NrfQogCiBAaXRlbSBAZW1waHtSZWZlcmVuY2V9OiAK LUB1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0 LjV9LCBTZWN0aW9uIDMuMy41LgorQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywgT3Bl bk1QIHNwZWNpZmljYXRpb24gdjQuNX0sIFNlY3Rpb24gMy4zLjMuCiBAZW5kIHRhYmxlCiAK IAogCi1Abm9kZSBvbXBfZGVzdHJveV9sb2NrCi1Ac2VjdGlvbiBAY29kZXtvbXBfZGVzdHJv eV9sb2NrfSAtLSBEZXN0cm95IHNpbXBsZSBsb2NrCitAbm9kZSBvbXBfc2V0X2xvY2sKK0Bz dWJzZWN0aW9uIEBjb2Rle29tcF9zZXRfbG9ja30gLS0gV2FpdCBmb3IgYW5kIHNldCBzaW1w bGUgbG9jawogQHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06Ci1EZXN0 cm95IGEgc2ltcGxlIGxvY2suICBJbiBvcmRlciB0byBiZSBkZXN0cm95ZWQsIGEgc2ltcGxl IGxvY2sgbXVzdCBiZQotaW4gdGhlIHVubG9ja2VkIHN0YXRlLiAKK0JlZm9yZSBzZXR0aW5n IGEgc2ltcGxlIGxvY2ssIHRoZSBsb2NrIHZhcmlhYmxlIG11c3QgYmUgaW5pdGlhbGl6ZWQg YnkgCitAY29kZXtvbXBfaW5pdF9sb2NrfS4gIFRoZSBjYWxsaW5nIHRocmVhZCBpcyBibG9j a2VkIHVudGlsIHRoZSBsb2NrIAoraXMgYXZhaWxhYmxlLiAgSWYgdGhlIGxvY2sgaXMgYWxy ZWFkeSBoZWxkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgCithIGRlYWRsb2NrIG9jY3Vycy4K IAogQGl0ZW0gQGVtcGh7Qy9DKyt9OgogQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAu MjAgLjgwCi1AaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle3ZvaWQgb21wX2Rl c3Ryb3lfbG9jayhvbXBfbG9ja190ICpsb2NrKTt9CitAaXRlbSBAZW1waHtQcm90b3R5cGV9 OiBAdGFiIEBjb2Rle3ZvaWQgb21wX3NldF9sb2NrKG9tcF9sb2NrX3QgKmxvY2spO30KIEBl bmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtGb3J0cmFufToKIEBtdWx0aXRhYmxlIEBj b2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBA Y29kZXtzdWJyb3V0aW5lIG9tcF9kZXN0cm95X2xvY2soc3Zhcil9CitAaXRlbSBAZW1waHtJ bnRlcmZhY2V9OiBAdGFiIEBjb2Rle3N1YnJvdXRpbmUgb21wX3NldF9sb2NrKHN2YXIpfQog QGl0ZW0gICAgICAgICAgICAgICAgICAgQHRhYiBAY29kZXtpbnRlZ2VyKG9tcF9sb2NrX2tp bmQpLCBpbnRlbnQoaW5vdXQpIDo6IHN2YXJ9CiBAZW5kIG11bHRpdGFibGUKIAogQGl0ZW0g QGVtcGh7U2VlIGFsc299OgotQHJlZntvbXBfaW5pdF9sb2NrfQorQHJlZntvbXBfaW5pdF9s b2NrfSwgQHJlZntvbXBfdGVzdF9sb2NrfSwgQHJlZntvbXBfdW5zZXRfbG9ja30KIAogQGl0 ZW0gQGVtcGh7UmVmZXJlbmNlfTogCi1AdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBP cGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlvbiAzLjMuMy4KK0B1cmVme2h0dHBz Oi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9u IDMuMy40LgogQGVuZCB0YWJsZQogCiAKIAotQG5vZGUgb21wX2luaXRfbmVzdF9sb2NrCi1A c2VjdGlvbiBAY29kZXtvbXBfaW5pdF9uZXN0X2xvY2t9IC0tIEluaXRpYWxpemUgbmVzdGVk IGxvY2sKLUB0YWJsZSBAYXNpcwotQGl0ZW0gQGVtcGh7RGVzY3JpcHRpb259OgotSW5pdGlh bGl6ZSBhIG5lc3RlZCBsb2NrLiAgQWZ0ZXIgaW5pdGlhbGl6YXRpb24sIHRoZSBsb2NrIGlz IGluCi1hbiB1bmxvY2tlZCBzdGF0ZSBhbmQgdGhlIG5lc3RpbmcgY291bnQgaXMgc2V0IHRv IHplcm8uCi0KLUBpdGVtIEBlbXBoe0MvQysrfToKLUBtdWx0aXRhYmxlIEBjb2x1bW5mcmFj dGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXt2b2lk IG9tcF9pbml0X25lc3RfbG9jayhvbXBfbmVzdF9sb2NrX3QgKmxvY2spO30KLUBlbmQgbXVs dGl0YWJsZQotCi1AaXRlbSBAZW1waHtGb3J0cmFufToKLUBtdWx0aXRhYmxlIEBjb2x1bW5m cmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJmYWNlfTogQHRhYiBAY29kZXtz dWJyb3V0aW5lIG9tcF9pbml0X25lc3RfbG9jayhudmFyKX0KLUBpdGVtICAgICAgICAgICAg ICAgICAgIEB0YWIgQGNvZGV7aW50ZWdlcihvbXBfbmVzdF9sb2NrX2tpbmQpLCBpbnRlbnQo b3V0KSA6OiBudmFyfQotQGVuZCBtdWx0aXRhYmxlCi0KLUBpdGVtIEBlbXBoe1NlZSBhbHNv fToKLUByZWZ7b21wX2Rlc3Ryb3lfbmVzdF9sb2NrfQotCi1AaXRlbSBAZW1waHtSZWZlcmVu Y2V9OgotQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmljYXRp b24gdjQuNX0sIFNlY3Rpb24gMy4zLjEuCi1AZW5kIHRhYmxlCi0KLQogQG5vZGUgb21wX3Nl dF9uZXN0X2xvY2sKLUBzZWN0aW9uIEBjb2Rle29tcF9zZXRfbmVzdF9sb2NrfSAtLSBXYWl0 IGZvciBhbmQgc2V0IG5lc3RlZCBsb2NrCitAc3Vic2VjdGlvbiBAY29kZXtvbXBfc2V0X25l c3RfbG9ja30gLS0gV2FpdCBmb3IgYW5kIHNldCBuZXN0ZWQgbG9jawogQHRhYmxlIEBhc2lz CiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06CiBCZWZvcmUgc2V0dGluZyBhIG5lc3RlZCBs b2NrLCB0aGUgbG9jayB2YXJpYWJsZSBtdXN0IGJlIGluaXRpYWxpemVkIGJ5IApAQCAtMTc1 OSwzOSArMTgzNywzOCBAQCBuZXN0aW5nIGNvdW50IGZvciB0aGUgbG9jayBpcyBpbmNyZW1l bnRlZC4KIAogCiAKLUBub2RlIG9tcF90ZXN0X25lc3RfbG9jawotQHNlY3Rpb24gQGNvZGV7 b21wX3Rlc3RfbmVzdF9sb2NrfSAtLSBUZXN0IGFuZCBzZXQgbmVzdGVkIGxvY2sgaWYgYXZh aWxhYmxlCitAbm9kZSBvbXBfdW5zZXRfbG9jaworQHN1YnNlY3Rpb24gQGNvZGV7b21wX3Vu c2V0X2xvY2t9IC0tIFVuc2V0IHNpbXBsZSBsb2NrCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBl bXBoe0Rlc2NyaXB0aW9ufToKLUJlZm9yZSBzZXR0aW5nIGEgbmVzdGVkIGxvY2ssIHRoZSBs b2NrIHZhcmlhYmxlIG11c3QgYmUgaW5pdGlhbGl6ZWQgYnkgCi1AY29kZXtvbXBfaW5pdF9u ZXN0X2xvY2t9LiAgQ29udHJhcnkgdG8gQGNvZGV7b21wX3NldF9uZXN0X2xvY2t9LAotQGNv ZGV7b21wX3Rlc3RfbmVzdF9sb2NrfSBkb2VzIG5vdCBibG9jayBpZiB0aGUgbG9jayBpcyBu b3QgYXZhaWxhYmxlLiAKLUlmIHRoZSBsb2NrIGlzIGFscmVhZHkgaGVsZCBieSB0aGUgY3Vy cmVudCB0aHJlYWQsIHRoZSBuZXcgbmVzdGluZyBjb3VudCAKLWlzIHJldHVybmVkLiAgT3Ro ZXJ3aXNlLCB0aGUgcmV0dXJuIHZhbHVlIGVxdWFscyB6ZXJvLgorQSBzaW1wbGUgbG9jayBh Ym91dCB0byBiZSB1bnNldCBtdXN0IGhhdmUgYmVlbiBsb2NrZWQgYnkgQGNvZGV7b21wX3Nl dF9sb2NrfQorb3IgQGNvZGV7b21wX3Rlc3RfbG9ja30gYmVmb3JlLiAgSW4gYWRkaXRpb24s IHRoZSBsb2NrIG11c3QgYmUgaGVsZCBieSB0aGUKK3RocmVhZCBjYWxsaW5nIEBjb2Rle29t cF91bnNldF9sb2NrfS4gIFRoZW4sIHRoZSBsb2NrIGJlY29tZXMgdW5sb2NrZWQuICBJZiBv bmUKK29yIG1vcmUgdGhyZWFkcyBhdHRlbXB0ZWQgdG8gc2V0IHRoZSBsb2NrIGJlZm9yZSwg b25lIG9mIHRoZW0gaXMgY2hvc2VuIHRvLAorYWdhaW4sIHNldCB0aGUgbG9jayB0byBpdHNl bGYuCiAKIEBpdGVtIEBlbXBoe0MvQysrfToKIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlv bnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXtpbnQgb21w X3Rlc3RfbmVzdF9sb2NrKG9tcF9uZXN0X2xvY2tfdCAqbG9jayk7fQorQGl0ZW0gQGVtcGh7 UHJvdG90eXBlfTogQHRhYiBAY29kZXt2b2lkIG9tcF91bnNldF9sb2NrKG9tcF9sb2NrX3Qg KmxvY2spO30KIEBlbmQgbXVsdGl0YWJsZQogCiBAaXRlbSBAZW1waHtGb3J0cmFufToKIEBt dWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAotQGl0ZW0gQGVtcGh7SW50ZXJm YWNlfTogQHRhYiBAY29kZXtsb2dpY2FsIGZ1bmN0aW9uIG9tcF90ZXN0X25lc3RfbG9jayhu dmFyKX0KLUBpdGVtICAgICAgICAgICAgICAgICAgIEB0YWIgQGNvZGV7aW50ZWdlcihvbXBf bmVzdF9sb2NrX2tpbmQpLCBpbnRlbnQoaW5vdXQpIDo6IG52YXJ9CitAaXRlbSBAZW1waHtJ bnRlcmZhY2V9OiBAdGFiIEBjb2Rle3N1YnJvdXRpbmUgb21wX3Vuc2V0X2xvY2soc3Zhcil9 CitAaXRlbSAgICAgICAgICAgICAgICAgICBAdGFiIEBjb2Rle2ludGVnZXIob21wX2xvY2tf a2luZCksIGludGVudChpbm91dCkgOjogc3Zhcn0KIEBlbmQgbXVsdGl0YWJsZQogCi0KIEBp dGVtIEBlbXBoe1NlZSBhbHNvfToKLUByZWZ7b21wX2luaXRfbG9ja30sIEByZWZ7b21wX3Nl dF9sb2NrfSwgQHJlZntvbXBfc2V0X2xvY2t9CitAcmVme29tcF9zZXRfbG9ja30sIEByZWZ7 b21wX3Rlc3RfbG9ja30KIAogQGl0ZW0gQGVtcGh7UmVmZXJlbmNlfTogCi1AdXJlZntodHRw czovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlvbiB2NC41fSwgU2VjdGlv biAzLjMuNi4KK0B1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcsIE9wZW5NUCBzcGVjaWZp Y2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMy41LgogQGVuZCB0YWJsZQogCiAKIAogQG5vZGUg b21wX3Vuc2V0X25lc3RfbG9jawotQHNlY3Rpb24gQGNvZGV7b21wX3Vuc2V0X25lc3RfbG9j a30gLS0gVW5zZXQgbmVzdGVkIGxvY2sKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF91bnNldF9u ZXN0X2xvY2t9IC0tIFVuc2V0IG5lc3RlZCBsb2NrCiBAdGFibGUgQGFzaXMKIEBpdGVtIEBl bXBoe0Rlc2NyaXB0aW9ufToKIEEgbmVzdGVkIGxvY2sgYWJvdXQgdG8gYmUgdW5zZXQgbXVz dCBoYXZlIGJlZW4gbG9ja2VkIGJ5IEBjb2Rle29tcF9zZXRfbmVzdGVkX2xvY2t9CkBAIC0x ODIwLDM1ICsxODk3LDgyIEBAIG9uZSBvZiB0aGVtIGlzIGNob3NlbiB0bywgYWdhaW4sIHNl dCB0aGUgbG9jayB0byBpdHNlbGYuCiAKIAogCi1Abm9kZSBvbXBfZGVzdHJveV9uZXN0X2xv Y2sKLUBzZWN0aW9uIEBjb2Rle29tcF9kZXN0cm95X25lc3RfbG9ja30gLS0gRGVzdHJveSBu ZXN0ZWQgbG9jaworQG5vZGUgb21wX3Rlc3RfbG9jaworQHN1YnNlY3Rpb24gQGNvZGV7b21w X3Rlc3RfbG9ja30gLS0gVGVzdCBhbmQgc2V0IHNpbXBsZSBsb2NrIGlmIGF2YWlsYWJsZQog QHRhYmxlIEBhc2lzCiBAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06Ci1EZXN0cm95IGEgbmVz dGVkIGxvY2suICBJbiBvcmRlciB0byBiZSBkZXN0cm95ZWQsIGEgbmVzdGVkIGxvY2sgbXVz dCBiZQotaW4gdGhlIHVubG9ja2VkIHN0YXRlIGFuZCBpdHMgbmVzdGluZyBjb3VudCBtdXN0 IGVxdWFsIHplcm8uCitCZWZvcmUgc2V0dGluZyBhIHNpbXBsZSBsb2NrLCB0aGUgbG9jayB2 YXJpYWJsZSBtdXN0IGJlIGluaXRpYWxpemVkIGJ5IAorQGNvZGV7b21wX2luaXRfbG9ja30u ICBDb250cmFyeSB0byBAY29kZXtvbXBfc2V0X2xvY2t9LCBAY29kZXtvbXBfdGVzdF9sb2Nr fSAKK2RvZXMgbm90IGJsb2NrIGlmIHRoZSBsb2NrIGlzIG5vdCBhdmFpbGFibGUuICBUaGlz IGZ1bmN0aW9uIHJldHVybnMKK0Bjb2Rle3RydWV9IHVwb24gc3VjY2VzcywgQGNvZGV7ZmFs c2V9IG90aGVyd2lzZS4gIEhlcmUsIEBjb2Rle3RydWV9IGFuZAorQGNvZGV7ZmFsc2V9IHJl cHJlc2VudCB0aGVpciBsYW5ndWFnZS1zcGVjaWZpYyBjb3VudGVycGFydHMuCiAKIEBpdGVt IEBlbXBoe0MvQysrfToKIEBtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjIwIC44MAot QGl0ZW0gQGVtcGh7UHJvdG90eXBlfTogQHRhYiBAY29kZXt2b2lkIG9tcF9kZXN0cm95X25l c3RfbG9jayhvbXBfbmVzdF9sb2NrX3QgKik7fQorQGl0ZW0gQGVtcGh7UHJvdG90eXBlfTog QHRhYiBAY29kZXtpbnQgb21wX3Rlc3RfbG9jayhvbXBfbG9ja190ICpsb2NrKTt9CiBAZW5k IG11bHRpdGFibGUKIAogQGl0ZW0gQGVtcGh7Rm9ydHJhbn06CiBAbXVsdGl0YWJsZSBAY29s dW1uZnJhY3Rpb25zIC4yMCAuODAKLUBpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNv ZGV7c3Vicm91dGluZSBvbXBfZGVzdHJveV9uZXN0X2xvY2sobnZhcil9CitAaXRlbSBAZW1w aHtJbnRlcmZhY2V9OiBAdGFiIEBjb2Rle2xvZ2ljYWwgZnVuY3Rpb24gb21wX3Rlc3RfbG9j ayhzdmFyKX0KK0BpdGVtICAgICAgICAgICAgICAgICAgIEB0YWIgQGNvZGV7aW50ZWdlcihv bXBfbG9ja19raW5kKSwgaW50ZW50KGlub3V0KSA6OiBzdmFyfQorQGVuZCBtdWx0aXRhYmxl CisKK0BpdGVtIEBlbXBoe1NlZSBhbHNvfToKK0ByZWZ7b21wX2luaXRfbG9ja30sIEByZWZ7 b21wX3NldF9sb2NrfSwgQHJlZntvbXBfc2V0X2xvY2t9CisKK0BpdGVtIEBlbXBoe1JlZmVy ZW5jZX06IAorQHVyZWZ7aHR0cHM6Ly93d3cub3Blbm1wLm9yZywgT3Blbk1QIHNwZWNpZmlj YXRpb24gdjQuNX0sIFNlY3Rpb24gMy4zLjYuCitAZW5kIHRhYmxlCisKKworCitAbm9kZSBv bXBfdGVzdF9uZXN0X2xvY2sKK0BzdWJzZWN0aW9uIEBjb2Rle29tcF90ZXN0X25lc3RfbG9j a30gLS0gVGVzdCBhbmQgc2V0IG5lc3RlZCBsb2NrIGlmIGF2YWlsYWJsZQorQHRhYmxlIEBh c2lzCitAaXRlbSBAZW1waHtEZXNjcmlwdGlvbn06CitCZWZvcmUgc2V0dGluZyBhIG5lc3Rl ZCBsb2NrLCB0aGUgbG9jayB2YXJpYWJsZSBtdXN0IGJlIGluaXRpYWxpemVkIGJ5IAorQGNv ZGV7b21wX2luaXRfbmVzdF9sb2NrfS4gIENvbnRyYXJ5IHRvIEBjb2Rle29tcF9zZXRfbmVz dF9sb2NrfSwKK0Bjb2Rle29tcF90ZXN0X25lc3RfbG9ja30gZG9lcyBub3QgYmxvY2sgaWYg dGhlIGxvY2sgaXMgbm90IGF2YWlsYWJsZS4gCitJZiB0aGUgbG9jayBpcyBhbHJlYWR5IGhl bGQgYnkgdGhlIGN1cnJlbnQgdGhyZWFkLCB0aGUgbmV3IG5lc3RpbmcgY291bnQgCitpcyBy ZXR1cm5lZC4gIE90aGVyd2lzZSwgdGhlIHJldHVybiB2YWx1ZSBlcXVhbHMgemVyby4KKwor QGl0ZW0gQGVtcGh7Qy9DKyt9OgorQG11bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuMjAg LjgwCitAaXRlbSBAZW1waHtQcm90b3R5cGV9OiBAdGFiIEBjb2Rle2ludCBvbXBfdGVzdF9u ZXN0X2xvY2sob21wX25lc3RfbG9ja190ICpsb2NrKTt9CitAZW5kIG11bHRpdGFibGUKKwor QGl0ZW0gQGVtcGh7Rm9ydHJhbn06CitAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4y MCAuODAKK0BpdGVtIEBlbXBoe0ludGVyZmFjZX06IEB0YWIgQGNvZGV7bG9naWNhbCBmdW5j dGlvbiBvbXBfdGVzdF9uZXN0X2xvY2sobnZhcil9CiBAaXRlbSAgICAgICAgICAgICAgICAg ICBAdGFiIEBjb2Rle2ludGVnZXIob21wX25lc3RfbG9ja19raW5kKSwgaW50ZW50KGlub3V0 KSA6OiBudmFyfQogQGVuZCBtdWx0aXRhYmxlCiAKKwogQGl0ZW0gQGVtcGh7U2VlIGFsc299 OgotQHJlZntvbXBfaW5pdF9sb2NrfQorQHJlZntvbXBfaW5pdF9sb2NrfSwgQHJlZntvbXBf c2V0X2xvY2t9LCBAcmVme29tcF9zZXRfbG9ja30KIAogQGl0ZW0gQGVtcGh7UmVmZXJlbmNl fTogCi1AdXJlZntodHRwczovL3d3dy5vcGVubXAub3JnLCBPcGVuTVAgc3BlY2lmaWNhdGlv biB2NC41fSwgU2VjdGlvbiAzLjMuMy4KK0B1cmVme2h0dHBzOi8vd3d3Lm9wZW5tcC5vcmcs IE9wZW5NUCBzcGVjaWZpY2F0aW9uIHY0LjV9LCBTZWN0aW9uIDMuMy42LgogQGVuZCB0YWJs ZQogCiAKIAorQG5vZGUgVGltaW5nIFJvdXRpbmVzCitAc2VjdGlvbiBUaW1pbmcgUm91dGlu ZXMKKworUG9ydGFibGUsIHRocmVhZC1iYXNlZCwgd2FsbCBjbG9jayB0aW1lci4KK1RoZSBy b3V0aW5lcyBoYXZlIEMgbGlua2FnZSBhbmQgZG8gbm90IHRocm93IGV4Y2VwdGlvbnMuCisK K0BtZW51CisqIG9tcF9nZXRfd3RpY2s6OiAgICAgICAgICAgIEdldCB0aW1lciBwcmVjaXNp b24uCisqIG9tcF9nZXRfd3RpbWU6OiAgICAgICAgICAgIEVsYXBzZWQgd2FsbCBjbG9jayB0 aW1lLgorQGVuZCBtZW51CisKKworCiBAbm9kZSBvbXBfZ2V0X3d0aWNrCi1Ac2VjdGlvbiBA Y29kZXtvbXBfZ2V0X3d0aWNrfSAtLSBHZXQgdGltZXIgcHJlY2lzaW9uCitAc3Vic2VjdGlv biBAY29kZXtvbXBfZ2V0X3d0aWNrfSAtLSBHZXQgdGltZXIgcHJlY2lzaW9uCiBAdGFibGUg QGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKIEdldHMgdGhlIHRpbWVyIHByZWNp c2lvbiwgaS5lLiwgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gdHdvIApAQCAtMTg3 NCw3ICsxOTk4LDcgQEAgc3VjY2Vzc2l2ZSBjbG9jayB0aWNrcy4KIAogCiBAbm9kZSBvbXBf Z2V0X3d0aW1lCi1Ac2VjdGlvbiBAY29kZXtvbXBfZ2V0X3d0aW1lfSAtLSBFbGFwc2VkIHdh bGwgY2xvY2sgdGltZQorQHN1YnNlY3Rpb24gQGNvZGV7b21wX2dldF93dGltZX0gLS0gRWxh cHNlZCB3YWxsIGNsb2NrIHRpbWUKIEB0YWJsZSBAYXNpcwogQGl0ZW0gQGVtcGh7RGVzY3Jp cHRpb259OgogRWxhcHNlZCB3YWxsIGNsb2NrIHRpbWUgaW4gc2Vjb25kcy4gIFRoZSB0aW1l IGlzIG1lYXN1cmVkIHBlciB0aHJlYWQsIG5vCkBAIC0xOTAxLDggKzIwMjUsMjAgQEAgZ3Vh cmFudGVlZCBub3QgdG8gY2hhbmdlIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBwcm9n cmFtLgogCiAKIAorQG5vZGUgRXZlbnQgUm91dGluZQorQHNlY3Rpb24gRXZlbnQgUm91dGlu ZQorCitTdXBwb3J0IGZvciBldmVudCBvYmplY3RzLgorVGhlIHJvdXRpbmUgaGFzIEMgbGlu a2FnZSBhbmQgZG8gbm90IHRocm93IGV4Y2VwdGlvbnMuCisKK0BtZW51CisqIG9tcF9mdWxm aWxsX2V2ZW50OjogICAgICAgIEZ1bGZpbGwgYW5kIGRlc3Ryb3kgYW4gT3Blbk1QIGV2ZW50 LgorQGVuZCBtZW51CisKKworCiBAbm9kZSBvbXBfZnVsZmlsbF9ldmVudAotQHNlY3Rpb24g QGNvZGV7b21wX2Z1bGZpbGxfZXZlbnR9IC0tIEZ1bGZpbGwgYW5kIGRlc3Ryb3kgYW4gT3Bl bk1QIGV2ZW50CitAc3Vic2VjdGlvbiBAY29kZXtvbXBfZnVsZmlsbF9ldmVudH0gLS0gRnVs ZmlsbCBhbmQgZGVzdHJveSBhbiBPcGVuTVAgZXZlbnQKIEB0YWJsZSBAYXNpcwogQGl0ZW0g QGVtcGh7RGVzY3JpcHRpb259OgogRnVsZmlsbCB0aGUgZXZlbnQgYXNzb2NpYXRlZCB3aXRo IHRoZSBldmVudCBoYW5kbGUgYXJndW1lbnQuICBDdXJyZW50bHksIGl0CkBAIC0xOTMxLDYg KzIwNjcsNTcgQEAgZXZlbnQgaGFuZGxlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBmdWxmaWxs ZWQgaXMgYWxzbyB1bmRlZmluZWQuCiAKIAogCitAYyBAbm9kZSBJbnRlcm9wZXJhYmlsaXR5 IFJvdXRpbmVzCitAYyBAc2VjdGlvbiBJbnRlcm9wZXJhYmlsaXR5IFJvdXRpbmVzCitAYwor QGMgUm91dGluZXMgdG8gb2J0YWluIHByb3BlcnRpZXMgZnJvbSBhbiBAY29kZXtvbXBfaW50 ZXJvcF90fSBvYmplY3QuCitAYyBUaGV5IGhhdmUgQyBsaW5rYWdlIGFuZCBkbyBub3QgdGhy b3cgZXhjZXB0aW9ucy4KK0BjCitAYyBAbWVudQorQGMgKiBvbXBfZ2V0X251bV9pbnRlcm9w X3Byb3BlcnRpZXM6OiA8Zml4bWU+CitAYyAqIG9tcF9nZXRfaW50ZXJvcF9pbnQ6OiA8Zml4 bWU+CitAYyAqIG9tcF9nZXRfaW50ZXJvcF9wdHI6OiA8Zml4bWU+CitAYyAqIG9tcF9nZXRf aW50ZXJvcF9zdHI6OiA8Zml4bWU+CitAYyAqIG9tcF9nZXRfaW50ZXJvcF9uYW1lOjogPGZp eG1lPgorQGMgKiBvbXBfZ2V0X2ludGVyb3BfdHlwZV9kZXNjOjogPGZpeG1lPgorQGMgKiBv bXBfZ2V0X2ludGVyb3BfcmNfZGVzYzo6IDxmaXhtZT4KK0BjIEBlbmQgbWVudQorCitAYyBA bm9kZSBNZW1vcnkgTWFuYWdlbWVudCBSb3V0aW5lcworQGMgQHNlY3Rpb24gTWVtb3J5IE1h bmFnZW1lbnQgUm91dGluZXMKK0BjCitAYyBSb3V0aW5lcyB0byBtYW5hZ2UgYW5kIGFsbG9j YXRlIG1lbW9yeSBvbiB0aGUgY3VycmVudCBkZXZpY2UuCitAYyBUaGV5IGhhdmUgQyBsaW5r YWdlIGFuZCBkbyBub3QgdGhyb3cgZXhjZXB0aW9ucy4KK0BjCitAYyBAbWVudQorQGMgKiBv bXBfaW5pdF9hbGxvY2F0b3I6OiA8Zml4bWU+CitAYyAqIG9tcF9kZXN0cm95X2FsbG9jYXRv cjo6IDxmaXhtZT4KK0BjICogb21wX3NldF9kZWZhdWx0X2FsbG9jYXRvcjo6IDxmaXhtZT4K K0BjICogb21wX2dldF9kZWZhdWx0X2FsbG9jYXRvcjo6IDxmaXhtZT4KK0BjICogb21wX2Fs bG9jOjogPGZpeG1lPgorQGMgKiBvbXBfYWxpZ25lZF9hbGxvYzo6IDxmaXhtZT4KK0BjICog b21wX2ZyZWU6OiA8Zml4bWU+CitAYyAqIG9tcF9jYWxsb2M6OiA8Zml4bWU+CitAYyAqIG9t cF9hbGlnbmVkX2NhbGxvYzo6IDxmaXhtZT4KK0BjICogb21wX3JlYWxsb2M6OiA8Zml4bWU+ CitAYyAqIG9tcF9nZXRfbWVtc3BhY2VfbnVtX3Jlc291cmNlczo6IDxmaXhtZT4vVFIxMQor QGMgKiBvbXBfZ2V0X3N1Ym1lbXNwYWNlOjogPGZpeG1lPi9UUjExCitAYyBAZW5kIG1lbnUK KworQGMgQG5vZGUgVG9vbCBDb250cm9sIFJvdXRpbmUKK0BjCitAYyBGSVhNRQorCitAYyBA bm9kZSBFbnZpcm9ubWVudCBEaXNwbGF5IFJvdXRpbmUKK0BjIEBzZWN0aW9uIEVudmlyb25t ZW50IERpc3BsYXkgUm91dGluZQorQGMKK0BjIFJvdXRpbmUgdG8gZGlzcGxheSB0aGUgT3Bl bk1QIG51bWJlciBhbmQgdGhlIGluaXRpYWwgdmFsdWUgb2YgSUNWcy4KK0BjIEl0IGhhcyBD IGxpbmthZ2UgYW5kIGRvIG5vdCB0aHJvdyBleGNlcHRpb25zLgorQGMKK0BjIG1lbnUKK0Bj ICogb21wX2Rpc3BsYXlfZW52OjogPGZpeG1lPgorQGMgZW5kIG1lbnUKKwogQGMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiBAYyBPcGVuTVAgRW52aXJvbm1lbnQgVmFyaWFibGVzCiBAYyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KQEAgLTIwNTYsNyArMjI0Myw3IEBAIEV4YW1wbGVzOgogQHNtYWxsZXhhbXBs ZQogT01QX0FMTE9DQVRPUj1vbXBfaGlnaF9id19tZW1fYWxsb2MKIE9NUF9BTExPQ0FUT1I9 b21wX2xhcmdlX2NhcF9tZW1fc3BhY2UKLU9NUF9BTExPQ0FUUj1vbXBfbG93X2xhdF9tZW1f c3BhY2U6cGlubmVkPXRydWUscGFydGl0aW9uPW5lYXJlc3QKK09NUF9BTExPQ0FUT1I9b21w X2xvd19sYXRfbWVtX3NwYWNlOnBpbm5lZD10cnVlLHBhcnRpdGlvbj1uZWFyZXN0CiBAZW5k IHNtYWxsZXhhbXBsZQogCiBAaXRlbSBAZW1waHtTZWUgYWxzb306Cg== --------------9rirenD4qwFwoFUvxckGGgwO--