Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rpGO4-005sz3-Si for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Mar 2024 23:39:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rpGO3-007Z7E-NR for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Mar 2024 23:39:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rpGO2-007Z74-VZ for pgsql-hackers@lists.postgresql.org; Tue, 26 Mar 2024 23:39:23 +0000 Received: from mail-yb1-xb31.google.com ([2607:f8b0:4864:20::b31]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rpGNy-006fGI-Th for pgsql-hackers@lists.postgresql.org; Tue, 26 Mar 2024 23:39:22 +0000 Received: by mail-yb1-xb31.google.com with SMTP id 3f1490d57ef6-dcbc6a6808fso5867142276.2 for ; Tue, 26 Mar 2024 16:39:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711496357; x=1712101157; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=667nT7Z/f5Tu2ZJ7Xlv5zXaDUyE3RxGGELZNUlcUJco=; b=bdYbzSogWK/HpsjtbR6zb1l0cI5TtiDkArN3C8QErupgfAR4de6qO/mkChT/z72PmR Hxw9/8eOJoAz8Selzhz8pBHuWt8AmaboHgxvKXAtTqui2uXl2qDMnqM1VRfaHPRnN9/7 CSAhSRzXVHobRDU73KdIQGQ6/4VCya2cB9fLHg2o3HuEX12F70K1SHN32zmO1OxMgqJj jJpdT8AukcAuJqFtsfwjOcGncpWxMEA72HxmaOoReVe6d2zwAknQU/fCgq+Ilgq/6pjv +IeFaLMq2ga+c07Ubwed4/WhlA4tYXxm2G98haZPbJv1KteMwqd3x8pNM7yjSJmv28EB /0aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711496357; x=1712101157; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=667nT7Z/f5Tu2ZJ7Xlv5zXaDUyE3RxGGELZNUlcUJco=; b=myr0DH7crpszelx9+vk3Q6fY7J2VRf6DLOI/5FkAy0lK8Br8AfXNspJKYfXuYXbSpM 0eNlMEzPsf6oFWQFkO/3ZN5/0nYNzF66dT3sLH9MNFRQV+bKVARMq73cgun4Ha0nCnYB rqIXirn8deYy4EtV6v7uOnox8KhBR+48NVCAWldidvsLi+MDid6rXQ7xGZvtExU9yStO /o4mjjjsX/YkVBH018GXG41+ACeKeOzXoU5azVxNCS43V+laG39pbcEWxyZ7igMew6PA 63/Ll6qZjS70YkRCxrLttm7nFtKGk98f5RFECBOZ3MZDxM8K1Jb1hmA+fYr6uxWJSHcs A/Iw== X-Forwarded-Encrypted: i=1; AJvYcCWPdHXDG9JhVGfXm8ca+hyDd8to5IaLbAeqDraWG2fBLaRFtr7UwijjgAWa2Vo1Ht1fc16jvyHVKC/ZU+UH6qtRTLrnbzZ3xGWeI4wi/eft44pj X-Gm-Message-State: AOJu0Ywa6THxBz6WWDLyxKv8VoOUv674mj6tc3d6PuclLaooAD/E5py2 W5dyoCbg3eOK2CUdshVr6OVVQD8NvTy5yEt0cVIsZtSApPHVfPASkaMuUo9+l5v3gV554W1/l60 fgo8q2TcGeNXfTxIDtGFW4EgBWnA= X-Google-Smtp-Source: AGHT+IF/v9iH8j05kMxm6w9JKOQNXEISOaeb40clbVOEJaoCStRILyrP8jnwCXP5mj8NrstkEBPBx+jmfkgkJdv4OGY= X-Received: by 2002:a25:a2c5:0:b0:dcc:467c:cecb with SMTP id c5-20020a25a2c5000000b00dcc467ccecbmr9379427ybn.37.1711496356965; Tue, 26 Mar 2024 16:39:16 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <171085858750.2046434.12246066729700037354.pgcf@coridan.postgresql.org> <909e16b4-9eda-435c-b033-8294ae4adc05@postgrespro.ru> In-Reply-To: <909e16b4-9eda-435c-b033-8294ae4adc05@postgrespro.ru> From: Alexander Korotkov Date: Wed, 27 Mar 2024 01:39:04 +0200 Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: stephane tachoires , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000006456fe061498cc66" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006456fe061498cc66 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 19, 2024 at 4:43=E2=80=AFPM Dmitry Koval wrote: > Thanks for info! > I was unable to reproduce the problem and I wanted to ask for > clarification. But your message was ahead of my question. I've revised the patchset. I mostly did some refactoring, code improvements and wrote new comments. If I apply just the first two patches, I get the same error as [1]. This error happens when createPartitionTable() tries to copy the identity of another partition. I've fixed that by skipping a copy of the identity of another partition (remove CREATE_TABLE_LIKE_IDENTITY from TableLikeClause.options). BTW, the same error happened to me when I manually ran CREATE TABLE ... (LIKE ... INCLUDING IDENTITY) for a partition of the table with identity. So, this probably deserves a separate fix, but I think not directly related to this patch. I have one question. When merging partitions you're creating a merged partition like the parent table. But when splitting a partition you're creating new partitions like the partition being split. What motivates this difference? Links. 1. https://www.postgresql.org/message-id/171085360143.2046436.7217841141682= 511557.pgcf%40coridan.postgresql.org ------ Regards, Alexander Korotkov --0000000000006456fe061498cc66 Content-Type: application/octet-stream; name="0003-Documentation-for-ALTER-TABLE-SPLIT-PARTITION-ME-v26.patch" Content-Disposition: attachment; filename="0003-Documentation-for-ALTER-TABLE-SPLIT-PARTITION-ME-v26.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu90dgne2 RnJvbSA2MzQ0YWZiOGZmMTM5MDM3ZjMyNTg4MzViYzg2ZGY1MzcxZDYyYTdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNwcm8ucnU+ CkRhdGU6IFR1ZSwgMjggTWFyIDIwMjMgMTA6NTA6MTkgKzAzMDAKU3ViamVjdDogW1BBVENIIDMv NF0gRG9jdW1lbnRhdGlvbiBmb3IgQUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OL01FUkdFCiBQ QVJUSVRJT05TIGNvbW1hbmRzCgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dt bCB8IDEyNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAx MjEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNn bWwKaW5kZXggNmNkY2Q3NzllZjguLjM1YTBkOTE0OTE3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sCkBAIC0zNyw2ICszNywxMyBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBVFRBQ0gg UEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwv cmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfQogQUxURVIgVEFC TEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+CiAgICAgREVUQUNIIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBbIENPTkNVUlJFTlRMWSB8IEZJTkFM SVpFIF0KK0FMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorICAgIFNQTElUIFBBUlRJVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJTlRPCisg ICAgICAgIChQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lMTwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSwK KyAgICAgICAgIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0 aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9 IFssIC4uLl0pCitBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICBNRVJHRSBQQVJUSVRJT05TICg8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4s IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2Vh YmxlPiBbLCAuLi5dKQorICAgICAgICBJTlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjdGlvbjwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3Bo cmFzZT4KIApAQCAtMTExOCwxNCArMTEyNSw5OSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBp ZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFydGl0aW9uIj4KKyAgICA8dGVybT48bGl0ZXJhbD5T UExJVCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lPC9yZXBsYWNlYWJsZT4gSU5UTyAoUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJs ZT4gfCBERUZBVUxUIH0sIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVG QVVMVCB9IFssIC4uLl0pPC9saXRlcmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBUaGlzIGZvcm0gc3BsaXQgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSB0 YXJnZXQgdGFibGUuIEhhc2gtcGFydGl0aW9uaW5nCisgICAgICBpcyBub3Qgc3VwcG9ydGVkLiBC b3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFuZAor ICAgICAgZXhpc3RpbmcgcGFydGl0aW9ucyAoZXhjZXB0IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+KS4KKyAgICAgIElmIHRoZSBzcGxp dCBwYXJ0aXRpb24gaXMgREVGQVVMVCBwYXJ0aXRpb24sIG9uZSBvZiBuZXcgcGFydGl0aW9ucyBt dXN0IGJlIERFRkFVTFQuCisgICAgICBJbiBjYXNlIG9uZSBvZiBuZXcgcGFydGl0aW9ucyBvciBv bmUgb2YgZXhpc3RpbmcgcGFydGl0aW9ucyBpcyBERUZBVUxULAorICAgICAgbmV3IHBhcnRpdGlv bnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFj ZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gY2FuIGhhdmUgc3BhY2VzCisgICAgICBiZXR3ZWVuIHBh cnRpdGlvbnMgYm91bmRzLiAgSWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90IGhhdmUg YSBERUZBVUxUCisgICAgICBwYXJ0aXRpb24sIHRoZSBERUZBVUxUIHBhcnRpdGlvbiBjYW4gYmUg ZGVmaW5lZCBhcyBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zLgorICAgICA8L3BhcmE+CisgICAg IDxwYXJhPgorICAgICAgSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBkbyBub3QgY29udGFpbnMgREVG QVVMVCBwYXJ0aXRpb24gYW5kIHRoZSBwYXJ0aXRpb25lZCB0YWJsZQorICAgICAgZG9lcyBub3Qg aGF2ZSBhIERFRkFVTFQgcGFydGl0aW9uLCB0aGUgZm9sbG93aW5nIG11c3QgYmUgdHJ1ZTogc3Vt IGJvdW5kcyBvZgorICAgICAgbmV3IHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gc2hv dWxkIGJlCisgICAgICBlcXVhbCB0byBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAg ICBPbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiwgLi4uIGNhbiBoYXZl CisgICAgICB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgKHRoaXMg aXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxpdHRpbmcgYSBERUZBVUxUIHBhcnRpdGlvbjogd2Ug c3BsaXQgaXQsIGJ1dCBhZnRlcgorICAgICAgc3BsaXR0aW5nIHdlIGhhdmUgYSBwYXJ0aXRpb24g d2l0aCB0aGUgc2FtZSBuYW1lKS4KKyAgICAgIE9ubHkgc2ltcGxlLCBub24tcGFydGl0aW9uZWQg cGFydGl0aW9uIGNhbiBiZSBzcGxpdC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUt bWVyZ2UtcGFydGl0aW9ucyI+CisgICAgPHRlcm0+PGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUyAo PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFi bGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBs YWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+CisKKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIG1lcmdlIHNldmVyYWwgcGFydGl0aW9u cyBpbnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZS4KKyAgICAgIEhhc2gtcGFy dGl0aW9uaW5nIGlzIG5vdCBzdXBwb3J0ZWQuICBJZiBERUZBVUxUIHBhcnRpdGlvbiBpcyBub3Qg aW4gdGhlCisgICAgICBsaXN0IG9mIHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl06 CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+ CisgICAgICAgICBGb3IgcmFuZ2UtcGFydGl0aW9uZWQgdGFibGVzIGlzIG5lY2Vzc2FyeSB0aGF0 IHRoZSByYW5nZXMKKyAgICAgICAgIG9mIHRoZSBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxl PiBbLCAuLi5dIGNhbgorICAgICAgICAgYmUgbWVyZ2VkIGludG8gb25lIHJhbmdlIHdpdGhvdXQg c3BhY2VzIGFuZCBvdmVybGFwcyAob3RoZXJ3aXNlIGFuIGVycm9yCisgICAgICAgICB3aWxsIGJl IGdlbmVyYXRlZCkuICBUaGUgY29tYmluZWQgcmFuZ2Ugd2lsbCBiZSB0aGUgcmFuZ2UgZm9yIHRo ZSBwYXJ0aXRpb24KKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRm9yIGxp c3QtcGFydGl0aW9uZWQgdGFibGVzIHRoZSB2YWx1ZXMgbGlzdHMgb2YgYWxsIHBhcnRpdGlvbnMK KyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8 L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIGFyZQorICAgICAgICAgY29tYmlu ZWQgYW5kIGZvcm0gYSBsaXN0IG9mIHZhbHVlcyBvZiBwYXJ0aXRpb24KKyAgICAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+Lgor ICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0 PgorICAgICAgSWYgREVGQVVMVCBwYXJ0aXRpb24gaXMgaW4gdGhlIGxpc3Qgb2YgcGFydGl0aW9u cyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNl YWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXToKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAg PGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBwYXJ0aXRpb24gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAg ICAgICAgIHdpbGwgYmUgdGhlIERFRkFVTFQgcGFydGl0aW9uLgorICAgICAgICA8L3BhcmE+Cisg ICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAg ICAgICAgRm9yIHJhbmdlLSBhbmQgbGlzdC1wYXJ0aXRpb25lZCB0YWJsZXMgdGhlIHJhbmdlcyBh bmQgbGlzdHMgb2YgdmFsdWVzCisgICAgICAgICBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMgY2Fu IGJlIGFueS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0 ZW1pemVkbGlzdD4KKyAgICAgIFRoZSBuZXcgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICBjYW4gaGF2ZSB0 aGUgc2FtZSBuYW1lIGFzIG9uZSBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMuICBPbmx5IHNpbXBs ZSwKKyAgICAgIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb25zIGNhbiBiZSBtZXJnZWQuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgPC92YXJp YWJsZWxpc3Q+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KICAgIEFsbCB0aGUgZm9ybXMgb2YgQUxU RVIgVEFCTEUgdGhhdCBhY3Qgb24gYSBzaW5nbGUgdGFibGUsIGV4Y2VwdAogICAgPGxpdGVyYWw+ UkVOQU1FPC9saXRlcmFsPiwgPGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD4sCi0gICA8bGl0 ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwgYW5kCi0gICA8bGl0ZXJhbD5ERVRBQ0gg UEFSVElUSU9OPC9saXRlcmFsPiBjYW4gYmUgY29tYmluZWQgaW50bworICAgPGxpdGVyYWw+QVRU QUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVy YWw+LAorICAgPGxpdGVyYWw+U1BMSVQgUEFSVElUSU9OPC9saXRlcmFsPiwgYW5kIDxsaXRlcmFs Pk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+CisgICBjYW4gYmUgY29tYmluZWQgaW50bwogICAg YSBsaXN0IG9mIG11bHRpcGxlIGFsdGVyYXRpb25zIHRvIGJlIGFwcGxpZWQgdG9nZXRoZXIuICBG b3IgZXhhbXBsZSwgaXQKICAgIGlzIHBvc3NpYmxlIHRvIGFkZCBzZXZlcmFsIGNvbHVtbnMgYW5k L29yIGFsdGVyIHRoZSB0eXBlIG9mIHNldmVyYWwKICAgIGNvbHVtbnMgaW4gYSBzaW5nbGUgY29t bWFuZC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aXRoIGxhcmdlCkBAIC0xMzY4LDcg KzE0NjAsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgPHRlcm0+PHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBuYW1lIG9mIHRo ZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRo aXMgdGFibGUuCisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBu ZXcgcGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCisgICAgICAgIG9yIHRo ZSBuYW1lIG9mIHNwbGl0IHBhcnRpdGlvbiwgb3IgdGhlIG5hbWUgb2YgdGhlIG5ldyBtZXJnZWQg cGFydGl0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFy bGlzdGVudHJ5PgpAQCAtMTc4NCw2ICsxODc3LDMxIEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50 CiAgICAgREVUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAxNW0xMjsKIDwvcHJvZ3JhbWxp c3Rpbmc+PC9wYXJhPgogCisgIDxwYXJhPgorICAgVG8gc3BsaXQgYSBzaW5nbGUgcGFydGl0aW9u IG9mIHRoZSByYW5nZS1wYXJ0aXRpb25lZCB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjMg SU5UTworICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMt MDItMDEnKSBUTyAoJzIwMjMtMDMtMDEnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMyBG T1IgVkFMVUVTIEZST00gKCcyMDIzLTAzLTAxJykgVE8gKCcyMDIzLTA0LTAxJyksCisgICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjMgRk9SIFZBTFVFUyBGUk9NICgnMjAyMy0wNC0wMScpIFRPICgn MjAyMy0wNS0wMScpKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxwYXJhPgorICAg VG8gc3BsaXQgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSBsaXN0LXBhcnRpdGlvbmVkIHRhYmxl OgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJ T04gc2FsZXNfYWxsIElOVE8KKyAgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElO ICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAgIFBBUlRJVElPTiBzYWxl c19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0 b2snKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293 JywgJ0themFuJywgJ1ZvbGdvZ3JhZCcpKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisg IDxwYXJhPgorICAgVG8gbWVyZ2Ugc2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gb25lIHBhcnRpdGlv biBvZiB0aGUgdGFyZ2V0IHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2Fs ZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19j ZW50cmFsKQorICAgIElOVE8gc2FsZXNfYWxsOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisK ICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgotLSAKMi4zOS4zIChBcHBsZSBHaXQtMTQ1KQoK --0000000000006456fe061498cc66 Content-Type: application/octet-stream; name="0004-SPLIT-PARTITION-optimization-v26.patch" Content-Disposition: attachment; filename="0004-SPLIT-PARTITION-optimization-v26.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu90dgnf3 RnJvbSA0YWM5ZDc2MWYxOTc1MDhkYmEyMTMyNjUyNTliODZhODU5OTg5ZGI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNwcm8ucnU+ CkRhdGU6IFRodSwgMjYgT2N0IDIwMjMgMDM6MzU6MjQgKzAzMDAKU3ViamVjdDogW1BBVENIIDQv NF0gU1BMSVQgUEFSVElUSU9OIG9wdGltaXphdGlvbgoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCA2NzcgKysrKysrKysrKysrKy0tLS0tCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgfCAzMDcgKysrKysrKysK IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgICAgICB8IDE1MiArKysr CiAzIGZpbGVzIGNoYW5nZWQsIDk3NCBpbnNlcnRpb25zKCspLCAxNjIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBlZjk0NGUzNzMzYi4uOGQ0NTg1MWMzYjcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMDg3NiwyMCArMjA4NzYsNDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgU3BsaXRQYXJ0aXRpb25Db250ZXh0CiAJQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7 CS8qIHN0YXRlIG9mIGJ1bGsgaW5zZXJ0cyBmb3IgcGFydGl0aW9uICovCiAJVHVwbGVUYWJsZVNs b3QgKmRzdHNsb3Q7CS8qIHNsb3QgZm9yIGluc2VydCByb3cgaW50byBwYXJ0aXRpb24gKi8KIAlS ZWxhdGlvbglwYXJ0UmVsOwkJLyogcmVsYXRpb24gZm9yIHBhcnRpdGlvbiAqLworCVNpbmdsZVBh cnRpdGlvblNwZWMgKnNwczsJLyogaW5mbyBhYm91dCBzaW5nbGUgcGFydGl0aW9uIChmcm9tIFNR TAorCQkJCQkJCQkgKiBjb21tYW5kKSAqLwogfSBTcGxpdFBhcnRpdGlvbkNvbnRleHQ7CiAKKy8q CisgKiBTdHJ1Y3Qgd2l0aCBjb250ZXh0IG9mIFNQTElUIFBBUlRJVElPTiBvcGVyYXRpb24KKyAq LwordHlwZWRlZiBzdHJ1Y3QgU3BsaXRJbmZvCit7CisJUGFydGl0aW9uQ21kICpjbWQ7CQkJLyog U1BMSVQgUEFSVElUSU9OIGNvbW1hbmQgaW5mbyAqLworCisJUmVsYXRpb24JcmVsOwkJCS8qIHBh cnRpdGlvbmVkIHRhYmxlICovCisJUmVsYXRpb24Jc3BsaXRSZWw7CQkvKiBzcGxpdCBwYXJ0aXRp b24gKi8KKworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOyAvKiBpZGVudGlmaWVyIG9mIERFRkFVTFQt cGFydGl0aW9uIGluIHJlbCAoaWYKKwkJCQkJCQkJICogZXhpc3RzKSAqLworCUxpc3QJICAgKnBh cnRDb250ZXh0czsJLyogbGlzdCBvZiBzdHJ1Y3RzIFNwbGl0UGFydGl0aW9uQ29udGV4dCAoZWFj aAorCQkJCQkJCQkgKiBzdHJ1Y3QgZm9yIGVhY2ggbmV3IHBhcnRpdGlvbikgKi8KKwlTcGxpdFBh cnRpdGlvbkNvbnRleHQgKmRlZmF1bHRQYXJ0Q3R4OwkvKiBwb2ludGVyIHRvIERFRkFVTFQtcGFy dGl0aW9uIGluCisJCQkJCQkJCQkJCSAqIHBhcnRDb250ZXh0cyBsaXN0IChpZiBleGlzdHMpICov CisJRVN0YXRlCSAgICplc3RhdGU7CQkJLyogd29ya2luZyBzdGF0ZSAqLworfQkJCVNwbGl0SW5m bzsKIAogLyoKLSAqIGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dDogY3JlYXRlIGNvbnRleHQg Zm9yIHBhcnRpdGlvbiBhbmQgZmlsbCBpdAorICogY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0 OiBjcmVhdGUgY29udGV4dCBmb3IgcGFydGl0aW9uCiAgKi8KIHN0YXRpYyBTcGxpdFBhcnRpdGlv bkNvbnRleHQgKgotY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFJlbGF0aW9uIHBhcnRSZWwp CitjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoU2luZ2xlUGFydGl0aW9uU3BlYyAqIHNwcykK IHsKLQlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjOworCVNwbGl0UGFydGl0aW9uQ29udGV4dCAq cGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIHBhbGxvYzAoc2l6ZW9mKFNwbGl0UGFydGl0 aW9uQ29udGV4dCkpOwogCi0JcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIHBhbGxvYzAo c2l6ZW9mKFNwbGl0UGFydGl0aW9uQ29udGV4dCkpOwotCXBjLT5wYXJ0UmVsID0gcGFydFJlbDsK KwlwYy0+c3BzID0gc3BzOworCXJldHVybiBwYzsKK30KIAorLyoKKyAqIGZpbGxTcGxpdFBhcnRp dGlvbkNvbnRleHQ6IGZpbGwgcGFydGl0aW9uIGNvbnRleHQKKyAqLworc3RhdGljIHZvaWQKK2Zp bGxTcGxpdFBhcnRpdGlvbkNvbnRleHQoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICogcGMpCit7CiAJ LyoKIAkgKiBQcmVwYXJlIGEgQnVsa0luc2VydFN0YXRlIGZvciB0YWJsZV90dXBsZV9pbnNlcnQu IFRoZSBGU00gaXMgZW1wdHksIHNvCiAJICogZG9uJ3QgYm90aGVyIHVzaW5nIGl0LgpAQCAtMjA5 MDAsNjcgKzIwOTI3LDY2IEBAIGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChSZWxhdGlvbiBw YXJ0UmVsKQogCXBjLT5kc3RzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9u R2V0RGVzY3IocGMtPnBhcnRSZWwpLAogCQkJCQkJCQkJCSAgIHRhYmxlX3Nsb3RfY2FsbGJhY2tz KHBjLT5wYXJ0UmVsKSk7CiAJRXhlY1N0b3JlQWxsTnVsbFR1cGxlKHBjLT5kc3RzbG90KTsKLQot CXJldHVybiBwYzsKIH0KIAogLyoKICAqIGRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dDogZGVs ZXRlIGNvbnRleHQgZm9yIHBhcnRpdGlvbgogICovCiBzdGF0aWMgdm9pZAotZGVsZXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0KFNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGMsIGludCB0aV9vcHRpb25z KQorZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGMp CiB7Ci0JRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChwYy0+ZHN0c2xvdCk7Ci0JRnJlZUJ1 bGtJbnNlcnRTdGF0ZShwYy0+YmlzdGF0ZSk7CisJaWYgKHBjLT5kc3RzbG90KQorCQlFeGVjRHJv cFNpbmdsZVR1cGxlVGFibGVTbG90KHBjLT5kc3RzbG90KTsKKworCWlmIChwYy0+YmlzdGF0ZSkK Kwl7CisJCS8qIFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4gKi8K KwkJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKIAotCXRhYmxlX2Zp bmlzaF9idWxrX2luc2VydChwYy0+cGFydFJlbCwgdGlfb3B0aW9ucyk7CisJCUZyZWVCdWxrSW5z ZXJ0U3RhdGUocGMtPmJpc3RhdGUpOworCQl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQocGMtPnBh cnRSZWwsIHRpX29wdGlvbnMpOworCX0KIAogCXBmcmVlKHBjKTsKIH0KIAogLyoKLSAqIG1vdmVT cGxpdFRhYmxlUm93czogc2NhbiBzcGxpdCBwYXJ0aXRpb24gKHNwbGl0UmVsKSBvZiBwYXJ0aXRp b25lZCB0YWJsZQotICogKHJlbCkgYW5kIG1vdmUgcm93cyBpbnRvIG5ldyBwYXJ0aXRpb25zLgor ICogY3JlYXRlU3BsaXRJbmZvOiBjcmVhdGUgU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQgY29udGV4 dCwgY29udGV4dHMgZm9yIG5ldworICoJCQkJCXBhcnRpdGlvbnMgYW5kIGdlbmVyYXRlIGNvbnN0 cmFpbnRzIGZvciB0aGVtLgorICoJCQkJCVdlIG5lZWQgdG8gdXNlIGNvbnN0cmFpbnRzIGZvciBv cHRpbWl6YXRpb24uCiAgKgotICogTmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb246Ci0gKiBwYXJ0 bGlzdDogbGlzdCBvZiBwb2ludGVycyB0byBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVjdHVyZXMu Ci0gKiBuZXdQYXJ0UmVsczogbGlzdCBvZiBSZWxhdGlvbidzLgorICogY21kOiBTUExJVCBQQVJU SVRJT04gY29tbWFuZCBpbmZvLgorICogcmVsOiBwYXJ0aXRpb25lZCB0YWJsZS4KKyAqIHNwbGl0 UmVsOiBzcGxpdCBwYXJ0aXRpb24uCiAgKiBkZWZhdWx0UGFydE9pZDogb2lkIG9mIERFRkFVTFQg cGFydGl0aW9uLCBmb3IgdGFibGUgcmVsLgogICovCi1zdGF0aWMgdm9pZAotbW92ZVNwbGl0VGFi bGVSb3dzKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsIExpc3QgKnBhcnRsaXN0LCBM aXN0ICpuZXdQYXJ0UmVscywgT2lkIGRlZmF1bHRQYXJ0T2lkKQorc3RhdGljIFNwbGl0SW5mbyAq CitjcmVhdGVTcGxpdEluZm8oUGFydGl0aW9uQ21kICpjbWQsIFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gc3BsaXRSZWwsCisJCQkJT2lkIGRlZmF1bHRQYXJ0T2lkKQogewotCS8qIFRoZSBGU00gaXMg ZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4gKi8KLQlpbnQJCQl0aV9vcHRpb25zID0g VEFCTEVfSU5TRVJUX1NLSVBfRlNNOwotCUNvbW1hbmRJZAlteWNpZDsKLQlFU3RhdGUJICAgKmVz dGF0ZTsKLQlMaXN0Q2VsbCAgICpsaXN0cHRyLAotCQkJICAgKmxpc3RwdHIyOwotCVR1cGxlVGFi bGVTbG90ICpzcmNzbG90OwotCUV4cHJDb250ZXh0ICplY29udGV4dDsKLQlUYWJsZVNjYW5EZXNj IHNjYW47Ci0JU25hcHNob3QJc25hcHNob3Q7Ci0JTWVtb3J5Q29udGV4dCBvbGRDeHQ7CiAJTGlz dAkgICAqcGFydENvbnRleHRzID0gTklMOwotCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFw OwotCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAotCQkJICAg KnBjOwotCWJvb2wJCWlzT2xkRGVmYXVsdFBhcnQgPSBmYWxzZTsKKwlTcGxpdEluZm8gICpzaTsK KwlMaXN0Q2VsbCAgICpsaXN0cHRyOwogCi0JbXljaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRy dWUpOworCXNpID0gKFNwbGl0SW5mbyAqKSBwYWxsb2MwKHNpemVvZihTcGxpdEluZm8pKTsKIAot CWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKwlzaS0+Y21kID0gY21kOworCXNpLT5y ZWwgPSByZWw7CisJc2ktPnNwbGl0UmVsID0gc3BsaXRSZWw7CiAKLQlmb3Jib3RoKGxpc3RwdHIs IHBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJc2ktPmRlZmF1bHRQYXJ0T2lkID0g ZGVmYXVsdFBhcnRPaWQ7CisJc2ktPmVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKwor CS8qIENyZWF0ZSBjb250ZXh0IGZvciBlYWNoIG5ldyBwYXJ0aXRpb24gYW5kIGZpbGwgaXQuICov CisJZm9yZWFjaChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0KQogCXsKIAkJU2luZ2xlUGFydGl0aW9u U3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOwotCi0J CXBjID0gY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KChSZWxhdGlvbikgbGZpcnN0KGxpc3Rw dHIyKSk7CisJCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGMgPSBjcmVhdGVTcGxpdFBhcnRpdGlv bkNvbnRleHQoc3BzKTsKIAogCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKIAkJewogCQkJ LyogV2Ugc2hvdWxkIG5vdCBjcmVhdGUgY29uc3RyYWludCBmb3IgZGV0YWNoZWQgREVGQVVMVCBw YXJ0aXRpb24uICovCi0JCQlkZWZhdWx0UGFydEN0eCA9IHBjOworCQkJc2ktPmRlZmF1bHRQYXJ0 Q3R4ID0gcGM7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0yMDk2OCw5ICsyMDk5NCw4IEBAIG1vdmVT cGxpdFRhYmxlUm93cyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLCBMaXN0ICpwYXJ0 bGlzdCwgTGlzdCAqbmV3UGFyCiAKIAkJCS8qIEJ1aWxkIGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0 YXRlcyBmb3IgcGFydGl0aW9uIGNoZWNrIHF1YWxzLiAqLwogCQkJcGFydENvbnN0cmFpbnQgPSBn ZXRfcXVhbF9mcm9tX3BhcnRib3VuZChyZWwsIHNwcy0+Ym91bmQpOwotCQkJcGFydENvbnN0cmFp bnQgPQotCQkJCShMaXN0ICopIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoTlVMTCwKLQkJCQkJCQkJ CQkJCShOb2RlICopIHBhcnRDb25zdHJhaW50KTsKKwkJCXBhcnRDb25zdHJhaW50ID0gKExpc3Qg KikgZXZhbF9jb25zdF9leHByZXNzaW9ucyhOVUxMLCAoTm9kZSAqKSBwYXJ0Q29uc3RyYWludCk7 CisKIAkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVjQ2hlY2soKS4gKi8KIAkJ CXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhwbGljaXQocGFydENvbnN0 cmFpbnQpKTsKIApAQCAtMjA5NzgsMTEgKzIxMDAzLDEwIEBAIG1vdmVTcGxpdFRhYmxlUm93cyhS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLCBMaXN0ICpwYXJ0bGlzdCwgTGlzdCAqbmV3 UGFyCiAJCQkgKiBNYXAgdGhlIHZhcnMgaW4gdGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBmcm9t IHJlbCdzIGF0dG5vcyB0bwogCQkJICogc3BsaXRSZWwncy4KIAkJCSAqLwotCQkJcGFydENvbnN0 cmFpbnQgPSBtYXBfcGFydGl0aW9uX3ZhcmF0dG5vcyhwYXJ0Q29uc3RyYWludCwKLQkJCQkJCQkJ CQkJCQkgMSwgc3BsaXRSZWwsIHJlbCk7CisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0aXRp b25fdmFyYXR0bm9zKHBhcnRDb25zdHJhaW50LCAxLCBzcGxpdFJlbCwgcmVsKTsKIAogCQkJcGMt PnBhcnRxdWFsc3RhdGUgPQotCQkJCUV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBsaW5pdGlhbChw YXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQkJRXhlY1ByZXBhcmVFeHByKChFeHByICopIGxp bml0aWFsKHBhcnRDb25zdHJhaW50KSwgc2ktPmVzdGF0ZSk7CiAJCQlBc3NlcnQocGMtPnBhcnRx dWFsc3RhdGUgIT0gTlVMTCk7CiAJCX0KIApAQCAtMjA5OTAsNDEgKzIxMDE0LDI2MSBAQCBtb3Zl U3BsaXRUYWJsZVJvd3MoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBzcGxpdFJlbCwgTGlzdCAqcGFy dGxpc3QsIExpc3QgKm5ld1BhcgogCQlwYXJ0Q29udGV4dHMgPSBsYXBwZW5kKHBhcnRDb250ZXh0 cywgcGMpOwogCX0KIAorCXNpLT5wYXJ0Q29udGV4dHMgPSBwYXJ0Q29udGV4dHM7CisKKwlyZXR1 cm4gc2k7Cit9CisKKy8qCisgKiBkZWxldGVTcGxpdEluZm86IGRlbGV0ZSBTUExJVCBQQVJUSVRJ T04gY29tbWFuZCBjb250ZXh0CisgKi8KK3N0YXRpYyB2b2lkCitkZWxldGVTcGxpdEluZm8oU3Bs aXRJbmZvICogc2kpCit7CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKworCUZyZWVFeGVjdXRvclN0 YXRlKHNpLT5lc3RhdGUpOworCisJZm9yZWFjaChsaXN0cHRyLCBzaS0+cGFydENvbnRleHRzKQor CQlkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBs Zmlyc3QobGlzdHB0cikpOworCisJcGZyZWUoc2kpOworfQorCisvKgorICogY2hlY2tOZXdQYXJ0 aXRpb25zOiBzaW1wbGUgY2hlY2sgb2YgdGhlIG5ldyBwYXJ0aXRpb25zLgorICoKKyAqIGNtZDog U1BMSVQgUEFSVElUSU9OIGNvbW1hbmQgaW5mby4KKyAqIHNwbGl0UmVsT2lkOiBzcGxpdCBwYXJ0 aXRpb24gT2lkLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRp b25zIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzcGxpdAorICogcGFydGl0aW9uLgorICovCitz dGF0aWMgYm9vbAorY2hlY2tOZXdQYXJ0aXRpb25zKFBhcnRpdGlvbkNtZCAqY21kLCBPaWQgc3Bs aXRSZWxPaWQpCit7CisJT2lkCQkJbmFtZXNwYWNlSWQ7CisJTGlzdENlbGwgICAqbGlzdHB0cjsK Kwlib29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CisJY2hhcgkJcmVsbmFtZVtOQU1FREFUQUxFTl07 CisKKwlmb3JlYWNoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3QpCisJeworCQlPaWQJCQlleGlzdGlu Z19yZWxpZDsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNw ZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCXN0cmxjcHkocmVsbmFtZSwgc3BzLT5uYW1lLT5y ZWxuYW1lLCBOQU1FREFUQUxFTik7CisKKwkJLyoKKwkJICogTG9vayB1cCB0aGUgbmFtZXNwYWNl IGluIHdoaWNoIHdlIGFyZSBzdXBwb3NlZCB0byBjcmVhdGUgdGhlCisJCSAqIHBhcnRpdGlvbiwg Y2hlY2sgd2UgaGF2ZSBwZXJtaXNzaW9uIHRvIGNyZWF0ZSB0aGVyZSwgbG9jayBpdAorCQkgKiBh Z2FpbnN0IGNvbmN1cnJlbnQgZHJvcCwgYW5kIG1hcmsgc3RtdC0+cmVsYXRpb24gYXMKKwkJICog UkVMUEVSU0lTVEVOQ0VfVEVNUCBpZiBhIHRlbXBvcmFyeSBuYW1lc3BhY2UgaXMgc2VsZWN0ZWQu CisJCSAqLworCQluYW1lc3BhY2VJZCA9CisJCQlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25O YW1lc3BhY2Uoc3BzLT5uYW1lLCBOb0xvY2ssIE5VTEwpOworCisJCS8qCisJCSAqIFRoaXMgd291 bGQgZmFpbCBsYXRlciBvbiBhbnl3YXksIGlmIHRoZSByZWxhdGlvbiBhbHJlYWR5IGV4aXN0cy4K KwkJICogQnV0IGJ5IGNhdGNoaW5nIGl0IGhlcmUgd2UgY2FuIGVtaXQgYSBuaWNlciBlcnJvciBt ZXNzYWdlLgorCQkgKi8KKwkJZXhpc3RpbmdfcmVsaWQgPSBnZXRfcmVsbmFtZV9yZWxpZChyZWxu YW1lLCBuYW1lc3BhY2VJZCk7CisJCWlmIChleGlzdGluZ19yZWxpZCA9PSBzcGxpdFJlbE9pZCAm JiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBoYXZlIHRoZSBzYW1l IG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRydWU7CisJCWVs c2UgaWYgKGV4aXN0aW5nX3JlbGlkICE9IEludmFsaWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJCSBlcnJtc2coInJl bGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIHJlbG5hbWUpKSk7CisJfQorCisJcmV0dXJu IGlzU2FtZU5hbWU7Cit9CisKKy8qCisgKiBjcmVhdGVQYXJ0aXRpb25UYWJsZTogY3JlYXRlIHRh YmxlIGZvciBuZXcgcGFydGl0aW9uIHdpdGggZ2l2ZW4gbmFtZQorICogKG5ld1BhcnROYW1lKSBs aWtlIHRhYmxlIChtb2RlbFJlbE5hbWUpCisgKgorICogRW11bGF0ZXMgY29tbWFuZDogQ1JFQVRF IFRBQkxFIDxuZXdQYXJ0TmFtZT4gKExJS0UgPG1vZGVsUmVsTmFtZT4KKyAqIElOQ0xVRElORyBB TEwgRVhDTFVESU5HIElOREVYRVMgRVhDTFVESU5HIElERU5USVRZKQorICovCitzdGF0aWMgdm9p ZAorY3JlYXRlUGFydGl0aW9uVGFibGUoUmFuZ2VWYXIgKm5ld1BhcnROYW1lLCBSYW5nZVZhciAq bW9kZWxSZWxOYW1lLAorCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQor eworCUNyZWF0ZVN0bXQgKmNyZWF0ZVN0bXQ7CisJVGFibGVMaWtlQ2xhdXNlICp0bGM7CisJUGxh bm5lZFN0bXQgKndyYXBwZXI7CisKKwljcmVhdGVTdG10ID0gbWFrZU5vZGUoQ3JlYXRlU3RtdCk7 CisJY3JlYXRlU3RtdC0+cmVsYXRpb24gPSBuZXdQYXJ0TmFtZTsKKwljcmVhdGVTdG10LT50YWJs ZUVsdHMgPSBOSUw7CisJY3JlYXRlU3RtdC0+aW5oUmVsYXRpb25zID0gTklMOworCWNyZWF0ZVN0 bXQtPmNvbnN0cmFpbnRzID0gTklMOworCWNyZWF0ZVN0bXQtPm9wdGlvbnMgPSBOSUw7CisJY3Jl YXRlU3RtdC0+b25jb21taXQgPSBPTkNPTU1JVF9OT09QOworCWNyZWF0ZVN0bXQtPnRhYmxlc3Bh Y2VuYW1lID0gTlVMTDsKKwljcmVhdGVTdG10LT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CisKKwl0 bGMgPSBtYWtlTm9kZShUYWJsZUxpa2VDbGF1c2UpOworCXRsYy0+cmVsYXRpb24gPSBtb2RlbFJl bE5hbWU7CisKKwkvKgorCSAqIEluZGV4ZXMgd2lsbCBiZSBpbmhlcml0ZWQgb24gImF0dGFjaCBu ZXcgcGFydGl0aW9ucyIgc3RhZ2UsIGFmdGVyIGRhdGEKKwkgKiBtb3ZpbmcuCisJICovCisJdGxj LT5vcHRpb25zID0gQ1JFQVRFX1RBQkxFX0xJS0VfQUxMICYgfihDUkVBVEVfVEFCTEVfTElLRV9J TkRFWEVTIHwgQ1JFQVRFX1RBQkxFX0xJS0VfSURFTlRJVFkpOworCXRsYy0+cmVsYXRpb25PaWQg PSBJbnZhbGlkT2lkOworCWNyZWF0ZVN0bXQtPnRhYmxlRWx0cyA9IGxhcHBlbmQoY3JlYXRlU3Rt dC0+dGFibGVFbHRzLCB0bGMpOworCisJLyogTmVlZCB0byBtYWtlIGEgd3JhcHBlciBQbGFubmVk U3RtdC4gKi8KKwl3cmFwcGVyID0gbWFrZU5vZGUoUGxhbm5lZFN0bXQpOworCXdyYXBwZXItPmNv bW1hbmRUeXBlID0gQ01EX1VUSUxJVFk7CisJd3JhcHBlci0+Y2FuU2V0VGFnID0gZmFsc2U7CisJ d3JhcHBlci0+dXRpbGl0eVN0bXQgPSAoTm9kZSAqKSBjcmVhdGVTdG10OworCXdyYXBwZXItPnN0 bXRfbG9jYXRpb24gPSBjb250ZXh0LT5wc3RtdC0+c3RtdF9sb2NhdGlvbjsKKwl3cmFwcGVyLT5z dG10X2xlbiA9IGNvbnRleHQtPnBzdG10LT5zdG10X2xlbjsKKworCVByb2Nlc3NVdGlsaXR5KHdy YXBwZXIsCisJCQkJICAgY29udGV4dC0+cXVlcnlTdHJpbmcsCisJCQkJICAgZmFsc2UsCisJCQkJ ICAgUFJPQ0VTU19VVElMSVRZX1NVQkNPTU1BTkQsCisJCQkJICAgTlVMTCwKKwkJCQkgICBOVUxM LAorCQkJCSAgIE5vbmVfUmVjZWl2ZXIsCisJCQkJICAgTlVMTCk7Cit9CisKKy8qCisgKiBjcmVh dGVOZXdQYXJ0aXRpb25zOiBzaW1wbGUgY2hlY2sgb2YgdGhlIG5ldyBwYXJ0aXRpb25zLgorICoK KyAqIHNpOiBTUExJVCBQQVJUSVRJT04gY29tbWFuZCBjb250ZXh0LgorICogc3BsaXROYW1lOiBz cGxpdCBwYXJ0aXRpb24gbmFtZS4KKyAqIHBjV2l0aEFsbFJvd3M6IGNvbnRleHQgb2YgcGFydGl0 aW9uIHRoYXQgY29udGFpbnMgYWxsIHRoZSByb3dzIG9mIHRoZSBzcGxpdAorICogCQkJCSAgcGFy dGl0aW9uIG9yIE5VTEwgaWYgbm8gc3VjaCBwYXJ0aXRpb24gZXhpc3RzLgorICoKKyAqIEZ1bmN0 aW9uIHJldHVybnMgbmFtZSBvZiBzcGxpdCBwYXJ0aXRpb24gKGFuZCBjYW4gY2hhbmdlIGl0IGlu IGNhc2Ugb2YKKyAqIG9wdGltaXphdGlvbiB3aXRoIHNwbGl0IHBhcnRpdGlvbiByZW5hbWluZyku CisgKi8KK3N0YXRpYyBSYW5nZVZhciAqCitjcmVhdGVOZXdQYXJ0aXRpb25zKFNwbGl0SW5mbyAq IHNpLCBSYW5nZVZhciAqc3BsaXROYW1lLAorCQkJCQlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKiBw Y1dpdGhBbGxSb3dzLAorCQkJCQlBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7 CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKwlPaWQJCQlzcGxpdFJlbE9pZDsKKwlSYW5nZVZhciAg ICpzcGxpdFBhcnROYW1lID0gc3BsaXROYW1lOworCisJc3BsaXRSZWxPaWQgPSBSZWxhdGlvbkdl dFJlbGlkKHNpLT5zcGxpdFJlbCk7CisKKwlmb3JlYWNoKGxpc3RwdHIsIHNpLT5wYXJ0Q29udGV4 dHMpCisJeworCQlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjID0gKFNwbGl0UGFydGl0aW9uQ29u dGV4dCAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJaWYgKHBjID09IHBjV2l0aEFsbFJvd3MpCisJ CXsKKwkJCS8qIE5lZWQgdG8gcmV1c2Ugc3BsaXRSZWwgZm9yIHBhcnRpdGlvbiBpbnN0ZWFkIG9m IGNyZWF0aW9uLiAqLworCisJCQkvKgorCQkJICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNv dW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uCisJCQkgKiB0dXBsZSB2aXNpYmxlIGZv ciByZW5hbWUuCisJCQkgKi8KKwkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkJCS8q CisJCQkgKiBSZW5hbWUgc3BsaXQgcGFydGl0aW9uIHRvIG5ldyBwYXJ0aXRpb24uCisJCQkgKi8K KwkJCVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwoc3BsaXRSZWxPaWQsIHBjLT5zcHMtPm5hbWUtPnJl bG5hbWUsIGZhbHNlLCBmYWxzZSk7CisJCQlzcGxpdFBhcnROYW1lID0gbWFrZVJhbmdlVmFyKGdl dF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShzaS0+c3BsaXRSZWwpKSwKKwkJ CQkJCQkJCQkgcGMtPnNwcy0+bmFtZS0+cmVsbmFtZSwgLTEpOworCisJCQkvKgorCQkJICogV2Ug bXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9u CisJCQkgKiB0dXBsZSB2aXNpYmxlIGFmdGVyIHJlbmFtZS4KKwkJCSAqLworCQkJQ29tbWFuZENv dW50ZXJJbmNyZW1lbnQoKTsKKworCQkJcGMtPnBhcnRSZWwgPSBzaS0+c3BsaXRSZWw7CisJCQkv KiBObyBuZWVkIHRvIG9wZW4gcmVsYXRpb24gOiBzcGxpdFJlbCBpcyBhbHJlYWR5IG9wZW5lZC4g Ki8KKwkJfQorCQllbHNlCisJCXsKKwkJCWNyZWF0ZVBhcnRpdGlvblRhYmxlKHBjLT5zcHMtPm5h bWUsIHNwbGl0UGFydE5hbWUsIGNvbnRleHQpOworCisJCQkvKiBPcGVuIHRoZSBuZXcgcGFydGl0 aW9uIGFuZCBhY3F1aXJlIGV4Y2x1c2l2ZSBsb2NrIG9uIGl0LiAqLworCQkJcGMtPnBhcnRSZWwg PSB0YWJsZV9vcGVucnYocGMtPnNwcy0+bmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCX0K Kwl9CisKKwlyZXR1cm4gc3BsaXRQYXJ0TmFtZTsKK30KKworLyoKKyAqIG1vdmVTcGxpdFRhYmxl Um93czogc2NhbiBzcGxpdCBwYXJ0aXRpb24gKHNwbGl0UmVsKSBvZiBwYXJ0aXRpb25lZCB0YWJs ZQorICogKHJlbCkgYW5kIG1vdmUgcm93cyBpbnRvIG5ldyBwYXJ0aXRpb25zLgorICoKKyAqIHNp OiBTUExJVCBQQVJUSVRJT04gY29tbWFuZCBjb250ZXh0LgorICovCitzdGF0aWMgdm9pZAorbW92 ZVNwbGl0VGFibGVSb3dzKFNwbGl0SW5mbyAqIHNpKQoreworCS8qIFRoZSBGU00gaXMgZW1wdHks IHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4gKi8KKwlpbnQJCQl0aV9vcHRpb25zID0gVEFCTEVf SU5TRVJUX1NLSVBfRlNNOworCUNvbW1hbmRJZAlteWNpZDsKKwlMaXN0Q2VsbCAgICpsaXN0cHRy OworCVR1cGxlVGFibGVTbG90ICpzcmNzbG90OworCUV4cHJDb250ZXh0ICplY29udGV4dDsKKwlU YWJsZVNjYW5EZXNjIHNjYW47CisJU25hcHNob3QJc25hcHNob3Q7CisJTWVtb3J5Q29udGV4dCBv bGRDeHQ7CisJVHVwbGVDb252ZXJzaW9uTWFwICp0dXBsZV9tYXA7CisJU3BsaXRQYXJ0aXRpb25D b250ZXh0ICpwYyA9IE5VTEw7CisJYm9vbAkJaXNPbGREZWZhdWx0UGFydCA9IGZhbHNlOworCVNw bGl0UGFydGl0aW9uQ29udGV4dCAqZGVmYXVsdFBhcnRDdHggPSBzaS0+ZGVmYXVsdFBhcnRDdHg7 CisKKwlteWNpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7CisKKwkvKiBQcmVwYXJlIG5l dyBwYXJ0aXRpb25zIGNvbnRleHRzIGZvciBpbnNlcnQgcm93cy4gKi8KKwlmb3JlYWNoKGxpc3Rw dHIsIHNpLT5wYXJ0Q29udGV4dHMpCisJCWZpbGxTcGxpdFBhcnRpdGlvbkNvbnRleHQoKFNwbGl0 UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdHB0cikpOworCiAJLyoKIAkgKiBDcmVhdGUg cGFydGl0aW9uIGNvbnRleHQgZm9yIERFRkFVTFQgcGFydGl0aW9uLiBXZSBjYW4gaW5zZXJ0IHZh bHVlcwogCSAqIGludG8gdGhpcyBwYXJ0aXRpb24gaW4gY2FzZSBzcGFjZXMgd2l0aCB2YWx1ZXMg YmV0d2VlbiBuZXcgcGFydGl0aW9ucy4KIAkgKi8KLQlpZiAoIWRlZmF1bHRQYXJ0Q3R4ICYmIE9p ZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpKQorCWlmICghZGVmYXVsdFBhcnRDdHggJiYgT2lkSXNW YWxpZChzaS0+ZGVmYXVsdFBhcnRPaWQpKQogCXsKIAkJLyogSW5kaWNhdGUgdGhhdCB3ZSBhbGxv Y2F0ZSBjb250ZXh0IGZvciBvbGQgREVGQVVMVCBwYXJ0aXRpb24gKi8KIAkJaXNPbGREZWZhdWx0 UGFydCA9IHRydWU7Ci0JCWRlZmF1bHRQYXJ0Q3R4ID0gY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250 ZXh0KHRhYmxlX29wZW4oZGVmYXVsdFBhcnRPaWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spKTsKKwkJ ZGVmYXVsdFBhcnRDdHggPSBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoTlVMTCk7CisJCWRl ZmF1bHRQYXJ0Q3R4LT5wYXJ0UmVsID0gdGFibGVfb3BlbihzaS0+ZGVmYXVsdFBhcnRPaWQsIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2spOworCQlmaWxsU3BsaXRQYXJ0aXRpb25Db250ZXh0KGRlZmF1bHRQ YXJ0Q3R4KTsKIAl9CiAKLQllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRl KTsKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoc2ktPmVzdGF0ZSk7CiAKIAkv KiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICovCi0Jc3Jjc2xvdCA9IE1ha2VTaW5nbGVU dXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKHNwbGl0UmVsKSwKLQkJCQkJCQkJCSAgIHRh YmxlX3Nsb3RfY2FsbGJhY2tzKHNwbGl0UmVsKSk7CisJc3Jjc2xvdCA9IE1ha2VTaW5nbGVUdXBs ZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKHNpLT5zcGxpdFJlbCksCisJCQkJCQkJCQkgICB0 YWJsZV9zbG90X2NhbGxiYWNrcyhzaS0+c3BsaXRSZWwpKTsKIAogCS8qCiAJICogTWFwIGNvbXB1 dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIHRvIG5ldyBwYXJ0 aXRpb24KIAkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRpb24gYnV0IG90aGVyIG5ldyBwYXJ0aXRp b25zIGNhbiB1c2UgdGhlIHNhbWUKIAkgKiBtYXApLgogCSAqLwotCXBjID0gKFNwbGl0UGFydGl0 aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdF9oZWFkKHBhcnRDb250ZXh0cykpOwotCXR1cGxlX21h cCA9IGNvbnZlcnRfdHVwbGVzX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihzcGxpdFJlbCksCisJ cGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChsaXN0X2hlYWQoc2ktPnBhcnRD b250ZXh0cykpOworCXR1cGxlX21hcCA9IGNvbnZlcnRfdHVwbGVzX2J5X25hbWUoUmVsYXRpb25H ZXREZXNjcihzaS0+c3BsaXRSZWwpLAogCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihwYy0+ cGFydFJlbCkpOwogCiAJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLwogCXNuYXBzaG90ID0g UmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKLQlzY2FuID0gdGFibGVfYmVn aW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2lu c2NhbihzaS0+c3BsaXRSZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKIAogCS8qCiAJICogU3dpdGNo IHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVwbGUK IAkgKiBwcm9kdWNlZCwgc28gd2UgZG9uJ3QgbGVhayBtZW1vcnkuCiAJICovCi0Jb2xkQ3h0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsK KwlvbGRDeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0 KHNpLT5lc3RhdGUpKTsKIAogCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZv cndhcmRTY2FuRGlyZWN0aW9uLCBzcmNzbG90KSkKIAl7CkBAIC0yMTAzNyw3ICsyMTI4MSw3IEBA IG1vdmVTcGxpdFRhYmxlUm93cyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLCBMaXN0 ICpwYXJ0bGlzdCwgTGlzdCAqbmV3UGFyCiAJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNy Y3Nsb3Q7CiAKIAkJLyogU2VhcmNoIHBhcnRpdGlvbiBmb3IgY3VycmVudCBzbG90IHNyY3Nsb3Qu ICovCi0JCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRzKQorCQlmb3JlYWNoKGxpc3RwdHIs IHNpLT5wYXJ0Q29udGV4dHMpCiAJCXsKIAkJCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAq KSBsZmlyc3QobGlzdHB0cik7CiAKQEAgLTIxMDU4LDcgKzIxMzAyLDcgQEAgbW92ZVNwbGl0VGFi bGVSb3dzKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsIExpc3QgKnBhcnRsaXN0LCBM aXN0ICpuZXdQYXIKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9D SEVDS19WSU9MQVRJT04pLAogCQkJCQkJIGVycm1zZygiY2FuIG5vdCBmaW5kIHBhcnRpdGlvbiBm b3Igc3BsaXQgcGFydGl0aW9uIHJvdyIpLAotCQkJCQkJIGVycnRhYmxlKHNwbGl0UmVsKSkpOwor CQkJCQkJIGVycnRhYmxlKHNpLT5zcGxpdFJlbCkpKTsKIAkJfQogCiAJCWlmICh0dXBsZV9tYXAp CkBAIC0yMTA5OSw3NCArMjEzNDMsMjA4IEBAIG1vdmVTcGxpdFRhYmxlUm93cyhSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIHNwbGl0UmVsLCBMaXN0ICpwYXJ0bGlzdCwgTGlzdCAqbmV3UGFyCiAKIAlF eGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOwogCi0JRnJlZUV4ZWN1dG9yU3Rh dGUoZXN0YXRlKTsKLQotCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRzKQotCQlkZWxldGVT cGxpdFBhcnRpdGlvbkNvbnRleHQoKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlz dHB0ciksIHRpX29wdGlvbnMpOwotCiAJLyogTmVlZCB0byBjbG9zZSB0YWJsZSBhbmQgZnJlZSBi dWZmZXJzIGZvciBERUZBVUxUIHBhcnRpdGlvbi4gKi8KIAlpZiAoaXNPbGREZWZhdWx0UGFydCkK IAl7CiAJCVJlbGF0aW9uCWRlZmF1bHRQYXJ0UmVsID0gZGVmYXVsdFBhcnRDdHgtPnBhcnRSZWw7 CiAKLQkJZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KGRlZmF1bHRQYXJ0Q3R4LCB0aV9vcHRp b25zKTsKKwkJZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KGRlZmF1bHRQYXJ0Q3R4KTsKIAkJ LyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCiAJCXRhYmxlX2Nsb3NlKGRlZmF1bHRQ YXJ0UmVsLCBOb0xvY2spOwogCX0KIH0KIAogLyoKLSAqIGNyZWF0ZVBhcnRpdGlvblRhYmxlOiBj cmVhdGUgdGFibGUgZm9yIG5ldyBwYXJ0aXRpb24gd2l0aCBnaXZlbiBuYW1lCi0gKiAobmV3UGFy dE5hbWUpIGxpa2UgdGFibGUgKG1vZGVsUmVsTmFtZSkKKyAqIGZpbmROZXdQYXJ0Rm9yU2xvdDog ZmluZCBwYXJ0aXRpb24gdGhhdCBjb250YWlucyBzbG90IHZhbHVlLgogICoKLSAqIEVtdWxhdGVz IGNvbW1hbmQ6IENSRUFURSBUQUJMRSA8bmV3UGFydE5hbWU+IChMSUtFIDxtb2RlbFJlbE5hbWU+ Ci0gKiBJTkNMVURJTkcgQUxMIEVYQ0xVRElORyBJTkRFWEVTIEVYQ0xVRElORyBJREVOVElUWSkK KyAqIHNpOiBTUExJVCBQQVJUSVRJT04gY29udGV4dC4KKyAqIGNoZWNrUGM6IHBhcnRpdGlvbiBj b250ZXh0IGZvciBjaGVjayBzbG90IHZhbHVlIChjYW4gYmUgTlVMTCkuCisgKiBzbG90OiB2YWx1 ZSB0byBjaGVjay4KICAqLwotc3RhdGljIHZvaWQKLWNyZWF0ZVBhcnRpdGlvblRhYmxlKFJhbmdl VmFyICpuZXdQYXJ0TmFtZSwgUmFuZ2VWYXIgKm1vZGVsUmVsTmFtZSwKLQkJCQkJIEFsdGVyVGFi bGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3N0YXRpYyBTcGxpdFBhcnRpdGlvbkNvbnRleHQg KgorZmluZE5ld1BhcnRGb3JTbG90KFNwbGl0SW5mbyAqIHNpLCBTcGxpdFBhcnRpdGlvbkNvbnRl eHQgKiBjaGVja1BjLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIHsKLQlDcmVhdGVTdG10ICpjcmVh dGVTdG10OwotCVRhYmxlTGlrZUNsYXVzZSAqdGxjOwotCVBsYW5uZWRTdG10ICp3cmFwcGVyOwor CUxpc3RDZWxsICAgKmxpc3RwdHI7CisJRXhwckNvbnRleHQgKmVjb250ZXh0OworCU1lbW9yeUNv bnRleHQgb2xkQ3h0OworCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqcmVzdWx0ID0gTlVMTDsKIAot CWNyZWF0ZVN0bXQgPSBtYWtlTm9kZShDcmVhdGVTdG10KTsKLQljcmVhdGVTdG10LT5yZWxhdGlv biA9IG5ld1BhcnROYW1lOwotCWNyZWF0ZVN0bXQtPnRhYmxlRWx0cyA9IE5JTDsKLQljcmVhdGVT dG10LT5pbmhSZWxhdGlvbnMgPSBOSUw7Ci0JY3JlYXRlU3RtdC0+Y29uc3RyYWludHMgPSBOSUw7 Ci0JY3JlYXRlU3RtdC0+b3B0aW9ucyA9IE5JTDsKLQljcmVhdGVTdG10LT5vbmNvbW1pdCA9IE9O Q09NTUlUX05PT1A7Ci0JY3JlYXRlU3RtdC0+dGFibGVzcGFjZW5hbWUgPSBOVUxMOwotCWNyZWF0 ZVN0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhw ckNvbnRleHQoc2ktPmVzdGF0ZSk7CiAKLQl0bGMgPSBtYWtlTm9kZShUYWJsZUxpa2VDbGF1c2Up OwotCXRsYy0+cmVsYXRpb24gPSBtb2RlbFJlbE5hbWU7CisJLyogTWFrZSBzdXJlIHRoZSB0dXBs ZSBpcyBmdWxseSBkZWNvbnN0cnVjdGVkLiAqLworCXNsb3RfZ2V0YWxsYXR0cnMoc2xvdCk7CisK KwllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwogCiAJLyoKLQkgKiBJbmRleGVzIHdp bGwgYmUgaW5oZXJpdGVkIG9uICJhdHRhY2ggbmV3IHBhcnRpdGlvbnMiIHN0YWdlLCBhZnRlciBk YXRhCi0JICogbW92aW5nLgorCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQg YW5kIHJlc2V0IGl0IGFmdGVyIGVhY2ggY2hlY2ssIHNvIHdlCisJICogZG9uJ3QgbGVhayBtZW1v cnkuCiAJICovCi0JdGxjLT5vcHRpb25zID0gQ1JFQVRFX1RBQkxFX0xJS0VfQUxMICYgfihDUkVB VEVfVEFCTEVfTElLRV9JTkRFWEVTIHwgQ1JFQVRFX1RBQkxFX0xJS0VfSURFTlRJVFkpOwotCXRs Yy0+cmVsYXRpb25PaWQgPSBJbnZhbGlkT2lkOwotCWNyZWF0ZVN0bXQtPnRhYmxlRWx0cyA9IGxh cHBlbmQoY3JlYXRlU3RtdC0+dGFibGVFbHRzLCB0bGMpOworCW9sZEN4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoc2ktPmVzdGF0ZSkpOwogCi0JLyog TmVlZCB0byBtYWtlIGEgd3JhcHBlciBQbGFubmVkU3RtdC4gKi8KLQl3cmFwcGVyID0gbWFrZU5v ZGUoUGxhbm5lZFN0bXQpOwotCXdyYXBwZXItPmNvbW1hbmRUeXBlID0gQ01EX1VUSUxJVFk7Ci0J d3JhcHBlci0+Y2FuU2V0VGFnID0gZmFsc2U7Ci0Jd3JhcHBlci0+dXRpbGl0eVN0bXQgPSAoTm9k ZSAqKSBjcmVhdGVTdG10OwotCXdyYXBwZXItPnN0bXRfbG9jYXRpb24gPSBjb250ZXh0LT5wc3Rt dC0+c3RtdF9sb2NhdGlvbjsKLQl3cmFwcGVyLT5zdG10X2xlbiA9IGNvbnRleHQtPnBzdG10LT5z dG10X2xlbjsKKwlpZiAoY2hlY2tQYykKKwl7CisJCWlmIChFeGVjQ2hlY2soY2hlY2tQYy0+cGFy dHF1YWxzdGF0ZSwgZWNvbnRleHQpKQorCQl7CisJCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0 KTsKKwkJCXJlc3VsdCA9IGNoZWNrUGM7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJLyogU2VhcmNo IHBhcnRpdGlvbiBmb3IgY3VycmVudCBzbG90IHNyY3Nsb3QuICovCisJCWZvcmVhY2gobGlzdHB0 ciwgc2ktPnBhcnRDb250ZXh0cykKKwkJeworCQkJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYyA9 IChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOwogCi0JUHJvY2Vzc1V0 aWxpdHkod3JhcHBlciwKLQkJCQkgICBjb250ZXh0LT5xdWVyeVN0cmluZywKLQkJCQkgICBmYWxz ZSwKLQkJCQkgICBQUk9DRVNTX1VUSUxJVFlfU1VCQ09NTUFORCwKLQkJCQkgICBOVUxMLAotCQkJ CSAgIE5VTEwsCi0JCQkJICAgTm9uZV9SZWNlaXZlciwKLQkJCQkgICBOVUxMKTsKKwkJCWlmIChw Yy0+cGFydHF1YWxzdGF0ZSAvKiBza2lwIERFRkFVTFQgcGFydGl0aW9uICovICYmCisJCQkJRXhl Y0NoZWNrKHBjLT5wYXJ0cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCQl7CisJCQkJUmVzZXRFeHBy Q29udGV4dChlY29udGV4dCk7CisJCQkJcmVzdWx0ID0gcGM7CisJCQkJYnJlYWs7CisJCQl9CisJ CQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwkJfQorCisJCS8qIFdlIG5vdCBmb3VuZCBw YXJ0aXRpb24gd2l0aCBib3JkZXJzIGJ1dCBleGlzdHMgREVGQVVMVCBwYXJ0aXRpb24uICovCisJ CWlmICghcmVzdWx0ICYmIHNpLT5kZWZhdWx0UGFydEN0eCkKKwkJCXJlc3VsdCA9IHNpLT5kZWZh dWx0UGFydEN0eDsKKworCQkvKgorCQkgKiAicmVzdWx0IiBjYW4gYmUgTlVMTCBoZXJlIGJlY2F1 c2UgY2FuIGJlIHNwYWNlcyBiZXR3ZWVuIG9mIHRoZSBuZXcKKwkJICogcGFydGl0aW9ucyBhbmQg cm93cyBmcm9tIHRoZSBzcGFjZXMgY2FuIGJlIG1vdmVkIHRvIHRoZSBERUZBVUxUCisJCSAqIHBh cnRpdGlvbiBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUuCisJCSAqLworCX0KKworCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRDeHQpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIGZp bmROZXdQYXJ0V2l0aEFsbFJvd3M6IGZpbmQgcGFydGl0aW9uIHRoYXQgY29udGFpbnMgYWxsIHRo ZSByb3dzIG9mIHRoZQorICogc3BsaXQgcGFydGl0aW9uOyByZXR1cm5zIHBhcnRpdGlvbiBjb250 ZXh0IGlmIHBhcnRpdGlvbiB3YXMgZm91bmQuCisgKgorICogc2k6IFNQTElUIFBBUlRJVElPTiBj b250ZXh0LgorICovCitzdGF0aWMgU3BsaXRQYXJ0aXRpb25Db250ZXh0ICoKK2ZpbmROZXdQYXJ0 V2l0aEFsbFJvd3MoU3BsaXRJbmZvICogc2kpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0 aW9uR2V0UGFydGl0aW9uS2V5KHNpLT5yZWwpOworCUxpc3RDZWxsICAgKmluZGV4OworCWludAkJ CXBhcnRuYXR0czsKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnJlc3VsdCA9IE5VTEw7CisJQXR0 ck1hcCAgICAqbWFwOworCUF0dHJOdW1iZXIgKnBhcnRhdHRyczsKKwlpbnQJCQlpOworCisJLyog V2UgY2FuIHVzZSBvcHRpbWl6YXRpb24gZm9yIEJZIFJBTkdFIHBhcnRpdGlvbmluZyBvbmx5LiAq LworCWlmIChrZXktPnN0cmF0ZWd5ICE9IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSkKKwkJcmV0 dXJuIE5VTEw7CisKKwlwYXJ0bmF0dHMgPSBnZXRfcGFydGl0aW9uX25hdHRzKGtleSk7CisKKwkv KgorCSAqIFBhcnRpdGlvbiBrZXkgY29udGFpbnMgY29sdW1ucyBvZiBwYXJ0aXRpb25lZCB0YWJs ZXMgc2ktPnJlbCBidXQgaW5kZXgKKwkgKiBjb250YWlucyBjb2x1bW5zIG9mIHNpLT5zcGxpdFJl bC4gU28gd2UgbmVlZCBhIG1hcCBmb3IgY29udmVydAorCSAqIGF0dHJpYnV0ZXMgbnVtYmVycyAo c2ktPnJlbCkgLT4gKHNpLT5zcGxpdFJlbCkuCisJICovCisJbWFwID0gYnVpbGRfYXR0cm1hcF9i eV9uYW1lX2lmX3JlcShSZWxhdGlvbkdldERlc2NyKHNpLT5zcGxpdFJlbCksCisJCQkJCQkJCQkg ICBSZWxhdGlvbkdldERlc2NyKHNpLT5yZWwpLAorCQkJCQkJCQkJICAgZmFsc2UpOworCWlmICht YXApCisJeworCQkvKgorCQkgKiBDb2x1bW5zIG9yZGVyIGluIGEgcGFydGl0aW9uZWQgdGFibGUg YW5kIHNwbGl0IHBhcnRpdGlvbiBpcworCQkgKiBkaWZmZXJlbnQuIFNvIG5lZWQgdG8gY3JlYXRl IGEgbmV3IGFycmF5IHdpdGggYXR0cmlidXRlIG51bWJlcnMuCisJCSAqLworCQlwYXJ0YXR0cnMg PSBwYWxsb2Moc2l6ZW9mKEF0dHJOdW1iZXIpICogcGFydG5hdHRzKTsKKwkJZm9yIChpID0gMDsg aSA8IHBhcnRuYXR0czsgaSsrKQorCQl7CisJCQlBdHRyTnVtYmVyCWF0dHJfbnVtID0gZ2V0X3Bh cnRpdGlvbl9jb2xfYXR0bnVtKGtleSwgaSk7CisKKwkJCXBhcnRhdHRyc1tpXSA9IG1hcC0+YXR0 bnVtc1thdHRyX251bSAtIDFdOworCQl9CisJfQorCWVsc2UKKwl7CisJCS8qIFdlIGNhbiB1c2Ug YXJyYXkgb2YgcGFydGl0aW9uIGtleS4gKi8KKwkJcGFydGF0dHJzID0ga2V5LT5wYXJ0YXR0cnM7 CisJfQorCisJLyogU2NhbiBhbGwgaW5kZXhlcyBvZiBzcGxpdCBwYXJ0aXRpb24uICovCisJZm9y ZWFjaChpbmRleCwgUmVsYXRpb25HZXRJbmRleExpc3Qoc2ktPnNwbGl0UmVsKSkKKwl7CisJCU9p ZAkJCXRoaXNJbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXgpOworCQlSZWxhdGlvbglpbmRleFJl bCA9IGluZGV4X29wZW4odGhpc0luZGV4T2lkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCS8qCisJ CSAqIEluZGV4IHNob3VsZCBiZSB2YWxpZCwgYnRyZWUgKGZvciBzZWFyY2hpbmcgbWluL21heCkg YW5kIGNvbnRhaW4KKwkJICogdGhlIHNhbWUgY29sdW1ucyBhcyBwYXJ0aXRpb24ga2V5LgorCQkg Ki8KKwkJaWYgKGluZGV4UmVsLT5yZF9pbmRleC0+aW5kaXN2YWxpZCAmJgorCQkJaW5kZXhSZWwt PnJkX3JlbC0+cmVsYW0gPT0gQlRSRUVfQU1fT0lEICYmCisJCQlpbmRleFJlbC0+cmRfaW5kZXgt PmluZG5hdHRzID09IHBhcnRuYXR0cykKKwkJeworCQkJZm9yIChpID0gMDsgaSA8IGluZGV4UmVs LT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKKwkJCXsKKwkJCQlpZiAoaW5kZXhSZWwtPnJkX2lu ZGV4LT5pbmRrZXkudmFsdWVzW2ldICE9IHBhcnRhdHRyc1tpXSkKKwkJCQkJYnJlYWs7CisJCQl9 CisKKwkJCS8qIEluZGV4IGZvdW5kPyAqLworCQkJaWYgKGkgPT0gaW5kZXhSZWwtPnJkX2luZGV4 LT5pbmRuYXR0cykKKwkJCXsKKwkJCQlJbmRleFNjYW5EZXNjIGluZGV4U2NhbjsKKwkJCQlUdXBs ZVRhYmxlU2xvdCAqc2xvdDsKKworCQkJCWluZGV4U2NhbiA9IGluZGV4X2JlZ2luc2NhbihzaS0+ c3BsaXRSZWwsIGluZGV4UmVsLCBTbmFwc2hvdEFueSwgMCwgMCk7CisJCQkJZG8KKwkJCQl7CisJ CQkJCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGM7CisKKwkJCQkJLyogU2VhcmNoIGEgbWluaW11 bSBpbmRleCB2YWx1ZS4gKi8KKwkJCQkJaW5kZXhfcmVzY2FuKGluZGV4U2NhbiwgTlVMTCwgMCwg TlVMTCwgMCk7CisJCQkJCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShzaS0+c3BsaXRSZWwsIE5V TEwpOworCQkJCQlpZiAoIWluZGV4X2dldG5leHRfc2xvdChpbmRleFNjYW4sIEZvcndhcmRTY2Fu RGlyZWN0aW9uLCBzbG90KSkKKwkJCQkJeworCQkJCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxl U2xvdChzbG90KTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJCS8qIEZpbmQgcGFydGl0aW9u IGNvbnRleHQgZm9yIG1pbmltdW0gaW5kZXggdmFsdWUuICovCisJCQkJCXBjID0gZmluZE5ld1Bh cnRGb3JTbG90KHNpLCBOVUxMLCBzbG90KTsKKwkJCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxl U2xvdChzbG90KTsKKworCQkJCQkvKiBTZWFyY2ggYSBtYXhpbXVtIGluZGV4IHZhbHVlLiAqLwor CQkJCQlpbmRleF9yZXNjYW4oaW5kZXhTY2FuLCBOVUxMLCAwLCBOVUxMLCAwKTsKKwkJCQkJc2xv dCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHNpLT5zcGxpdFJlbCwgTlVMTCk7CisJCQkJCWlmICghaW5k ZXhfZ2V0bmV4dF9zbG90KGluZGV4U2NhbiwgQmFja3dhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkK KwkJCQkJeworCQkJCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJCQkJ CWJyZWFrOworCQkJCQl9CisJCQkJCS8qIENoZWNrIHBhcnRpdGlvbiBjb250ZXh0ICJwYyIgZm9y IG1heGltdW0gaW5kZXggdmFsdWUuICovCisJCQkJCXJlc3VsdCA9IGZpbmROZXdQYXJ0Rm9yU2xv dChzaSwgcGMsIHNsb3QpOworCQkJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3Qp OworCQkJCX0gd2hpbGUgKDApOworCisJCQkJaW5kZXhfZW5kc2NhbihpbmRleFNjYW4pOworCQkJ CWluZGV4X2Nsb3NlKGluZGV4UmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCWdvdG8gZG9uZTsK KwkJCX0KKwkJfQorCQlpbmRleF9jbG9zZShpbmRleFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwl9 CisKK2RvbmU6CisJaWYgKG1hcCkKKwl7CisJCXBmcmVlKHBhcnRhdHRycyk7CisJCWZyZWVfYXR0 cm1hcChtYXApOworCX0KKwlyZXR1cm4gcmVzdWx0OwogfQogCiAvKgpAQCAtMjExNzgsMTYgKzIx NTU2LDE0IEBAIEFURXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogewogCVJlbGF0aW9uCXNwbGl0UmVsOwogCU9pZAkJ CXNwbGl0UmVsT2lkOwotCWNoYXIJCXJlbG5hbWVbTkFNRURBVEFMRU5dOwotCU9pZAkJCW5hbWVz cGFjZUlkOwotCUxpc3RDZWxsICAgKmxpc3RwdHIsCi0JCQkgICAqbGlzdHB0cjI7CisJTGlzdENl bGwgICAqbGlzdHB0cjsKIAlib29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CiAJY2hhcgkJdG1wUmVs TmFtZVtOQU1FREFUQUxFTl07Ci0JTGlzdAkgICAqbmV3UGFydFJlbHMgPSBOSUw7CiAJT2JqZWN0 QWRkcmVzcyBvYmplY3Q7CiAJUmFuZ2VWYXIgICAqc3BsaXRQYXJ0TmFtZSA9IGNtZC0+bmFtZTsK IAlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjV2l0aEFs bFJvd3M7CisJU3BsaXRJbmZvICAqc2k7CiAKIAlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0 X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsK IApAQCAtMjEyMDYsMzUgKzIxNTgyLDcgQEAgQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJc3BsaXRSZWxPaWQg PSBSZWxhdGlvbkdldFJlbGlkKHNwbGl0UmVsKTsKIAogCS8qIENoZWNrIGRlc2NyaXB0aW9ucyBv ZiBuZXcgcGFydGl0aW9ucy4gKi8KLQlmb3JlYWNoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3QpCi0J ewotCQlPaWQJCQlleGlzdGluZ19yZWxpZDsKLQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0g KFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOwotCi0JCXN0cmxjcHkocmVs bmFtZSwgc3BzLT5uYW1lLT5yZWxuYW1lLCBOQU1FREFUQUxFTik7Ci0KLQkJLyoKLQkJICogTG9v ayB1cCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHdlIGFyZSBzdXBwb3NlZCB0byBjcmVhdGUgdGhl Ci0JCSAqIHBhcnRpdGlvbiwgY2hlY2sgd2UgaGF2ZSBwZXJtaXNzaW9uIHRvIGNyZWF0ZSB0aGVy ZSwgbG9jayBpdAotCQkgKiBhZ2FpbnN0IGNvbmN1cnJlbnQgZHJvcCwgYW5kIG1hcmsgc3RtdC0+ cmVsYXRpb24gYXMKLQkJICogUkVMUEVSU0lTVEVOQ0VfVEVNUCBpZiBhIHRlbXBvcmFyeSBuYW1l c3BhY2UgaXMgc2VsZWN0ZWQuCi0JCSAqLwotCQluYW1lc3BhY2VJZCA9Ci0JCQlSYW5nZVZhckdl dEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2Uoc3BzLT5uYW1lLCBOb0xvY2ssIE5VTEwpOwotCi0J CS8qCi0JCSAqIFRoaXMgd291bGQgZmFpbCBsYXRlciBvbiBhbnl3YXksIGlmIHRoZSByZWxhdGlv biBhbHJlYWR5IGV4aXN0cy4KLQkJICogQnV0IGJ5IGNhdGNoaW5nIGl0IGhlcmUgd2UgY2FuIGVt aXQgYSBuaWNlciBlcnJvciBtZXNzYWdlLgotCQkgKi8KLQkJZXhpc3RpbmdfcmVsaWQgPSBnZXRf cmVsbmFtZV9yZWxpZChyZWxuYW1lLCBuYW1lc3BhY2VJZCk7Ci0JCWlmIChleGlzdGluZ19yZWxp ZCA9PSBzcGxpdFJlbE9pZCAmJiAhaXNTYW1lTmFtZSkKLQkJCS8qIE9uZSBuZXcgcGFydGl0aW9u IGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLwotCQkJaXNTYW1l TmFtZSA9IHRydWU7Ci0JCWVsc2UgaWYgKGV4aXN0aW5nX3JlbGlkICE9IEludmFsaWRPaWQpCi0J CQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSks Ci0JCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIHJlbG5hbWUp KSk7Ci0JfQorCWlzU2FtZU5hbWUgPSBjaGVja05ld1BhcnRpdGlvbnMoY21kLCBzcGxpdFJlbE9p ZCk7CiAKIAkvKiBEZXRhY2ggc3BsaXQgcGFydGl0aW9uLiAqLwogCVJlbW92ZUluaGVyaXRhbmNl KHNwbGl0UmVsLCByZWwsIGZhbHNlKTsKQEAgLTIxMjY1LDQzICsyMTYxMyw0OCBAQCBBVEV4ZWNT cGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0 aW9uIHJlbCwKIAkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIAl9CiAKLQkvKiBDcmVhdGUg bmV3IHBhcnRpdGlvbnMgKGxpa2Ugc3BsaXQgcGFydGl0aW9uKSwgd2l0aG91dCBpbmRleGVzLiAq LwotCWZvcmVhY2gobGlzdHB0ciwgY21kLT5wYXJ0bGlzdCkKLQl7Ci0JCVNpbmdsZVBhcnRpdGlv blNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKLQkJ UmVsYXRpb24JbmV3UGFydFJlbDsKKwkvKiBDcmVhdGUgU1BMSVQgUEFSVElUSU9OIGNvbnRleHQu ICovCisJc2kgPSBjcmVhdGVTcGxpdEluZm8oY21kLCByZWwsIHNwbGl0UmVsLCBkZWZhdWx0UGFy dE9pZCk7CiAKLQkJY3JlYXRlUGFydGl0aW9uVGFibGUoc3BzLT5uYW1lLCBzcGxpdFBhcnROYW1l LCBjb250ZXh0KTsKKwkvKgorCSAqIE9wdGltaXphdGlvbjogaWYgZXhpc3QgYSBuZXcgcGFydGl0 aW9uIHRoYXQgY29udGFpbnMgYWxsIHRoZSByb3dzIG9mCisJICogdGhlIHNwbGl0IHBhcnRpdGlv biB0aGVuIGRvIG5vdCBjb3B5IHJvd3MsIHJlbmFtZSB0aGUgc3BsaXQgcGFydGl0aW9uLgorCSAq LworCXBjV2l0aEFsbFJvd3MgPSBmaW5kTmV3UGFydFdpdGhBbGxSb3dzKHNpKTsKIAotCQkvKiBP cGVuIHRoZSBuZXcgcGFydGl0aW9uIGFuZCBhY3F1aXJlIGV4Y2x1c2l2ZSBsb2NrIG9uIGl0LiAq LwotCQluZXdQYXJ0UmVsID0gdGFibGVfb3BlbnJ2KHNwcy0+bmFtZSwgQWNjZXNzRXhjbHVzaXZl TG9jayk7CisJLyogQ3JlYXRlIG5ldyBwYXJ0aXRpb25zIChsaWtlIHNwbGl0IHBhcnRpdGlvbiks IHdpdGhvdXQgaW5kZXhlcy4gKi8KKwlzcGxpdFBhcnROYW1lID0gY3JlYXRlTmV3UGFydGl0aW9u cyhzaSwgc3BsaXRQYXJ0TmFtZSwgcGNXaXRoQWxsUm93cywgY29udGV4dCk7CiAKLQkJbmV3UGFy dFJlbHMgPSBsYXBwZW5kKG5ld1BhcnRSZWxzLCBuZXdQYXJ0UmVsKTsKKwlpZiAoIXBjV2l0aEFs bFJvd3MpCisJeworCQkvKiBDb3B5IGRhdGEgZnJvbSBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBh cnRpdGlvbnMuICovCisJCW1vdmVTcGxpdFRhYmxlUm93cyhzaSk7CisJCS8qIEtlZXAgdGhlIGxv Y2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9zZShzcGxpdFJlbCwgTm9Mb2NrKTsKIAl9 CiAKLQkvKiBDb3B5IGRhdGEgZnJvbSBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBhcnRpdGlvbnMu ICovCi0JbW92ZVNwbGl0VGFibGVSb3dzKHJlbCwgc3BsaXRSZWwsIGNtZC0+cGFydGxpc3QsIG5l d1BhcnRSZWxzLCBkZWZhdWx0UGFydE9pZCk7Ci0JLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21t aXQuICovCi0JdGFibGVfY2xvc2Uoc3BsaXRSZWwsIE5vTG9jayk7Ci0KIAkvKiBBdHRhY2ggbmV3 IHBhcnRpdGlvbnMgdG8gcGFydGl0aW9uZWQgdGFibGUuICovCi0JZm9yYm90aChsaXN0cHRyLCBj bWQtPnBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJZm9yZWFjaChsaXN0cHRyLCBz aS0+cGFydENvbnRleHRzKQogCXsKLQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmds ZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOwotCQlSZWxhdGlvbgluZXdQYXJ0UmVs ID0gKFJlbGF0aW9uKSBsZmlyc3QobGlzdHB0cjIpOworCQlTcGxpdFBhcnRpdGlvbkNvbnRleHQg KnBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdHB0cik7CiAKIAkJLyog d3F1ZXVlID0gTlVMTDogdmVyaWZpY2F0aW9uIGZvciBlYWNoIGNsb25lZCBjb25zdHJhaW50IGlz IG5vdCBuZWVkLiAqLwotCQlhdHRhY2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIG5ld1BhcnRS ZWwsIHNwcy0+Ym91bmQpOworCQlhdHRhY2hQYXJ0aXRpb25UYWJsZShOVUxMLCByZWwsIHBjLT5w YXJ0UmVsLCBwYy0+c3BzLT5ib3VuZCk7CiAJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0 LiAqLwotCQl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCQl0YWJsZV9jbG9zZShw Yy0+cGFydFJlbCwgTm9Mb2NrKTsKIAl9CiAKLQkvKiBEcm9wIHNwbGl0IHBhcnRpdGlvbi4gKi8K LQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKLQlvYmplY3Qub2JqZWN0SWQg PSBzcGxpdFJlbE9pZDsKLQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOwotCS8qIFByb2JhYmx5IERS T1BfQ0FTQ0FERSBpcyBub3QgbmVlZGVkLiAqLwotCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBE Uk9QX1JFU1RSSUNULCAwKTsKKwlpZiAoIXBjV2l0aEFsbFJvd3MpCisJeworCQkvKiBEcm9wIHNw bGl0IHBhcnRpdGlvbi4gKi8KKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7 CisJCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0UmVsT2lkOworCQlvYmplY3Qub2JqZWN0U3ViSWQg PSAwOworCQkvKiBQcm9iYWJseSBEUk9QX0NBU0NBREUgaXMgbm90IG5lZWRlZC4gKi8KKwkJcGVy Zm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIDApOworCX0KKworCWRlbGV0ZVNw bGl0SW5mbyhzaSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9zcGxpdC5vdXQKaW5kZXggN2ViNTJmNmZlZWYuLmE4ZjNkOGQ2ZDE3IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CkBAIC0xNDE0LDQgKzE0 MTQsMzExIEBAIFNFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOwogCiBEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOwogLS0KKy0tCistLSBUZXN0cyBmb3IgU1BMSVQgb3B0aW1pemF0aW9uIChCWSBSQU5H RSBwYXJ0aXRpb25pbmcpOiBpZiBvbmUgb2YgdGhlIG5ldworLS0gcGFydGl0aW9ucyBjb250YWlu cyBhbGwgdGhlIHJvd3Mgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbiwgdGhlbiB3ZSBjYW4gcmVuYW1l CistLSB0aGUgc3BsaXQgcGFydGl0aW9uIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgcGFydGl0 aW9uIGFuZCBtb3ZpbmcgdGhlIHJvd3MuCistLQorLS0gMS4gT3B0aW1pemF0aW9uIHNob3VsZCBi ZSB1c2VkLgorLS0KK0NSRUFURSBUQUJMRSB0ZXN0KG5hbWUgdGV4dCwgaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdGVzdF8xIFBBUlRJVElPTiBPRiB0ZXN0IEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSB0ZXN0X2RlZiBQQVJUSVRJ T04gT0YgdGVzdCBERUZBVUxUOworQ1JFQVRFIElOREVYIGlkeF90ZXN0X2kgT04gdGVzdChpKTsK K0lOU0VSVCBJTlRPIHRlc3QobmFtZSwgaSkgVkFMVUVTCisgICgnYTEnLCAxKSwgKCdhNScsIDUp LCAoJ2ExNScsIDE1KSwgKCdhMTInLCAxMiksICgnYTE3JywgMTcpLCAoJ2ExMScsIDExKTsKKy0t IHNob3VsZCBiZSByb3dzIDE1LCAxMiwgMTcsIDExOgorU0VMRUNUIGkgRlJPTSB0ZXN0X2RlZjsK KyBpICAKKy0tLS0KKyAxNQorIDEyCisgMTcKKyAxMQorKDQgcm93cykKKworU0VMRUNUICd0ZXN0 X2RlZic6OnJlZ2NsYXNzOjpvaWQgQVMgcHJldl9vaWQgXGdzZXQKK0FMVEVSIFRBQkxFIHRlc3Qg U1BMSVQgUEFSVElUSU9OIHRlc3RfZGVmIElOVE8gCisgIChQQVJUSVRJT04gdGVzdF9kZWYgREVG QVVMVCwgUEFSVElUSU9OIHRlc3RfMiBGT1IgVkFMVUVTIEZST00gKDExKSBUTyAoMTkpKTsKKy0t IHNob3VsZCBiZSAndCcgKHRhYmxlICJ0ZXN0XzIiIGFmdGVyIFNQTElUIHNob3VsZCBiZSB0aGUg c2FtZSBhcyB0YWJsZQorLS0gInRlc3RfZGVmIiBiZWZvcmUgU1BMSVQpOgorU0VMRUNUICd0ZXN0 XzInOjpyZWdjbGFzczo6b2lkPTpwcmV2X29pZDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKKy0tIHNob3VsZCBiZSByb3dzIDE1LCAxMiwgMTcsIDExOgorU0VMRUNUIGkg RlJPTSB0ZXN0XzI7CisgaSAgCistLS0tCisgMTUKKyAxMgorIDE3CisgMTEKKyg0IHJvd3MpCisK Ky0tIHNob3VsZCBiZSAwIHJvd3M6CitTRUxFQ1QgaSBGUk9NIHRlc3RfZGVmOworIGkgCistLS0K KygwIHJvd3MpCisKKy0tIHNob3VsZCBiZSA2IHJvd3M6CitTRUxFQ1QgKiBGUk9NIHRlc3Q7Cisg bmFtZSB8IGkgIAorLS0tLS0tKy0tLS0KKyBhMSAgIHwgIDEKKyBhNSAgIHwgIDUKKyBhMTUgIHwg MTUKKyBhMTIgIHwgMTIKKyBhMTcgIHwgMTcKKyBhMTEgIHwgMTEKKyg2IHJvd3MpCisKK0RST1Ag VEFCTEUgdGVzdCBDQVNDQURFOworLS0KKy0tIDIuIE9wdGltaXphdGlvbiBjYW5ub3QgYmUgdXNl ZCBiZWNhdXNlIG5vdCBleGlzdHMgYnRyZWUtaW5kZXggb24gdGhlCistLSBwYXJ0aXRpb24ga2V5 IChpdCBpcyB1c2VkIHRvIGNoZWNrIHRoZSBwbGFjZW1lbnQgb2Ygcm93cyBpbiB0aGUgcGFydGl0 aW9ucykuCistLQorQ1JFQVRFIFRBQkxFIHRlc3QobmFtZSB0ZXh0LCBpIGludCkgUEFSVElUSU9O IEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0ZXN0XzEgUEFSVElUSU9OIE9GIHRlc3QgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHRlc3RfZGVmIFBBUlRJVElP TiBPRiB0ZXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyB0ZXN0KG5hbWUsIGkpIFZBTFVFUworICAo J2ExJywgMSksICgnYTUnLCA1KSwgKCdhMTUnLCAxNSksICgnYTEyJywgMTIpLCAoJ2ExNycsIDE3 KSwgKCdhMTEnLCAxMSk7CitTRUxFQ1QgJ3Rlc3RfZGVmJzo6cmVnY2xhc3M6Om9pZCBBUyBwcmV2 X29pZCBcZ3NldAorQUxURVIgVEFCTEUgdGVzdCBTUExJVCBQQVJUSVRJT04gdGVzdF9kZWYgSU5U TyAKKyAgKFBBUlRJVElPTiB0ZXN0X2RlZiBERUZBVUxULCBQQVJUSVRJT04gdGVzdF8yIEZPUiBW QUxVRVMgRlJPTSAoMTEpIFRPICgxOSkpOworLS0gc2hvdWxkIGJlICdmJyAodGFibGVzICJ0ZXN0 XzIiIGFuZCAidGVzdF9kZWYiIHNob3VsZCBiZSBkaWZmZXJlbnQpOgorU0VMRUNUICd0ZXN0XzIn OjpyZWdjbGFzczo6b2lkPTpwcmV2X29pZDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBmCiso MSByb3cpCisKKy0tIHNob3VsZCBiZSByb3dzIDE1LCAxMiwgMTcsIDExOgorU0VMRUNUIGkgRlJP TSB0ZXN0XzI7CisgaSAgCistLS0tCisgMTUKKyAxMgorIDE3CisgMTEKKyg0IHJvd3MpCisKKy0t IHNob3VsZCBiZSA2IHJvd3M6CitTRUxFQ1QgKiBGUk9NIHRlc3Q7CisgbmFtZSB8IGkgIAorLS0t LS0tKy0tLS0KKyBhMSAgIHwgIDEKKyBhNSAgIHwgIDUKKyBhMTUgIHwgMTUKKyBhMTIgIHwgMTIK KyBhMTcgIHwgMTcKKyBhMTEgIHwgMTEKKyg2IHJvd3MpCisKK0RST1AgVEFCTEUgdGVzdCBDQVND QURFOworLS0KKy0tIDMuIE9wdGltaXphdGlvbiBjYW5ub3QgYmUgdXNlZCBiZWNhdXNlIHJvd3Mg c2hvdWxkIGJlIG1vdmVkIGludG8gZGlmZmVyZW50CistLSBwYXJ0aXRpb25zLgorLS0KK0NSRUFU RSBUQUJMRSB0ZXN0KG5hbWUgdGV4dCwgaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitD UkVBVEUgVEFCTEUgdGVzdF8xIFBBUlRJVElPTiBPRiB0ZXN0IEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDEwKTsKK0NSRUFURSBUQUJMRSB0ZXN0X2RlZiBQQVJUSVRJT04gT0YgdGVzdCBERUZBVUxU OworQ1JFQVRFIElOREVYIGlkeF90ZXN0X2kgT04gdGVzdChpKTsKK0lOU0VSVCBJTlRPIHRlc3Qo bmFtZSwgaSkgVkFMVUVTCisgICgnYTEnLCAxKSwgKCdhNScsIDUpLCAoJ2ExNScsIDE1KSwgKCdh MTInLCAxMiksICgnYTI3JywgMjcpLCAoJ2ExMScsIDExKTsKK1NFTEVDVCAndGVzdF9kZWYnOjpy ZWdjbGFzczo6b2lkIEFTIHByZXZfb2lkIFxnc2V0CitBTFRFUiBUQUJMRSB0ZXN0IFNQTElUIFBB UlRJVElPTiB0ZXN0X2RlZiBJTlRPIAorICAoUEFSVElUSU9OIHRlc3RfZGVmIERFRkFVTFQsIFBB UlRJVElPTiB0ZXN0XzIgRk9SIFZBTFVFUyBGUk9NICgxMSkgVE8gKDE5KSk7CistLSBzaG91bGQg YmUgJ2YnICh0YWJsZXMgInRlc3RfMiIgYW5kICJ0ZXN0X2RlZiIgc2hvdWxkIGJlIGRpZmZlcmVu dCk6CitTRUxFQ1QgJ3Rlc3RfMic6OnJlZ2NsYXNzOjpvaWQ9OnByZXZfb2lkOworID9jb2x1bW4/ IAorLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworLS0gc2hvdWxkIGJlIHJvd3MgMTUsIDEyLCAx MToKK1NFTEVDVCBpIEZST00gdGVzdF8yOworIGkgIAorLS0tLQorIDE1CisgMTIKKyAxMQorKDMg cm93cykKKworLS0gc2hvdWxkIGJlIDYgcm93czoKK1NFTEVDVCAqIEZST00gdGVzdDsKKyBuYW1l IHwgaSAgCistLS0tLS0rLS0tLQorIGExICAgfCAgMQorIGE1ICAgfCAgNQorIGExNSAgfCAxNQor IGExMiAgfCAxMgorIGExMSAgfCAxMQorIGEyNyAgfCAyNworKDYgcm93cykKKworRFJPUCBUQUJM RSB0ZXN0IENBU0NBREU7CistLQorLS0gNC4gT3B0aW1pemF0aW9uIHNob3VsZCBiZSB1c2VkLCBE RUZBVVQgcGFydGl0aW9uIHJlbmFtZXMgdG8gREVGQVVMVAorLS0gcGFydGl0aW9uLgorLS0KK0NS RUFURSBUQUJMRSB0ZXN0KG5hbWUgdGV4dCwgaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7 CitDUkVBVEUgVEFCTEUgdGVzdF8xIFBBUlRJVElPTiBPRiB0ZXN0IEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSB0ZXN0X2RlZiBQQVJUSVRJT04gT0YgdGVzdCBERUZB VUxUOworQ1JFQVRFIElOREVYIGlkeF90ZXN0X2kgT04gdGVzdChpKTsKK0lOU0VSVCBJTlRPIHRl c3QobmFtZSwgaSkgVkFMVUVTCisgICgnYTEnLCAxKSwgKCdhNScsIDUpLCAoJ2EyNScsIDI1KSwg KCdhMjInLCAyMiksICgnYTI3JywgMjcpLCAoJ2EyMScsIDIxKTsKKy0tIHNob3VsZCBiZSByb3dz IDI1LCAyMiwgMjcsIDIxOgorU0VMRUNUIGkgRlJPTSB0ZXN0X2RlZjsKKyBpICAKKy0tLS0KKyAy NQorIDIyCisgMjcKKyAyMQorKDQgcm93cykKKworU0VMRUNUICd0ZXN0X2RlZic6OnJlZ2NsYXNz OjpvaWQgQVMgcHJldl9vaWQgXGdzZXQKK0FMVEVSIFRBQkxFIHRlc3QgU1BMSVQgUEFSVElUSU9O IHRlc3RfZGVmIElOVE8gCisgIChQQVJUSVRJT04gdGVzdF9kZWYgREVGQVVMVCwgUEFSVElUSU9O IHRlc3RfMiBGT1IgVkFMVUVTIEZST00gKDExKSBUTyAoMTkpKTsKKy0tIHNob3VsZCBiZSAndCcg KHRhYmxlICJ0ZXN0X2RlZiIgYWZ0ZXIgU1BMSVQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRhYmxl CistLSAidGVzdF9kZWYiIGJlZm9yZSBTUExJVCk6CitTRUxFQ1QgJ3Rlc3RfZGVmJzo6cmVnY2xh c3M6Om9pZD06cHJldl9vaWQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQor CistLSBzaG91bGQgYmUgMCByb3dzOgorU0VMRUNUIGkgRlJPTSB0ZXN0XzI7CisgaSAKKy0tLQor KDAgcm93cykKKworLS0gc2hvdWxkIGJlIHJvd3MgMjUsIDIyLCAyNywgMjE6CitTRUxFQ1QgaSBG Uk9NIHRlc3RfZGVmOworIGkgIAorLS0tLQorIDI1CisgMjIKKyAyNworIDIxCisoNCByb3dzKQor CistLSBzaG91bGQgYmUgNiByb3dzOgorU0VMRUNUICogRlJPTSB0ZXN0OworIG5hbWUgfCBpICAK Ky0tLS0tLSstLS0tCisgYTEgICB8ICAxCisgYTUgICB8ICA1CisgYTI1ICB8IDI1CisgYTIyICB8 IDIyCisgYTI3ICB8IDI3CisgYTIxICB8IDIxCisoNiByb3dzKQorCitEUk9QIFRBQkxFIHRlc3Qg Q0FTQ0FERTsKKy0tCistLSA1LiBPcHRpbWl6YXRpb24gc2hvdWxkIGJlIHVzZWQsIDItY29sdW1u IHBhcnRpdGlvbiBrZXkgKyBkaWZmZXJlbnQgY29sdW1ucworLS0gb3JkZXIgaW4gcGFydGl0aW9u cy4KKy0tCitDUkVBVEUgVEFCTEUgdGVzdF8yY29sa2V5KHMgc21hbGxpbnQsIGIgYmlnaW50LCB0 IHRleHQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYiwgcyk7CitDUkVBVEUgVEFCTEUgdGVzdF8yY29s a2V5XzEgUEFSVElUSU9OIE9GIHRlc3RfMmNvbGtleSBGT1IgVkFMVUVTIEZST00gKDEwMDAwMDAw MDEsIDEpIFRPICgxMDAwMDAwMTAwLCAxMDApOworQ1JFQVRFIFRBQkxFIHRlc3RfMmNvbGtleV9k ZWYoaSBpbnQsIGIgYmlnaW50LCBzIHNtYWxsaW50LCB0IHRleHQpOworQUxURVIgVEFCTEUgdGVz dF8yY29sa2V5X2RlZiBEUk9QIENPTFVNTiBpOworQUxURVIgVEFCTEUgdGVzdF8yY29sa2V5IEFU VEFDSCBQQVJUSVRJT04gdGVzdF8yY29sa2V5X2RlZiBERUZBVUxUOworQ1JFQVRFIElOREVYIGlk eF90ZXN0XzJjb2xrZXlfc19iIE9OIHRlc3RfMmNvbGtleShiLCBzKTsKK0lOU0VSVCBJTlRPIHRl c3RfMmNvbGtleSAoYiwgcywgdCkgVkFMVUVTICgxMDAwMDAwMDEwLCAzLCAndmFsdWVfMTBfMycp OworSU5TRVJUIElOVE8gdGVzdF8yY29sa2V5IChiLCBzLCB0KSBWQUxVRVMgKDEwMDAwMDAxMjAs IDQsICd2YWx1ZV8xMjBfNCcpOworSU5TRVJUIElOVE8gdGVzdF8yY29sa2V5IChiLCBzLCB0KSBW QUxVRVMgKDEwMDAwMDAwMDMsIDUsICd2YWx1ZV8zXzUnKTsKK0lOU0VSVCBJTlRPIHRlc3RfMmNv bGtleSAoYiwgcywgdCkgVkFMVUVTICgxMDAwMDAwMTI0LCAyLCAndmFsdWVfMTI0XzInKTsKKy0t IHNob3VsZCBiZSA0IHJvd3M6CitTRUxFQ1QgYiwgcyBGUk9NIHRlc3RfMmNvbGtleTsKKyAgICAg YiAgICAgIHwgcyAKKy0tLS0tLS0tLS0tLSstLS0KKyAxMDAwMDAwMDEwIHwgMworIDEwMDAwMDAw MDMgfCA1CisgMTAwMDAwMDEyMCB8IDQKKyAxMDAwMDAwMTI0IHwgMgorKDQgcm93cykKKworLS0g c2hvdWxkIGJlIDIgcm93czoKK1NFTEVDVCBiLCBzIEZST00gdGVzdF8yY29sa2V5X2RlZjsKKyAg ICAgYiAgICAgIHwgcyAKKy0tLS0tLS0tLS0tLSstLS0KKyAxMDAwMDAwMTIwIHwgNAorIDEwMDAw MDAxMjQgfCAyCisoMiByb3dzKQorCitTRUxFQ1QgJ3Rlc3RfMmNvbGtleV9kZWYnOjpyZWdjbGFz czo6b2lkIEFTIHByZXZfb2lkIFxnc2V0CitBTFRFUiBUQUJMRSB0ZXN0XzJjb2xrZXkgU1BMSVQg UEFSVElUSU9OIHRlc3RfMmNvbGtleV9kZWYgSU5UTworICAoUEFSVElUSU9OIHRlc3RfMmNvbGtl eV8yIEZPUiBWQUxVRVMgRlJPTSAoMTAwMDAwMDEwMSwgMSkgVE8gKDEwMDAwMDAyMDAsIDEwMCks CisgICBQQVJUSVRJT04gdGVzdF8yY29sa2V5X2RlZiBERUZBVUxUKTsKKy0tIHNob3VsZCBiZSAn dCcgKHRhYmxlICJ0ZXN0XzJjb2xrZXlfMiIgYWZ0ZXIgU1BMSVQgc2hvdWxkIGJlIHRoZSBzYW1l IGFzIHRhYmxlCistLSAidGVzdF8yY29sa2V5X2RlZiIgYmVmb3JlIFNQTElUKToKK1NFTEVDVCAn dGVzdF8yY29sa2V5XzInOjpyZWdjbGFzczo6b2lkPTpwcmV2X29pZDsKKyA/Y29sdW1uPyAKKy0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIHNob3VsZCBiZSAyIHJvd3M6CitTRUxFQ1QgYiwg cyBGUk9NIHRlc3RfMmNvbGtleV8yOworICAgICBiICAgICAgfCBzIAorLS0tLS0tLS0tLS0tKy0t LQorIDEwMDAwMDAxMjAgfCA0CisgMTAwMDAwMDEyNCB8IDIKKygyIHJvd3MpCisKKy0tIHNob3Vs ZCBiZSAwIHJvd3M6CitTRUxFQ1QgYiwgcyBGUk9NIHRlc3RfMmNvbGtleV9kZWY7CisgYiB8IHMg CistLS0rLS0tCisoMCByb3dzKQorCistLSBzaG91bGQgYmUgNiByb3dzOgorU0VMRUNUIGIsIHMg RlJPTSB0ZXN0XzJjb2xrZXk7CisgICAgIGIgICAgICB8IHMgCistLS0tLS0tLS0tLS0rLS0tCisg MTAwMDAwMDAxMCB8IDMKKyAxMDAwMDAwMDAzIHwgNQorIDEwMDAwMDAxMjAgfCA0CisgMTAwMDAw MDEyNCB8IDIKKyg0IHJvd3MpCisKKy0tCistLSA1LjEuIE9wdGltaXphdGlvbiBjYW5ub3QgYmUg dXNlZC4KKy0tCitJTlNFUlQgSU5UTyB0ZXN0XzJjb2xrZXkgKGIsIHMsIHQpIFZBTFVFUyAoMTAw MDAwMDIwMCwgMSwgJ3ZhbHVlXzIwMF8xJyk7CitTRUxFQ1QgJ3Rlc3RfMmNvbGtleV8yJzo6cmVn Y2xhc3M6Om9pZCBBUyBwcmV2X29pZCBcZ3NldAorQUxURVIgVEFCTEUgdGVzdF8yY29sa2V5IFNQ TElUIFBBUlRJVElPTiB0ZXN0XzJjb2xrZXlfMiBJTlRPCisgIChQQVJUSVRJT04gdGVzdF8yY29s a2V5XzIgRk9SIFZBTFVFUyBGUk9NICgxMDAwMDAwMTAxLCAxKSBUTyAoMTAwMDAwMDE1MCwgMTAw KSwKKyAgIFBBUlRJVElPTiB0ZXN0XzJjb2xrZXlfMyBGT1IgVkFMVUVTIEZST00gKDEwMDAwMDAx NTEsIDEpIFRPICgxMDAwMDAwMjAwLCAxMDApKTsKKy0tIHNob3VsZCBiZSAnZicgKG9wdGltaXph dGlvbiBpcyBub3QgdXNlZCk6CitTRUxFQ1QgJ3Rlc3RfMmNvbGtleV8yJzo6cmVnY2xhc3M6Om9p ZD06cHJldl9vaWQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZgorKDEgcm93KQorCistLSBz aG91bGQgYmUgMiByb3dzOgorU0VMRUNUIGIsIHMgRlJPTSB0ZXN0XzJjb2xrZXlfMjsKKyAgICAg YiAgICAgIHwgcyAKKy0tLS0tLS0tLS0tLSstLS0KKyAxMDAwMDAwMTIwIHwgNAorIDEwMDAwMDAx MjQgfCAyCisoMiByb3dzKQorCistLSBzaG91bGQgYmUgMSByb3c6CitTRUxFQ1QgYiwgcyBGUk9N IHRlc3RfMmNvbGtleV8zOworICAgICBiICAgICAgfCBzIAorLS0tLS0tLS0tLS0tKy0tLQorIDEw MDAwMDAyMDAgfCAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVzdF8yY29sa2V5IENBU0NBREU7 CistLQogRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCmluZGV4IDQwYzcxODg5YjZlLi4xNzM0MTM1M2UwOSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC04MjksNSArODI5 LDE1NyBAQCBTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKIAogRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKIAorLS0KKy0tCistLSBUZXN0cyBmb3IgU1BMSVQgb3B0aW1pemF0aW9uIChCWSBSQU5H RSBwYXJ0aXRpb25pbmcpOiBpZiBvbmUgb2YgdGhlIG5ldworLS0gcGFydGl0aW9ucyBjb250YWlu cyBhbGwgdGhlIHJvd3Mgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbiwgdGhlbiB3ZSBjYW4gcmVuYW1l CistLSB0aGUgc3BsaXQgcGFydGl0aW9uIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgcGFydGl0 aW9uIGFuZCBtb3ZpbmcgdGhlIHJvd3MuCistLQorLS0gMS4gT3B0aW1pemF0aW9uIHNob3VsZCBi ZSB1c2VkLgorLS0KK0NSRUFURSBUQUJMRSB0ZXN0KG5hbWUgdGV4dCwgaSBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdGVzdF8xIFBBUlRJVElPTiBPRiB0ZXN0IEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSB0ZXN0X2RlZiBQQVJUSVRJ T04gT0YgdGVzdCBERUZBVUxUOworQ1JFQVRFIElOREVYIGlkeF90ZXN0X2kgT04gdGVzdChpKTsK K0lOU0VSVCBJTlRPIHRlc3QobmFtZSwgaSkgVkFMVUVTCisgICgnYTEnLCAxKSwgKCdhNScsIDUp LCAoJ2ExNScsIDE1KSwgKCdhMTInLCAxMiksICgnYTE3JywgMTcpLCAoJ2ExMScsIDExKTsKKy0t IHNob3VsZCBiZSByb3dzIDE1LCAxMiwgMTcsIDExOgorU0VMRUNUIGkgRlJPTSB0ZXN0X2RlZjsK K1NFTEVDVCAndGVzdF9kZWYnOjpyZWdjbGFzczo6b2lkIEFTIHByZXZfb2lkIFxnc2V0CitBTFRF UiBUQUJMRSB0ZXN0IFNQTElUIFBBUlRJVElPTiB0ZXN0X2RlZiBJTlRPIAorICAoUEFSVElUSU9O IHRlc3RfZGVmIERFRkFVTFQsIFBBUlRJVElPTiB0ZXN0XzIgRk9SIFZBTFVFUyBGUk9NICgxMSkg VE8gKDE5KSk7CistLSBzaG91bGQgYmUgJ3QnICh0YWJsZSAidGVzdF8yIiBhZnRlciBTUExJVCBz aG91bGQgYmUgdGhlIHNhbWUgYXMgdGFibGUKKy0tICJ0ZXN0X2RlZiIgYmVmb3JlIFNQTElUKToK K1NFTEVDVCAndGVzdF8yJzo6cmVnY2xhc3M6Om9pZD06cHJldl9vaWQ7CistLSBzaG91bGQgYmUg cm93cyAxNSwgMTIsIDE3LCAxMToKK1NFTEVDVCBpIEZST00gdGVzdF8yOworLS0gc2hvdWxkIGJl IDAgcm93czoKK1NFTEVDVCBpIEZST00gdGVzdF9kZWY7CistLSBzaG91bGQgYmUgNiByb3dzOgor U0VMRUNUICogRlJPTSB0ZXN0OworRFJPUCBUQUJMRSB0ZXN0IENBU0NBREU7CistLQorLS0gMi4g T3B0aW1pemF0aW9uIGNhbm5vdCBiZSB1c2VkIGJlY2F1c2Ugbm90IGV4aXN0cyBidHJlZS1pbmRl eCBvbiB0aGUKKy0tIHBhcnRpdGlvbiBrZXkgKGl0IGlzIHVzZWQgdG8gY2hlY2sgdGhlIHBsYWNl bWVudCBvZiByb3dzIGluIHRoZSBwYXJ0aXRpb25zKS4KKy0tCitDUkVBVEUgVEFCTEUgdGVzdChu YW1lIHRleHQsIGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRl c3RfMSBQQVJUSVRJT04gT0YgdGVzdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVB VEUgVEFCTEUgdGVzdF9kZWYgUEFSVElUSU9OIE9GIHRlc3QgREVGQVVMVDsKK0lOU0VSVCBJTlRP IHRlc3QobmFtZSwgaSkgVkFMVUVTCisgICgnYTEnLCAxKSwgKCdhNScsIDUpLCAoJ2ExNScsIDE1 KSwgKCdhMTInLCAxMiksICgnYTE3JywgMTcpLCAoJ2ExMScsIDExKTsKK1NFTEVDVCAndGVzdF9k ZWYnOjpyZWdjbGFzczo6b2lkIEFTIHByZXZfb2lkIFxnc2V0CitBTFRFUiBUQUJMRSB0ZXN0IFNQ TElUIFBBUlRJVElPTiB0ZXN0X2RlZiBJTlRPIAorICAoUEFSVElUSU9OIHRlc3RfZGVmIERFRkFV TFQsIFBBUlRJVElPTiB0ZXN0XzIgRk9SIFZBTFVFUyBGUk9NICgxMSkgVE8gKDE5KSk7CistLSBz aG91bGQgYmUgJ2YnICh0YWJsZXMgInRlc3RfMiIgYW5kICJ0ZXN0X2RlZiIgc2hvdWxkIGJlIGRp ZmZlcmVudCk6CitTRUxFQ1QgJ3Rlc3RfMic6OnJlZ2NsYXNzOjpvaWQ9OnByZXZfb2lkOworLS0g c2hvdWxkIGJlIHJvd3MgMTUsIDEyLCAxNywgMTE6CitTRUxFQ1QgaSBGUk9NIHRlc3RfMjsKKy0t IHNob3VsZCBiZSA2IHJvd3M6CitTRUxFQ1QgKiBGUk9NIHRlc3Q7CitEUk9QIFRBQkxFIHRlc3Qg Q0FTQ0FERTsKKy0tCistLSAzLiBPcHRpbWl6YXRpb24gY2Fubm90IGJlIHVzZWQgYmVjYXVzZSBy b3dzIHNob3VsZCBiZSBtb3ZlZCBpbnRvIGRpZmZlcmVudAorLS0gcGFydGl0aW9ucy4KKy0tCitD UkVBVEUgVEFCTEUgdGVzdChuYW1lIHRleHQsIGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp OworQ1JFQVRFIFRBQkxFIHRlc3RfMSBQQVJUSVRJT04gT0YgdGVzdCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgdGVzdF9kZWYgUEFSVElUSU9OIE9GIHRlc3QgREVG QVVMVDsKK0NSRUFURSBJTkRFWCBpZHhfdGVzdF9pIE9OIHRlc3QoaSk7CitJTlNFUlQgSU5UTyB0 ZXN0KG5hbWUsIGkpIFZBTFVFUworICAoJ2ExJywgMSksICgnYTUnLCA1KSwgKCdhMTUnLCAxNSks ICgnYTEyJywgMTIpLCAoJ2EyNycsIDI3KSwgKCdhMTEnLCAxMSk7CitTRUxFQ1QgJ3Rlc3RfZGVm Jzo6cmVnY2xhc3M6Om9pZCBBUyBwcmV2X29pZCBcZ3NldAorQUxURVIgVEFCTEUgdGVzdCBTUExJ VCBQQVJUSVRJT04gdGVzdF9kZWYgSU5UTyAKKyAgKFBBUlRJVElPTiB0ZXN0X2RlZiBERUZBVUxU LCBQQVJUSVRJT04gdGVzdF8yIEZPUiBWQUxVRVMgRlJPTSAoMTEpIFRPICgxOSkpOworLS0gc2hv dWxkIGJlICdmJyAodGFibGVzICJ0ZXN0XzIiIGFuZCAidGVzdF9kZWYiIHNob3VsZCBiZSBkaWZm ZXJlbnQpOgorU0VMRUNUICd0ZXN0XzInOjpyZWdjbGFzczo6b2lkPTpwcmV2X29pZDsKKy0tIHNo b3VsZCBiZSByb3dzIDE1LCAxMiwgMTE6CitTRUxFQ1QgaSBGUk9NIHRlc3RfMjsKKy0tIHNob3Vs ZCBiZSA2IHJvd3M6CitTRUxFQ1QgKiBGUk9NIHRlc3Q7CitEUk9QIFRBQkxFIHRlc3QgQ0FTQ0FE RTsKKy0tCistLSA0LiBPcHRpbWl6YXRpb24gc2hvdWxkIGJlIHVzZWQsIERFRkFVVCBwYXJ0aXRp b24gcmVuYW1lcyB0byBERUZBVUxUCistLSBwYXJ0aXRpb24uCistLQorQ1JFQVRFIFRBQkxFIHRl c3QobmFtZSB0ZXh0LCBpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJM RSB0ZXN0XzEgUEFSVElUSU9OIE9GIHRlc3QgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwor Q1JFQVRFIFRBQkxFIHRlc3RfZGVmIFBBUlRJVElPTiBPRiB0ZXN0IERFRkFVTFQ7CitDUkVBVEUg SU5ERVggaWR4X3Rlc3RfaSBPTiB0ZXN0KGkpOworSU5TRVJUIElOVE8gdGVzdChuYW1lLCBpKSBW QUxVRVMKKyAgKCdhMScsIDEpLCAoJ2E1JywgNSksICgnYTI1JywgMjUpLCAoJ2EyMicsIDIyKSwg KCdhMjcnLCAyNyksICgnYTIxJywgMjEpOworLS0gc2hvdWxkIGJlIHJvd3MgMjUsIDIyLCAyNywg MjE6CitTRUxFQ1QgaSBGUk9NIHRlc3RfZGVmOworU0VMRUNUICd0ZXN0X2RlZic6OnJlZ2NsYXNz OjpvaWQgQVMgcHJldl9vaWQgXGdzZXQKK0FMVEVSIFRBQkxFIHRlc3QgU1BMSVQgUEFSVElUSU9O IHRlc3RfZGVmIElOVE8gCisgIChQQVJUSVRJT04gdGVzdF9kZWYgREVGQVVMVCwgUEFSVElUSU9O IHRlc3RfMiBGT1IgVkFMVUVTIEZST00gKDExKSBUTyAoMTkpKTsKKy0tIHNob3VsZCBiZSAndCcg KHRhYmxlICJ0ZXN0X2RlZiIgYWZ0ZXIgU1BMSVQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRhYmxl CistLSAidGVzdF9kZWYiIGJlZm9yZSBTUExJVCk6CitTRUxFQ1QgJ3Rlc3RfZGVmJzo6cmVnY2xh c3M6Om9pZD06cHJldl9vaWQ7CistLSBzaG91bGQgYmUgMCByb3dzOgorU0VMRUNUIGkgRlJPTSB0 ZXN0XzI7CistLSBzaG91bGQgYmUgcm93cyAyNSwgMjIsIDI3LCAyMToKK1NFTEVDVCBpIEZST00g dGVzdF9kZWY7CistLSBzaG91bGQgYmUgNiByb3dzOgorU0VMRUNUICogRlJPTSB0ZXN0OworRFJP UCBUQUJMRSB0ZXN0IENBU0NBREU7CistLQorLS0gNS4gT3B0aW1pemF0aW9uIHNob3VsZCBiZSB1 c2VkLCAyLWNvbHVtbiBwYXJ0aXRpb24ga2V5ICsgZGlmZmVyZW50IGNvbHVtbnMKKy0tIG9yZGVy IGluIHBhcnRpdGlvbnMuCistLQorQ1JFQVRFIFRBQkxFIHRlc3RfMmNvbGtleShzIHNtYWxsaW50 LCBiIGJpZ2ludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKGIsIHMpOworQ1JFQVRFIFRB QkxFIHRlc3RfMmNvbGtleV8xIFBBUlRJVElPTiBPRiB0ZXN0XzJjb2xrZXkgRk9SIFZBTFVFUyBG Uk9NICgxMDAwMDAwMDAxLCAxKSBUTyAoMTAwMDAwMDEwMCwgMTAwKTsKK0NSRUFURSBUQUJMRSB0 ZXN0XzJjb2xrZXlfZGVmKGkgaW50LCBiIGJpZ2ludCwgcyBzbWFsbGludCwgdCB0ZXh0KTsKK0FM VEVSIFRBQkxFIHRlc3RfMmNvbGtleV9kZWYgRFJPUCBDT0xVTU4gaTsKK0FMVEVSIFRBQkxFIHRl c3RfMmNvbGtleSBBVFRBQ0ggUEFSVElUSU9OIHRlc3RfMmNvbGtleV9kZWYgREVGQVVMVDsKK0NS RUFURSBJTkRFWCBpZHhfdGVzdF8yY29sa2V5X3NfYiBPTiB0ZXN0XzJjb2xrZXkoYiwgcyk7CisK K0lOU0VSVCBJTlRPIHRlc3RfMmNvbGtleSAoYiwgcywgdCkgVkFMVUVTICgxMDAwMDAwMDEwLCAz LCAndmFsdWVfMTBfMycpOworSU5TRVJUIElOVE8gdGVzdF8yY29sa2V5IChiLCBzLCB0KSBWQUxV RVMgKDEwMDAwMDAxMjAsIDQsICd2YWx1ZV8xMjBfNCcpOworSU5TRVJUIElOVE8gdGVzdF8yY29s a2V5IChiLCBzLCB0KSBWQUxVRVMgKDEwMDAwMDAwMDMsIDUsICd2YWx1ZV8zXzUnKTsKK0lOU0VS VCBJTlRPIHRlc3RfMmNvbGtleSAoYiwgcywgdCkgVkFMVUVTICgxMDAwMDAwMTI0LCAyLCAndmFs dWVfMTI0XzInKTsKKworLS0gc2hvdWxkIGJlIDQgcm93czoKK1NFTEVDVCBiLCBzIEZST00gdGVz dF8yY29sa2V5OworLS0gc2hvdWxkIGJlIDIgcm93czoKK1NFTEVDVCBiLCBzIEZST00gdGVzdF8y Y29sa2V5X2RlZjsKKworU0VMRUNUICd0ZXN0XzJjb2xrZXlfZGVmJzo6cmVnY2xhc3M6Om9pZCBB UyBwcmV2X29pZCBcZ3NldAorCitBTFRFUiBUQUJMRSB0ZXN0XzJjb2xrZXkgU1BMSVQgUEFSVElU SU9OIHRlc3RfMmNvbGtleV9kZWYgSU5UTworICAoUEFSVElUSU9OIHRlc3RfMmNvbGtleV8yIEZP UiBWQUxVRVMgRlJPTSAoMTAwMDAwMDEwMSwgMSkgVE8gKDEwMDAwMDAyMDAsIDEwMCksCisgICBQ QVJUSVRJT04gdGVzdF8yY29sa2V5X2RlZiBERUZBVUxUKTsKKworLS0gc2hvdWxkIGJlICd0JyAo dGFibGUgInRlc3RfMmNvbGtleV8yIiBhZnRlciBTUExJVCBzaG91bGQgYmUgdGhlIHNhbWUgYXMg dGFibGUKKy0tICJ0ZXN0XzJjb2xrZXlfZGVmIiBiZWZvcmUgU1BMSVQpOgorU0VMRUNUICd0ZXN0 XzJjb2xrZXlfMic6OnJlZ2NsYXNzOjpvaWQ9OnByZXZfb2lkOworCistLSBzaG91bGQgYmUgMiBy b3dzOgorU0VMRUNUIGIsIHMgRlJPTSB0ZXN0XzJjb2xrZXlfMjsKKy0tIHNob3VsZCBiZSAwIHJv d3M6CitTRUxFQ1QgYiwgcyBGUk9NIHRlc3RfMmNvbGtleV9kZWY7CistLSBzaG91bGQgYmUgNiBy b3dzOgorU0VMRUNUIGIsIHMgRlJPTSB0ZXN0XzJjb2xrZXk7CisKKy0tCistLSA1LjEuIE9wdGlt aXphdGlvbiBjYW5ub3QgYmUgdXNlZC4KKy0tCitJTlNFUlQgSU5UTyB0ZXN0XzJjb2xrZXkgKGIs IHMsIHQpIFZBTFVFUyAoMTAwMDAwMDIwMCwgMSwgJ3ZhbHVlXzIwMF8xJyk7CisKK1NFTEVDVCAn dGVzdF8yY29sa2V5XzInOjpyZWdjbGFzczo6b2lkIEFTIHByZXZfb2lkIFxnc2V0CisKK0FMVEVS IFRBQkxFIHRlc3RfMmNvbGtleSBTUExJVCBQQVJUSVRJT04gdGVzdF8yY29sa2V5XzIgSU5UTwor ICAoUEFSVElUSU9OIHRlc3RfMmNvbGtleV8yIEZPUiBWQUxVRVMgRlJPTSAoMTAwMDAwMDEwMSwg MSkgVE8gKDEwMDAwMDAxNTAsIDEwMCksCisgICBQQVJUSVRJT04gdGVzdF8yY29sa2V5XzMgRk9S IFZBTFVFUyBGUk9NICgxMDAwMDAwMTUxLCAxKSBUTyAoMTAwMDAwMDIwMCwgMTAwKSk7CisKKy0t IHNob3VsZCBiZSAnZicgKG9wdGltaXphdGlvbiBpcyBub3QgdXNlZCk6CitTRUxFQ1QgJ3Rlc3Rf MmNvbGtleV8yJzo6cmVnY2xhc3M6Om9pZD06cHJldl9vaWQ7CisKKy0tIHNob3VsZCBiZSAyIHJv d3M6CitTRUxFQ1QgYiwgcyBGUk9NIHRlc3RfMmNvbGtleV8yOworLS0gc2hvdWxkIGJlIDEgcm93 OgorU0VMRUNUIGIsIHMgRlJPTSB0ZXN0XzJjb2xrZXlfMzsKKworRFJPUCBUQUJMRSB0ZXN0XzJj b2xrZXkgQ0FTQ0FERTsKKwogLS0KIERST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7 Ci0tIAoyLjM5LjMgKEFwcGxlIEdpdC0xNDUpCgo= --0000000000006456fe061498cc66 Content-Type: application/octet-stream; name="0002-ALTER-TABLE-SPLIT-PARTITION-command-v26.patch" Content-Disposition: attachment; filename="0002-ALTER-TABLE-SPLIT-PARTITION-command-v26.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu90dgnd1 RnJvbSA5OGMyYzhkY2U0YTAyYmZmYWE0YzBlN2Q5YWZkYmE5ZTAxODZiOTg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNwcm8ucnU+ CkRhdGU6IE1vbiwgMTkgU2VwIDIwMjIgMTc6NTg6NTIgKzAzMDAKU3ViamVjdDogW1BBVENIIDIv NF0gQUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDQwNiArKysrKwogc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArLQogc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgICA2MiArLQogc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgIDY1NyArKysrKysrKwogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgICAxOCArCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2lu Y2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCAgICAgICAgIHwgICAgNSArCiBzcmMvaW5j bHVkZS91dGlscy9ydWxldXRpbHMuaCAgICAgICAgICAgICAgICAgfCAgICAyICsKIC4uLi9pc29s YXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dCAgICB8ICAxOTAgKysrCiBzcmMvdGVz dC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAgICAgfCAgICAxICsKIHNyYy90ZXN0 L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYyB8ICAgNTQgKwogLi4uL3Rlc3Rf ZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgfCAxNDE3ICsrKysrKysrKysrKysr KysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAy ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsICAgICAgfCAgODMz ICsrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAg ICB8ICAgIDEgKwogMTcgZmlsZXMgY2hhbmdlZCwgMzY3OSBpbnNlcnRpb25zKCspLCAxMiBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQv cGFydGl0aW9uLXNwbGl0Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlv bi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCmluZGV4IDJmOTg4OWI0MTlmLi5lZjk0NGUzNzMzYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKQEAgLTY3MCw2ICs2NzAsOSBAQCBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNr Tm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0 cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpjb21wcmVzc2lvbik7 CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hh ciAqc3RvcmFnZW1vZGUpOwogCitzdGF0aWMgdm9pZCBBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0 ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCQkJCQkJCSBSZWxhdGlvbiByZWws IFBhcnRpdGlvbkNtZCAqY21kLAorCQkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpj b250ZXh0KTsKIHN0YXRpYyB2b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVl LCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJICBQYXJ0aXRp b25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIApAQCAtNDcz Niw2ICs0NzM5LDEwIEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJCQlj bWRfbG9ja21vZGUgPSBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJlYWs7CiAKKwkJ CWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVz aXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQkJ Y21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKQEAgLTUxNTks NiArNTE2NiwxMSBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRl clRhYmxlQ21kICpjbWQsCiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICov CiAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0 aXRpb246CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFC TEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9 IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFrOwogCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJ CUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSk7CiAJCQkv KiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCkBAIC01NTYxLDYgKzU1NzMsMTQg QEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2Fz ZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCWFkZHJlc3MgPSBBVEV4ZWNEZXRhY2hQ YXJ0aXRpb25GaW5hbGl6ZShyZWwsICgoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmKS0+bmFtZSk7 CiAJCQlicmVhazsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCWNtZCA9IEFUUGFyc2VU cmFuc2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJ CQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlB c3NlcnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7 CisJCQlBVEV4ZWNTcGxpdFBhcnRpdGlvbih3cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21k ICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgY29udGV4dCk7CisJCQlicmVhazsKIAkJY2FzZSBBVF9N ZXJnZVBhcnRpdGlvbnM6CiAJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFi LCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAogCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4 dCk7CkBAIC02NTU5LDYgKzY1NzksOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRl clRhYmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIjsKIAkJY2Fz ZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElP TiAuLi4gRklOQUxJWkUiOworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJcmV0dXJuICJT UExJVCBQQVJUSVRJT04iOwogCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCXJldHVybiAi TUVSR0UgUEFSVElUSU9OUyI7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CkBAIC0yMDg0NCw2ICsy MDg2NiwyNTUgQEAgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIg KnN0b3JhZ2Vtb2RlKQogCXJldHVybiBjc3RvcmFnZTsKIH0KIAorLyoKKyAqIFN0cnVjdCB3aXRo IGNvbnRleHQgb2YgbmV3IHBhcnRpdGlvbiBmb3IgaW5zZXJ0IHJvd3MgZnJvbSBzcGxpdGVkIHBh cnRpdGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBTcGxpdFBhcnRpdGlvbkNvbnRleHQKK3sKKwlF eHByU3RhdGUgICpwYXJ0cXVhbHN0YXRlOwkvKiBleHByZXNzaW9uIGZvciBjaGVjayBzbG90IGZv ciBwYXJ0aXRpb24KKwkJCQkJCQkJICogKE5VTEwgZm9yIERFRkFVTFQgcGFydGl0aW9uKSAqLwor CUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBzdGF0ZSBvZiBidWxrIGluc2VydHMgZm9yIHBh cnRpdGlvbiAqLworCVR1cGxlVGFibGVTbG90ICpkc3RzbG90OwkvKiBzbG90IGZvciBpbnNlcnQg cm93IGludG8gcGFydGl0aW9uICovCisJUmVsYXRpb24JcGFydFJlbDsJCS8qIHJlbGF0aW9uIGZv ciBwYXJ0aXRpb24gKi8KK30gU3BsaXRQYXJ0aXRpb25Db250ZXh0OworCisKKy8qCisgKiBjcmVh dGVTcGxpdFBhcnRpdGlvbkNvbnRleHQ6IGNyZWF0ZSBjb250ZXh0IGZvciBwYXJ0aXRpb24gYW5k IGZpbGwgaXQKKyAqLworc3RhdGljIFNwbGl0UGFydGl0aW9uQ29udGV4dCAqCitjcmVhdGVTcGxp dFBhcnRpdGlvbkNvbnRleHQoUmVsYXRpb24gcGFydFJlbCkKK3sKKwlTcGxpdFBhcnRpdGlvbkNv bnRleHQgKnBjOworCisJcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICopIHBhbGxvYzAoc2l6 ZW9mKFNwbGl0UGFydGl0aW9uQ29udGV4dCkpOworCXBjLT5wYXJ0UmVsID0gcGFydFJlbDsKKwor CS8qCisJICogUHJlcGFyZSBhIEJ1bGtJbnNlcnRTdGF0ZSBmb3IgdGFibGVfdHVwbGVfaW5zZXJ0 LiBUaGUgRlNNIGlzIGVtcHR5LCBzbworCSAqIGRvbid0IGJvdGhlciB1c2luZyBpdC4KKwkgKi8K KwlwYy0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJLyogQ3JlYXRlIHR1cGxl IHNsb3QgZm9yIG5ldyBwYXJ0aXRpb24uICovCisJcGMtPmRzdHNsb3QgPSBNYWtlU2luZ2xlVHVw bGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihwYy0+cGFydFJlbCksCisJCQkJCQkJCQkJICAg dGFibGVfc2xvdF9jYWxsYmFja3MocGMtPnBhcnRSZWwpKTsKKwlFeGVjU3RvcmVBbGxOdWxsVHVw bGUocGMtPmRzdHNsb3QpOworCisJcmV0dXJuIHBjOworfQorCisvKgorICogZGVsZXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0OiBkZWxldGUgY29udGV4dCBmb3IgcGFydGl0aW9uCisgKi8KK3N0YXRp YyB2b2lkCitkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoU3BsaXRQYXJ0aXRpb25Db250ZXh0 ICpwYywgaW50IHRpX29wdGlvbnMpCit7CisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChw Yy0+ZHN0c2xvdCk7CisJRnJlZUJ1bGtJbnNlcnRTdGF0ZShwYy0+YmlzdGF0ZSk7CisKKwl0YWJs ZV9maW5pc2hfYnVsa19pbnNlcnQocGMtPnBhcnRSZWwsIHRpX29wdGlvbnMpOworCisJcGZyZWUo cGMpOworfQorCisvKgorICogbW92ZVNwbGl0VGFibGVSb3dzOiBzY2FuIHNwbGl0IHBhcnRpdGlv biAoc3BsaXRSZWwpIG9mIHBhcnRpdGlvbmVkIHRhYmxlCisgKiAocmVsKSBhbmQgbW92ZSByb3dz IGludG8gbmV3IHBhcnRpdGlvbnMuCisgKgorICogTmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb246 CisgKiBwYXJ0bGlzdDogbGlzdCBvZiBwb2ludGVycyB0byBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0 cnVjdHVyZXMuCisgKiBuZXdQYXJ0UmVsczogbGlzdCBvZiBSZWxhdGlvbidzLgorICogZGVmYXVs dFBhcnRPaWQ6IG9pZCBvZiBERUZBVUxUIHBhcnRpdGlvbiwgZm9yIHRhYmxlIHJlbC4KKyAqLwor c3RhdGljIHZvaWQKK21vdmVTcGxpdFRhYmxlUm93cyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNw bGl0UmVsLCBMaXN0ICpwYXJ0bGlzdCwgTGlzdCAqbmV3UGFydFJlbHMsIE9pZCBkZWZhdWx0UGFy dE9pZCkKK3sKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQu ICovCisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlDb21tYW5k SWQJbXljaWQ7CisJRVN0YXRlCSAgICplc3RhdGU7CisJTGlzdENlbGwgICAqbGlzdHB0ciwKKwkJ CSAgICpsaXN0cHRyMjsKKwlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwlFeHByQ29udGV4dCAq ZWNvbnRleHQ7CisJVGFibGVTY2FuRGVzYyBzY2FuOworCVNuYXBzaG90CXNuYXBzaG90OworCU1l bW9yeUNvbnRleHQgb2xkQ3h0OworCUxpc3QJICAgKnBhcnRDb250ZXh0cyA9IE5JTDsKKwlUdXBs ZUNvbnZlcnNpb25NYXAgKnR1cGxlX21hcDsKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKmRlZmF1 bHRQYXJ0Q3R4ID0gTlVMTCwKKwkJCSAgICpwYzsKKwlib29sCQlpc09sZERlZmF1bHRQYXJ0ID0g ZmFsc2U7CisKKwlteWNpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7CisKKwllc3RhdGUg PSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisKKwlmb3Jib3RoKGxpc3RwdHIsIHBhcnRsaXN0LCBs aXN0cHRyMiwgbmV3UGFydFJlbHMpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAo U2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJcGMgPSBjcmVhdGVT cGxpdFBhcnRpdGlvbkNvbnRleHQoKFJlbGF0aW9uKSBsZmlyc3QobGlzdHB0cjIpKTsKKworCQlp ZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJeworCQkJLyogV2Ugc2hvdWxkIG5vdCBjcmVh dGUgY29uc3RyYWludCBmb3IgZGV0YWNoZWQgREVGQVVMVCBwYXJ0aXRpb24uICovCisJCQlkZWZh dWx0UGFydEN0eCA9IHBjOworCQl9CisJCWVsc2UKKwkJeworCQkJTGlzdAkgICAqcGFydENvbnN0 cmFpbnQ7CisKKwkJCS8qIEJ1aWxkIGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFy dGl0aW9uIGNoZWNrIHF1YWxzLiAqLworCQkJcGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9t X3BhcnRib3VuZChyZWwsIHNwcy0+Ym91bmQpOworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShM aXN0ICopIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICop IHBhcnRDb25zdHJhaW50KTsKKwkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVj Q2hlY2soKS4gKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhw bGljaXQocGFydENvbnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUgdmFycyBpbiB0 aGUgY29uc3RyYWludCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRvCisJCQkgKiBzcGxp dFJlbCdzLgorCQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0aXRpb25fdmFyYXR0 bm9zKHBhcnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBzcGxpdFJlbCwgcmVsKTsKKwor CQkJcGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBsaW5p dGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQlBc3NlcnQocGMtPnBhcnRxdWFsc3Rh dGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9yZSBwYXJ0aXRpb24gY29udGV4dCBpbnRvIGxp c3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxhcHBlbmQocGFydENvbnRleHRzLCBwYyk7CisJfQor CisJLyoKKwkgKiBDcmVhdGUgcGFydGl0aW9uIGNvbnRleHQgZm9yIERFRkFVTFQgcGFydGl0aW9u LiBXZSBjYW4gaW5zZXJ0IHZhbHVlcworCSAqIGludG8gdGhpcyBwYXJ0aXRpb24gaW4gY2FzZSBz cGFjZXMgd2l0aCB2YWx1ZXMgYmV0d2VlbiBuZXcgcGFydGl0aW9ucy4KKwkgKi8KKwlpZiAoIWRl ZmF1bHRQYXJ0Q3R4ICYmIE9pZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJLyogSW5k aWNhdGUgdGhhdCB3ZSBhbGxvY2F0ZSBjb250ZXh0IGZvciBvbGQgREVGQVVMVCBwYXJ0aXRpb24g Ki8KKwkJaXNPbGREZWZhdWx0UGFydCA9IHRydWU7CisJCWRlZmF1bHRQYXJ0Q3R4ID0gY3JlYXRl U3BsaXRQYXJ0aXRpb25Db250ZXh0KHRhYmxlX29wZW4oZGVmYXVsdFBhcnRPaWQsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spKTsKKwl9CisKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQo ZXN0YXRlKTsKKworCS8qIENyZWF0ZSBuZWNlc3NhcnkgdHVwbGUgc2xvdC4gKi8KKwlzcmNzbG90 ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3Ioc3BsaXRSZWwpLAor CQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3Moc3BsaXRSZWwpKTsKKworCS8qCisJICog TWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIHRv IG5ldyBwYXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRpb24gYnV0IG90aGVyIG5l dyBwYXJ0aXRpb25zIGNhbiB1c2UgdGhlIHNhbWUKKwkgKiBtYXApLgorCSAqLworCXBjID0gKFNw bGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdF9oZWFkKHBhcnRDb250ZXh0cykpOwor CXR1cGxlX21hcCA9IGNvbnZlcnRfdHVwbGVzX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihzcGxp dFJlbCksCisJCQkJCQkJCQkgICBSZWxhdGlvbkdldERlc2NyKHBjLT5wYXJ0UmVsKSk7CisKKwkv KiBTY2FuIHRocm91Z2ggdGhlIHJvd3MuICovCisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90 KEdldExhdGVzdFNuYXBzaG90KCkpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oc3BsaXRSZWws IHNuYXBzaG90LCAwLCBOVUxMKTsKKworCS8qCisJICogU3dpdGNoIHRvIHBlci10dXBsZSBtZW1v cnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVwbGUKKwkgKiBwcm9kdWNlZCwgc28g d2UgZG9uJ3QgbGVhayBtZW1vcnkuCisJICovCisJb2xkQ3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKKworCXdoaWxlICh0YWJsZV9z Y2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzcmNzbG90KSkKKwl7 CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90Owor CisJCS8qIEV4dHJhY3QgZGF0YSBmcm9tIG9sZCB0dXBsZS4gKi8KKwkJc2xvdF9nZXRhbGxhdHRy cyhzcmNzbG90KTsKKworCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzcmNzbG90OworCisJ CS8qIFNlYXJjaCBwYXJ0aXRpb24gZm9yIGN1cnJlbnQgc2xvdCBzcmNzbG90LiAqLworCQlmb3Jl YWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwkJeworCQkJcGMgPSAoU3BsaXRQYXJ0aXRpb25D b250ZXh0ICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkJaWYgKHBjLT5wYXJ0cXVhbHN0YXRlIC8q IHNraXAgREVGQVVMVCBwYXJ0aXRpb24gKi8gJiYKKwkJCQlFeGVjQ2hlY2socGMtPnBhcnRxdWFs c3RhdGUsIGVjb250ZXh0KSkKKwkJCXsKKwkJCQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJ CQl9CisJCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwkJfQorCQlpZiAoIWZvdW5kKQor CQl7CisJCQkvKiBVc2UgREVGQVVMVCBwYXJ0aXRpb24gaWYgaXQgZXhpc3RzLiAqLworCQkJaWYg KGRlZmF1bHRQYXJ0Q3R4KQorCQkJCXBjID0gZGVmYXVsdFBhcnRDdHg7CisJCQllbHNlCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwK KwkJCQkJCSBlcnJtc2coImNhbiBub3QgZmluZCBwYXJ0aXRpb24gZm9yIHNwbGl0IHBhcnRpdGlv biByb3ciKSwKKwkJCQkJCSBlcnJ0YWJsZShzcGxpdFJlbCkpKTsKKwkJfQorCisJCWlmICh0dXBs ZV9tYXApCisJCXsKKwkJCS8qIE5lZWQgdG8gdXNlIG1hcCBmb3IgY29weSBhdHRyaWJ1dGVzLiAq LworCQkJaW5zZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9tYXAtPmF0dHJN YXAsIHNyY3Nsb3QsIHBjLT5kc3RzbG90KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIENvcHkg YXR0cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJCWluc2VydHNsb3QgPSBwYy0+ZHN0c2xvdDsKKwor CQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0c2xvdCk7CisKKwkJCW1lbWNweShpbnNlcnRzbG90LT50 dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFsdWVzLAorCQkJCSAgIHNpemVvZihEYXR1bSkgKiBz cmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfaXNudWxsLCBz cmNzbG90LT50dHNfaXNudWxsLAorCQkJCSAgIHNpemVvZihib29sKSAqIHNyY3Nsb3QtPnR0c19u dmFsaWQpOworCisJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xvdCk7CisJCX0KKwor CQkvKiBXcml0ZSB0aGUgdHVwbGUgb3V0IHRvIHRoZSBuZXcgcmVsYXRpb24uICovCisJCXRhYmxl X3R1cGxlX2luc2VydChwYy0+cGFydFJlbCwgaW5zZXJ0c2xvdCwgbXljaWQsIHRpX29wdGlvbnMs IHBjLT5iaXN0YXRlKTsKKworCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKworCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDeHQp OworCisJdGFibGVfZW5kc2NhbihzY2FuKTsKKwlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3Qp OworCisJaWYgKHR1cGxlX21hcCkKKwkJZnJlZV9jb252ZXJzaW9uX21hcCh0dXBsZV9tYXApOwor CisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzcmNzbG90KTsKKworCUZyZWVFeGVjdXRv clN0YXRlKGVzdGF0ZSk7CisKKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwkJZGVs ZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0 KGxpc3RwdHIpLCB0aV9vcHRpb25zKTsKKworCS8qIE5lZWQgdG8gY2xvc2UgdGFibGUgYW5kIGZy ZWUgYnVmZmVycyBmb3IgREVGQVVMVCBwYXJ0aXRpb24uICovCisJaWYgKGlzT2xkRGVmYXVsdFBh cnQpCisJeworCQlSZWxhdGlvbglkZWZhdWx0UGFydFJlbCA9IGRlZmF1bHRQYXJ0Q3R4LT5wYXJ0 UmVsOworCisJCWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChkZWZhdWx0UGFydEN0eCwgdGlf b3B0aW9ucyk7CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9j bG9zZShkZWZhdWx0UGFydFJlbCwgTm9Mb2NrKTsKKwl9Cit9CisKIC8qCiAgKiBjcmVhdGVQYXJ0 aXRpb25UYWJsZTogY3JlYXRlIHRhYmxlIGZvciBuZXcgcGFydGl0aW9uIHdpdGggZ2l2ZW4gbmFt ZQogICogKG5ld1BhcnROYW1lKSBsaWtlIHRhYmxlIChtb2RlbFJlbE5hbWUpCkBAIC0yMDg5OCw2 ICsyMTE2OSwxNDEgQEAgY3JlYXRlUGFydGl0aW9uVGFibGUoUmFuZ2VWYXIgKm5ld1BhcnROYW1l LCBSYW5nZVZhciAqbW9kZWxSZWxOYW1lLAogCQkJCSAgIE5VTEwpOwogfQogCisvKgorICogQUxU RVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uLW5hbWU+IElOVE8gPHBh cnRpdGlvbi1saXN0PgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCSBQ YXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQorewor CVJlbGF0aW9uCXNwbGl0UmVsOworCU9pZAkJCXNwbGl0UmVsT2lkOworCWNoYXIJCXJlbG5hbWVb TkFNRURBVEFMRU5dOworCU9pZAkJCW5hbWVzcGFjZUlkOworCUxpc3RDZWxsICAgKmxpc3RwdHIs CisJCQkgICAqbGlzdHB0cjI7CisJYm9vbAkJaXNTYW1lTmFtZSA9IGZhbHNlOworCWNoYXIJCXRt cFJlbE5hbWVbTkFNRURBVEFMRU5dOworCUxpc3QJICAgKm5ld1BhcnRSZWxzID0gTklMOworCU9i amVjdEFkZHJlc3Mgb2JqZWN0OworCVJhbmdlVmFyICAgKnNwbGl0UGFydE5hbWUgPSBjbWQtPm5h bWU7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisKKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZh dWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUp KTsKKworCS8qCisJICogV2UgYXJlIGdvaW5nIHRvIGRldGFjaCBhbmQgcmVtb3ZlIHRoaXMgcGFy dGl0aW9uOiBuZWVkIHRvIHVzZSBleGNsdXNpdmUKKwkgKiBsb2NrIGZvciBwcmV2ZW50IERNTC1x dWVyaWVzIHRvIHRoZSBwYXJ0aXRpb24uCisJICovCisJc3BsaXRSZWwgPSB0YWJsZV9vcGVucnYo c3BsaXRQYXJ0TmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwlpZiAoc3BsaXRSZWwtPnJk X3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coImNhbm5v dCBzcGxpdCBub24tdGFibGUgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShzcGxpdFJlbCkpKSk7CisKKwlzcGxpdFJlbE9pZCA9IFJlbGF0aW9uR2V0UmVs aWQoc3BsaXRSZWwpOworCisJLyogQ2hlY2sgZGVzY3JpcHRpb25zIG9mIG5ldyBwYXJ0aXRpb25z LiAqLworCWZvcmVhY2gobGlzdHB0ciwgY21kLT5wYXJ0bGlzdCkKKwl7CisJCU9pZAkJCWV4aXN0 aW5nX3JlbGlkOworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9u U3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJc3RybGNweShyZWxuYW1lLCBzcHMtPm5hbWUt PnJlbG5hbWUsIE5BTUVEQVRBTEVOKTsKKworCQkvKgorCQkgKiBMb29rIHVwIHRoZSBuYW1lc3Bh Y2UgaW4gd2hpY2ggd2UgYXJlIHN1cHBvc2VkIHRvIGNyZWF0ZSB0aGUKKwkJICogcGFydGl0aW9u LCBjaGVjayB3ZSBoYXZlIHBlcm1pc3Npb24gdG8gY3JlYXRlIHRoZXJlLCBsb2NrIGl0CisJCSAq IGFnYWluc3QgY29uY3VycmVudCBkcm9wLCBhbmQgbWFyayBzdG10LT5yZWxhdGlvbiBhcworCQkg KiBSRUxQRVJTSVNURU5DRV9URU1QIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBpcyBzZWxlY3Rl ZC4KKwkJICovCisJCW5hbWVzcGFjZUlkID0KKwkJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlv bk5hbWVzcGFjZShzcHMtPm5hbWUsIE5vTG9jaywgTlVMTCk7CisKKwkJLyoKKwkJICogVGhpcyB3 b3VsZCBmYWlsIGxhdGVyIG9uIGFueXdheSwgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3Rz LgorCQkgKiBCdXQgYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2VyIGVycm9y IG1lc3NhZ2UuCisJCSAqLworCQlleGlzdGluZ19yZWxpZCA9IGdldF9yZWxuYW1lX3JlbGlkKHJl bG5hbWUsIG5hbWVzcGFjZUlkKTsKKwkJaWYgKGV4aXN0aW5nX3JlbGlkID09IHNwbGl0UmVsT2lk ICYmICFpc1NhbWVOYW1lKQorCQkJLyogT25lIG5ldyBwYXJ0aXRpb24gY2FuIGhhdmUgdGhlIHNh bWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24uICovCisJCQlpc1NhbWVOYW1lID0gdHJ1ZTsKKwkJ ZWxzZSBpZiAoZXhpc3RpbmdfcmVsaWQgIT0gSW52YWxpZE9pZCkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJIGVycm1zZygi cmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgcmVsbmFtZSkpKTsKKwl9CisKKwkvKiBE ZXRhY2ggc3BsaXQgcGFydGl0aW9uLiAqLworCVJlbW92ZUluaGVyaXRhbmNlKHNwbGl0UmVsLCBy ZWwsIGZhbHNlKTsKKwkvKiBEbyB0aGUgZmluYWwgcGFydCBvZiBkZXRhY2hpbmcuICovCisJRGV0 YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCBzcGxpdFJlbCwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lk KTsKKworCS8qCisJICogSWYgbmV3IHBhcnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyBzcGxp dCBwYXJ0aXRpb24gdGhlbiB3ZSBzaG91bGQKKwkgKiByZW5hbWUgc3BsaXQgcGFydGl0aW9uIGZv ciByZXVzZSBuYW1lLgorCSAqLworCWlmIChpc1NhbWVOYW1lKQorCXsKKwkJLyoKKwkJICogV2Ug bXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9u IHR1cGxlCisJCSAqIHZpc2libGUgZm9yIHJlbmFtZS4KKwkJICovCisJCUNvbW1hbmRDb3VudGVy SW5jcmVtZW50KCk7CisJCS8qIFJlbmFtZSBwYXJ0aXRpb24uICovCisJCXNwcmludGYodG1wUmVs TmFtZSwgInNwbGl0LSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9jUGlk KTsKKwkJUmVuYW1lUmVsYXRpb25JbnRlcm5hbChzcGxpdFJlbE9pZCwgdG1wUmVsTmFtZSwgZmFs c2UsIGZhbHNlKTsKKwkJc3BsaXRQYXJ0TmFtZSA9IG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNl X25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uoc3BsaXRSZWwpKSwKKwkJCQkJCQkJCSB0bXBSZWxO YW1lLCAtMSk7CisKKwkJLyoKKwkJICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIg dG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1cGxlCisJCSAqIHZpc2libGUgYWZ0ZXIgcmVu YW1lLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwl9CisKKwkvKiBDcmVh dGUgbmV3IHBhcnRpdGlvbnMgKGxpa2Ugc3BsaXQgcGFydGl0aW9uKSwgd2l0aG91dCBpbmRleGVz LiAqLworCWZvcmVhY2gobGlzdHB0ciwgY21kLT5wYXJ0bGlzdCkKKwl7CisJCVNpbmdsZVBhcnRp dGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsK KwkJUmVsYXRpb24JbmV3UGFydFJlbDsKKworCQljcmVhdGVQYXJ0aXRpb25UYWJsZShzcHMtPm5h bWUsIHNwbGl0UGFydE5hbWUsIGNvbnRleHQpOworCisJCS8qIE9wZW4gdGhlIG5ldyBwYXJ0aXRp b24gYW5kIGFjcXVpcmUgZXhjbHVzaXZlIGxvY2sgb24gaXQuICovCisJCW5ld1BhcnRSZWwgPSB0 YWJsZV9vcGVucnYoc3BzLT5uYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQluZXdQYXJ0 UmVscyA9IGxhcHBlbmQobmV3UGFydFJlbHMsIG5ld1BhcnRSZWwpOworCX0KKworCS8qIENvcHkg ZGF0YSBmcm9tIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9ucy4gKi8KKwltb3ZlU3Bs aXRUYWJsZVJvd3MocmVsLCBzcGxpdFJlbCwgY21kLT5wYXJ0bGlzdCwgbmV3UGFydFJlbHMsIGRl ZmF1bHRQYXJ0T2lkKTsKKwkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8KKwl0YWJs ZV9jbG9zZShzcGxpdFJlbCwgTm9Mb2NrKTsKKworCS8qIEF0dGFjaCBuZXcgcGFydGl0aW9ucyB0 byBwYXJ0aXRpb25lZCB0YWJsZS4gKi8KKwlmb3Jib3RoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3Qs IGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9 IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmVsYXRpb24JbmV3 UGFydFJlbCA9IChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIyKTsKKworCQkvKiB3cXVldWUgPSBO VUxMOiB2ZXJpZmljYXRpb24gZm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90IG5lZWQu ICovCisJCWF0dGFjaFBhcnRpdGlvblRhYmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgc3BzLT5i b3VuZCk7CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9z ZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCX0KKworCS8qIERyb3Agc3BsaXQgcGFydGl0aW9uLiAq LworCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCW9iamVjdC5vYmplY3RJ ZCA9IHNwbGl0UmVsT2lkOworCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJLyogUHJvYmFibHkg RFJPUF9DQVNDQURFIGlzIG5vdCBuZWVkZWQuICovCisJcGVyZm9ybURlbGV0aW9uKCZvYmplY3Qs IERST1BfUkVTVFJJQ1QsIDApOworfQorCiAvKgogICogbW92ZU1lcmdlZFRhYmxlc1Jvd3M6IHNj YW4gcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgKG1lcmdpbmdQYXJ0aXRpb25zTGlzdCkKICAqIG9m IHRoZSBwYXJ0aXRpb25lZCB0YWJsZSAocmVsKSBhbmQgbW92ZSByb3dzIGludG8gdGhlIG5ldyBw YXJ0aXRpb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDBkOWQzNTFiNDQ1Li4xNmQ3NjY3ODZiNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CkBAIC0yNzAsNiArMjcwLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlQYXJ0 aXRpb25FbGVtICpwYXJ0ZWxlbTsKIAlQYXJ0aXRpb25TcGVjICpwYXJ0c3BlYzsKIAlQYXJ0aXRp b25Cb3VuZFNwZWMgKnBhcnRib3VuZHNwZWM7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc2luZ2xl cGFydHNwZWM7CiAJUm9sZVNwZWMgICAqcm9sZXNwZWM7CiAJUHVibGljYXRpb25PYmpTcGVjICpw dWJsaWNhdGlvbm9iamVjdHNwZWM7CiAJc3RydWN0IFNlbGVjdExpbWl0ICpzZWxlY3RsaW1pdDsK QEAgLTY0NSw2ICs2NDYsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPHBhcnRl bGVtPglwYXJ0X2VsZW0KICV0eXBlIDxsaXN0PgkJcGFydF9wYXJhbXMKICV0eXBlIDxwYXJ0Ym91 bmRzcGVjPiBQYXJ0aXRpb25Cb3VuZFNwZWMKKyV0eXBlIDxzaW5nbGVwYXJ0c3BlYz4JU2luZ2xl UGFydGl0aW9uU3BlYworJXR5cGUgPGxpc3Q+CQlwYXJ0aXRpb25zX2xpc3QKICV0eXBlIDxsaXN0 PgkJaGFzaF9wYXJ0Ym91bmQKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9lbGVtCiAK QEAgLTc3MCw3ICs3NzMsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVNBVkVQT0lOVCBT Q0FMQVIgU0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBTRUNPTkRfUCBTRUNVUklUWSBTRUxF Q1QKIAlTRVFVRU5DRSBTRVFVRU5DRVMKIAlTRVJJQUxJWkFCTEUgU0VSVkVSIFNFU1NJT04gU0VT U0lPTl9VU0VSIFNFVCBTRVRTIFNFVE9GIFNIQVJFIFNIT1cKLQlTSU1JTEFSIFNJTVBMRSBTS0lQ IFNNQUxMSU5UIFNOQVBTSE9UIFNPTUUgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAorCVNJTUlM QVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTUExJVCBTUUxfUCBTVEFCTEUg U1RBTkRBTE9ORV9QCiAJU1RBUlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNU T1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklOR19QIFNUUklQX1AKIAlTVUJTQ1JJUFRJT04gU1VC U1RSSU5HIFNVUFBPUlQgU1lNTUVUUklDIFNZU0lEIFNZU1RFTV9QIFNZU1RFTV9VU0VSCiAKQEAg LTIzMDAsNiArMjMwMywyMyBAQCBhbHRlcl90YWJsZV9jbWRzOgogCQkJfCBhbHRlcl90YWJsZV9j bWRzICcsJyBhbHRlcl90YWJsZV9jbWQJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAK K3BhcnRpdGlvbnNfbGlzdDoKKwkJCVNpbmdsZVBhcnRpdGlvblNwZWMJCQkJCQkJeyAkJCA9IGxp c3RfbWFrZTEoJDEpOyB9CisJCQl8IHBhcnRpdGlvbnNfbGlzdCAnLCcgU2luZ2xlUGFydGl0aW9u U3BlYwl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKworU2luZ2xlUGFydGl0aW9uU3Bl YzoKKwkJCVBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBQYXJ0aXRpb25Cb3VuZFNwZWMKKwkJCQl7 CisJCQkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKm4gPSBtYWtlTm9kZShTaW5nbGVQYXJ0aXRpb25T cGVjKTsKKworCQkJCQluLT5uYW1lID0gJDI7CisJCQkJCW4tPmJvdW5kID0gJDM7CisKKwkJCQkJ JCQgPSBuOworCQkJCX0KKwkJOworCiBwYXJ0aXRpb25fY21kOgogCQkJLyogQUxURVIgVEFCTEUg PG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHRhYmxlX25hbWU+IEZPUiBWQUxVRVMgKi8KIAkJCUFU VEFDSCBQQVJUSVRJT04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRTcGVjCkBAIC0yMzQ0 LDYgKzIzNjQsMjAgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21k OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+ IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uX25hbWU+IElOVE8gKCkgKi8KKwkJCXwgU1BMSVQg UEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIElOVE8gJygnIHBhcnRpdGlvbnNfbGlzdCAnKScKKwkJ CQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJ CQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRpb25DbWQpOworCisJCQkJCW4t PnN1YnR5cGUgPSBBVF9TcGxpdFBhcnRpdGlvbjsKKwkJCQkJY21kLT5uYW1lID0gJDM7CisJCQkJ CWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gJDY7CisJCQkJCWNtZC0+ Y29uY3VycmVudCA9IGZhbHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQk ID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFS VElUSU9OUyAoKSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KIAkJCXwgTUVSR0UgUEFSVElUSU9O UyAnKCcgcXVhbGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZpZWRfbmFtZQogCQkJCXsK QEAgLTE3NTk1LDYgKzE3NjI5LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBTSU1QTEUK IAkJCXwgU0tJUAogCQkJfCBTTkFQU0hPVAorCQkJfCBTUExJVAogCQkJfCBTUUxfUAogCQkJfCBT VEFCTEUKIAkJCXwgU1RBTkRBTE9ORV9QCkBAIC0xODIyNiw2ICsxODI2MSw3IEBAIGJhcmVfbGFi ZWxfa2V5d29yZDoKIAkJCXwgU01BTExJTlQKIAkJCXwgU05BUFNIT1QKIAkJCXwgU09NRQorCQkJ fCBTUExJVAogCQkJfCBTUUxfUAogCQkJfCBTVEFCTEUKIAkJCXwgU1RBTkRBTE9ORV9QCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCA0OGEyM2M3Y2E0Mi4uODhhNGE0MTE4NmEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyB2 b2lkIHRyYW5zZm9ybUNvbnN0cmFpbnRBdHRycyhDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJ CQkJCQkJIExpc3QgKmNvbnN0cmFpbnRMaXN0KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbHVt blR5cGUoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pOwogc3RhdGlj IHZvaWQgc2V0U2NoZW1hTmFtZShjb25zdCBjaGFyICpjb250ZXh0X3NjaGVtYSwgY2hhciAqKnN0 bXRfc2NoZW1hX25hbWUpOwotc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKTsKK3N0YXRpYyB2b2lkIHRyYW5z Zm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25Cb3VuZFNw ZWMgKmJvdW5kKTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zvcm1QYXJ0aXRpb25SYW5nZUJvdW5kcyhQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0LAogCQkJCQkJCQkJCSAgIFJlbGF0aW9uIHBh cmVudCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUluZmluaXRlQm91bmRzKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqYmxpc3QpOwpAQCAtMzQxNSw2ICszNDE1LDQzIEBAIHRyYW5zZm9ybVJ1bGVT dG10KFJ1bGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIH0KIAogCisvKgor ICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBU QUJMTEUgLi4uIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCisgKgorICogRm9yIGVhY2ggbmV3IHBh cnRpdGlvbiBzcHMtPmJvdW5kIGlzIHNldCB0byB0aGUgdHJhbnNmb3JtZWQgdmFsdWUgb2YgYm91 bmQuCisgKiBEb2VzIGNoZWNrcyBmb3IgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zLgorICovCitz dGF0aWMgdm9pZAordHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQoQ3JlYXRlU3RtdENvbnRl eHQgKmN4dCwgUGFydGl0aW9uQ21kICpwYXJ0Y21kKQoreworCVJlbGF0aW9uCXBhcmVudCA9IGN4 dC0+cmVsOworCU9pZAkJCXNwbGl0UGFydE9pZDsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyOworCisJ aWYgKHBhcmVudC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9E RUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFi bGUiLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnQpKSkpOworCisJLyogVHJhbnNmb3Jt IHBhcnRpdGlvbiBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0OiAqLworCWZv cmVhY2gobGlzdHB0ciwgcGFydGNtZC0+cGFydGxpc3QpCisJeworCQlTaW5nbGVQYXJ0aXRpb25T cGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJ Y3h0LT5wYXJ0Ym91bmQgPSBOVUxMOworCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoY3h0LCBzcHMt PmJvdW5kKTsKKwkJLyogQXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0aXRpb24g Ym91bmQuICovCisJCXNwcy0+Ym91bmQgPSBjeHQtPnBhcnRib3VuZDsKKwl9CisKKwlzcGxpdFBh cnRPaWQgPSBSYW5nZVZhckdldFJlbGlkKHBhcnRjbWQtPm5hbWUsIE5vTG9jaywgZmFsc2UpOwor CisJLyogVGhlbiB3ZSBzaG91bGQgY2hlY2sgcGFydGl0aW9ucyB3aXRoIHRyYW5zZm9ybWVkIGJv dW5kcy4gKi8KKwljaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChwYXJlbnQsIHNwbGl0UGFydE9p ZCwgcGFydGNtZC0+bmFtZSwgcGFydGNtZC0+cGFydGxpc3QsIGN4dC0+cHN0YXRlKTsKK30KKwor CiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKICAqCQlBbmFseXplIHRoZSBB TFRFUiBUQUJMTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZApAQCAtMzc1MSw3ICszNzg4 LDcgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAq c3RtdCwKIAkJCQl7CiAJCQkJCVBhcnRpdGlvbkNtZCAqcGFydGNtZCA9IChQYXJ0aXRpb25DbWQg KikgY21kLT5kZWY7CiAKLQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRjbWQp OworCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4dCwgcGFydGNtZC0+Ym91bmQpOwogCQkJ CQkvKiBhc3NpZ24gdHJhbnNmb3JtZWQgdmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3VuZCAqLwog CQkJCQlwYXJ0Y21kLT5ib3VuZCA9IGN4dC5wYXJ0Ym91bmQ7CiAJCQkJfQpAQCAtMzc1OSw2ICsz Nzk2LDcgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3Rt dCAqc3RtdCwKIAkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOwogCQkJCWJyZWFr OwogCisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgogCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlv bnM6CiAJCQkJewogCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICop IGNtZC0+ZGVmOwpAQCAtMzc2Nyw3ICszODA1LDExIEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10 KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJCQllcmVwb3J0KEVSUk9SLAog CQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAogCQkJ CQkJCQkgZXJybXNnKCJsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWlucyBhdCBs ZWFzdCB0d28gaXRlbXMiKSkpOwotCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgm Y3h0LCBwYXJ0Y21kKTsKKworCQkJCQlpZiAoY21kLT5zdWJ0eXBlID09IEFUX1NwbGl0UGFydGl0 aW9uKQorCQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQoJmN4dCwgcGFydGNtZCk7 CisJCQkJCWVsc2UKKwkJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBh cnRjbWQpOwogCQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOwogCQkJCQlicmVh azsKIAkJCQl9CkBAIC00MTcyLDEzICs0MjE0LDEzIEBAIHNldFNjaGVtYU5hbWUoY29uc3QgY2hh ciAqY29udGV4dF9zY2hlbWEsIGNoYXIgKipzdG10X3NjaGVtYV9uYW1lKQogCiAvKgogICogdHJh bnNmb3JtUGFydGl0aW9uQ21kCi0gKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSCBQQVJUSVRJ T04gY29tbWFuZAorICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0gvU1BMSVQgUEFSVElUSU9O IGNvbW1hbmQKICAqCi0gKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0ggUEFSVElUSU9OIGNvbW1hbmQs IGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKLSAqIHRyYW5zZm9ybWVkIHZhbHVlIG9mIGNt ZC0+Ym91bmQuCisgKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0gvU1BMSVQgUEFSVElUSU9OIGNvbW1h bmQsIGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKKyAqIHRyYW5zZm9ybWVkIHZhbHVlIG9m IGJvdW5kLgogICovCiBzdGF0aWMgdm9pZAotdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQordHJhbnNmb3JtUGFydGl0aW9uQ21k KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpCiB7CiAJ UmVsYXRpb24JcGFyZW50UmVsID0gY3h0LT5yZWw7CiAKQEAgLTQxODcsOSArNDIyOSw5IEBAIHRy YW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQg KmNtZCkKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFOgogCQkJLyogdHJhbnNmb3Jt IHRoZSBwYXJ0aXRpb24gYm91bmQsIGlmIGFueSAqLwogCQkJQXNzZXJ0KFJlbGF0aW9uR2V0UGFy dGl0aW9uS2V5KHBhcmVudFJlbCkgIT0gTlVMTCk7Ci0JCQlpZiAoY21kLT5ib3VuZCAhPSBOVUxM KQorCQkJaWYgKGJvdW5kICE9IE5VTEwpCiAJCQkJY3h0LT5wYXJ0Ym91bmQgPSB0cmFuc2Zvcm1Q YXJ0aXRpb25Cb3VuZChjeHQtPnBzdGF0ZSwgcGFyZW50UmVsLAotCQkJCQkJCQkJCQkJCQkgY21k LT5ib3VuZCk7CisJCQkJCQkJCQkJCQkJCSBib3VuZCk7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxL SU5EX1BBUlRJVElPTkVEX0lOREVYOgogCkBAIC00MTk3LDcgKzQyMzksNyBAQCB0cmFuc2Zvcm1Q YXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJ CQkgKiBBIHBhcnRpdGlvbmVkIGluZGV4IGNhbm5vdCBoYXZlIGEgcGFydGl0aW9uIGJvdW5kIHNl dC4gIEFMVEVSCiAJCQkgKiBJTkRFWCBwcmV2ZW50cyB0aGF0IHdpdGggaXRzIGdyYW1tYXIsIGJ1 dCBub3QgQUxURVIgVEFCTEUuCiAJCQkgKi8KLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwpCisJ CQlpZiAoYm91bmQgIT0gTlVMTCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJtc2coIlwiJXNc IiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRi b3VuZHMuYwppbmRleCA5ZWQ4MGQ3MjFlZC4uYzM2ZTI2YmE0YmQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0 aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtNTA0MCwxMCArNTA0MCw2OSBAQCBjaGVja190d29fcGFy dGl0aW9uc19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCX0KIH0KIAorLyoKKyAqIGNo ZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkg TElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3Ig Y2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoKS4KKyAqIENoZWNrcyB0aGF0IHRoZSB2YWx1ZXMg b2YgdGhlIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBvdmVybGFwLgorICoKKyAqIHBhcmVudDoJcGFy dGl0aW9uZWQgdGFibGUKKyAqIHBhcnRzOglhcnJheSBvZiBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0 cnVjdHMgd2l0aCBpbmZvIGFib3V0IHNwbGl0IHBhcnRpdGlvbnMKKyAqIG5wYXJ0czoJc2l6ZSBv ZiBhcnJheSAicGFydHMiCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25zX25vdF9v dmVybGFwX2xpc3QoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkgIFNpbmdsZVBhcnRpdGlvblNw ZWMgKipwYXJ0cywKKwkJCQkJCQkJICBpbnQgbnBhcnRzLAorCQkJCQkJCQkgIFBhcnNlU3RhdGUg KnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5IFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWSA9 IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJaW50CQkJb3ZlcmxhcF9sb2NhdGlv biA9IC0xOworCWludAkJCWksCisJCQkJajsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMxLAor CQkJICAgKnNwczI7CisJTGlzdAkgICAqb3ZlcmxhcDsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5 ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKworCWZvciAoaSA9IDA7IGkgPCBucGFydHM7 IGkrKykKKwl7CisJCXNwczEgPSBwYXJ0c1tpXTsKKworCQlmb3IgKGogPSBpICsgMTsgaiA8IG5w YXJ0czsgaisrKQorCQl7CisJCQlzcHMyID0gcGFydHNbal07CisKKwkJCS8qCisJCQkgKiBDYWxj dWxhdGUgaW50ZXJzZWN0aW9uIGJldHdlZW4gdmFsdWVzIG9mIHR3byBwYXJ0aXRpb25zLgorCQkJ ICovCisJCQlvdmVybGFwID0gbGlzdF9pbnRlcnNlY3Rpb24oc3BzMS0+Ym91bmQtPmxpc3RkYXR1 bXMsCisJCQkJCQkJCQkJc3BzMi0+Ym91bmQtPmxpc3RkYXR1bXMpOworCQkJaWYgKGxpc3RfbGVu Z3RoKG92ZXJsYXApID4gMCkKKwkJCXsKKwkJCQlDb25zdAkgICAqdmFsID0gKENvbnN0ICopIGxm aXJzdChsaXN0X2hlYWQob3ZlcmxhcCkpOworCisJCQkJb3ZlcmxhcF9sb2NhdGlvbiA9IHZhbC0+ bG9jYXRpb247CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkgZXJybXNnKCJuZXcgcGFydGl0aW9uIFwi JXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uIFwiJXNcIiIsCisJ CQkJCQkJCXNwczEtPm5hbWUtPnJlbG5hbWUsIHNwczItPm5hbWUtPnJlbG5hbWUpLAorCQkJCQkJ IHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKSk7CisJCQl9CisJ CX0KKwl9Cit9CisKIC8qCiAgKiBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMKICAqCiAgKiBSZXR1 cm5zIGRlc2NyaXB0aW9uIG9mIHBhcnRpdGlvbiB3aXRoIE9pZCAicGFydE9pZCIgYW5kIG5hbWUg Im5hbWUiLgorICoKKyAqIHBhcnRPaWQ6CXBhcnRpdGlvbiBPaWQKKyAqIG5hbWU6CXBhcnRpdGlv biBuYW1lCiAgKi8KIHN0YXRpYyBQYXJ0aXRpb25Cb3VuZFNwZWMgKgogZ2V0X3BhcnRpdGlvbl9i b3VuZF9zcGVjKE9pZCBwYXJ0T2lkLCBSYW5nZVZhciAqbmFtZSkKQEAgLTUwNzYsNiArNTEzNSw2 MDQgQEAgZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKE9pZCBwYXJ0T2lkLCBSYW5nZVZhciAqbmFt ZSkKIAlyZXR1cm4gYm91bmRzcGVjOwogfQogCisvKgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5k c19mb3Jfc3BsaXRfcmFuZ2UKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIFJBTkdFIHBhcnRpdGlv bmluZykKKyAqCisgKiBDaGVja3MgdGhhdCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbiAic3BlYyIg aXMgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdAorICogcGFydGl0aW9uICh3aXRoIE9pZCBzcGxpdFBh cnRPaWQpLiBJZiBmaXJzdD10cnVlICh0aGlzIG1lYW5zIHRoYXQgInNwZWMiIGlzCisgKiB0aGUg Zmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMpIHRoZW4gbG93ZXIgYm91bmQgb2YgInNwZWMiIHNob3Vs ZCBiZSBlcXVhbCAob3IKKyAqIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBpbiBjYXNlIGRlZmF1bHRQ YXJ0PXRydWUpIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0CisgKiBwYXJ0aXRpb24uIElmIGxhc3Q9 dHJ1ZSAodGhpcyBtZWFucyB0aGF0ICJzcGVjIiBpcyB0aGUgbGFzdCBvZiBuZXcKKyAqIHBhcnRp dGlvbnMpIHRoZW4gdXBwZXIgYm91bmQgb2Ygb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3Ig bGVzcyB0aGFuIG9yCisgKiBlcXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQg dGFibGUKKyAqIHJlbG5hbWU6CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJ CQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0 T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBzcGxpdFBhcnROYW1lOglzcGxpdCBwYXJ0aXRp b24gbmFtZQorICogZmlyc3Q6CQkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb24gInNwZWMiIGlz IGZpcnN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBsYXN0OgkJCXRydWUgaW4gY2FzZSBuZXcgcGFy dGl0aW9uICJzcGVjIiBpcyBsYXN0IG9mIG5ldyBwYXJ0aXRpb25zCisgKiBkZWZhdWx0UGFydDoJ CXRydWUgaW4gY2FzZSBwYXJ0aXRpb25lZCB0YWJsZSBoYXMgREVGQVVMVCBwYXJ0aXRpb24KKyAq IHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJy b3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9y X3NwbGl0X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCSAgIGNoYXIgKnJlbG5hbWUs CisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgICBPaWQg c3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgUmFuZ2VWYXIgKnNwbGl0UGFydE5hbWUsCisJCQkJ CQkJCQkgICBib29sIGZpcnN0LAorCQkJCQkJCQkJICAgYm9vbCBsYXN0LAorCQkJCQkJCQkJICAg Ym9vbCBkZWZhdWx0UGFydCwKKwkJCQkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQ YXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0 aXRpb25SYW5nZUJvdW5kICpsb3dlciwKKwkJCSAgICp1cHBlcjsKKwlpbnQJCQljbXB2YWw7CisK KwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCUFz c2VydChzcGVjLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJbG93 ZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwZWMtPmxvd2VyZGF0dW1z LCB0cnVlKTsKKwl1cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3Bl Yy0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKworCS8qCisJICogRmlyc3QgY2hlY2sgaWYgdGhlIHJl c3VsdGluZyByYW5nZSB3b3VsZCBiZSBlbXB0eSB3aXRoIHNwZWNpZmllZCBsb3dlcgorCSAqIGFu ZCB1cHBlciBib3VuZHMuICBwYXJ0aXRpb25fcmJvdW5kX2NtcCBjYW5ub3QgcmV0dXJuIHplcm8g aGVyZSwgc2luY2UKKwkgKiB0aGUgbG93ZXItYm91bmQgZmxhZ3MgYXJlIGRpZmZlcmVudC4KKwkg Ki8KKwljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJ CQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJ CQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJICB0cnVlLCB1cHBl cik7CisJQXNzZXJ0KGNtcHZhbCAhPSAwKTsKKwlpZiAoY21wdmFsID4gMCkKKwl7CisJCS8qIFBv aW50IHRvIHByb2JsZW1hdGljIGtleSBpbiB0aGUgbG93ZXIgZGF0dW1zIGxpc3QuICovCisJCVBh cnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0gbGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIGNt cHZhbCAtIDEpOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJlbXB0eSByYW5nZSBib3VuZCBz cGVjaWZpZWQgZm9yIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJcmVsbmFtZSksCisJCQkJIGVy cmRldGFpbCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVh bCB0byB1cHBlciBib3VuZCAlcy4iLAorCQkJCQkJICAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJp bmcoc3BlYy0+bG93ZXJkYXR1bXMpLAorCQkJCQkJICAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJp bmcoc3BlYy0+dXBwZXJkYXR1bXMpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg ZGF0dW0tPmxvY2F0aW9uKSkpOworCX0KKworCS8qIE5lZWQgdG8gY2hlY2sgZmlyc3QgYW5kIGxh c3QgcGFydGl0aW9ucyAoZnJvbSBzZXQgb2YgbmV3IHBhcnRpdGlvbnMpICovCisJaWYgKGZpcnN0 IHx8IGxhc3QpCisJeworCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwbGl0X3NwZWMgPSBnZXRfcGFy dGl0aW9uX2JvdW5kX3NwZWMoc3BsaXRQYXJ0T2lkLCBzcGxpdFBhcnROYW1lKTsKKwkJYm9vbAkJ b3ZlcmxhcCA9IGZhbHNlOworCisJCWlmIChmaXJzdCkKKwkJeworCQkJUGFydGl0aW9uUmFuZ2VC b3VuZCAqc3BsaXRfbG93ZXI7CisKKwkJCXNwbGl0X2xvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9u X3Jib3VuZChrZXksIC0xLCBzcGxpdF9zcGVjLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisKKwkJCWNt cHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkJCSAg a2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJ CQkJCQkgIGxvd2VyLT5kYXR1bXMsIGxvd2VyLT5raW5kLAorCQkJCQkJCQkJCSAgdHJ1ZSwgc3Bs aXRfbG93ZXIpOworCisJCQkvKgorCQkJICogTG93ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBi ZSBlcXVhbCAob3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsCisJCQkgKiBpbiBjYXNlIGRlZmF1bHRQ YXJ0PXRydWUpIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJ aWYgKCghZGVmYXVsdFBhcnQgJiYgY21wdmFsKSB8fCAoZGVmYXVsdFBhcnQgJiYgY21wdmFsIDwg MCkpCisJCQkJb3ZlcmxhcCA9IHRydWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQlQYXJ0aXRpb25S YW5nZUJvdW5kICpzcGxpdF91cHBlcjsKKworCQkJc3BsaXRfdXBwZXIgPSBtYWtlX29uZV9wYXJ0 aXRpb25fcmJvdW5kKGtleSwgLTEsIHNwbGl0X3NwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisK KwkJCWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJ CQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwK KwkJCQkJCQkJCQkgIHVwcGVyLT5kYXR1bXMsIHVwcGVyLT5raW5kLAorCQkJCQkJCQkJCSAgZmFs c2UsIHNwbGl0X3VwcGVyKTsKKworCQkJLyoKKwkJCSAqIFVwcGVyIGJvdW5kIG9mIG9mICJzcGVj IiBzaG91bGQgYmUgZXF1YWwgKG9yIGxlc3MgdGhhbiBvciBlcXVhbAorCQkJICogaW4gY2FzZSBk ZWZhdWx0UGFydD10cnVlKSB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisJCQkg Ki8KKwkJCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNt cHZhbCA+IDApKQorCQkJCW92ZXJsYXAgPSB0cnVlOworCQl9CisKKwkJaWYgKG92ZXJsYXApCisJ CXsKKwkJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtOworCisJCQlkYXR1bSA9IGxpc3RfbnRo KGZpcnN0ID8gc3BlYy0+bG93ZXJkYXR1bXMgOiBzcGVjLT51cHBlcmRhdHVtcywgYWJzKGNtcHZh bCkgLSAxKTsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJIGVycm1zZygiJXMgYm91bmQgb2YgcGFydGl0 aW9uIFwiJXNcIiBpcyAlcyAlcyBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24iLAorCQkJCQkJCWZp cnN0ID8gImxvd2VyIiA6ICJ1cHBlciIsCisJCQkJCQkJcmVsbmFtZSwKKwkJCQkJCQlkZWZhdWx0 UGFydCA/IChmaXJzdCA/ICJsZXNzIHRoYW4iIDogImdyZWF0ZXIgdGhhbiIpIDogIm5vdCBlcXVh bHMgdG8iLAorCQkJCQkJCWZpcnN0ID8gImxvd2VyIiA6ICJ1cHBlciIpLAorCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSkpOworCQl9CisJfQorfQorCisv KgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdAorICoKKyAqIChmdW5j dGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRz IG9mIG5ldyBwYXJ0aXRpb24gaXMgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdCBwYXJ0aXRpb24KKyAq ICh3aXRoIE9pZCBzcGxpdFBhcnRPaWQpLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0 YWJsZQorICogcmVsbmFtZToJCQluYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCisgKiBzcGVjOgkJ CWJvdW5kcyBzcGVjaWZpY2F0aW9uIG9mIHRoZSBuZXcgcGFydGl0aW9uCisgKiBzcGxpdFBhcnRP aWQ6CXNwbGl0IHBhcnRpdGlvbiBPaWQKKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3Rh dGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQK K2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xpc3QoUmVsYXRpb24gcGFyZW50LCBj aGFyICpyZWxuYW1lLAorCQkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJ CQkJCQkgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkK K3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsK KwlQYXJ0aXRpb25EZXNjIHBhcnRkZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVu dCwgZmFsc2UpOworCVBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91 bmRpbmZvOworCWludAkJCXdpdGggPSAtMTsKKwlib29sCQlvdmVybGFwID0gZmFsc2U7CisJaW50 CQkJb3ZlcmxhcF9sb2NhdGlvbiA9IC0xOworCUxpc3RDZWxsICAgKmNlbGw7CisKKwlBc3NlcnQo a2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisJQXNzZXJ0KHNwZWMt PnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoYm91bmRpbmZv ICYmIGJvdW5kaW5mby0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJ LyoKKwkgKiBTZWFyY2ggZWFjaCB2YWx1ZSBvZiBuZXcgcGFydGl0aW9uICJzcGVjIiBpbiBleGlz dGluZyBwYXJ0aXRpb25zLiBBbGwKKwkgKiBvZiB0aGVtIHNob3VsZCBiZSBpbiBzcGxpdCBwYXJ0 aXRpb24gKHdpdGggT2lkIHNwbGl0UGFydE9pZCkuCisJICovCisJZm9yZWFjaChjZWxsLCBzcGVj LT5saXN0ZGF0dW1zKQorCXsKKwkJQ29uc3QJICAgKnZhbCA9IGxmaXJzdF9ub2RlKENvbnN0LCBj ZWxsKTsKKworCQlvdmVybGFwX2xvY2F0aW9uID0gdmFsLT5sb2NhdGlvbjsKKwkJaWYgKCF2YWwt PmNvbnN0aXNudWxsKQorCQl7CisJCQlpbnQJCQlvZmZzZXQ7CisJCQlib29sCQllcXVhbDsKKwor CQkJb2Zmc2V0ID0gcGFydGl0aW9uX2xpc3RfYnNlYXJjaCgma2V5LT5wYXJ0c3VwZnVuY1swXSwK KwkJCQkJCQkJCQkJa2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCQlib3VuZGluZm8sCisJ CQkJCQkJCQkJCXZhbC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJJmVxdWFsKTsKKwkJCWlmIChv ZmZzZXQgPj0gMCAmJiBlcXVhbCkKKwkJCXsKKwkJCQl3aXRoID0gYm91bmRpbmZvLT5pbmRleGVz W29mZnNldF07CisJCQkJaWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNwbGl0UGFydE9pZCkK KwkJCQl7CisJCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJ CQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkgZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNc IiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90 IGhhdmUiLAorCQkJCQkJCQlyZWxuYW1lKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBvdmVybGFwX2xvY2F0aW9uKSkpOworCQl9CisJCWVsc2UgaWYgKHBhcnRpdGlvbl9ib3Vu ZF9hY2NlcHRzX251bGxzKGJvdW5kaW5mbykpCisJCXsKKwkJCXdpdGggPSBib3VuZGluZm8tPm51 bGxfaW5kZXg7CisJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQor CQkJeworCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWVsc2UK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJCSBlcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIGNhbm5vdCBo YXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZSIsCisJ CQkJCQkJcmVsbmFtZSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFw X2xvY2F0aW9uKSkpOworCX0KKworCWlmIChvdmVybGFwKQorCXsKKwkJQXNzZXJ0KHdpdGggPj0g MCk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiB3b3VsZCBv dmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJ CXJlbG5hbWUsIGdldF9yZWxfbmFtZShwYXJ0ZGVzYy0+b2lkc1t3aXRoXSkpLAorCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSkpOworCX0KK30KKworLyoK KyAqIGZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdAorICoKKyAqIChmdW5jdGlvbiBm b3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogRnVuY3Rpb24gcmV0dXJucyB0cnVlIGlu IGNhc2UgYW55IG9mIG5ldyBwYXJ0aXRpb25zIGNvbnRhaW5zIHZhbHVlICJ2YWx1ZSIuCisgKgor ICogcGFydHN1cGZ1bmM6CQlpbmZvcm1hdGlvbiBhYm91dCBjb21wYXJpc29uIGZ1bmN0aW9uIGFz c29jaWF0ZWQgd2l0aCB0aGUgcGFydGl0aW9uIGtleQorICogcGFydGNvbGxhdGlvbjoJcGFydGl0 aW9uaW5nIGNvbGxhdGlvbgorICogcGFydHM6CQkJcG9pbnRlciB0byBhcnJheSB3aXRoIG5ldyBw YXJ0aXRpb25zIGRlc2NyaXB0aW9ucworICogbnBhcnRzOgkJCW51bWJlciBvZiBuZXcgcGFydGl0 aW9ucworICogdmFsdWU6CQkJdGhlIHZhbHVlIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yCisgKiBp c251bGw6CQkJdHJ1ZSBpZiB0aGUgdmFsdWUgdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IgaXMgTlVM TAorICovCitzdGF0aWMgYm9vbAorZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0KEZt Z3JJbmZvICpwYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBPaWQgKnBhcnRjb2xsYXRpb24sCisJCQkJ CQkJCSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFydHMs CisJCQkJCQkJCSAgRGF0dW0gdmFsdWUsCisJCQkJCQkJCSAgYm9vbCBpc251bGwpCit7CisJTGlz dENlbGwgICAqdmFscHRyOworCWludAkJCWk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBp KyspCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSBwYXJ0c1tpXTsKKworCQlmb3Jl YWNoKHZhbHB0ciwgc3BzLT5ib3VuZC0+bGlzdGRhdHVtcykKKwkJeworCQkJQ29uc3QJICAgKnZh bCA9IGxmaXJzdF9ub2RlKENvbnN0LCB2YWxwdHIpOworCisJCQlpZiAoaXNudWxsICYmIHZhbC0+ Y29uc3Rpc251bGwpCisJCQkJcmV0dXJuIHRydWU7CisKKwkJCWlmICghaXNudWxsICYmICF2YWwt PmNvbnN0aXNudWxsKQorCQkJeworCQkJCWlmIChEYXR1bUdldEludDMyKEZ1bmN0aW9uQ2FsbDJD b2xsKCZwYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCQlwYXJ0Y29sbGF0aW9uWzBdLAorCQkJ CQkJCQkJCQkJCXZhbC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJCQl2YWx1ZSkpID09IDApCisJ CQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQorCXJldHVybiBmYWxzZTsKK30KKworLyoK KyAqIGNoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMKKyAqCisgKiAoZnVuY3Rp b24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGFsbCB2YWx1 ZXMgb2Ygc3BsaXQgcGFydGl0aW9uICh3aXRoIE9pZCBwYXJ0T2lkKSBjb250YWlucyBpbiBuZXcK KyAqIHBhcnRpdGlvbnMuCisgKgorICogcGFyZW50OglwYXJ0aXRpb25lZCB0YWJsZQorICogcGFy dE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogcGFydHM6CXBvaW50ZXIgdG8gYXJyYXkgd2l0 aCBuZXcgcGFydGl0aW9ucyBkZXNjcmlwdGlvbnMKKyAqIG5wYXJ0czoJbnVtYmVyIG9mIG5ldyBw YXJ0aXRpb25zCisgKiBwc3RhdGU6CXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRl dGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFyZW50X3Zh bHVlc19pbl9uZXdfcGFydGl0aW9ucyhSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgIE9pZCBw YXJ0T2lkLAorCQkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoqcGFydHMsCisJCQkJCQkJ CQkgIGludCBucGFydHMsCisJCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0 aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRp b25EZXNjIHBhcnRkZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgZmFsc2Up OworCVBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOwor CWludAkJCWk7CisJYm9vbAkJZm91bmQgPSB0cnVlOworCWJvb2wJCXNlYXJjaE51bGwgPSBmYWxz ZTsKKwlEYXR1bQkJZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisKKwlBc3NlcnQoa2V5 LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwkvKgorCSAqIFNwZWNp YWwgcHJvY2Vzc2luZyBmb3IgTlVMTCB2YWx1ZS4gU2VhcmNoIE5VTEwtdmFsdWUgaWYgaXQgY29u dGFpbnMKKwkgKiBzcGxpdCBwYXJ0aXRpb24gKHBhcnRPaWQpLgorCSAqLworCWlmIChwYXJ0aXRp b25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pICYmCisJCXBhcnRkZXNjLT5vaWRzW2Jv dW5kaW5mby0+bnVsbF9pbmRleF0gPT0gcGFydE9pZCkKKwl7CisJCWlmICghZmluZF92YWx1ZV9p bl9uZXdfcGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkg ICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCB0cnVlKSkKKwkJewor CQkJZm91bmQgPSBmYWxzZTsKKwkJCXNlYXJjaE51bGwgPSB0cnVlOworCQl9CisJfQorCisJLyoK KwkgKiBTZWFyY2ggYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBwYXJ0T2lkIGlu IFBhcnRpdGlvbkRlc2Mgb2YKKwkgKiBwYXJ0aXRpb25kZSB0YWJsZS4KKwkgKi8KKwlmb3IgKGkg PSAwOyBpIDwgYm91bmRpbmZvLT5uZGF0dW1zOyBpKyspCisJeworCQlpZiAocGFydGRlc2MtPm9p ZHNbYm91bmRpbmZvLT5pbmRleGVzW2ldXSA9PSBwYXJ0T2lkKQorCQl7CisJCQkvKiBXZSBmb3Vu ZCB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBjb250YWlucy4gKi8KKwkJCWRhdHVtID0gYm91 bmRpbmZvLT5kYXR1bXNbaV1bMF07CisJCQlpZiAoIWZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlv bnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCSAgIGtleS0+cGFydGNv bGxhdGlvbiwgcGFydHMsIG5wYXJ0cywgZGF0dW0sIGZhbHNlKSkKKwkJCXsKKwkJCQlmb3VuZCA9 IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCisJaWYgKCFmb3VuZCkKKwl7CisJ CUNvbnN0CSAgICpub3RGb3VuZFZhbDsKKworCQlpZiAoIXNlYXJjaE51bGwpCisJCQkvKiBNYWtl IENvbnN0IGZvciBnZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG5vdCBmb3VuZCB2YWx1ZS4g Ki8KKwkJCW5vdEZvdW5kVmFsID0gbWFrZUNvbnN0KGtleS0+cGFydHR5cGlkWzBdLAorCQkJCQkJ CQkJa2V5LT5wYXJ0dHlwbW9kWzBdLAorCQkJCQkJCQkJa2V5LT5wYXJ0dHlwY29sbFswXSwKKwkJ CQkJCQkJCWtleS0+cGFydHR5cGxlblswXSwKKwkJCQkJCQkJCWRhdHVtLAorCQkJCQkJCQkJZmFs c2UsCS8qIGlzbnVsbCAqLworCQkJCQkJCQkJa2V5LT5wYXJ0dHlwYnl2YWxbMF0pOworCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQkgZXJybXNnKCJuZXcgcGFydGl0aW9ucyBub3QgaGF2ZSB2YWx1ZSAlcyBidXQg c3BsaXQgcGFydGl0aW9uIGhhcyIsCisJCQkJCQlzZWFyY2hOdWxsID8gIk5VTEwiIDogZ2V0X2xp c3RfcGFydHZhbHVlX3N0cmluZyhub3RGb3VuZFZhbCkpKSk7CisJfQorfQorCisvKgorICogY2hl Y2tfcGFydGl0aW9uc19mb3Jfc3BsaXQKKyAqCisgKiBDaGVja3MgbmV3IHBhcnRpdGlvbnMgZm9y IFNQTElUIFBBUlRJVElPTlMgY29tbWFuZDoKKyAqIDEuIERFRkFVTFQgcGFydGl0aW9uIHNob3Vs ZCBiZSBvbmUuCisgKiAyLiBOZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFt ZXMKKyAqICAgICh3aXRoIGV4aXN0aW5nIHBhcnRpdGlvbnMgdG9vKS4KKyAqIDMuIEJvdW5kcyBv ZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcgYW5kIGV4aXN0aW5n CisgKiAgICBwYXJ0aXRpb25zLgorICogNC4gSW4gY2FzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVG QVVMVCBwYXJ0aXRpb24sIG9uZSBvZiBuZXcgcGFydGl0aW9ucworICogICAgc2hvdWxkIGJlIERF RkFVTFQuCisgKiA1LiBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIG9yIGV4aXN0aW5nIHBhcnRpdGlv bnMgY29udGFpbnMgREVGQVVMVAorICogICAgcGFydGl0aW9uLCBuZXcgcGFydGl0aW9ucyBjYW4g aGF2ZSBhbnkgYm91bmRzIGluc2lkZSBzcGxpdAorICogICAgcGFydGl0aW9uIGJvdW5kIChjYW4g YmUgc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucyBib3VuZHMpLgorICogNi4gSW4gY2FzZSBwYXJ0 aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZlIERFRkFVTFQgcGFydGl0aW9uLCBERUZBVUxUCisg KiAgICBwYXJ0aXRpb24gY2FuIGJlIGRlZmluZWQgYXMgb25lIG9mIG5ldyBwYXJ0aXRpb24uCisg KiA3LiBJbiBjYXNlIG5ldyBwYXJ0aXRpb25zIG5vdCBjb250YWlucyBERUZBVUxUIHBhcnRpdGlv biBhbmQKKyAqICAgIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgREVGQVVMVCBwYXJ0 aXRpb24gdGhlIGZvbGxvd2luZworICogICAgc2hvdWxkIGJlIHRydWU6IHN1bSBib3VuZHMgb2Yg bmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGVxdWFsCisgKiAgICB0byBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24uCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBzcGxpdFBh cnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBPaWQKKyAqIHNwbGl0UGFydE5hbWU6CXNwbGl0IHBhcnRp dGlvbiBuYW1lCisgKiBsaXN0OgkJCWxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHBzdGF0ZToJ CQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRp b24KKyAqLwordm9pZAorY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24gcGFyZW50 LAorCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCSAgIFJhbmdlVmFyICpzcGxpdFBh cnROYW1lLAorCQkJCQkJICAgTGlzdCAqcGFydGxpc3QsCisJCQkJCQkgICBQYXJzZVN0YXRlICpw c3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleTsKKwljaGFyCQlzdHJhdGVneTsKKwlPaWQJCQlk ZWZhdWx0UGFydE9pZDsKKwlib29sCQlpc1NwbGl0UGFydERlZmF1bHQ7CisJYm9vbAkJZXhpc3Rz RGVmYXVsdFBhcnQ7CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKwlpbnQJCQlkZWZhdWx0X2luZGV4 ID0gLTE7CisJaW50CQkJaSwKKwkJCQlqOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKipuZXdfcGFy dHM7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzUHJldiA9IE5VTEw7CisJaW50CQkJbnBhcnRz ID0gMDsKKworCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJc3RyYXRl Z3kgPSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtleSk7CisKKwlzd2l0Y2ggKHN0cmF0ZWd5KQor CXsKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJY2FzZSBQQVJUSVRJT05fU1RS QVRFR1lfUkFOR0U6CisJCQl7CisJCQkJLyoKKwkJCQkgKiBNYWtlIGFycmF5IG5ld19wYXJ0cyB3 aXRoIG5ldyBwYXJ0aXRpb25zIGV4Y2VwdCBERUZBVUxUCisJCQkJICogcGFydGl0aW9uLgorCQkJ CSAqLworCQkJCW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICoqKQorCQkJCQlwYWxs b2MwKGxpc3RfbGVuZ3RoKHBhcnRsaXN0KSAqIHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICop KTsKKwkJCQlpID0gMDsKKwkJCQlmb3JlYWNoKGxpc3RwdHIsIHBhcnRsaXN0KQorCQkJCXsKKwkJ CQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0KKwkJCQkJCShTaW5nbGVQYXJ0aXRpb25TcGVj ICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkJCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkK KwkJCQkJeworCQkJCQkJaWYgKGRlZmF1bHRfaW5kZXggPj0gMCkKKwkJCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9O KSwKKwkJCQkJCQkJCSBlcnJtc2coIkRFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBiZSBvbmUiKSks CisJCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHMtPm5hbWUtPmxvY2F0aW9u KSk7CisJCQkJCQlkZWZhdWx0X2luZGV4ID0gaTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsK KwkJCQkJCW5ld19wYXJ0c1tucGFydHMrK10gPSBzcHM7CisJCQkJCX0KKwkJCQkJaSsrOworCQkJ CX0KKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX0hBU0g6CisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkJCSBlcnJtc2coInBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxl IGNhbm5vdCBiZSBzcGxpdCIpKSk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhF UlJPUiwgInVuZXhwZWN0ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtl eS0+c3RyYXRlZ3kpOworCQkJYnJlYWs7CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElP Tl9TVFJBVEVHWV9SQU5HRSkKKwl7CisJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9ib3Vu ZHM7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKip0bXBfbmV3X3BhcnRzOworCisJCS8qCisJCSAq IEZvciBzaW1wbGlmeSBjaGVjayBmb3IgcmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIG5lZWQgdG8g c29ydCBhbGwKKwkJICogcGFydGl0aW9ucyBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgdGhlbSBib3Vu ZHMgKHdlIGNvbXBhcmUgdXBwZXIKKwkJICogYm91bmQgb25seSkuCisJCSAqLworCQlsb3dlcl9i b3VuZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJCXBhbGxvYzAobnBhcnRzICogc2l6 ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJCS8qIENyZWF0ZSBhcnJheSBvZiBsb3dl ciBib3VuZHMuICovCisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJeworCQkJbG93 ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIGksCisJCQkJCQkJ CQkJCQkJCW5ld19wYXJ0c1tpXS0+Ym91bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwkJfQorCisJ CS8qIFNvcnQgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLworCQlxc29ydF9hcmcobG93ZXJfYm91 bmRzLCBucGFydHMsIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopLAorCQkJCSAgcXNvcnRf cGFydGl0aW9uX3Jib3VuZF9jbXAsICh2b2lkICopIGtleSk7CisKKwkJLyogUmVvcmRlciBhcnJh eSBvZiBwYXJ0aXRpb25zLiAqLworCQl0bXBfbmV3X3BhcnRzID0gbmV3X3BhcnRzOworCQluZXdf cGFydHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKikKKwkJCXBhbGxvYzAobnBhcnRzICogc2l6 ZW9mKFNpbmdsZVBhcnRpdGlvblNwZWMgKikpOworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBp KyspCisJCQluZXdfcGFydHNbaV0gPSB0bXBfbmV3X3BhcnRzW2xvd2VyX2JvdW5kc1tpXS0+aW5k ZXhdOworCisJCXBmcmVlKHRtcF9uZXdfcGFydHMpOworCQlwZnJlZShsb3dlcl9ib3VuZHMpOwor CX0KKworCWRlZmF1bHRQYXJ0T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2Mo UmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHBhcmVudCwgdHJ1ZSkpOworCisJLyogaXNTcGxpdFBh cnREZWZhdWx0IGZsYWc6IGlzIHNwbGl0IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9uPyAq LworCWlzU3BsaXRQYXJ0RGVmYXVsdCA9IChkZWZhdWx0UGFydE9pZCA9PSBzcGxpdFBhcnRPaWQp OworCisJaWYgKGlzU3BsaXRQYXJ0RGVmYXVsdCAmJiBkZWZhdWx0X2luZGV4IDwgMCkKKwl7CisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKKwkJCQkgZXJybXNnKCJhbnkgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBi ZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQiKSksCisJCQkJcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgKChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxpbml0aWFs KHBhcnRsaXN0KSktPm5hbWUtPmxvY2F0aW9uKSk7CisJfQorCWVsc2UgaWYgKCFpc1NwbGl0UGFy dERlZmF1bHQgJiYgKGRlZmF1bHRfaW5kZXggPj0gMCkgJiYgT2lkSXNWYWxpZChkZWZhdWx0UGFy dE9pZCkpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHNEZWYgPQorCQkJKFNpbmdsZVBh cnRpdGlvblNwZWMgKikgbGlzdF9udGgocGFydGxpc3QsIGRlZmF1bHRfaW5kZXgpOworCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQkgZXJybXNnKCJuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1 c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMiKSksCisJCQkJcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgc3BzRGVmLT5uYW1lLT5sb2NhdGlvbikpOworCX0KKworCS8qIEluZGlj YXRvciB0aGF0IHBhcnRpdGlvbmVkIHRhYmxlIGhhcyAob3Igd2lsbCBoYXZlKSBERUZBVUxUIHBh cnRpdGlvbiAqLworCWV4aXN0c0RlZmF1bHRQYXJ0ID0gT2lkSXNWYWxpZChkZWZhdWx0UGFydE9p ZCkgfHwgKGRlZmF1bHRfaW5kZXggPj0gMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBp KyspCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSBuZXdfcGFydHNbaV07CisKKwkJ aWYgKGlzU3BsaXRQYXJ0RGVmYXVsdCkKKwkJeworCQkJLyoKKwkJCSAqIEluIGNhc2Ugc3BsaXQg cGFydGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uIHdlIGNhbiB1c2UgYW55CisJCQkgKiBmcmVl IHJhbmdlcyAtIGFzIHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFydGl0aW9uLgorCQkJICovCisJCQlj aGVja19uZXdfcGFydGl0aW9uX2JvdW5kKHNwcy0+bmFtZS0+cmVsbmFtZSwgcGFyZW50LCBzcHMt PmJvdW5kLAorCQkJCQkJCQkJICBwc3RhdGUpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJ CSAqIENoZWNrcyB0aGF0IGJvdW5kIG9mIGN1cnJlbnQgcGFydGl0aW9uIGlzIGluc2lkZSBib3Vu ZCBvZiBzcGxpdAorCQkJICogcGFydGl0aW9uLiBGb3IgcmFuZ2UgcGFydGl0aW9uaW5nOiBjaGVj a3MgdGhhdCB1cHBlciBib3VuZCBvZgorCQkJICogcHJldmlvdXMgcGFydGl0aW9uIGlzIGVxdWFs IHRvIGxvd2VyIGJvdW5kIG9mIGN1cnJlbnQKKwkJCSAqIHBhcnRpdGlvbi4gRm9yIGxpc3QgcGFy dGl0aW9uaW5nOiBjaGVja3MgdGhhdCBzcGxpdCBwYXJ0aXRpb24KKwkJCSAqIGNvbnRhaW5zIGFs bCB2YWx1ZXMgb2YgY3VycmVudCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmIChzdHJhdGVneSA9 PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpCisJCQl7CisJCQkJYm9vbAkJZmlyc3QgPSAoaSA9 PSAwKTsKKwkJCQlib29sCQlsYXN0ID0gKGkgPT0gKG5wYXJ0cyAtIDEpKTsKKworCQkJCWNoZWNr X3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKHBhcmVudCwgc3BzLT5uYW1lLT5yZWxu YW1lLCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJCQkJCSAgIHNwbGl0UGFydE9pZCwgc3BsaXRQYXJ0 TmFtZSwKKwkJCQkJCQkJCQkJCQkgICBmaXJzdCwgbGFzdCwKKwkJCQkJCQkJCQkJCQkgICBleGlz dHNEZWZhdWx0UGFydCwgcHN0YXRlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQljaGVja19wYXJ0aXRp b25fYm91bmRzX2Zvcl9zcGxpdF9saXN0KHBhcmVudCwgc3BzLT5uYW1lLT5yZWxuYW1lLAorCQkJ CQkJCQkJCQkJCSAgc3BzLT5ib3VuZCwgc3BsaXRQYXJ0T2lkLCBwc3RhdGUpOworCQl9CisKKwkJ LyogUmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJaWYg KHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSAmJiBzcHNQcmV2KQorCQkJY2hl Y2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKHBhcmVudCwgc3BzUHJldi0+bmFtZSwgc3Bz UHJldi0+Ym91bmQsCisJCQkJCQkJCQkJCSAgc3BzLT5uYW1lLCBzcHMtPmJvdW5kLCBleGlzdHNE ZWZhdWx0UGFydCwgcHN0YXRlKTsKKworCQlzcHNQcmV2ID0gc3BzOworCisJCS8qIENoZWNrOiBu ZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZvciAoaiA9 IGkgKyAxOyBqIDwgbnBhcnRzOyBqKyspCisJCXsKKwkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNw czIgPSBuZXdfcGFydHNbal07CisKKwkJCWlmIChlcXVhbChzcHMtPm5hbWUsIHNwczItPm5hbWUp KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9U QUJMRSksCisJCQkJCQkgZXJybXNnKCJuYW1lIFwiJXNcIiBhbHJlYWR5IHVzZWQiLCBzcHMyLT5u YW1lLT5yZWxuYW1lKSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHMyLT5u YW1lLT5sb2NhdGlvbikpOworCQl9CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9T VFJBVEVHWV9MSVNUKQorCXsKKwkJLyogVmFsdWVzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBu b3Qgb3ZlcmxhcC4gKi8KKwkJY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0KHBhcmVu dCwgbmV3X3BhcnRzLCBucGFydHMsCisJCQkJCQkJCQkJICBwc3RhdGUpOworCisJCS8qCisJCSAq IE5lZWQgdG8gY2hlY2sgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiBjb250YWlu cyBpbiBuZXcKKwkJICogcGFydGl0aW9ucy4gU2tpcCB0aGlzIGNoZWNrIGlmIERFRkFVTFQgcGFy dGl0aW9uIGV4aXN0cy4KKwkJICovCisJCWlmICghZXhpc3RzRGVmYXVsdFBhcnQpCisJCQljaGVj a19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKHBhcmVudCwgc3BsaXRQYXJ0T2lkLAor CQkJCQkJCQkJCQkJICBuZXdfcGFydHMsIG5wYXJ0cywgcHN0YXRlKTsKKwl9CisKKwlwZnJlZShu ZXdfcGFydHMpOworfQorCiAvKgogICogY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVy Z2UKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggYTUxNzE3ZTM2Y2UuLjY1ZDY0 MjQxNTYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMzAyOSwzICsxMzAyOSwy MSBAQCBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3VuZF9kYXR1bXMpCiAKIAly ZXR1cm4gYnVmLT5kYXRhOwogfQorCisvKgorICogZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZwor ICoJCUEgQyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygb25lIGxpc3QgcGFydGl0aW9uIHZhbHVl CisgKi8KK2NoYXIgKgorZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhDb25zdCAqdmFsKQorewor CWRlcGFyc2VfY29udGV4dCBjb250ZXh0OworCVN0cmluZ0luZm8JYnVmID0gbWFrZVN0cmluZ0lu Zm8oKTsKKworCW1lbXNldCgmY29udGV4dCwgMCwgc2l6ZW9mKGRlcGFyc2VfY29udGV4dCkpOwor CWNvbnRleHQuYnVmID0gYnVmOworCisJZ2V0X2NvbnN0X2V4cHIodmFsLCAmY29udGV4dCwgLTEp OworCisJcmV0dXJuIGJ1Zi0+ZGF0YTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAyN2My ODEzOWM4NC4uMDNjMWYyNzA1M2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTIzNDQsNiAr MjM0NCw3IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX0F0dGFjaFBhcnRpdGlv biwJCQkvKiBBVFRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uLAkJCS8qIERF VEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZSwgLyogREVUQUNI IFBBUlRJVElPTiBGSU5BTElaRSAqLworCUFUX1NwbGl0UGFydGl0aW9uLAkJCS8qIFNQTElUIFBB UlRJVElPTiAqLwogCUFUX01lcmdlUGFydGl0aW9ucywJCQkvKiBNRVJHRSBQQVJUSVRJT05TICov CiAJQVRfQWRkSWRlbnRpdHksCQkJCS8qIEFERCBJREVOVElUWSAqLwogCUFUX1NldElkZW50aXR5 LAkJCQkvKiBTRVQgaWRlbnRpdHkgY29sdW1uIG9wdGlvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRl eCBlMmI0NzAwZDk3Yi4uNDgwODk2ZTdiNjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTQxNSw2ICs0 MTUsNyBAQCBQR19LRVlXT1JEKCJza2lwIiwgU0tJUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgic21hbGxpbnQiLCBTTUFMTElOVCwgQ09MX05BTUVfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNuYXBzaG90IiwgU05BUFNIT1QsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNvbWUiLCBTT01FLCBSRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgic3BsaXQiLCBTUExJVCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3FsIiwgU1FMX1AsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0YWJsZSIsIFNUQUJMRSwg VU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhbmRhbG9uZSIs IFNUQU5EQUxPTkVfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCBiL3NyYy9pbmNsdWRlL3Bh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKaW5kZXggMDMyOWQ3YmQ4NDguLjlkMmEyNjcwNWYwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKQEAgLTE0Myw2ICsxNDMsMTEgQEAg ZXh0ZXJuIGludAlwYXJ0aXRpb25fcmFuZ2VfZGF0dW1fYnNlYXJjaChGbWdySW5mbyAqcGFydHN1 cGZ1bmMsCiBleHRlcm4gaW50CXBhcnRpdGlvbl9oYXNoX2JzZWFyY2goUGFydGl0aW9uQm91bmRJ bmZvIGJvdW5kaW5mbywKIAkJCQkJCQkJICAgaW50IG1vZHVsdXMsIGludCByZW1haW5kZXIpOwog CitleHRlcm4gdm9pZCBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChSZWxhdGlvbiBwYXJlbnQs CisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgUmFuZ2VWYXIgKnNw bGl0UGFydE5hbWUsCisJCQkJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCQkJCSAgIFBh cnNlU3RhdGUgKnBzdGF0ZSk7CiBleHRlcm4gdm9pZCBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5k X2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMs CiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3J1bGV1dGlscy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKaW5kZXggMTYx ZmI1ZWYwMmMuLjZkODYwODA2MjIxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9ydWxl dXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApAQCAtNDksNCArNDks NiBAQCBleHRlcm4gY2hhciAqZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRf ZGF0dW1zKTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9zdGF0aXN0aWNzb2JqZGVmX3N0cmluZyhP aWQgc3RhdGV4dGlkKTsKIAorZXh0ZXJuIGNoYXIgKmdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmco Q29uc3QgKnZhbCk7CisKICNlbmRpZgkJCQkJCQkvKiBSVUxFVVRJTFNfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQgYi9zcmMv dGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWQ5ZThiMDkyNWYKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApAQCAtMCww ICsxLDE5MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJF R0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFy dF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMg RlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzog Q09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0 ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRl eHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dz KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJj IHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQ TElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEw XzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0 XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjogQkVHSU4g SVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1J VDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMy czogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUK KyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycwor c3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBB UlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIw IEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJ T04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVF UyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz Mmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1Qg KiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAx CisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJy cjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBB TFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAg KFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJ ICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsK K3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEs ICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJP TSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8 dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjog QkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRF UiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBB UlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAg IFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0 ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMy aTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4K K3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0t LS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0 MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmJz IHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVB VEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJ T04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1Ig VkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExF VkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEs ICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJP TSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8 dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczFicyBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJzOiBCRUdJ TiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxF IHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9O IHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElU SU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6 IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScp OyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0Owor IGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1 fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBz MWJzIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBT UExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8x MF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFy dF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lO IElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8g dHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01N SVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBz MnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1 CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisK Kworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJz CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMx c3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8K KwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1 KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8g KDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7Citz dGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAK Ky0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1Cisz NXx0ZXh0MzUKKyg1IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29s YXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCmlu ZGV4IDhiY2FhOGE2MjU0Li4wMzQyZWIzOWU0MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0 aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlCkBAIC0xMDQsNiArMTA0LDcgQEAgdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUt MgogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMwogdGVzdDogcGFydGl0aW9uLWtleS11cGRh dGUtNAogdGVzdDogcGFydGl0aW9uLW1lcmdlCit0ZXN0OiBwYXJ0aXRpb24tc3BsaXQKIHRlc3Q6 IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29u ZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFy dGl0aW9uLXNwbGl0LnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNw bGl0LnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA4NzIzOWE0 YTE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlv bi1zcGxpdC5zcGVjCkBAIC0wLDAgKzEsNTQgQEAKKyMgVmVyaWZ5IHRoYXQgU1BMSVQgb3BlcmF0 aW9uIGxvY2tzIERNTCBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUKKworc2V0dXAK K3sKKyAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBUQUJMRSB0cGFydChp IGludCwgdCB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJMRSB0cGFy dF8wMF8xMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOwor ICBDUkVBVEUgVEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8yMF8zMCBQQVJUSVRJT04g T0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKyAgQ1JFQVRFIFRBQkxFIHRw YXJ0X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7CisgIElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoNSwgJ3RleHQwNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDE1 LCAndGV4dDE1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMjUsICd0ZXh0MjUnKTsK KyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgzNSwgJ3RleHQzNScpOworfQorCit0ZWFyZG93 bgoreworICBEUk9QIFRBQkxFIHRwYXJ0OworfQorCitzZXNzaW9uIHMxCitzdGVwIHMxYgl7IEJF R0lOOyB9CitzdGVwIHMxYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVB RDsgfQorc3RlcCBzMWJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQor c3RlcCBzMXNwbHQJeyBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBf MjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00g KDE1KSBUTyAoMjApKTsgfQorc3RlcCBzMWMJeyBDT01NSVQ7IH0KKworCitzZXNzaW9uIHMyCitz dGVwIHMyYgl7IEJFR0lOOyB9CitzdGVwIHMyYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJF UEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMmJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklB TElaQUJMRTsgfQorc3RlcCBzMmkJeyBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsgfQorc3RlcCBzMmMJeyBDT01NSVQ7IH0KK3N0ZXAgczJzCXsgU0VMRUNUICogRlJPTSB0 cGFydDsgfQorCisKKyMgczEgc3RhcnRzIFNQTElUIFBBUlRJVElPTiB0aGVuIHMyIHRyeWluZyB0 byBpbnNlcnQgcm93IGFuZAorIyB3YWl0cyB1bnRpbCBzMSBmaW5pc2hlZCBTUExJVCBvcGVyYXRp b24uCisKK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworcGVybXV0 YXRpb24gczFiIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYiBz MXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24gczFicnIgczFzcGx0IHMy YiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnJyIHMxc3BsdCBzMmJyciBzMmkgczFj IHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnJyIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycwor CitwZXJtdXRhdGlvbiBzMWJzIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlv biBzMWJzIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnMgczFz cGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwppbmRleCA2OTkyMDc1N2IyMS4uMjY1ZWYy YTU0NzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0 X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rl c3RfZGRsX2RlcGFyc2UuYwpAQCAtMzAwLDYgKzMwMCw5IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNt ZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxp emU6CiAJCQkJc3RydHlwZSA9ICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJ YnJlYWs7CisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCXN0cnR5cGUgPSAiU1BMSVQg UEFSVElUSU9OIjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJ CXN0cnR5cGUgPSAiTUVSR0UgUEFSVElUSU9OUyI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjdlYjUyZjZmZWVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CkBAIC0wLDAgKzEsMTQxNyBA QAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0gVGVzdHMgZm9yICJBTFRFUiBUQUJMRSAuLi4g U1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFuZAorLS0KK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9u X3NwbGl0X3NjaGVtYTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEs IHB1YmxpYzsKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBm b3IgZXJyb3IgY29kZXMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lk IGludCwgc2FsZXNtYW5fbmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2FsZXNf ZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJf bWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHJlbGF0aW9uICJz YWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc194 eHgiIGRvZXMgbm90IGV4aXN0CistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBh bHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNf amFuMjAyMiIgYWxyZWFkeSBleGlzdHMKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZp Y2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBpbnZhbGlk IGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBB UlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcyMDIyLTA1LTAxJywgJzIwMi4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVS Uk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21h cjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDItMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNp ZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04g c2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8uLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6 ICBTcGVjaWZpZWQgbG93ZXIgYm91bmQgKCcwMy0wMS0yMDIyJykgaXMgZ3JlYXRlciB0aGFuIG9y IGVxdWFsIHRvIHVwcGVyIGJvdW5kICgnMDItMDEtMjAyMicpLgorLS1FUlJPUjogIGxpc3Qgb2Yg c3BsaXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbnMgYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMTAtMDEnKSk7CitFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRpdGlv bnMgc2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0IHR3byBpdGVtcworLS0gRVJST1I6ICBsb3dlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIGxlc3MgdGhhbiBsb3dlciBib3Vu ZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBsZXNzIHRoYW4gbG93ZXIgYm91bmQg b2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNf ZmViX21hcl9hcHIyMDIyIiBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRlIHBhcnRpdGlv biB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBidXQgY2FuJ3QgY3JlYXRl IHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSk7CitFUlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgYWxyZWFk eSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6 ICBuYW1lICJzYWxlc19mZWIyMDIyIiBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VS Uk9SOiAgbmFtZSAic2FsZXNfZmViMjAyMiIgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTy4uLgor ICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfZmViX21hcl9hcHIyMDIy IiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZQorQUxURVIgVEFCTEUgc2FsZXNfZmViX21hcl9h cHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsK K0VSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFi bGUKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBp cyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYt MDEnKSk7CitFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIg aXMgZ3JlYXRlciB0aGFuIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSA0OiAu Li4gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA2LTAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFscyB0byB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0 aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9u ICJzYWxlc19tYXIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBw YXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19tYXIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTy4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFRlc3RzIGZvciBzcGFj ZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3VsZCBiZSBleGVjdXRlZCB3aXRob3V0IERF RkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBERVRBQ0ggUEFSVElUSU9O IHNhbGVzX290aGVyczsKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19mZWIyMDIyIiBpcyBub3QgZXF1YWxzIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlv bgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAyJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNh bGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbHMgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0 aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDInKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNh bGVzX290aGVyczsKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4g c3BsaXQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9p ZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmVi X21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEw Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2 YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIw MjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3Nv bicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0 LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywg J0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNt YW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1h eSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBI YWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwg R2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8 IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYg fCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4 IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAg NyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAg IDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAg IDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAg ICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAg ICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0 IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNh bGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEg fCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEw IHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJv dCAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmlj c3NvbiAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19tYXIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAg fCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfYXByMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAg ICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAg ICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcnM7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8 IDA1LTA0LTIwMjIKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOwor LS0KKy0tIEFkZCBzcGxpdCBwYXJ0aXRpb24gdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVk IHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNh bGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFU RSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIy MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcy MDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcs ICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0w Mi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwg ICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwg ICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8 IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAg ICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAg ICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8IFNtaXJub2Zm ICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3Qg ICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nz b24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExpICAg ICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxs ZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxh dG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgMyB8IEZv cmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJ dmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8 IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgMTQg fCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAg ICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVy ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2ZlYjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8 ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAg fCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19tYXIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAg ICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAzLTE5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8 IDA0LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAg fCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgw IHwgMDQtMDYtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisg c2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIw MjIKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIFRl c3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRF RCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJ TlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFS KDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwg JzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwg TFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVu dCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBUQUJM RSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAo MjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW5fZmVi MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEp IFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFY VkFMVUUsIE1BWFZBTFVFKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAy MDIxLCAxMiwgNyk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVz X3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMSwg MTIsIDgpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFy LCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEp OworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpOworSU5T RVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250 aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpOworSU5TRVJUIElO VE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2Fs ZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpOworSU5TRVJUIElOVE8gc2Fs ZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxV RVMgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxl c21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdN YW5hZ2VyMycsIDIwMjIsIDUsIDEpOworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVz bWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19k YXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisg TWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIw MjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjEg fCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50 CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8 IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAg MiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAg ICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBk ZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAg ICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBz YWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAor LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAy MSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4 IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfamFuX2ZlYjIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxl c19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwg MjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAx IHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfb3RoZXI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250 aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4w My4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygz IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ph bl9mZWIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJP TSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSkpOworSU5TRVJU IElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwg c2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX2RhdGU7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNh bGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEy IHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAg ICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8 IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2Vy MiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4w MiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4w Mi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAy Mi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwg MjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1l bnQKKygxMSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisgc2FsZXNtYW5f bmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUg fCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5h Z2VyMSAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4x Mi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8ICAg ICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygy IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc21hbl9uYW1lIHwg c2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVz X2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIzICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIx ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIyLjAxLjEw IHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIy MDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19k YXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAg ICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8 ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAK Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAg NCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBh cnRtZW50CisoMyByb3dzKQorCistLUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIy IiBkb2VzIG5vdCBleGlzdAorU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKK0VSUk9S OiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBT RUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworICAgICAgICAgICAgICAgICAgICAgIF4K K0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IERFRkFV TFQgcGFydGl0aW9uOyB1c2luZyBhIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4 IGFmdGVyIHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJ TlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jh bmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAs ICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21p cm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAy Mi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcs ICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo NywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMt MTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1 MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAn VHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAn MjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAg ICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAg ICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAg ICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAg ICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisg ICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor ICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIK KyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIy CisoMTEgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9 ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEn OworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRl eG5hbWUgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIHwgc2FsZXNfb3RoZXJzIHwgc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4IHwg ICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHggT04g cGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVzX2Rh dGUpCisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxU KTsKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcworU0VUIGVuYWJsZV9pbmRleHNj YW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00gc2FsZXNf ZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzbWFuX2lkIHwg c2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAg IDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAg ICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjIt MDEtMDEnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUg fCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUw IHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1 MCB8IDAzLTE5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMiB3 aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAxMSB8IFRydW1w ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2 ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgMyB8IEZv cmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX290aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0y MDIyCisoMSByb3cpCisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBPTjsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAn c2FsZXNfZmViMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7 CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRl eG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0 aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX2ZlYjIwMjIgfCBzYWxlc19mZWIyMDIyX3NhbGVzX2Rh dGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWIyMDIyX3NhbGVzX2Rh dGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBVU0lORyBidHJl ZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJF IHRhYmxlbmFtZSA9ICdzYWxlc19tYXIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25f c3BsaXRfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8 ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfbWFyMjAyMiB8IHNhbGVzX21h cjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX21h cjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19tYXIy MDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBn X2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1l ID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAg IHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxlc3BhY2Ug fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhk ZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19hcHIy MDIyIHwgc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUg SU5ERVggc2FsZXNfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hLnNhbGVzX2FwcjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBh bmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFu YW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8 IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBz YWxlc19vdGhlcnMgfCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIHwgICAgICAgICAgICB8 IENSRUFURSBJTkRFWCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIE9OIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93 KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gVGVzdDogc29tZSBj YXNlcyBmb3Igc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0 aCBzYWxlc19kZWMyMDIyIChsb3dlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJl dmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVj MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9S OiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGgg dXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorTElORSAz OiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8g KDIwMjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2ZlYjIwMjIgKHVwcGVy IGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIw MjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAyKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJU SVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2ZlYjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZp b3VzIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitMSU5FIDQ6ICAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMC4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHNhbGVzX2Vycm9y IGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjog IGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVw cGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIw MTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEw KSBUTyAoMjAyMTEyMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg REVGQVVMVCk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3Ii IGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNf ZGVjMjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJP TSAoMjAyMTEyMTApIFRPICgyMDIxLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxl c19kZWMyMDIyIChleGFjdCB0aGUgc2FtZSBib3VuZHMpCistLSBFUlJPUjogIGxvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9m IHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAx MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIw MSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitF UlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3 aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0xJ TkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEp IFRPICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKy0tIEVSUk9SOiAgYW55IHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBzaG91bGQgYmUg REVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSks CisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBU TyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSk7CitFUlJPUjogIGFueSBwYXJ0aXRpb24gaW4gdGhl IGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVM VAorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAuLi4KKyAgICAgICAgICAgICAgICAgICAgIF4KKy0tIG5vIGVycm9yOiBi b3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBiZXR3ZWVuIHNhbGVzX2RlYzIwMjIgYW5kIHNhbGVzX2Zl YjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIx MTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxV RVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIyMDEyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vy cm9yIGVxdWFscyB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjIgYW5k IHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9y IEZPUiBWQUxVRVMgRlJPTSAoMjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggQ0hFQ0sgYW5kIEZPUkVJR04g S0VZIENPTlNUUkFJTlRzIG9uIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxlc21hbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxl c21hbnMoc2FsZXNtYW5faWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50 ID4gMSksCitzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK1NFTEVDVCBw Z19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMic6OnJlZ2NsYXNzOjpv aWQ7CisgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxl c19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19y YW5nZV9zYWxlc19hbW91bnRfY2hlY2sgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNtYW5faWQp IFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSB8IHNhbGVzX3JhbmdlX3NhbGVzbWFu X2lkX2ZrZXkgICB8IHsxfQorKDIgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworLS0gV2Ugc2hv dWxkIHNlZSB0aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg cGFydGl0aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29u a2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6 cmVnY2xhc3M6Om9pZDsKKyAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNv bmtleSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBD SEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayB8IHsyfQorIEZPUkVJR04gS0VZIChz YWxlc21hbl9pZCkgUkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQpIHwgc2FsZXNfcmFu Z2Vfc2FsZXNtYW5faWRfZmtleSAgIHwgezF9CisoMiByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIyJzo6cmVnY2xhc3M6Om9pZDsKKyAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3Vu dF9jaGVjayB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc21hbl9pZCkgUkVGRVJFTkNFUyBzYWxl c21hbnMoc2FsZXNtYW5faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNtYW5faWRfZmtleSAgIHwgezF9 CisoMiByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwg Y29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19hcHIyMDIy Jzo6cmVnY2xhc3M6Om9pZDsKKyAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRk ZWYgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8 IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0K KyBDSEVDSyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayB8IHsyfQorIEZPUkVJR04gS0VZ IChzYWxlc21hbl9pZCkgUkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQpIHwgc2FsZXNf cmFuZ2Vfc2FsZXNtYW5faWRfZmtleSAgIHwgezF9CisoMiByb3dzKQorCistLSBFUlJPUjogIG5l dyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJh aW50ICJzYWxlc19yYW5nZV9zYWxlc21hbl9pZF9jaGVjayIKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMSwgMCwgJzIwMjItMDMtMTEnKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVs YXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3Jh bmdlX3NhbGVzX2Ftb3VudF9jaGVjayIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgx LCAwLCAwMy0xMS0yMDIyKS4KKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAi c2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFu Z2Vfc2FsZXNtYW5faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEs IDEwLCAnMjAyMi0wMy0xMScpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJz YWxlc19tYXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19yYW5n ZV9zYWxlc21hbl9pZF9ma2V5IgorREVUQUlMOiAgS2V5IChzYWxlc21hbl9pZCk9KC0xKSBpcyBu b3QgcHJlc2VudCBpbiB0YWJsZSAic2FsZXNtYW5zIi4KKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDEsIDEwLCAnMjAyMi0wMy0xMScpOworRFJPUCBUQUJMRSBzYWxlc19y YW5nZSBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKKy0tCistLSBUZXN0 OiBzcGxpdCBwYXJ0aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4gY2FzZSBleGlzdHMgRk9S RUlHTiBLRVkgcmVmZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBz YWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNI QVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKK0NSRUFURSBUQUJMRSBz YWxlcyAoc2FsZXNtYW5faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKK0NSRUFURSBUQUJMRSBzYWxlc21h bnMwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEw KTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVT ICgxLCAgJ1BvaXJvdCcpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAsICdNYXkn KTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CitJTlNFUlQg SU5UTyBzYWxlc21hbnMgVkFMVUVTICgyMCwgJ1NtaXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxl c21hbnMgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMSwg IDEwMCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMSwgIDExMCwg JzIwMjItMDMtMDInKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTAsIDE1MCwgJzIwMjIt MDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTAsIDkwLCAgJzIwMjItMDMtMDMn KTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTksIDIwMCwgJzIwMjItMDMtMDQnKTsKK0lO U0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMjAsIDUwLCAgJzIwMjItMDMtMTInKTsKK0lOU0VSVCBJ TlRPIHNhbGVzIFZBTFVFUyAoMjAsIDE3MCwgJzIwMjItMDMtMDInKTsKK0lOU0VSVCBJTlRPIHNh bGVzIFZBTFVFUyAoMzAsIDMwLCAgJzIwMjItMDMtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNt YW5zMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzbWFuczEwXzQwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAg ICAxOSB8IEl2YW5vdgorICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAzMCB8IEZv cmQKKyg0IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2Fs ZXNtYW5zMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVF UyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFM VUVTIEZST00gKDMwKSBUTyAoNDApKTsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMDFfMTA7Cisg c2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz bWFuczEwXzIwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAxOSB8IEl2YW5v dgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMyMF8zMDsKKyBzYWxlc21hbl9p ZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgIDIwIHwgU21pcm5vZmYKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMzMF80 MDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgIDMwIHwgRm9yZAorKDEgcm93KQorCistLSBFUlJPUjogIGluc2Vy dCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJzYWxlc19zYWxlc21hbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICg0 MCwgNTAsICAnMjAyMi0wMy0wNCcpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNtYW5f aWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNtYW5faWQpPSg0MCkgaXMgbm90IHByZXNlbnQg aW4gdGFibGUgInNhbGVzbWFucyIuCistLSBvaworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgz MCwgNTAsICAnMjAyMi0wMy0wNCcpOworRFJPUCBUQUJMRSBzYWxlcyBDQVNDQURFOworRFJPUCBU QUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2Yg cGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21h bnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc21h bnMwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEw KTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVT ICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9E WSQKK0JFR0lOCisJUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwg d2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZF TDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHNhbGVz bWFuc19hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAg ICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NF RFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOworQ1JFQVRFIFRSSUdH RVIgc2FsZXNtYW5zX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAor ICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJF IGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5zJyk7CistLSAyIHRyaWdnZXJzIHNo b3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMg VkFMVUVTICgxMCwgJ01heScpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDog YWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmln Z2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2 ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5T RVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworTk9USUNFOiAg dHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIs IGxldmVsID0gUk9XCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgU1BMSVQgUEFSVElUSU9OIHNhbGVz bWFuczEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczIwXzMwIEZPUiBWQUxVRVMg RlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMzBfNDAgRk9SIFZBTFVF UyBGUk9NICgzMCkgVE8gKDQwKSk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJv dyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgyMCwgJ1NtaXJu b2ZmJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNF UlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5z KSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVO VAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxl c21hbnMzMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21h bnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitT RUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFt ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QK KygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF8yMDsKKyBzYWxlc21hbl9pZCB8 IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg IDEwIHwgTWF5CisgICAgICAgICAgMTkgfCBJdmFub3YKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNtYW5zMjBfMzA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAyMCB8IFNtaXJub2ZmCisoMSByb3cp CisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMzBfNDA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21h bl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAzMCB8IEZv cmQKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJ T04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0 aW9uIHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3BsaXQgcGFydGl0aW9uIGNvbHVtbiBp cyBpZGVudGl0eS1jb2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5 LWNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5U IEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JFQVRFIFRB QkxFIHNhbGVzbWFuczFfMiBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBpZGVudGl0eS1jb2x1bW46 CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMl81KHNhbGVzbWFuX2lkIElOVCBOT1QgTlVMTCwgc2Fs ZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBB UlRJVElPTiBzYWxlc21hbnMyXzUgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7CitJTlNFUlQg SU5UTyBzYWxlc21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpOworSU5TRVJU IElOVE8gc2FsZXNtYW5zIChzYWxlc21hbl9uYW1lKSBWQUxVRVMgKCdJdmFub3YnKTsKK1NFTEVD VCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFucyc6OnJlZ2NsYXNzOjpvaWQ7 CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAg ICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisK K1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmli dXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczFfMic6OnJlZ2Ns YXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAor LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9p ZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygy IHJvd3MpCisKKy0tIFNwbGl0IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHktY29sdW1uOgorU0VMRUNU IGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hF UkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNtYW5zMl81Jzo6cmVnY2xhc3M6Om9p ZDsKKyAgICBhdHRuYW1lICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzbWFuX2lkICAgfCBh ICAgICAgICAgICB8IAorIHNhbGVzbWFuX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykK KworQUxURVIgVEFCTEUgc2FsZXNtYW5zIFNQTElUIFBBUlRJVElPTiBzYWxlc21hbnMyXzUgSU5U TworICAoUEFSVElUSU9OIHNhbGVzbWFuczJfMyBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKSwK KyAgIFBBUlRJVElPTiBzYWxlc21hbnMzXzQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCksCisg ICBQQVJUSVRJT04gc2FsZXNtYW5zNF81IEZPUiBWQUxVRVMgRlJPTSAoNCkgVE8gKDUpKTsKK0lO U0VSVCBJTlRPIHNhbGVzbWFucyAoc2FsZXNtYW5fbmFtZSkgVkFMVUVTICgnTWF5Jyk7CitJTlNF UlQgSU5UTyBzYWxlc21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ0ZvcmQnKTsKK1NFTEVD VCAqIEZST00gc2FsZXNtYW5zMV8yOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMyXzM7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21h bl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IEl2 YW5vdgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczNfNDsKKyBzYWxlc21hbl9p ZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAzIHwgTWF5CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zNF81OworIHNh bGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDQgfCBGb3JkCisoMSByb3cpCisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVu dGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5E IGF0dHJlbGlkID0gJ3NhbGVzbWFucyc6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAgICB8 IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxl c21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1lLCBh dHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+ IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczFfMic6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0 bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAg fCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKKy0tIE5ldyBw YXJ0aXRpb25zIGhhdmUgaWRlbnRpdHktY29sdW1uczoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVu dGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5E IGF0dHJlbGlkID0gJ3NhbGVzbWFuczJfMyc6OnJlZ2NsYXNzOjpvaWQ7CisgICAgYXR0bmFtZSAg ICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBz YWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVDVCBhdHRuYW1l LCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51 bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczNfNCc6OnJlZ2NsYXNzOjpvaWQ7CisgICAg YXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwgYSAgICAgICAg ICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK1NFTEVD VCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczRfNSc6OnJlZ2NsYXNzOjpv aWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9pZCAgIHwg YSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3Mp CisKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFy dGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhz YWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAx XzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwor LS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFU RSBUQUJMRSBzYWxlc21hbnMxMF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNtYW5faWQgSU5UIFBS SU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOwor SU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAx MDAsIG5vdygpLCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF80MCBWQUxVRVMg KCdkdW1teSB2YWx1ZSAyJywgMjAsIDEwMSwgbm93KCksICdTbWlybm9mZicpOworQUxURVIgVEFC TEUgc2FsZXNtYW5zMTBfNDAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMx MF80MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczEwXzQwIERST1AgQ09M VU1OIGQzOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5z MTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFu cyBWQUxVRVMgKDEsICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEw LCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK0FM VEVSIFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCks CisgICBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMw KSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAo NDApKTsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8 IFBvaXJvdAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczEwXzIwOworIHNhbGVz bWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAxMCB8IE1heQorKDIgcm93cykKKworc2Vs ZWN0ICogZnJvbSBzYWxlc21hbnMyMF8zMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDIwIHwgU21pcm5vZmYK KygxIHJvdykKKworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMzMF80MDsKKyBzYWxlc21hbl9pZCB8 IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg IDMwIHwgRm9yZAorKDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworLS0K Ky0tIFRlc3Q6IHNwbGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNh bGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2Fs ZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVz X2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwg ICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9p cm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcics ICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUx MCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAg ICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAg ICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisg ICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgor ICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIy CisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAy MgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIw MjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0y MDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMt MjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3 LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0w Ni0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUt MDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxl c21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgor ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIK KyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAy MgorKDQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04g c2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8g KCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8yMF8zMCBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VMRUNUICogRlJP TSBzYWxlc19yYW5nZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAg ICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAg ICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAg ICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAg ICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAg ICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwg ICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAg IHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAg ICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgIDE0IHwgU21pdGggICAg ICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAg ICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwg ICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8 ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfYXByMjAyMl8wMV8xMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf YXByMjAyMl8xMF8yMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjJfMjBfMzA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAw MCB8IDA0LTMwLTIwMjIKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCist LSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMg Zm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhz YWxlc21hbl9pZCBJTlQsCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0 ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BB UlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQ QVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBl dGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5z aycsICdCcnlhbnNrJywgJ01hZ2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xnb2dy YWQnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKy0tIEVSUk9SOiAgcGFydGl0aW9uICJzYWxlc19lYXN0 IiB3b3VsZCBvdmVybGFwIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf d2VzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpLAor ICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFy b3ZzaycsICdWbGFkaXZvc3RvaycsICdNdXJtYW5zaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Nl bnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKSk7CitF UlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90 aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0xJTkUgMzogLi4uQUxVRVMg SU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snLCAnTXVybWFuc2snLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVy bGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlh bnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbics ICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1Zvcm9uZXpoJywgJ1ZvbGdvZ3Jh ZCcpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3 aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0xJTkUgMjogICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVS Uk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBi ZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dl c3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snLCBOVUxM KSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0to YWJhcm92c2snLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZP UiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOworRVJST1I6ICBu ZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ug c3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0xJTkUgMjogLi4uZXN0IEZPUiBWQUxVRVMg SU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywgTlVMTCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMgZXJyb3Jz IGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9ucyBub3QgaGFz IE5VTEwgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAqIG5ldyBwYXJ0aXRp b25zIG5vdCBoYXMgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQsCisgc2FsZXNtYW5fbmFtZSBWQVJD SEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAor IHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2Nvdycs ICdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywgJ01hZ2FkYW4nLCAnS2F6YW4nLCAn S2hhYmFyb3ZzaycsICdWb2xnb2dyYWQnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKKy0tIEVSUk9S OiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0aW9u IGhhcworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdT bW9sZW5zaycsICdCcnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVT IElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJ T04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdv Z3JhZCcpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUgTlVMTCBidXQg c3BsaXQgcGFydGl0aW9uIGhhcworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBub3QgaGF2ZSB2 YWx1ZSAnVm9sZ29ncmFkJyBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworQUxURVIgVEFCTEUgc2Fs ZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFi YXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgTlVMTCkpOworRVJST1I6ICBuZXcgcGFydGl0 aW9ucyBub3QgaGF2ZSB2YWx1ZSAnVm9sZ29ncmFkJyBidXQgc3BsaXQgcGFydGl0aW9uIGhhcwor RFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5n LCBTUExJVCBQQVJUSVRJT04gd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QK KyhzYWxlc21hbl9pZCBTRVJJQUwsCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxl c19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFU RSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNf bGlzdF9zYWxlc21hbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc21h bl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxl c19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9y ZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3Qu IFBldGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9s ZW5zaycsICdCcnlhbnNrJywgJ01hZ2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xn b2dyYWQnLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz bWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAo J1RydW1wJywgICAgJ01hZ2FkYW4nLCAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91 bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1NtaXJub2ZmJywgJ1Ntb2xlbnNrJywgICAgICAgNTAw LCAgJzIwMjItMDMtMDMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUs IHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0ZvcmQnLCAg ICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVz X2RhdGUpIFZBTFVFUyAoJ0l2YW5vdicsICAgJ01vc2NvdycsICAgICAgICAgNzUwLCAgJzIwMjIt MDMtMDQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0 YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0RlZXYnLCAgICAgJ1Zvcm9u ZXpoJywgICAgICAgMjUwLCAgJzIwMjItMDMtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3Qg KHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZB TFVFUyAoJ1BvaXJvdCcsICAgJ0themFuJywgICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxl c19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ01heScsICAgICAgJ1VraHRhJywgICAgICAg ICAgMTIwMCwgJzIwMjItMDMtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFu X25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0xp JywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ01heScsICAgICAgJ1VraHRhJywgICAgICAgICAgMTIwMCwg JzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0hhbGRlcicsICAg J011cm1hbnNrJywgICAgICAgODAwLCAgJzIwMjItMDMtMDInKTsKK0lOU0VSVCBJTlRPIHNhbGVz X2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2Rh dGUpIFZBTFVFUyAoJ011bGxlcicsICAgJ0JyeWFuc2snLCAgICAgICAgNjUwLCAgJzIwMjItMDMt MDUnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRl LCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1NtaXRoJywgICAgJ1ZvbGdvZ3Jh ZCcsICAgICAgMzUwLCAgJzIwMjItMDMtMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNh bGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVF UyAoJ0dhbmRpJywgICAgJ01vc2NvdycsICAgICAgICAgMTUwLCAgJzIwMjItMDMtMDgnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1BsYXRvJywgICAgJ1Zvcm9uZXpoJywgICAgICAg OTUwLCAgJzIwMjItMDMtMDUnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElO ICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3Rv aycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01vc2Nvdycs ICdLYXphbicsICdWb2xnb2dyYWQnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7Cisgc2Fs ZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2Zm ICAgICAgfCBTbW9sZW5zayAgICAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgfCBWb3JvbmV6aCAgICAgICB8ICAgICAgICAgIDI1MCB8 IDAzLTA3LTIwMjIKKyAgICAgICAgICAxMSB8IE11bGxlciAgICAgICAgfCBCcnlhbnNrICAgICAg ICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAxNCB8IFBsYXRvICAgICAg ICAgfCBWb3JvbmV6aCAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgfCBNb3Njb3cgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDAz LTA0LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCBLYXphbiAgICAgICAgICB8 ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAxMiB8IFNtaXRoICAgICAgICAg fCBWb2xnb2dyYWQgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgfCBNb3Njb3cgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4 LTIwMjIKKyAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgfCBNYWdhZGFuICAgICAgICB8ICAg ICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgfCBW bGFkaXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAgICAgMyB8 IEZvcmQgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIw MjIKKyAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAgfCBVa2h0YSAgICAgICAgICB8ICAgICAg ICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAgOSB8IE1heSAgICAgICAgICAgfCBVa2h0 YSAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMCB8IEhh bGRlciAgICAgICAgfCBNdXJtYW5zayAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIK KygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3dlc3Q7Cisgc2FsZXNtYW5faWQgfCBz YWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCBTbW9sZW5zayAg ICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgfCBWb3JvbmV6aCAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAx MSB8IE11bGxlciAgICAgICAgfCBCcnlhbnNrICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIw MjIKKyAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgfCBWb3JvbmV6aCAgICB8ICAgICAgICAg IDk1MCB8IDAzLTA1LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZWFzdDsK KyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgVHJ1bXAgICAg ICAgICB8IE1hZ2FkYW4gICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAg ICA4IHwgTGkgICAgICAgICAgICB8IFZsYWRpdm9zdG9rIHwgICAgICAgICAxMTUwIHwgMDMtMDkt MjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworIHNhbGVzbWFuX2lk IHwgc2FsZXNtYW5fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwg U3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgIDcg fCBNYXkgICAgICAgICAgIHwgVWtodGEgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0wNi0y MDIyCisgICAgICAgICAgIDkgfCBNYXkgICAgICAgICAgIHwgVWtodGEgICAgICAgICAgfCAgICAg ICAgIDEyMDAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgTXVy bWFuc2sgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0yMDIyCisoNCByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2NlbnRyYWw7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwg c2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDc1 MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCBLYXphbiAgICAg ICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAxMiB8IFNtaXRoICAgICAg ICAgfCBWb2xnb2dyYWQgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAx MyB8IEdhbmRpICAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIw MjIKKyg0IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcyBhZnRlciBz cGxpdCBwYXJ0aXRpb24KK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNfc3Rh dGUgPSAnTW9zY293JzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19zdGF0 ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQt MjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAg ICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0 IFdIRVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nvdyc7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9u YW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAg ICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCBNb3Nj b3cgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc21hbl9uYW1lID0gJ0l2YW5vdic7Cisgc2FsZXNt YW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBN b3Njb3cgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKygxIHJvdykKKworU0VUIGVu YWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworRFJPUCBUQUJM RSBzYWxlc19saXN0OworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IERFRkFVTFQgcGFy dGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICog cmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0w My0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwg ICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2Fu ZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQ QVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNh ZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyXzFk ZWNhZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8 IDAxLTA5LTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNh ZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAy LTA5LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAw Mi0wNy0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjJfMWRlY2Fk ZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMt MDgtMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMWRlY2FkZTsK KyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDct MjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2 LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAg ICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAg ICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAg ICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisg ICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgor ICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIK KyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy CisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgorKDggcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoK Ky0tICAgKiBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNw YWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBp biBTUExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQn LCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjIt MDItMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAg IDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAs ICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1Bs YXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFk ZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8x ZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2FkZTsKKyBzYWxlc21hbl9pZCB8IHNh bGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTMg fCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBT bWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorICAgICAgICAgICA2IHwg UG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKygyIHJvd3MpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNt YW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExp ICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisoMSByb3cpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfYXByMjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNSB8IERlZXYg ICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDIgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8 ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAg fCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAg IHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAg ICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoOCByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlv biB0byBERUZBVUxUIHBhcnRpdGlvbiArIHBhcnRpdGlvbnMKKy0tIHdpdGggc3BhY2VzIGJldHdl ZW4gYm91bmRzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5U LCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wNS0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjIt MDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYs ICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIz Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hh bGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX3JhbmdlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAg ICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAg ICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAg ICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAg ICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwg ICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8 ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAg ICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAg ICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAg ICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAg ICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAq IEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwg ICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAg fCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2ZlYjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAg IDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAg ICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAg ICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAw NC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwg MDQtMTMtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8 IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAg fCAwNC0wNi0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAy MgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIw MjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0y MDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQt MjAyMgorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCitEUk9QIFNDSEVN QSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5k ZXggMDI2ZTdhNzc2NzUuLjdjZDRkZWRhOWJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUKQEAgLTExOSw3ICsxMTksNyBAQCB0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5 MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3Rh dHMgdGVzdCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2Vz cyBjYW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9u X21lcmdlIHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFy dCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBl eHBsYWluIGNvbXByZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlCit0ZXN0OiBwYXJ0aXRp b25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSBy ZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlv bl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGlj YXRlCiAKICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1 biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNDBjNzE4ODliNmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0wLDAgKzEsODMzIEBACistLQorLS0gUEFS VElUSU9OX1NQTElUCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJ T04gLi4uIiBjb21tYW5kCistLQorCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hl bWE7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CisK Ky0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJv ciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgaW50LCBz YWxlc21hbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRh dGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w MS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNf eHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX3h4eCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19q YW4yMDIyIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFu MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGlu dmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEn LCAnMjAyMi0wNi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKKworLS0gRVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlv biAic2FsZXNfbWFyMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS1FUlJPUjogIGxpc3Qgb2Yg c3BsaXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbnMgYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMTAtMDEnKSk7CisKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2Ygc3Bs aXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNf ZmViX21hcl9hcHIyMDIyIiBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRlIHBhcnRpdGlv biB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBidXQgY2FuJ3QgY3JlYXRl IHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNfZmViMjAyMiIgYWxyZWFkeSB1 c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAy MiIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBp cyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYt MDEnKSk7CisKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIy MDIyIiBpcyBub3QgZXF1YWxzIHRvIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJykpOworCistLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9u cywgdGhlbSBzaG91bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CisKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3Qg ZXF1YWxzIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykp OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CisK Ky0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0 aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVz bWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0 LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3 NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAg J0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAg JzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAg ICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx NCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIy OworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19tYXIy MDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIEFkZCBz cGxpdCBwYXJ0aXRpb24gdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0x MCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJ dmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcy MDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nz b24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0w NC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAg MzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNU ICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyOworU0VM RUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0g ICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47Cist LSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf ZGF0ZSAoc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21v bnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFU RUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicg fHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19k YXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMw KSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2Rl YzIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwg MSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIs IDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFY VkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMSwgMTIs IDcpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KTsK K0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNf bW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKTsKK0lOU0VSVCBJTlRPIHNhbGVz X2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkg VkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUo c2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVT ICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNt YW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjInLCAyMDIyLCAzLCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMn LCAyMDIyLCA1LCAxKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworU0VMRUNUICogRlJP TSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKK1NFTEVD VCAqIEZST00gc2FsZXNfb3RoZXI7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2phbl9mZWIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpLAorICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwg MywgMSkpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMSwg MTApOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsK KworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIy OworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIy MDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworLS1FUlJPUjogIHJlbGF0aW9uICJz YWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFu X2ZlYjIwMjI7CisKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworCistLQorLS0gVGVz dDogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb247IHVzaW5nIGEgaW5kZXggb24gcGFydGl0aW9uIGtl eTsgY2hlY2sgaW5kZXggYWZ0ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUg SU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRy ZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAn TWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAn MjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjIt MDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcs ICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1Nt aXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhl cnM7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290 aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CisKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gVXNlIGluZGV4c2Nh biBmb3IgdGVzdCBpbmRleGVzCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJs ZV9zZXFzY2FuID0gT0ZGOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2Fs ZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMiB3aGVy ZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIy IHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290 aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworCitTRVQgZW5hYmxlX2luZGV4 c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CisKK1NFTEVDVCAqIEZST00gcGdf aW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViMjAyMicgYW5kIHNjaGVtYW5hbWUg PSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hF UkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlv bl9zcGxpdF9zY2hlbWEnOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFt ZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2No ZW1hJzsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNf b3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKKworRFJP UCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc29tZSBjYXNlcyBm b3Igc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRF IFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNh bGVzX2RlYzIwMjIgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91 cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04g c2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIwMjAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgy MDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBzYWxl c19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAyMiAodXBwZXIgYm91bmQpCistLSBF UlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgY29uZmxpY3Rz IHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8g KDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIw MjIwMTAxKSBUTyAoMjAyMjAyMDIpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19k ZWMyMDIyIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlv biAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBh cnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMTEyMjApLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIw MzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vy cm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChleGFjdCB0aGUgc2FtZSBib3VuZHMp CistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZs aWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAy MiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIw MSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZS T00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIEVSUk9SOiAgYW55IHBhcnRpdGlvbiBpbiB0aGUg bGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxU CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEp IFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZS T00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSk7CisKKy0tIG5vIGVycm9y OiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBiZXR3ZWVuIHNhbGVzX2RlYzIwMjIgYW5kIHNhbGVz X2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19v dGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgy MDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIyMDEyMCksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK KworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBz YWxlc19ub2Vycm9yIGVxdWFscyB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2Rl YzIwMjIgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENIRUNL IGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NS RUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21h bl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICAn UG9pcm90Jyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxlc21hbl9pZCBJTlQg UkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVD SyAoc2FsZXNfYW1vdW50ID4gMSksCitzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAy LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBE RUZBVUxUOworCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29u a2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2Fw cjIwMjInOjpyZWdjbGFzczo6b2lkOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIFdlIHNob3Vs ZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNfZmViX21hcl9hcHIyMDIyIHBh cnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtl eSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViMjAyMic6OnJl Z2NsYXNzOjpvaWQ7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwg Y29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIy Jzo6cmVnY2xhc3M6Om9pZDsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25u YW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2Fw cjIwMjInOjpyZWdjbGFzczo6b2lkOworCistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9u ICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9z YWxlc21hbl9pZF9jaGVjayIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMCwg JzIwMjItMDMtMTEnKTsKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2Fs ZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vf c2FsZXNtYW5faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEsIDEw LCAnMjAyMi0wMy0xMScpOworLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MSwgMTAsICcyMDIyLTAzLTExJyk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsK K0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0 aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4gY2FzZSBleGlzdHMgRk9SRUlHTiBLRVkgcmVm ZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2Fs ZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlcyAoc2FsZXNt YW5faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBB UlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRF IFRBQkxFIHNhbGVzbWFuczEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQ b2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJTlNF UlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2Fs ZXNtYW5zIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZB TFVFUyAoMzAsICdGb3JkJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMSwgIDEwMCwg JzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMSwgIDExMCwgJzIwMjIt MDMtMDInKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTAsIDE1MCwgJzIwMjItMDMtMDEn KTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKTsKK0lO U0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTksIDIwMCwgJzIwMjItMDMtMDQnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzIFZBTFVFUyAoMjAsIDUwLCAgJzIwMjItMDMtMTInKTsKK0lOU0VSVCBJTlRPIHNh bGVzIFZBTFVFUyAoMjAsIDE3MCwgJzIwMjItMDMtMDInKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZB TFVFUyAoMzAsIDMwLCAgJzIwMjItMDMtMDQnKTsKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMw MV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMTBfNDA7CisKK0FMVEVSIFRBQkxFIHNhbGVz bWFucyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNh bGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04g c2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElP TiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKKworU0VMRUNU ICogRlJPTSBzYWxlc21hbnMwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMTBfMjA7CitT RUxFQ1QgKiBGUk9NIHNhbGVzbWFuczIwXzMwOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMzMF80 MDsKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0 ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNtYW5faWRfZmtleSIKK0lOU0VS VCBJTlRPIHNhbGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKKy0tIG9rCitJTlNF UlQgSU5UTyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CisKK0RST1AgVEFC TEUgc2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CisKKy0tCist LSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2Vy cworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZ LCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFu X2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21h bnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEw XzQwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsK KworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0 cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisJUkFJU0UgTk9USUNF ICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRH X0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VO RDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNtYW5zX2FmdGVyX2luc2VydF9zdGF0 ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzbWFucworICAgIEZP UiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3df dHJpZ2dlcignc2FsZXNtYW5zJyk7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19hZnRlcl9p bnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAg ICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3Ry aWdnZXIoJ3NhbGVzbWFucycpOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJv dyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScp OworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxl c21hbnMxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFu cyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVz bWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04gc2Fs ZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBz YWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKKworLS0gMiB0cmln Z2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2Fs ZXNtYW5zIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJl IGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMzMF80MCBWQUxVRVMgKDMwLCAnRm9y ZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOworU0VMRUNUICogRlJPTSBzYWxl c21hbnMxMF8yMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMjBfMzA7CitTRUxFQ1QgKiBGUk9N IHNhbGVzbWFuczMwXzQwOworCitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworRFJPUCBG VU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0 IHBhcnRpdGlvbiB3aXRjaCBpZGVudGl0eSBjb2x1bW4KKy0tIElmIHNwbGl0IHBhcnRpdGlvbiBj b2x1bW4gaXMgaWRlbnRpdHktY29sdW1uLCBjb2x1bW5zIG9mIG5ldyBwYXJ0aXRpb25zIGFyZSBp ZGVudGl0eS1jb2x1bW5zIHRvby4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFu X2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBzYWxlc21h bl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKKwor Q1JFQVRFIFRBQkxFIHNhbGVzbWFuczFfMiBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBpZGVudGl0 eS1jb2x1bW46CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMl81KHNhbGVzbWFuX2lkIElOVCBOT1Qg TlVMTCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMg QVRUQUNIIFBBUlRJVElPTiBzYWxlc21hbnMyXzUgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7 CisKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyAoc2FsZXNtYW5fbmFtZSkgVkFMVUVTICgnUG9pcm90 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ0l2YW5v dicpOworCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBn X2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnMnOjpy ZWdjbGFzczo6b2lkOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQg RlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNt YW5zMV8yJzo6cmVnY2xhc3M6Om9pZDsKKy0tIFNwbGl0IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHkt Y29sdW1uOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBw Z19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNtYW5zMl81 Jzo6cmVnY2xhc3M6Om9pZDsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIFNQTElUIFBBUlRJVElP TiBzYWxlc21hbnMyXzUgSU5UTworICAoUEFSVElUSU9OIHNhbGVzbWFuczJfMyBGT1IgVkFMVUVT IEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzXzQgRk9SIFZBTFVFUyBG Uk9NICgzKSBUTyAoNCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zNF81IEZPUiBWQUxVRVMgRlJP TSAoNCkgVE8gKDUpKTsKKworSU5TRVJUIElOVE8gc2FsZXNtYW5zIChzYWxlc21hbl9uYW1lKSBW QUxVRVMgKCdNYXknKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyAoc2FsZXNtYW5fbmFtZSkgVkFM VUVTICgnRm9yZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczFfMjsKK1NFTEVDVCAqIEZS T00gc2FsZXNtYW5zMl8zOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMzXzQ7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzbWFuczRfNTsKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5l cmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAn c2FsZXNtYW5zJzo6cmVnY2xhc3M6Om9pZDsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwg YXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzbWFuczFfMic6OnJlZ2NsYXNzOjpvaWQ7CistLSBOZXcgcGFydGl0aW9ucyBo YXZlIGlkZW50aXR5LWNvbHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdl bmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9 ICdzYWxlc21hbnMyXzMnOjpyZWdjbGFzczo6b2lkOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50 aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQg YXR0cmVsaWQgPSAnc2FsZXNtYW5zM180Jzo6cmVnY2xhc3M6Om9pZDsKK1NFTEVDVCBhdHRuYW1l LCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51 bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczRfNSc6OnJlZ2NsYXNzOjpvaWQ7CisKK0RS T1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRp b24gd2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVz bWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc21hbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMwMV8x MCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0t IENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUg VEFCTEUgc2FsZXNtYW5zMTBfNDAoZDEgVkFSQ0hBUigzMCksIHNhbGVzbWFuX2lkIElOVCBQUklN QVJZIEtFWSwgZDIgSU5ULCBkMyBEQVRFLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKKwor SU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAx MDAsIG5vdygpLCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF80MCBWQUxVRVMg KCdkdW1teSB2YWx1ZSAyJywgMjAsIDEwMSwgbm93KCksICdTbWlybm9mZicpOworCitBTFRFUiBU QUJMRSBzYWxlc21hbnMxMF80MCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFu czEwXzQwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2FsZXNtYW5zMTBfNDAgRFJPUCBD T0xVTU4gZDM7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElUSU9OIHNhbGVz bWFuczEwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNh bGVzbWFucyBWQUxVRVMgKDEsICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxV RVMgKDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgzMCwgJ0ZvcmQn KTsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIFNQTElUIFBBUlRJVElPTiBzYWxlc21hbnMxMF80 MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNtYW5zMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkg VE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIw KSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAo MzApIFRPICg0MCkpOworCitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczAxXzEwOworc2VsZWN0ICog ZnJvbSBzYWxlc21hbnMxMF8yMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMjBfMzA7CitzZWxl Y3QgKiBmcm9tIHNhbGVzbWFuczMwXzQwOworCitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURF OworCistLQorLS0gVGVzdDogc3BsaXQgc3ViLXBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19h cHIyMDIyIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0NS RUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lO RyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQt MzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAn RGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAn MjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxl cicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjIt MDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAg IDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz X3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworCitBTFRFUiBUQUJMRSBzYWxl c19hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19hcHJfYWxsIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19hcHIyMDIyXzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzEwXzIwIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyXzIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIw MjItMDUtMDEnKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMDFfMTA7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBfMjA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjJfMjBfMzA7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBCWSBMSVNUIHBh cnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElT VCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzbWFuX2lk IElOVCwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIo MjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZ IExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJn JywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5 YW5zaycsICdNYWdhZGFuJywgJ0themFuJywgJ0toYWJhcm92c2snLCAnVm9sZ29ncmFkJywgJ1Zs YWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxl c19saXN0IERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uICJzYWxlc19lYXN0IiB3b3Vs ZCBvdmVybGFwIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAgUEFS VElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3Zzaycs ICdWbGFkaXZvc3RvaycsICdNdXJtYW5zaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwg Rk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKSk7CisKKy0tIEVS Uk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3Ro ZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAgUEFS VElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3Zzaycs ICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJ TiAoJ01vc2NvdycsICdLYXphbicsICdWb3JvbmV6aCcsICdWb2xnb2dyYWQnKSk7CisKKy0tIEVS Uk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBi ZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dl c3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snLCBOVUxM KSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0to YWJhcm92c2snLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZP UiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOworCitEUk9QIFRB QkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMgZXJyb3JzIGZvciBC WSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9ucyBub3QgaGFzIE5VTEwg dmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIG5v dCBoYXMgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQsCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMw KSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVz X2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBU QUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdN dXJtYW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ1Zv cm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snLCAnTWFnYWRhbicsICdLYXphbicsICdLaGFi YXJvdnNrJywgJ1ZvbGdvZ3JhZCcsICdWbGFkaXZvc3RvaycsIE5VTEwpOworCistLSBFUlJPUjog IG5ldyBwYXJ0aXRpb25zIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBo YXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21v bGVuc2snLCAnQnJ5YW5zaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJ TiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9O IHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dy YWQnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUgJ1ZvbGdv Z3JhZCcgYnV0IHNwbGl0IHBhcnRpdGlvbiBoYXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1Ig VkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAgUEFSVElU SU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdW bGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAo J01vc2NvdycsICdLYXphbicsIE5VTEwpKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCist LQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRh dGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzbWFuX2lkIFNFUklBTCwKKyBz YWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNh bGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNh bGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNtYW5fbmFtZV9pZHgg T04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNtYW5fbmFtZSk7CitDUkVBVEUgSU5ERVgg c2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2Fs ZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywgJ01h Z2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xnb2dyYWQnLCAnVmxhZGl2b3N0b2sn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVG QVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3Rh dGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnVHJ1bXAnLCAgICAnTWFnYWRh bicsICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFM VUVTICgnU21pcm5vZmYnLCAnU21vbGVuc2snLCAgICAgICA1MDAsICAnMjAyMi0wMy0wMycpOwor SU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVz X2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcn LCAyMDAwLCAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSXZh bm92JywgICAnTW9zY293JywgICAgICAgICA3NTAsICAnMjAyMi0wMy0wNCcpOworSU5TRVJUIElO VE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTICgnRGVldicsICAgICAnVm9yb25lemgnLCAgICAgICAyNTAsICAn MjAyMi0wMy0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUG9pcm90JywgICAn S2F6YW4nLCAgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0 ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0w NicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUs IHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTGknLCAgICAgICAnVmxhZGl2b3N0 b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2Fs ZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVT ICgnTWF5JywgICAgICAnVWtodGEnLCAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpOworSU5T RVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ft b3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSGFsZGVyJywgICAnTXVybWFuc2snLCAgICAgICA4 MDAsICAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTXVsbGVy JywgICAnQnJ5YW5zaycsICAgICAgICA2NTAsICAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2Fs ZXNfZGF0ZSkgVkFMVUVTICgnU21pdGgnLCAgICAnVm9sZ29ncmFkJywgICAgICAzNTAsICAnMjAy Mi0wMy0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNf c3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnR2FuZGknLCAgICAnTW9z Y293JywgICAgICAgICAxNTAsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlz dCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkg VkFMVUVTICgnUGxhdG8nLCAgICAnVm9yb25lemgnLCAgICAgICA5NTAsICAnMjAyMi0wMy0wNScp OworCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Nt b2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMg SU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElP TiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29n cmFkJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X3dlc3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Vhc3Q7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX25v cmQ7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWw7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9y IHRlc3QgaW5kZXhlcyBhZnRlciBzcGxpdCBwYXJ0aXRpb24KK1NFVCBlbmFibGVfaW5kZXhzY2Fu ID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gc2FsZXNf Y2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdNb3Njb3cnOworU0VMRUNUICogRlJPTSBzYWxl c19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nvdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X2xpc3QgV0hFUkUgc2FsZXNtYW5fbmFtZSA9ICdJdmFub3YnOworCitTRVQgZW5hYmxlX2luZGV4 c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CisKK0RST1AgVEFCTEUgc2FsZXNf bGlzdDsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IERFRkFVTFQgcGFydGl0aW9u IHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9t IG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjIt MDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAg IDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUs ICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMDcnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011 bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIw MjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScs ICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNC0xMCcpKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyXzFk ZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZS T00gc2FsZXNfbWFyMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzFk ZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRp dGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzOworLS0gICAqIHJh bmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5 JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAy Mi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAg ICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo NiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1 MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAn SGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAn MjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRo JywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8x ZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJf MWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFu MjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXBy MjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUg c2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRp b24gdG8gREVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNwYWNlcyBiZXR3 ZWVuIGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElO VCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDUtMDEnKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01h eScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIw MjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2Jywg ICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAy LTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAy NTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAg JzIwMjItMDEtMDknKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitT RUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOwor U0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIy OworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7 CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOwpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCBhYTMwMjU2NzZmZC4uODc3YzExMDFmMmUgMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CkBAIC0yNjY2LDYgKzI2NjYsNyBAQCBTcGVjaWFsSm9pbkluZm8KIFNwaW5E ZWxheVN0YXR1cwogU3BsaXRJbnRlcnZhbAogU3BsaXRMUgorU3BsaXRQYXJ0aXRpb25Db250ZXh0 CiBTcGxpdFBhZ2VMYXlvdXQKIFNwbGl0UG9pbnQKIFNwbGl0VGV4dE91dHB1dERhdGEKLS0gCjIu MzkuMyAoQXBwbGUgR2l0LTE0NSkKCg== --0000000000006456fe061498cc66 Content-Type: application/octet-stream; name="0001-ALTER-TABLE-MERGE-PARTITIONS-command-v26.patch" Content-Disposition: attachment; filename="0001-ALTER-TABLE-MERGE-PARTITIONS-command-v26.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lu90dgn50 RnJvbSAyZjFiOGY3NjYxMjlhNWU1NjNkZjVhYWM4NjUxMGFkZDIwNTJlNzFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNwcm8ucnU+ CkRhdGU6IE1vbiwgMTkgU2VwIDIwMjIgMTY6MDY6MDMgKzAzMDAKU3ViamVjdDogW1BBVENIIDEv NF0gQUxURVIgVEFCTEUgTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCgotLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8IDM0OSArKysrKysrKy0KIHNyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAyMiArLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgIDg5ICsrKwogc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgMjA3ICsrKysrCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgMTQgKwogc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggICAgICAgICB8ICAgNiArCiAuLi4vaXNvbGF0 aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQgICAgfCAxOTkgKysrKysKIHNyYy90ZXN0 L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9p c29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgfCAgNTQgKysKIC4uLi90ZXN0X2Rk bF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCA3MzYgKysrKysrKysrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDIgKy0K IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgICAgICB8IDQzNCArKysr KysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwg ICAxICsKIDE1IGZpbGVzIGNoYW5nZWQsIDIwOTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRp dGlvbi1tZXJnZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwppbmRleCA4YTAyYzViMDViNi4uMmY5ODg5YjQxOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCkBAIC02NzAsNiArNjcwLDggQEAgc3RhdGljIHZvaWQgQVREZXRhY2hDaGVja05vRm9y ZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0 ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqY29tcHJlc3Npb24pOwogc3Rh dGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0 b3JhZ2Vtb2RlKTsKIAorc3RhdGljIHZvaWQgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3 cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAorCQkJCQkJCQkgIFBh cnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwogCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVsYXRpb24KQEAgLTQ3MzQsNiArNDczNiwxMCBAQCBBbHRl clRhYmxlR2V0TG9ja0xldmVsKExpc3QgKmNtZHMpCiAJCQkJY21kX2xvY2ttb2RlID0gU2hhcmVV cGRhdGVFeGNsdXNpdmVMb2NrOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEFUX01lcmdlUGFydGl0 aW9uczoKKwkJCQljbWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCQkJCWJyZWFr OworCiAJCQlkZWZhdWx0OgkJCS8qIG9vcHMgKi8KIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBA IC01MTUzLDYgKzUxNTksMTEgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJl bCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5l ZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKIAkJCWJyZWFrOworCQljYXNlIEFUX01l cmdlUGFydGl0aW9uczoKKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWws IEFUVF9UQUJMRSk7CisJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCisJ CQlwYXNzID0gQVRfUEFTU19NSVNDOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMg Ki8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAog CQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTU1MCw2ICs1NTYxLDE0IEBAIEFURXhlY0Nt ZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCiAJCWNhc2UgQVRfRGV0YWNo UGFydGl0aW9uRmluYWxpemU6CiAJCQlhZGRyZXNzID0gQVRFeGVjRGV0YWNoUGFydGl0aW9uRmlu YWxpemUocmVsLCAoKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiktPm5hbWUpOwogCQkJYnJlYWs7 CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNt ZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZhbHNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSAgY3Vy X3Bhc3MsIGNvbnRleHQpOworCQkJQXNzZXJ0KGNtZCAhPSBOVUxMKTsKKwkJCUFzc2VydChyZWwt PnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCUFURXhl Y01lcmdlUGFydGl0aW9ucyh3cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ ZGVmLAorCQkJCQkJCQkgIGNvbnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9v cHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQi LAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNjU0MCw2ICs2NTU5LDggQEAgYWx0ZXJf dGFibGVfdHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21kdHlwZSkKIAkJCXJldHVybiAi REVUQUNIIFBBUlRJVElPTiI7CiAJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJ CQlyZXR1cm4gIkRFVEFDSCBQQVJUSVRJT04gLi4uIEZJTkFMSVpFIjsKKwkJY2FzZSBBVF9NZXJn ZVBhcnRpdGlvbnM6CisJCQlyZXR1cm4gIk1FUkdFIFBBUlRJVElPTlMiOwogCQljYXNlIEFUX0Fk ZElkZW50aXR5OgogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4uIEFERCBJREVOVElUWSI7CiAJ CWNhc2UgQVRfU2V0SWRlbnRpdHk6CkBAIC0xOTAzNCw2ICsxOTA1NSwzNyBAQCBRdWV1ZVBhcnRp dGlvbkNvbnN0cmFpbnRWYWxpZGF0aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHNjYW5yZWws CiAJfQogfQogCisvKgorICogYXR0YWNoUGFydGl0aW9uVGFibGU6IGF0dGFjaCBuZXcgcGFydGl0 aW9uIHRvIHBhcnRpdGlvbmVkIHRhYmxlCisgKgorICogd3F1ZXVlOiB0aGUgQUxURVIgVEFCTEUg d29yayBxdWV1ZTsgY2FuIGJlIE5VTEwgd2hlbiBub3QgcnVubmluZyBhcyBwYXJ0CisgKiAgIG9m IGFuIEFMVEVSIFRBQkxFIHNlcXVlbmNlLgorICogcmVsOiBwYXJ0aXRpb25lZCByZWxhdGlvbjsK KyAqIGF0dGFjaHJlbDogcmVsYXRpb24gb2YgYXR0YWNoZWQgcGFydGl0aW9uOworICogYm91bmQ6 IGJvdW5kcyBvZiBhdHRhY2hlZCByZWxhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2F0dGFjaFBh cnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gYXR0YWNo cmVsLCBQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kKQoreworCS8qIE9LIHRvIGNyZWF0ZSBpbmhl cml0YW5jZS4gIFJlc3Qgb2YgdGhlIGNoZWNrcyBwZXJmb3JtZWQgdGhlcmUgKi8KKwlDcmVhdGVJ bmhlcml0YW5jZShhdHRhY2hyZWwsIHJlbCwgdHJ1ZSk7CisKKwkvKiBVcGRhdGUgdGhlIHBnX2Ns YXNzIGVudHJ5LiAqLworCVN0b3JlUGFydGl0aW9uQm91bmQoYXR0YWNocmVsLCByZWwsIGJvdW5k KTsKKworCS8qIEVuc3VyZSB0aGVyZSBleGlzdHMgYSBjb3JyZWN0IHNldCBvZiBpbmRleGVzIGlu IHRoZSBwYXJ0aXRpb24uICovCisJQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyh3cXVldWUs IHJlbCwgYXR0YWNocmVsKTsKKworCS8qIGFuZCB0cmlnZ2VycyAqLworCUNsb25lUm93VHJpZ2dl cnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7CisKKwkvKgorCSAqIENsb25lIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwCisJ ICogZm9yIHBoYXNlIDMgY29uc3RyYWludCB2ZXJpZmljYXRpb24uCisJICovCisJQ2xvbmVGb3Jl aWduS2V5Q29uc3RyYWludHMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7Cit9CisKIC8qCiAgKiBB TFRFUiBUQUJMRSA8bmFtZT4gQVRUQUNIIFBBUlRJVElPTiA8cGFydGl0aW9uLW5hbWU+IEZPUiBW QUxVRVMKICAqCkBAIC0xOTIzNiwyMyArMTkyODgsOCBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24o TGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAljaGVja19u ZXdfcGFydGl0aW9uX2JvdW5kKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGF0dGFjaHJlbCksIHJl bCwKIAkJCQkJCQkgIGNtZC0+Ym91bmQsIHBzdGF0ZSk7CiAKLQkvKiBPSyB0byBjcmVhdGUgaW5o ZXJpdGFuY2UuICBSZXN0IG9mIHRoZSBjaGVja3MgcGVyZm9ybWVkIHRoZXJlICovCi0JQ3JlYXRl SW5oZXJpdGFuY2UoYXR0YWNocmVsLCByZWwsIHRydWUpOwotCi0JLyogVXBkYXRlIHRoZSBwZ19j bGFzcyBlbnRyeS4gKi8KLQlTdG9yZVBhcnRpdGlvbkJvdW5kKGF0dGFjaHJlbCwgcmVsLCBjbWQt PmJvdW5kKTsKLQotCS8qIEVuc3VyZSB0aGVyZSBleGlzdHMgYSBjb3JyZWN0IHNldCBvZiBpbmRl eGVzIGluIHRoZSBwYXJ0aXRpb24uICovCi0JQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyh3 cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKLQotCS8qIGFuZCB0cmlnZ2VycyAqLwotCUNsb25lUm93 VHJpZ2dlcnNUb1BhcnRpdGlvbihyZWwsIGF0dGFjaHJlbCk7Ci0KLQkvKgotCSAqIENsb25lIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnRzLiAgQ2FsbGVlIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5n IHVwCi0JICogZm9yIHBoYXNlIDMgY29uc3RyYWludCB2ZXJpZmljYXRpb24uCi0JICovCi0JQ2xv bmVGb3JlaWduS2V5Q29uc3RyYWludHMod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCk7CisJLyogQXR0 YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUuICovCisJYXR0YWNo UGFydGl0aW9uVGFibGUod3F1ZXVlLCByZWwsIGF0dGFjaHJlbCwgY21kLT5ib3VuZCk7CiAKIAkv KgogCSAqIEdlbmVyYXRlIHBhcnRpdGlvbiBjb25zdHJhaW50IGZyb20gdGhlIHBhcnRpdGlvbiBi b3VuZCBzcGVjaWZpY2F0aW9uLgpAQCAtMjA4MDYsMyArMjA4NDMsMjgxIEBAIEdldEF0dHJpYnV0 ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSkKIAogCXJldHVy biBjc3RvcmFnZTsKIH0KKworLyoKKyAqIGNyZWF0ZVBhcnRpdGlvblRhYmxlOiBjcmVhdGUgdGFi bGUgZm9yIG5ldyBwYXJ0aXRpb24gd2l0aCBnaXZlbiBuYW1lCisgKiAobmV3UGFydE5hbWUpIGxp a2UgdGFibGUgKG1vZGVsUmVsTmFtZSkKKyAqCisgKiBFbXVsYXRlcyBjb21tYW5kOiBDUkVBVEUg VEFCTEUgPG5ld1BhcnROYW1lPiAoTElLRSA8bW9kZWxSZWxOYW1lPgorICogSU5DTFVESU5HIEFM TCBFWENMVURJTkcgSU5ERVhFUyBFWENMVURJTkcgSURFTlRJVFkpCisgKi8KK3N0YXRpYyB2b2lk CitjcmVhdGVQYXJ0aXRpb25UYWJsZShSYW5nZVZhciAqbmV3UGFydE5hbWUsIFJhbmdlVmFyICpt b2RlbFJlbE5hbWUsCisJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7 CisJQ3JlYXRlU3RtdCAqY3JlYXRlU3RtdDsKKwlUYWJsZUxpa2VDbGF1c2UgKnRsYzsKKwlQbGFu bmVkU3RtdCAqd3JhcHBlcjsKKworCWNyZWF0ZVN0bXQgPSBtYWtlTm9kZShDcmVhdGVTdG10KTsK KwljcmVhdGVTdG10LT5yZWxhdGlvbiA9IG5ld1BhcnROYW1lOworCWNyZWF0ZVN0bXQtPnRhYmxl RWx0cyA9IE5JTDsKKwljcmVhdGVTdG10LT5pbmhSZWxhdGlvbnMgPSBOSUw7CisJY3JlYXRlU3Rt dC0+Y29uc3RyYWludHMgPSBOSUw7CisJY3JlYXRlU3RtdC0+b3B0aW9ucyA9IE5JTDsKKwljcmVh dGVTdG10LT5vbmNvbW1pdCA9IE9OQ09NTUlUX05PT1A7CisJY3JlYXRlU3RtdC0+dGFibGVzcGFj ZW5hbWUgPSBOVUxMOworCWNyZWF0ZVN0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKworCXRs YyA9IG1ha2VOb2RlKFRhYmxlTGlrZUNsYXVzZSk7CisJdGxjLT5yZWxhdGlvbiA9IG1vZGVsUmVs TmFtZTsKKworCS8qCisJICogSW5kZXhlcyB3aWxsIGJlIGluaGVyaXRlZCBvbiAiYXR0YWNoIG5l dyBwYXJ0aXRpb25zIiBzdGFnZSwgYWZ0ZXIgZGF0YQorCSAqIG1vdmluZy4KKwkgKi8KKwl0bGMt Pm9wdGlvbnMgPSBDUkVBVEVfVEFCTEVfTElLRV9BTEwgJiB+KENSRUFURV9UQUJMRV9MSUtFX0lO REVYRVMgfCBDUkVBVEVfVEFCTEVfTElLRV9JREVOVElUWSk7CisJdGxjLT5yZWxhdGlvbk9pZCA9 IEludmFsaWRPaWQ7CisJY3JlYXRlU3RtdC0+dGFibGVFbHRzID0gbGFwcGVuZChjcmVhdGVTdG10 LT50YWJsZUVsdHMsIHRsYyk7CisKKwkvKiBOZWVkIHRvIG1ha2UgYSB3cmFwcGVyIFBsYW5uZWRT dG10LiAqLworCXdyYXBwZXIgPSBtYWtlTm9kZShQbGFubmVkU3RtdCk7CisJd3JhcHBlci0+Y29t bWFuZFR5cGUgPSBDTURfVVRJTElUWTsKKwl3cmFwcGVyLT5jYW5TZXRUYWcgPSBmYWxzZTsKKwl3 cmFwcGVyLT51dGlsaXR5U3RtdCA9IChOb2RlICopIGNyZWF0ZVN0bXQ7CisJd3JhcHBlci0+c3Rt dF9sb2NhdGlvbiA9IGNvbnRleHQtPnBzdG10LT5zdG10X2xvY2F0aW9uOworCXdyYXBwZXItPnN0 bXRfbGVuID0gY29udGV4dC0+cHN0bXQtPnN0bXRfbGVuOworCisJUHJvY2Vzc1V0aWxpdHkod3Jh cHBlciwKKwkJCQkgICBjb250ZXh0LT5xdWVyeVN0cmluZywKKwkJCQkgICBmYWxzZSwKKwkJCQkg ICBQUk9DRVNTX1VUSUxJVFlfU1VCQ09NTUFORCwKKwkJCQkgICBOVUxMLAorCQkJCSAgIE5VTEws CisJCQkJICAgTm9uZV9SZWNlaXZlciwKKwkJCQkgICBOVUxMKTsKK30KKworLyoKKyAqIG1vdmVN ZXJnZWRUYWJsZXNSb3dzOiBzY2FuIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkIChtZXJnaW5nUGFy dGl0aW9uc0xpc3QpCisgKiBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGUgKHJlbCkgYW5kIG1vdmUg cm93cyBpbnRvIHRoZSBuZXcgcGFydGl0aW9uCisgKiAobmV3UGFydFJlbCkuCisgKi8KK3N0YXRp YyB2b2lkCittb3ZlTWVyZ2VkVGFibGVzUm93cyhSZWxhdGlvbiByZWwsIExpc3QgKm1lcmdpbmdQ YXJ0aXRpb25zTGlzdCwKKwkJCQkJIFJlbGF0aW9uIG5ld1BhcnRSZWwpCit7CisJQ29tbWFuZElk CW15Y2lkOworCisJLyogVGhlIEZTTSBpcyBlbXB0eSwgc28gZG9uJ3QgYm90aGVyIHVzaW5nIGl0 LiAqLworCWludAkJCXRpX29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9GU007CisJTGlzdENl bGwgICAqbGlzdHB0cjsKKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2YgYnVs ayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKwor CW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCS8qIFByZXBhcmUgYSBCdWxr SW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gKi8KKwliaXN0YXRlID0gR2V0QnVs a0luc2VydFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICovCisJ ZHN0c2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKG5ld1Bh cnRSZWwpLAorCQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3MobmV3UGFydFJlbCkpOwor CUV4ZWNTdG9yZUFsbE51bGxUdXBsZShkc3RzbG90KTsKKworCWZvcmVhY2gobGlzdHB0ciwgbWVy Z2luZ1BhcnRpdGlvbnNMaXN0KQorCXsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlvbiA9IChS ZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIpOworCQlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwkJ VHVwbGVDb252ZXJzaW9uTWFwICp0dXBsZV9tYXA7CisJCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwkJ U25hcHNob3QJc25hcHNob3Q7CisKKwkJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9yIG5ldyBwYXJ0 aXRpb24uICovCisJCXNyY3Nsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25H ZXREZXNjcihtZXJnaW5nUGFydGl0aW9uKSwKKwkJCQkJCQkJCQkgICB0YWJsZV9zbG90X2NhbGxi YWNrcyhtZXJnaW5nUGFydGl0aW9uKSk7CisKKwkJLyoKKwkJICogTWFwIGNvbXB1dGluZyBmb3Ig bW92aW5nIGF0dHJpYnV0ZXMgb2YgbWVyZ2VkIHBhcnRpdGlvbiB0byBuZXcKKwkJICogcGFydGl0 aW9uLgorCQkgKi8KKwkJdHVwbGVfbWFwID0gY29udmVydF90dXBsZXNfYnlfbmFtZShSZWxhdGlv bkdldERlc2NyKG1lcmdpbmdQYXJ0aXRpb24pLAorCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0RGVz Y3IobmV3UGFydFJlbCkpOworCisJCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KKwkJc25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCQlzY2FuID0g dGFibGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMKTsKKwor CQl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlv biwgc3Jjc2xvdCkpCisJCXsKKwkJCVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90OworCisJCQkv KiBFeHRyYWN0IGRhdGEgZnJvbSBvbGQgdHVwbGUuICovCisJCQlzbG90X2dldGFsbGF0dHJzKHNy Y3Nsb3QpOworCisJCQlpZiAodHVwbGVfbWFwKQorCQkJeworCQkJCS8qIE5lZWQgdG8gdXNlIG1h cCBmb3IgY29weSBhdHRyaWJ1dGVzLiAqLworCQkJCWluc2VydHNsb3QgPSBleGVjdXRlX2F0dHJf bWFwX3Nsb3QodHVwbGVfbWFwLT5hdHRyTWFwLCBzcmNzbG90LCBkc3RzbG90KTsKKwkJCX0KKwkJ CWVsc2UKKwkJCXsKKwkJCQkvKiBDb3B5IGF0dHJpYnV0ZXMgZGlyZWN0bHkuICovCisJCQkJaW5z ZXJ0c2xvdCA9IGRzdHNsb3Q7CisKKwkJCQlFeGVjQ2xlYXJUdXBsZShpbnNlcnRzbG90KTsKKwor CQkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFsdWVzLAor CQkJCQkgICBzaXplb2YoRGF0dW0pICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisJCQkJbWVtY3B5 KGluc2VydHNsb3QtPnR0c19pc251bGwsIHNyY3Nsb3QtPnR0c19pc251bGwsCisJCQkJCSAgIHNp emVvZihib29sKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCisJCQkJRXhlY1N0b3JlVmlydHVh bFR1cGxlKGluc2VydHNsb3QpOworCQkJfQorCisJCQkvKiBXcml0ZSB0aGUgdHVwbGUgb3V0IHRv IHRoZSBuZXcgcmVsYXRpb24uICovCisJCQl0YWJsZV90dXBsZV9pbnNlcnQobmV3UGFydFJlbCwg aW5zZXJ0c2xvdCwgbXljaWQsIHRpX29wdGlvbnMsIGJpc3RhdGUpOworCisJCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOworCQl9CisKKwkJdGFibGVfZW5kc2NhbihzY2FuKTsKKwkJVW5yZWdpc3Rl clNuYXBzaG90KHNuYXBzaG90KTsKKworCQlpZiAodHVwbGVfbWFwKQorCQkJZnJlZV9jb252ZXJz aW9uX21hcCh0dXBsZV9tYXApOworCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc3Jj c2xvdCk7CisJfQorCisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChkc3RzbG90KTsKKwlG cmVlQnVsa0luc2VydFN0YXRlKGJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0 KG5ld1BhcnRSZWwsIHRpX29wdGlvbnMpOworfQorCisvKgorICogQUxURVIgVEFCTEUgPG5hbWU+ IE1FUkdFIFBBUlRJVElPTlMgPHBhcnRpdGlvbi1saXN0PiBJTlRPIDxwYXJ0aXRpb24tbmFtZT4K KyAqLworc3RhdGljIHZvaWQKK0FURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBB bHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJICBQYXJ0aXRpb25DbWQg KmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJlbGF0aW9uCW5l d1BhcnRSZWw7CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKwlMaXN0CSAgICptZXJnaW5nUGFydGl0 aW9uc0xpc3QgPSBOSUw7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJY2hhcgkJdG1wUmVsTmFt ZVtOQU1FREFUQUxFTl07CisJUmFuZ2VWYXIgICAqbWVyZ2VQYXJ0TmFtZSA9IGNtZC0+bmFtZTsK Kwlib29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CisKKwkvKgorCSAqIExvY2sgYWxsIG1lcmdlZCBw YXJ0aXRpb25zLCBjaGVjayB0aGVtIGFuZCBjcmVhdGUgbGlzdCB3aXRoIHBhcnRpdGlvbnMKKwkg KiBjb250ZXh0cy4KKwkgKi8KKwlmb3JlYWNoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3QpCisJewor CQlSYW5nZVZhciAgICpuYW1lID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmVs YXRpb24JbWVyZ2luZ1BhcnRpdGlvbjsKKworCQkvKgorCQkgKiBXZSBhcmUgZ29pbmcgdG8gZGV0 YWNoIGFuZCByZW1vdmUgdGhpcyBwYXJ0aXRpb246IG5lZWQgdG8gdXNlCisJCSAqIGV4Y2x1c2l2 ZSBsb2NrIGZvciBwcmV2ZW50IERNTC1xdWVyaWVzIHRvIHRoZSBwYXJ0aXRpb24uCisJCSAqLwor CQltZXJnaW5nUGFydGl0aW9uID0gdGFibGVfb3BlbnJ2KG5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxv Y2spOworCisJCWlmIChtZXJnaW5nUGFydGl0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lO RF9SRUxBVElPTikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JP TkdfT0JKRUNUX1RZUEUpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgbWVyZ2Ugbm9uLXRhYmxlIHBh cnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKG1lcmdpbmdQ YXJ0aXRpb24pKSkpOworCisJCS8qCisJCSAqIENoZWNraW5nIHRoYXQgdHdvIHBhcnRpdGlvbnMg aGF2ZSB0aGUgc2FtZSBuYW1lIHdhcyBiZWZvcmUsIGluCisJCSAqIGZ1bmN0aW9uIHRyYW5zZm9y bVBhcnRpdGlvbkNtZEZvck1lcmdlKCkuCisJCSAqLworCQlpZiAoZXF1YWwobmFtZSwgY21kLT5u YW1lKSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMg bWVyZ2VkIHBhcnRpdGlvbi4gKi8KKwkJCWlzU2FtZU5hbWUgPSB0cnVlOworCisJCS8qIFN0b3Jl IGEgbmV4dCBtZXJnaW5nIHBhcnRpdGlvbiBpbnRvIHRoZSBsaXN0LiAqLworCQltZXJnaW5nUGFy dGl0aW9uc0xpc3QgPSBsYXBwZW5kKG1lcmdpbmdQYXJ0aXRpb25zTGlzdCwKKwkJCQkJCQkJCQlt ZXJnaW5nUGFydGl0aW9uKTsKKwl9CisKKwkvKiBEZXRhY2ggYWxsIG1lcmdlZCBwYXJ0aXRpb25z LiAqLworCWRlZmF1bHRQYXJ0T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2Mo UmVsYXRpb25HZXRQYXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOworCWZvcmVhY2gobGlzdHB0ciwg bWVyZ2luZ1BhcnRpdGlvbnNMaXN0KQorCXsKKwkJUmVsYXRpb24JbWVyZ2luZ1BhcnRpdGlvbiA9 IChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIpOworCisJCS8qIFJlbW92ZSB0aGUgcGdfaW5oZXJp dHMgcm93IGZpcnN0LiAqLworCQlSZW1vdmVJbmhlcml0YW5jZShtZXJnaW5nUGFydGl0aW9uLCBy ZWwsIGZhbHNlKTsKKwkJLyogRG8gdGhlIGZpbmFsIHBhcnQgb2YgZGV0YWNoaW5nLiAqLworCQlE ZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZShyZWwsIG1lcmdpbmdQYXJ0aXRpb24sIGZhbHNlLCBkZWZh dWx0UGFydE9pZCk7CisJfQorCisJLyogQ3JlYXRlIHRhYmxlIGZvciBuZXcgcGFydGl0aW9uLCB1 c2UgcGFydGl0aW9uZWQgdGFibGUgYXMgbW9kZWwuICovCisJaWYgKGlzU2FtZU5hbWUpCisJewor CQkvKiBDcmVhdGUgcGFydGl0aW9uIHRhYmxlIHdpdGggZ2VuZXJhdGVkIHRlbXBhcmFyeSBuYW1l LiAqLworCQlzcHJpbnRmKHRtcFJlbE5hbWUsICJtZXJnZS0ldS0lWC10bXAiLCBSZWxhdGlvbkdl dFJlbGlkKHJlbCksIE15UHJvY1BpZCk7CisJCW1lcmdlUGFydE5hbWUgPSBtYWtlUmFuZ2VWYXIo Z2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpLAorCQkJCQkJCQkJ IHRtcFJlbE5hbWUsIC0xKTsKKwl9CisJY3JlYXRlUGFydGl0aW9uVGFibGUobWVyZ2VQYXJ0TmFt ZSwKKwkJCQkJCSBtYWtlUmFuZ2VWYXIoZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFt ZXNwYWNlKHJlbCkpLAorCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCAt MSksCisJCQkJCQkgY29udGV4dCk7CisKKwkvKgorCSAqIE9wZW4gdGhlIG5ldyBwYXJ0aXRpb24g YW5kIGFjcXVpcmUgZXhjbHVzaXZlIGxvY2sgb24gaXQuICBUaGlzIHdpbGwKKwkgKiBzdG9wIGFs bCB0aGUgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlLiAgVGhpcyBtaWdodCBzZWVt CisJICogZXhjZXNzaXZlLCBidXQgdGhpcyBpcyB0aGUgd2F5IHdlIG1ha2Ugc3VyZSBub2JvZHkg aXMgcGxhbm5pbmcgcXVlcmllcworCSAqIGludm9sdmluZyBtZXJnaW5nIHBhcnRpdGlvbnMuCisJ ICovCisJbmV3UGFydFJlbCA9IHRhYmxlX29wZW5ydihtZXJnZVBhcnROYW1lLCBBY2Nlc3NFeGNs dXNpdmVMb2NrKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIG1lcmdlZCBwYXJ0aXRpb25zIHRvIG5l dyBwYXJ0aXRpb24uICovCisJbW92ZU1lcmdlZFRhYmxlc1Jvd3MocmVsLCBtZXJnaW5nUGFydGl0 aW9uc0xpc3QsIG5ld1BhcnRSZWwpOworCisJLyoKKwkgKiBBdHRhY2ggYSBuZXcgcGFydGl0aW9u IHRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4gd3F1ZXVlID0gTlVMTDoKKwkgKiB2ZXJpZmljYXRp b24gZm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90IG5lZWQuCisJICovCisJYXR0YWNo UGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBjbWQtPmJvdW5kKTsKKworCS8q IFVubG9jayBhbmQgZHJvcCBtZXJnZWQgcGFydGl0aW9ucy4gKi8KKwlmb3JlYWNoKGxpc3RwdHIs IG1lcmdpbmdQYXJ0aXRpb25zTGlzdCkKKwl7CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCQlS ZWxhdGlvbgltZXJnaW5nUGFydGl0aW9uID0gKFJlbGF0aW9uKSBsZmlyc3QobGlzdHB0cik7CisK KwkJLyogR2V0IHJlbGF0aW9uIGlkIGJlZm9yZSB0YWJsZV9jbG9zZSgpIGNhbGwuICovCisJCW9i amVjdC5vYmplY3RJZCA9IFJlbGF0aW9uR2V0UmVsaWQobWVyZ2luZ1BhcnRpdGlvbik7CisJCW9i amVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQlvYmplY3Qub2JqZWN0U3ViSWQg PSAwOworCisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9z ZShtZXJnaW5nUGFydGl0aW9uLCBOb0xvY2spOworCisJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0 LCBEUk9QX1JFU1RSSUNULCAwKTsKKwl9CisJbGlzdF9mcmVlKG1lcmdpbmdQYXJ0aXRpb25zTGlz dCk7CisKKwkvKiBSZW5hbWUgbmV3IHBhcnRpdGlvbiBpZiBpdCBpcyBuZWVkZWQuICovCisJaWYg KGlzU2FtZU5hbWUpCisJeworCQkvKgorCQkgKiBXZSBtdXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291 bnRlciB0byBtYWtlIHRoZSBuZXcgcGFydGl0aW9uIHR1cGxlCisJCSAqIHZpc2libGUgZm9yIHJl bmFtZS4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCS8qIFJlbmFtZSBw YXJ0aXRpb24uICovCisJCVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwoUmVsYXRpb25HZXRSZWxpZChu ZXdQYXJ0UmVsKSwKKwkJCQkJCQkgICBjbWQtPm5hbWUtPnJlbG5hbWUsIGZhbHNlLCBmYWxzZSk7 CisJfQorCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCXRhYmxlX2Nsb3NlKG5l d1BhcnRSZWwsIE5vTG9jayk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBjMWIwY2ZmMWM5ZS4uMGQ5ZDM1 MWI0NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNzU1LDcgKzc1NSw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJfUAogCU9WRVIgT1ZF UkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKLQlQQVJBTExFTCBQQVJBTUVU RVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQKKwlQQVJBTExFTCBQ QVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBUlRJVElPTlMgUEFTU0lORyBQQVNT V09SRAogCVBFUklPRCBQTEFDSU5HIFBMQU5TIFBPTElDWQogCVBPU0lUSU9OIFBSRUNFRElORyBQ UkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklM RUdFUyBQUk9DRURVUkFMIFBST0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04K QEAgLTIzMTAsNiArMjMxMCw3IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBB VF9BdHRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5k ID0gJDQ7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOVUxMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQg PSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0yMzI0LDYgKzIzMjUs NyBAQCBwYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0YWNoUGFydGl0aW9u OwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNt ZC0+cGFydGxpc3QgPSBOVUxMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSAkNDsKIAkJCQkJbi0+ ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0yMzM3LDYgKzIzMzksMjEgQEAgcGFydGl0aW9uX2Nt ZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOwogCQkJCQlj bWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxp c3QgPSBOVUxMOworCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0g KE5vZGUgKikgY21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJLyogQUxURVIg VEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ICov CisJCQl8IE1FUkdFIFBBUlRJVElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElOVE8g cXVhbGlmaWVkX25hbWUKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShB bHRlclRhYmxlQ21kKTsKKwkJCQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9kZShQYXJ0aXRp b25DbWQpOworCisJCQkJCW4tPnN1YnR5cGUgPSBBVF9NZXJnZVBhcnRpdGlvbnM7CisJCQkJCWNt ZC0+bmFtZSA9ICQ3OworCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlz dCA9ICQ0OwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5v ZGUgKikgY21kOwogCQkJCQkkJCA9IChOb2RlICopIG47CkBAIC0yMzUzLDYgKzIzNzAsNyBAQCBp bmRleF9wYXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfQXR0YWNoUGFydGl0aW9u OwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNt ZC0+cGFydGxpc3QgPSBOVUxMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJ bi0+ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0xNzUxMCw2ICsxNzUyOCw3IEBAIHVucmVzZXJ2 ZWRfa2V5d29yZDoKIAkJCXwgUEFSU0VSCiAJCQl8IFBBUlRJQUwKIAkJCXwgUEFSVElUSU9OCisJ CQl8IFBBUlRJVElPTlMKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAogCQkJfCBQRVJJT0QK QEAgLTE4MTI4LDYgKzE4MTQ3LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQQVJTRVIK IAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04KKwkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNT SU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBFUklPRApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21k LmMKaW5kZXggYzdlZmQ4ZDhjZWUuLjQ4YTIzYzdjYTQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMKQEAgLTU4LDYgKzU4LDggQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5o IgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlci5oIgorI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgorI2luY2x1ZGUgInBh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAu aCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpA QCAtMzQxMyw2ICszNDE1LDgwIEBAIHRyYW5zZm9ybVJ1bGVTdG10KFJ1bGVTdG10ICpzdG10LCBj b25zdCBjaGFyICpxdWVyeVN0cmluZywKIH0KIAogCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9u Q21kRm9yTWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMTEUgLi4uIE1FUkdFIFBBUlRJ VElPTlMgY29tbWFuZAorICoKKyAqIERvZXMgc2ltcGxlIGNoZWNrcyBmb3IgbWVyZ2VkIHBhcnRp dGlvbnMuIENhbGN1bGF0ZXMgYm91bmQgb2YgcmVzdWx0CisgKiBwYXJ0aXRpb24uCisgKi8KK3N0 YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZShDcmVhdGVTdG10Q29udGV4 dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7 CisJT2lkCQkJcGFydE9pZDsKKwlSZWxhdGlvbglwYXJlbnQgPSBjeHQtPnJlbDsKKwlQYXJ0aXRp b25LZXkga2V5OworCWNoYXIJCXN0cmF0ZWd5OworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkg ICAqbGlzdHB0cjI7CisJYm9vbAkJaXNEZWZhdWx0UGFydCA9IGZhbHNlOworCUxpc3QJICAgKnBh cnRPaWRzID0gTklMOworCisJaWYgKHBhcmVudC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90 IGEgcGFydGl0aW9uZWQgdGFibGUiLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnQpKSkp OworCisJa2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9 IGdldF9wYXJ0aXRpb25fc3RyYXRlZ3koa2V5KTsKKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJ T05fU1RSQVRFR1lfSEFTSCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygicGFydGl0aW9uIG9mIGhhc2gt cGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKSk7CisKKwkvKiBJcyBjdXJyZW50 IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9uPyAqLworCWRlZmF1bHRQYXJ0T2lkID0gZ2V0 X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoCisJCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFBh cnRpdGlvbkRlc2MocGFyZW50LCB0cnVlKSk7CisKKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRjbWQt PnBhcnRsaXN0KQorCXsKKwkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmlyc3Qo bGlzdHB0cik7CisKKwkJLyogUGFydGl0aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2ZSBkaWZm ZXJlbnQgbmFtZXMuICovCisJCWZvcl9lYWNoX2NlbGwobGlzdHB0cjIsIHBhcnRjbWQtPnBhcnRs aXN0LCBsbmV4dChwYXJ0Y21kLT5wYXJ0bGlzdCwgbGlzdHB0cikpCisJCXsKKwkJCVJhbmdlVmFy ICAgKm5hbWUyID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyMik7CisKKwkJCWlmIChlcXVh bChuYW1lLCBuYW1lMikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCSBlcnJtc2coInBhcnRpdGlvbiB3aXRoIG5hbWUg XCIlc1wiIGFscmVhZHkgdXNlZCIsIG5hbWUtPnJlbG5hbWUpKSwKKwkJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihjeHQtPnBzdGF0ZSwgbmFtZTItPmxvY2F0aW9uKSk7CisJCX0KKworCQkvKiBTZWFy Y2ggREVGQVVMVCBwYXJ0aXRpb24gaW4gdGhlIGxpc3QuICovCisJCXBhcnRPaWQgPSBSYW5nZVZh ckdldFJlbGlkKG5hbWUsIE5vTG9jaywgZmFsc2UpOworCQlpZiAocGFydE9pZCA9PSBkZWZhdWx0 UGFydE9pZCkKKwkJCWlzRGVmYXVsdFBhcnQgPSB0cnVlOworCQlwYXJ0T2lkcyA9IGxhcHBlbmRf b2lkKHBhcnRPaWRzLCBwYXJ0T2lkKTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBib3VuZCBvZiByZXN1 bHQgcGFydGl0aW9uLiAqLworCUFzc2VydChwYXJ0Y21kLT5ib3VuZCA9PSBOVUxMKTsKKwlwYXJ0 Y21kLT5ib3VuZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkJvdW5kU3BlYyk7CisKKwkvKiBGaWxsIHBh cnRpdGlvbiBib3VuZC4gKi8KKwlwYXJ0Y21kLT5ib3VuZC0+c3RyYXRlZ3kgPSBzdHJhdGVneTsK KwlwYXJ0Y21kLT5ib3VuZC0+bG9jYXRpb24gPSAtMTsKKwlwYXJ0Y21kLT5ib3VuZC0+aXNfZGVm YXVsdCA9IGlzRGVmYXVsdFBhcnQ7CisJaWYgKCFpc0RlZmF1bHRQYXJ0KQorCQljYWxjdWxhdGVf cGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShwYXJlbnQsIHBhcnRjbWQtPnBhcnRsaXN0LAorCQkJ CQkJCQkJCQlwYXJ0T2lkcywgcGFydGNtZC0+Ym91bmQsCisJCQkJCQkJCQkJCWN4dC0+cHN0YXRl KTsKK30KKwogLyoKICAqIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10IC0KICAqCQlwYXJzZSBhbmFs eXNpcyBmb3IgQUxURVIgVEFCTEUKQEAgLTM2ODMsNiArMzc1OSwxOSBAQCB0cmFuc2Zvcm1BbHRl clRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCW5ld2NtZHMg PSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfTWVyZ2VQ YXJ0aXRpb25zOgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlv bkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAobGlzdF9sZW5ndGgocGFydGNtZC0+cGFydGxp c3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCSBlcnJtc2coImxpc3Qgb2YgbmV3 IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0IHR3byBpdGVtcyIpKSk7CisJCQkJ CXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQpOworCQkJCQluZXdj bWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWRl ZmF1bHQ6CiAKIAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXgg YzI4NjM5ZDJlM2YuLjllZDgwZDcyMWVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmMKQEAgLTQ5NzcsMyArNDk3NywyMTAgQEAgc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBH X0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChyb3dIYXNoICUgbW9kdWx1cyA9PSBy ZW1haW5kZXIpOwogfQorCisvKgorICogY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3Jhbmdl CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcpCisgKgorICogVGhp cyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoKSBh bmQKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGZ1 bmN0aW9uIGNvbXBhcmVzIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGFuZCBsb3dlciBib3Vu ZCBvZgorICogc2Vjb25kX2JvdW5kLiBUaGVzZSBib3VuZHMgc2hvdWxkIGJlIGVxdWFscyBleGNl cHQgY2FzZQorICogImRlZmF1bHRQYXJ0ID09IHRydWUiICh0aGlzIG1lYW5zIHRoYXQgb25lIG9m IHNwbGl0IHBhcnRpdGlvbnMgaXMgREVGQVVMVCkuCisgKiBJbiB0aGlzIGNhc2UgdXBwZXIgYm91 bmQgb2YgZmlyc3RfYm91bmQgY2FuIGJlIGxlc3MgdGhhbiBsb3dlciBib3VuZCBvZgorICogc2Vj b25kX2JvdW5kIGJlY2F1c2Ugc3BhY2UgYmV0d2VlbiBvZiB0aGVzZSBib3VuZHMgd2lsbCBiZSBp bmNsdWRlZCBpbgorICogREVGQVVMVCBwYXJ0aXRpb24uCisgKgorICogcGFyZW50OgkJCXBhcnRp dGlvbmVkIHRhYmxlCisgKiBmaXJzdF9uYW1lOgkJbmFtZSBvZiBmaXJzdCBwYXJ0aXRpb24KKyAq IGZpcnN0X2JvdW5kOgkJYm91bmQgb2YgZmlyc3QgcGFydGl0aW9uCisgKiBzZWNvbmRfbmFtZToJ CW5hbWUgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogc2Vjb25kX2JvdW5kOglib3VuZCBvZiBzZWNv bmQgcGFydGl0aW9uCisgKiBkZWZhdWx0UGFydDoJCXRydWUgaWYgb25lIG9mIHNwbGl0IHBhcnRp dGlvbnMgaXMgREVGQVVMVAorICogcHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1 Y3QgZm9yIGRldGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tf dHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICBS YW5nZVZhciAqZmlyc3RfbmFtZSwKKwkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKmZpcnN0 X2JvdW5kLAorCQkJCQkJCQkgIFJhbmdlVmFyICpzZWNvbmRfbmFtZSwKKwkJCQkJCQkJICBQYXJ0 aXRpb25Cb3VuZFNwZWMgKnNlY29uZF9ib3VuZCwKKwkJCQkJCQkJICBib29sIGRlZmF1bHRQYXJ0 LAorCQkJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0g UmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25SYW5nZUJvdW5kICpm aXJzdF91cHBlcjsKKwlQYXJ0aXRpb25SYW5nZUJvdW5kICpzZWNvbmRfbG93ZXI7CisJaW50CQkJ Y21wdmFsOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JB TkdFKTsKKworCWZpcnN0X3VwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0x LCBmaXJzdF9ib3VuZC0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKwlzZWNvbmRfbG93ZXIgPSBtYWtl X29uZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIHNlY29uZF9ib3VuZC0+bG93ZXJkYXR1bXMs IHRydWUpOworCisJLyoKKwkgKiBsb3dlcjE9ZmFsc2UgKHRoZSBzZWNvbmQgdG8gbGFzdCBhcmd1 bWVudCkgZm9yIGNvcnJlY3QgY29tcGFyaXNvbiBsb3dlcgorCSAqIGFuZCB1cHBlciBib3VuZHMu CisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJ CQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24s CisJCQkJCQkJCSAgc2Vjb25kX2xvd2VyLT5kYXR1bXMsIHNlY29uZF9sb3dlci0+a2luZCwKKwkJ CQkJCQkJICBmYWxzZSwgZmlyc3RfdXBwZXIpOworCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZh bCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQorCXsKKwkJUGFydGl0aW9uUmFuZ2VE YXR1bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1zKTsKKworCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksCisJCQkJIGVycm1zZygibG93ZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBjb25m bGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJ CQkJCXNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSkpOworCX0KK30KKworLyoK KyAqIGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYworICoKKyAqIFJldHVybnMgZGVzY3JpcHRpb24g b2YgcGFydGl0aW9uIHdpdGggT2lkICJwYXJ0T2lkIiBhbmQgbmFtZSAibmFtZSIuCisgKi8KK3N0 YXRpYyBQYXJ0aXRpb25Cb3VuZFNwZWMgKgorZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKE9pZCBw YXJ0T2lkLCBSYW5nZVZhciAqbmFtZSkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJRGF0dW0JCWRh dHVtOworCWJvb2wJCWlzbnVsbDsKKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kc3BlYyA9IE5V TEw7CisKKwkvKiBUcnkgZmV0Y2hpbmcgdGhlIHR1cGxlIGZyb20gdGhlIGNhdGNhY2hlLCBmb3Ig c3BlZWQuICovCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBwYXJ0T2lkKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCSBuYW1lLT5yZWxuYW1lKTsKKworCWRh dHVtID0gU3lzQ2FjaGVHZXRBdHRyKFJFTE9JRCwgdHVwbGUsCisJCQkJCQkJQW51bV9wZ19jbGFz c19yZWxwYXJ0Ym91bmQsCisJCQkJCQkJJmlzbnVsbCk7CisJaWYgKGlzbnVsbCkKKwkJZWxvZyhF UlJPUiwgInBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRpb24gXCIlc1wiIGlzIG51bGwiLAorCQkJ IG5hbWUtPnJlbG5hbWUpOworCisJYm91bmRzcGVjID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdl dENTdHJpbmcoZGF0dW0pKTsKKworCWlmICghSXNBKGJvdW5kc3BlYywgUGFydGl0aW9uQm91bmRT cGVjKSkKKwkJZWxvZyhFUlJPUiwgImV4cGVjdGVkIFBhcnRpdGlvbkJvdW5kU3BlYyBmb3IgcmVs YXRpb24gXCIlc1wiIiwKKwkJCSBuYW1lLT5yZWxuYW1lKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0 dXBsZSk7CisJcmV0dXJuIGJvdW5kc3BlYzsKK30KKworLyoKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRp b25fYm91bmRfZm9yX21lcmdlCisgKgorICogQ2FsY3VsYXRlcyB0aGUgYm91bmQgb2YgbWVyZ2Vk IHBhcnRpdGlvbiAic3BlYyIgYnkgdXNpbmcgdGhlIGJvdW5kcyBvZgorICogcGFydGl0aW9ucyB0 byBiZSBtZXJnZWQuCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0 TmFtZXM6CQluYW1lcyBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZAorICogcGFydE9pZHM6CQlP aWRzIG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkCisgKiBzcGVjIChvdXQpOgkJYm91bmRzIHNw ZWNpZmljYXRpb24gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVy IHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLwor dm9pZAorY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50 LAorCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCisJ CQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQlQYXJzZVN0YXRlICpw c3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBh cmVudCk7CisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsKKworCUFzc2VydCghc3BlYy0+aXNf ZGVmYXVsdCk7CisKKwlzd2l0Y2ggKGtleS0+c3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElP Tl9TVFJBVEVHWV9SQU5HRToKKwkJCXsKKwkJCQlpbnQJCQlpOworCQkJCVBhcnRpdGlvblJhbmdl Qm91bmQgKipsb3dlcl9ib3VuZHM7CisJCQkJaW50CQkJbnBhcnRzID0gbGlzdF9sZW5ndGgocGFy dE9pZHMpOworCQkJCUxpc3QJICAgKmJvdW5kcyA9IE5JTDsKKworCQkJCWxvd2VyX2JvdW5kcyA9 IChQYXJ0aXRpb25SYW5nZUJvdW5kICoqKQorCQkJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQ YXJ0aXRpb25SYW5nZUJvdW5kICopKTsKKworCQkJCS8qCisJCQkJICogQ3JlYXRlIGFycmF5IG9m IGxvd2VyIGJvdW5kcyBhbmQgbGlzdCBvZgorCQkJCSAqIFBhcnRpdGlvbkJvdW5kU3BlYy4KKwkJ CQkgKi8KKwkJCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCQkJeworCQkJCQlib3Vu ZCA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhsaXN0X250aF9vaWQocGFydE9pZHMsIGkpLAor CQkJCQkJCQkJCQkJCSAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5hbWVzLCBpKSk7CisKKwkJ CQkJbG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIGksIGJv dW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCQkJCWJvdW5kcyA9IGxhcHBlbmQoYm91bmRzLCBi b3VuZCk7CisJCQkJfQorCisJCQkJLyogU29ydCBhcnJheSBvZiBsb3dlciBib3VuZHMuICovCisJ CQkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VC b3VuZCAqKSwKKwkJCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9jbXAsICh2b2lkICopIGtl eSk7CisKKwkJCQkvKiBSYW5nZXMgb2YgcGFydGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAuICov CisJCQkJZm9yIChpID0gMTsgaSA8IG5wYXJ0czsgaSsrKQorCQkJCXsKKwkJCQkJaW50CQkJaW5k ZXggPSBsb3dlcl9ib3VuZHNbaV0tPmluZGV4OworCQkJCQlpbnQJCQlwcmV2X2luZGV4ID0gbG93 ZXJfYm91bmRzW2kgLSAxXS0+aW5kZXg7CisKKwkJCQkJY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91 bmRzX3JhbmdlKHBhcmVudCwKKwkJCQkJCQkJCQkJCQkgIChSYW5nZVZhciAqKSBsaXN0X250aChw YXJ0TmFtZXMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3Bl YyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFJhbmdl VmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgKFBhcnRp dGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkg IGZhbHNlLCBwc3RhdGUpOworCQkJCX0KKworCQkJCS8qCisJCQkJICogTG93ZXIgYm91bmQgb2Yg Zmlyc3QgcGFydGl0aW9uIGlzIGEgbG93ZXIgYm91bmQgb2YgbWVyZ2VkCisJCQkJICogcGFydGl0 aW9uLgorCQkJCSAqLworCQkJCXNwZWMtPmxvd2VyZGF0dW1zID0KKwkJCQkJKChQYXJ0aXRpb25C b3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBsb3dlcl9ib3VuZHNbMF0tPmluZGV4KSktPmxv d2VyZGF0dW1zOworCisJCQkJLyoKKwkJCQkgKiBVcHBlciBib3VuZCBvZiBsYXN0IHBhcnRpdGlv biBpcyBhIHVwcGVyIGJvdW5kIG9mIG1lcmdlZAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8K KwkJCQlzcGVjLT51cHBlcmRhdHVtcyA9CisJCQkJCSgoUGFydGl0aW9uQm91bmRTcGVjICopIGxp c3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzW25wYXJ0cyAtIDFdLT5pbmRleCkpLT51cHBlcmRh dHVtczsKKworCQkJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJCQkJbGlzdF9mcmVlKGJvdW5kcyk7 CisJCQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJ CXsKKwkJCQlMaXN0Q2VsbCAgICpsaXN0cHRyLAorCQkJCQkJICAgKmxpc3RwdHIyOworCisJCQkJ LyogQ29uc29saWRhdGUgYm91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0aGUgbGlzdC4gKi8K KwkJCQlmb3Jib3RoKGxpc3RwdHIsIHBhcnRPaWRzLCBsaXN0cHRyMiwgcGFydE5hbWVzKQorCQkJ CXsKKwkJCQkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cjIp OworCQkJCQlPaWQJCQljdXJPaWQgPSBsZmlyc3Rfb2lkKGxpc3RwdHIpOworCisJCQkJCWJvdW5k ID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKGN1ck9pZCwgbmFtZSk7CisJCQkJCXNwZWMtPmxp c3RkYXR1bXMgPSBsaXN0X2NvbmNhdChzcGVjLT5saXN0ZGF0dW1zLCBib3VuZC0+bGlzdGRhdHVt cyk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9S LCAidW5leHBlY3RlZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5z dHJhdGVneSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGI4OWJhZWY5NWQzLi4y N2MyODEzOWM4NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtOTMzLDYgKzkzMywxNyBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25SYW5nZURhdHVtCiAJUGFyc2VMb2MJbG9jYXRpb247CQkv KiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBQYXJ0aXRpb25SYW5nZURh dHVtOwogCisvKgorICogUGFydGl0aW9uRGVzYyAtIGluZm8gYWJvdXQgc2luZ2xlIHBhcnRpdGlv biBmb3IgQUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqLwordHlwZWRlZiBz dHJ1Y3QgU2luZ2xlUGFydGl0aW9uU3BlYworeworCU5vZGVUYWcJCXR5cGU7CisKKwlSYW5nZVZh ciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uICovCisJUGFydGl0aW9uQm91bmRTcGVj ICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCit9IFNpbmdsZVBhcnRpdGlv blNwZWM7CisKIC8qCiAgKiBQYXJ0aXRpb25DbWQgLSBpbmZvIGZvciBBTFRFUiBUQUJMRS9JTkRF WCBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBjb21tYW5kcwogICovCkBAIC05NDEsNiArOTUyLDgg QEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21kCiAJTm9kZVRhZwkJdHlwZTsKIAlSYW5nZVZh ciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2ggKi8KIAlQ YXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8K KwlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9ucywgZm9yIFNQTElUIFBB UlRJVElPTgorCQkJCQkJCQkgKiBjb21tYW5kICovCiAJYm9vbAkJY29uY3VycmVudDsKIH0gUGFy dGl0aW9uQ21kOwogCkBAIC0yMzMxLDYgKzIzNDQsNyBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJs ZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBBUlRJVElPTiAqLwogCUFU X0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFy dGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04gRklOQUxJWkUgKi8KKwlBVF9NZXJn ZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFUX0FkZElkZW50aXR5LAkJ CQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlkZW50aXR5 IGNvbHVtbiBvcHRpb25zICovCiAJQVRfRHJvcElkZW50aXR5LAkJCS8qIERST1AgSURFTlRJVFkg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRl L3BhcnNlci9rd2xpc3QuaAppbmRleCA1NzUxNGQwNjRiNy4uZTJiNDcwMGQ5N2IgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIv a3dsaXN0LmgKQEAgLTMzMyw2ICszMzMsNyBAQCBQR19LRVlXT1JEKCJwYXJhbWV0ZXIiLCBQQVJB TUVURVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnNl ciIsIFBBUlNFUiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cGFydGlhbCIsIFBBUlRJQUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInBhcnRpdGlvbiIsIFBBUlRJVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQorUEdfS0VZV09SRCgicGFydGl0aW9ucyIsIFBBUlRJVElPTlMsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzd29yZCIsIFBBU1NXT1JE LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwZXJpb2QiLCBQ RVJJT0QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5oCmluZGV4IDNkOWNjMTAzMWY3Li4wMzI5ZDdiZDg0OCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaAorKysgYi9zcmMvaW5jbHVk ZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCkBAIC0xNDMsNCArMTQzLDEwIEBAIGV4dGVybiBp bnQJcGFydGl0aW9uX3JhbmdlX2RhdHVtX2JzZWFyY2goRm1nckluZm8gKnBhcnRzdXBmdW5jLAog ZXh0ZXJuIGludAlwYXJ0aXRpb25faGFzaF9ic2VhcmNoKFBhcnRpdGlvbkJvdW5kSW5mbyBib3Vu ZGluZm8sCiAJCQkJCQkJCSAgIGludCBtb2R1bHVzLCBpbnQgcmVtYWluZGVyKTsKIAorZXh0ZXJu IHZvaWQgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50 LAorCQkJCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJCQkJTGlzdCAqcGFydE9p ZHMsCisJCQkJCQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkJCQlQ YXJzZVN0YXRlICpwc3RhdGUpOworCiAjZW5kaWYJCQkJCQkJLyogUEFSVEJPVU5EU19IICovCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91 dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ODQ0NmFhYWI1YQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0 CkBAIC0wLDAgKzEsMTk5IEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitz dGFydGluZyBwZXJtdXRhdGlvbjogczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBz MmMgczJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFM VUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOwor c3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAw XzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0 ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVk Pgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8 dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAg ICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJv d3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYnJyIHMxbWVyZyBz MmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElO VE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBz MWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJn OiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRf MTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBE QVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4u Pgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJj OiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAg CistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0 MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBz MmMgczJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFM VUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJTiBJ U09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRw YXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFy dF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQg PSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09N TUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0t CisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0 MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IHMyYnJyIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMy YnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElO U0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsK K3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQ QVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7Citz dGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1v ZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNU ICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1 ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1 fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJyciBz MmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJ TiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRP IHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFi cnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzog QUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEw XzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFU RSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4K K3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAor LS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAx bW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFy dGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBz MmMgczJzCitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFE Oworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3Rl cCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTEla QUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0 cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVH SU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBp ID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNv bXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFy dDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRl eHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAg CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFiIHMx bWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZF TCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAn dGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1l cmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFy dF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBV UERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAu Li4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBz MmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAg ICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRl eHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBz MWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxF Oworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3Rl cCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRB QkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9O UyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6 IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hl cmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4u LiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00g dHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisx NXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUg ICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMx YnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElTT0xB VElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQg TUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAw XzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0 ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7 CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6 IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1 fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAg ICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNv bGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25f c2NoZWR1bGUKaW5kZXggMTg4ZmMwNGY4NWUuLjhiY2FhOGE2MjU0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlv bi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEwMyw2ICsxMDMsNyBAQCB0ZXN0OiBwYXJ0aXRpb24t a2V5LXVwZGF0ZS0xCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRp b24ta2V5LXVwZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00Cit0ZXN0OiBwYXJ0 aXRpb24tbWVyZ2UKIHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QK IHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9p c29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24v c3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmVjNDg3MzJjNTgzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjCkBAIC0wLDAgKzEsNTQgQEAKKyMgVmVyaWZ5 IHRoYXQgTUVSR0Ugb3BlcmF0aW9uIGxvY2tzIERNTCBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9u ZWQgdGFibGUKKworc2V0dXAKK3sKKyAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdHBhcnQ7CisgIENS RUFURSBUQUJMRSB0cGFydChpIGludCwgdCB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7Cisg IENSRUFURSBUQUJMRSB0cGFydF8wMF8xMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMTApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9G IHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFy dF8yMF8zMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsK KyAgQ1JFQVRFIFRBQkxFIHRwYXJ0X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7 CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoNSwgJ3RleHQwNScpOworICBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDE1LCAndGV4dDE1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVF UyAoMjUsICd0ZXh0MjUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgzNSwgJ3RleHQz NScpOworfQorCit0ZWFyZG93bgoreworICBEUk9QIFRBQkxFIHRwYXJ0OworfQorCitzZXNzaW9u IHMxCitzdGVwIHMxYgl7IEJFR0lOOyB9CitzdGVwIHMxYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMWJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVM IFNFUklBTElaQUJMRTsgfQorc3RlcCBzMW1lcmcJeyBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQ QVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7IH0K K3N0ZXAgczFjCXsgQ09NTUlUOyB9CisKKworc2Vzc2lvbiBzMgorc3RlcCBzMmIJeyBCRUdJTjsg fQorc3RlcCBzMmJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0K K3N0ZXAgczJicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAg czJpCXsgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IH0KK3N0ZXAgczJ1 CXsgVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgfQorc3Rl cCBzMmMJeyBDT01NSVQ7IH0KK3N0ZXAgczJzCXsgU0VMRUNUICogRlJPTSB0cGFydDsgfQorCisK KyMgczIgaW5zZXJ0cyByb3cgaW50byB0YWJsZS4gczEgc3RhcnRzIE1FUkdFIFBBUlRJVElPTlMg dGhlbgorIyBzMiB0cnlpbmcgdG8gdXBkYXRlIGluc2VydGVkIHJvdyBhbmQgd2FpdHMgdW50aWwg czEgZmluaXNoZWQKKyMgTUVSR0Ugb3BlcmF0aW9uLgorCitwZXJtdXRhdGlvbiBzMmIgczJpIHMy YyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYiBzMmkgczJj IHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmIgczJpIHMy YyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMyYnJyIHMy aSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmJyciBz MmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmJy ciBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24g czJicyBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24g czJicyBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlv biBzMmJzIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKaW5k ZXggNDg1NjNiMmNmMDEuLjY5OTIwNzU3YjIxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTMwMCw2ICszMDAsOSBA QCBnZXRfYWx0ZXJ0YWJsZV9zdWJjbWRpbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFU X0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJCXN0cnR5cGUgPSAiREVUQUNIIFBBUlRJVElP TiAuLi4gRklOQUxJWkUiOwogCQkJCWJyZWFrOworCQkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6 CisJCQkJc3RydHlwZSA9ICJNRVJHRSBQQVJUSVRJT05TIjsKKwkJCQlicmVhazsKIAkJCWNhc2Ug QVRfQWRkSWRlbnRpdHk6CiAJCQkJc3RydHlwZSA9ICJBREQgSURFTlRJVFkiOwogCQkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMTNhYjY1OTYxOAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApA QCAtMCwwICsxLDczNiBAQAorLS0KKy0tIFBBUlRJVElPTlNfTUVSR0UKKy0tIFRlc3RzIGZvciAi QUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgLi4uIiBjb21tYW5kCistLQorQ1JFQVRF IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5n CistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNtYW5f aWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fw cl8yIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxl c19mZWIyMDIyIiBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElO VE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJz YWxlc19mZWIyMDIyIiBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g RVJST1I6ICBjYW5ub3QgbWVyZ2Ugbm9uLXRhYmxlIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIs IHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIy OworRVJST1I6ICBjYW5ub3QgbWVyZ2Ugbm9uLXRhYmxlIHBhcnRpdGlvbiAic2FsZXNfYXByMjAy MiIKKy0tIEVSUk9SOiAgaW52YWxpZCBwYXJ0aXRpb25zIG9yZGVyLCBwYXJ0aXRpb24gInNhbGVz X21hcjIwMjIiIGNhbiBub3QgYmUgbWVyZ2VkCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBz YWxlc19qYW4yMDIyIGFuZCBzYWxlc19tYXIyMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMikgSU5UTyBzYWxl c19qYW5fbWFyMjAyMjsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19t YXIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24g InNhbGVzX2phbjIwMjIiCistLSBFUlJPUjogIGludmFsaWQgcGFydGl0aW9ucyBvcmRlciwgcGFy dGl0aW9uICJzYWxlc19qYW4yMDIyIiBjYW4gbm90IGJlIG1lcmdlZAorLS0gKHNwYWNlIGJldHdl ZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIw MjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBs b3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVw cGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKKy0tIE5PIEVS Uk9SOiB0ZXN0IGZvciBjdXN0b20gcGFydGl0aW9ucyBvcmRlcgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2Fs ZXNfamFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmViX21hcjIwMjI7CitTRUxFQ1QgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5w Z19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmlu aHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVS IEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZB VUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAg ICAgICBvaWQgICAgICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAg ICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyICAgICAgICAg fCBwICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIw MjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2RlYzIwMjEgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMTItMDEtMjAyMScpIFRPICgn MTItMzEtMjAyMScpCisgc2FsZXNfamFuX2ZlYl9tYXIyMDIyIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIy JykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IERFRkFVTFQKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQWRk IHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIG1lcmdlIHBhcnRpdGlvbnMKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIw MjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2Fs ZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVz X2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwg ICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9p cm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAy Mi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcics ICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUx MCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZign c2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisgcGdfZ2V0X3BhcnRrZXlkZWYgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBSQU5HRSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworLS0gc2hvdyBwYXJ0 aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFz cywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMu cmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2Nh dGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5w Z19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdf Y2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICAgb2lkICAgICAgfCByZWxr aW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cisgc2FsZXNfYXByMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAy MicpIFRPICgnMDMtMDEtMjAyMicpCisgc2FsZXNfamFuMjAyMiB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAy MicpCisgc2FsZXNfbWFyMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpCisgc2FsZXNfb3RoZXJz ICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2Fs ZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7Cist LSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xh c3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxp ZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcs IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICAgICAg b2lkICAgICAgICAgIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAg ICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykg VE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19qYW4yMDIyICAgICAgICAgfCByICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAx LTIwMjInKQorIHNhbGVzX290aGVycyAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgREVGQVVMVAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJF IHRhYmxlbmFtZSA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgICB8ICAgICAg IHRhYmxlbmFtZSAgICAgICB8ICAgICAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgICAgICB8 IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIHwgc2FsZXNfZmViX21hcl9hcHIyMDIyX3NhbGVzX2RhdGVfaWR4 IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNf ZGF0ZV9pZHggT04gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmViX21hcl9hcHIyMDIy IFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X3JhbmdlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAg fCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3 NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1 MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAg MTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAg IDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAgICAg ICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAg ICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAg ICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAg ICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwg ICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfamFuMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAg IDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAg ICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYl9t YXJfYXByMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAg NTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAg IDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAg ICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAg ICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAg ICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAg ICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAg ICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwg ICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDEwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1 MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5k ZXhlcworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9G RjsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUg PiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAg ICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAg ICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAg ICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAg ICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8 ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAg fCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAg IHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAg ICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxMCByb3dzKQorCitTRVQgZW5hYmxlX2lu ZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFVTFQgcGFydGl0 aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVz bWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRF IElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdN YXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldics ICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAg MjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTkn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3Nywg ICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21p dGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworLS0gTWVyZ2UgcGFydGl0aW9ucyAoaW5jbHVk ZSBERUZBVUxUIHBhcnRpdGlvbikgaW50byBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZQorLS0gbmFt ZQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAy Miwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfb3RoZXJzKSBJTlRPIHNhbGVzX290aGVyczsKK3NlbGVj dCAqIGZyb20gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAg fCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAg IHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAg ICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAg ICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAg ICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoNyByb3dzKQorCistLSBzaG93IHBh cnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIo Yy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdf Y2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5p bmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICBvaWQgICAgICB8IHJl bGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBzYWxlc19hcHIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFM VUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19mZWIyMDIy IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0y MDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgciAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3Jhbmdl OworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0g ICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4K Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNf ZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVh cjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAn KSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2Fs ZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsK K0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBW QUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAy MiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAy MiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2Rh dGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBN QVhWQUxVRSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMSwgMTIs IDcpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KTsK K0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNf bW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgs IHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KTsKK0lOU0VSVCBJTlRP IHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKTsKK0lOU0VSVCBJTlRPIHNhbGVz X2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkg VkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUo c2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVT ICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNt YW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjInLCAyMDIyLCAzLCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMn LCAyMDIyLCA1LCAxKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxlc21hbl9uYW1l IHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNh bGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIx ICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3 IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIxIHwgICAgICAg ICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFn ZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAx LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1h bmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIy LjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAy MDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEg fCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19kZWMyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9u dGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAg ICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEu MTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbjIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNh bGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAx IHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8 IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAy MjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5 IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAg ICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMg ZGVwYXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxl c21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNf ZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAy MDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEg fCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworQUxURVIgVEFCTEUg c2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIy KSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21h bl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5h Z2VyMScsIDIwMjIsIDEsIDEwKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjIn LCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7Cisgc2FsZXNtYW5fbmFt ZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBz YWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2Vy MSAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4w NyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8ICAgICAg ICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4w MS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAy Mi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwg MjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAz IHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAg ICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxl c19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMSB8 ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwg MjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfamFuX2ZlYjIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19t b250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAy Mi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwg MjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgIDEw IHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyg2IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfb3RoZXI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250 aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4w My4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygz IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0 aXRpb25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBW QVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc21hbl9pZCk7CitDUkVBVEUgVEFC TEUgc2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfMjAgUEFSVElUSU9OIE9GIHNh bGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIHNhbGVz bWFuczIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8g KDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMzMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5z IEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFM VUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5z ZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAk Qk9EWSQKK0JFR0lOCisJUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0g JSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19M RVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHNh bGVzbWFuc19hZnRlcl9pbnNlcnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQK KyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBS T0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOworQ1JFQVRFIFRS SUdHRVIgc2FsZXNtYW5zX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VS VAorICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VE VVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5zJyk7CistLSAyIHRyaWdnZXJz IHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21h bnMgVkFMVUVTICgxMCwgJ01heScpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxl ZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0 cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwg bGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgor SU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfMjAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworTk9USUNF OiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZU RVIsIGxldmVsID0gUk9XCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgTUVSR0UgUEFSVElUSU9OUyAo c2FsZXNtYW5zMTBfMjAsIHNhbGVzbWFuczIwXzMwLCBzYWxlc21hbnMzMF80MCkgSU5UTyBzYWxl c21hbnMxMF80MDsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVt ZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKK05P VElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9 IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDog YWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRy aWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzQw IFZBTFVFUyAoMzAsICdGb3JkJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVk OiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCAqIEZS T00gc2FsZXNtYW5zMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczEwXzQwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTAgfCBNYXkK KyAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAg ICAzMCB8IEZvcmQKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNtYW5zOworRFJPUCBGVU5D VElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0 aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhz YWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAx XzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwor LS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBU QUJMRSBzYWxlc21hbnMxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNtYW5faWQgSU5UIFBSSU1B UlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc21h bnMyMF8zMChzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgIHNhbGVzbWFuX25h bWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczMwXzQwKHNhbGVzbWFuX2lk IElOVCBQUklNQVJZIEtFWSwgZDMgREFURSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitJ TlNFUlQgSU5UTyBzYWxlc21hbnMxMF8yMCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAxJywgMTksICdJ dmFub3YnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczIwXzMwIFZBTFVFUyAoMjAsIDEwMSwgJ1Nt aXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMzMF80MCBWQUxVRVMgKDMxLCBub3coKSwg J1BvcG92Jyk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMxMF8yMCBEUk9QIENPTFVNTiBkMTsKK0FM VEVSIFRBQkxFIHNhbGVzbWFuczIwXzMwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2Fs ZXNtYW5zMzBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNI IFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOwor QUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9S IFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0gg UEFSVElUSU9OIHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJ TlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAnUG9pcm90Jyk7CitJTlNFUlQgSU5UTyBz YWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVF UyAoMzAsICdGb3JkJyk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgTUVSR0UgUEFSVElUSU9OUyAo c2FsZXNtYW5zMTBfMjAsIHNhbGVzbWFuczIwXzMwLCBzYWxlc21hbnMzMF80MCkgSU5UTyBzYWxl c21hbnMxMF80MDsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEg fCBQb2lyb3QKKyAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgIDEwIHwgTWF5CisgICAg ICAgICAgMjAgfCBTbWlybm9mZgorICAgICAgICAgIDMxIHwgUG9wb3YKKyAgICAgICAgICAzMCB8 IEZvcmQKKyg2IHJvd3MpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMDFfMTA7Cisgc2FsZXNt YW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczEw XzQwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAxMCB8IE1heQorICAg ICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAzMSB8IFBvcG92CisgICAgICAgICAgMzAg fCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzbWFuczsKKy0tCistLSBUZXN0OiBt ZXJnZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNt YW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBz YWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNtYW5faWQg SU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19k YXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfYXByMjAyMl8wMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYXByMjAyMl8xMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YXByMjAyMl8yMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9z YWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAy Mi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2Zm JywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1 MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAn TGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAn MjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1w JywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjIt MDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwg TWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8 IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMg fCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAy IHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAg NiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAg IDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAg ICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAg ICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAg ICAgMTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAg ICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAg ICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAg ICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCiso MTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzbWFuX2lkIHwg c2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg NSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAg MTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBz YWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1 IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMiByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBfMjA7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKygxIHJvdykKKworU0VM RUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzIwXzMwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMSByb3cpCisKK0FMVEVSIFRB QkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfYXByMjAyMl8wMV8xMCwg c2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJf YWxsOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkg ICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFs ZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdh bmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgIDIgfCBT bWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwg UG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8 IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcg fCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5 IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAx MiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAg IDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAg IDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAg ICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAg ICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8 IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfYXByX2FsbDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDUgfCBEZWV2ICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAg ICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCist LSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBB UyBJREVOVElUWSwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZB UkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElU SU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNdXJtYW5zaycsICdTdC4gUGV0ZXJz YnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2sn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfbGlzdDIgKExJS0Ugc2FsZXNfbGlzdCkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgRk9S IFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsK K0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0KTsKK0NSRUFURSBU QUJMRSBzYWxlc19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsKKy0tIEVSUk9SOiAgcGFydGl0 aW9uIGJvdW5kIGZvciByZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwiIGlzIG51bGwKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwg c2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworRVJST1I6ICBwYXJ0aXRpb24gYm91bmQg Zm9yIHJlbGF0aW9uICJzYWxlc19leHRlcm5hbCIgaXMgbnVsbAorLS0gRVJST1I6ICBwYXJ0aXRp b24gYm91bmQgZm9yIHJlbGF0aW9uICJzYWxlc19leHRlcm5hbDIiIGlzIG51bGwKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwg c2FsZXNfZXh0ZXJuYWwyKSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgcGFydGl0aW9uIGJvdW5k IGZvciByZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwyIiBpcyBudWxsCistLSBFUlJPUjogIHJlbGF0 aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19s aXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0 LCBzYWxlc19ub3JkMiwgc2FsZXNfZWFzdCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogIHJlbGF0 aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19s aXN0IgorRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVy bmFsOworRFJPUCBUQUJMRSBzYWxlc19saXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0t CistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgTUVSR0UgUEFSVElUSU9OUyB3aXRoIGRh dGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzbWFuX2lkIElOVCBHRU5FUkFU RUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksCisgc2Fs ZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERB VEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIElOREVYIHNhbGVz X2xpc3Rfc2FsZXNtYW5fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNt YW5fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2Fs ZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25v cmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0 LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAn QnJ5YW5zaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3Rvaycp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9S IFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKK0lOU0VSVCBJ TlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1RydW1wJywgICAgJ01hZ2FkYW4nLCAgICAgICAgMTAwMCwg JzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1NtaXJub2ZmJywg J1Ntb2xlbnNrJywgICAgICAgNTAwLCAgJzIwMjItMDMtMDMnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2Rh dGUpIFZBTFVFUyAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMt MDUnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRl LCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0l2YW5vdicsICAgJ01vc2Nvdycs ICAgICAgICAgNzUwLCAgJzIwMjItMDMtMDQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNh bGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVF UyAoJ0RlZXYnLCAgICAgJ1Zvcm9uZXpoJywgICAgICAgMjUwLCAgJzIwMjItMDMtMDcnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1BvaXJvdCcsICAgJ0themFuJywgICAgICAgICAg MTAwMCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ01heScs ICAgICAgJ1VraHRhJywgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMDYnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNh bGVzX2RhdGUpIFZBTFVFUyAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIw MjItMDMtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVz X3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ01heScsICAgICAgJ1Vr aHRhJywgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xp c3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUp IFZBTFVFUyAoJ0hhbGRlcicsICAgJ011cm1hbnNrJywgICAgICAgODAwLCAgJzIwMjItMDMtMDIn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBz YWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ011bGxlcicsICAgJ0JyeWFuc2snLCAg ICAgICAgNjUwLCAgJzIwMjItMDMtMDUnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz bWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAo J1NtaXRoJywgICAgJ1ZvbGdvZ3JhZCcsICAgICAgMzUwLCAgJzIwMjItMDMtMTAnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91 bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0dhbmRpJywgICAgJ01vc2NvdycsICAgICAgICAgMTUw LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUs IHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1BsYXRvJywg ICAgJ1Zvcm9uZXpoJywgICAgICAgOTUwLCAgJzIwMjItMDMtMDUnKTsKKy0tIHNob3cgcGFydGl0 aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3Ms IGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJl bHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRh bG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBh cmVudCA9ICdzYWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19n ZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICAgb2lkICAgICAgfCByZWxraW5k IHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgc2FsZXNfY2VudHJhbCB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKQorIHNhbGVzX2Vh c3QgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdNYWdh ZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snKQorIHNhbGVzX25vcmQgICAgfCByICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdNdXJtYW5zaycsICdTdC4g UGV0ZXJzYnVyZycsICdVa2h0YScpCisgc2FsZXNfd2VzdCAgICB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFu c2snKQorIHNhbGVzX290aGVycyAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFV TFQKKyg1IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAo c2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkgSU5UTyBzYWxlc19hbGw7Cist LSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xh c3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxp ZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywg Yy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAgb2lkICAg ICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FsbCAgICB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywg J1Ntb2xlbnNrJywgJ0JyeWFuc2snLCAnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9z dG9rJywgJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKQorIHNhbGVzX25vcmQgICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0 LiBQZXRlcnNidXJnJywgJ1VraHRhJykKKyBzYWxlc19vdGhlcnMgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IERFRkFVTFQKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlz dDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwg U21pcm5vZmYgICAgICB8IFNtb2xlbnNrICAgICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAy MgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8IFZvcm9uZXpoICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDMtMDctMjAyMgorICAgICAgICAgIDExIHwgTXVsbGVyICAgICAgICB8IEJyeWFu c2sgICAgICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgIDE0IHwgUGxh dG8gICAgICAgICB8IFZvcm9uZXpoICAgICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgor ICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAgICB8IE1hZ2FkYW4gICAgICAgIHwgICAgICAgICAx MDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAgICA4IHwgTGkgICAgICAgICAgICB8IFZsYWRpdm9z dG9rICAgIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICB8IE1vc2NvdyAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8IEthemFuICAgICAgICAgIHwgICAgICAgICAxMDAw IHwgMDMtMDEtMjAyMgorICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICB8IFZvbGdvZ3JhZCAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTAtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAg ICAgICB8IE1vc2NvdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwg MDMtMDUtMjAyMgorICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICB8IFVraHRhICAgICAgICAg IHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICA5IHwgTWF5ICAgICAgICAg ICB8IFVraHRhICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorICAgICAgICAg IDEwIHwgSGFsZGVyICAgICAgICB8IE11cm1hbnNrICAgICAgIHwgICAgICAgICAgODAwIHwgMDMt MDItMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbm9yZDsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAg ICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMtMDUtMjAyMgorICAgICAgICAg ICA3IHwgTWF5ICAgICAgICAgICB8IFVraHRhICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMt MDYtMjAyMgorICAgICAgICAgICA5IHwgTWF5ICAgICAgICAgICB8IFVraHRhICAgICAgICAgIHwg ICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8 IE11cm1hbnNrICAgICAgIHwgICAgICAgICAgODAwIHwgMDMtMDItMjAyMgorKDQgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19hbGw7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwg c2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCBTbW9sZW5zayAgICB8ICAgICAgICAgIDUw MCB8IDAzLTAzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCBWb3JvbmV6aCAg ICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAxMSB8IE11bGxlciAgICAg ICAgfCBCcnlhbnNrICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAx NCB8IFBsYXRvICAgICAgICAgfCBWb3JvbmV6aCAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIw MjIKKyAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgfCBNYWdhZGFuICAgICB8ICAgICAgICAg MTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgfCBWbGFkaXZv c3RvayB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAg ICAgNiB8IFBvaXJvdCAgICAgICAgfCBLYXphbiAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAx LTIwMjIKKyAgICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgfCBWb2xnb2dyYWQgICB8ICAgICAg ICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCBNb3Nj b3cgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygxMCByb3dzKQorCistLSBVc2Ug aW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMgYWZ0ZXIgbWVyZ2UgcGFydGl0aW9ucworU0VUIGVu YWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVDVCAq IEZST00gc2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nvdyc7Cisgc2FsZXNtYW5f aWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBNb3Nj b3cgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdNb3Nj b3cnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAg ICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICAxNTAgfCAw My0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2Fs ZXNtYW5fbmFtZSA9ICdJdmFub3YnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAg fCAwMy0wNC0yMDIyCisoMSByb3cpCisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBPTjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCitEUk9QIFND SEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CmluZGV4IDVhYzZlODcxZjU0Li4wMjZlN2E3NzY3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCkBAIC0xMTksNyArMTE5LDcgQEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwg Y29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhl IHN0YXRzIHRlc3QgcmVzZXRzIHN0YXRzLCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBh Y2Nlc3MgY2FuIGJlIGluCiAjIHRoaXMgZ3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBhcnRp dGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBw YXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXBy ZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRlCit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFy dGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5n IHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29t cHJlc3Npb24gbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUKIAogIyBldmVudF90cmlnZ2VyIGRlcGVu ZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3aXRoCiAjIGFueSB0 ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9tZXJnZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YmY5MGZkNjIxMgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwK QEAgLTAsMCArMSw0MzQgQEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3Ig IkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KKworQ1JF QVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRp b25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAo c2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdp dGggbmFtZSAic2FsZXNfZmViMjAyMiIgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxl c19mZWIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgY2Fubm90 IG1lcmdlIG5vbi10YWJsZSBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIy LCBzYWxlc19hcHIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAg aW52YWxpZCBwYXJ0aXRpb25zIG9yZGVyLCBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNhbiBu b3QgYmUgbWVyZ2VkCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19qYW4yMDIyIGFu ZCBzYWxlc19tYXIyMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9O UyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMikgSU5UTyBzYWxlc19qYW5fbWFyMjAyMjsK Ky0tIEVSUk9SOiAgaW52YWxpZCBwYXJ0aXRpb25zIG9yZGVyLCBwYXJ0aXRpb24gInNhbGVzX2ph bjIwMjIiIGNhbiBub3QgYmUgbWVyZ2VkCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxl c19kZWMyMDIxIGFuZCBzYWxlc19qYW4yMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfZGVjMjAyMSwgc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAy MikgSU5UTyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7CisKKy0tIE5PIEVSUk9SOiB0ZXN0IGZvciBj dXN0b20gcGFydGl0aW9ucyBvcmRlcgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFS VElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfamFuMjAyMikgSU5U TyBzYWxlc19qYW5fZmViX21hcjIwMjI7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdj bGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHBy KGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBn X2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGku aW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6 cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworCistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIG1l cmdlIHBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lk IElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIy MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFu Z2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0w My0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwg ICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2Fu ZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHBnX2Nh dGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MpOworCistLSBz aG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3Mg YywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBB TkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19j YXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIw MjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworCistLSBzaG93 IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywg cGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQg aS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK1NFTEVDVCAqIEZST00g cGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJyBhbmQg c2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSc7CisKK1NFTEVDVCAqIEZST00g c2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworCist LSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0g T047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmVi X21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1NFVCBlbmFi bGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKKworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFV TFQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJ TlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3Jhbmdl IFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAy Mi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdics ICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo NSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMt MDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4 NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAn TXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKKy0tIE1lcmdlIHBhcnRp dGlvbnMgKGluY2x1ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhl IHNhbWUKKy0tIG5hbWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX290aGVycykgSU5UTyBzYWxlc19v dGhlcnM7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNfb3RoZXJzOworCistLSBzaG93IHBhcnRpdGlv bnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBj LnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxw YXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxv Zy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJl bnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7 CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0t ICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUu CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisgIHNhbGVz X2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFEKHNhbGVzX3ll YXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6OnRleHQsIDIsICcw JykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNh bGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisg IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7 CisKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZP UiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAo MjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAo MjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVz X2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVF LCBNQVhWQUxVRSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIx LCAxMiwgNyk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMSwgMTIs IDgpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpOwor SU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQpOworSU5TRVJU IElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwg c2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpOworSU5TRVJUIElOVE8g c2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNf ZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpOworSU5TRVJUIElOVE8gc2FsZXNf ZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShz YWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMg KCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21h bl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5h Z2VyMycsIDIwMjIsIDUsIDEpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworCitB TFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNh bGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7CisKK0lOU0VSVCBJTlRPIHNhbGVz X2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkg VkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRl KHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVF UyAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9m ZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworRFJPUCBUQUJMRSBzYWxlc19k YXRlOworCistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJs ZSB3aXRoIHRyaWdnZXJzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJ TlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNtYW5faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAgUEFSVElU SU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFC TEUgc2FsZXNtYW5zMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczIwXzMwIFBBUlRJVElPTiBPRiBz YWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJMRSBzYWxl c21hbnMzMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRP ICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisK K0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJF VFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorCVJBSVNF IE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9 ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5V TEw7CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNl cnRfc3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc21hbnMK KyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNl cnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc21hbnNf YWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNt YW5zCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCdzYWxlc21hbnMnKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBo ZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAs ICdNYXknKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElO VE8gc2FsZXNtYW5zMTBfMjAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworCitBTFRFUiBUQUJMRSBz YWxlc21hbnMgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNtYW5zMTBfMjAsIHNhbGVzbWFuczIwXzMw LCBzYWxlc21hbnMzMF80MCkgSU5UTyBzYWxlc21hbnMxMF80MDsKKworLS0gMiB0cmlnZ2VycyBz aG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5z IFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUg KHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOwor CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMx MF80MDsKKworRFJPUCBUQUJMRSBzYWxlc21hbnM7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2Vy dF9yb3dfdHJpZ2dlcigpOworCistLQorLS0gVGVzdDogbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRl bGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5U IFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzbWFuX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElP TiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIHBh cnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc21h bnMxMF8yMChkMSBWQVJDSEFSKDMwKSwgc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxl c21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMyMF8zMChzYWxl c21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigz MCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczMwXzQwKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZ IEtFWSwgZDMgREFURSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRP IHNhbGVzbWFuczEwXzIwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicpOwor SU5TRVJUIElOVE8gc2FsZXNtYW5zMjBfMzAgVkFMVUVTICgyMCwgMTAxLCAnU21pcm5vZmYnKTsK K0lOU0VSVCBJTlRPIHNhbGVzbWFuczMwXzQwIFZBTFVFUyAoMzEsIG5vdygpLCAnUG9wb3YnKTsK KworQUxURVIgVEFCTEUgc2FsZXNtYW5zMTBfMjAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJM RSBzYWxlc21hbnMyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczMw XzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJ VElPTiBzYWxlc21hbnMxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIg VEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVF UyBGUk9NICgyMCkgVE8gKDMwKTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElU SU9OIHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VS VCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVz bWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgz MCwgJ0ZvcmQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzbWFuczEwXzIwLCBzYWxlc21hbnMyMF8zMCwgc2FsZXNtYW5zMzBfNDApIElOVE8gc2FsZXNt YW5zMTBfNDA7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zOworc2VsZWN0ICogZnJvbSBzYWxl c21hbnMwMV8xMDsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMTBfNDA7CisKK0RST1AgVEFCTEUg c2FsZXNtYW5zOworCistLQorLS0gVGVzdDogbWVyZ2Ugc3ViLXBhcnRpdGlvbnMKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9O IE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworCitDUkVBVEUgVEFC TEUgc2FsZXNfYXByMjAyMiAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8wMV8xMCBQQVJUSVRJ T04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA0LTEwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8xMF8yMCBQQVJUSVRJT04g T0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIy LTA0LTIwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMl8yMF8zMCBQQVJUSVRJT04gT0Yg c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1 LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZB VUxUOworCitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNf cmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAs ICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZh bm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAy Mi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29u JywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo OSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQt MDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1 MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAn R2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUICog RlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NFTEVDVCAq IEZST00gc2FsZXNfYXByMjAyMl8wMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8x MF8yMDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8yMF8zMDsKKworQUxURVIgVEFCTEUg c2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEwLCBzYWxl c19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fwcl9hbGw7 CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fwcl9hbGw7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CisKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNw ZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUg c2FsZXNfbGlzdAorKHNhbGVzbWFuX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZ LAorIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCks Cisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElT VCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1Vr aHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBG T1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAo J01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2Nv dycsICdLYXphbicsICdWb2xnb2dyYWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlz dDIgKExJS0Ugc2FsZXNfbGlzdCkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19ub3JkMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgRk9SIFZBTFVF UyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKKworCitD UkVBVEUgVEFCTEUgc2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZXh0ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7CisKKy0tIEVSUk9SOiAgcGFydGl0 aW9uIGJvdW5kIGZvciByZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwiIGlzIG51bGwKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwg c2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworLS0gRVJST1I6ICBwYXJ0aXRpb24gYm91 bmQgZm9yIHJlbGF0aW9uICJzYWxlc19leHRlcm5hbDIiIGlzIG51bGwKK0FMVEVSIFRBQkxFIHNh bGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNf ZXh0ZXJuYWwyKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX25v cmQyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitBTFRFUiBU QUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX25vcmQy LCBzYWxlc19lYXN0KSBJTlRPIHNhbGVzX2FsbDsKKworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5h bDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsOworRFJPUCBUQUJMRSBzYWxlc19saXN0MjsK K0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9u aW5nLCBNRVJHRSBQQVJUSVRJT05TIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19s aXN0Cisoc2FsZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisgc2Fs ZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxl c19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxl c19zdGF0ZSk7CisKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzbWFuX25hbWVfaWR4IE9O IHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzbWFuX25hbWUpOworQ1JFQVRFIElOREVYIHNh bGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVz X3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xp c3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFM VUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2Fk YW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Nl bnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdL YXphbicsICdWb2xnb2dyYWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9O IE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNt YW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgn VHJ1bXAnLCAgICAnTWFnYWRhbicsICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJU IElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3Vu dCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pcm5vZmYnLCAnU21vbGVuc2snLCAgICAgICA1MDAs ICAnMjAyMi0wMy0wMycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwg c2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRm9yZCcsICAg ICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2Fs ZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTICgnSXZhbm92JywgICAnTW9zY293JywgICAgICAgICA3NTAsICAnMjAyMi0w My0wNCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3Rh dGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnRGVldicsICAgICAnVm9yb25l emgnLCAgICAgICAyNTAsICAnMjAyMi0wMy0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFM VUVTICgnUG9pcm90JywgICAnS2F6YW4nLCAgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOwor SU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVz X2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAgICAgICAg ICAxMjAwLCAnMjAyMi0wMy0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5f bmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTGkn LCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpOworSU5TRVJUIElO VE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAgICAgICAgICAxMjAwLCAn MjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSGFsZGVyJywgICAn TXVybWFuc2snLCAgICAgICA4MDAsICAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0 ZSkgVkFMVUVTICgnTXVsbGVyJywgICAnQnJ5YW5zaycsICAgICAgICA2NTAsICAnMjAyMi0wMy0w NScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUs IHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pdGgnLCAgICAnVm9sZ29ncmFk JywgICAgICAzNTAsICAnMjAyMi0wMy0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2Fs ZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVT ICgnR2FuZGknLCAgICAnTW9zY293JywgICAgICAgICAxNTAsICAnMjAyMi0wMy0wOCcpOworSU5T RVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ft b3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUGxhdG8nLCAgICAnVm9yb25lemgnLCAgICAgICA5 NTAsICAnMjAyMi0wMy0wNScpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25z OgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFj aHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQor ICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisg IFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6 OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2Nh dGFsb2cudGV4dDsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChz YWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKwor LS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVs aWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX2xpc3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBw Z19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcs IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK1NFTEVDVCAq IEZST00gc2FsZXNfbGlzdDsKK1NFTEVDVCAqIEZST00gc2FsZXNfbm9yZDsKK1NFTEVDVCAqIEZS T00gc2FsZXNfYWxsOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMgYWZ0ZXIg bWVyZ2UgcGFydGl0aW9ucworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVf c2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3Rh dGUgPSAnTW9zY293JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0 ZSA9ICdNb3Njb3cnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzbWFuX25h bWUgPSAnSXZhbm92JzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVf c2Vxc2NhbiA9IE9OOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCitEUk9QIFNDSEVN QSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg Y2ZhOWQ1YWFlYWMuLmFhMzAyNTY3NmZkIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAt MjYwMiw2ICsyNjAyLDcgQEAgU2ltcGxlU3RhdHMKIFNpbXBsZVN0cmluZ0xpc3QKIFNpbXBsZVN0 cmluZ0xpc3RDZWxsCiBTaW5nbGVCb3VuZFNvcnRJdGVtCitTaW5nbGVQYXJ0aXRpb25TcGVjCiBT aXplCiBTa2lwUGFnZXMKIFNsYWJCbG9jawotLSAKMi4zOS4zIChBcHBsZSBHaXQtMTQ1KQoK --0000000000006456fe061498cc66--