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 1uyDIg-005C2p-7P for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Sep 2025 17:47:39 +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 1uyDIc-00Ckjd-EZ for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Sep 2025 17:47:35 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uyDIb-00CkjT-6D for pgsql-hackers@lists.postgresql.org; Mon, 15 Sep 2025 17:47:34 +0000 Received: from mail-il1-x136.google.com ([2607:f8b0:4864:20::136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uyDIY-000a0i-2K for pgsql-hackers@lists.postgresql.org; Mon, 15 Sep 2025 17:47:32 +0000 Received: by mail-il1-x136.google.com with SMTP id e9e14a558f8ab-421eecb573dso18579425ab.2 for ; Mon, 15 Sep 2025 10:47:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757958450; x=1758563250; 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=CVx7xdbXq3ovrim/9R4RwAt0wmTLcpodfN/8ePIg5AE=; b=MBmBBC0wyieDSH0icKHv35qt111wAuD+4RXkfpjL6PRvE5uGZirsLocTXccVRluovX oeFQV+j1XgiVjJO1/uF0vGDTMtwKqi8UENSQQfzPiCBhr15lr1BeTWwsv7yw4aUG/FKV KRm8Q0VlFPguFL960oy+5biaB12Ke4QSlsPvNjxGmO2ipmQ7qhd6DMqz0ukFYCxKoAQx dATL7+ZkHs0E8T3ERndmcdbVSCuw0WEj5AVlLdF8a9uz/Rvw9Al/OM48Z3PqsBDjgTv0 FNCXVUCKsmj2+dbCbTUOjCOstxqJnBifsIIkyuoioY/DWcNC3sMP0BP46OwolsuyVGM+ SsDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757958450; x=1758563250; 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=CVx7xdbXq3ovrim/9R4RwAt0wmTLcpodfN/8ePIg5AE=; b=JIdZD5afgrAMbQOdZLS+7IFhaXh40ksrpiMTX3esyJZgWDvX8fqWguxEd+jTJSjgUe CkZJkWZhY4cJAfmhE2ZyS34aupDUjwv30bpd07QapfICT9azj/JhjcEcLOHjFI9aHBT5 ypOc6AaJPAYomMbu0SHCXNKh6D27jbVJyzezyz1NxGVuRGYpomX0m4P8V4Xf0GdDRZLf NVt1B6YA4Kxr5VEM4e9oGtICrFnqC27brnq8qNI8MHPFRb2k1N8hJmqn7j+wi924sM+3 auFP0b/Ua7ztEiyzcfFYDcdSEygU21cBpBLkDliG4SNY7aCT9o6AkpqM3dH/Pp+ewzuP erzQ== X-Forwarded-Encrypted: i=1; AJvYcCV8tcE3KFF48PUe40jjjpY0ZWrYY6YoNRHje88WobZ33owdK6rX70fKXEcBPctGDRpP609gpMWV+VuT7pOP@lists.postgresql.org X-Gm-Message-State: AOJu0Yz0ZMJp6dQo25WiGcJo27FaOJB85VSfYzMQNyeVqUR2M1yxHCzI iHAM/KMbr9mI1ZV0VZVMnreseex5QY2oYzjaPFkarwRbEFw+YGb3rzOGZxxh7TsDD5ry22xz9F/ s5meb+9F08E49RS1akwapEp0DAyIsh8B9VD77 X-Gm-Gg: ASbGncv78nMlaxJdQMvWSy5DXlZbOXqzdIm09zEOv0R84Dez1dgH1rckzaVZ9WfCxKe IWQqzOLlL81Pw1FFmsKAQrTJPvUUgwzeczdveoAznzTPCWDbmjJ4LALmZ03l805JlhwOEQ+Gz1B ZJuFC9+vX/8vvGACAokDUgHIrTzGkaiAc6HAd/H9H24UqRsEb6+1GXu0InMYEmC3m86Mea1JuqA lTiLlU+3uEK+1TDog== X-Google-Smtp-Source: AGHT+IGarvvJZ3LFfhxmmxBetvPtlgCyRM49weZE8L8v4sVJt0Z8yNDIKXWSTHNlCN8kw8kR+jM4LCE809EtTuaSh+g= X-Received: by 2002:a05:6e02:1fe4:b0:3f2:b471:e617 with SMTP id e9e14a558f8ab-420a4174220mr133499845ab.25.1757958450018; Mon, 15 Sep 2025 10:47:30 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru> In-Reply-To: From: Alexander Korotkov Date: Mon, 15 Sep 2025 20:47:15 +0300 X-Gm-Features: AS18NWC1tNjlssRPMKzQ41tvroQAEwk3nST3vDIQJ4y_BP2ab86hR47oOVObFuw Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: jian he , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000f1b44a063eda98de" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f1b44a063eda98de Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Sep 15, 2025 at 11:03=E2=80=AFAM Alexander Korotkov wrote: > > On Mon, Sep 1, 2025 at 2:04=E2=80=AFPM Dmitry Koval wrote: > > Hi! > > Thank you for the notes and patch! > > Some additional notes from me. > > 1) src/backend/parser/parse_utilcmd.c includes are not alphabetically ord= ered here > +#include "partitioning/partdesc.h" > +#include "partitioning/partbounds.h" > > 2) There is unicode dash in the comment of ATExecMergePartitions() here. = I suggest we should stick to ascii. > > + /* > + * Check ownership of merged partitions =E2=80=94 partitions with dif= ferent > + * owners cannot be merged. Also, collect the OIDs of these partition= s > + * during the check. > + */ > > 3) Regarding 17bcf4f545, I see btnamecmp() is collation-aware. Should we= also specify COLLATE "C" every time we do "ORDER BY relname"? > > 4) This comment sounds misleading. Probably it should say "are contained= ". > > +/* > + * check_parent_values_in_new_partitions > + * > + * (function for BY LIST partitioning) > + * > + * Checks that all values of split partition (with Oid partOid) contains= in new > + * partitions. > + * > > 5) Given what latter items say, I think the 1. should say "The DEFAULT pa= rtition must be at most one." > > /* > * check_partitions_for_split > * > * Checks new partitions for SPLIT PARTITIONS command: > * 1. DEFAULT partition should be one. > > 6) Regarding the isolation tests. I see we are exercising INSERTs and in= tra-partition UPDATEs. Should we also try some cross-partition UPDATEs? Additionally, I've made a numerous and small fixes for grammar to the docs directly to the patchset. ------ Regards, Alexander Korotkov Supabase --000000000000f1b44a063eda98de Content-Type: application/octet-stream; name="v55-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename="v55-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mflf16s60 RnJvbSBkZDlhM2Q5MDNiNmMwNDJhYzQwMTJiOTM0N2QxNTYxM2QxZDc1NGFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2NTUgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMg Li4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMgc2V2ZXJhbCBwYXJ0aXRp b25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdldCB0YWJsZS4gIFRoZSB0YXJn ZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNyZWF0ZVBhcnRpdGlvblRhYmxlKCkg ZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFzIHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29t bWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBsZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBz aW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhlIEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUg cGFyZW50IHRhYmxlIGR1cmluZyBhbGwgdGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBs ZSByb3V0aW5nLiAgVGhpcyBpcyB3aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVj b21tZW5kZWQgZm9yIGxhcmdlIHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4g IEhvd2V2ZXIsCnRoaXMgaW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNh c2VzIGV2ZW4gYXMgaXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZv ciBmdXR1cmUgaW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5 IHBhcmFsbGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2Qw LTZiZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUsIFpo aWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJhLCBSb2Jl cnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzLCBKaWFuIEhlCgpGaXhlcyAoc3VtbWFyeSBpbmZv cm1hdGlvbikuCkF1dGhvcnM6IEFsZXhhbmRlciBLb3JvdGtvdiwgVGVuZGVyIFdhbmcsIFJpY2hh cmQgR3VvLCBEYWdmaW5uIElsbWFyaSBNYW5uc2FrZXIKQXV0aG9yczogRnVqaWkgTWFzYW8sIEpp YW4gSGUKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiwgUm9iZXJ0IEhhYXMsIEp1c3Rp biBQcnl6YnksIFBhdmVsIEJvcmlzb3YKUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYQpSZXBv cnRlZC1ieTogQWxleGFuZGVyIExha2hpbiwgSnVzdGluIFByeXpieSwgS3lvdGFybyBIb3JpZ3Vj aGkKUmVwb3J0ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uLCBUb20gTGFuZSwgTm9haCBNaXNjaAot LS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkg KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDEyNCAr LQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCAr CiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgOTAxICsr KysrKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAg ICAgfCAgIDIyICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAg ICAgfCAgMTQ2ICsrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAg ICAgIHwgIDE5NiArKysKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAg ICAgICB8ICAgMTAgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAgICAgICAg ICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAg ICAgfCAgICA4ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAg ICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggICAgICAg ICB8ICAgIDYgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0ICAg IHwgIDE5OSArKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAg ICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVj IHwgICA1NCArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQg fCAgICA1ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwgICAgICB8 ICAgIDMgKwogLi4uL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jICAgICAgIHwg ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgfCAx MDk3ICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl ICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVy Z2Uuc3FsICAgICAgfCAgNzkxICsrKysrKysrKysrKwogMjIgZmlsZXMgY2hhbmdlZCwgMzYxNiBp bnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJn ZS5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwKaW5kZXggNjViYzA3MGQyZTUuLmRkYjEzNzZhNmVhIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC00NDUwLDYg KzQ0NTAsMjUgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1lbnRfeTIwMDZtMDIgQUREIFVOSVFVRSAo Y2l0eV9pZCwgbG9nZGF0ZSk7CiBBTFRFUiBJTkRFWCBtZWFzdXJlbWVudF9jaXR5X2lkX2xvZ2Rh dGVfa2V5CiAgICAgQVRUQUNIIFBBUlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMl9jaXR5X2lk X2xvZ2RhdGVfa2V5OwogLi4uCis8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvcGFyYT4KKworICAg IDxwYXJhPgorICAgICBUaGVyZSBpcyBhbHNvIGFuIG9wdGlvbiBmb3IgbWVyZ2luZyBtdWx0aXBs ZSB0YWJsZSBwYXJ0aXRpb25zIGludG8KKyAgICAgYSBzaW5nbGUgcGFydGl0aW9uIHVzaW5nIHRo ZQorICAgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJ0YWJsZS1tZXJnZS1wYXJ0aXRpb25zIj48 Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUzwvY29tbWFuZD48L2xpbms+ LgorICAgICBUaGlzIGZlYXR1cmUgc2ltcGxpZmllcyB0aGUgbWFuYWdlbWVudCBvZiBwYXJ0aXRp b25lZCB0YWJsZXMgYnkgYWxsb3dpbmcKKyAgICAgdXNlcnMgdG8gY29tYmluZSBwYXJ0aXRpb25z IHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQgYXMKKyAgICAgc2VwYXJhdGUgZW50aXRpZXMuICBJ dCdzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgbm90CisgICAgIHN1 cHBvcnRlZCBmb3IgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGFjcXVpcmVzIGFuCisgICAg IDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2ssIHdoaWNoIGNvdWxkIGlt cGFjdCBoaWdoLWxvYWQKKyAgICAgc3lzdGVtcyBkdWUgdG8gdGhlIGxvY2sncyByZXN0cmljdGl2 ZSBuYXR1cmUuICBGb3IgZXhhbXBsZSwgd2UgY2FuCisgICAgIG1lcmdlIHRocmVlIG1vbnRobHkg cGFydGl0aW9ucyBpbnRvIG9uZSBxdWFydGVyIHBhcnRpdGlvbjoKKzxwcm9ncmFtbGlzdGluZz4K K0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50CisgICAgTUVSR0UgUEFSVElUSU9OUyAobWVhc3VyZW1l bnRfeTIwMDZtMDEsCisgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRfeTIwMDZtMDIs CisgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRfeTIwMDZtMDMpIElOVE8gbWVhc3Vy ZW1lbnRfeTIwMDZxMTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgPC9wYXJhPgogICAgPC9zZWN0 Mz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCA4ODY3ZGE2YzY5My4uNWFjMWY1YzQy MzEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAgLTM3LDYgKzM3LDggQEAgQUxURVIg VEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+CiAgICAgQVRUQUNIIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJs ZT4gfCBERUZBVUxUIH0KIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIERFVEFDSCBQQVJUSVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJs ZT4gWyBDT05DVVJSRU5UTFkgfCBGSU5BTElaRSBdCitBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBd IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICBN RVJHRSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hl cmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjdGlvbjwvcmVwbGFjZWFibGU+IGlz IG9uZSBvZjo8L3BocmFzZT4KIApAQCAtMTE1OSwxOCArMTE2MSwxMTQgQEAgV0lUSCAoIE1PRFVM VVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFj ZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2 YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLW1lcmdlLXBhcnRpdGlvbnMiPgorICAgIDx0 ZXJtPjxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48 L2xpdGVyYWw+PC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRo aXMgZm9ybSBtZXJnZXMgc2V2ZXJhbCBwYXJ0aXRpb25zIG9mIHRoZSB0YXJnZXQgdGFibGUgaW50 byBhIG5ldyBwYXJ0aXRpb24uCisgICAgICBIYXNoLXBhcnRpdGlvbmVkIHRhcmdldCB0YWJsZSBp cyBub3Qgc3VwcG9ydGVkLgorICAgICAgSWYgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+ IHBhcnRpdGlvbiBpcyBub3QgaW4gdGhlCisgICAgICBsaXN0IG9mIHBhcnRpdGlvbnMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAor ICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVw bGFjZWFibGU+IFssIC4uLl06CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgcmFuZ2UtcGFydGl0aW9uZWQgdGFibGVz LCB0aGUgcmFuZ2VzIG9mIHRoZSBwYXJ0aXRpb25zCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICAgICA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJs ZT4sIFsuLi5dCisgICAgICAgICBtdXN0IGJlIGFkamFjZW50IGluIG9yZGVyIHRvIGJlIG1lcmdl ZC4gT3RoZXJ3aXNlLCBhbiBlcnJvciB3aWxsIGJlCisgICAgICAgICByYWlzZWQuIFRoZSByZXN1 bHRpbmcgY29tYmluZWQgcmFuZ2Ugd2lsbCBiZSB0aGUgbmV3IHBhcnRpdGlvbiBib3VuZAorICAg ICAgICAgZm9yIHRoZSBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xp c3RpdGVtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3Ig bGlzdC1wYXJ0aXRpb25lZCB0YWJsZXMsIHRoZSBwYXJ0aXRpb24gYm91bmRzIG9mCisgICAgICAg ICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNl YWJsZT4sCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBhcmUgY29tYmluZWQgdG8gZm9y bSB0aGUgbmV3IHBhcnRpdGlvbiBib3VuZCBmb3IKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgICA8L3Bh cmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgSWYg dGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBpcyBpbiB0aGUgbGlzdCBv ZiBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFt ZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgorICAgICAgPGl0ZW1pemVkbGlz dD4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHBhcnRp dGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxh Y2VhYmxlPgorICAgICAgICAgd2lsbCBiZSB0aGUgbmV3IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVy YWw+IHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxlLgorICAgICAgICA8L3BhcmE+CisgICAg ICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAg ICAgVGhlIHBhcnRpdGlvbiBib3VuZCBzcGVjaWZpY2F0aW9ucyBmb3IgYWxsIHBhcnRpdGlvbnMt CisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUx PC9yZXBsYWNlYWJsZT4sCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBjYW4gYmUgYXJi aXRyYXJ5LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRl bWl6ZWRsaXN0PgorICAgICAgVGhlIG5ldyBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgIGNhbiBoYXZlIHRo ZSBzYW1lIG5hbWUgYXMgb25lIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4gT25seSBzaW1wbGUs CisgICAgICBub24tcGFydGl0aW9uZWQgcGFydGl0aW9ucyBjYW4gYmUgbWVyZ2VkLgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlvbnMgaGF2ZSBkaWZm ZXJlbnQgb3duZXJzLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4KKyAgICAgIFRoZSBvd25l ciBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMgd2lsbCBiZSB0aGUgb3duZXIgb2YgdGhlIG5ldyBw YXJ0aXRpb24uCisgICAgICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIHNldHVw IDxhY3JvbnltPkFDTDwvYWNyb255bT4gb24gdGhlCisgICAgICBuZXcgcGFydGl0aW9uLgorICAg ICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGluZGV4ZXMgYW5kIGlkZW50aXR5IGFy ZSBjcmVhdGVkIGxhdGVyLCBhZnRlciBtb3ZpbmcgdGhlIGRhdGEKKyAgICAgIGludG8gdGhlIG5l dyBwYXJ0aXRpb24uCisgICAgICBFeHRlbmRlZCBzdGF0aXN0aWNzIGFyZW4ndCBjb3BpZWQgZnJv bSB0aGUgcGFyZW50IHRhYmxlLCBmb3IgY29uc2lzdGVuY3kgd2l0aAorICAgICAgPGNvbW1hbmQ+ Q1JFQVRFIFRBQkxFIFBBUlRJVElPTiBPRjwvY29tbWFuZD4uCisgICAgICBUaGUgbmV3IHBhcnRp dGlvbiB3aWxsIGluaGVyaXQgdGhlIHNhbWUgdGFibGUgYWNjZXNzIG1ldGhvZCwgcGVyc2lzdGVu Y2UKKyAgICAgIHR5cGUsIGFuZCB0YWJsZXNwYWNlIGFzIHRoZSBwYXJlbnQgdGFibGUuCisgICAg IDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBXaGVuIHBhcnRpdGlvbnMgYXJlIG1lcmdlZCwg YW55IGluZGl2aWR1YWwgb2JqZWN0cyBiZWxvbmdpbmcgdG8gdGhvc2UKKyAgICAgIHBhcnRpdGlv bnMsIHN1Y2ggYXMgY29uc3RyYWludHMgb3Igc3RhdGlzdGljcywgd2lsbCBiZSBkcm9wcGVkLiBU aGlzIG9jY3VycworICAgICAgYmVjYXVzZSA8Y29tbWFuZD5BTFRFUiBUQUJMRSBNRVJHRSBQQVJU SVRJT05TPC9jb21tYW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpdHNlbGYgYXMgdGhl CisgICAgICB0ZW1wbGF0ZSB0byBkZWZpbmUgdGhlc2Ugb2JqZWN0cy4KKyAgICAgPC9wYXJhPgor ICAgICA8cGFyYT4KKyAgICAgIElmIG1lcmdlZCBwYXJ0aXRpb25zIGhhdmUgc29tZSBvYmplY3Rz IGRlcGVuZGVudCBvbiB0aGVtLCB0aGUgY29tbWFuZCBjYW4KKyAgICAgIG5vdCBiZSBkb25lICg8 bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPiBpcyBub3QgdXNlZCwgYW5kIGFuIGVycm9yIHdpbGwK KyAgICAgIGJlIHJldHVybmVkKS4KKyAgICAgPC9wYXJhPgorICAgICA8bm90ZT4KKyAgICAgIDxw YXJhPgorICAgICAgIE1lcmdpbmcgcGFydGl0aW9ucyBhY3F1aXJlcyBhbiA8bGl0ZXJhbD5BQ0NF U1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIG9uCisgICAgICAgdGhlIHBhcmVudCB0YWJsZSwg aW4gYWRkaXRpb24gdG8gdGhlIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+Cisg ICAgICAgbG9ja3Mgb24gdGhlIHRhYmxlcyBiZWluZyBtZXJnZWQgYW5kIG9uIHRoZSBkZWZhdWx0 IHBhcnRpdGlvbiAoaWYgYW55KS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgICA8 bm90ZT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBB UlRJVElPTlM8L2NvbW1hbmQ+IGNyZWF0ZXMgYSBuZXcgcGFydGl0aW9uIGFuZAorICAgICAgIG1v dmVzIGRhdGEgZnJvbSBhbGwgbWVyZ2luZyBwYXJ0aXRpb25zIGludG8gaXQsIHdoaWNoIGNhbiB0 YWtlIGEgbG9uZyB0aW1lLgorICAgICAgIFNvIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2Ug dGhlIGNvbW1hbmQgdG8gbWVyZ2UgdmVyeSBiaWcgcGFydGl0aW9ucworICAgICAgIHdpdGggc21h bGwgb25lcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKwogICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9wYXJhPgogCiAgIDxw YXJhPgogICAgQWxsIHRoZSBmb3JtcyBvZiA8Y29tbWFuZD5BTFRFUiBUQUJMRTwvY29tbWFuZD4g dGhhdCBhY3Qgb24gYSBzaW5nbGUgdGFibGUsCiAgICBleGNlcHQgPGxpdGVyYWw+UkVOQU1FPC9s aXRlcmFsPiwgPGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD4sCi0gICA8bGl0ZXJhbD5BVFRB Q0ggUEFSVElUSU9OPC9saXRlcmFsPiwgYW5kCi0gICA8bGl0ZXJhbD5ERVRBQ0ggUEFSVElUSU9O PC9saXRlcmFsPiBjYW4gYmUgY29tYmluZWQgaW50bworICAgPGxpdGVyYWw+QVRUQUNIIFBBUlRJ VElPTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LAorICAg YW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xpdGVyYWw+LCBjYW4gYmUgY29tYmluZWQg aW50bwogICAgYSBsaXN0IG9mIG11bHRpcGxlIGFsdGVyYXRpb25zIHRvIGJlIGFwcGxpZWQgdG9n ZXRoZXIuICBGb3IgZXhhbXBsZSwgaXQKICAgIGlzIHBvc3NpYmxlIHRvIGFkZCBzZXZlcmFsIGNv bHVtbnMgYW5kL29yIGFsdGVyIHRoZSB0eXBlIG9mIHNldmVyYWwKICAgIGNvbHVtbnMgaW4gYSBz aW5nbGUgY29tbWFuZC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aXRoIGxhcmdlCi0g ICB0YWJsZXMsIHNpbmNlIG9ubHkgb25lIHBhc3Mgb3ZlciB0aGUgdGFibGUgbmVlZCBiZSBtYWRl LgorICAgdGFibGVzLCBzaW5jZSBvbmx5IG9uZSBwYXNzIG92ZXIgdGhlIHRhYmxlIG5lZWRzIHRv IGJlIG1hZGUuCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KQEAgLTE0MDksNyArMTUwNywxOCBAQCBX SVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRl cmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgICA8bGlz dGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBh dHRhY2ggYXMgYSBuZXcgcGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUuCisg ICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9u IG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCisgICAgICAgIG9yIHRoZSBuYW1lIG9mIHRo ZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVt PgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0 ZXJ0YWJsZS1wYXJtcy1wYXJ0aXRpb24tbmFtZTEiPgorICAgICAgPHRlcm0+PHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+PC90ZXJtPgor ICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l MjwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgor ICAgICAgICBUaGUgbmFtZXMgb2YgdGhlIHRhYmxlcyBiZWluZyBtZXJnZWQgaW50byB0aGUgbmV3 IHBhcnRpdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zh cmxpc3RlbnRyeT4KQEAgLTE4NDIsNiArMTk1MSwxMyBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVu dAogICAgIERFVEFDSCBQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMTVtMTI7CiA8L3Byb2dyYW1s aXN0aW5nPjwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFRvIG1lcmdlIHNldmVyYWwgcGFydGl0aW9u cyBpbnRvIG9uZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZToKKzxwcm9ncmFtbGlzdGlu Zz4KK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwg c2FsZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkKKyAgICBJTlRPIHNhbGVzX2FsbDsKKzwvcHJvZ3Jh bWxpc3Rpbmc+PC9wYXJhPgorCiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMKaW5kZXggN2RkZWQ2MzRlYjguLmYwNjlhNDZhODNhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2RlcGVuZGVuY3kuYwpAQCAtMzE5LDYgKzMxOSw1NiBAQCBwZXJmb3JtRGVsZXRpb24oY29u c3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCXRhYmxlX2Nsb3NlKGRlcFJlbCwgUm93RXhjbHVz aXZlTG9jayk7CiB9CiAKKy8qCisgKiBwZXJmb3JtRGVsZXRpb25DaGVjazogQ2hlY2sgd2hldGhl ciBhIHNwZWNpZmljIG9iamVjdCBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQuCisgKiBUaGlzIGZ1bmN0 aW9uIGRvZXMgbm90IHBlcmZvcm0gYW55IGRlbGV0aW9uOyBpbnN0ZWFkLCBpdCByYWlzZXMgYW4g ZXJyb3IKKyAqIGlmIHRoZSBvYmplY3QgY2Fubm90IGJlIGRlbGV0ZWQgZHVlIHRvIGV4aXN0aW5n IGRlcGVuZGVuY2llcy4KKyAqCisgKiBJdCBjYW4gYmUgdXNlZnVsIHdoZW4geW91IG5lZWQgZGVs ZXRlIHNvbWUgb2JqZWN0cyBsYXRlci4gIFNlZSBjb21tZW50cyBpbgorICogcGVyZm9ybURlbGV0 aW9uIHRvby4KKyAqIFRoZSBiZWhhdmlvciBtdXN0IHNwZWNpZmllZCBhcyBEUk9QX1JFU1RSSUNU LgorICovCit2b2lkCitwZXJmb3JtRGVsZXRpb25DaGVjayhjb25zdCBPYmplY3RBZGRyZXNzICpv YmplY3QsCisJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncykKK3sKKwlSZWxh dGlvbglkZXBSZWw7CisJT2JqZWN0QWRkcmVzc2VzICp0YXJnZXRPYmplY3RzOworCisJQXNzZXJ0 KGJlaGF2aW9yID09IERST1BfUkVTVFJJQ1QpOworCisJZGVwUmVsID0gdGFibGVfb3BlbihEZXBl bmRSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCUFjcXVpcmVEZWxldGlvbkxvY2so b2JqZWN0LCAwKTsKKworCS8qCisJICogQ29uc3RydWN0IGEgbGlzdCBvZiBvYmplY3RzIHdlIHdh bnQgZGVsZXRlIGxhdGVyIChpZSwgdGhlIGdpdmVuIG9iamVjdAorCSAqIHBsdXMgZXZlcnl0aGlu ZyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGRlcGVuZGVudCBvbiBpdCkuCisJICovCisJdGFyZ2V0 T2JqZWN0cyA9IG5ld19vYmplY3RfYWRkcmVzc2VzKCk7CisKKwlmaW5kRGVwZW5kZW50T2JqZWN0 cyhvYmplY3QsCisJCQkJCQkgREVQRkxBR19PUklHSU5BTCwKKwkJCQkJCSBmbGFncywKKwkJCQkJ CSBOVUxMLAkvKiBlbXB0eSBzdGFjayAqLworCQkJCQkJIHRhcmdldE9iamVjdHMsCisJCQkJCQkg TlVMTCwJLyogbm8gcGVuZGluZ09iamVjdHMgKi8KKwkJCQkJCSAmZGVwUmVsKTsKKworCS8qCisJ ICogQ2hlY2sgaWYgZGVsZXRpb24gaXMgYWxsb3dlZC4KKwkgKi8KKwlyZXBvcnREZXBlbmRlbnRP YmplY3RzKHRhcmdldE9iamVjdHMsCisJCQkJCQkgICBiZWhhdmlvciwKKwkJCQkJCSAgIGZsYWdz LAorCQkJCQkJICAgb2JqZWN0KTsKKworCS8qIEFuZCBjbGVhbiB1cCAqLworCWZyZWVfb2JqZWN0 X2FkZHJlc3Nlcyh0YXJnZXRPYmplY3RzKTsKKworCXRhYmxlX2Nsb3NlKGRlcFJlbCwgUm93RXhj bHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnM6IFNpbWls YXIgdG8gcGVyZm9ybURlbGV0aW9uLCBidXQgYWN0IG9uIG11bHRpcGxlCiAgKiBvYmplY3RzIGF0 IG9uY2UuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCmluZGV4IDYwMDJmZDAwMDJmLi5l Zjg4ODJjYmNkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50 LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKQEAgLTg3NSw3ICs4 NzUsNyBAQCBSZWxhdGlvbkdldE5vdE51bGxDb25zdHJhaW50cyhPaWQgcmVsaWQsIGJvb2wgY29v a2VkLCBib29sIGluY2x1ZGVfbm9pbmgpCiAJCQkJCQkJCQkJCQkJCQkgZmFsc2UpKSk7CiAJCQlj b25zdHItPmlzX2VuZm9yY2VkID0gdHJ1ZTsKIAkJCWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uID0g IWNvbkZvcm0tPmNvbnZhbGlkYXRlZDsKLQkJCWNvbnN0ci0+aW5pdGlhbGx5X3ZhbGlkID0gdHJ1 ZTsKKwkJCWNvbnN0ci0+aW5pdGlhbGx5X3ZhbGlkID0gY29uRm9ybS0+Y29udmFsaWRhdGVkOwog CQkJY29uc3RyLT5pc19ub19pbmhlcml0ID0gY29uRm9ybS0+Y29ubm9pbmhlcml0OwogCQkJbm90 bnVsbHMgPSBsYXBwZW5kKG5vdG51bGxzLCBjb25zdHIpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCmluZGV4IDNiZTJlMDUxZDMyLi45YzdmNThhMDc5MSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKQEAgLTc0MSw2ICs3NDEsOCBAQCBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNrTm9G b3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmli dXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBz dGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAq c3RvcmFnZW1vZGUpOwogCitzdGF0aWMgdm9pZCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAq KndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCQkJCSAg UGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlEZWZpbmVSZWxhdGlvbgpAQCAtNDgzNyw2ICs0ODM5LDEwIEBAIEFs dGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJCQljbWRfbG9ja21vZGUgPSBTaGFy ZVVwZGF0ZUV4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0 aXRpb25zOgorCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJCQkJYnJl YWs7CisKIAkJCWRlZmF1bHQ6CQkJLyogb29wcyAqLwogCQkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsK QEAgLTUyNzIsNiArNTI3OCwxMSBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g cmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAg bmVlZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7CisJCWNhc2UgQVRf TWVyZ2VQYXJ0aXRpb25zOgorCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJl bCwgQVRUX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJl cCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CisJCQlicmVhazsKIAkJZGVmYXVs dDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0YWJs ZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC01NjY4LDYgKzU2Nzks MTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJ Y2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCWFkZHJlc3MgPSBBVEV4ZWNEZXRh Y2hQYXJ0aXRpb25GaW5hbGl6ZShyZWwsICgoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmKS0+bmFt ZSk7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQljbWQgPSBBVFBh cnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAor CQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CisJCQlBc3NlcnQoY21kICE9IE5VTEwpOwor CQkJQXNzZXJ0KHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUpOworCQkJQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKHdxdWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRp b25DbWQgKikgY21kLT5kZWYsCisJCQkJCQkJCSAgY29udGV4dCk7CisJCQlicmVhazsKIAkJZGVm YXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0 YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC02NzA4LDYgKzY3 MjcsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBl KQogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIjsKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRp b25GaW5hbGl6ZToKIAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOwor CQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCXJldHVybiAiTUVSR0UgUEFSVElUSU9OUyI7 CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlyZXR1cm4gIkFMVEVSIENPTFVNTiAuLi4gQURE IElERU5USVRZIjsKIAkJY2FzZSBBVF9TZXRJZGVudGl0eToKQEAgLTIwMTk3LDYgKzIwMjE4LDM3 IEBAIFF1ZXVlUGFydGl0aW9uQ29uc3RyYWludFZhbGlkYXRpb24oTGlzdCAqKndxdWV1ZSwgUmVs YXRpb24gc2NhbnJlbCwKIAl9CiB9CiAKKy8qCisgKiBhdHRhY2hQYXJ0aXRpb25UYWJsZTogYXR0 YWNoIGEgbmV3IHBhcnRpdGlvbiB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUKKyAqCisgKiB3cXVl dWU6IHRoZSBBTFRFUiBUQUJMRSB3b3JrIHF1ZXVlOyBjYW4gYmUgTlVMTCB3aGVuIG5vdCBydW5u aW5nIGFzIHBhcnQKKyAqICAgb2YgYW4gQUxURVIgVEFCTEUgc2VxdWVuY2UuCisgKiByZWw6IHBh cnRpdGlvbmVkIHJlbGF0aW9uOworICogYXR0YWNocmVsOiByZWxhdGlvbiBvZiBhdHRhY2hlZCBw YXJ0aXRpb247CisgKiBib3VuZDogYm91bmRzIG9mIGF0dGFjaGVkIHJlbGF0aW9uLgorICovCitz dGF0aWMgdm9pZAorYXR0YWNoUGFydGl0aW9uVGFibGUoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g cmVsLCBSZWxhdGlvbiBhdHRhY2hyZWwsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpCit7CisJ LyogT0sgdG8gY3JlYXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1l ZCB0aGVyZSAqLworCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKKwor CS8qIFVwZGF0ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCisJU3RvcmVQYXJ0aXRpb25Cb3VuZChh dHRhY2hyZWwsIHJlbCwgYm91bmQpOworCisJLyogRW5zdXJlIHRoZXJlIGV4aXN0cyBhIGNvcnJl Y3Qgc2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRpdGlvbi4gKi8KKwlBdHRhY2hQYXJ0aXRpb25F bnN1cmVJbmRleGVzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworCisJLyogYW5kIHRyaWdnZXJz ICovCisJQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgYXR0YWNocmVsKTsKKworCS8q CisJICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBDYWxsZWUgaXMgcmVzcG9uc2li bGUgZm9yIHNldHRpbmcgdXAKKwkgKiBmb3IgcGhhc2UgMyBjb25zdHJhaW50IHZlcmlmaWNhdGlv bi4KKwkgKi8KKwlDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyh3cXVldWUsIHJlbCwgYXR0YWNo cmVsKTsKK30KKwogLyoKICAqIEFMVEVSIFRBQkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDxw YXJ0aXRpb24tbmFtZT4gRk9SIFZBTFVFUwogICoKQEAgLTIwMzk4LDIzICsyMDQ1MCw4IEBAIEFU RXhlY0F0dGFjaFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFBhcnRpdGlv bkNtZCAqY21kLAogCWNoZWNrX25ld19wYXJ0aXRpb25fYm91bmQoUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUoYXR0YWNocmVsKSwgcmVsLAogCQkJCQkJCSAgY21kLT5ib3VuZCwgcHN0YXRlKTsKIAot CS8qIE9LIHRvIGNyZWF0ZSBpbmhlcml0YW5jZS4gIFJlc3Qgb2YgdGhlIGNoZWNrcyBwZXJmb3Jt ZWQgdGhlcmUgKi8KLQlDcmVhdGVJbmhlcml0YW5jZShhdHRhY2hyZWwsIHJlbCwgdHJ1ZSk7Ci0K LQkvKiBVcGRhdGUgdGhlIHBnX2NsYXNzIGVudHJ5LiAqLwotCVN0b3JlUGFydGl0aW9uQm91bmQo YXR0YWNocmVsLCByZWwsIGNtZC0+Ym91bmQpOwotCi0JLyogRW5zdXJlIHRoZXJlIGV4aXN0cyBh IGNvcnJlY3Qgc2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRpdGlvbi4gKi8KLQlBdHRhY2hQYXJ0 aXRpb25FbnN1cmVJbmRleGVzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOwotCi0JLyogYW5kIHRy aWdnZXJzICovCi0JQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgYXR0YWNocmVsKTsK LQotCS8qCi0JICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBDYWxsZWUgaXMgcmVz cG9uc2libGUgZm9yIHNldHRpbmcgdXAKLQkgKiBmb3IgcGhhc2UgMyBjb25zdHJhaW50IHZlcmlm aWNhdGlvbi4KLQkgKi8KLQlDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyh3cXVldWUsIHJlbCwg YXR0YWNocmVsKTsKKwkvKiBBdHRhY2ggYSBuZXcgcGFydGl0aW9uIHRvIHRoZSBwYXJ0aXRpb25l ZCB0YWJsZS4gKi8KKwlhdHRhY2hQYXJ0aXRpb25UYWJsZSh3cXVldWUsIHJlbCwgYXR0YWNocmVs LCBjbWQtPmJvdW5kKTsKIAogCS8qCiAJICogR2VuZXJhdGUgcGFydGl0aW9uIGNvbnN0cmFpbnQg ZnJvbSB0aGUgcGFydGl0aW9uIGJvdW5kIHNwZWNpZmljYXRpb24uCkBAIC0yMjA2MiwzICsyMjA5 OSw4MzMgQEAgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0 b3JhZ2Vtb2RlKQogCiAJcmV0dXJuIGNzdG9yYWdlOwogfQorCisKKy8qCisgKiBidWlsZEV4cHJl c3Npb25FeGVjdXRpb25TdGF0ZXM6IGJ1aWxkIHRoZSBuZWVkZWQgZXhwcmVzc2lvbiBleGVjdXRp b24gc3RhdGVzCisgKiBmb3IgbmV3IHBhcnRpdGlvbiAobmV3UGFydFJlbCkgY2hlY2tzIGFuZCBp bml0aWFsaXplIGV4cHJlc3Npb25zIGZvcgorICogZ2VuZXJhdGVkIGNvbHVtbnMuIEFsbCBleHBy ZXNzaW9ucyBzaG91bGQgYmUgY3JlYXRlZCBpbiAidGFiIgorICogKEFsdGVyZWRUYWJsZUluZm8g c3RydWN0dXJlKS4KKyAqLworc3RhdGljIHZvaWQKK2J1aWxkRXhwcmVzc2lvbkV4ZWN1dGlvblN0 YXRlcyhBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIG5ld1BhcnRSZWwsIEVTdGF0ZSAq ZXN0YXRlKQoreworCS8qCisJICogQnVpbGQgdGhlIG5lZWRlZCBleHByZXNzaW9uIGV4ZWN1dGlv biBzdGF0ZXMuIEhlcmUsIHdlIGV4cGVjdCBvbmx5IE5PVAorCSAqIE5VTEwgYW5kIENIRUNLIGNv bnN0cmFpbnQuCisJICovCisJZm9yZWFjaF9wdHIoTmV3Q29uc3RyYWludCwgY29uLCB0YWItPmNv bnN0cmFpbnRzKQorCXsKKwkJc3dpdGNoIChjb24tPmNvbnR5cGUpCisJCXsKKwkJCWNhc2UgQ09O U1RSX0NIRUNLOgorCisJCQkJLyoKKwkJCQkgKiBXZSBhbHJlYWR5IGV4cGFuZGVkIHZpcnR1YWwg ZXhwcmVzc2lvbiBpbgorCQkJCSAqIGNyZWF0ZVRhYmxlQ29uc3RyYWludHMuCisJCQkJICovCisJ CQkJY29uLT5xdWFsc3RhdGUgPSBFeGVjUHJlcGFyZUV4cHIoKEV4cHIgKikgY29uLT5xdWFsLCBl c3RhdGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBDT05TVFJfTk9UTlVMTDoKKwkJCQkvKiBOb3Ro aW5nIHRvIGRvIGhlcmUuICovCisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBjb24t PmNvbnR5cGUpOworCQl9CisJfQorCisJLyogRXhwcmVzc2lvbiBhbHJlYWR5IHBsYW5uZWQgaW4g Y3JlYXRlVGFibGVDb25zdHJhaW50cyAqLworCWZvcmVhY2hfcHRyKE5ld0NvbHVtblZhbHVlLCBl eCwgdGFiLT5uZXd2YWxzKQorCQlleC0+ZXhwcnN0YXRlID0gRXhlY0luaXRFeHByKChFeHByICop IGV4LT5leHByLCBOVUxMKTsKK30KKworLyoKKyAqIGV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lv bnNBbmRDaGVja0NvbnN0cmFpbnRzOiBldmFsdWF0ZSBhbnkgZ2VuZXJhdGVkCisgKiBleHByZXNz aW9ucyBmb3IgInRhYiIgKEFsdGVyZWRUYWJsZUluZm8gc3RydWN0dXJlKSB3aG9zZSBpbnB1dHMg Y29tZSBmcm9tCisgKiB0aGUgbmV3IHR1cGxlIChpbnNlcnRzbG90KSBvZiBuZXcgcGFydGl0aW9u IChuZXdQYXJ0UmVsKS4KKyAqLworc3RhdGljIHZvaWQKK2V2YWx1YXRlR2VuZXJhdGVkRXhwcmVz c2lvbnNBbmRDaGVja0NvbnN0cmFpbnRzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKKwkJCQkJCQkJ CQkJCVJlbGF0aW9uIG5ld1BhcnRSZWwsCisJCQkJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqaW5z ZXJ0c2xvdCwKKwkJCQkJCQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwllY29udGV4 dC0+ZWN4dF9zY2FudHVwbGUgPSBpbnNlcnRzbG90OworCisJZm9yZWFjaF9wdHIoTmV3Q29sdW1u VmFsdWUsIGV4LCB0YWItPm5ld3ZhbHMpCisJeworCQlpZiAoIWV4LT5pc19nZW5lcmF0ZWQpCisJ CQljb250aW51ZTsKKworCQlpbnNlcnRzbG90LT50dHNfdmFsdWVzW2V4LT5hdHRudW0gLSAxXQor CQkJPSBFeGVjRXZhbEV4cHIoZXgtPmV4cHJzdGF0ZSwKKwkJCQkJCSAgIGVjb250ZXh0LAorCQkJ CQkJICAgJmluc2VydHNsb3QtPnR0c19pc251bGxbZXgtPmF0dG51bSAtIDFdKTsKKwl9CisKKwlm b3JlYWNoX3B0cihOZXdDb25zdHJhaW50LCBjb24sIHRhYi0+Y29uc3RyYWludHMpCisJeworCQlz d2l0Y2ggKGNvbi0+Y29udHlwZSkKKwkJeworCQkJY2FzZSBDT05TVFJfQ0hFQ0s6CisJCQkJaWYg KCFFeGVjQ2hlY2soY29uLT5xdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKKwkJCQkJCQllcnJt c2coImNoZWNrIGNvbnN0cmFpbnQgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBpcyB2aW9sYXRl ZCBieSBzb21lIHJvdyIsCisJCQkJCQkJCSAgIGNvbi0+bmFtZSwgUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUobmV3UGFydFJlbCkpLAorCQkJCQkJCWVycnRhYmxlY29uc3RyYWludChuZXdQYXJ0UmVs LCBjb24tPm5hbWUpKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ09OU1RSX05PVE5VTEw6CisJCQlj YXNlIENPTlNUUl9GT1JFSUdOOgorCQkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZSAqLworCQkJCWJy ZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNvbnN0cmFp bnQgdHlwZTogJWQiLAorCQkJCQkgKGludCkgY29uLT5jb250eXBlKTsKKwkJfQorCX0KK30KKwor LyoKKyAqIGdldEF0dHJpYnV0ZXNMaXN0OiBidWlsZCBhIGxpc3Qgb2YgY29sdW1ucyAoQ29sdW1u RGVmKSBiYXNlZCBvbiBwYXJlbnRfcmVsCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dldEF0dHJpYnV0 ZXNMaXN0KFJlbGF0aW9uIHBhcmVudF9yZWwpCit7CisJQXR0ck51bWJlcglwYXJlbnRfYXR0bm87 CisJVHVwbGVEZXNjCW1vZGVsRGVzYzsKKwlMaXN0CSAgICpjb2xMaXN0ID0gTklMOworCisJbW9k ZWxEZXNjID0gUmVsYXRpb25HZXREZXNjcihwYXJlbnRfcmVsKTsKKworCWZvciAocGFyZW50X2F0 dG5vID0gMTsgcGFyZW50X2F0dG5vIDw9IG1vZGVsRGVzYy0+bmF0dHM7CisJCSBwYXJlbnRfYXR0 bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIo bW9kZWxEZXNjLAorCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEpOworCQlDb2x1bW5EZWYg ICpkZWY7CisKKwkJLyogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LiAqLwor CQlpZiAoYXR0cmlidXRlLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQlkZWYgPSBt YWtlQ29sdW1uRGVmKE5hbWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwgYXR0cmlidXRlLT5hdHR0 eXBpZCwKKwkJCQkJCQlhdHRyaWJ1dGUtPmF0dHR5cG1vZCwgYXR0cmlidXRlLT5hdHRjb2xsYXRp b24pOworCisJCWRlZi0+aXNfbm90X251bGwgPSBhdHRyaWJ1dGUtPmF0dG5vdG51bGw7CisKKwkJ LyogQ29weSBpZGVudGl0eS4gKi8KKwkJZGVmLT5pZGVudGl0eSA9IGF0dHJpYnV0ZS0+YXR0aWRl bnRpdHk7CisKKwkJLyogQ29weSBhdHRnZW5lcmF0ZWQuICovCisJCWRlZi0+Z2VuZXJhdGVkID0g YXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQ7CisKKwkJZGVmLT5zdG9yYWdlID0gYXR0cmlidXRlLT5h dHRzdG9yYWdlOworCisJCS8qIExpa2V3aXNlLCBjb3B5IGNvbXByZXNzaW9uLiAqLworCQlpZiAo Q29tcHJlc3Npb25NZXRob2RJc1ZhbGlkKGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Npb24pKQorCQkJ ZGVmLT5jb21wcmVzc2lvbiA9CisJCQkJcHN0cmR1cChHZXRDb21wcmVzc2lvbk1ldGhvZE5hbWUo YXR0cmlidXRlLT5hdHRjb21wcmVzc2lvbikpOworCQllbHNlCisJCQlkZWYtPmNvbXByZXNzaW9u ID0gTlVMTDsKKworCQkvKiBBZGQgdG8gY29sdW1uIGxpc3QuICovCisJCWNvbExpc3QgPSBsYXBw ZW5kKGNvbExpc3QsIGRlZik7CisJfQorCisJcmV0dXJuIGNvbExpc3Q7Cit9CisKKworLyoKKyAq IGNyZWF0ZVRhYmxlQ29uc3RyYWludHM6CisgKiBjcmVhdGUgY2hlY2sgY29uc3RyYWludHMsIGRl ZmF1bHQgdmFsdWVzIGFuZCBnZW5lcmF0ZWQgdmFsdWVzIGZvciBuZXdSZWwKKyAqIGJhc2VkIG9u IHBhcmVudF9yZWwuICB0YWIgaXMgcGVuZGluZy13b3JrIHF1ZXVlIGZvciBuZXdSZWwsIHdlIG1h eSBuZWVkIGl0IGluCisgKiBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cy4KKyAqLworc3RhdGljIHZv aWQKK2NyZWF0ZVRhYmxlQ29uc3RyYWludHMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5m byAqdGFiLAorCQkJCQkgICBSZWxhdGlvbiBwYXJlbnRfcmVsLCBSZWxhdGlvbiBuZXdSZWwpCit7 CisJVHVwbGVEZXNjCXR1cGxlRGVzYzsKKwlUdXBsZUNvbnN0ciAqY29uc3RyOworCUF0dHJNYXAg ICAgKmF0dG1hcDsKKwlBdHRyTnVtYmVyCXBhcmVudF9hdHRubzsKKwlpbnQJCQljY251bTsKKwlM aXN0CSAgICpDb25zdHJhaW50cyA9IE5JTDsKKwlMaXN0CSAgICpjb29rZWRDb25zdHJhaW50cyA9 IE5JTDsKKworCXR1cGxlRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocGFyZW50X3JlbCk7CisJY29u c3RyID0gdHVwbGVEZXNjLT5jb25zdHI7CisKKwlpZiAoIWNvbnN0cikKKwkJcmV0dXJuOworCisJ LyoKKwkgKiBDb25zdHJ1Y3QgYSBtYXAgZnJvbSB0aGUgcGFyZW50IHJlbGF0aW9uJ3MgYXR0bm9z IHRvIHRoZSBjaGlsZCByZWwncy4KKwkgKiBUaGlzIHJlLWNoZWNrcyB0eXBlIG1hdGNoIGV0Yywg YWx0aG91Z2ggaXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvCisJICogaGF2ZSBhIGZhaWx1cmUg c2luY2UgYm90aCB0YWJsZXMgYXJlIGxvY2tlZC4KKwkgKi8KKwlhdHRtYXAgPSBidWlsZF9hdHRy bWFwX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihuZXdSZWwpLAorCQkJCQkJCQkgICB0dXBsZURl c2MsCisJCQkJCQkJCSAgIGZhbHNlKTsKKworCS8qIEN5Y2xlIGZvciBkZWZhdWx0IHZhbHVlcy4g Ki8KKwlmb3IgKHBhcmVudF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8PSB0dXBsZURlc2MtPm5h dHRzOyBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9 IFR1cGxlRGVzY0F0dHIodHVwbGVEZXNjLAorCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEp OworCisJCS8qIElnbm9yZSBkcm9wcGVkIGNvbHVtbnMgaW4gdGhlIHBhcmVudC4gKi8KKwkJaWYg KGF0dHJpYnV0ZS0+YXR0aXNkcm9wcGVkKQorCQkJY29udGludWU7CisKKwkJLyogQ29weSBkZWZh dWx0LCBpZiBwcmVzZW50IGFuZCBpdCBzaG91bGQgYmUgY29waWVkLiAqLworCQlpZiAoYXR0cmli dXRlLT5hdHRoYXNkZWYpCisJCXsKKwkJCU5vZGUJICAgKnRoaXNfZGVmYXVsdCA9IE5VTEw7CisJ CQlib29sCQlmb3VuZF93aG9sZV9yb3c7CisJCQlBdHRyTnVtYmVyCW51bTsKKwkJCU5vZGUJICAg KmRlZjsKKwkJCU5ld0NvbHVtblZhbHVlICpuZXd2YWw7CisKKwkJCWlmIChhdHRyaWJ1dGUtPmF0 dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCQkJdGhpc19kZWZh dWx0ID0gYnVpbGRfZ2VuZXJhdGlvbl9leHByZXNzaW9uKHBhcmVudF9yZWwsIGF0dHJpYnV0ZS0+ YXR0bnVtKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQl0aGlzX2RlZmF1bHQgPSBUdXBsZURlc2NHZXRE ZWZhdWx0KHR1cGxlRGVzYywgYXR0cmlidXRlLT5hdHRudW0pOworCQkJCWlmICh0aGlzX2RlZmF1 bHQgPT0gTlVMTCkKKwkJCQkJZWxvZyhFUlJPUiwgImRlZmF1bHQgZXhwcmVzc2lvbiBub3QgZm91 bmQgZm9yIGF0dHJpYnV0ZSAlZCBvZiByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJIGF0dHJpYnV0 ZS0+YXR0bnVtLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRfcmVsKSk7CisJCQl9CisK KwkJCW51bSA9IGF0dG1hcC0+YXR0bnVtc1twYXJlbnRfYXR0bm8gLSAxXTsKKwkJCWRlZiA9IG1h cF92YXJpYWJsZV9hdHRub3ModGhpc19kZWZhdWx0LCAxLCAwLCBhdHRtYXAsIEludmFsaWRPaWQs ICZmb3VuZF93aG9sZV9yb3cpOworCisJCQlpZiAoZm91bmRfd2hvbGVfcm93ICYmIGF0dHJpYnV0 ZS0+YXR0Z2VuZXJhdGVkICE9ICdcMCcpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCJjYW5ub3Qg Y29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVmZXJlbmNlIiksCisJCQkJCQllcnJkZXRhaWwoIkdl bmVyYXRpb24gZXhwcmVzc2lvbiBmb3IgY29sdW1uIFwiJXNcIiBjb250YWlucyBhIHdob2xlLXJv dyByZWZlcmVuY2UgdG8gdGFibGUgXCIlc1wiLiIsCisJCQkJCQkJCSAgTmFtZVN0cihhdHRyaWJ1 dGUtPmF0dG5hbWUpLAorCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9y ZWwpKSk7CisKKwkJCS8qIEFkZCBhIHByZS1jb29rZWQgZGVmYXVsdCBleHByZXNzaW9uLiAqLwor CQkJU3RvcmVBdHRyRGVmYXVsdChuZXdSZWwsIG51bSwgZGVmLCB0cnVlKTsKKworCQkJLyoKKwkJ CSAqIFN0b3JlZCBnZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zIGluIHBhcmVudF9yZWwgbWln aHQKKwkJCSAqIHJlZmVyZW5jZSB0YWJsZW9pZC4gIG5ld1JlbCwgcGFyZW50X3JlbCB0YWJsZW9p ZCBjbGVhciBpcyBub3QKKwkJCSAqIHRoZSBzYW1lLiBJZiBzbywgdGhlc2Ugc3RvcmVkIGdlbmVy YXRlZCBjb2x1bW5zIHJlcXVpcmUKKwkJCSAqIHJlY29tcHV0YXRpb24gZm9yIG5ld1JlbCB3aXRo aW4gTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MuCisJCQkgKi8KKwkJCWlmIChhdHRyaWJ1dGUtPmF0 dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJCXsKKwkJCQluZXd2 YWwgPSAoTmV3Q29sdW1uVmFsdWUgKikgcGFsbG9jMChzaXplb2YoTmV3Q29sdW1uVmFsdWUpKTsK KwkJCQluZXd2YWwtPmF0dG51bSA9IG51bTsKKwkJCQluZXd2YWwtPmV4cHIgPSBleHByZXNzaW9u X3BsYW5uZXIoKEV4cHIgKikgZGVmKTsKKwkJCQluZXd2YWwtPmlzX2dlbmVyYXRlZCA9IChhdHRy aWJ1dGUtPmF0dGdlbmVyYXRlZCAhPSAnXDAnKTsKKwkJCQl0YWItPm5ld3ZhbHMgPSBsYXBwZW5k KHRhYi0+bmV3dmFscywgbmV3dmFsKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIEN5Y2xlIGZvciBD SEVDSyBjb25zdHJhaW50cy4gKi8KKwlmb3IgKGNjbnVtID0gMDsgY2NudW0gPCBjb25zdHItPm51 bV9jaGVjazsgY2NudW0rKykKKwl7CisJCWNoYXIJICAgKmNjbmFtZSA9IGNvbnN0ci0+Y2hlY2tb Y2NudW1dLmNjbmFtZTsKKwkJY2hhcgkgICAqY2NiaW4gPSBjb25zdHItPmNoZWNrW2NjbnVtXS5j Y2JpbjsKKwkJYm9vbAkJY2NlbmZvcmNlZCA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjZW5mb3Jj ZWQ7CisJCWJvb2wJCWNjbm9pbmhlcml0ID0gY29uc3RyLT5jaGVja1tjY251bV0uY2Nub2luaGVy aXQ7CisJCWJvb2wJCWNjdmFsaWQgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY3ZhbGlkOworCQlO b2RlCSAgICpjY2Jpbl9ub2RlOworCQlib29sCQlmb3VuZF93aG9sZV9yb3c7CisJCUNvbnN0cmFp bnQgKmNvbnN0cjsKKworCQkvKgorCQkgKiBQYXJ0aXRpb25lZCB0YWJsZSBjYW4gbm90IGhhdmUg Tk8gSU5IRVJJVCBjaGVjayBjb25zdHJhaW50IChzZWUKKwkJICogU3RvcmVSZWxDaGVjayBmdW5j dGlvbikuCisJCSAqLworCQlBc3NlcnQoIWNjbm9pbmhlcml0KTsKKworCQljY2Jpbl9ub2RlID0g bWFwX3ZhcmlhYmxlX2F0dG5vcyhzdHJpbmdUb05vZGUoY2NiaW4pLAorCQkJCQkJCQkJCSAxLCAw LAorCQkJCQkJCQkJCSBhdHRtYXAsCisJCQkJCQkJCQkJIEludmFsaWRPaWQsICZmb3VuZF93aG9s ZV9yb3cpOworCisJCS8qCisJCSAqIEZvciB0aGUgbW9tZW50IHdlIGhhdmUgdG8gcmVqZWN0IHdo b2xlLXJvdyB2YXJpYWJsZXMgKGFzIGZvciBMSUtFCisJCSAqIGFuZCBpbmhlcml0YW5jZXMpLgor CQkgKi8KKwkJaWYgKGZvdW5kX3dob2xlX3JvdykKKwkJCWVsb2coRVJST1IsICJDb25zdHJhaW50 IFwiJXNcIiBjb250YWlucyBhIHdob2xlLXJvdyByZWZlcmVuY2UgdG8gdGFibGUgXCIlc1wiLiIs CisJCQkJIGNjbmFtZSwKKwkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFyZW50X3JlbCkp OworCisJCWNvbnN0ciA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOworCQljb25zdHItPmNvbnR5cGUg PSBDT05TVFJfQ0hFQ0s7CisJCWNvbnN0ci0+Y29ubmFtZSA9IHBzdHJkdXAoY2NuYW1lKTsKKwkJ Y29uc3RyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCWNvbnN0ci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJCWNvbnN0ci0+aXNfZW5mb3JjZWQgPSBjY2VuZm9yY2VkOworCQljb25zdHItPnNraXBf dmFsaWRhdGlvbiA9ICFjY3ZhbGlkOworCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IGNjdmFs aWQ7CisJCWNvbnN0ci0+aXNfbm9faW5oZXJpdCA9IGNjbm9pbmhlcml0OworCQljb25zdHItPnJh d19leHByID0gTlVMTDsKKwkJY29uc3RyLT5jb29rZWRfZXhwciA9IG5vZGVUb1N0cmluZyhjY2Jp bl9ub2RlKTsKKwkJY29uc3RyLT5sb2NhdGlvbiA9IC0xOworCQlDb25zdHJhaW50cyA9IGxhcHBl bmQoQ29uc3RyYWludHMsIGNvbnN0cik7CisJfQorCisJLyogaW5zdGFsbCBhbGwgQ0hFQ0sgY29u c3RyYWludHMuICovCisJY29va2VkQ29uc3RyYWludHMgPSBBZGRSZWxhdGlvbk5ld0NvbnN0cmFp bnRzKG5ld1JlbCwgTklMLCBDb25zdHJhaW50cywKKwkJCQkJCQkJCQkJCSAgZmFsc2UsIHRydWUs IHRydWUsIE5VTEwpOworCisJLyogTWFrZSB0aGUgYWRkaXRpb25hbCBjYXRhbG9nIGNoYW5nZXMg dmlzaWJsZSAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkvKgorCSAqIHBhcmVu dF9yZWwgY2hlY2sgY29uc3RyYWludCBleHByZXNzc2lvbiBtYXkgcmVmZXJlbmNlIHRhYmxlb2lk LCBzbworCSAqIGxhdGVyIGluIE1lcmdlUGFydGl0aW9uc01vdmVSb3dzLCB3ZSBuZWVkIGV2dWxh dGUgdGhlIGNoZWNrIGNvbnN0cmFpbnQKKwkgKiBhZ2FpbiBmb3IgdGhlIG5ld1JlbC4gV2UgY2Fu IGNoZWNrIHdlYXRoZXIgY2hlY2sgY29uc3RyYWludCBjb250YWluCisJICogdGFibGVvaWQgcmVm ZXJlbmNlIG9yIG5vdCB2aWEgcHVsbF92YXJhdHRub3MuCisJICovCisJZm9yZWFjaF9wdHIoQ29v a2VkQ29uc3RyYWludCwgY2NvbiwgY29va2VkQ29uc3RyYWludHMpCisJeworCQlpZiAoIWNjb24t PnNraXBfdmFsaWRhdGlvbikKKwkJeworCQkJTm9kZQkgICAqcXVhbDsKKwkJCUJpdG1hcHNldCAg KmF0dG51bXMgPSBOVUxMOworCisJCQlBc3NlcnQoY2Nvbi0+Y29udHlwZSA9PSBDT05TVFJfQ0hF Q0spOworCQkJcXVhbCA9IGV4cGFuZF9nZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKGNjb24tPmV4 cHIsIG5ld1JlbCwgMSk7CisJCQlwdWxsX3ZhcmF0dG5vcyhxdWFsLCAxLCAmYXR0bnVtcyk7CisK KwkJCS8qCisJCQkgKiBBZGQgY2hlY2sgb25seSBpZiBpdCBjb250YWlucyB0YWJsZW9pZAorCQkJ ICogKFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyKS4KKwkJCSAqLworCQkJaWYgKGJtc19pc19tZW1i ZXIoVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyLAorCQkJCQkJCSAgYXR0bnVtcykpCisJCQl7CisJCQkJTmV3Q29uc3RyYWludCAqbmV3 Y29uOworCisJCQkJbmV3Y29uID0gKE5ld0NvbnN0cmFpbnQgKikgcGFsbG9jMChzaXplb2YoTmV3 Q29uc3RyYWludCkpOworCQkJCW5ld2Nvbi0+bmFtZSA9IGNjb24tPm5hbWU7CisJCQkJbmV3Y29u LT5jb250eXBlID0gQ09OU1RSX0NIRUNLOworCQkJCW5ld2Nvbi0+cXVhbCA9IHF1YWw7CisKKwkJ CQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdjb24pOwor CQkJfQorCQl9CisJfQorCisJLyogRG9uJ3QgbmVlZCB0aGUgY29va2VkQ29uc3RyYWludHMgYW55 IG1vcmUuICovCisJbGlzdF9mcmVlX2RlZXAoY29va2VkQ29uc3RyYWludHMpOworCisJLyogUmVw cm9kdWNlIG5vdC1udWxsIGNvbnN0cmFpbnRzLiAqLworCWlmIChjb25zdHItPmhhc19ub3RfbnVs bCkKKwl7CisJCUxpc3QJICAgKm5uY29uc3RyYWludHM7CisKKwkJLyoKKwkJICogVGhlICJpbmNs dWRlX25vaW5oIiBhcmd1bWVudCBpcyBmYWxzZSBiZWNhdXNlIGEgcGFydGl0aW9uZWQgdGFibGUK KwkJICogY2Fubm90IGhhdmUgTk8gSU5IRVJJVCBjb25zdHJhaW50LgorCQkgKi8KKwkJbm5jb25z dHJhaW50cyA9IFJlbGF0aW9uR2V0Tm90TnVsbENvbnN0cmFpbnRzKFJlbGF0aW9uR2V0UmVsaWQo cGFyZW50X3JlbCksCisJCQkJCQkJCQkJCQkJICBmYWxzZSwgZmFsc2UpOworCisJCUFzc2VydChs aXN0X2xlbmd0aChubmNvbnN0cmFpbnRzKSA+IDApOworCisJCS8qCisJCSAqIFdlIGFscmVhZHkg c2V0IHBnX2F0dHJpYnV0ZS5hdHRub3RudWxsIGluIGNyZWF0ZVBhcnRpdGlvblRhYmxlLiBObwor CQkgKiBuZWVkIGNhbGwgc2V0X2F0dG5vdG51bGwgYWdhaW4uCisJCSAqLworCQlBZGRSZWxhdGlv bk5ld0NvbnN0cmFpbnRzKG5ld1JlbCwgTklMLCBubmNvbnN0cmFpbnRzLCBmYWxzZSwgdHJ1ZSwg dHJ1ZSwgTlVMTCk7CisJfQorfQorCisKKy8qCisgKiBjcmVhdGVQYXJ0aXRpb25UYWJsZToKKyAq CisgKiBDcmVhdGUgYSBuZXcgcGFydGl0aW9uIChuZXdQYXJ0TmFtZSkgZm9yIHBhcnRpdGlvbmVk IHRhYmxlIChwYXJlbnRfcmVsKS4KKyAqIG93bmVySWQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgcGFy dGl0aW9uIG9uIHdoaWNoIHRoZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkLAorICogc28gaXQgaXMg cGFzc2VkIHNlcGFyYXRlbHkuICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxsIGluaGVyaXQgdGhlIGFj Y2VzcyBtZXRob2QKKyAqIGFuZCBwZXJzaXN0ZW5jZSB0eXBlIGZyb20gdGhlIHBhcmVudCB0YWJs ZS4KKyAqCisgKiByZXR1cm5zIHRoZSBjcmVhdGVkIHJlbGF0aW9uIChsb2NrZWQgaW4gQWNjZXNz RXhjbHVzaXZlTG9jayBtb2RlKS4KKyAqLworc3RhdGljIFJlbGF0aW9uCitjcmVhdGVQYXJ0aXRp b25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSYW5nZVZhciAqbmV3UGFydE5hbWUsCisJCQkJCSBSZWxh dGlvbiBwYXJlbnRfcmVsLCBPaWQgb3duZXJJZCkKK3sKKwlSZWxhdGlvbgluZXdSZWw7CisJT2lk CQkJbmV3UmVsSWQ7CisJT2lkCQkJZXhpc3RpbmdSZWxpZDsKKwlUdXBsZURlc2MJZGVzY3JpcHRv cjsKKwlMaXN0CSAgICpjb2xMaXN0ID0gTklMOworCU9pZAkJCXJlbGFtSWQ7CisJT2lkCQkJbmFt ZXNwYWNlSWQ7CisJQWx0ZXJlZFRhYmxlSW5mbyAqbmV3X3BhcnRyZWxfdGFiOworCisJLyogSWYg ZXhpc3RpbmcgcmVsIGlzIHRlbXAsIGl0IG11c3QgYmVsb25nIHRvIHRoaXMgc2Vzc2lvbiAqLwor CWlmIChSRUxBVElPTl9JU19PVEhFUl9URU1QKHBhcmVudF9yZWwpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJj YW5ub3QgY3JlYXRlIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gb2YgYW5vdGhl ciBzZXNzaW9uIikpOworCisJLyogTG9vayB1cCBpbmhlcml0YW5jZSBhbmNlc3RvcnMgYW5kIGdl bmVyYXRlIHJlbGF0aW9uIHNjaGVtYS4gKi8KKwljb2xMaXN0ID0gZ2V0QXR0cmlidXRlc0xpc3Qo cGFyZW50X3JlbCk7CisKKwkvKiBDcmVhdGUgYSB0dXBsZSBkZXNjcmlwdG9yIGZyb20gdGhlIHJl bGF0aW9uIHNjaGVtYS4gKi8KKwlkZXNjcmlwdG9yID0gQnVpbGREZXNjRm9yUmVsYXRpb24oY29s TGlzdCk7CisKKwkvKiBMb29rIHVwIHRoZSBhY2Nlc3MgbWV0aG9kIGZvciBuZXcgcmVsYXRpb24u ICovCisJcmVsYW1JZCA9IChwYXJlbnRfcmVsLT5yZF9yZWwtPnJlbGFtICE9IEludmFsaWRPaWQp ID8gcGFyZW50X3JlbC0+cmRfcmVsLT5yZWxhbSA6IEhFQVBfVEFCTEVfQU1fT0lEOworCisJLyog TG9vayB1cCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHdlIGFyZSBzdXBwb3NlZCB0byBjcmVhdGUg dGhlIHJlbGF0aW9uLiAqLworCW5hbWVzcGFjZUlkID0KKwkJUmFuZ2VWYXJHZXRBbmRDaGVja0Ny ZWF0aW9uTmFtZXNwYWNlKG5ld1BhcnROYW1lLCBOb0xvY2ssICZleGlzdGluZ1JlbGlkKTsKKwlp ZiAoT2lkSXNWYWxpZChleGlzdGluZ1JlbGlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJj b2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNc IiBhbHJlYWR5IGV4aXN0cyIsIG5ld1BhcnROYW1lLT5yZWxuYW1lKSk7CisKKwkvKgorCSAqIFdl IGludGVuZGVkIHRvIGNyZWF0ZSB0aGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUgcGVyc2lzdGVu Y2UgYXMgdGhlCisJICogcGFyZW50IHRhYmxlLCBidXQgd2Ugc3RpbGwgbmVlZCB0byByZWNoZWNr IGJlY2F1c2UgdGhhdCBtaWdodCBiZQorCSAqIGFmZmVjdGVkIGJ5IHRoZSBzZWFyY2hfcGF0aC4g IElmIHRoZSBwYXJlbnQgaXMgcGVybWFuZW50LCBzbyBtdXN0IGJlCisJICogYWxsIG9mIGl0cyBw YXJ0aXRpb25zLgorCSAqLworCWlmIChwYXJlbnRfcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNl ICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKKwkJbmV3UGFydE5hbWUtPnJlbHBlcnNpc3RlbmNl ID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShF UlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUgYSB0 ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiBcIiVz XCIiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRfcmVsKSkpOworCisJ LyogUGVybWFuZW50IHJlbHMgY2Fubm90IGJlIHBhcnRpdGlvbnMgYmVsb25naW5nIHRvIHRlbXBv cmFyeSBwYXJlbnQgKi8KKwlpZiAobmV3UGFydE5hbWUtPnJlbHBlcnNpc3RlbmNlICE9IFJFTFBF UlNJU1RFTkNFX1RFTVAgJiYKKwkJcGFyZW50X3JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9 PSBSRUxQRVJTSVNURU5DRV9URU1QKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJS Q09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGEgcGVy bWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gXCIlc1wi IiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFyZW50X3JlbCkpKTsKKworCS8q IENyZWF0ZSB0aGUgcmVsYXRpb24uICovCisJbmV3UmVsSWQgPSBoZWFwX2NyZWF0ZV93aXRoX2Nh dGFsb2cobmV3UGFydE5hbWUtPnJlbG5hbWUsCisJCQkJCQkJCQkJbmFtZXNwYWNlSWQsCisJCQkJ CQkJCQkJcGFyZW50X3JlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlLAorCQkJCQkJCQkJCUludmFs aWRPaWQsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJ CQkJCQkJCW93bmVySWQsCisJCQkJCQkJCQkJcmVsYW1JZCwKKwkJCQkJCQkJCQlkZXNjcmlwdG9y LAorCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQlSRUxLSU5EX1JFTEFUSU9OLAorCQkJCQkJCQkJ CW5ld1BhcnROYW1lLT5yZWxwZXJzaXN0ZW5jZSwKKwkJCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJ CQlmYWxzZSwKKwkJCQkJCQkJCQlPTkNPTU1JVF9OT09QLAorCQkJCQkJCQkJCShEYXR1bSkgMCwK KwkJCQkJCQkJCQl0cnVlLAorCQkJCQkJCQkJCWFsbG93U3lzdGVtVGFibGVNb2RzLAorCQkJCQkJ CQkJCXRydWUsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlOVUxMKTsKKworCS8q CisJICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgbmV3bHkt Y3JlYXRlZCByZWxhdGlvbgorCSAqIHR1cGxlIHZpc2libGUgZm9yIG9wZW5pbmcuCisJICovCisJ Q29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCS8qCisJICogT3BlbiB0aGUgbmV3IHBhcnRp dGlvbiB3aXRoIG5vIGxvY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlCisJICogQWNjZXNzRXhj bHVzaXZlTG9jayBwbGFjZWQgdGhlcmUgYWZ0ZXIgY3JlYXRpb24uCisJICovCisJbmV3UmVsID0g dGFibGVfb3BlbihuZXdSZWxJZCwgTm9Mb2NrKTsKKworCS8qIEZpbmQgb3IgY3JlYXRlIHdvcmsg cXVldWUgZW50cnkgZm9yIG5ld2x5IGNyZWF0ZWQgdGFibGUuICovCisJbmV3X3BhcnRyZWxfdGFi ID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3UmVsKTsKKworCS8qIENyZWF0ZSBjb25zdHJh aW50cywgZGVmYXVsdCB2YWx1ZXMgYW5kIGdlbmVyYXRlZCB2YWx1ZXMgKi8KKwljcmVhdGVUYWJs ZUNvbnN0cmFpbnRzKHdxdWV1ZSwgbmV3X3BhcnRyZWxfdGFiLCBwYXJlbnRfcmVsLCBuZXdSZWwp OworCisJLyoKKwkgKiBOZWVkIHRvIGNhbGwgQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQsIHNvIGZy ZXNoIHJlbGNhY2hlIGVudHJ5IGhhdmUKKwkgKiBuZXdseSBpbnN0YWxsZWQgY29uc3RyYWludCBp bmZvLgorCSAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwlyZXR1cm4gbmV3UmVs OworfQorCisvKgorICogTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3M6IHNjYW4gcGFydGl0aW9ucyB0 byBiZSBtZXJnZWQgKG1lcmdpbmdQYXJ0aXRpb25zKQorICogb2YgdGhlIHBhcnRpdGlvbmVkIHRh YmxlIGFuZCBtb3ZlIHJvd3MgaW50byB0aGUgbmV3IHBhcnRpdGlvbgorICogKG5ld1BhcnRSZWwp LiBXZSBhbHNvIHZlcnRpZnkgY2hlY2sgY29uc3RyYWludHMgYWdhaW5zdCB0aGVzZSByb3dzLgor ICovCitzdGF0aWMgdm9pZAorTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MoTGlzdCAqKndxdWV1ZSwg TGlzdCAqbWVyZ2luZ1BhcnRpdGlvbnMsIFJlbGF0aW9uIG5ld1BhcnRSZWwpCit7CisJQ29tbWFu ZElkCW15Y2lkOworCUVTdGF0ZQkgICAqZXN0YXRlOworCUFsdGVyZWRUYWJsZUluZm8gKnRhYjsK KwlMaXN0Q2VsbCAgICpsdGFiOworCisJLyogVGhlIEZTTSBpcyBlbXB0eSwgc28gZG9uJ3QgYm90 aGVyIHVzaW5nIGl0LiAqLworCWludAkJCXRpX29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9G U007CisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8qIHN0YXRlIG9mIGJ1bGsgaW5zZXJ0cyBm b3IgcGFydGl0aW9uICovCisJVHVwbGVUYWJsZVNsb3QgKmRzdHNsb3Q7CisKKwkvKiBGaW5kIHRo ZSB3b3JrIHF1ZXVlIGVudHJ5IGZvciBuZXcgcGFydGl0aW9uIHRhYmxlOiBuZXdQYXJ0UmVsLiAq LworCXRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIG5ld1BhcnRSZWwpOworCisJLyogR2Vu ZXJhdGUgdGhlIGNvbnN0cmFpbnQgYW5kIGRlZmF1bHQgZXhlY3V0aW9uIHN0YXRlcy4gKi8KKwll c3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisKKwlidWlsZEV4cHJlc3Npb25FeGVjdXRp b25TdGF0ZXModGFiLCBuZXdQYXJ0UmVsLCBlc3RhdGUpOworCisJbXljaWQgPSBHZXRDdXJyZW50 Q29tbWFuZElkKHRydWUpOworCisJLyogUHJlcGFyZSBhIEJ1bGtJbnNlcnRTdGF0ZSBmb3IgdGFi bGVfdHVwbGVfaW5zZXJ0LiAqLworCWJpc3RhdGUgPSBHZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKwor CS8qIENyZWF0ZSBuZWNlc3NhcnkgdHVwbGUgc2xvdC4gKi8KKwlkc3RzbG90ID0gdGFibGVfc2xv dF9jcmVhdGUobmV3UGFydFJlbCwgTlVMTCk7CisKKwlmb3JlYWNoX29pZChtZXJnaW5nX29pZCwg bWVyZ2luZ1BhcnRpdGlvbnMpCisJeworCQlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJCVR1cGxl VGFibGVTbG90ICpzcmNzbG90OworCQlUdXBsZUNvbnZlcnNpb25NYXAgKnR1cGxlX21hcDsKKwkJ VGFibGVTY2FuRGVzYyBzY2FuOworCQlNZW1vcnlDb250ZXh0IG9sZEN4dDsKKwkJU25hcHNob3QJ c25hcHNob3Q7CisJCVJlbGF0aW9uCW1lcmdpbmdQYXJ0aXRpb247CisKKwkJZWNvbnRleHQgPSBH ZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisKKwkJLyoKKwkJICogUGFydGl0aW9uIGlz IGFscmVhZHkgbG9ja2VkIGluIHRoZSB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZQorCQkg KiBmdW5jdGlvbi4KKwkJICovCisJCW1lcmdpbmdQYXJ0aXRpb24gPSB0YWJsZV9vcGVuKG1lcmdp bmdfb2lkLCBOb0xvY2spOworCisJCS8qIENyZWF0ZSB0dXBsZSBzbG90IGZvciBuZXcgcGFydGl0 aW9uLiAqLworCQlzcmNzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUobWVyZ2luZ1BhcnRpdGlvbiwg TlVMTCk7CisKKwkJLyoKKwkJICogTWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMg b2YgbWVyZ2VkIHBhcnRpdGlvbiB0byBuZXcKKwkJICogcGFydGl0aW9uLgorCQkgKi8KKwkJdHVw bGVfbWFwID0gY29udmVydF90dXBsZXNfYnlfbmFtZShSZWxhdGlvbkdldERlc2NyKG1lcmdpbmdQ YXJ0aXRpb24pLAorCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0RGVzY3IobmV3UGFydFJlbCkpOwor CisJCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KKwkJc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG1l cmdpbmdQYXJ0aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMKTsKKworCQkvKgorCQkgKiBTd2l0Y2gg dG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQor CQkgKiBwcm9kdWNlZCwgc28gd2UgZG9uJ3QgbGVhayBtZW1vcnkuCisJCSAqLworCQlvbGRDeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkp OworCisJCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGly ZWN0aW9uLCBzcmNzbG90KSkKKwkJeworCQkJVHVwbGVUYWJsZVNsb3QgKmluc2VydHNsb3Q7CisK KwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJCWlmICh0dXBsZV9tYXApCisJCQl7CisJ CQkJLyogTmVlZCB0byB1c2UgbWFwIHRvIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCQlpbnNlcnRz bG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwgc3Jjc2xvdCwg ZHN0c2xvdCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJc2xvdF9nZXRhbGxhdHRycyhzcmNz bG90KTsKKworCQkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJCQlpbnNlcnRz bG90ID0gZHN0c2xvdDsKKworCQkJCUV4ZWNDbGVhclR1cGxlKGluc2VydHNsb3QpOworCisJCQkJ bWVtY3B5KGluc2VydHNsb3QtPnR0c192YWx1ZXMsIHNyY3Nsb3QtPnR0c192YWx1ZXMsCisJCQkJ CSAgIHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCQltZW1jcHkoaW5z ZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+dHRzX2lzbnVsbCwKKwkJCQkJICAgc2l6ZW9m KGJvb2wpICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisKKwkJCQlFeGVjU3RvcmVWaXJ0dWFsVHVw bGUoaW5zZXJ0c2xvdCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBDb25zdHJhaW50cyBhbmQgR0VO RVJBVEVEIGV4cHJlc3Npb25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUKKwkJCSAqIHRhYmxlb2lkIGNv bHVtbiwgc28gZmlsbCB0dHNfdGFibGVPaWQgd2l0aCB0aGUgZGVzaXJlZCB2YWx1ZS4KKwkJCSAq IChXZSBtdXN0IGRvIHRoaXMgZWFjaCB0aW1lLCBiZWNhdXNlIGl0IGdldHMgb3ZlcndyaXR0ZW4g d2l0aAorCQkJICogbmV3cmVsJ3MgT0lEIGR1cmluZyBzdG9yaW5nLikKKwkJCSAqLworCQkJaW5z ZXJ0c2xvdC0+dHRzX3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChuZXdQYXJ0UmVsKTsKKwor CQkJLyoKKwkJCSAqIE5vdywgZXZhbHVhdGUgYW55IGdlbmVyYXRlZCBleHByZXNzaW9ucyB3aG9z ZSBpbnB1dHMgY29tZSBmcm9tCisJCQkgKiB0aGUgbmV3IHR1cGxlLiAgV2UgYXNzdW1lIHRoZXNl IGNvbHVtbnMgd29uJ3QgcmVmZXJlbmNlIGVhY2gKKwkJCSAqIG90aGVyLCBzbyB0aGF0IHRoZXJl J3Mgbm8gb3JkZXJpbmcgZGVwZW5kZW5jeS4KKwkJCSAqLworCQkJZXZhbHVhdGVHZW5lcmF0ZWRF eHByZXNzaW9uc0FuZENoZWNrQ29uc3RyYWludHModGFiLCBuZXdQYXJ0UmVsLAorCQkJCQkJCQkJ CQkJCQkJaW5zZXJ0c2xvdCwgZWNvbnRleHQpOworCisJCQkvKiBXcml0ZSB0aGUgdHVwbGUgb3V0 IHRvIHRoZSBuZXcgcmVsYXRpb24uICovCisJCQl0YWJsZV90dXBsZV9pbnNlcnQobmV3UGFydFJl bCwgaW5zZXJ0c2xvdCwgbXljaWQsCisJCQkJCQkJICAgdGlfb3B0aW9ucywgYmlzdGF0ZSk7CisK KwkJCVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQpOworCQl9CisKKwkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZEN4dCk7CisJCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJCVVucmVnaXN0ZXJTbmFw c2hvdChzbmFwc2hvdCk7CisKKwkJaWYgKHR1cGxlX21hcCkKKwkJCWZyZWVfY29udmVyc2lvbl9t YXAodHVwbGVfbWFwKTsKKworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3Qp OworCQl0YWJsZV9jbG9zZShtZXJnaW5nUGFydGl0aW9uLCBOb0xvY2spOworCX0KKworCUZyZWVF eGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChkc3Rz bG90KTsKKwlGcmVlQnVsa0luc2VydFN0YXRlKGJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1 bGtfaW5zZXJ0KG5ld1BhcnRSZWwsIHRpX29wdGlvbnMpOworCisJLyoKKwkgKiBXZSBkb24ndCBu ZWVkIHByb2Nlc3MgdGhpcyBuZXdQYXJ0UmVsIHNpbmNlIHdlIGFscmVhZHkgcHJvY2Vzc2VkIGlu CisJICogaGVyZSwgc28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRSBxdWV1ZSBvZiBpdC4KKwkgKi8K Kwlmb3JlYWNoKGx0YWIsICp3cXVldWUpCisJeworCQl0YWIgPSAoQWx0ZXJlZFRhYmxlSW5mbyAq KSBsZmlyc3QobHRhYik7CisJCWlmICh0YWItPnJlbGlkID09IFJlbGF0aW9uR2V0UmVsaWQobmV3 UGFydFJlbCkpCisJCQkqd3F1ZXVlID0gbGlzdF9kZWxldGVfY2VsbCgqd3F1ZXVlLCBsdGFiKTsK Kwl9Cit9CisKKy8qCisgKiBkZXRhY2hQYXJ0aXRpb25UYWJsZTogZGV0YWNoIHBhcnRpdGlvbiAi Y2hpbGRfcmVsIiBmcm9tIHBhcnRpdGlvbmVkIHRhYmxlCisgKiAicGFyZW50X3JlbCIgd2l0aCBk ZWZhdWx0IHBhcnRpdGlvbiBpZGVudGlmaWVyICJkZWZhdWx0UGFydE9pZCIKKyAqLworc3RhdGlj IHZvaWQKK2RldGFjaFBhcnRpdGlvblRhYmxlKFJlbGF0aW9uIHBhcmVudF9yZWwsIFJlbGF0aW9u IGNoaWxkX3JlbCwgT2lkIGRlZmF1bHRQYXJ0T2lkKQoreworCS8qIFJlbW92ZSB0aGUgcGdfaW5o ZXJpdHMgcm93IGZpcnN0LiAqLworCVJlbW92ZUluaGVyaXRhbmNlKGNoaWxkX3JlbCwgcGFyZW50 X3JlbCwgZmFsc2UpOworCisJLyoKKwkgKiBEZXRhY2hpbmcgdGhlIHBhcnRpdGlvbiBtaWdodCBp bnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlk IHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCisJLyogRG8gdGhlIGZpbmFsIHBhcnQgb2YgZGV0YWNoaW5nLiAqLworCURldGFj aFBhcnRpdGlvbkZpbmFsaXplKHBhcmVudF9yZWwsIGNoaWxkX3JlbCwgZmFsc2UsIGRlZmF1bHRQ YXJ0T2lkKTsKKworCVBvcEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJM RSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyA8cGFydGl0aW9uLWxpc3Q+IElOVE8gPHBhcnRpdGlv bi1uYW1lPgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3 cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAorCQkJCQkgIFBhcnRp dGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVs YXRpb24JbmV3UGFydFJlbDsKKwlMaXN0CSAgICptZXJnaW5nUGFydGl0aW9ucyA9IE5JTDsKKwlP aWQJCQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlleGlzdGluZ1JlbGlkOworCU9pZAkJCW93bmVy SWQgPSBJbnZhbGlkT2lkOworCU9pZAkJCXNhdmVfdXNlcmlkOworCWludAkJCXNhdmVfc2VjX2Nv bnRleHQ7CisJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CisKKwkvKgorCSAqIENoZWNrIG93bmVyc2hp cCBvZiBtZXJnZWQgcGFydGl0aW9ucyDigJQgcGFydGl0aW9ucyB3aXRoIGRpZmZlcmVudAorCSAq IG93bmVycyBjYW5ub3QgYmUgbWVyZ2VkLiBBbHNvLCBjb2xsZWN0IHRoZSBPSURzIG9mIHRoZXNl IHBhcnRpdGlvbnMKKwkgKiBkdXJpbmcgdGhlIGNoZWNrLgorCSAqLworCWZvcmVhY2hfbm9kZShS YW5nZVZhciwgbmFtZSwgY21kLT5wYXJ0bGlzdCkKKwl7CisJCVJlbGF0aW9uCW1lcmdpbmdQYXJ0 aXRpb247CisKKwkJLyoKKwkJICogV2UgYXJlIGdvaW5nIHRvIGRldGFjaCBhbmQgcmVtb3ZlIHRo aXMgcGFydGl0aW9uLiAgV2UgYWxyZWFkeSB0b29rCisJCSAqIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sg bG9jayBvbiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSwgc28gaGVyZSwKKwkJICogTm9M b2NrIGlzIGZpbmUuCisJCSAqLworCQltZXJnaW5nUGFydGl0aW9uID0gdGFibGVfb3BlbnJ2X2V4 dGVuZGVkKG5hbWUsIE5vTG9jaywgZmFsc2UpOworCQlBc3NlcnQoQ2hlY2tSZWxhdGlvbkxvY2tl ZEJ5TWUobWVyZ2luZ1BhcnRpdGlvbiwgQWNjZXNzRXhjbHVzaXZlTG9jaywgZmFsc2UpKTsKKwor CQlpZiAoT2lkSXNWYWxpZChvd25lcklkKSkKKwkJeworCQkJLyogRG8gdGhlIHBhcnRpdGlvbnMg YmVpbmcgbWVyZ2VkIGhhdmUgZGlmZmVyZW50IG93bmVycz8gKi8KKwkJCWlmIChvd25lcklkICE9 IG1lcmdpbmdQYXJ0aXRpb24tPnJkX3JlbC0+cmVsb3duZXIpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJy bXNnKCJwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRpZmZlcmVudCBvd25lcnMiKSk7CisJ CX0KKwkJZWxzZQorCQkJb3duZXJJZCA9IG1lcmdpbmdQYXJ0aXRpb24tPnJkX3JlbC0+cmVsb3du ZXI7CisKKwkJLyogU3RvcmUgYSBuZXh0IG1lcmdpbmcgcGFydGl0aW9uIGludG8gdGhlIGxpc3Qu ICovCisJCW1lcmdpbmdQYXJ0aXRpb25zID0gbGFwcGVuZF9vaWQobWVyZ2luZ1BhcnRpdGlvbnMs CisJCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxpZChtZXJnaW5nUGFydGl0aW9uKSk7CisKKwkJdGFi bGVfY2xvc2UobWVyZ2luZ1BhcnRpdGlvbiwgTm9Mb2NrKTsKKwl9CisKKwkvKiBMb29rIHVwIGV4 aXN0aW5nIHJlbGF0aW9uIGJ5IG5ldyBwYXJ0aXRpb24gbmFtZS4gKi8KKwlSYW5nZVZhckdldEFu ZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UoY21kLT5uYW1lLCBOb0xvY2ssICZleGlzdGluZ1JlbGlk KTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhpcyBuYW1lIGlzIGFscmVhZHkgdGFrZW4uICBUaGlz IGhlbHBzIHVzIHRvIGRldGVjdCB0aGUKKwkgKiBzaXR1YXRpb24gd2hlbiBvbmUgb2YgdGhlIG1l cmdpbmcgcGFydGl0aW9ucyBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUKKwkgKiBuZXcgcGFydGl0 aW9uLiAgT3RoZXJ3aXNlLCB0aGlzIHdvdWxkIGZhaWwgbGF0ZXIgb24gYW55d2F5IGJ1dCBjYXRj aGluZworCSAqIHRoaXMgaGVyZSBhbGxvd3MgdXMgdG8gZW1pdCBhIG5pY2VyIGVycm9yIG1lc3Nh Z2UuCisJICovCisJaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJeworCQlPaWQJCQlu ZXdQYXJ0aXRpb25PaWQgPSBJbnZhbGlkT2lkOworCisJCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0 aXRpb25PaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQorCQl7CisJCQlpZiAobWVyZ2luZ1BhcnRpdGlv bk9pZCA9PSBleGlzdGluZ1JlbGlkKQorCQkJeworCQkJCW5ld1BhcnRpdGlvbk9pZCA9IG1lcmdp bmdQYXJ0aXRpb25PaWQ7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoT2lkSXNWYWxp ZChuZXdQYXJ0aXRpb25PaWQpKQorCQl7CisJCQkvKgorCQkJICogVGhlIG5ldyBwYXJ0aXRpb24g aGFzIHRoZSBzYW1lIG5hbWUgYXMgb25lIG9mIG1lcmdpbmcKKwkJCSAqIHBhcnRpdGlvbnMuCisJ CQkgKi8KKwkJCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5dOworCisJCQkvKiBHZW5lcmF0 ZSB0ZW1wb3JhcnkgbmFtZS4gKi8KKwkJCXNwcmludGYodG1wUmVsTmFtZSwgIm1lcmdlLSV1LSVY LXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9jUGlkKTsKKworCQkJLyoKKwkJCSAq IFJlbmFtZSB0aGUgZXhpc3RpbmcgcGFydGl0aW9uIHdpdGggYSB0ZW1wb3JhcnkgbmFtZSwgbGVh dmluZyBpdAorCQkJICogZnJlZSBmb3IgdGhlIG5ldyBwYXJ0aXRpb24uICBXZSBkb24ndCBuZWVk IHRvIGNhcmUgYWJvdXQgdGhpcworCQkJICogaW4gdGhlIGZ1dHVyZSBiZWNhdXNlIHdlJ3JlIGdv aW5nIHRvIGV2ZW50dWFsbHkgZHJvcCB0aGUKKwkJCSAqIGV4aXN0aW5nIHBhcnRpdGlvbiBhbnl3 YXkuCisJCQkgKi8KKwkJCVJlbmFtZVJlbGF0aW9uSW50ZXJuYWwobmV3UGFydGl0aW9uT2lkLCB0 bXBSZWxOYW1lLCB0cnVlLCBmYWxzZSk7CisKKwkJCS8qCisJCQkgKiBXZSBtdXN0IGJ1bXAgdGhl IGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXcgcGFydGl0aW9uCisJCQkgKiB0dXBsZSB2 aXNpYmxlIGZvciByZW5hbWUuCisJCQkgKi8KKwkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7 CisJCX0KKwkJZWxzZQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFk eSBleGlzdHMiLCBjbWQtPm5hbWUtPnJlbG5hbWUpKTsKKwkJfQorCX0KKworCWRlZmF1bHRQYXJ0 T2lkID0KKwkJZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0aXRp b25EZXNjKHJlbCwgdHJ1ZSkpOworCisJLyogRGV0YWNoIGFsbCBtZXJnZWQgcGFydGl0aW9ucyAq LworCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQYXJ0aXRpb25zKQor CXsKKwkJUmVsYXRpb24JY2hpbGRfcmVsOworCisJCWNoaWxkX3JlbCA9IHRhYmxlX29wZW4obWVy Z2luZ1BhcnRpdGlvbk9pZCwgTm9Mb2NrKTsKKworCQlkZXRhY2hQYXJ0aXRpb25UYWJsZShyZWws IGNoaWxkX3JlbCwgZGVmYXVsdFBhcnRPaWQpOworCisJCXRhYmxlX2Nsb3NlKGNoaWxkX3JlbCwg Tm9Mb2NrKTsKKwl9CisKKwkvKgorCSAqIFBlcmZvcm0gYSBwcmVsaW1pbmFyeSBjaGVjayB0byBk ZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG8gZHJvcCBhbGwKKwkgKiBtZXJnaW5nIHBhcnRp dGlvbnMgYmVmb3JlIHdlIGFjdHVhbGx5IGRvIHNvIGxhdGVyLiBBZnRlciBtZXJnaW5nIHJvd3MK KwkgKiBpbnRvIHRoZSBuZXcgcGFydGl0aW9ucyB2aWEgTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3Ms IGFsbCBvbGQgcGFydGl0aW9ucworCSAqIG5lZWQgYmUgZHJvcHBlZC4gSG93ZXZlciwgc2luY2Ug dGhlIGRyb3AgYmVoYXZpb3IgaXMgRFJPUF9SRVNUUklDVCBhbmQKKwkgKiB0aGUgbWVyZ2UgcHJv Y2VzcyAoTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MpIGNhbiBiZSB0aW1lLWNvbnN1bWluZywKKwkg KiBwZXJmb3JtaW5nIGFuIGVhcmx5IGNoZWNrIG9uIHRoZSBkcm9wIGVsaWdpYmlsaXR5IG9mIG9s ZCBwYXJ0aXRpb25zIGlzCisJICogcHJlZmVyYWJsZS4KKwkgKi8KKwlmb3JlYWNoX29pZChtZXJn aW5nUGFydGl0aW9uT2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7CisJCU9iamVjdEFkZHJlc3Mg b2JqZWN0OworCisJCS8qIEdldCBvaWQgb2YgdGhlIGxhdGVyIHRvIGJlIGRyb3BwZWQgcmVsYXRp b24gKi8KKwkJb2JqZWN0Lm9iamVjdElkID0gbWVyZ2luZ1BhcnRpdGlvbk9pZDsKKwkJb2JqZWN0 LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7 CisKKwkJcGVyZm9ybURlbGV0aW9uQ2hlY2soJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgUEVSRk9S TV9ERUxFVElPTl9JTlRFUk5BTCk7CisJfQorCisJLyogQ3JlYXRlIHRhYmxlIGZvciBuZXcgcGFy dGl0aW9uLCB1c2UgcGFydGl0aW9uZWQgdGFibGUgYXMgbW9kZWwuICovCisJQXNzZXJ0KE9pZElz VmFsaWQob3duZXJJZCkpOworCW5ld1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRpb25UYWJsZSh3cXVl dWUsIGNtZC0+bmFtZSwgcmVsLCBvd25lcklkKTsKKworCS8qCisJICogU3dpdGNoIHRvIHRoZSB0 YWJsZSBvd25lcidzIHVzZXJpZCwgc28gdGhhdCBhbnkgaW5kZXggZnVuY3Rpb25zIGFyZSBydW4K KwkgKiBhcyB0aGF0IHVzZXIuICBBbHNvIGxvY2sgZG93biBzZWN1cml0eS1yZXN0cmljdGVkIG9w ZXJhdGlvbnMgYW5kCisJICogYXJyYW5nZSB0byBtYWtlIEdVQyB2YXJpYWJsZSBjaGFuZ2VzIGxv Y2FsIHRvIHRoaXMgY29tbWFuZC4KKwkgKgorCSAqIE5lZWQgdG8gZG8gaXQgYWZ0ZXIgZGV0ZXJt aW5lIG5hbWVzcGFjZSBpbiBjcmVhdGVQYXJ0aXRpb25UYWJsZSBjYWxsLgorCSAqLworCUdldFVz ZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJU2V0 VXNlcklkQW5kU2VjQ29udGV4dChvd25lcklkLAorCQkJCQkJICAgc2F2ZV9zZWNfY29udGV4dCB8 IFNFQ1VSSVRZX1JFU1RSSUNURURfT1BFUkFUSU9OKTsKKwlzYXZlX25lc3RsZXZlbCA9IE5ld0dV Q05lc3RMZXZlbCgpOworCVJlc3RyaWN0U2VhcmNoUGF0aCgpOworCisJLyogQ29weSBkYXRhIGZy b20gbWVyZ2VkIHBhcnRpdGlvbnMgdG8gbmV3IHBhcnRpdGlvbi4gKi8KKwlNZXJnZVBhcnRpdGlv bnNNb3ZlUm93cyh3cXVldWUsIG1lcmdpbmdQYXJ0aXRpb25zLCBuZXdQYXJ0UmVsKTsKKworCS8q IERyb3AgdGhlIGN1cnJlbnQgcGFydGl0aW9ucyBiZWZvcmUgYXR0YWNoaW5nIHRoZSBuZXcgb25l LiAqLworCWZvcmVhY2hfb2lkKG1lcmdpbmdQYXJ0aXRpb25PaWQsIG1lcmdpbmdQYXJ0aXRpb25z KQorCXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJb2JqZWN0Lm9iamVjdElkID0gbWVy Z2luZ1BhcnRpdGlvbk9pZDsKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7 CisJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisKKwkJcGVyZm9ybURlbGV0aW9uKCZvYmplY3Qs IERST1BfUkVTVFJJQ1QsIDApOworCX0KKworCWxpc3RfZnJlZShtZXJnaW5nUGFydGl0aW9ucyk7 CisKKwkvKgorCSAqIEF0dGFjaCBhIG5ldyBwYXJ0aXRpb24gdG8gdGhlIHBhcnRpdGlvbmVkIHRh YmxlLiB3cXVldWUgPSBOVUxMOgorCSAqIHZlcmlmaWNhdGlvbiBmb3IgZWFjaCBjbG9uZWQgY29u c3RyYWludCBpcyBub3QgbmVlZGVkLgorCSAqLworCWF0dGFjaFBhcnRpdGlvblRhYmxlKE5VTEws IHJlbCwgbmV3UGFydFJlbCwgY21kLT5ib3VuZCk7CisKKwkvKiBLZWVwIHRoZSBsb2NrIHVudGls IGNvbW1pdC4gKi8KKwl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOworCisJLyogUm9s bCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMuICovCisJ QXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CisKKwkvKiBSZXN0b3JlIHVzZXJp ZCBhbmQgc2VjdXJpdHkgY29udGV4dC4gKi8KKwlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVf dXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDlmZDQ4YWNiMWY4 Li5hNDZkNmM2ZWE2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC03NTUsNyArNzU1LDcgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAlPUkRFUiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRFUl9QCiAJ T1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAotCVBBUkFMTEVM IFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRCBQQVRI CisJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVJUSVRJT05T IFBBU1NJTkcgUEFTU1dPUkQgUEFUSAogCVBFUklPRCBQTEFDSU5HIFBMQU4gUExBTlMgUE9MSUNZ CiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVE IFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVS RVMgUFJPR1JBTSBQVUJMSUNBVElPTgpAQCAtMjM2Nyw2ICsyMzY3LDcgQEAgcGFydGl0aW9uX2Nt ZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1l ID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSAkNDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsK IAkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNt ZDsKIApAQCAtMjM4MSw2ICsyMzgyLDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlw ZSA9IEFUX0RldGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+ Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTklMOwogCQkJCQljbWQtPmNvbmN1 cnJlbnQgPSAkNDsKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0yMzk0LDYgKzIz OTYsMjEgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0RldGFjaFBhcnRp dGlvbkZpbmFsaXplOwogCQkJCQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5V TEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBOSUw7CisJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZh bHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5vZGUgKikgbjsK KwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoKSBJTlRP IDxwYXJ0aXRpb25fbmFtZT4gKi8KKwkJCXwgTUVSR0UgUEFSVElUSU9OUyAnKCcgcXVhbGlmaWVk X25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZpZWRfbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJUYWJs ZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQlQYXJ0aXRpb25DbWQgKmNt ZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisKKwkJCQkJbi0+c3VidHlwZSA9IEFUX01lcmdl UGFydGl0aW9uczsKKwkJCQkJY21kLT5uYW1lID0gJDc7CisJCQkJCWNtZC0+Ym91bmQgPSBOVUxM OworCQkJCQljbWQtPnBhcnRsaXN0ID0gJDQ7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNl OwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAg LTI0MTAsNiArMjQyNyw3IEBAIGluZGV4X3BhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUg PSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJv dW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5JTDsKIAkJCQkJY21kLT5jb25jdXJy ZW50ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIApAQCAtMTc5MzAsNiAr MTc5NDgsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBUlNFUgogCQkJfCBQQVJUSUFM CiAJCQl8IFBBUlRJVElPTgorCQkJfCBQQVJUSVRJT05TCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFT U1dPUkQKIAkJCXwgUEFUSApAQCAtMTg1NTcsNiArMTg1NzYsNyBAQCBiYXJlX2xhYmVsX2tleXdv cmQ6CiAJCQl8IFBBUlNFUgogCQkJfCBQQVJUSUFMCiAJCQl8IFBBUlRJVElPTgorCQkJfCBQQVJU SVRJT05TCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUEFUSApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMKaW5kZXggZTk2YjM4YTU5ZDUuLjZiM2Q2ODJmMDZmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjYXRh bG9nL2hlYXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BhcnRpdGlvbi5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgpAQCAtNTgsNiArNTksOCBAQAogI2luY2x1 ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3V0aWxjbWQu aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCisjaW5jbHVkZSAicGFydGl0aW9uaW5nL3Bh cnRkZXNjLmgiCisjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCIKICNpbmNsdWRl ICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC0zNTA5LDYgKzM1MTIsMTM1IEBAIHRyYW5zZm9ybVJ1 bGVTdG10KFJ1bGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIH0KIAogCisv KgorICogY2hlY2tQYXJ0aXRpb24KKyAqIENoZWNrIHdoZXRoZXIgcGFydFJlbE9pZCBpcyBhIGxl YWYgcGFydGl0aW9uIG9mIHRoZSBwYXJlbnQgdGFibGUgKHJlbCkuCisgKi8KK3N0YXRpYyB2b2lk CitjaGVja1BhcnRpdGlvbihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0UmVsT2lkKQoreworCVJlbGF0 aW9uCXBhcnRSZWw7CisKKwlwYXJ0UmVsID0gdGFibGVfb3BlbihwYXJ0UmVsT2lkLCBOb0xvY2sp OworCisJaWYgKHBhcnRSZWwtPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks CisJCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUiLCBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShwYXJ0UmVsKSksCisJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJ VElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25z IikpOworCisJaWYgKCFwYXJ0UmVsLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJy bXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIFwiJXNc IiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0Ug UEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRp dGlvbnMiKSk7CisKKwlpZiAoZ2V0X3BhcnRpdGlvbl9wYXJlbnQocGFydFJlbE9pZCwgZmFsc2Up ICE9IFJlbGF0aW9uR2V0UmVsaWQocmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2Rl KEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKKwkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBp cyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJICAgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocGFydFJlbCksIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAor CQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1l cmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKKworCXRhYmxlX2Ns b3NlKHBhcnRSZWwsIE5vTG9jayk7Cit9CisKKy8qCisgKiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRG b3JNZXJnZQorICoJCUFuYWx5emUgdGhlIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05T IGNvbW1hbmQKKyAqCisgKiBEb2VzIHNpbXBsZSBjaGVja3MgZm9yIG1lcmdlZCBwYXJ0aXRpb25z LiBDYWxjdWxhdGVzIGJvdW5kIG9mIHJlc3VsdGluZworICogcGFydGl0aW9uLgorICovCitzdGF0 aWMgdm9pZAordHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoQ3JlYXRlU3RtdENvbnRleHQg KmN4dCwgUGFydGl0aW9uQ21kICpwYXJ0Y21kKQoreworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOwor CU9pZAkJCXBhcnRPaWQ7CisJUmVsYXRpb24JcGFyZW50ID0gY3h0LT5yZWw7CisJUGFydGl0aW9u S2V5IGtleTsKKwljaGFyCQlzdHJhdGVneTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyLAorCQkJICAg Kmxpc3RwdHIyOworCWJvb2wJCWlzRGVmYXVsdFBhcnQgPSBmYWxzZTsKKwlMaXN0CSAgICpwYXJ0 T2lkcyA9IE5JTDsKKworCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJ c3RyYXRlZ3kgPSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtleSk7CisKKwlpZiAoc3RyYXRlZ3kg PT0gUEFSVElUSU9OX1NUUkFURUdZX0hBU0gpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJwYXJ0aXRpb24g b2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUgbWVyZ2VkIikpOworCisJLyogRG9l cyBwYXJ0aXRpb25lZCB0YWJsZSAocGFyZW50KSBoYXZlIGEgZGVmYXVsdCBwYXJ0aXRpb24/ICov CisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlv bkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCB0cnVlKSk7CisKKwlmb3JlYWNoKGxpc3RwdHIsIHBh cnRjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBs Zmlyc3QobGlzdHB0cik7CisKKwkJLyogUGFydGl0aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2 ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZvcl9lYWNoX2NlbGwobGlzdHB0cjIsIHBhcnRjbWQt PnBhcnRsaXN0LCBsbmV4dChwYXJ0Y21kLT5wYXJ0bGlzdCwgbGlzdHB0cikpCisJCXsKKwkJCVJh bmdlVmFyICAgKm5hbWUyID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyMik7CisKKwkJCWlm IChlcXVhbChuYW1lLCBuYW1lMikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUo RVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJwYXJ0aXRpb24gd2l0aCBu YW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBuYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbmFtZTItPmxvY2F0aW9uKSk7CisJCX0KKworCQkv KgorCQkgKiBTZWFyY2ggREVGQVVMVCBwYXJ0aXRpb24gaW4gdGhlIGxpc3QuIE9wZW4gYW5kIGxv Y2sgcGFydGl0aW9ucworCQkgKiBiZWZvcmUgY2FsY3VsYXRpbmcgdGhlIGJvdW5kYXJ5IGZvciBy ZXN1bHRpbmcgcGFydGl0aW9uLCB3ZSBhbHNvCisJCSAqIGNoZWNrIGZvciBvd25lcnNoaXAgYWxv bmcgdGhlIHdheS4gIFdlIG5lZWQgdG8gdXNlCisJCSAqIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgaGVy ZSwgYmVjYXVzZSB0aGVzZSBtZXJnZWQgcGFydGl0aW9ucyB3aWxsIGJlCisJCSAqIGRldGFjaGVk IHRoZW4gZHJvcHBlZCBpbiBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMuCisJCSAqLworCQlwYXJ0T2lk ID0gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKG5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIDAs CisJCQkJCQkJCQkJICAgUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlvbiwKKwkJCQkJCQkJCQkg ICBOVUxMKTsKKwkJLyogSXMgY3VycmVudCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8g Ki8KKwkJaWYgKHBhcnRPaWQgPT0gZGVmYXVsdFBhcnRPaWQpCisJCQlpc0RlZmF1bHRQYXJ0ID0g dHJ1ZTsKKworCQkvKgorCQkgKiBFeHRlbmRlZCBjaGVjayBiZWNhdXNlIHRoZSBzYW1lIHBhcnRp dGlvbiBjYW4gaGF2ZSBkaWZmZXJlbnQgbmFtZXMKKwkJICogKGZvciBleGFtcGxlLCAicGFydF9u YW1lIiBhbmQgInB1YmxpYy5wYXJ0X25hbWUiKS4KKwkJICovCisJCWZvcmVhY2gobGlzdHB0cjIs IHBhcnRPaWRzKQorCQl7CisJCQlPaWQJCQljdXJPaWQgPSBsZmlyc3Rfb2lkKGxpc3RwdHIyKTsK KworCQkJaWYgKGN1ck9pZCA9PSBwYXJ0T2lkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQll cnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9u IHdpdGggbmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxvY2F0aW9uKSk7CisJCX0K KworCQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOworCisJCXBhcnRPaWRzID0gbGFw cGVuZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOworCX0KKworCS8qIEFsbG9jYXRlIGJvdW5kIG9m IHJlc3VsdGluZyBwYXJ0aXRpb24uICovCisJQXNzZXJ0KHBhcnRjbWQtPmJvdW5kID09IE5VTEwp OworCXBhcnRjbWQtPmJvdW5kID0gbWFrZU5vZGUoUGFydGl0aW9uQm91bmRTcGVjKTsKKworCS8q IEZpbGwgcGFydGl0aW9uIGJvdW5kLiAqLworCXBhcnRjbWQtPmJvdW5kLT5zdHJhdGVneSA9IHN0 cmF0ZWd5OworCXBhcnRjbWQtPmJvdW5kLT5sb2NhdGlvbiA9IC0xOworCXBhcnRjbWQtPmJvdW5k LT5pc19kZWZhdWx0ID0gaXNEZWZhdWx0UGFydDsKKwlpZiAoIWlzRGVmYXVsdFBhcnQpCisJCWNh bGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKHBhcmVudCwgcGFydGNtZC0+cGFydGxp c3QsCisJCQkJCQkJCQkJCXBhcnRPaWRzLCBwYXJ0Y21kLT5ib3VuZCwKKwkJCQkJCQkJCQkJY3h0 LT5wc3RhdGUpOworfQorCiAvKgogICogdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQgLQogICoJCXBh cnNlIGFuYWx5c2lzIGZvciBBTFRFUiBUQUJMRQpAQCAtMzc4Niw2ICszOTE4LDIwIEBAIHRyYW5z Zm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJ bmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBB VF9NZXJnZVBhcnRpdGlvbnM6CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAo UGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChwYXJ0Y21k LT5wYXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShF UlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQllcnJtc2coImxpc3Qg b2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBh cnRpdGlvbnMiKSk7CisKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoJmN4dCwg cGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CisJCQkJCWJy ZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAogCQkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5n L3BhcnRib3VuZHMuYwppbmRleCA4MjJjZjRlYzQ1MS4uNjBjMTAzNmNlODggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtNDk3OCwzICs0OTc4LDE5OSBAQCBzYXRpc2Zp ZXNfaGFzaF9wYXJ0aXRpb24oUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9CT09MKHJv d0hhc2ggJSBtb2R1bHVzID09IHJlbWFpbmRlcik7CiB9CisKKy8qCisgKiBjaGVja190d29fcGFy dGl0aW9uc19ib3VuZHNfcmFuZ2UKKyAqCisgKiAoZnVuY3Rpb24gZm9yIEJZIFJBTkdFIHBhcnRp dGlvbmluZykKKyAqCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjYWxjdWxhdGVf cGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZSgpLgorICogVGhpcyBmdW5jdGlvbiBjb21wYXJlcyB1 cHBlciBib3VuZCBvZiBmaXJzdF9ib3VuZCBhbmQgbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9i b3VuZC4gVGhlc2UgYm91bmRzIHNob3VsZCBiZSBlcXVhbC4KKyAqCisgKiBwYXJlbnQ6CQkJcGFy dGl0aW9uZWQgdGFibGUKKyAqIGZpcnN0X25hbWU6CQluYW1lIG9mIGZpcnN0IHBhcnRpdGlvbgor ICogZmlyc3RfYm91bmQ6CQlib3VuZCBvZiBmaXJzdCBwYXJ0aXRpb24KKyAqIHNlY29uZF9uYW1l OgkJbmFtZSBvZiBzZWNvbmQgcGFydGl0aW9uCisgKiBzZWNvbmRfYm91bmQ6CWJvdW5kIG9mIHNl Y29uZCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0 IGZvciBkZXRlcm1pbmluZyBlcnJvciBwb3NpdGlvbgorICovCitzdGF0aWMgdm9pZAorY2hlY2tf dHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICBS YW5nZVZhciAqZmlyc3RfbmFtZSwKKwkJCQkJCQkJICBQYXJ0aXRpb25Cb3VuZFNwZWMgKmZpcnN0 X2JvdW5kLAorCQkJCQkJCQkgIFJhbmdlVmFyICpzZWNvbmRfbmFtZSwKKwkJCQkJCQkJICBQYXJ0 aXRpb25Cb3VuZFNwZWMgKnNlY29uZF9ib3VuZCwKKwkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3Rh dGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVu dCk7CisJUGFydGl0aW9uUmFuZ2VCb3VuZCAqZmlyc3RfdXBwZXI7CisJUGFydGl0aW9uUmFuZ2VC b3VuZCAqc2Vjb25kX2xvd2VyOworCWludAkJCWNtcHZhbDsKKworCUFzc2VydChrZXktPnN0cmF0 ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSk7CisKKwlmaXJzdF91cHBlciA9IG1ha2Vf b25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgZmlyc3RfYm91bmQtPnVwcGVyZGF0dW1zLCBm YWxzZSk7CisJc2Vjb25kX2xvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0x LCBzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKworCS8qCisJICogbG93ZXIxPWZh bHNlICh0aGUgc2Vjb25kIHRvIGxhc3QgYXJndW1lbnQpIGZvciBjb3JyZWN0IGNvbXBhcmlzb24g b2YKKwkgKiBsb3dlciBhbmQgdXBwZXIgYm91bmRzLgorCSAqLworCWNtcHZhbCA9IHBhcnRpdGlv bl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMs CisJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkgIHNlY29uZF9sb3dlci0+ ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtpbmQsCisJCQkJCQkJCSAgZmFsc2UsIGZpcnN0X3VwcGVy KTsKKwlpZiAoY21wdmFsKQorCXsKKwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0gPSBsaW5p dGlhbChzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1zKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2co ImNhbiBub3QgbWVyZ2UgcGFydGl0aW9uIFwiJXNcIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiBc IiVzXCIiLAorCQkJCQkgICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFt ZSksCisJCQkJZXJyZGV0YWlsKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGlzIG5v dCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkg IHNlY29uZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKKwkJCQllcnJoaW50 KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9u IGJvdW5kcyB0byBiZSBhZGphY2VudC4iKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBkYXR1bS0+bG9jYXRpb24pKTsKKwl9Cit9CisKKy8qCisgKiBnZXRfcGFydGl0aW9uX2JvdW5k X3NwZWMKKyAqCisgKiBSZXR1cm5zIHRoZSBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHRoZSBwYXJ0 aXRpb24gd2l0aCB0aGUgZ2l2ZW4gT0lEIHBhcnRPaWQuCisgKi8KK3N0YXRpYyBQYXJ0aXRpb25C b3VuZFNwZWMgKgorZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKE9pZCBwYXJ0T2lkKQoreworCUhl YXBUdXBsZQl0dXBsZTsKKwlEYXR1bQkJZGF0dW07CisJYm9vbAkJaXNudWxsOworCVBhcnRpdGlv bkJvdW5kU3BlYyAqYm91bmRzcGVjID0gTlVMTDsKKworCS8qIFRyeSBmZXRjaGluZyB0aGUgdHVw bGUgZnJvbSB0aGUgY2F0Y2FjaGUsIGZvciBzcGVlZC4gKi8KKwl0dXBsZSA9IFNlYXJjaFN5c0Nh Y2hlMShSRUxPSUQsIHBhcnRPaWQpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHBhcnRP aWQpOworCisJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUkVMT0lELCB0dXBsZSwKKwkJCQkJCQlB bnVtX3BnX2NsYXNzX3JlbHBhcnRib3VuZCwKKwkJCQkJCQkmaXNudWxsKTsKKwlpZiAoaXNudWxs KQorCQllbG9nKEVSUk9SLCAicGFydGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiAldSBpcyBudWxs IiwKKwkJCSBwYXJ0T2lkKTsKKworCWJvdW5kc3BlYyA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1H ZXRDU3RyaW5nKGRhdHVtKSk7CisKKwlpZiAoIUlzQShib3VuZHNwZWMsIFBhcnRpdGlvbkJvdW5k U3BlYykpCisJCWVsb2coRVJST1IsICJleHBlY3RlZCBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9yIHJl bGF0aW9uICV1IiwKKwkJCSBwYXJ0T2lkKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJ cmV0dXJuIGJvdW5kc3BlYzsKK30KKworLyoKKyAqIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRf Zm9yX21lcmdlCisgKgorICogQ2FsY3VsYXRlcyB0aGUgYm91bmQgb2YgbWVyZ2VkIHBhcnRpdGlv biAic3BlYyIgYnkgdXNpbmcgdGhlIGJvdW5kcyBvZgorICogcGFydGl0aW9ucyB0byBiZSBtZXJn ZWQuCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVkIHRhYmxlCisgKiBwYXJ0TmFtZXM6CQlu YW1lcyBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZAorICogcGFydE9pZHM6CQlPaWRzIG9mIHBh cnRpdGlvbnMgdG8gYmUgbWVyZ2VkCisgKiBzcGVjIChvdXQpOgkJYm91bmRzIHNwZWNpZmljYXRp b24gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNl U3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLwordm9pZAorY2Fs Y3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJ CQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCisJCQkJCQkJCQlQ YXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQlQYXJzZVN0YXRlICpwc3RhdGUpCit7 CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJ UGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsKKworCUFzc2VydCghc3BlYy0+aXNfZGVmYXVsdCk7 CisKKwlzd2l0Y2ggKGtleS0+c3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVH WV9SQU5HRToKKwkJCXsKKwkJCQlpbnQJCQlpOworCQkJCVBhcnRpdGlvblJhbmdlQm91bmQgKips b3dlcl9ib3VuZHM7CisJCQkJaW50CQkJbnBhcnRzID0gbGlzdF9sZW5ndGgocGFydE9pZHMpOwor CQkJCUxpc3QJICAgKmJvdW5kcyA9IE5JTDsKKworCQkJCWxvd2VyX2JvdW5kcyA9IChQYXJ0aXRp b25SYW5nZUJvdW5kICoqKQorCQkJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQYXJ0aXRpb25S YW5nZUJvdW5kICopKTsKKworCQkJCS8qCisJCQkJICogQ3JlYXRlIGFycmF5IG9mIGxvd2VyIGJv dW5kcyBhbmQgbGlzdCBvZgorCQkJCSAqIFBhcnRpdGlvbkJvdW5kU3BlYy4KKwkJCQkgKi8KKwkJ CQlmb3JlYWNoX29pZChwYXJ0b2lkLCBwYXJ0T2lkcykKKwkJCQl7CisJCQkJCWJvdW5kID0gZ2V0 X3BhcnRpdGlvbl9ib3VuZF9zcGVjKHBhcnRvaWQpOworCQkJCQlpID0gZm9yZWFjaF9jdXJyZW50 X2luZGV4KHBhcnRvaWQpOworCisJCQkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRp dGlvbl9yYm91bmQoa2V5LCBpLCBib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOworCQkJCQlib3Vu ZHMgPSBsYXBwZW5kKGJvdW5kcywgYm91bmQpOworCQkJCX0KKworCQkJCS8qIFNvcnQgYXJyYXkg b2YgbG93ZXIgYm91bmRzLiAqLworCQkJCXFzb3J0X2FyZyhsb3dlcl9ib3VuZHMsIG5wYXJ0cywg c2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKiksCisJCQkJCQkgIHFzb3J0X3BhcnRpdGlvbl9y Ym91bmRfY21wLCBrZXkpOworCisJCQkJLyogUmFuZ2VzIG9mIHBhcnRpdGlvbnMgc2hvdWxkIGJl IGFkamFjZW50LiAqLworCQkJCWZvciAoaSA9IDE7IGkgPCBucGFydHM7IGkrKykKKwkJCQl7CisJ CQkJCWludAkJCWluZGV4ID0gbG93ZXJfYm91bmRzW2ldLT5pbmRleDsKKwkJCQkJaW50CQkJcHJl dl9pbmRleCA9IGxvd2VyX2JvdW5kc1tpIC0gMV0tPmluZGV4OworCisJCQkJCWNoZWNrX3R3b19w YXJ0aXRpb25zX2JvdW5kc19yYW5nZShwYXJlbnQsCisJCQkJCQkJCQkJCQkJICAoUmFuZ2VWYXIg KikgbGlzdF9udGgocGFydE5hbWVzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChQYXJ0 aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJ CQkJCQkgIChSYW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIGluZGV4KSwKKwkJCQkJCQkJ CQkJCQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBpbmRleCksCisJ CQkJCQkJCQkJCQkJICBwc3RhdGUpOworCQkJCX0KKworCQkJCS8qCisJCQkJICogTG93ZXIgYm91 bmQgb2YgZmlyc3QgcGFydGl0aW9uIGlzIHRoZSBsb3dlciBib3VuZCBvZiBtZXJnZWQKKwkJCQkg KiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJc3BlYy0+bG93ZXJkYXR1bXMgPQorCQkJCQkoKFBh cnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5kc1swXS0+aW5k ZXgpKS0+bG93ZXJkYXR1bXM7CisKKwkJCQkvKgorCQkJCSAqIFVwcGVyIGJvdW5kIG9mIGxhc3Qg cGFydGl0aW9uIGlzIHRoZSB1cHBlciBib3VuZCBvZiBtZXJnZWQKKwkJCQkgKiBwYXJ0aXRpb24u CisJCQkJICovCisJCQkJc3BlYy0+dXBwZXJkYXR1bXMgPQorCQkJCQkoKFBhcnRpdGlvbkJvdW5k U3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxvd2VyX2JvdW5kc1tucGFydHMgLSAxXS0+aW5kZXgp KS0+dXBwZXJkYXR1bXM7CisKKwkJCQlwZnJlZShsb3dlcl9ib3VuZHMpOworCQkJCWxpc3RfZnJl ZShib3VuZHMpOworCQkJCWJyZWFrOworCQkJfQorCisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZ X0xJU1Q6CisJCQl7CisJCQkJLyogQ29uc29saWRhdGUgYm91bmRzIGZvciBhbGwgcGFydGl0aW9u cyBpbiB0aGUgbGlzdC4gKi8KKwkJCQlmb3JlYWNoX29pZChwYXJ0b2lkLCBwYXJ0T2lkcykKKwkJ CQl7CisJCQkJCWJvdW5kID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKHBhcnRvaWQpOworCQkJ CQlzcGVjLT5saXN0ZGF0dW1zID0gbGlzdF9jb25jYXQoc3BlYy0+bGlzdGRhdHVtcywgYm91bmQt Pmxpc3RkYXR1bXMpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKworCQlkZWZhdWx0OgorCQkJ ZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChp bnQpIGtleS0+c3RyYXRlZ3kpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA2YjIw YTQ0MDRiMi4uM2VjMDMzZDhkOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTI3NTAsNiAr Mjc1MCw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQkJCQkgICJP V05FUiBUTyIsICJTRVQiLCAiVkFMSURBVEUgQ09OU1RSQUlOVCIsCiAJCQkJCSAgIlJFUExJQ0Eg SURFTlRJVFkiLCAiQVRUQUNIIFBBUlRJVElPTiIsCiAJCQkJCSAgIkRFVEFDSCBQQVJUSVRJT04i LCAiRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIiwKKwkJCQkJICAiTUVSR0UgUEFSVElUSU9OUyAo IiwKIAkJCQkJICAiT0YiLCAiTk9UIE9GIik7CiAJLyogQUxURVIgVEFCTEUgeHh4IEFERCAqLwog CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJBREQiKSkKQEAg LTMwMjMsNiArMzAyNCwxNSBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwK IAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiREVUQUNIIiwg IlBBUlRJVElPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgiQ09OQ1VSUkVOVExZIiwg IkZJTkFMSVpFIik7CiAKKwkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAo ICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdF IiwgIlBBUlRJVElPTlMiLCAiKCIpKQorCXsKKwkJc2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHBy ZXY0X3dkKTsKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX3BhcnRpdGlv bl9vZl90YWJsZSk7CisJfQorCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0 Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigqKSIpKQorCQlDT01QTEVURV9XSVRIKCJJ TlRPIik7CisKIAkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gT0YgKi8KIAllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiT0YiKSkKIAkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfY29tcG9zaXRlX2RhdGF0eXBlcyk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvZGVwZW5kZW5jeS5oCmluZGV4IDBlYTdjY2Y1MjQzLi5mNTQyMzM0OTliZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9kZXBlbmRlbmN5LmgKQEAgLTEwNyw2ICsxMDcsOCBAQCBleHRlcm4gdm9pZCBSZWxlYXNl RGVsZXRpb25Mb2NrKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCk7CiBleHRlcm4gdm9pZCBw ZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCQkJCURyb3BC ZWhhdmlvciBiZWhhdmlvciwgaW50IGZsYWdzKTsKIAorZXh0ZXJuIHZvaWQgcGVyZm9ybURlbGV0 aW9uQ2hlY2soY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAorCQkJCQkJCQkgRHJvcEJlaGF2 aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIHZvaWQgcGVyZm9ybU11bHRpcGxlRGVs ZXRpb25zKGNvbnN0IE9iamVjdEFkZHJlc3NlcyAqb2JqZWN0cywKIAkJCQkJCQkJCSBEcm9wQmVo YXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA4 NmEyMzZiZDU4Yi4uYjFiMzMxNWZlNTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTk2NCwx MyArOTY0LDE2IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblJhbmdlRGF0dW0KIH0gUGFydGl0 aW9uUmFuZ2VEYXR1bTsKIAogLyoKLSAqIFBhcnRpdGlvbkNtZCAtIGluZm8gZm9yIEFMVEVSIFRB QkxFL0lOREVYIEFUVEFDSC9ERVRBQ0ggUEFSVElUSU9OIGNvbW1hbmRzCisgKiBQYXJ0aXRpb25D bWQgLSBpbmZvIGZvciBBTFRFUiBUQUJMRS9JTkRFWCBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBh bmQgZm9yCisgKgkgIEFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZHMKICAqLwog dHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uQ21kCiB7CiAJTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZh ciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2ggKi8KKwlS YW5nZVZhciAgICpuYW1lOwkJCS8qIG5hbWUgb2YgcGFydGl0aW9uIHRvIGF0dGFjaC9kZXRhY2gv bWVyZ2UgKi8KIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBGT1IgVkFMVUVTLCBpZiBh dHRhY2hpbmcgKi8KKwlMaXN0CSAgICpwYXJ0bGlzdDsJCS8qIGxpc3Qgb2YgcGFydGl0aW9ucyB0 byBiZSBtZXJnZWQsIHVzZWQgaW4KKwkJCQkJCQkJICogQUxURVIgVEFCTEUgTUVSR0UgUEFSVElU SU9OUyAqLwogCWJvb2wJCWNvbmN1cnJlbnQ7CiB9IFBhcnRpdGlvbkNtZDsKIApAQCAtMjQ3Myw2 ICsyNDc2LDcgQEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfQXR0YWNoUGFydGl0 aW9uLAkJCS8qIEFUVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb24sCQkJLyog REVUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplLCAvKiBERVRB Q0ggUEFSVElUSU9OIEZJTkFMSVpFICovCisJQVRfTWVyZ2VQYXJ0aXRpb25zLAkJCS8qIE1FUkdF IFBBUlRJVElPTlMgKi8KIAlBVF9BZGRJZGVudGl0eSwJCQkJLyogQUREIElERU5USVRZICovCiAJ QVRfU2V0SWRlbnRpdHksCQkJCS8qIFNFVCBpZGVudGl0eSBjb2x1bW4gb3B0aW9ucyAqLwogCUFU X0Ryb3BJZGVudGl0eSwJCQkvKiBEUk9QIElERU5USVRZICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXgg YTRhZjNmNzE3YTEuLjkwZThjZGRmOGI3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIv a3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMzcsNiArMzM3 LDcgQEAgUEdfS0VZV09SRCgicGFyYW1ldGVyIiwgUEFSQU1FVEVSLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJzZXIiLCBQQVJTRVIsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJU SVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInBhcnRp dGlvbnMiLCBQQVJUSVRJT05TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGF0aCIsIFBBVEgsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCmluZGV4IDY1ZjE2 MWY3MTg4Li42OTBkMjU5NjE5MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5n L3BhcnRib3VuZHMuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5o CkBAIC0xNDMsNCArMTQzLDEwIEBAIGV4dGVybiBpbnQJcGFydGl0aW9uX3JhbmdlX2RhdHVtX2Jz ZWFyY2goRm1nckluZm8gKnBhcnRzdXBmdW5jLAogZXh0ZXJuIGludAlwYXJ0aXRpb25faGFzaF9i c2VhcmNoKFBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8sCiAJCQkJCQkJCSAgIGludCBtb2R1 bHVzLCBpbnQgcmVtYWluZGVyKTsKIAorZXh0ZXJuIHZvaWQgY2FsY3VsYXRlX3BhcnRpdGlvbl9i b3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJCQkJTGlzdCAqcGFydE5h bWVzLAorCQkJCQkJCQkJCQkJTGlzdCAqcGFydE9pZHMsCisJCQkJCQkJCQkJCQlQYXJ0aXRpb25C b3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkJCQlQYXJzZVN0YXRlICpwc3RhdGUpOworCiAjZW5k aWYJCQkJCQkJLyogUEFSVEJPVU5EU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBl Y3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi45ODQ0NmFhYWI1YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlv bi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0CkBAIC0wLDAgKzEsMTk5IEBACitQYXJzZWQg dGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJiIHMy aSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYjogQkVHSU47Citz dGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRw YXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFy dF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQg PSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09N TUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAg czJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0t CisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0 MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IHMyYiBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMy YjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAx Jyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVM IFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQ QVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7Citz dGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1v ZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNU ICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1 ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1 fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmIgczJp IHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYjogQkVHSU47Citz dGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxF Oworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0 XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsK K3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAx OyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0Owor IGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1 ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1 IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnJyIHMyaSBzMmMgczFiIHMxbWVy ZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwg UkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwg J3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFt ZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBh cnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTog VVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcg Li4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAg czJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAg ICAgCistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0 ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1 IHMxYyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJM RSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScp Oworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBS RVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFS VElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2Rp Zicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy dTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAq IEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAg ICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0 ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJp IHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnJyOiBCRUdJTiBJ U09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczog QkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBU QUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElO VE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0 IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7 CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0t LS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgor MjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitz dGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMyaTog SU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlU Oworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdF IFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsK K3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAx bW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3Rl cCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisgNXx0ZXh0 MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0MjUgICAgIAor MzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMg czJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJ TiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRw YXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxU RVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIw KSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0 cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0 ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0r LS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9k aWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBz MnMKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAg czJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7Citz dGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBf MTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3Rl cCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0 ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAg IAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93 cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBi L3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXggNWFmYWUzM2QzNzAu Ljg1NDE1NDY2Nzg1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3Nj aGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEx MCw2ICsxMTAsNyBAQCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0xCiB0ZXN0OiBwYXJ0aXRp b24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0zCiB0ZXN0OiBwYXJ0 aXRpb24ta2V5LXVwZGF0ZS00Cit0ZXN0OiBwYXJ0aXRpb24tbWVyZ2UKIHRlc3Q6IHBscGdzcWwt dG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFy dGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1l cmdlLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRjMmI5ZDM0NDVmCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5z cGVjCkBAIC0wLDAgKzEsNTQgQEAKKyMgVmVyaWZ5IHRoYXQgTUVSR0Ugb3BlcmF0aW9uIGxvY2tz IERNTCBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUKKworc2V0dXAKK3sKKyAgRFJP UCBUQUJMRSBJRiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBUQUJMRSB0cGFydChpIGludCwgdCB0 ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJMRSB0cGFydF8wMF8xMCBQ QVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworICBDUkVBVEUg VEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8yMF8zMCBQQVJUSVRJT04gT0YgdHBhcnQg Rk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0X2RlZmF1 bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVF UyAoNSwgJ3RleHQwNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDE1LCAndGV4dDE1 Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMjUsICd0ZXh0MjUnKTsKKyAgSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgzNSwgJ3RleHQzNScpOworfQorCit0ZWFyZG93bgoreworICBE Uk9QIFRBQkxFIHRwYXJ0OworfQorCitzZXNzaW9uIHMxCitzdGVwIHMxYgl7IEJFR0lOOyB9Citz dGVwIHMxYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3Rl cCBzMWJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBzMW1l cmcJeyBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBh cnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7IH0KK3N0ZXAgczFjCXsgQ09NTUlUOyB9CisKKwor c2Vzc2lvbiBzMgorc3RlcCBzMmIJeyBCRUdJTjsgfQorc3RlcCBzMmJycgl7IEJFR0lOIElTT0xB VElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczJicwl7IEJFR0lOIElTT0xBVElP TiBMRVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczJpCXsgSU5TRVJUIElOVE8gdHBhcnQgVkFM VUVTICgxLCAndGV4dDAxJyk7IH0KK3N0ZXAgczJ1CXsgVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3Rl eHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgfQorc3RlcCBzMmMJeyBDT01NSVQ7IH0KK3N0ZXAgczJz CXsgU0VMRUNUICogRlJPTSB0cGFydDsgfQorCisKKyMgczIgaW5zZXJ0cyByb3cgaW50byB0YWJs ZS4gczEgc3RhcnRzIE1FUkdFIFBBUlRJVElPTlMgdGhlbgorIyBzMiBpcyB0cnlpbmcgdG8gdXBk YXRlIGluc2VydGVkIHJvdyBhbmQgd2FpdHMgdW50aWwgczEgZmluaXNoZXMKKyMgTUVSR0Ugb3Bl cmF0aW9uLgorCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFj IHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYiBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMx YyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMx YyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMyYnJyIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1 IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmJyciBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIg czJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmJyciBzMmkgczJjIHMxYnMgczFtZXJnIHMy YiBzMnUgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24gczJicyBzMmkgczJjIHMxYiBzMW1lcmcg czJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicyBzMmkgczJjIHMxYnJyIHMxbWVy ZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmJzIHMyaSBzMmMgczFicyBzMW1l cmcgczJiIHMydSBzMWMgczJjIHMycwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dCBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKaW5kZXggNTBkMDM1NGEz NDEuLmM0MDNjMmY1NjlmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2Rl cGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTU2LDYgKzU2LDExIEBA IEFMVEVSIFRBQkxFIHBhcnQgREVUQUNIIFBBUlRJVElPTiBwYXJ0MjsKIE5PVElDRTogIERETCB0 ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcgQUxURVIgVEFCTEUKIE5PVElDRTogICAgc3ViY29t bWFuZDogdHlwZSBERVRBQ0ggUEFSVElUSU9OIGRlc2MgdGFibGUgcGFydDIKIERST1AgVEFCTEUg cGFydDI7CitDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9GIHBhcnQgRk9SIFZBTFVFUyBG Uk9NICgxMDApIHRvICgyMDApOworTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgc2ltcGxlLCB0YWcg Q1JFQVRFIFRBQkxFCitBTFRFUiBUQUJMRSBwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHBhcnQxLCBw YXJ0MikgSU5UTyBwYXJ0MTsKK05PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0 YWcgQUxURVIgVEFCTEUKK05PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBNRVJHRSBQQVJUSVRJ T05TIGRlc2MgPE5VTEw+CiBBTFRFUiBUQUJMRSBwYXJ0IEFERCBQUklNQVJZIEtFWSAoYSk7CiBO T1RJQ0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCiBOT1RJ Q0U6ICAgIHN1YmNvbW1hbmQ6IHR5cGUgQUREIENPTlNUUkFJTlQgKGFuZCByZWN1cnNlKSBkZXNj IGNvbnN0cmFpbnQgcGFydF9hX25vdF9udWxsIG9uIHRhYmxlIHBhcnQKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKaW5kZXgg OWFkMWNmOTA4ZDQuLjMxZTY5MTAwYTMwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxlLnNxbApAQCAtMzUsNiArMzUsOSBAQCBB TFRFUiBUQUJMRSBwYXJ0IEFUVEFDSCBQQVJUSVRJT04gcGFydDIgRk9SIFZBTFVFUyBGUk9NICgx MDEpIHRvICgyMDApOwogQUxURVIgVEFCTEUgcGFydCBERVRBQ0ggUEFSVElUSU9OIHBhcnQyOwog RFJPUCBUQUJMRSBwYXJ0MjsKIAorQ1JFQVRFIFRBQkxFIHBhcnQyIFBBUlRJVElPTiBPRiBwYXJ0 IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSB0byAoMjAwKTsKK0FMVEVSIFRBQkxFIHBhcnQgTUVSR0Ug UEFSVElUSU9OUyAocGFydDEsIHBhcnQyKSBJTlRPIHBhcnQxOworCiBBTFRFUiBUQUJMRSBwYXJ0 IEFERCBQUklNQVJZIEtFWSAoYSk7CiAKIEFMVEVSIFRBQkxFIHBhcmVudCBBTFRFUiBDT0xVTU4g YSBTRVQgTk9UIE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2Rl cGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBh cnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwppbmRleCAxOTM2NjlmMmJjMS4uN2RlNWRkYjg3ODUgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBh cnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2Rl cGFyc2UuYwpAQCAtMjk2LDYgKzI5Niw5IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdf RlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQkJ c3RydHlwZSA9ICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJ CQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElP TlMiOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCQlzdHJ0eXBlID0g IkFERCBJREVOVElUWSI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9tZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjZkOWZmMDI1MDM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CkBAIC0wLDAgKzEsMTA5NyBAQAorLS0KKy0tIFBBUlRJ VElPTlNfTUVSR0UKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgLi4uIiBjb21tYW5kCistLQorQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTsKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOworU0VUIHNlYXJjaF9w YXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBCWSBSQU5HRSBw YXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjEgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjEtMTItMDEnKSBUTyAoJzIw MjEtMTItMzEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h cHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1Jyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzIgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xNScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJPUjogIHBh cnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNf bWFyMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CitFUlJP UjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAor TElORSAxOiAuLi5lIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIw MjIsIHNhbGVzX2ZlYjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogICJzYWxlc19hcHIyMDIyIiBpcyBu b3QgYSB0YWJsZQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBzYWxlc19mZWJf bWFyX2FwcjIwMjI7CitFUlJPUjogICJzYWxlc19hcHIyMDIyIiBpcyBub3QgYSB0YWJsZQorSElO VDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRp dGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6ICBjYW4gbm90IG1lcmdl IHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVz X2phbjIwMjIiCistLSBERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21h cjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19qYW4yMDIyIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfamFuMjAyMiBhbmQg c2FsZXNfbWFyMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIpIElOVE8gc2FsZXNfamFuX21hcjIwMjI7CitF UlJPUjogIGNhbiBub3QgbWVyZ2UgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiB0b2dldGhlciB3 aXRoIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBh cnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQu CistLSBFUlJPUjogIGNhbiBub3QgbWVyZ2UgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiB0b2dl dGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKKy0tIERFVEFJTDogIGxvd2VyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCistLSAoc3BhY2UgYmV0d2VlbiBz ZWN0aW9ucyBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19qYW4yMDIyKQorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZGVjMjAyMSwgc2FsZXNfamFuMjAyMiwg c2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7CitFUlJPUjogIGNhbiBu b3QgbWVyZ2UgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlv biAic2FsZXNfZGVjMjAyMSIKK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfamFuMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjEiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMg cmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBFUlJPUjog IHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2Fs ZXNfbWFyMjAyMiwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmViMjAyMikgSU5UTyBz YWxlc19mZWJfbWFyX2FwcjIwMjI7CitFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVz X2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorTElORSAxOiAuLi5lIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnMuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLUVS Uk9SLCBzYWxlc19hcHJfMiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfamFu MjAyMikgSU5UTyBzYWxlc19hcHJfMjsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX2Fwcl8yIiBh bHJlYWR5IGV4aXN0cworQ1JFQVRFIFZJRVcgamFuMjAyMnYgYXMgU0VMRUNUICogRlJPTSBzYWxl c19qYW4yMDIyOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7CitF UlJPUjogIGNhbm5vdCBkcm9wIHRhYmxlIHNhbGVzX2phbjIwMjIgYmVjYXVzZSBvdGhlciBvYmpl Y3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgdmlldyBqYW4yMDIydiBkZXBlbmRzIG9uIHRhYmxl IHNhbGVzX2phbjIwMjIKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBk ZXBlbmRlbnQgb2JqZWN0cyB0b28uCitEUk9QIFZJRVcgamFuMjAyMnY7CistLSBOTyBFUlJPUjog dGVzdCBmb3IgY3VzdG9tIHBhcnRpdGlvbnMgb3JkZXIsIHNvdXJjZSBwYXJ0aXRpb25zIG5vdCBp biB0aGUgc2VhcmNoX3BhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMiwgcHVibGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNf cmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVz X2ZlYjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX21hcjIwMjIsCisgIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYl9t YXIyMDIyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1Ymxp YzsKK1BSRVBBUkUgZ2V0X3BhcnRpdGlvbl9pbmZvKHJlZ2NsYXNzW10pIEFTCitTRUxFQ1QgIGMu b2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLAorICAgICAgICBjLnJlbHBlcnNpc3RlbmNlLAorICAg ICAgICBjLnJlbGtpbmQsCisgICAgICAgIGkuaW5oZGV0YWNocGVuZGluZywKKyAgICAgICAgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCitGUk9NICAgIHBnX2Nh dGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCitXSEVSRSAgIGMub2lk ID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSBBTlkoJDEpCitPUkRFUiBCWSBwZ19jYXRh bG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsCisgICAg ICAgICBjLm9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyI7CitFWEVDVVRFIGdldF9wYXJ0 aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOworICAgICAgICAgICAgICAgICAgICAgIG9pZCAg ICAgICAgICAgICAgICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRh Y2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMi5zYWxlc19qYW5fZmViX21hcjIwMjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgn MDQtMDEtMjAyMicpCisgc2FsZXNfYXByMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHAgICAgICAgICAgICAgIHwgcCAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19kZWMy MDIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcCAgICAgICAgICAgICAgfCBy ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzEyLTAxLTIwMjEn KSBUTyAoJzEyLTMxLTIwMjEnKQorIHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgREVGQVVMVAorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBB ZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlLCB0aGVuIG1lcmdlIHBhcnRpdGlvbnMKKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUg SU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRy ZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAg J01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAs ICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyks CisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldics ICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIy LTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1 MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgn KSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0 bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VM RUNUIHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3Mp OworIHBnX2dldF9wYXJ0a2V5ZGVmICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUkFOR0UgKHNh bGVzX2RhdGUpCisoMSByb3cpCisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6 CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOworICAgICAgb2lk ICAgICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2Fw cjIwMjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmVi MjAyMiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxlc19qYW4y MDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKQorIHNhbGVzX21hcjIw MjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpCisgc2FsZXNfb3RoZXJz ICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxU CisoNSByb3dzKQorCistLSBjaGVjayBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG5ldyBw YXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIHNob3cgcGFydGl0aW9ucyB3 aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3Jhbmdl fScpOworICAgICAgICAgICAgICAgICAgICAgIG9pZCAgICAgICAgICAgICAgICAgICAgICAgfCBy ZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2Fw cjIwMjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfamFu MjAyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwg ciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIy JykgVE8gKCcwMi0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IERFRkFVTFQKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0 YWJsZW5hbWUgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYTInOworICAgICAgICBzY2hlbWFuYW1lICAgICAgICB8ICAgICAg IHRhYmxlbmFtZSAgICAgICB8ICAgICAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgICAgICB8 IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMiB8 IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8IHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19kYXRl X2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfZmViX21hcl9hcHIyMDIyX3Nh bGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2Fw cjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xh c3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICAgICAgICAgICAgICAg ICB0YWJsZW9pZCAgICAgICAgICAgICAgICAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2Zm ICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAg ICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hl bWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAg ICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAg ICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h Mi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAg ICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEy LnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIu c2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAg IHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5z YWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8 ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAg ICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAg ICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCistLSBVc2UgaW5kZXhzY2FuIGZv ciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmVi X21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5n IHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBvbiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIKKyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAxLTAxLTIwMjInOjpkYXRlKQor KDIgcm93cykKKworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNf ZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUw MCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAg ICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11 bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAg MTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAg ICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIK KyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0w Ny0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUw IHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAg ICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxMCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gTWVyZ2Ugc29tZSBwYXJ0aXRpb25zIGlu dG8gREVGQVVMVCBwYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFy MjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHgg T04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwK KyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywg ICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjIt MDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwg ICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1 LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp LAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRl cicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAy Mi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworLS0gTWVyZ2UgcGFydGl0aW9ucyAoaW5jbHVkZSBERUZBVUxU IHBhcnRpdGlvbikgaW50byBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZQorLS0gbmFtZQorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUworICAoc2FsZXNfamFuMjAyMiwgc2Fs ZXNfbWFyMjAyMiwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfb3RoZXJzKSBJTlRPIHNh bGVzX290aGVyczsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIE9SREVSIEJZIHNhbGVzcGVy c29uX2lkOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAg ICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAg ICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwg TXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAg ICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAg ICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAy MgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAx LTA5LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1 MTAgfCAwNS0wNC0yMDIyCisoNyByb3dzKQorCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25k aXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKyAg ICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGlu ZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBz YWxlc19hcHIyMDIyIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNh bGVzX2ZlYjIwMjIgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpCisgc2Fs ZXNfb3RoZXJzICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBERUZBVUxUCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRl c3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRF RCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVh ciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJD SEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwg NCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicg fHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0 bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBU QUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJP TSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkg VE8gKDIwMjIsIDIsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZB TFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcp LAorICAoJ01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMSwg MSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEs IDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAz LCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwg NSwgMSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZTsKKyAg IHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250 aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMiB8 IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcg fCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2RlYzIwMjIgfCBNYW5hZ2Vy MiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4x Mi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjMgICAgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBT YWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIyICAgICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVw YXJ0bWVudAorIHNhbGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQK KyBzYWxlc19mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNf b3RoZXIgICB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAg ICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAg fCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0 IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdl cjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIu MDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19k YXRlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8g c2FsZXNfamFuX2ZlYjIwMjI7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25h bWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFn ZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNU IHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2RhdGU7CisgICAgIHRhYmxlb2lkICAg ICAgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNf ZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMiAgICAgfCBN YW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwg MjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIyICAgICB8IE1hbmFn ZXIyICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIx LjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjMg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEu MDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMiAgICAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8 IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIxICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBk ZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFy dG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDIgfCAgICAgICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVu dAorIHNhbGVzX290aGVyICAgICAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50Cisg c2FsZXNfb3RoZXIgICAgICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxl c19vdGhlciAgICAgICB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDExIHJvd3Mp CisKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25z IG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBQQVJU SVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFM VUVTIEZST00gKDIwKSBUTyAoMzApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgUEFS VElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIg TEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3Ry aWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJH VlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOwor JEJPRFkkOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVu dF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1Ig RUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3Ry aWdnZXIoJ3NhbGVzcGVvcGxlJyk7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9p bnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQor ICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3df dHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAo cm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdN YXknKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5T RVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVv cGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRF TUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBz YWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKK05PVElDRTogIHRyaWdnZXIo c2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVs ID0gUk9XCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc3Bl b3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVz cGVvcGxlMTBfNDA7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRl bWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsK K05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3 aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBj YWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAor LS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZTEwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVv cGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVwor U0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNw ZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTEw XzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAg ICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAgICAz MCB8IEZvcmQKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CitEUk9QIEZVTkNU SU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRp dGlvbnMgd2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUo c2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCk7CistLSBDcmVhdGUgcGFydGl0aW9ucyB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1 bW5zOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAoZDEgVkFSQ0hBUigzMCksIHNhbGVz cGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFS WSBLRVksIGQyIElOVCwgIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlMzBfNDAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMyBE QVRFLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVv cGxlMTBfMjAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAnSXZhbm92Jyk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZTIwXzMwIFZBTFVFUyAoMjAsIDEwMSwgJ1NtaXJub2ZmJyk7CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzEsIG5vdygpLCAnUG9wb3YnKTsKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgRFJPUCBDT0xVTU4gZDE7CitBTFRFUiBUQUJMRSBz YWxlc3Blb3BsZTIwXzMwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUz MF80MCBEUk9QIENPTFVNTiBkMzsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJU SVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxU RVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZP UiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRB Q0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQw KTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAo MTAsICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNw ZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworc2VsZWN0ICogZnJvbSBzYWxlc3Bl b3BsZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90CisgICAgICAg ICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQorICAgICAgICAgICAgIDIw IHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBvcG92CisgICAgICAgICAgICAgMzAgfCBG b3JkCisoNiByb3dzKQorCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMDFfMTA7Cisgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitzZWxlY3QgKiBm cm9tIHNhbGVzcGVvcGxlMTBfNDA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxOSB8 IEl2YW5vdgorICAgICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgICAgMjAgfCBTbWlybm9m ZgorICAgICAgICAgICAgIDMxIHwgUG9wb3YKKyAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJv d3MpCisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CistLQorLS0gVGVzdDogbWVyZ2Ugc3ViLXBh cnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIy MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2FwcjIwMjJfMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2FwcjIwMjJfMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vf c2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwg JzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAor ICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdics ICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAg J0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUs ICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyks CisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAn LCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzX2FwcjIwMjIgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgIHRhYmxlb2lkICAgICAgIHwg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyXzAxXzEw IHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQt MDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfYXByMjAyMl8xMF8y MCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0 LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyXzIwXzMwIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworQUxURVIg VEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIyMDIyXzAxXzEw LCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fw cl9hbGw7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfYXByMjAyMiBP UkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29u X2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNh bGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAgICAgICAg IDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICA0IHwgSXZh bm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHJfYWxs IHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQt MDctMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAg ICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlOworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3Q6 IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElE RU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFS Q0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJ T04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElU SU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcn LCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxl c19saXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVT IElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdDIgKExJS0Ug c2FsZXNfbGlzdCkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19ub3JkMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgRk9SIFZBTFVFUyBJTiAoJ09z bG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0MiBERUZBVUxUOworQ1JFQVRFIFRBQkxFIHNh bGVzX2V4dGVybmFsIChMSUtFIHNhbGVzX2xpc3QpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVy bmFsMiAodmNoIFZBUkNIQVIoNSkpOworLS0gRVJST1I6ICAic2FsZXNfZXh0ZXJuYWwiIGlzIG5v dCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0FMVEVSIFRB QkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwg c2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworRVJST1I6ICAic2FsZXNfZXh0ZXJuYWwi IGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0hJ TlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0 aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVy bmFsMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19saXN0 IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBz YWxlc19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2FsZXNfYWxsOworRVJST1I6ICAic2Fs ZXNfZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNh bGVzX2xpc3QiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9u bHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zCistLSBFUlJPUjog IHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJz YWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxl c193ZXN0LCBzYWxlc19ub3JkMiwgc2FsZXNfZWFzdCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjog IHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJz YWxlc19saXN0IgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBv bmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworRFJPUCBUQUJM RSBzYWxlc19leHRlcm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsOworRFJPUCBUQUJM RSBzYWxlc19saXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0OiBCWSBM SVNUIHBhcnRpdGlvbmluZywgTUVSR0UgUEFSVElUSU9OUyB3aXRoIGRhdGEKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFT IElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUg VkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJU SVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2Fs ZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25f bmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNf bGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVy c2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBP RiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlk Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn V2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChz YWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBW QUxVRVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx JyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0wMycp LAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKSwK KyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0JyksCisg ICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpLAorICAo J1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdN YXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTA2JyksCisgICgnTGkn LCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpLAorICAoJ01heScs ICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKSwKKyAgKCdIYWxkZXIn LCAgICdPc2xvJywgICAgICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywg ICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAg J0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdX YXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlz Ym9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworLS0gc2hvdyBwYXJ0aXRpb25zIHdp dGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0n KTsKKyAgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNo cGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHNhbGVzX2NlbnRyYWwgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lp dicpCisgc2FsZXNfZWFzdCAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9r JykKKyBzYWxlc19ub3JkICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNp bmtpJykKKyBzYWxlc193ZXN0ICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlk JykKKyBzYWxlc19vdGhlcnMgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IERFRkFVTFQKKyg1IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkgSU5U TyBzYWxlc19hbGw7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VU RSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOworICAgICBvaWQgICAgICB8IHJl bHBlcnNpc3RlbmNlIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hbGwgICAg fCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0RlbGhpJywg J1ZsYWRpdm9zdG9rJywgJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpCisgc2FsZXNfbm9yZCAg IHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxV RVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJykKKyBzYWxlc19vdGhl cnMgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVM VAorKDMgcm93cykKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xp c3QgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3Bl cnNvbl9pZDsKKyAgdGFibGVvaWQgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IHwgIHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICAx IHwgVHJ1bXAgICAgICAgICAgICB8IEJlamluZyAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMt MDEtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAg fCBOZXcgWW9yayAgICAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyBzYWxlc19hbGwg IHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgICAgfCAg ICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMDct MjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCBC ZXJsaW4gICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19hbGwgIHwg ICAgICAgICAgICAgIDggfCBMaSAgICAgICAgICAgICAgIHwgVmxhZGl2b3N0b2sgICAgfCAgICAg ICAgIDExNTAgfCAwMy0wOS0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgIDExIHwgTXVs bGVyICAgICAgICAgICB8IE1hZHJpZCAgICAgICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAy MgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgICAgfCBLeWl2 ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyBzYWxlc19hbGwgIHwgICAg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgICAgfCAgICAgICAg ICAxNTAgfCAwMy0wOC0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgIDE0IHwgUGxhdG8g ICAgICAgICAgICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgor IHNhbGVzX25vcmQgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0 ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyBzYWxlc19ub3JkIHwgICAgICAg ICAgICAgIDcgfCBNYXkgICAgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgIDEy MDAgfCAwMy0wNi0yMDIyCisgc2FsZXNfbm9yZCB8ICAgICAgICAgICAgICA5IHwgTWF5ICAgICAg ICAgICAgICB8IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorIHNh bGVzX25vcmQgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBPc2xvICAgICAg ICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKygxNCByb3dzKQorCistLSBVc2UgaW5k ZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgbWVyZ2luZyBwYXJ0aXRpb25zCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g c2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CisgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4g dXNpbmcgc2FsZXNfYWxsX3NhbGVzX3N0YXRlX2lkeCBvbiBzYWxlc19hbGwKKyAgIEluZGV4IENv bmQ6ICgoc2FsZXNfc3RhdGUpOjp0ZXh0ID0gJ1dhcnNhdyc6OnRleHQpCisoMiByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0y MDIyCisgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAg ICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19hbGxfc2Fs ZXNfc3RhdGVfaWR4IG9uIHNhbGVzX2FsbCBzYWxlc19saXN0CisgICBJbmRleCBDb25kOiAoKHNh bGVzX3N0YXRlKTo6dGV4dCA9ICdXYXJzYXcnOjp0ZXh0KQorKDIgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAg ICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAg IDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5k CisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBzYWxlc19hbGxfc2FsZXNwZXJzb25fbmFtZV9pZHgg b24gc2FsZXNfYWxsIHNhbGVzX2xpc3RfMQorICAgICAgICAgSW5kZXggQ29uZDogKChzYWxlc3Bl cnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gc2FsZXNfbm9yZCBzYWxlc19saXN0XzIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChz YWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIHNhbGVzX25vcmRfc2FsZXNwZXJzb25fbmFtZV9pZHgKKyAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92 Jzo6dGV4dCkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHNhbGVzX290aGVycyBzYWxlc19s aXN0XzMKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9 ICdJdmFub3YnOjp0ZXh0KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHNhbGVz X290aGVyc19zYWxlc3BlcnNvbl9uYW1lX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorKDExIHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5v dic7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8 IDAzLTA0LTIwMjIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxF IHNhbGVzX2xpc3Q7CistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgYW5vdGhlciB0 YWJsZS4KKy0tCitDUkVBVEUgVEFCTEUgdDEgKGkgaW50LCBhIGludCwgYiBpbnQsIGMgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UgKGEsIGIpOworQ1JFQVRFIFRBQkxFIHQxcDEgUEFSVElUSU9OIE9G IHQxIEZPUiBWQUxVRVMgRlJPTSAoMSwgMSkgVE8gKDEsIDIpOworQ1JFQVRFIFRBQkxFIHQyIChp IGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworQ1JFQVRFIFRBQkxFIHQycGEg UEFSVElUSU9OIE9GIHQyIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0MnKTsKK0NSRUFURSBU QUJMRSB0MyAoaSBpbnQsIHQgdGV4dCk7CistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBu b3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFS VElUSU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0MnA7CitFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBp cyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorSElOVDogIEFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBz dWItcGFydGl0aW9ucworLS0gRVJST1I6ICAidDMiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0 aXRpb25lZCB0YWJsZSAidDIiCitBTFRFUiBUQUJMRSB0MiBNRVJHRSBQQVJUSVRJT05TICh0MnBh LCB0MykgSU5UTyB0MnA7CitFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRp dGlvbmVkIHRhYmxlICJ0MiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKK0RS T1AgVEFCTEUgdDM7CitEUk9QIFRBQkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKy0tCistLSBDaGVj ayB0aGUgcGFydGl0aW9uIGluZGV4IG5hbWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBz YW1lIGFzIG9uZQorLS0gb2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJM RSB0IChpIGludCwgUFJJTUFSWSBLRVkoaSkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVB VEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp OworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKTsKK0NSRUFURSBJTkRFWCB0aWR4IE9OIHQoaSk7CitBTFRFUiBUQUJMRSB0IE1FUkdF IFBBUlRJVElPTlMgKHRwXzFfMiwgdHBfMF8xKSBJTlRPIHRwXzFfMjsKKy0tIEluZGV4bmFtZSB2 YWx1ZXMgc2hvdWxkIGJlICd0cF8xXzJfcGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgorXGQrIHRw XzFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9z Y2hlbWEudHBfMV8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0 aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpCitQYXJ0aXRpb24gY29uc3RyYWlu dDogKChpIElTIE5PVCBOVUxMKSBBTkQgKGkgPj0gMCkgQU5EIChpIDwgMikpCitJbmRleGVzOgor ICAgICJ0cF8xXzJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpKQorICAgICJ0cF8xXzJfaV9p ZHgiIGJ0cmVlIChpKQorTm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRfaV9ub3RfbnVsbCIg Tk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisKK0RST1AgVEFCTEUgdDsKKy0tCistLSBUcnkgdG8g TUVSR0UgcGFydGl0aW9ucyBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQkVHSU47CitTSE9XIHNl YXJjaF9wYXRoOworICAgICAgICAgICBzZWFyY2hfcGF0aCAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGlj CisoMSByb3cpCisKK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFO R0UgKGkpIE9OIENPTU1JVCBEUk9QOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8xIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBf MV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ1JFQVRFIFRF TVAgVEFCTEUgdHBfMl8zIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDMp OworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfM180IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMykgVE8gKDQpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRw XzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8yLCB0cF8yXzMpIElOVE8gcGdfdGVtcC50cF8wXzM7CistLSBQYXJ0aXRpb24gc2hv dWxkIGJlIHRlbXBvcmFyeS4KK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKyAg b2lkICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAg ICAgIHBnX2dldF9leHByICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRw XzBfMyB8IHQgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgzKQorIHRwXzNfNCB8IHQgICAgICAgICAgICAgIHwgciAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KQorKDIgcm93 cykKKworLS0gRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBh cnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBB UlRJVElPTlMgKHRwXzBfMywgdHBfM180KSBJTlRPIHRwXzBfNDsKK0VSUk9SOiAgY2Fubm90IGNy ZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0 aW9uICJ0IgorUk9MTEJBQ0s7CistLQorLS0gVHJ5IG1peGluZyBwZXJtYW5lbnQgYW5kIHRlbXBv cmFyeSBwYXJ0aXRpb25zLgorLS0KK0JFR0lOOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKKyBvaWQgfCByZWxwZXJzaXN0ZW5jZSAK Ky0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgfCBwCisoMSByb3cpCisKK0VYRUNVVEUgZ2V0 X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKyAgb2lkICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtp bmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgCistLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMSB8IHAgICAgICAgICAgICAgIHwgciAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKQorIHRwXzFf MiB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKQorKDIgcm93cykKKworU0FWRVBPSU5UIHM7CitTRVQgc2VhcmNo X3BhdGggPSBwZ190ZW1wLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2Fu J3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9u CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRw XzBfMjsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0 aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uICJ0IgorUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHM7 CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0g Q2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0 aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHBnX3RlbXAudHBfMF8yOworRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IHJlbGF0 aW9uIGFzIHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVsYXRpb24gInQiCitST0xMQkFDSzsKK0JF R0lOOworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEs IHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsK K0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpOworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBl cnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpy ZWdjbGFzczsKKyBvaWQgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0K KyB0ICAgfCB0CisoMSByb3cpCisKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsK KyAgb2lkICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwg ICAgICAgIHBnX2dldF9leHByICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHRwXzBfMSB8IHQgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKQorIHRwXzFfMiB8IHQgICAgICAgICAgICAgIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKQorKDIg cm93cykKKworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHBnX3Rl bXAsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHRlbXBvcmFyeSBwYXJ0aXRpb25zIGludG8gYSBw ZXJzaXN0ZW50IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8w XzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgYSBwZXJtYW5l bnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiAidCIKK1JPTExC QUNLOworREVBTExPQ0FURSBnZXRfcGFydGl0aW9uX2luZm87CistLSBDaGVjayB0aGUgbmV3IHBh cnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZXNwYWNlCitTRVQgc2VhcmNoX3BhdGggPSBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBS SU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFS VElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUg VEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOwor Q1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElO VE8gdHBfMF8yOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcwor ICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUsIHRhYmxlc3BhY2U7 CisgdGFibGVuYW1lIHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIHQgICAgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzIgICAgfCByZWdy ZXNzX3RibHNwYWNlCisoMiByb3dzKQorCitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRh Ymxlc3BhY2UgRlJPTSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBf MF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9SREVS IEJZIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlOworIHRhYmxlbmFtZSB8ICBpbmRl eG5hbWUgIHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgIHwgdF9wa2V5ICAgICAgfCByZWdyZXNzX3RibHNw YWNlCisgdHBfMF8yICAgIHwgdHBfMF8yX3BrZXkgfCByZWdyZXNzX3RibHNwYWNlCisoMiByb3dz KQorCitEUk9QIFRBQkxFIHQ7CistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBw YXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19t ZXJnZV9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFU RSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25z X21lcmdlX2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5h bWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVS RSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMic6OnJlZ2NsYXNzKQorT1JERVIgQlkg Yy5yZWxuYW1lOworIHJlbG5hbWUgfCAgICAgICAgYW1uYW1lICAgICAgICAgCistLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgIHwgcGFydGl0aW9uc19tZXJnZV9oZWFw CisgdHBfMF8yICB8IHBhcnRpdGlvbnNfbWVyZ2VfaGVhcAorKDIgcm93cykKKworRFJPUCBUQUJM RSB0OworRFJPUCBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKKy0tIFRlc3Qg cGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJs ZSBhbmQgYWxsCistLSB0aGUgbWVyZ2luZyBwYXJ0aXRpb25zIHRvIGRvIHRoZSBtZXJnZS4KK0NS RUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0dSQU5UIEFM TCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChp KTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDIpOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7 CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9i b2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2Jv YjsKKy0tIEVSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8wXzEKK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6 ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzBfMQorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OOworQUxURVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdl X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2Vf Ym9iOworLS0gRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzFfMgorQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJP UjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMV8yCitSRVNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT047CitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVy Z2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJn ZV9ib2I7CistLSBPazoKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0 cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworRFJPUCBU QUJMRSB0OworLS0gVGVzdDogd2UgY2FuJ3QgbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRpZmZlcmVu dCBvd25lcnMKK0NSRUFURSBUQUJMRSB0cF8wXzEoaSBpbnQpOworQUxURVIgVEFCTEUgdHBfMF8x IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFRBQkxFIHRw XzFfMihpIGludCk7CitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRp b25fbWVyZ2VfYm9iOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0Ug KGkpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYWxpY2UnOgorXGR0IHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgICB8ICBOYW1lICB8IFR5cGUg IHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMF8xIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlv bl9tZXJnZV9hbGljZQorKDEgcm93KQorCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYm9iJzoKK1xkdCB0cF8xXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwg ICAgICAgICAgICBPd25lciAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9u c19tZXJnZV9zY2hlbWEgfCB0cF8xXzIgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdl X2JvYgorKDEgcm93KQorCistLSBFUlJPUjogIHBhcnRpdGlvbnMgYmVpbmcgbWVyZ2VkIGhhdmUg ZGlmZmVyZW50IG93bmVycworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIHBhcnRpdGlvbnMgYmVpbmcgbWVyZ2VkIGhh dmUgZGlmZmVyZW50IG93bmVycworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGlj ZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIFRl c3QgZm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFS VElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdHAyIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7Cist LSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBt ZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxLCB0cDIpIElOVE8gdHAz OworRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3QgYmUg bWVyZ2VkCistLSBFUlJPUjogIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxk IGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHAxKSBJTlRPIHRwMzsKK0VSUk9SOiAgbGlzdCBvZiBwYXJ0aXRpb25zIHRvIGJl IG1lcmdlZCBzaG91bGQgaW5jbHVkZSBhdCBsZWFzdCB0d28gcGFydGl0aW9ucworRFJPUCBUQUJM RSB0OworLS0gVGVzdCBmb3IgbWVyZ2VkIHBhcnRpdGlvbiBwcm9wZXJ0aWVzOgorLS0gKiBTVEFU SVNUSUNTIGlzIGVtcHR5CistLSAqIENPTU1FTlQgaXMgZW1wdHkKKy0tICogREVGQVVMVFMgYXJl IHRoZSBzYW1lIGFzIERFRkFVTFRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBTVE9SQUdF IGlzIHRoZSBzYW1lIGFzIFNUT1JBR0UgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIEdFTkVS QVRFRCBhbmQgQ09OU1RSQUlOVFMgYXJlIHRoZSBzYW1lIGFzIEdFTkVSQVRFRCBhbmQgQ09OU1RS QUlOVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFRSSUdHRVJTIGFyZSB0aGUgc2FtZSBh cyBUUklHR0VSUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKK1xzZXQgSElERV9UT0FTVF9DT01QUkVT U0lPTiBmYWxzZQorQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RP UkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcsCisgYiBi aWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAxJykgU1RPUkVE KSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENPTFVNTiB0LmkgSVMg J3QxLmknOworQ1JFQVRFIFRBQkxFIHRwXzBfMQorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBT VE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF8wXzEnLAorIGIgYmlnaW50LAorIGQgZGF0 ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJM RSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOwor Q09NTUVOVCBPTiBDT0xVTU4gdHBfMF8xLmkgSVMgJ3RwXzBfMS5pJzsKK0NSRUFURSBUQUJMRSB0 cF8xXzIKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2Rl ZmF1bHRfdHBfMV8yJywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAo JzIwMjItMDMtMDMnKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRw XzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzFf Mi5pIElTICd0cF8xXzIuaSc7CitDUkVBVEUgU1RBVElTVElDUyB0X3N0YXQgKERFUEVOREVOQ0lF Uykgb24gaSwgYiBmcm9tIHQ7CitDUkVBVEUgU1RBVElTVElDUyB0cF8wXzFfc3RhdCAoREVQRU5E RU5DSUVTKSBvbiBpLCBiIGZyb20gdHBfMF8xOworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMV8yX3N0 YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzFfMjsKK0FMVEVSIFRBQkxFIHQgQURE IENPTlNUUkFJTlQgdF9iX2NoZWNrIENIRUNLIChiID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBD T05TVFJBSU5UIHRfYl9jaGVjazEgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBU QUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7 CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJ RDsKK0lOU0VSVCBJTlRPIHRwXzBfMShpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7CitJ TlNFUlQgSU5UTyB0cF8xXzIoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDIpOworQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpIFJFVFVSTlMgdHJpZ2dlciBM QU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd0cmln Z2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1Zb MF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgUkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZ JDsKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5T RVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rp b24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwXzBfMV9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2Vy IEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVS RSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8wXzEnKTsKK0NSRUFURSBUUklHR0VSIHRwXzFfMl9iZWZv cmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMV8yIEZPUiBFQUNIIFJP VworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8xXzInKTsKK1xkKyB0 cF8wXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMSIKKyBDb2x1bW4gfCAgVHlw ZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQg ICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBDb21wcmVzc2lvbiB8IFN0YXRzIHRhcmdl dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgfCB0cF8wXzEuaQorIHQgICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICdkZWZhdWx0X3RwXzBfMSc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgIHwg bWFpbiAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgYmlnaW50 ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAg fCAKKyBkICAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQg YWx3YXlzIGFzICgnMDItMDItMjAyMic6OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5VTEwpIEFO RCAoYWJzKGkpID49IDApIEFORCAoYWJzKGkpIDwgMSkpCitDaGVjayBjb25zdHJhaW50czoKKyAg ICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVjazEiIENIRUNLIChiID4g MCkgTk9UIEVORk9SQ0VECisgICAgInRfYl9jaGVjazIiIENIRUNLIChiID4gMCkgTk9UIFZBTElE CitTdGF0aXN0aWNzIG9iamVjdHM6CisgICAgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBf MV9zdGF0IiAoZGVwZW5kZW5jaWVzKSBPTiBpLCBiIEZST00gdHBfMF8xCitOb3QtbnVsbCBjb25z dHJhaW50czoKKyAgICAidHBfMF8xX2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVk KQorICAgICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdn ZXJzOgorICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRw XzBfMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0Jyks IE9OIFRBQkxFIHQKKyAgICB0cF8wXzFfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUg SU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1 bmN0aW9uKCd0cF8wXzEnKQorCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMTsKK1xkKyB0cF8wXzEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hLnRwXzBfMSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0b3Jh Z2UgIHwgQ29tcHJlc3Npb24gfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg bm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBsYWluICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKKyB0ICAgICAgfCB0 ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90Jzo6dGV4dCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IGV4dGVuZGVkIHwgcGdseiAgICAgICAgfCAgICAgICAg ICAgICAgfCAKKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAgfCBkYXRlICAgIHwgICAgICAg ICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgnMDEtMDEtMjAyMic6OmRhdGUp IHN0b3JlZCB8IHBsYWluICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRp dGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorUGFydGl0aW9uIGNvbnN0cmFp bnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFicyhpKSA+PSAwKSBBTkQgKGFicyhpKSA8 IDIpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAwKQor ICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+IDApIE5PVCBFTkZPUkNFRAorICAgICJ0X2JfY2hl Y2syIiBDSEVDSyAoYiA+IDApIE5PVCBWQUxJRAorTm90LW51bGwgY29uc3RyYWludHM6CisgICAg InRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9U IE5VTEwgImIiIChpbmhlcml0ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVf aW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNIIFJPVyBF WEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorCitJTlNF UlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK05PVElDRTogIHRyaWdn ZXIodCkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBCRUZPUkUsIGxldmVsID0gUk9X CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdCBPUkRFUiBCWSBiOworIHRhYmxl b2lkIHwgaSB8ICAgICAgIHQgICAgICAgIHwgYiB8ICAgICBkICAgICAgCistLS0tLS0tLS0tKy0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0KKyB0cF8wXzEgICB8IDAgfCBkZWZh dWx0X3RwXzBfMSB8IDEgfCAwMS0wMS0yMDIyCisgdHBfMF8xICAgfCAxIHwgZGVmYXVsdF90cF8x XzIgfCAyIHwgMDEtMDEtMjAyMgorIHRwXzBfMSAgIHwgMSB8IGRlZmF1bHRfdCAgICAgIHwgMyB8 IDAxLTAxLTIwMjIKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gdHJp Z2dlcl9mdW5jdGlvbigpOworXHNldCBISURFX1RPQVNUX0NPTVBSRVNTSU9OIHRydWUKKy0tIFRl c3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCB2YWxpZCBmb3JlaWduIGtleSBjb25zdHJhaW50 CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRF IFRBQkxFIHRfZmsgKGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOwor QUxURVIgVEFCTEUgdF9mayBBREQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAo aSkgUkVGRVJFTkNFUyB0IE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9O UyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBG T1JFSUdOIEtFWQorXGQgdHBfMF8yCisgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9zY2hl bWEudHBfMF8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERl ZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK1BhcnRpdGlv biBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorSW5kZXhlczoKKyAgICAidHBfMF8y X3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkKK1JlZmVyZW5jZWQgYnk6CisgICAgVEFCTEUg InRfZmsiIENPTlNUUkFJTlQgInRfZmtfaV9ma2V5IiBGT1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNF UyB0KGkpIE5PVCBWQUxJRAorCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUg InRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxU RVIgVEFCTEUgdF9mayBWQUxJREFURSBDT05TVFJBSU5UIHRfZmtfaV9ma2V5OworRVJST1I6ICBp bnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJ0X2ZrX2lfZmtleSIKK0RFVEFJTDogIEtleSAoaSk9KDIpIGlzIG5vdCBwcmVzZW50 IGluIHRhYmxlICJ0Ii4KK0RST1AgVEFCTEUgdF9mazsKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3Qg TUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCBlbmZvcmNlZCBmb3JlaWduIGtleSBjb25zdHJhaW50 CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRF IFRBQkxFIHRfZmsgKGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOwor QUxURVIgVEFCTEUgdF9mayBBREQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAo aSkgUkVGRVJFTkNFUyB0IE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIE5PVCBFTkZP UkNFRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCisgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJn ZV9zY2hlbWEudHBfMF8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJs ZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK1Bh cnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorSW5kZXhlczoKKyAgICAi dHBfMF8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkKK1JlZmVyZW5jZWQgYnk6CisgICAg VEFCTEUgInRfZmsiIENPTlNUUkFJTlQgInRfZmtfaV9ma2V5IiBGT1JFSUdOIEtFWSAoaSkgUkVG RVJFTkNFUyB0KGkpIE5PVCBFTkZPUkNFRAorCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUg b24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9m a2V5IgorQUxURVIgVEFCTEUgdF9mayBBTFRFUiBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEVORk9S Q0VEOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0RFVEFJTDogIEtleSAoaSk9KDIp IGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0Ii4KK0RST1AgVEFCTEUgdF9mazsKK0RST1AgVEFC TEUgdDsKKy0tIFRlc3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1 bW5zLgorQ1JFQVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMg YXMgKHRhYmxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFC TEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JF QVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIz NDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworLS0gU2hvdWxkIGJlIDAg YmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIGRpZmZlcmVu dCBmcm9tCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNU IGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lk IEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykK KworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFi bGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7Cist LSBTaG91bGQgYmUgMSBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBp PTAgaXMgdGhlIHNhbWUgYXMKKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBp PTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNF TEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAg MQorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IGZvciBnZW5lcmF0ZWQgY29sdW1u cyAoZGlmZmVyZW50IG9yZGVyIG9mIGNvbHVtbnMgaW4gcGFydGl0aW9uZWQgdGFibGUKKy0tIGFu ZCBwYXJ0aXRpb25zKS4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgZyBpbnQgR0VORVJBVEVEIEFM V0FZUyBBUyAoaSArIHRhYmxlb2lkOjppbnQpKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JF QVRFIFRBQkxFIHRwXzEgKGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6 aW50KSwgaSBpbnQpOworQ1JFQVRFIFRBQkxFIHRwXzIgKGcgaW50IEdFTkVSQVRFRCBBTFdBWVMg QVMgKGkgKyB0YWJsZW9pZDo6aW50KSwgaSBpbnQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFS VElUSU9OIHRwXzEgRk9SIFZBTFVFUyBGUk9NICgtMSkgVE8gKDEwKTsKK0FMVEVSIFRBQkxFIHQg QVRUQUNIIFBBUlRJVElPTiB0cF8yIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitBTFRF UiBUQUJMRSB0IEFERCBDSEVDSyAoZyA+IDApOworQUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGkg PiAwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICg1KSwgKDE1KTsKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHBfMSwgdHBfMikgSU5UTyB0cF8xMjsKK0lOU0VSVCBJTlRPIHQgVkFM VUVTICgxNik7CistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0cF8xMiIgdmlvbGF0 ZXMgY2hlY2sgY29uc3RyYWludCAidF9pX2NoZWNrIgorSU5TRVJUIElOVE8gdCBWQUxVRVMgKDAp OworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidHBfMTIiIHZpb2xhdGVzIGNoZWNrIGNv bnN0cmFpbnQgInRfaV9jaGVjayIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgwLCB2 aXJ0dWFsKS4KKy0tIFNob3VsZCBiZSAzIHJvd3M6ICg1KSwgKDE1KSwgKDE2KToKK1NFTEVDVCBp IEZST00gdCBPUkRFUiBCWSBpOworIGkgIAorLS0tLQorICA1CisgMTUKKyAxNgorKDMgcm93cykK KworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBmb3IgdGhlIHNhbWUgdGFibGVvaWQgKDE1ICsgdGFi bGVvaWQpID0gKDUgKyB0YWJsZW9pZCkgKyAxMDoKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hF UkUgaSA9IDE1IEFORCBnIElOIChTRUxFQ1QgZyArIDEwIEZST00gdCBXSEVSRSBpID0gNSk7Cisg Y291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworUkVTRVQg c2VhcmNoX3BhdGg7CistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitE Uk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTI7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQppbmRleCBmYmZmYzY3YWU2MC4uMmQzZjUwYTQzYmEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQpAQCAtMTIzLDcgKzEyMyw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBw bHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRy CiAjIFRoZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcg c3RhdHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10ZXN0 OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5k ZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFp biBjb21wcmVzc2lvbiBjb21wcmVzc2lvbl9sejQgbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUgbnVt YQordGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSBy ZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlv bl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1v aXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCiAKICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNy ZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0 IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVy Z2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDgxODMxODMwMDYKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCkBAIC0wLDAg KzEsNzkxIEBACistLQorLS0gUEFSVElUSU9OU19NRVJHRQorLS0gVGVzdHMgZm9yICJBTFRFUiBU QUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4iIGNvbW1hbmQKKy0tCisKK0NSRUFURSBTQ0hF TUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7CitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBw dWJsaWM7CisKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0 IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJz b25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgnMjAyMS0xMi0zMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w NC0wMScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19k YXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8y IFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUn KSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIHdpdGggbmFtZSAic2Fs ZXNfZmViMjAyMiIgaXMgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyMDIy KSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgInNhbGVzX2FwcjIwMjIi IGlzIG5vdCBhIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHNhbGVz X2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVSUk9SOiAgY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gInNh bGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorLS0g REVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3Qg ZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKKy0t IChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIp CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIy LCBzYWxlc19tYXIyMDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworLS0gRVJST1I6ICBjYW4g bm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRp b24gInNhbGVzX2RlYzIwMjEiCistLSBERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2phbjIwMjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19kZWMyMDIxIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVj MjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElO VE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1l ICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIy OworLS1FUlJPUiwgc2FsZXNfYXByXzIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNh bGVzX2phbjIwMjIpIElOVE8gc2FsZXNfYXByXzI7CisKK0NSRUFURSBWSUVXIGphbjIwMjJ2IGFz IFNFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1F UkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNf ZGVjX2phbl9mZWIyMDIyOworRFJPUCBWSUVXIGphbjIwMjJ2OworCistLSBOTyBFUlJPUjogdGVz dCBmb3IgY3VzdG9tIHBhcnRpdGlvbnMgb3JkZXIsIHNvdXJjZSBwYXJ0aXRpb25zIG5vdCBpbiB0 aGUgc2VhcmNoX3BhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h MiwgcHVibGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfcmFu Z2UgTUVSR0UgUEFSVElUSU9OUyAoCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2Zl YjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX21hcjIwMjIsCisgIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2phbjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYl9tYXIy MDIyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsK KworUFJFUEFSRSBnZXRfcGFydGl0aW9uX2luZm8ocmVnY2xhc3NbXSkgQVMKK1NFTEVDVCAgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsCisgICAgICAgIGMucmVscGVyc2lzdGVuY2UsCisgICAg ICAgIGMucmVsa2luZCwKKyAgICAgICAgaS5pbmhkZXRhY2hwZW5kaW5nLAorICAgICAgICBwZ19j YXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKK0ZST00gICAgcGdfY2F0 YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKK1dIRVJFICAgYy5vaWQg PSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9IEFOWSgkMSkKK09SREVSIEJZIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywKKyAgICAg ICAgIGMub2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIjsKKworRVhFQ1VURSBnZXRfcGFy dGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsK KworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUsIHRoZW4gbWVyZ2UgcGFy dGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19k YXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVM VDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5n ZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAn MjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisg ICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAz LTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAn TXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwg ICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwK KyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScs ICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjIt MDUtMDQnKTsKKworU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVzX3Jh bmdlJzo6cmVnY2xhc3MpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgor RVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworLS0gY2hlY2sg c2NoZW1hLXF1YWxpZmllZCBuYW1lIG9mIHRoZSBuZXcgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIy LCBzYWxlc19hcHIyMDIyKSBJTlRPIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJf bWFyX2FwcjIwMjI7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVD VVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOworCitTRUxFQ1QgKiBGUk9N IHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYl9tYXJfYXByMjAyMicgYW5k IHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEyJzsKKworU0VMRUNUIHRhYmxl b2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdj bGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKKy0tIFVzZSBpbmRleHNj YW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNh bGVzX2ZlYl9tYXJfYXByMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VM RUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIy IHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1JFU0VUIGVuYWJsZV9zZXFzY2Fu OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gTWVyZ2Ugc29tZSBwYXJ0aXRp b25zIGludG8gREVGQVVMVCBwYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0 ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0w MS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAg J0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAs ICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyks CisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAg ICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4 MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTkn KSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0 aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKKy0tIE1lcmdlIHBhcnRpdGlvbnMgKGluY2x1 ZGUgREVGQVVMVCBwYXJ0aXRpb24pIGludG8gcGFydGl0aW9uIHdpdGggdGhlIHNhbWUKKy0tIG5h bWUKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMKKyAgKHNhbGVzX2ph bjIwMjIsIHNhbGVzX21hcjIwMjIsIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX290aGVy cykgSU5UTyBzYWxlc19vdGhlcnM7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIE9SREVS IEJZIHNhbGVzcGVyc29uX2lkOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25z OgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19yYW5nZX0nKTsKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBw YXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdp dGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2Fs ZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFT CisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxl c19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIs ICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdT YWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIwMjIs IDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2Rh dGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZS T00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl ciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRP IChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEs IDEyLCA4KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAy MiwgMiwgNCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIw MjIsIDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAy MDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworCitTRUxFQ1QgdGFibGVv aWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZTsKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0 ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNh bGVzX2phbl9mZWIyMDIyOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25h bWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFn ZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZTsKK0RST1AgVEFCTEUgc2Fs ZXNfZGF0ZTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQg dGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3Bl cnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVz cGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUyMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgyMCkg VE8gKDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwIFBBUlRJVElPTiBPRiBzYWxl c3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxl c3Blb3BsZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAn cGxwZ3NxbCcgQVMgJEJPRFkkCitCRUdJTgorICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBj YWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19P UCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CisK K0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dl cgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggU1RB VEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdz YWxlc3Blb3BsZScpOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3BsZQorICAgIEZP UiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dl cignc2FsZXNwZW9wbGUnKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cg KyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxMCwgJ01heScp OworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxl c3Blb3BsZTEwXzIwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8z MCwgc2FsZXNwZW9wbGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworCistLSAyIHRyaWdn ZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxl c3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmly ZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMgKDMwLCAn Rm9yZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzcGVvcGxlMDFfMTA7CitTRUxFQ1QgKiBGUk9N IHNhbGVzcGVvcGxlMTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7CitEUk9QIEZVTkNU SU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworCistLQorLS0gVGVzdDogbWVyZ2UgcGFy dGl0aW9ucyB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21lIGRlbGV0ZWQg Y29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwKGQxIFZBUkNIQVIoMzApLCBz YWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCkpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAoc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBkMiBJTlQsICBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFU RSBUQUJMRSBzYWxlc3Blb3BsZTMwXzQwKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwg ZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisKK0lOU0VSVCBJTlRPIHNh bGVzcGVvcGxlMTBfMjAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAnSXZhbm92Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc3Blb3BsZTIwXzMwIFZBTFVFUyAoMjAsIDEwMSwgJ1NtaXJub2ZmJyk7 CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzEsIG5vdygpLCAnUG9wb3Yn KTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBEUk9QIENPTFVNTiBkMTsKK0FMVEVS IFRBQkxFIHNhbGVzcGVvcGxlMjBfMzAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxl c3Blb3BsZTMwXzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBB VFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDIwKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9w bGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAo MzApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1Bv aXJvdCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworCitBTFRFUiBUQUJMRSBz YWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc3Blb3BsZTEwXzIwLCBzYWxlc3Blb3Bs ZTIwXzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVzcGVvcGxlMTBfNDA7CisKK3NlbGVj dCAqIGZyb20gc2FsZXNwZW9wbGU7CitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMDFfMTA7Citz ZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMTBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGU7 CisKKy0tCistLSBUZXN0OiBtZXJnZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFURSBUQUJMRSBz YWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJ VElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBBUlRJVElP TiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIw MjItMDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMwIFBBUlRJVElPTiBP RiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjIt MDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7 CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERF RkFVTFQ7CisKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxl c19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgy LCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAy MDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz JyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9p cm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcy MDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAg KDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAg IDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQt MDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdH YW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAg JzIwMjItMDUtMDQnKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVz X2FwcjIwMjIgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBz YWxlc3BlcnNvbl9pZDsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc19hcHIyMDIyXzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIy MDIyXzIwXzMwKSBJTlRPIHNhbGVzX2Fwcl9hbGw7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc19hcHIyMDIyIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4 dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7 CisKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0tIFRlc3Q6IHNwZWNp ZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZ LAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigy MCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkg TElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVs c2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0 IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2Vu dHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IERFRkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtFIHNh bGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMgSU4gKCdPc2xv JywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgREVGQVVMVDsKKworCitDUkVBVEUgVEFCTEUg c2FsZXNfZXh0ZXJuYWwgKExJS0Ugc2FsZXNfbGlzdCk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZXh0 ZXJuYWwyICh2Y2ggVkFSQ0hBUig1KSk7CisKKy0tIEVSUk9SOiAgInNhbGVzX2V4dGVybmFsIiBp cyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitBTFRF UiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vh c3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVSUk9SOiAgInNhbGVzX2V4 dGVybmFsMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJzYWxlc19s aXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0 LCBzYWxlc19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2FsZXNfYWxsOworLS0gRVJST1I6 ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiAi c2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElOVE8gc2FsZXNfYWxsOworCitEUk9Q IFRBQkxFIHNhbGVzX2V4dGVybmFsMjsKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9Q IFRBQkxFIHNhbGVzX2xpc3QyOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVz dDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBBUlRJVElPTlMgd2l0aCBkYXRhCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJBVEVEIEFM V0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVz X3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRF KQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVz X2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2Fs ZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHgg T04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUg c2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3Nsbycs ICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3Qg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxl c19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKTsK K0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKKworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAw LCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwg JzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcy MDIyLTAzLTA1JyksCisgICgnSXZhbm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAy Mi0wMy0wNCcpLAorICAoJ0RlZXYnLCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjIt MDMtMDcnKSwKKyAgKCdQb2lyb3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAz LTAxJyksCisgICgnTWF5JywgICAgICAnSGVsc2lua2knLCAgICAgICAxMjAwLCAnMjAyMi0wMy0w NicpLAorICAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDkn KSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyks CisgICgnSGFsZGVyJywgICAnT3NsbycsICAgICAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAor ICAoJ011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAg KCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgn R2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1Bs YXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKKworLS0gc2hv dyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZv KCd7c2FsZXNfbGlzdH0nKTsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2Fs bDsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3Bh cnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENP TExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGlu ZyBpbmRleGVzIGFmdGVyIG1lcmdpbmcgcGFydGl0aW9ucworU0VUIGVuYWJsZV9zZXFzY2FuID0g T0ZGOworCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfYWxsIFdIRVJF IHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBz YWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9N IHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00g c2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJ dmFub3YnOworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUg PSAnSXZhbm92JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgc2FsZXNf bGlzdDsKKworLS0KKy0tIFRyeSB0byBNRVJHRSBwYXJ0aXRpb25zIG9mIGFub3RoZXIgdGFibGUu CistLQorQ1JFQVRFIFRBQkxFIHQxIChpIGludCwgYSBpbnQsIGIgaW50LCBjIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChhLCBiKTsKK0NSRUFURSBUQUJMRSB0MXAxIFBBUlRJVElPTiBPRiB0MSBG T1IgVkFMVUVTIEZST00gKDEsIDEpIFRPICgxLCAyKTsKK0NSRUFURSBUQUJMRSB0MiAoaSBpbnQs IHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsKK0NSRUFURSBUQUJMRSB0MnBhIFBBUlRJ VElPTiBPRiB0MiBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdDJyk7CitDUkVBVEUgVEFCTEUg dDMgKGkgaW50LCB0IHRleHQpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXAxIiBpcyBub3Qg YSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElU SU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0MnA7CistLSBFUlJPUjogICJ0MyIgaXMgbm90IGEgcGFy dGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJ0MiIKK0FMVEVSIFRBQkxFIHQyIE1FUkdFIFBB UlRJVElPTlMgKHQycGEsIHQzKSBJTlRPIHQycDsKKworRFJPUCBUQUJMRSB0MzsKK0RST1AgVEFC TEUgdDI7CitEUk9QIFRBQkxFIHQxOworCisKKy0tCistLSBDaGVjayB0aGUgcGFydGl0aW9uIGlu ZGV4IG5hbWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBzYW1lIGFzIG9uZQorLS0gb2Yg dGhlIG1lcmdlZCBwYXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJMRSB0IChpIGludCwgUFJJTUFS WSBLRVkoaSkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK0NSRUFURSBUQUJMRSB0cF8wXzEg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCitDUkVB VEUgSU5ERVggdGlkeCBPTiB0KGkpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0 cF8xXzIsIHRwXzBfMSkgSU5UTyB0cF8xXzI7CisKKy0tIEluZGV4bmFtZSB2YWx1ZXMgc2hvdWxk IGJlICd0cF8xXzJfcGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgorXGQrIHRwXzFfMgorCitEUk9Q IFRBQkxFIHQ7CisKKy0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9ucyBvZiB0ZW1wb3Jhcnkg dGFibGUuCistLQorQkVHSU47CitTSE9XIHNlYXJjaF9wYXRoOworQ1JFQVRFIFRFTVAgVEFCTEUg dCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkgT04gQ09NTUlUIERST1A7CitDUkVBVEUg VEVNUCBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMik7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8yXzMgUEFSVElUSU9OIE9GIHQg Rk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8zXzQgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAoNCk7CisKK0FMVEVSIFRBQkxFIHQg TUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gcGdfdGVtcC50cF8wXzI7CitB TFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMiwgdHBfMl8zKSBJTlRPIHBnX3Rl bXAudHBfMF8zOworCistLSBQYXJ0aXRpb24gc2hvdWxkIGJlIHRlbXBvcmFyeS4KK0VYRUNVVEUg Z2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKy0tIEVSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBl cm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0Igor QUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzMsIHRwXzNfNCkgSU5UTyB0cF8w XzQ7CitST0xMQkFDSzsKKworLS0KKy0tIFRyeSBtaXhpbmcgcGVybWFuZW50IGFuZCB0ZW1wb3Jh cnkgcGFydGl0aW9ucy4KKy0tCitCRUdJTjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hLCBwZ190ZW1wLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9p bmZvKCd7dH0nKTsKK1NBVkVQT0lOVCBzOworCitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBw YXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVu dCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworUk9MTEJBQ0sg VE8gU0FWRVBPSU5UIHM7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YSwgcHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0 ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHBnX3RlbXAudHBfMF8yOworUk9MTEJBQ0s7CisKK0JFR0lOOworU0VU IHNlYXJjaF9wYXRoID0gcGdfdGVtcCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsK K0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBU QUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitD UkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDIpOworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVscGVyc2lzdGVu Y2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAndCc6OnJlZ2NsYXNz OworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworCitTRVQgc2VhcmNoX3BhdGgg PSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcGdfdGVtcCwgcHVibGljOworCistLSBDYW4ndCBt ZXJnZSB0ZW1wb3JhcnkgcGFydGl0aW9ucyBpbnRvIGEgcGVyc2lzdGVudCBwYXJ0aXRpb24KK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8y OworUk9MTEJBQ0s7CisKK0RFQUxMT0NBVEUgZ2V0X3BhcnRpdGlvbl9pbmZvOworCistLSBDaGVj ayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZXNwYWNlCitTRVQgc2Vh cmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIFRBQkxF IHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2U7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8x LCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9N IHBnX3RhYmxlcworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hl bWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUs IHRhYmxlc3BhY2U7CitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2UgRlJP TSBwZ19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFt ZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlOworRFJPUCBUQUJMRSB0OworCistLSBDaGVjayB0aGUg bmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJsZSBhY2Nlc3MgbWV0aG9kCitTRVQg c2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworQ1JFQVRFIEFD Q0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJnZV9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFw X3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJB TkdFIChpKSBVU0lORyBwYXJ0aXRpb25zX21lcmdlX2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8x IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxF IHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVS IFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOwor U0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEg T04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBf Mic6OnJlZ2NsYXNzKQorT1JERVIgQlkgYy5yZWxuYW1lOworRFJPUCBUQUJMRSB0OworRFJPUCBB Q0NFU1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKKworLS0gVGVzdCBwZXJtaXNzaW9u IGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCBhbGwK Ky0tIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMgdG8gZG8gdGhlIG1lcmdlLgorQ1JFQVRFIFJPTEUg cmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVN QSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7 CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxp Y2U7CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVB VEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEp OworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUg dHBfMF8xCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJ TlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUg dHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworLS0gRVJST1I6ICBt dXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzFfMgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2JvYjsKKy0tIE9rOgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEs IHRwXzFfMikgSU5UTyB0cF8wXzI7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0RS T1AgVEFCTEUgdDsKKworLS0gVGVzdDogd2UgY2FuJ3QgbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGRp ZmZlcmVudCBvd25lcnMKK0NSRUFURSBUQUJMRSB0cF8wXzEoaSBpbnQpOworQUxURVIgVEFCTEUg dHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFRB QkxFIHRwXzFfMihpIGludCk7CitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVzc19w YXJ0aXRpb25fbWVyZ2VfYm9iOworCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSAoaSk7CisKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04g dHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworCistLSBPd25lciBpcyAncmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYWxpY2UnOgorXGR0IHRwXzBfMQorLS0gT3duZXIgaXMgJ3JlZ3Jl c3NfcGFydGl0aW9uX21lcmdlX2JvYic6CitcZHQgdHBfMV8yCisKKy0tIEVSUk9SOiAgcGFydGl0 aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzCitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworRFJPUCBUQUJM RSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgRlJPTSBy ZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworRFJP UCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3Nf cGFydGl0aW9uX21lcmdlX2JvYjsKKworCistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRh YmxlCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRF IFRBQkxFIHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVN QUlOREVSIDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJ VEggKE1PRFVMVVMgMiwgUkVNQUlOREVSIDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBo YXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVS R0UgUEFSVElUSU9OUyAodHAxLCB0cDIpIElOVE8gdHAzOworCistLSBFUlJPUjogIGxpc3Qgb2Yg cGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBhcnRp dGlvbnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsKKwor RFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3QgZm9yIG1lcmdlZCBwYXJ0aXRpb24gcHJvcGVydGll czoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAq IERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUK Ky0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJs ZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFU RUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBh cmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitcc2V0IEhJREVf VE9BU1RfQ09NUFJFU1NJT04gZmFsc2UKKworQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVM TCwKKyB0IHRleHQgU1RPUkFHRSBFWFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2Rl ZmF1bHRfdCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIy LTAxLTAxJykgU1RPUkVEKSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9O IENPTFVNTiB0LmkgSVMgJ3QxLmknOworCitDUkVBVEUgVEFCTEUgdHBfMF8xCisoaSBpbnQgTk9U IE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwXzBfMScsCisg YiBiaWdpbnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykgU1RP UkVEKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMSk7CitDT01NRU5UIE9OIENPTFVNTiB0cF8wXzEuaSBJUyAndHBfMF8xLmkn OworCitDUkVBVEUgVEFCTEUgdHBfMV8yCisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JB R0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwXzFfMicsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdF TkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAzLTAzJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQg QVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDT01N RU5UIE9OIENPTFVNTiB0cF8xXzIuaSBJUyAndHBfMV8yLmknOworCitDUkVBVEUgU1RBVElTVElD UyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitDUkVBVEUgU1RBVElTVElD UyB0cF8wXzFfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdHBfMF8xOworQ1JFQVRF IFNUQVRJU1RJQ1MgdHBfMV8yX3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwXzFf MjsKKworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sgQ0hFQ0sgKGIgPiAw KTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMSBDSEVDSyAoYiA+IDAp IE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrMiBD SEVDSyAoYiA+IDApIE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9i X25uIE5PVCBOVUxMIGIgTk9UIFZBTElEOworCitJTlNFUlQgSU5UTyB0cF8wXzEoaSwgdCwgYikg VkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBfMV8yKGksIHQsIGIpIFZBTFVF UygxLCBERUZBVUxULCAyKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVu Y3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JF R0lOCisgIFJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4g PSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7Cisg IFJFVFVSTiBuZXc7CitFTkQ7CiskQk9EWSQ7CisKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2lu c2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNV VEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwXzBf MV9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBF QUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8wXzEnKTsK K0NSRUFURSBUUklHR0VSIHRwXzFfMl9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJ TlNFUlQgT04gdHBfMV8yIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2Vy X2Z1bmN0aW9uKCd0cF8xXzInKTsKKworXGQrIHRwXzBfMQorQUxURVIgVEFCTEUgdCBNRVJHRSBQ QVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzE7CitcZCsgdHBfMF8xCisKK0lO U0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDMpOworU0VMRUNUIHRhYmxl b2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgYjsKK0RST1AgVEFCTEUgdDsKK0RST1Ag RlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpOworXHNldCBISURFX1RPQVNUX0NPTVBSRVNTSU9O IHRydWUKKworCistLSBUZXN0IE1FUkdFIFBBUlRJVElPTlMgd2l0aCBub3QgdmFsaWQgZm9yZWln biBrZXkgY29uc3RyYWludAorQ1JFQVRFIFRBQkxFIHQgKGkgSU5UIFBSSU1BUlkgS0VZKSBQQVJU SVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAo MCksICgxKTsKK0NSRUFURSBUQUJMRSB0X2ZrIChpIElOVCk7CitJTlNFUlQgSU5UTyB0X2ZrIFZB TFVFUyAoMSksICgyKTsKK0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2Zr ZXkgRk9SRUlHTiBLRVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworLS0gU2hv dWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCistLSBFUlJPUjogIGluc2Vy dCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBWQUxJREFURSBDT05TVFJBSU5UIHRf ZmtfaV9ma2V5OworCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRBQkxFIHQ7CisKKy0tIFRlc3Qg TUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCBlbmZvcmNlZCBmb3JlaWduIGtleSBjb25zdHJhaW50 CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAo aSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgyKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRF IFRBQkxFIHRfZmsgKGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOwor CitBTFRFUiBUQUJMRSB0X2ZrIEFERCBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEZPUkVJR04gS0VZ IChpKSBSRUZFUkVOQ0VTIHQgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJU SVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CisKKy0tIFNob3VsZCBiZSBOT1Qg RU5GT1JDRUQgRk9SRUlHTiBLRVkKK1xkIHRwXzBfMgorLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBk YXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2Zr X2lfZmtleSIKK0FMVEVSIFRBQkxFIHRfZmsgQUxURVIgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBF TkZPUkNFRDsKKworRFJPUCBUQUJMRSB0X2ZrOworRFJPUCBUQUJMRSB0OworCisKKy0tIFRlc3Qg Zm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRB QkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lkKSBz dG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFf MiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxF IHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4gMTIzNDU2Nzg5KTsKK0lOU0VS VCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworCistLSBTaG91bGQgYmUgMCBiZWNhdXNlIHBhcnRp dGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50IGZyb20KKy0tIHBh cnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJP TSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJF IGkgPSAxKTsKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikg d2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJl LgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0 cF8wXzI7CisKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9y IHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0gcGFydGl0aW9uIGlkZW50aWZpZXIgZm9y IHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRh Yl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworCitEUk9QIFRBQkxF IHQ7CisKKworLS0gVGVzdCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMgKGRpZmZlcmVudCBvcmRlciBv ZiBjb2x1bW5zIGluIHBhcnRpdGlvbmVkIHRhYmxlCistLSBhbmQgcGFydGl0aW9ucykuCitDUkVB VEUgVEFCTEUgdCAoaSBpbnQsIGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9p ZDo6aW50KSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xIChnIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6OmludCksIGkgaW50KTsKK0NSRUFU RSBUQUJMRSB0cF8yIChnIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpICsgdGFibGVvaWQ6Omlu dCksIGkgaW50KTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xIEZPUiBWQUxV RVMgRlJPTSAoLTEpIFRPICgxMCk7CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBf MiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sg KGcgPiAwKTsKK0FMVEVSIFRBQkxFIHQgQUREIENIRUNLIChpID4gMCk7CitJTlNFUlQgSU5UTyB0 IFZBTFVFUyAoNSksICgxNSk7CisKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBf MSwgdHBfMikgSU5UTyB0cF8xMjsKKworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDE2KTsKKy0tIEVS Uk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRwXzEyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJh aW50ICJ0X2lfY2hlY2siCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCk7CistLSBTaG91bGQgYmUg MyByb3dzOiAoNSksICgxNSksICgxNik6CitTRUxFQ1QgaSBGUk9NIHQgT1JERVIgQlkgaTsKKy0t IFNob3VsZCBiZSAxIGJlY2F1c2UgZm9yIHRoZSBzYW1lIHRhYmxlb2lkICgxNSArIHRhYmxlb2lk KSA9ICg1ICsgdGFibGVvaWQpICsgMTA6CitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkg PSAxNSBBTkQgZyBJTiAoU0VMRUNUIGcgKyAxMCBGUk9NIHQgV0hFUkUgaSA9IDUpOworCitEUk9Q IFRBQkxFIHQ7CisKKworUkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0 aXRpb25zX21lcmdlX3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h MjsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000f1b44a063eda98de Content-Type: application/octet-stream; name="v55-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename="v55-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mflf16sb1 RnJvbSBlMjJiZDFiY2Q5ZDYwMjM3YjQyN2Q2YWRjMDdiNDExNzRlMDNkYjIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2NTUgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAu Li4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlv biBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBBTFRFUiBUQUJMRSAuLi4gTUVS R0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0aW9ucyBhcmUKY3JlYXRlZCB1c2lu ZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9uIHdpdGggcGFyZW50IHBhcnRpdGlvbiBh cyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBjb21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVt ZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2luZ2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NF U1MgRVhDTFVTSVZFIExPQ0sgb24gdGhlIHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVy YXRpb25zIGluY2x1ZGluZyB0aGUgdHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3 IERETCBjb21tYW5kCmNhbid0IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0 YWJsZXMgdW5kZXIgYSBoaWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNv bWUgaW4gaGFuZHkgaW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBi ZSB1c2VkIGFzIGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxl c3Nlcgpsb2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZhbiBk ZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJldmlld2Vk LWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hvaXJlcywgSmlh biBIZQoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBBbGV4YW5kZXIgS29y b3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJbG1hcmkgTWFubnNha2Vy CkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4YW5kZXIgS29yb3Rrb3YsIFJv YmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jpc292ClJldmlld2VkLWJ5OiBNYXNh aGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRlciBMYWtoaW4sIEp1c3RpbiBQcnl6Ynks IEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5OiBEYW5pZWwgR3VzdGFmc3NvbiwgVG9tIExh bmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDE5ICsKIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAg ICAgICAgICB8ICAxMDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAg ICAgICAgICB8ICA0MzggKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAg ICAgICAgICAgICB8ICAgMzggKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMg ICAgICAgICAgICB8ICAgODggKy0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmMgICAgICAgICB8ICA3MTkgKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyAgICAgICAgICAgICB8ICAgMTggKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j ICAgICAgICAgICAgICAgIHwgICAxMCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o ICAgICAgICAgICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAg ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5oICAgICAgICAgfCAgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oICAg ICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24t c3BsaXQub3V0ICAgIHwgIDE5MCArKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hl ZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9u LXNwbGl0LnNwZWMgfCAgIDU0ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVy X3RhYmxlLm91dCB8ICAgIDUgKwogLi4uL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVyX3RhYmxl LnNxbCAgICAgIHwgICAgNCArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNl LmMgICAgICAgfCAgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3Nw bGl0Lm91dCB8IDE2NDIgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Bh cnRpdGlvbl9zcGxpdC5zcWwgICAgICB8IDExNDkgKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgICAyICsKIDIyIGZpbGVzIGNoYW5n ZWQsIDQ0ODEgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNw ZWMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlv bl9zcGxpdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0 aXRpb25fc3BsaXQuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9j L3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IGRkYjEzNzZhNmVhLi5jMjIwYTFjYmMwNSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApA QCAtNDQ3MSw2ICs0NDcxLDI1IEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50CiAgICAgICAgICAg ICAgICAgICAgICAgbWVhc3VyZW1lbnRfeTIwMDZtMDMpIElOVE8gbWVhc3VyZW1lbnRfeTIwMDZx MTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFNp bWlsYXJseSB0byBtZXJnaW5nIG11bHRpcGxlIHRhYmxlIHBhcnRpdGlvbnMsIHRoZXJlIGlzIGFu IG9wdGlvbiBmb3IKKyAgICAgc3BsaXR0aW5nIGEgc2luZ2xlIHBhcnRpdGlvbiBpbnRvIG11bHRp cGxlIHVzaW5nIHRoZQorICAgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJ0YWJsZS1zcGxpdC1w YXJ0aXRpb24iPjxjb21tYW5kPkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT048L2NvbW1h bmQ+PC9saW5rPi4KKyAgICAgVGhpcyBmZWF0dXJlIGNvdWxkIGNvbWUgaW4gaGFuZHkgd2hlbiBv bmUgcGFydGl0aW9uIGdyb3dzIHRvbyBiaWcKKyAgICAgYW5kIG5lZWRzIHRvIGJlIHNwbGl0IGlu dG8gbXVsdGlwbGUuICBJdCdzIGltcG9ydGFudCB0byBub3RlIHRoYXQKKyAgICAgdGhpcyBvcGVy YXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGFj cXVpcmVzCisgICAgIGFuIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2ss IHdoaWNoIGNvdWxkIGltcGFjdCBoaWdoLWxvYWQKKyAgICAgc3lzdGVtcyBkdWUgdG8gdGhlIGxv Y2sncyByZXN0cmljdGl2ZSBuYXR1cmUuICBGb3IgZXhhbXBsZSwgd2UgY2FuIHNwbGl0CisgICAg IHRoZSBxdWFydGVyIHBhcnRpdGlvbiBiYWNrIHRvIG1vbnRobHkgcGFydGl0aW9uczoKKzxwcm9n cmFtbGlzdGluZz4KK0FMVEVSIFRBQkxFIG1lYXN1cmVtZW50IFNQTElUIFBBUlRJVElPTiBtZWFz dXJlbWVudF95MjAwNnExIElOVE8KKyAgIChQQVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMDZtMDEg Rk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMS0wMScpIFRPICgnMjAwNi0wMi0wMScpLAorICAgIFBB UlRJVElPTiBtZWFzdXJlbWVudF95MjAwNm0wMiBGT1IgVkFMVUVTIEZST00gKCcyMDA2LTAyLTAx JykgVE8gKCcyMDA2LTAzLTAxJyksCisgICAgUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDA2bTAz IEZPUiBWQUxVRVMgRlJPTSAoJzIwMDYtMDMtMDEnKSBUTyAoJzIwMDYtMDQtMDEnKSk7Cis8L3By b2dyYW1saXN0aW5nPgorICAgIDwvcGFyYT4KKwogICAgPC9zZWN0Mz4KIAogICAgPHNlY3QzIGlk PSJkZGwtcGFydGl0aW9uaW5nLWRlY2xhcmF0aXZlLWxpbWl0YXRpb25zIj4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdGFibGUuc2dtbAppbmRleCA1YWMxZjVjNDIzMS4uMGZhMzQ0NDNiMjUgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3RhYmxlLnNnbWwKQEAgLTM5LDYgKzM5LDEwIEBAIEFMVEVSIFRBQkxFIFsgSUYgRVhJ U1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgog ICAgIERFVEFDSCBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBDT05DVVJSRU5UTFkgfCBGSU5BTElaRSBdCiBBTFRF UiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4KICAgICBNRVJHRSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJ TlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFj ZWFibGU+CitBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICBTUExJVCBQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5UTwor ICAgICAgICAoUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRp b25fbmFtZTE8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0s CisgICAgICAgICBQQVJUSVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IHsgRk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fSBbLCAuLi5dKQogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5hY3Rpb248L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTExNjEsNiAr MTE2NSw3OSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8 L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtc3Bs aXQtcGFydGl0aW9uIj4KKyAgICA8dGVybT48bGl0ZXJhbD5TUExJVCBQQVJUSVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5U TyAoUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFt ZTE8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0sIFBBUlRJ VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBs YWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0pPC9saXRl cmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZv cm0gc3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxlIGludG8gbmV3 CisgICAgICBwYXJ0aXRpb25zLiBIYXNoLXBhcnRpdGlvbmVkIHRhcmdldCB0YWJsZSBpcyBub3Qg c3VwcG9ydGVkLiBCb3VuZHMgb2YgbmV3CisgICAgICBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3Zl cmxhcCB3aXRoIG5ldyBhbmQgZXhpc3RpbmcgcGFydGl0aW9ucworICAgICAgKGV4Y2VwdCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiku CisgICAgICBJZiB0aGUgc3BsaXQgcGFydGl0aW9uIGlzIGEgPGxpdGVyYWw+REVGQVVMVDwvbGl0 ZXJhbD4gcGFydGl0aW9uLCBvbmUgb2YKKyAgICAgIHRoZSBuZXcgcGFydGl0aW9ucyBtdXN0IGJl IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+LgorICAgICAgSW4gY2FzZSBvbmUgb2YgdGhlIG5l dyBwYXJ0aXRpb25zIGlzIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+LAorICAgICAgbmV3IHBh cnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwv cmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gY2FuCisgICAgICBoYXZlIHNwYWNlcyBiZXR3 ZWVuIHBhcnRpdGlvbnMnIGJvdW5kcy4gIElmIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5v dAorICAgICAgaGF2ZSBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiwgdGhl IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb24gY2FuIGJlIGRlZmlu ZWQgYXMgb25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFy YT4KKyAgICAgIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGNvbnRhaW4gYSA8bGl0ZXJh bD5ERUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9uLCB0aGUgZm9sbG93aW5nIG11c3Qg YmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucworICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFi bGU+LCAuLi4gc2hvdWxkCisgICAgICBiZSBlcXVhbCB0byB0aGUgYm91bmQgb2YgdGhlIHNwbGl0 IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPi4KKyAgICAgIE9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAg ICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFj ZWFibGU+LCAuLi4gY2FuIGhhdmUKKyAgICAgIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHNwbGl0IHBh cnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3Jl cGxhY2VhYmxlPgorICAgICAgKHRoaXMgaXMgc3VpdGFibGUgaW4gY2FzZSBvZiBzcGxpdHRpbmcg YSA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPgorICAgICAgcGFydGl0aW9uOiB3ZSBzcGxpdCBp dCwgYnV0IGFmdGVyIHNwbGl0dGluZywgd2UgaGF2ZSBhIHBhcnRpdGlvbiB3aXRoIHRoZQorICAg ICAgc2FtZSBuYW1lKS4gIE9ubHkgYSBzaW1wbGUsIG5vbi1wYXJ0aXRpb25lZCBwYXJ0aXRpb24g Y2FuIGJlIHNwbGl0LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgTmV3IHBhcnRp dGlvbnMgd2lsbCBoYXZlIHRoZSBzYW1lIG93bmVyIGFzIHRoZSBwYXJlbnQgcGFydGl0aW9uLgor ICAgICAgSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBzZXR1cCA8YWNyb255bT5B Q0w8L2Fjcm9ueW0+IG9uIG5ldworICAgICAgcGFydGl0aW9ucy4KKyAgICAgPC9wYXJhPgorICAg ICA8cGFyYT4KKyAgICAgIFRoZSBpbmRleGVzIGFuZCBpZGVudGl0eSBhcmUgY3JlYXRlZCBsYXRl ciwgYWZ0ZXIgbW92aW5nIHRoZSBkYXRhCisgICAgICBpbnRvIHRoZSBuZXcgcGFydGl0aW9ucy4K KyAgICAgIEV4dGVuZGVkIHN0YXRpc3RpY3MgYXJlbid0IGNvcGllZCBmcm9tIHRoZSBwYXJlbnQg dGFibGUsIGZvciBjb25zaXN0ZW5jeSB3aXRoCisgICAgICA8Y29tbWFuZD5DUkVBVEUgVEFCTEUg UEFSVElUSU9OIE9GPC9jb21tYW5kPi4KKyAgICAgIE5ldyBwYXJ0aXRpb25zIHdpbGwgaW5oZXJp dCB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgbWV0aG9kLCBwZXJzaXN0ZW5jZQorICAgICAgdHlwZSwg YW5kIHRhYmxlc3BhY2UgYXMgdGhlIHBhcmVudCB0YWJsZS4KKyAgICAgPC9wYXJhPgorICAgICA8 cGFyYT4KKyAgICAgIFdoZW4gYSBwYXJ0aXRpb24gaXMgc3BsaXQsIGFueSBpbmRpdmlkdWFsIG9i amVjdHMgYmVsb25naW5nIHRvIHRoaXMKKyAgICAgIHBhcnRpdGlvbiwgc3VjaCBhcyBjb25zdHJh aW50cyBvciB0aGUgc3RhdGlzdGljcyB3aWxsIGJlIGRyb3BwZWQuIFRoaXMgb2NjdXJzCisgICAg ICBiZWNhdXNlIDxjb21tYW5kPkFMVEVSIFRBQkxFIFNQTElUIFBBUlRJVElPTjwvY29tbWFuZD4g dXNlcyB0aGUgcGFydGl0aW9uZWQgdGFibGUgaXRzZWxmCisgICAgICBhcyB0aGUgdGVtcGxhdGUg dG8gZGVmaW5lIHRoZXNlIG9iamVjdHMuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAg ICBJZiBhIHNwbGl0IHBhcnRpdGlvbiBoYXMgc29tZSBvYmplY3RzIGRlcGVuZGVudCBvbiBpdCwg dGhlIGNvbW1hbmQgY2FuCisgICAgICBub3QgYmUgZG9uZSAoPGxpdGVyYWw+Q0FTQ0FERTwvbGl0 ZXJhbD4gaXMgbm90IHVzZWQsIGFuZCBhbiBlcnJvciB3aWxsCisgICAgICBiZSByZXR1cm5lZCku CisgICAgIDwvcGFyYT4KKyAgICAgPG5vdGU+CisgICAgICA8cGFyYT4KKyAgICAgICBTcGxpdCBw YXJ0aXRpb24gYWNxdWlyZXMgYW4gPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4g bG9jayBvbgorICAgICAgIHRoZSBwYXJlbnQgdGFibGUsIGluIGFkZGl0aW9uIHRvIHRoZSA8bGl0 ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPgorICAgICAgIGxvY2sgb24gdGhlIHRhYmxl IGJlaW5nIHNwbGl0LgorICAgICAgPC9wYXJhPgorICAgICA8L25vdGU+CisgICAgIDxub3RlPgor ICAgICAgPHBhcmE+CisgICAgICAgPGNvbW1hbmQ+QUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9O PC9jb21tYW5kPiBjcmVhdGVzIG5ldyBwYXJ0aXRpb25zIGFuZAorICAgICAgIG1vdmVzIGRhdGEg ZnJvbSB0aGUgc3BsaXQgcGFydGl0aW9uIGludG8gdGhlbSwgd2hpY2ggY2FuIHRha2UgYSBsb25n CisgICAgICAgdGltZS4gIFNvIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGNvbW1h bmQgZm9yIHNwbGl0dGluZyBhCisgICAgICAgc21hbGwgZnJhY3Rpb24gb2Ygcm93cyBvdXQgb2Yg YSB2ZXJ5IGJpZyBwYXJ0aXRpb24uCisgICAgICA8L3BhcmE+CisgICAgIDwvbm90ZT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNx bC1hbHRlcnRhYmxlLW1lcmdlLXBhcnRpdGlvbnMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPk1FUkdF IFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFt ZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgog CkBAIC0xMjY0LDcgKzEzNDEsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgQWxsIHRo ZSBmb3JtcyBvZiA8Y29tbWFuZD5BTFRFUiBUQUJMRTwvY29tbWFuZD4gdGhhdCBhY3Qgb24gYSBz aW5nbGUgdGFibGUsCiAgICBleGNlcHQgPGxpdGVyYWw+UkVOQU1FPC9saXRlcmFsPiwgPGxpdGVy YWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD4sCiAgICA8bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9s aXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sCi0gICBhbmQgPGxp dGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4sIGNhbiBiZSBjb21iaW5lZCBpbnRvCisg ICA8bGl0ZXJhbD5TUExJVCBQQVJUSVRJT048L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+TUVSR0Ug UEFSVElUSU9OUzwvbGl0ZXJhbD4KKyAgIGNhbiBiZSBjb21iaW5lZCBpbnRvCiAgICBhIGxpc3Qg b2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0b2dldGhlci4gIEZvciBleGFt cGxlLCBpdAogICAgaXMgcG9zc2libGUgdG8gYWRkIHNldmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0 ZXIgdGhlIHR5cGUgb2Ygc2V2ZXJhbAogICAgY29sdW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAg VGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdpdGggbGFyZ2UKQEAgLTE1MDgsNyArMTU4Niw3 IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmlj X2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBh cmE+CiAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcgcGFy dGl0aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCi0gICAgICAgIG9yIHRoZSBuYW1l IG9mIHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4KKyAgICAgICAgb3IgdGhlIG5hbWUgb2Ygc3Bs aXQgcGFydGl0aW9uLCBvciB0aGUgbmFtZSBvZiB0aGUgbmV3IG1lcmdlZCBwYXJ0aXRpb24uCiAg ICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBA IC0xNTE4LDcgKzE1OTYsOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgPHRlcm0+ PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFi bGU+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxwYXJhPgotICAgICAgICBUaGUg bmFtZXMgb2YgdGhlIHRhYmxlcyBiZWluZyBtZXJnZWQgaW50byB0aGUgbmV3IHBhcnRpdGlvbi4K KyAgICAgICAgVGhlIG5hbWVzIG9mIHRoZSB0YWJsZXMgYmVpbmcgbWVyZ2VkIGludG8gdGhlIG5l dyBwYXJ0aXRpb24gb3Igc3BsaXQgaW50bworICAgICAgICBuZXcgcGFydGl0aW9ucy4KICAgICAg ICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE5 NTEsNiArMjAzMCwyNCBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAogICAgIERFVEFDSCBQQVJU SVRJT04gbWVhc3VyZW1lbnRfeTIwMTVtMTI7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAor ICA8cGFyYT4KKyAgIFRvIHNwbGl0IGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0aGUgcmFuZ2UtcGFy dGl0aW9uZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIzIElOVE8KKyAgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMyBGT1IgVkFMVUVTIEZST00gKCcyMDIzLTAyLTAxJykgVE8gKCcyMDIz LTAzLTAxJyksCisgICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjMgRk9SIFZBTFVFUyBGUk9NICgn MjAyMy0wMy0wMScpIFRPICgnMjAyMy0wNC0wMScpLAorICAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDQtMDEnKSBUTyAoJzIwMjMtMDUtMDEnKSk7Cis8 L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRvIHNwbGl0IGEgc2luZ2xl IHBhcnRpdGlvbiBvZiB0aGUgbGlzdC1wYXJ0aXRpb25lZCB0YWJsZToKKzxwcm9ncmFtbGlzdGlu Zz4KK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcg WW9yaycsICdNYWRyaWQnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElO ICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICAgUEFSVElUSU9OIHNhbGVz X2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKzwv cHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCiAgIDxwYXJhPgogICAgVG8gbWVyZ2Ugc2V2ZXJhbCBw YXJ0aXRpb25zIGludG8gb25lIHBhcnRpdGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxlOgogPHByb2dy YW1saXN0aW5nPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA5YzdmNThhMDc5MS4uMzU1 ZjBiYTZjOTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC03NDMsNiArNzQzLDkgQEAg c3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIg KnN0b3JhZ2Vtb2RlKTsKIAogc3RhdGljIHZvaWQgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3Qg Kip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkg IFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwor c3RhdGljIHZvaWQgQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLAorCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwK KwkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCQlEZWZpbmVSZWxhdGlvbgpAQCAtNDg0Myw2ICs0ODQ2LDEwIEBAIEFsdGVyVGFibGVH ZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJCQljbWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNp dmVMb2NrOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCWNt ZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1 bHQ6CQkJLyogb29wcyAqLwogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFi bGUgdHlwZTogJWQiLAogCQkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTUyODMsNiArNTI5 MCwxMSBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxl Q21kICpjbWQsCiAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlw YXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246 CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfUEFSVElUSU9O RURfVEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJ cGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICov CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJ CQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTU2ODcsNiArNTY5OSwxNCBAQCBBVEV4ZWNDbWQo TGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQkJQVRFeGVjTWVyZ2VQYXJ0 aXRpb25zKHdxdWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWYsCiAJCQkJ CQkJCSAgY29udGV4dCk7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJ CWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwg bG9ja21vZGUsCisJCQkJCQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQg IT0gTlVMTCk7CisJCQlBc3NlcnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRSk7CisJCQlBVEV4ZWNTcGxpdFBhcnRpdGlvbih3cXVldWUsIHRhYiwgcmVs LCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgY29udGV4dCk7CisJCQlicmVh azsKIAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC02 NzI5LDYgKzY3NDksOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlw ZSBjbWR0eXBlKQogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJ CWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgogCQkJcmV0dXJuICJNRVJHRSBQQVJUSVRJT05TIjsK KwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCXJldHVybiAiU1BMSVQgUEFSVElUSU9OIjsK IAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBBREQg SURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMjI5MjksMyArMjI5NTEsNDE5 IEBAIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZv ICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkvKiBSZXN0b3JlIHVzZXJpZCBhbmQgc2VjdXJpdHkgY29u dGV4dC4gKi8KIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19j b250ZXh0KTsKIH0KKworCisvKgorICogU3RydWN0IHdpdGggY29udGV4dCBvZiBuZXcgcGFydGl0 aW9uIGZvciBpbnNlcnRpbmcgcm93cyBmcm9tIHNwbGl0IHBhcnRpdGlvbgorICovCit0eXBlZGVm IHN0cnVjdCBTcGxpdFBhcnRpdGlvbkNvbnRleHQKK3sKKwlFeHByU3RhdGUgICpwYXJ0cXVhbHN0 YXRlOwkvKiBleHByZXNzaW9uIGZvciBjaGVja2luZyBzbG90IGZvciBwYXJ0aXRpb24KKwkJCQkJ CQkJICogKE5VTEwgZm9yIERFRkFVTFQgcGFydGl0aW9uKSAqLworCUJ1bGtJbnNlcnRTdGF0ZSBi aXN0YXRlOwkvKiBzdGF0ZSBvZiBidWxrIGluc2VydHMgZm9yIHBhcnRpdGlvbiAqLworCVR1cGxl VGFibGVTbG90ICpkc3RzbG90OwkvKiBzbG90IGZvciBpbnNlcnRpbmcgcm93IGludG8gcGFydGl0 aW9uICovCisJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiOwkJLyogc3RydWN0b3JlIHdpdGggZ2VuZXJh dGVkIGNvbHVtbiBleHByZXNzaW9ucworCQkJCQkJCQkgKiBhbmQgY2hlY2sgY29uc3RyYWludCBl eHByZXNzc2lvbnMuICovCisJUmVsYXRpb24JcGFydFJlbDsJCS8qIHJlbGF0aW9uIGZvciBwYXJ0 aXRpb24gKi8KK30gU3BsaXRQYXJ0aXRpb25Db250ZXh0OworCisvKgorICogY3JlYXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0OiBjcmVhdGUgY29udGV4dCBmb3IgcGFydGl0aW9uIGFuZCBmaWxsIGl0 CisgKi8KK3N0YXRpYyBTcGxpdFBhcnRpdGlvbkNvbnRleHQgKgorY3JlYXRlU3BsaXRQYXJ0aXRp b25Db250ZXh0KFJlbGF0aW9uIHBhcnRSZWwpCit7CisJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpw YzsKKworCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBwYWxsb2MwKHNpemVvZihTcGxp dFBhcnRpdGlvbkNvbnRleHQpKTsKKwlwYy0+cGFydFJlbCA9IHBhcnRSZWw7CisKKwkvKgorCSAq IFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gVGhlIEZT TSBpcyBlbXB0eSwgc28KKwkgKiBkb24ndCBib3RoZXIgdXNpbmcgaXQuCisJICovCisJcGMtPmJp c3RhdGUgPSBHZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0ZSB0dXBsZSBzbG90IGZv ciBuZXcgcGFydGl0aW9uLiAqLworCXBjLT5kc3RzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocGMt PnBhcnRSZWwsIE5VTEwpOworCisJcmV0dXJuIHBjOworfQorCisvKgorICogZGVsZXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0OiBkZWxldGUgY29udGV4dCBmb3IgcGFydGl0aW9uCisgKi8KK3N0YXRp YyB2b2lkCitkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoU3BsaXRQYXJ0aXRpb25Db250ZXh0 ICpwYywgTGlzdCAqKndxdWV1ZSwgaW50IHRpX29wdGlvbnMpCit7CisJTGlzdENlbGwgICAqbHRh YjsKKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QocGMtPmRzdHNsb3QpOworCUZyZWVC dWxrSW5zZXJ0U3RhdGUocGMtPmJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0 KHBjLT5wYXJ0UmVsLCB0aV9vcHRpb25zKTsKKworCS8qCisJICogV2UgZG9uJ3QgbmVlZCBwcm9j ZXNzIHRoaXMgcGMtPnBhcnRSZWwgc28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRSBxdWV1ZQorCSAq IG9mIGl0LgorCSAqLworCWZvcmVhY2gobHRhYiwgKndxdWV1ZSkKKwl7CisJCUFsdGVyZWRUYWJs ZUluZm8gKnRhYiA9IChBbHRlcmVkVGFibGVJbmZvICopIGxmaXJzdChsdGFiKTsKKworCQlpZiAo dGFiLT5yZWxpZCA9PSBSZWxhdGlvbkdldFJlbGlkKHBjLT5wYXJ0UmVsKSkKKwkJCSp3cXVldWUg PSBsaXN0X2RlbGV0ZV9jZWxsKCp3cXVldWUsIGx0YWIpOworCX0KKworCXBmcmVlKHBjKTsKK30K KworLyoKKyAqIFNwbGl0UGFydGl0aW9uTW92ZVJvd3M6IHNjYW4gc3BsaXQgcGFydGl0aW9uIChz cGxpdFJlbCkgb2YgcGFydGl0aW9uZWQgdGFibGUKKyAqIChyZWwpIGFuZCBtb3ZlIHJvd3MgaW50 byBuZXcgcGFydGl0aW9ucy4KKyAqCisgKiBOZXcgcGFydGl0aW9ucyBkZXNjcmlwdGlvbjoKKyAq IHBhcnRsaXN0OiBsaXN0IG9mIHBvaW50ZXJzIHRvIFNpbmdsZVBhcnRpdGlvblNwZWMgc3RydWN0 dXJlcy4gIEl0IGNvbnRhaW5zCisgKiB0aGUgcGFydGl0aW9uIHNwZWNpZmljYXRpb24gZGV0YWls cyBmb3IgYWxsIG5ldyBwYXJ0aXRpb25zLgorICogbmV3UGFydFJlbHM6IGxpc3Qgb2YgUmVsYXRp b25zLCBuZXcgcGFydGl0aW9ucyBjcmVhdGVkIGluCisgKiBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4K KyAqLworc3RhdGljIHZvaWQKK1NwbGl0UGFydGl0aW9uTW92ZVJvd3MoTGlzdCAqKndxdWV1ZSwg UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBzcGxpdFJlbCwKKwkJCQkJICAgTGlzdCAqcGFydGxpc3Qs IExpc3QgKm5ld1BhcnRSZWxzKQoreworCS8qIFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJv dGhlciB1c2luZyBpdC4gKi8KKwlpbnQJCQl0aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBf RlNNOworCUNvbW1hbmRJZAlteWNpZDsKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlMaXN0Q2VsbCAg ICpsaXN0cHRyLAorCQkJICAgKmxpc3RwdHIyOworCVR1cGxlVGFibGVTbG90ICpzcmNzbG90Owor CUV4cHJDb250ZXh0ICplY29udGV4dDsKKwlUYWJsZVNjYW5EZXNjIHNjYW47CisJU25hcHNob3QJ c25hcHNob3Q7CisJTWVtb3J5Q29udGV4dCBvbGRDeHQ7CisJTGlzdAkgICAqcGFydENvbnRleHRz ID0gTklMOworCVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCVNwbGl0UGFydGl0aW9u Q29udGV4dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAorCQkJICAgKnBjOworCisJbXljaWQgPSBH ZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOworCisJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0 ZSgpOworCisJZm9yYm90aChsaXN0cHRyLCBwYXJ0bGlzdCwgbGlzdHB0cjIsIG5ld1BhcnRSZWxz KQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMg KikgbGZpcnN0KGxpc3RwdHIpOworCisJCXBjID0gY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0 KChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIyKSk7CisKKwkJLyogRmluZCB0aGUgd29yayBxdWV1 ZSBlbnRyeSBmb3IgbmV3IHBhcnRpdGlvbiB0YWJsZTogbmV3UGFydFJlbC4gKi8KKwkJcGMtPnRh YiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIHBjLT5wYXJ0UmVsKTsKKworCQlidWlsZEV4cHJl c3Npb25FeGVjdXRpb25TdGF0ZXMocGMtPnRhYiwgcGMtPnBhcnRSZWwsIGVzdGF0ZSk7CisKKwkJ aWYgKHNwcy0+Ym91bmQtPmlzX2RlZmF1bHQpCisJCXsKKwkJCS8qCisJCQkgKiBXZSBzaG91bGQg bm90IGNyZWF0ZSBzdHJ1Y3R1cmUgZm9yIGNoZWNrIHBhcnRpdGlvbiBjb25zdHJhaW50CisJCQkg KiBmb3IgbmV3IERFRkFVTFQgcGFydGl0aW9uLgorCQkJICovCisJCQlkZWZhdWx0UGFydEN0eCA9 IHBjOworCQl9CisJCWVsc2UKKwkJeworCQkJTGlzdAkgICAqcGFydENvbnN0cmFpbnQ7CisKKwkJ CS8qIEJ1aWxkIGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNoZWNr IHF1YWxzLiAqLworCQkJcGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRib3VuZChy ZWwsIHNwcy0+Ym91bmQpOworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShMaXN0ICopIGV2YWxf Y29uc3RfZXhwcmVzc2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICopIHBhcnRDb25zdHJh aW50KTsKKwkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVjQ2hlY2soKS4gKi8K KwkJCXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhwbGljaXQocGFydENv bnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUgdmFycyBpbiB0aGUgY29uc3RyYWlu dCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRvCisJCQkgKiBzcGxpdFJlbCdzLgorCQkJ ICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0aXRpb25fdmFyYXR0bm9zKHBhcnRDb25z dHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBzcGxpdFJlbCwgcmVsKTsKKworCQkJcGMtPnBhcnRx dWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBsaW5pdGlhbChwYXJ0Q29u c3RyYWludCksIGVzdGF0ZSk7CisJCQlBc3NlcnQocGMtPnBhcnRxdWFsc3RhdGUgIT0gTlVMTCk7 CisJCX0KKworCQkvKiBTdG9yZSBwYXJ0aXRpb24gY29udGV4dCBpbnRvIGxpc3QuICovCisJCXBh cnRDb250ZXh0cyA9IGxhcHBlbmQocGFydENvbnRleHRzLCBwYyk7CisJfQorCisJZWNvbnRleHQg PSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5 IHR1cGxlIHNsb3QuICovCisJc3Jjc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHNwbGl0UmVsLCBO VUxMKTsKKworCS8qCisJICogTWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Yg c3BsaXQgcGFydGl0aW9uIHRvIG5ldyBwYXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0 aXRpb24sIGJ1dCBvdGhlciBuZXcgcGFydGl0aW9ucyBjYW4gdXNlIHRoZSBzYW1lCisJICogbWFw KS4KKwkgKi8KKwlwYyA9IChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RfaGVh ZChwYXJ0Q29udGV4dHMpKTsKKwl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJl bGF0aW9uR2V0RGVzY3Ioc3BsaXRSZWwpLAorCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihw Yy0+cGFydFJlbCkpOworCisJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCXNuYXBzaG90 ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzY2FuID0gdGFibGVf YmVnaW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkvKgorCSAqIFN3aXRj aCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxl CisJICogcHJvZHVjZWQsIHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5LgorCSAqLworCW9sZEN4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7 CisKKwl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVj dGlvbiwgc3Jjc2xvdCkpCisJeworCQlib29sCQlmb3VuZCA9IGZhbHNlOworCQlUdXBsZVRhYmxl U2xvdCAqaW5zZXJ0c2xvdDsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCWVjb250 ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNyY3Nsb3Q7CisKKwkJLyogU2VhcmNoIHBhcnRpdGlvbiBm b3IgY3VycmVudCBzbG90IHNyY3Nsb3QuICovCisJCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRl eHRzKQorCQl7CisJCQlwYyA9IChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3Rw dHIpOworCisJCQkvKiBza2lwIERFRkFVTFQgcGFydGl0aW9uICovCisJCQlpZiAocGMtPnBhcnRx dWFsc3RhdGUgJiYgRXhlY0NoZWNrKHBjLT5wYXJ0cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCQl7 CisJCQkJZm91bmQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmICghZm91bmQp CisJCXsKKwkJCS8qIFVzZSBERUZBVUxUIHBhcnRpdGlvbiBpZiBpdCBleGlzdHMuICovCisJCQlp ZiAoZGVmYXVsdFBhcnRDdHgpCisJCQkJcGMgPSBkZWZhdWx0UGFydEN0eDsKKwkJCWVsc2UKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0NIRUNLX1ZJT0xBVElPTiks CisJCQkJCQllcnJtc2coImNhbiBub3QgZmluZCBwYXJ0aXRpb24gZm9yIHNwbGl0IHBhcnRpdGlv biByb3ciKSwKKwkJCQkJCWVycnRhYmxlKHNwbGl0UmVsKSk7CisJCX0KKworCQlpZiAodHVwbGVf bWFwKQorCQl7CisJCQkvKiBOZWVkIHRvIHVzZSBtYXAgdG8gY29weSBhdHRyaWJ1dGVzLiAqLwor CQkJaW5zZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9tYXAtPmF0dHJNYXAs IHNyY3Nsb3QsIHBjLT5kc3RzbG90KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIEV4dHJhY3Qg ZGF0YSBmcm9tIG9sZCB0dXBsZS4gKi8KKwkJCXNsb3RfZ2V0YWxsYXR0cnMoc3Jjc2xvdCk7CisK KwkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJCWluc2VydHNsb3QgPSBwYy0+ ZHN0c2xvdDsKKworCQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0c2xvdCk7CisKKwkJCW1lbWNweShp bnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFsdWVzLAorCQkJCSAgIHNpemVv ZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCW1lbWNweShpbnNlcnRzbG90LT50 dHNfaXNudWxsLCBzcmNzbG90LT50dHNfaXNudWxsLAorCQkJCSAgIHNpemVvZihib29sKSAqIHNy Y3Nsb3QtPnR0c19udmFsaWQpOworCisJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xv dCk7CisJCX0KKworCQkvKgorCQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJBVEVEIGV4cHJlc3Np b25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUgdGFibGVvaWQKKwkJICogY29sdW1uLCBzbyBmaWxsIHR0 c190YWJsZU9pZCB3aXRoIHRoZSBkZXNpcmVkIHZhbHVlLiAoV2UgbXVzdCBkbworCQkgKiB0aGlz IGVhY2ggdGltZSwgYmVjYXVzZSBpdCBnZXRzIG92ZXJ3cml0dGVuIHdpdGggbmV3cmVsJ3MgT0lE CisJCSAqIGR1cmluZyBzdG9yaW5nLikKKwkJICovCisJCWluc2VydHNsb3QtPnR0c190YWJsZU9p ZCA9IFJlbGF0aW9uR2V0UmVsaWQocGMtPnBhcnRSZWwpOworCisJCS8qCisJCSAqIE5vdywgZXZh bHVhdGUgYW55IGdlbmVyYXRlZCBleHByZXNzaW9ucyB3aG9zZSBpbnB1dHMgY29tZSBmcm9tIHRo ZQorCQkgKiBuZXcgdHVwbGUuICBXZSBhc3N1bWUgdGhlc2UgY29sdW1ucyB3b24ndCByZWZlcmVu Y2UgZWFjaCBvdGhlciwgc28KKwkJICogdGhhdCB0aGVyZSdzIG5vIG9yZGVyaW5nIGRlcGVuZGVu Y3kuCisJCSAqLworCQlldmFsdWF0ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5kQ2hlY2tDb25zdHJh aW50cyhwYy0+dGFiLCBwYy0+cGFydFJlbCwKKwkJCQkJCQkJCQkJCQkJaW5zZXJ0c2xvdCwgZWNv bnRleHQpOworCisJCS8qIFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5ldyByZWxhdGlvbi4g Ki8KKwkJdGFibGVfdHVwbGVfaW5zZXJ0KHBjLT5wYXJ0UmVsLCBpbnNlcnRzbG90LCBteWNpZCwK KwkJCQkJCSAgIHRpX29wdGlvbnMsIHBjLT5iaXN0YXRlKTsKKworCQlSZXNldEV4cHJDb250ZXh0 KGVjb250ZXh0KTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3h0KTsKKworCXRh YmxlX2VuZHNjYW4oc2Nhbik7CisJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKworCWlm ICh0dXBsZV9tYXApCisJCWZyZWVfY29udmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKworCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc3Jjc2xvdCk7CisKKwlGcmVlRXhlY3V0b3JTdGF0ZShl c3RhdGUpOworCisJZm9yZWFjaF9wdHIoU3BsaXRQYXJ0aXRpb25Db250ZXh0LCBzcGMsIHBhcnRD b250ZXh0cykKKwkJZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KHNwYywgd3F1ZXVlLCB0aV9v cHRpb25zKTsKK30KKworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04g PHBhcnRpdGlvbi1uYW1lPiBJTlRPIDxwYXJ0aXRpb24tbGlzdD4KKyAqLworc3RhdGljIHZvaWQK K0FURXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAorCQkJCQkgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGls aXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbglzcGxpdFJlbDsKKwlPaWQJCQlzcGxp dFJlbE9pZDsKKwljaGFyCQlyZWxuYW1lW05BTUVEQVRBTEVOXTsKKwlMaXN0Q2VsbCAgICpsaXN0 cHRyLAorCQkJICAgKmxpc3RwdHIyOworCWJvb2wJCWlzU2FtZU5hbWUgPSBmYWxzZTsKKwljaGFy CQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKKwlMaXN0CSAgICpuZXdQYXJ0UmVscyA9IE5JTDsK KwlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlz YXZlX3VzZXJpZDsKKwlpbnQJCQlzYXZlX3NlY19jb250ZXh0OworCWludAkJCXNhdmVfbmVzdGxl dmVsOworCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhS ZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVlKSk7CisKKwkvKgorCSAqIFBhcnRpdGlv biBpcyBhbHJlYWR5IGxvY2tlZCBpbiB0aGUgdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQK KwkgKiBmdW5jdGlvbi4KKwkgKi8KKwlzcGxpdFJlbCA9IHRhYmxlX29wZW5ydihjbWQtPm5hbWUs IE5vTG9jayk7CisKKwlzcGxpdFJlbE9pZCA9IFJlbGF0aW9uR2V0UmVsaWQoc3BsaXRSZWwpOwor CisJLyogQ2hlY2sgZGVzY3JpcHRpb25zIG9mIG5ldyBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2hf bm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIGNtZC0+cGFydGxpc3QpCisJeworCQlPaWQJ CQlleGlzdGluZ1JlbGlkOworCisJCXN0cmxjcHkocmVsbmFtZSwgc3BzLT5uYW1lLT5yZWxuYW1l LCBOQU1FREFUQUxFTik7CisKKwkJLyogTG9vayB1cCBleGlzdGluZyByZWxhdGlvbiBieSBuZXcg cGFydGl0aW9uIG5hbWUuICovCisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFj ZShzcHMtPm5hbWUsIE5vTG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJCS8qCisJCSAqIFRoaXMg d291bGQgZmFpbCBsYXRlciBvbiBhbnl3YXkgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3Rz LiBCdXQKKwkJICogYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2VyIGVycm9y IG1lc3NhZ2UuCisJCSAqLworCQlpZiAoZXhpc3RpbmdSZWxpZCA9PSBzcGxpdFJlbE9pZCAmJiAh aXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBoYXZlIHRoZSBzYW1lIG5h bWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRydWU7CisJCWVsc2Ug aWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQll cnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJyZWxhdGlvbiBc IiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1lKSk7CisJfQorCisJLyogRGV0YWNoIHNwbGl0 IHBhcnRpdGlvbi4gKi8KKwlkZXRhY2hQYXJ0aXRpb25UYWJsZShyZWwsIHNwbGl0UmVsLCBkZWZh dWx0UGFydE9pZCk7CisKKwkvKgorCSAqIFBlcmZvcm0gYSBwcmVsaW1pbmFyeSBjaGVjayB0byBk ZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG8gZHJvcAorCSAqIHNwbGl0IHBhcnRpdGlvbiBi ZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28gbGF0ZXIuIEFmdGVyIG1lcmdpbmcgcm93cyBpbnRvCisJ ICogdGhlIG5ldyBwYXJ0aXRpb25zIHZpYSBTcGxpdFBhcnRpdGlvbk1vdmVSb3dzLCBhbGwgb2xk IHBhcnRpdGlvbnMgbmVlZAorCSAqIGJlIGRyb3BwZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkcm9w IGJlaGF2aW9yIGlzIERST1BfUkVTVFJJQ1QgYW5kIHRoZQorCSAqIG1lcmdlIHByb2Nlc3MgKFNw bGl0UGFydGl0aW9uTW92ZVJvd3MpIGNhbiBiZSB0aW1lLWNvbnN1bWluZywKKwkgKiBwZXJmb3Jt aW5nIGFuIGVhcmx5IGNoZWNrIG9uIHRoZSBkcm9wIGVsaWdpYmlsaXR5IG9mIG9sZCBwYXJ0aXRp b25zIGlzCisJICogcHJlZmVyYWJsZS4KKwkgKi8KKwlvYmplY3Qub2JqZWN0SWQgPSBzcGxpdFJl bE9pZDsKKwlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwlvYmplY3Qub2Jq ZWN0U3ViSWQgPSAwOworCXBlcmZvcm1EZWxldGlvbkNoZWNrKCZvYmplY3QsIERST1BfUkVTVFJJ Q1QsIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwpOworCisJLyoKKwkgKiBJZiBuZXcgcGFydGl0 aW9uIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiB0aGVuIHdlIHNob3VsZAor CSAqIHJlbmFtZSBzcGxpdCBwYXJ0aXRpb24gZm9yIHJldXNpbmcgbmFtZS4KKwkgKi8KKwlpZiAo aXNTYW1lTmFtZSkKKwl7CisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3Vu dGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQorCQkgKiB2aXNpYmxlIGZvciBy ZW5hbWluZy4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCS8qIFJlbmFt ZSBwYXJ0aXRpb24uICovCisJCXNwcmludGYodG1wUmVsTmFtZSwgInNwbGl0LSV1LSVYLXRtcCIs IFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9jUGlkKTsKKwkJUmVuYW1lUmVsYXRpb25JbnRl cm5hbChzcGxpdFJlbE9pZCwgdG1wUmVsTmFtZSwgdHJ1ZSwgZmFsc2UpOworCisJCS8qCisJCSAq IFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRp dGlvbiB0dXBsZQorCQkgKiB2aXNpYmxlIGFmdGVyIHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFu ZENvdW50ZXJJbmNyZW1lbnQoKTsKKwl9CisKKwkvKiBDcmVhdGUgbmV3IHBhcnRpdGlvbnMgKGxp a2Ugc3BsaXQgcGFydGl0aW9uKSwgd2l0aG91dCBpbmRleGVzLiAqLworCWZvcmVhY2hfbm9kZShT aW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIGNtZC0+cGFydGxpc3QpCisJeworCQlSZWxhdGlvbglu ZXdQYXJ0UmVsOworCisJCW5ld1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRpb25UYWJsZSh3cXVldWUs IHNwcy0+bmFtZSwgcmVsLAorCQkJCQkJCQkJCSAgc3BsaXRSZWwtPnJkX3JlbC0+cmVsb3duZXIp OworCQluZXdQYXJ0UmVscyA9IGxhcHBlbmQobmV3UGFydFJlbHMsIG5ld1BhcnRSZWwpOworCX0K KworCS8qCisJICogU3dpdGNoIHRvIHRoZSB0YWJsZSBvd25lcidzIHVzZXJpZCwgc28gdGhhdCBh bnkgaW5kZXggZnVuY3Rpb25zIGFyZSBydW4KKwkgKiBhcyB0aGF0IHVzZXIuICBBbHNvIGxvY2sg ZG93biBzZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlvbnMgYW5kCisJICogYXJyYW5nZSB0byBt YWtlIEdVQyB2YXJpYWJsZSBjaGFuZ2VzIGxvY2FsIHRvIHRoaXMgY29tbWFuZC4KKwkgKgorCSAq IE5lZWQgdG8gZG8gaXQgYWZ0ZXIgZGV0ZXJtaW5lIG5hbWVzcGFjZSBpbiBjcmVhdGVQYXJ0aXRp b25UYWJsZSBjYWxsLgorCSAqLworCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVfdXNlcmlk LCAmc2F2ZV9zZWNfY29udGV4dCk7CisJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzcGxpdFJlbC0+ cmRfcmVsLT5yZWxvd25lciwKKwkJCQkJCSAgIHNhdmVfc2VjX2NvbnRleHQgfCBTRUNVUklUWV9S RVNUUklDVEVEX09QRVJBVElPTik7CisJc2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwo KTsKKwlSZXN0cmljdFNlYXJjaFBhdGgoKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIHNwbGl0IHBh cnRpdGlvbiB0byBuZXcgcGFydGl0aW9ucy4gKi8KKwlTcGxpdFBhcnRpdGlvbk1vdmVSb3dzKHdx dWV1ZSwgcmVsLCBzcGxpdFJlbCwgY21kLT5wYXJ0bGlzdCwgbmV3UGFydFJlbHMpOworCS8qIEtl ZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCXRhYmxlX2Nsb3NlKHNwbGl0UmVsLCBOb0xv Y2spOworCisJLyogQXR0YWNoIG5ldyBwYXJ0aXRpb25zIHRvIHBhcnRpdGlvbmVkIHRhYmxlLiAq LworCWZvcmJvdGgobGlzdHB0ciwgY21kLT5wYXJ0bGlzdCwgbGlzdHB0cjIsIG5ld1BhcnRSZWxz KQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMg KikgbGZpcnN0KGxpc3RwdHIpOworCQlSZWxhdGlvbgluZXdQYXJ0UmVsID0gKFJlbGF0aW9uKSBs Zmlyc3QobGlzdHB0cjIpOworCisJCS8qCisJCSAqIHdxdWV1ZSA9IE5VTEw6IHZlcmlmaWNhdGlv biBmb3IgZWFjaCBjbG9uZWQgY29uc3RyYWludCBpcyBub3QKKwkJICogbmVlZGVkLgorCQkgKi8K KwkJYXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBzcHMtPmJvdW5k KTsKKwkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJCXRhYmxlX2Nsb3NlKG5l d1BhcnRSZWwsIE5vTG9jayk7CisJfQorCisJLyogRHJvcCBzcGxpdCBwYXJ0aXRpb24uICovCisJ b2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJb2JqZWN0Lm9iamVjdElkID0g c3BsaXRSZWxPaWQ7CisJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkvKiBQcm9iYWJseSBEUk9Q X0NBU0NBREUgaXMgbm90IG5lZWRlZC4gKi8KKwlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJP UF9SRVNUUklDVCwgMCk7CisKKwkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVk IGJ5IGluZGV4IGZ1bmN0aW9ucy4gKi8KKwlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxl dmVsKTsKKworCS8qIFJlc3RvcmUgdXNlcmlkIGFuZCBzZWN1cml0eSBjb250ZXh0LiAqLworCVNl dFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKaW5kZXggYTQ2ZDZjNmVhNmQuLjI5NDE2ZjYwZmQwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAg LTI1Nyw2ICsyNTcsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVBhcnRpdGlvbkVsZW0g KnBhcnRlbGVtOwogCVBhcnRpdGlvblNwZWMgKnBhcnRzcGVjOwogCVBhcnRpdGlvbkJvdW5kU3Bl YyAqcGFydGJvdW5kc3BlYzsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzaW5nbGVwYXJ0c3BlYzsK IAlSb2xlU3BlYyAgICpyb2xlc3BlYzsKIAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1YmxpY2F0aW9u b2JqZWN0c3BlYzsKIAlzdHJ1Y3QgU2VsZWN0TGltaXQgKnNlbGVjdGxpbWl0OwpAQCAtNjQwLDYg KzY0MSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8cGFydGVsZW0+CXBhcnRf ZWxlbQogJXR5cGUgPGxpc3Q+CQlwYXJ0X3BhcmFtcwogJXR5cGUgPHBhcnRib3VuZHNwZWM+IFBh cnRpdGlvbkJvdW5kU3BlYworJXR5cGUgPHNpbmdsZXBhcnRzcGVjPglTaW5nbGVQYXJ0aXRpb25T cGVjCisldHlwZSA8bGlzdD4JCXBhcnRpdGlvbnNfbGlzdAogJXR5cGUgPGxpc3Q+CQloYXNoX3Bh cnRib3VuZAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5kX2VsZW0KIApAQCAtNzcwLDcg Kzc3Myw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJU0FWRVBPSU5UIFNDQUxBUiBTQ0hF TUEgU0NIRU1BUyBTQ1JPTEwgU0VBUkNIIFNFQ09ORF9QIFNFQ1VSSVRZIFNFTEVDVAogCVNFUVVF TkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIg U0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hPVwotCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQg U05BUFNIT1QgU09NRSBTT1VSQ0UgU1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAorCVNJTUlMQVIg U0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTUExJVCBTT1VSQ0UgU1FMX1AgU1RB QkxFIFNUQU5EQUxPTkVfUAogCVNUQVJUIFNUQVRFTUVOVCBTVEFUSVNUSUNTIFNURElOIFNURE9V VCBTVE9SQUdFIFNUT1JFRCBTVFJJQ1RfUCBTVFJJTkdfUCBTVFJJUF9QCiAJU1VCU0NSSVBUSU9O IFNVQlNUUklORyBTVVBQT1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBTWVNURU1fVVNFUgog CkBAIC0yMzU3LDYgKzIzNjAsMjMgQEAgYWx0ZXJfdGFibGVfY21kczoKIAkJCXwgYWx0ZXJfdGFi bGVfY21kcyAnLCcgYWx0ZXJfdGFibGVfY21kCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJ OwogCitwYXJ0aXRpb25zX2xpc3Q6CisJCQlTaW5nbGVQYXJ0aXRpb25TcGVjCQkJCQkJCXsgJCQg PSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwYXJ0aXRpb25zX2xpc3QgJywnIFNpbmdsZVBhcnRp dGlvblNwZWMJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK1NpbmdsZVBhcnRpdGlv blNwZWM6CisJCQlQQVJUSVRJT04gcXVhbGlmaWVkX25hbWUgUGFydGl0aW9uQm91bmRTcGVjCisJ CQkJeworCQkJCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpuID0gbWFrZU5vZGUoU2luZ2xlUGFydGl0 aW9uU3BlYyk7CisKKwkJCQkJbi0+bmFtZSA9ICQyOworCQkJCQluLT5ib3VuZCA9ICQzOworCisJ CQkJCSQkID0gbjsKKwkJCQl9CisJCTsKKwogcGFydGl0aW9uX2NtZDoKIAkJCS8qIEFMVEVSIFRB QkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDx0YWJsZV9uYW1lPiBGT1IgVkFMVUVTICovCiAJ CQlBVFRBQ0ggUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBhcnRpdGlvbkJvdW5kU3BlYwpAQCAt MjQwMSw2ICsyNDIxLDIwIEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPmRlZiA9IChOb2RlICop IGNtZDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxu YW1lPiBTUExJVCBQQVJUSVRJT04gPHBhcnRpdGlvbl9uYW1lPiBJTlRPICgpICovCisJCQl8IFNQ TElUIFBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBJTlRPICcoJyBwYXJ0aXRpb25zX2xpc3QgJykn CisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7 CisJCQkJCVBhcnRpdGlvbkNtZCAqY21kID0gbWFrZU5vZGUoUGFydGl0aW9uQ21kKTsKKworCQkJ CQluLT5zdWJ0eXBlID0gQVRfU3BsaXRQYXJ0aXRpb247CisJCQkJCWNtZC0+bmFtZSA9ICQzOwor CQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9ICQ2OworCQkJCQlj bWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0gKE5vZGUgKikgY21kOworCQkJ CQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdF IFBBUlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ICovCiAJCQl8IE1FUkdFIFBBUlRJ VElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJyknIElOVE8gcXVhbGlmaWVkX25hbWUKIAkJ CQl7CkBAIC0xODAxNyw2ICsxODA1MSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgU0tJ UAogCQkJfCBTTkFQU0hPVAogCQkJfCBTT1VSQ0UKKwkJCXwgU1BMSVQKIAkJCXwgU1FMX1AKIAkJ CXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApAQCAtMTg2NTcsNiArMTg2OTIsNyBAQCBiYXJl X2xhYmVsX2tleXdvcmQ6CiAJCQl8IFNOQVBTSE9UCiAJCQl8IFNPTUUKIAkJCXwgU09VUkNFCisJ CQl8IFNQTElUCiAJCQl8IFNRTF9QCiAJCQl8IFNUQUJMRQogCQkJfCBTVEFOREFMT05FX1AKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IDZiM2Q2ODJmMDZmLi5kZDlkMWQxZTIwYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGlj IHZvaWQgdHJhbnNmb3JtQ29uc3RyYWludEF0dHJzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJ CQkJCQkJCQkgTGlzdCAqY29uc3RyYWludExpc3QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29s dW1uVHlwZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbik7CiBzdGF0 aWMgdm9pZCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNvbnRleHRfc2NoZW1hLCBjaGFyICoq c3RtdF9zY2hlbWFfbmFtZSk7Ci1zdGF0aWMgdm9pZCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpOworc3RhdGljIHZvaWQgdHJh bnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5k U3BlYyAqYm91bmQpOwogc3RhdGljIExpc3QgKnRyYW5zZm9ybVBhcnRpdGlvblJhbmdlQm91bmRz KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QsCiAJCQkJCQkJCQkJICAgUmVsYXRpb24g cGFyZW50KTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlSW5maW5pdGVCb3VuZHMoUGFyc2VTdGF0ZSAq cHN0YXRlLCBMaXN0ICpibGlzdCk7CkBAIC0zNTE1LDkgKzM1MTUsMTEgQEAgdHJhbnNmb3JtUnVs ZVN0bXQoUnVsZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogLyoKICAqIGNo ZWNrUGFydGl0aW9uCiAgKiBDaGVjayB3aGV0aGVyIHBhcnRSZWxPaWQgaXMgYSBsZWFmIHBhcnRp dGlvbiBvZiB0aGUgcGFyZW50IHRhYmxlIChyZWwpLgorICogaXNfbWVyZ2U6IHRydWUgaW5kaWNh dGVzIHRoZSBvcGVyYXRpb24gaXMgIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIjsK KyAqIGZhbHNlIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIGlzICJBTFRFUiBUQUJMRSAuLi4gU1BM SVQgUEFSVElUSU9OUyIuCiAgKi8KIHN0YXRpYyB2b2lkCi1jaGVja1BhcnRpdGlvbihSZWxhdGlv biByZWwsIE9pZCBwYXJ0UmVsT2lkKQorY2hlY2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQg cGFydFJlbE9pZCwgYm9vbCBpc19tZXJnZSkKIHsKIAlSZWxhdGlvbglwYXJ0UmVsOwogCkBAIC0z NTI3LDI1ICszNTI5LDY5IEBAIGNoZWNrUGFydGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRS ZWxPaWQpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVD VF9UWVBFKSwKIAkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHBhcnRSZWwpKSwKLQkJCQllcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVS R0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBh cnRpdGlvbnMiKSk7CisJCQkJaXNfbWVyZ2UKKwkJCQk/IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBz dWItcGFydGl0aW9ucyIpCisJCQkJOiBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFS VElUSU9OUyBjYW4gb25seSBzcGxpdCBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlv bnMiKSk7CiAKIAlpZiAoIXBhcnRSZWwtPnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQll cnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgXCIl c1wiIiwKIAkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCksIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpLAotCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJH RSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFy dGl0aW9ucyIpKTsKKwkJCQlpc19tZXJnZQorCQkJCT8gZXJyaGludCgiQUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1 Yi1wYXJ0aXRpb25zIikKKwkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJU SVRJT05TIGNhbiBvbmx5IHNwbGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9u cyIpKTsKIAogCWlmIChnZXRfcGFydGl0aW9uX3BhcmVudChwYXJ0UmVsT2lkLCBmYWxzZSkgIT0g UmVsYXRpb25HZXRSZWxpZChyZWwpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfVEFCTEUpLAogCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGlzIG5v dCBhIHBhcnRpdGlvbiBvZiByZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkgICBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShwYXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCi0JCQkJ ZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2Ug cGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCQkJCWlzX21lcmdlCisJ CQkJPyBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBt ZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKQorCQkJCTogZXJyaGlu dCgiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgY2FuIG9ubHkgc3BsaXQgcGFydGl0 aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwogCiAJdGFibGVfY2xvc2UocGFydFJl bCwgTm9Mb2NrKTsKIH0KIAorLyoKKyAqIHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0Cisg KgkJQW5hbHl6ZSB0aGUgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCisg KgorICogRm9yIGVhY2ggbmV3IHBhcnRpdGlvbiBzcHMtPmJvdW5kIGlzIHNldCB0byB0aGUgdHJh bnNmb3JtZWQgdmFsdWUgb2YgYm91bmQuCisgKiBEb2VzIGNoZWNrcyBmb3IgYm91bmRzIG9mIG5l dyBwYXJ0aXRpb25zLgorICovCitzdGF0aWMgdm9pZAordHJhbnNmb3JtUGFydGl0aW9uQ21kRm9y U3BsaXQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpwYXJ0Y21kKQorewor CVJlbGF0aW9uCXBhcmVudCA9IGN4dC0+cmVsOworCU9pZAkJCXNwbGl0UGFydE9pZDsKKworCS8q IFRyYW5zZm9ybSBwYXJ0aXRpb24gYm91bmRzIGZvciBhbGwgcGFydGl0aW9ucyBpbiB0aGUgbGlz dDogKi8KKwlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0aW9uU3BlYywgc3BzLCBwYXJ0Y21kLT5w YXJ0bGlzdCkKKwl7CisJCWN4dC0+cGFydGJvdW5kID0gTlVMTDsKKwkJdHJhbnNmb3JtUGFydGl0 aW9uQ21kKGN4dCwgc3BzLT5ib3VuZCk7CisJCS8qIEFzc2lnbiB0cmFuc2Zvcm1lZCB2YWx1ZSBv ZiB0aGUgcGFydGl0aW9uIGJvdW5kLiAqLworCQlzcHMtPmJvdW5kID0gY3h0LT5wYXJ0Ym91bmQ7 CisJfQorCisJLyoKKwkgKiBPcGVuIGFuZCBsb2NrIHBhcnRpdGlvbiwgY2hlY2sgb3duZXJzaGlw IGFsb25nIHRoZSB3YXkuIFdlIG5lZWQgdG8gdXNlCisJICogQWNjZXNzRXhjbHVzaXZlTG9jayBo ZXJlLCBiZWNhdXNlIHRoaXMgc3BsaXQgcGFydGl0aW9uIHdpbGwgYmUgZGV0YWNoZWQKKwkgKiB0 aGVuIGRyb3BwZWQgaW4gQVRFeGVjU3BsaXRQYXJ0aXRpb24uCisJICovCisJc3BsaXRQYXJ0T2lk ID0gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKHBhcnRjbWQtPm5hbWUsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2ssCisJCQkJCQkJCQkJCTAsIFJhbmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24sCisJCQkJ CQkJCQkJCU5VTEwpOworCisJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBzcGxpdFBhcnRPaWQsIGZh bHNlKTsKKworCS8qIFRoZW4gd2Ugc2hvdWxkIGNoZWNrIHBhcnRpdGlvbnMgd2l0aCB0cmFuc2Zv cm1lZCBib3VuZHMuICovCisJY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQocGFyZW50LCBzcGxp dFBhcnRPaWQsIHBhcnRjbWQtPnBhcnRsaXN0LCBjeHQtPnBzdGF0ZSk7Cit9CisKKwogLyoKICAq IHRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlCiAgKgkJQW5hbHl6ZSB0aGUgQUxURVIgVEFC TEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZApAQCAtMzYyMiw3ICszNjY4LDcgQEAgdHJh bnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0 aW9uQ21kICpwYXJ0Y21kKQogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBu YW1lLT5sb2NhdGlvbikpOwogCQl9CiAKLQkJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBwYXJ0T2lk KTsKKwkJY2hlY2tQYXJ0aXRpb24ocGFyZW50LCBwYXJ0T2lkLCB0cnVlKTsKIAogCQlwYXJ0T2lk cyA9IGxhcHBlbmRfb2lkKHBhcnRPaWRzLCBwYXJ0T2lkKTsKIAl9CkBAIC0zOTEwLDcgKzM5NTYs NyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpz dG10LAogCQkJCXsKIAkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAq KSBjbWQtPmRlZjsKIAotCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4dCwgcGFydGNtZCk7 CisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21kLT5ib3VuZCk7CiAJCQkJ CS8qIGFzc2lnbiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiB0aGUgcGFydGl0aW9uIGJvdW5kICovCiAJ CQkJCXBhcnRjbWQtPmJvdW5kID0gY3h0LnBhcnRib3VuZDsKIAkJCQl9CkBAIC0zOTMyLDYgKzM5 NzgsMjAgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3Rt dCAqc3RtdCwKIAkJCQkJYnJlYWs7CiAJCQkJfQogCisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9u OgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBj bWQtPmRlZjsKKworCQkJCQlpZiAobGlzdF9sZW5ndGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikK KwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQkJZXJybXNnKCJsaXN0IG9mIG5ldyBwYXJ0aXRpb25z IHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRpb25zIikpOworCisJCQkJCXRyYW5z Zm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0KCZjeHQsIHBhcnRjbWQpOworCQkJCQluZXdjbWRzID0g bGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWRlZmF1bHQ6 CiAKIAkJCQkvKgpAQCAtNDM2MiwxMyArNDQyMiwxMyBAQCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNo YXIgKmNvbnRleHRfc2NoZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSkKIAogLyoKICAqIHRy YW5zZm9ybVBhcnRpdGlvbkNtZAotICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0ggUEFSVElU SU9OIGNvbW1hbmQKKyAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVUQUNIL1NQTElUIFBBUlRJVElP TiBjb21tYW5kCiAgKgotICogSW4gY2FzZSBvZiB0aGUgQVRUQUNIIFBBUlRJVElPTiBjb21tYW5k LCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhlCi0gKiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBj bWQtPmJvdW5kLgorICogSW4gY2FzZSBvZiB0aGUgQVRUQUNIL1NQTElUIFBBUlRJVElPTiBjb21t YW5kLCBjeHQtPnBhcnRib3VuZCBpcyBzZXQgdG8gdGhlCisgKiB0cmFuc2Zvcm1lZCB2YWx1ZSBv ZiBib3VuZC4KICAqLwogc3RhdGljIHZvaWQKLXRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVT dG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKK3RyYW5zZm9ybVBhcnRpdGlvbkNt ZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kKQogewog CVJlbGF0aW9uCXBhcmVudFJlbCA9IGN4dC0+cmVsOwogCkBAIC00Mzc3LDkgKzQ0MzcsOSBAQCB0 cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21k ICpjbWQpCiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKIAkJCS8qIHRyYW5zZm9y bSB0aGUgcGFydGl0aW9uIGJvdW5kLCBpZiBhbnkgKi8KIAkJCUFzc2VydChSZWxhdGlvbkdldFBh cnRpdGlvbktleShwYXJlbnRSZWwpICE9IE5VTEwpOwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVM TCkKKwkJCWlmIChib3VuZCAhPSBOVUxMKQogCQkJCWN4dC0+cGFydGJvdW5kID0gdHJhbnNmb3Jt UGFydGl0aW9uQm91bmQoY3h0LT5wc3RhdGUsIHBhcmVudFJlbCwKLQkJCQkJCQkJCQkJCQkJIGNt ZC0+Ym91bmQpOworCQkJCQkJCQkJCQkJCQkgYm91bmQpOwogCQkJYnJlYWs7CiAJCWNhc2UgUkVM S0lORF9QQVJUSVRJT05FRF9JTkRFWDoKIApAQCAtNDM4Nyw3ICs0NDQ3LDcgQEAgdHJhbnNmb3Jt UGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQog CQkJICogQSBwYXJ0aXRpb25lZCBpbmRleCBjYW5ub3QgaGF2ZSBhIHBhcnRpdGlvbiBib3VuZCBz ZXQuICBBTFRFUgogCQkJICogSU5ERVggcHJldmVudHMgdGhhdCB3aXRoIGl0cyBncmFtbWFyLCBi dXQgbm90IEFMVEVSIFRBQkxFLgogCQkJICovCi0JCQlpZiAoY21kLT5ib3VuZCAhPSBOVUxMKQor CQkJaWYgKGJvdW5kICE9IE5VTEwpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCiAJCQkJCQkgZXJybXNnKCJcIiVz XCIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0 Ym91bmRzLmMKaW5kZXggNjBjMTAzNmNlODguLmM5ODg0MDZiMjU2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mv cmVsYXRpb24uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJhY2Nlc3Mv dGFibGVhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wYXJ0aXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCkBAIC00OTg0LDE1ICs0OTg1LDIzIEBAIHNhdGlzZmll c19oYXNoX3BhcnRpdGlvbihQR19GVU5DVElPTl9BUkdTKQogICoKICAqIChmdW5jdGlvbiBmb3Ig QlkgUkFOR0UgcGFydGl0aW9uaW5nKQogICoKLSAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24g Zm9yIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGlzIGEg aGVscGVyIGZ1bmN0aW9uIGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpIGFuZAorICog Y2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4KICAqIFRoaXMgZnVuY3Rpb24g Y29tcGFyZXMgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5kIG9mCi0g KiBzZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisgKiBzZWNvbmRf Ym91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwgZXhjZXB0IHdoZW4KKyAqICJkZWZh dWx0UGFydCA9PSB0cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZiBzcGxpdCBwYXJ0aXRpb25z IGlzIERFRkFVTFQpLgorICogSW4gdGhpcyBjYXNlIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5k IGNhbiBiZSBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9ib3VuZCBiZWNhdXNl IHNwYWNlIGJldHdlZW4gdGhlc2UgYm91bmRzIHdpbGwgYmUgaW5jbHVkZWQgaW4KKyAqIERFRkFV TFQgcGFydGl0aW9uLgogICoKICAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQogICogZmly c3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9uCiAgKiBmaXJzdF9ib3VuZDoJCWJvdW5k IG9mIGZpcnN0IHBhcnRpdGlvbgogICogc2Vjb25kX25hbWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0 aXRpb24KICAqIHNlY29uZF9ib3VuZDoJYm91bmQgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogZGVm YXVsdFBhcnQ6CQl0cnVlIGlmIG9uZSBvZiBuZXcgcGFydGl0aW9ucyBpcyBERUZBVUxUCisgKiBt ZXJnZV9vcl9zcGxpdDogIHRydWUgaW5kaWNhdGUgdGhlIG9wcmF0aW9uIGlzICJBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyIKKyAqIGZhbHNlIGluZGljYXRlIHRoZSBvcHJhdGlvbiBp cyAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMiLgogICogcHN0YXRlOgkJCXBvaW50 ZXIgdG8gUGFyc2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluaW5nIGVycm9yIHBvc2l0aW9uCiAg Ki8KIHN0YXRpYyB2b2lkCkBAIC01MDAxLDYgKzUwMTAsOCBAQCBjaGVja190d29fcGFydGl0aW9u c19ib3VuZHNfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5k U3BlYyAqZmlyc3RfYm91bmQsCiAJCQkJCQkJCSAgUmFuZ2VWYXIgKnNlY29uZF9uYW1lLAogCQkJ CQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc2Vjb25kX2JvdW5kLAorCQkJCQkJCQkgIGJvb2wg ZGVmYXVsdFBhcnQsCisJCQkJCQkJCSAgYm9vbCBtZXJnZV9zcGxpdCwKIAkJCQkJCQkJICBQYXJz ZVN0YXRlICpwc3RhdGUpCiB7CiAJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0 aW9uS2V5KHBhcmVudCk7CkBAIC01MDIyLDE3ICs1MDMzLDIyIEBAIGNoZWNrX3R3b19wYXJ0aXRp b25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCSAga2V5LT5wYXJ0Y29s bGF0aW9uLAogCQkJCQkJCQkgIHNlY29uZF9sb3dlci0+ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtp bmQsCiAJCQkJCQkJCSAgZmFsc2UsIGZpcnN0X3VwcGVyKTsKLQlpZiAoY21wdmFsKQorCWlmICgo IWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8IDApKQog CXsKIAkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0gPSBsaW5pdGlhbChzZWNvbmRfYm91bmQt Pmxvd2VyZGF0dW1zKTsKIAogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9J TlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKLQkJCQllcnJtc2coImNhbiBub3QgbWVyZ2UgcGFy dGl0aW9uIFwiJXNcIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAotCQkJCQkgICBz ZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFtZSksCisJCQkJbWVyZ2Vfc3Bs aXQKKwkJCQk/IGVycm1zZygiY2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVy IHdpdGggcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQkgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZp cnN0X25hbWUtPnJlbG5hbWUpCisJCQkJOiBlcnJtc2coImNhbiBub3Qgc3BsaXQgdG8gcGFydGl0 aW9uIFwiJXNcIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJIHNlY29u ZF9uYW1lLT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKIAkJCQllcnJkZXRhaWwoImxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwKIAkJCQkJCSAgc2Vjb25kX25hbWUtPnJlbG5hbWUs IGZpcnN0X25hbWUtPnJlbG5hbWUpLAotCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJH RSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50 LiIpLAorCQkJCW1lcmdlX3NwbGl0CisJCQkJPyBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVS R0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2Vu dC4iKQorCQkJCTogZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgcmVx dWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuIiksCiAJCQkJcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CiAJfQogfQpAQCAtNTEzNiw2 ICs1MTUyLDggQEAgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24g cGFyZW50LAogCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChi b3VuZHMsIHByZXZfaW5kZXgpLAogCQkJCQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRo KHBhcnROYW1lcywgaW5kZXgpLAogCQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAq KSBsaXN0X250aChib3VuZHMsIGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJ CQkJCQkJCSAgdHJ1ZSwKIAkJCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CiAJCQkJfQogCkBAIC01MTc0 LDMgKzUxOTIsNjkyIEBAIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0 aW9uIHBhcmVudCwKIAkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CiAJfQogfQorCisvKgorICog Y2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBC WSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZv ciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpLgorICogQ2hlY2tzIHRoYXQgdGhlIHZhbHVl cyBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgZG8gbm90IG92ZXJsYXAuCisgKgorICogcGFyZW50Oglw YXJ0aXRpb25lZCB0YWJsZQorICogcGFydHM6CWFycmF5IG9mIFNpbmdsZVBhcnRpdGlvblNwZWMg c3RydWN0cyB3aXRoIGluZm8gYWJvdXQgc3BsaXQgcGFydGl0aW9ucworICogbnBhcnRzOglzaXpl IG9mIGFycmF5ICJwYXJ0cyIKKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlvbnNfbm90 X292ZXJsYXBfbGlzdChSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCSAgU2luZ2xlUGFydGl0aW9u U3BlYyAqKnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCSAgUGFyc2VTdGF0 ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZ ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlpbnQJCQlvdmVybGFwX2xvY2F0 aW9uID0gLTE7CisJaW50CQkJaSwKKwkJCQlqOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczEs CisJCQkgICAqc3BzMjsKKwlMaXN0CSAgICpvdmVybGFwOworCisJQXNzZXJ0KGtleS0+c3RyYXRl Z3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0 czsgaSsrKQorCXsKKwkJc3BzMSA9IHBhcnRzW2ldOworCisJCWZvciAoaiA9IGkgKyAxOyBqIDwg bnBhcnRzOyBqKyspCisJCXsKKwkJCXNwczIgPSBwYXJ0c1tqXTsKKworCQkJLyoKKwkJCSAqIENh bGN1bGF0ZSBpbnRlcnNlY3Rpb24gYmV0d2VlbiB2YWx1ZXMgb2YgdHdvIHBhcnRpdGlvbnMuCisJ CQkgKi8KKwkJCW92ZXJsYXAgPSBsaXN0X2ludGVyc2VjdGlvbihzcHMxLT5ib3VuZC0+bGlzdGRh dHVtcywKKwkJCQkJCQkJCQlzcHMyLT5ib3VuZC0+bGlzdGRhdHVtcyk7CisJCQlpZiAobGlzdF9s ZW5ndGgob3ZlcmxhcCkgPiAwKQorCQkJeworCQkJCUNvbnN0CSAgICp2YWwgPSAoQ29uc3QgKikg bGZpcnN0KGxpc3RfaGVhZChvdmVybGFwKSk7CisKKwkJCQlvdmVybGFwX2xvY2F0aW9uID0gdmFs LT5sb2NhdGlvbjsKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwi JXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uIFwiJXNcIiIsCisJ CQkJCQkJICAgc3BzMS0+bmFtZS0+cmVsbmFtZSwgc3BzMi0+bmFtZS0+cmVsbmFtZSksCisJCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7CisJCQl9CisJ CX0KKwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5n ZQorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5nKQorICoKKyAqIENo ZWNrcyB0aGF0IGJvdW5kcyBvZiBuZXcgcGFydGl0aW9uICJzcGVjIiBhcmUgaW5zaWRlIGJvdW5k cyBvZiBzcGxpdAorICogcGFydGl0aW9uICh3aXRoIE9pZCBzcGxpdFBhcnRPaWQpLiBJZiBmaXJz dD10cnVlICh0aGlzIG1lYW5zIHRoYXQgInNwZWMiIGlzCisgKiB0aGUgZmlyc3Qgb2YgbmV3IHBh cnRpdGlvbnMpIHRoZW4gbG93ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IK KyAqIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIGxv d2VyIGJvdW5kIG9mIHNwbGl0CisgKiBwYXJ0aXRpb24uIElmIGxhc3Q9dHJ1ZSAodGhpcyBtZWFu cyB0aGF0ICJzcGVjIiBpcyB0aGUgbGFzdCBvZiBuZXcKKyAqIHBhcnRpdGlvbnMpIHRoZW4gdXBw ZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yCisgKiBl cXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBh cnRpdGlvbi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6 CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lmaWNh dGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRp b24gT2lkCisgKiBmaXJzdDoJCQl0cnVlIGluIGNhc2UgbmV3IHBhcnRpdGlvbiAic3BlYyIgaXMg Zmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIGxhc3Q6CQkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0 aXRpb24gInNwZWMiIGlzIGxhc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIGRlZmF1bHRQYXJ0OgkJ dHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb25zIGNvbnRhaW4gREVGQVVMVCBwYXJ0aXRpb24KKyAq IHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJy b3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9y X3NwbGl0X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCSAgIGNoYXIgKnJlbG5hbWUs CisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgICBPaWQg c3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICAgYm9vbCBmaXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wg bGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wgZGVmYXVsdFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0 YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9u S2V5KHBhcmVudCk7CisJUGFydGl0aW9uUmFuZ2VCb3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7 CisJaW50CQkJY21wdmFsOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NU UkFURUdZX1JBTkdFKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFU RUdZX1JBTkdFKTsKKworCWxvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0x LCBzcGVjLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25f cmJvdW5kKGtleSwgLTEsIHNwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkvKgorCSAqIEZp cnN0IGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUgZW1wdHkgd2l0aCBzcGVj aWZpZWQgbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFydGl0aW9uX3Jib3VuZF9jbXAg Y2Fubm90IHJldHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICogdGhlIGxvd2VyLWJvdW5kIGZsYWdz IGFyZSBkaWZmZXJlbnQuCisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5 LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywKKwkJCQkJCQkJICBrZXkt PnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgbG93ZXItPmRhdHVtcywgbG93ZXItPmtpbmQsCisJ CQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOworCUFzc2VydChjbXB2YWwgIT0gMCk7CisJaWYgKGNtcHZh bCA+IDApCisJeworCQkvKiBQb2ludCB0byBwcm9ibGVtYXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRh dHVtcyBsaXN0LiAqLworCQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bSA9IGxpc3RfbnRoKHNw ZWMtPmxvd2VyZGF0dW1zLCBjbXB2YWwgLSAxKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImVt cHR5IHJhbmdlIGJvdW5kIHNwZWNpZmllZCBmb3IgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAg IHJlbG5hbWUpLAorCQkJCWVycmRldGFpbCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdy ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB1cHBlciBib3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFu Z2VfcGFydGJvdW5kX3N0cmluZyhzcGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9yYW5n ZV9wYXJ0Ym91bmRfc3RyaW5nKHNwZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJfQorCisJLyogTmVlZCB0byBjaGVj ayBmaXJzdCBhbmQgbGFzdCBwYXJ0aXRpb25zIChmcm9tIHNldCBvZiBuZXcgcGFydGl0aW9ucykg Ki8KKwlpZiAoZmlyc3QgfHwgbGFzdCkKKwl7CisJCVBhcnRpdGlvbkJvdW5kU3BlYyAqc3BsaXRf c3BlYyA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhzcGxpdFBhcnRPaWQpOworCQlQYXJ0aXRp b25SYW5nZURhdHVtICpkYXR1bTsKKworCQlpZiAoZmlyc3QpCisJCXsKKwkJCVBhcnRpdGlvblJh bmdlQm91bmQgKnNwbGl0X2xvd2VyOworCisJCQlzcGxpdF9sb3dlciA9IG1ha2Vfb25lX3BhcnRp dGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+bG93ZXJkYXR1bXMsIHRydWUpOworCisJ CQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJ CQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJ CQkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJCQkgIHRydWUs IHNwbGl0X2xvd2VyKTsKKworCQkJLyoKKwkJCSAqIExvd2VyIGJvdW5kIG9mICJzcGVjIiBzaG91 bGQgYmUgZXF1YWwgKG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAorCQkJICogaW4gY2FzZSBkZWZh dWx0UGFydD10cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8K KwkJCWlmICghZGVmYXVsdFBhcnQpCisJCQl7CisJCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCXsK KwkJCQkJZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAx KTsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRp b24gXCIlc1wiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24i LAorCQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaWYg KGNtcHZhbCA8IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0 dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coImxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCQkJCX0KKwkJCX0KKwkJfQor CQllbHNlCisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91bmQgKnNwbGl0X3VwcGVyOworCisJCQlz cGxpdF91cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3Bl Yy0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKworCQkJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9j bXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJ CQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCSAgdXBwZXItPmRhdHVtcywgdXBw ZXItPmtpbmQsCisJCQkJCQkJCQkJICBmYWxzZSwgc3BsaXRfdXBwZXIpOworCisJCQkvKgorCQkJ ICogVXBwZXIgYm91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9y IGVxdWFsIGluCisJCQkgKiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbi4KKwkJCSAqLworCQkJaWYgKCFkZWZhdWx0UGFydCkKKwkJCXsKKwkJ CQlpZiAoY21wdmFsICE9IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPnVw cGVyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJt c2coInVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHVwcGVy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpOworCQkJCX0KKwkJ CX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoY21wdmFsID4gMCkKKwkJCQl7CisJCQkJCWRhdHVt ID0gbGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklO SVRJT04pLAorCQkJCQkJCWVycm1zZygidXBwZXIgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBp cyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJ ICAgcmVsbmFtZSksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxv Y2F0aW9uKSk7CisJCQkJfQorCQkJfQorCQl9CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0 aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBw YXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24g YXJlIGluc2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uCisgKiAod2l0aCBPaWQgc3BsaXRQ YXJ0T2lkKS4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6 CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lmaWNh dGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRp b24gT2lkCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0 ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25f Ym91bmRzX2Zvcl9zcGxpdF9saXN0KFJlbGF0aW9uIHBhcmVudCwgY2hhciAqcmVsbmFtZSwKKwkJ CQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJICBPaWQgc3BsaXRQ YXJ0T2lkLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5 IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uRGVzYyBw YXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0 aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJCQl3 aXRoID0gLTE7CisJYm9vbAkJb3ZlcmxhcCA9IGZhbHNlOworCWludAkJCW92ZXJsYXBfbG9jYXRp b24gPSAtMTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9M SVNUKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1Qp OworCUFzc2VydChib3VuZGluZm8gJiYgYm91bmRpbmZvLT5zdHJhdGVneSA9PSBQQVJUSVRJT05f U1RSQVRFR1lfTElTVCk7CisKKwkvKgorCSAqIFNlYXJjaCBlYWNoIHZhbHVlIG9mIG5ldyBwYXJ0 aXRpb24gInNwZWMiIGluIGV4aXN0aW5nIHBhcnRpdGlvbnMuIEFsbAorCSAqIG9mIHRoZW0gc2hv dWxkIGJlIGluIHNwbGl0IHBhcnRpdGlvbiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKwkgKi8K Kwlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbCwgc3BlYy0+bGlzdGRhdHVtcykKKwl7CisJCW92ZXJs YXBfbG9jYXRpb24gPSB2YWwtPmxvY2F0aW9uOworCQlpZiAoIXZhbC0+Y29uc3Rpc251bGwpCisJ CXsKKwkJCWludAkJCW9mZnNldDsKKwkJCWJvb2wJCWVxdWFsOworCisJCQlvZmZzZXQgPSBwYXJ0 aXRpb25fbGlzdF9ic2VhcmNoKCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQlrZXkt PnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJCWJvdW5kaW5mbywKKwkJCQkJCQkJCQkJdmFsLT5j b25zdHZhbHVlLAorCQkJCQkJCQkJCQkmZXF1YWwpOworCQkJaWYgKG9mZnNldCA+PSAwICYmIGVx dWFsKQorCQkJeworCQkJCXdpdGggPSBib3VuZGluZm8tPmluZGV4ZXNbb2Zmc2V0XTsKKwkJCQlp ZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQorCQkJCXsKKwkJCQkJb3Zl cmxhcCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSB0aGlz IHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJCSAg IHJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2Nh dGlvbikpOworCQl9CisJCWVsc2UgaWYgKHBhcnRpdGlvbl9ib3VuZF9hY2NlcHRzX251bGxzKGJv dW5kaW5mbykpCisJCXsKKwkJCXdpdGggPSBib3VuZGluZm8tPm51bGxfaW5kZXg7CisJCQlpZiAo cGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQorCQkJeworCQkJCW92ZXJsYXAg PSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJ ZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1 c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJICAgcmVsbmFtZSksCisJ CQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwl9CisK KwlpZiAob3ZlcmxhcCkKKwl7CisJCUFzc2VydCh3aXRoID49IDApOworCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQll cnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChu b3Qgc3BsaXQpIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICByZWxuYW1lLCBnZXRfcmVsX25h bWUocGFydGRlc2MtPm9pZHNbd2l0aF0pKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBvdmVybGFwX2xvY2F0aW9uKSk7CisJfQorfQorCisvKgorICogZmluZF92YWx1ZV9pbl9uZXdf cGFydGl0aW9uc19saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNUIHBhcnRpdGlvbmlu ZykKKyAqCisgKiBGdW5jdGlvbiByZXR1cm5zIHRydWUgaW4gY2FzZSBhbnkgb2YgbmV3IHBhcnRp dGlvbnMgY29udGFpbnMgdmFsdWUgInZhbHVlIi4KKyAqCisgKiBwYXJ0c3VwZnVuYzoJCWluZm9y bWF0aW9uIGFib3V0IGNvbXBhcmlzb24gZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0 aXRpb24ga2V5CisgKiBwYXJ0Y29sbGF0aW9uOglwYXJ0aXRpb25pbmcgY29sbGF0aW9uCisgKiBw YXJ0czoJCQlwb2ludGVyIHRvIGFycmF5IHdpdGggbmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb25z CisgKiBucGFydHM6CQkJbnVtYmVyIG9mIG5ldyBwYXJ0aXRpb25zCisgKiB2YWx1ZToJCQl0aGUg dmFsdWUgdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IKKyAqIGlzbnVsbDoJCQl0cnVlIGlmIHRoZSB2 YWx1ZSB0aGF0IHdlIGFyZSBsb29raW5nIGZvciBpcyBOVUxMCisgKi8KK3N0YXRpYyBib29sCitm aW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QoRm1nckluZm8gKnBhcnRzdXBmdW5jLAor CQkJCQkJCQkgIE9pZCAqcGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25T cGVjICoqcGFydHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBEYXR1bSB2YWx1 ZSwKKwkJCQkJCQkJICBib29sIGlzbnVsbCkKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IG5wYXJ0 czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFydHNbaV07CisKKwkJ Zm9yZWFjaF9ub2RlKENvbnN0LCB2YWwsIHNwcy0+Ym91bmQtPmxpc3RkYXR1bXMpCisJCXsKKwkJ CWlmIChpc251bGwgJiYgdmFsLT5jb25zdGlzbnVsbCkKKwkJCQlyZXR1cm4gdHJ1ZTsKKworCQkJ aWYgKCFpc251bGwgJiYgIXZhbC0+Y29uc3Rpc251bGwpCisJCQl7CisJCQkJaWYgKERhdHVtR2V0 SW50MzIoRnVuY3Rpb25DYWxsMkNvbGwoJnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJCXBh cnRjb2xsYXRpb25bMF0sCisJCQkJCQkJCQkJCQkJdmFsLT5jb25zdHZhbHVlLAorCQkJCQkJCQkJ CQkJCXZhbHVlKSkgPT0gMCkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwl9CisJcmV0 dXJuIGZhbHNlOworfQorCisvKgorICogY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0 aW9ucworICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgorICog Q2hlY2tzIHRoYXQgYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gKHdpdGggT2lkIHBhcnRP aWQpIGNvbnRhaW5zIGluIG5ldworICogcGFydGl0aW9ucy4KKyAqCisgKiBwYXJlbnQ6CXBhcnRp dGlvbmVkIHRhYmxlCisgKiBwYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBwYXJ0czoJ cG9pbnRlciB0byBhcnJheSB3aXRoIG5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9ucworICogbnBh cnRzOgludW1iZXIgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHBzdGF0ZToJcG9pbnRlciB0byBQYXJz ZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2 b2lkCitjaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKFJlbGF0aW9uIHBhcmVu dCwKKwkJCQkJCQkJCSAgT2lkIHBhcnRPaWQsCisJCQkJCQkJCQkgIFNpbmdsZVBhcnRpdGlvblNw ZWMgKipwYXJ0cywKKwkJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJCSAgUGFyc2VTdGF0 ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktl eShwYXJlbnQpOworCVBhcnRpdGlvbkRlc2MgcGFydGRlc2MgPSBSZWxhdGlvbkdldFBhcnRpdGlv bkRlc2MocGFyZW50LCBmYWxzZSk7CisJUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbyA9IHBh cnRkZXNjLT5ib3VuZGluZm87CisJaW50CQkJaTsKKwlib29sCQlmb3VuZCA9IHRydWU7CisJYm9v bAkJc2VhcmNoTnVsbCA9IGZhbHNlOworCURhdHVtCQlkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShO VUxMKTsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNU KTsKKworCS8qCisJICogU3BlY2lhbCBwcm9jZXNzaW5nIGZvciBOVUxMIHZhbHVlLiBTZWFyY2gg TlVMTCB2YWx1ZSBpZiB0aGUgc3BsaXQKKwkgKiBwYXJ0aXRpb24gKHBhcnRPaWQpIGNvbnRhaW5z IGl0LgorCSAqLworCWlmIChwYXJ0aXRpb25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8p ICYmCisJCXBhcnRkZXNjLT5vaWRzW2JvdW5kaW5mby0+bnVsbF9pbmRleF0gPT0gcGFydE9pZCkK Kwl7CisJCWlmICghZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRz dXBmdW5jWzBdLAorCQkJCQkJCQkJCQkgICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFy dHMsIGRhdHVtLCB0cnVlKSkKKwkJeworCQkJZm91bmQgPSBmYWxzZTsKKwkJCXNlYXJjaE51bGwg PSB0cnVlOworCQl9CisJfQorCisJLyoKKwkgKiBTZWFyY2ggYWxsIHZhbHVlcyBvZiBzcGxpdCBw YXJ0aXRpb24gd2l0aCBwYXJ0T2lkIGluIFBhcnRpdGlvbkRlc2Mgb2YKKwkgKiBwYXJ0aXRpb25l ZCB0YWJsZS4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgYm91bmRpbmZvLT5uZGF0dW1zOyBpKysp CisJeworCQlpZiAocGFydGRlc2MtPm9pZHNbYm91bmRpbmZvLT5pbmRleGVzW2ldXSA9PSBwYXJ0 T2lkKQorCQl7CisJCQkvKiBXZSBmb3VuZCB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBjb250 YWlucy4gKi8KKwkJCWRhdHVtID0gYm91bmRpbmZvLT5kYXR1bXNbaV1bMF07CisJCQlpZiAoIWZp bmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJ CQkJCQkJCQkJCSAgIGtleS0+cGFydGNvbGxhdGlvbiwgcGFydHMsIG5wYXJ0cywgZGF0dW0sIGZh bHNlKSkKKwkJCXsKKwkJCQlmb3VuZCA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJ fQorCisJaWYgKCFmb3VuZCkKKwl7CisJCUNvbnN0CSAgICpub3RGb3VuZFZhbDsKKworCQlpZiAo IXNlYXJjaE51bGwpCisKKwkJCS8qCisJCQkgKiBNYWtlIENvbnN0IGZvciBnZXR0aW5nIHN0cmlu ZyByZXByZXNlbnRhdGlvbiBvZiBub3QgZm91bmQKKwkJCSAqIHZhbHVlLgorCQkJICovCisJCQlu b3RGb3VuZFZhbCA9IG1ha2VDb25zdChrZXktPnBhcnR0eXBpZFswXSwKKwkJCQkJCQkJCWtleS0+ cGFydHR5cG1vZFswXSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cGNvbGxbMF0sCisJCQkJCQkJCQlr ZXktPnBhcnR0eXBsZW5bMF0sCisJCQkJCQkJCQlkYXR1bSwKKwkJCQkJCQkJCWZhbHNlLAkvKiBp c251bGwgKi8KKwkJCQkJCQkJCWtleS0+cGFydHR5cGJ5dmFsWzBdKTsKKworCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQllcnJtc2coIm5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICVzIGJ1dCBzcGxpdCBw YXJ0aXRpb24gZG9lcyIsCisJCQkJCSAgIHNlYXJjaE51bGwgPyAiTlVMTCIgOiBnZXRfbGlzdF9w YXJ0dmFsdWVfc3RyaW5nKG5vdEZvdW5kVmFsKSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3Bh cnRpdGlvbnNfZm9yX3NwbGl0CisgKgorICogQ2hlY2tzIG5ldyBwYXJ0aXRpb25zIGZvciBTUExJ VCBQQVJUSVRJT05TIGNvbW1hbmQ6CisgKiAxLiBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUg b25lLgorICogMi4gTmV3IHBhcnRpdGlvbnMgc2hvdWxkIGhhdmUgZGlmZmVyZW50IG5hbWVzCisg KiAgICAod2l0aCBleGlzdGluZyBwYXJ0aXRpb25zIHRvbykuCisgKiAzLiBCb3VuZHMgb2YgbmV3 IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFuZCBleGlzdGluZworICog ICAgcGFydGl0aW9ucy4KKyAqIDQuIEluIGNhc2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQg cGFydGl0aW9uLCBvbmUgb2YgbmV3IHBhcnRpdGlvbnMKKyAqICAgIHNob3VsZCBiZSBERUZBVUxU LgorICogNS4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBvciBleGlzdGluZyBwYXJ0aXRpb25zIGNv bnRhaW5zIERFRkFVTFQKKyAqICAgIHBhcnRpdGlvbiwgbmV3IHBhcnRpdGlvbnMgY2FuIGhhdmUg YW55IGJvdW5kcyBpbnNpZGUgc3BsaXQKKyAqICAgIHBhcnRpdGlvbiBib3VuZCAoY2FuIGJlIHNw YWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMgYm91bmRzKS4KKyAqIDYuIEluIGNhc2UgcGFydGl0aW9u ZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlvbiwgREVGQVVMVAorICogICAg cGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZSBvZiBuZXcgcGFydGl0aW9uLgorICogNy4g SW4gY2FzZSBuZXcgcGFydGl0aW9ucyBub3QgY29udGFpbnMgREVGQVVMVCBwYXJ0aXRpb24gYW5k CisgKiAgICBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZlIERFRkFVTFQgcGFydGl0aW9u IHRoZSBmb2xsb3dpbmcKKyAqICAgIHNob3VsZCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBw YXJ0aXRpb25zIHNob3VsZCBiZSBlcXVhbAorICogICAgdG8gYm91bmQgb2Ygc3BsaXQgcGFydGl0 aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogc3BsaXRQYXJ0T2lk OglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBsaXN0OgkJCWxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMK KyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUg ZXJyb3IgcG9zaXRpb24KKyAqLwordm9pZAorY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVs YXRpb24gcGFyZW50LAorCQkJCQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCSAgIExpc3Qg KnBhcnRsaXN0LAorCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktl eSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJYm9vbAkJ aXNTcGxpdFBhcnREZWZhdWx0OworCWJvb2wJCWNyZWF0ZURlZmF1bHRQYXJ0OworCWludAkJCWRl ZmF1bHRfaW5kZXggPSAtMTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2luZ2xlUGFydGl0aW9uU3Bl YyAqKm5ld19wYXJ0czsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHNQcmV2ID0gTlVMTDsKKwlp bnQJCQlucGFydHMgPSAwOworCisJa2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50 KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3RyYXRlZ3koa2V5KTsKKworCXN3aXRjaCAo c3RyYXRlZ3kpCisJeworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUOgorCQljYXNlIFBB UlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE1ha2UgYXJyYXkg bmV3X3BhcnRzIHdpdGggbmV3IHBhcnRpdGlvbnMgZXhjZXB0IERFRkFVTFQKKwkJCQkgKiBwYXJ0 aXRpb24uCisJCQkJICovCisJCQkJbmV3X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiop CisJCQkJCXBhbGxvYzAobGlzdF9sZW5ndGgocGFydGxpc3QpICogc2l6ZW9mKFNpbmdsZVBhcnRp dGlvblNwZWMgKikpOworCQkJCWkgPSAwOworCQkJCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRp b25TcGVjLCBzcHMsIHBhcnRsaXN0KQorCQkJCXsKKwkJCQkJaWYgKHNwcy0+Ym91bmQtPmlzX2Rl ZmF1bHQpCisJCQkJCXsKKwkJCQkJCWlmIChkZWZhdWx0X2luZGV4ID49IDApCisJCQkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKKwkJCQkJCQkJCWVycm1zZygiREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9u ZSIpLAorCQkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3BzLT5uYW1lLT5sb2Nh dGlvbikpOworCQkJCQkJZGVmYXVsdF9pbmRleCA9IGk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJ CQl7CisJCQkJCQluZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOworCQkJCQl9CisJCQkJCWkrKzsK KwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9IQVNI OgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCWVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFi bGUgY2Fubm90IGJlIHNwbGl0IikpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2co RVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJhdGVneTogJWQiLAorCQkJCSAoaW50KSBr ZXktPnN0cmF0ZWd5KTsKKwkJCWJyZWFrOworCX0KKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJ T05fU1RSQVRFR1lfUkFOR0UpCisJeworCQlQYXJ0aXRpb25SYW5nZUJvdW5kICoqbG93ZXJfYm91 bmRzOworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICoqdG1wX25ld19wYXJ0czsKKworCQkvKgorCQkg KiBGb3Igc2ltcGxpZnkgY2hlY2sgZm9yIHJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBuZWVkIHRv IHNvcnQgYWxsCisJCSAqIHBhcnRpdGlvbnMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHRoZW0gYm91 bmRzICh3ZSBjb21wYXJlIHVwcGVyCisJCSAqIGJvdW5kIG9ubHkpLgorCQkgKi8KKwkJbG93ZXJf Ym91bmRzID0gKFBhcnRpdGlvblJhbmdlQm91bmQgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNp emVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICopKTsKKworCQkvKiBDcmVhdGUgYXJyYXkgb2YgbG93 ZXIgYm91bmRzLiAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCXsKKwkJCWxv d2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCBpLAorCQkJCQkJ CQkJCQkJCQluZXdfcGFydHNbaV0tPmJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCX0KKwor CQkvKiBTb3J0IGFycmF5IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJcXNvcnRfYXJnKGxvd2VyX2Jv dW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSwKKwkJCQkgIHFzb3J0 X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOworCisJCS8qIFJlb3JkZXIgYXJy YXkgb2YgcGFydGl0aW9ucy4gKi8KKwkJdG1wX25ld19wYXJ0cyA9IG5ld19wYXJ0czsKKwkJbmV3 X3BhcnRzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKiopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNp emVvZihTaW5nbGVQYXJ0aXRpb25TcGVjICopKTsKKwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsg aSsrKQorCQkJbmV3X3BhcnRzW2ldID0gdG1wX25ld19wYXJ0c1tsb3dlcl9ib3VuZHNbaV0tPmlu ZGV4XTsKKworCQlwZnJlZSh0bXBfbmV3X3BhcnRzKTsKKwkJcGZyZWUobG93ZXJfYm91bmRzKTsK Kwl9CisKKwlkZWZhdWx0UGFydE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNj KFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCS8qIGlzU3BsaXRQ YXJ0RGVmYXVsdCBmbGFnOiBpcyBzcGxpdCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8g Ki8KKwlpc1NwbGl0UGFydERlZmF1bHQgPSAoZGVmYXVsdFBhcnRPaWQgPT0gc3BsaXRQYXJ0T2lk KTsKKworCWlmIChpc1NwbGl0UGFydERlZmF1bHQgJiYgZGVmYXVsdF9pbmRleCA8IDApCisJewor CQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKKwkJCQllcnJtc2coIm9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJl IERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVCIpLAorCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsICgoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsaW5pdGlhbChw YXJ0bGlzdCkpLT5uYW1lLT5sb2NhdGlvbikpOworCX0KKwllbHNlIGlmICghaXNTcGxpdFBhcnRE ZWZhdWx0ICYmIChkZWZhdWx0X2luZGV4ID49IDApICYmIE9pZElzVmFsaWQoZGVmYXVsdFBhcnRP aWQpKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzRGVmID0KKwkJCShTaW5nbGVQYXJ0 aXRpb25TcGVjICopIGxpc3RfbnRoKHBhcnRsaXN0LCBkZWZhdWx0X2luZGV4KTsKKworCQllcmVw b3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9O KSwKKwkJCQllcnJtc2coIm5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBE RUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cyIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIHNwc0RlZi0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisKKwkvKiBJbmRpY2F0b3Ig dGhhdCB0aGUgREVGQVVMVCBwYXJ0aXRpb24gd2lsbCBiZSBjcmVhdGVkLiAqLworCWNyZWF0ZURl ZmF1bHRQYXJ0ID0gKGRlZmF1bHRfaW5kZXggPj0gMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBh cnRzOyBpKyspCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSBuZXdfcGFydHNbaV07 CisKKwkJaWYgKGlzU3BsaXRQYXJ0RGVmYXVsdCkKKwkJeworCQkJLyoKKwkJCSAqIEluIGNhc2Ug c3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uIHdlIGNhbiB1c2UgYW55CisJCQkg KiBmcmVlIHJhbmdlcyAtIGFzIHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFydGl0aW9uLgorCQkJICov CisJCQljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKHNwcy0+bmFtZS0+cmVsbmFtZSwgcGFyZW50 LCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJICBwc3RhdGUpOworCQl9CisJCWVsc2UKKwkJeworCQkJ LyoKKwkJCSAqIENoZWNrcyB0aGF0IGJvdW5kIG9mIGN1cnJlbnQgcGFydGl0aW9uIGlzIGluc2lk ZSBib3VuZCBvZiBzcGxpdAorCQkJICogcGFydGl0aW9uLiBGb3IgcmFuZ2UgcGFydGl0aW9uaW5n OiBjaGVja3MgdGhhdCB1cHBlciBib3VuZCBvZgorCQkJICogcHJldmlvdXMgcGFydGl0aW9uIGlz IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIGN1cnJlbnQKKwkJCSAqIHBhcnRpdGlvbi4gRm9yIGxp c3QgcGFydGl0aW9uaW5nOiBjaGVja3MgdGhhdCBzcGxpdCBwYXJ0aXRpb24KKwkJCSAqIGNvbnRh aW5zIGFsbCB2YWx1ZXMgb2YgY3VycmVudCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmIChzdHJh dGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpCisJCQl7CisJCQkJYm9vbAkJZmlyc3Qg PSAoaSA9PSAwKTsKKwkJCQlib29sCQlsYXN0ID0gKGkgPT0gKG5wYXJ0cyAtIDEpKTsKKworCQkJ CWNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKHBhcmVudCwgc3BzLT5uYW1l LT5yZWxuYW1lLCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJCQkJCSAgIHNwbGl0UGFydE9pZCwgZmly c3QsIGxhc3QsCisJCQkJCQkJCQkJCQkJICAgY3JlYXRlRGVmYXVsdFBhcnQsIHBzdGF0ZSk7CisJ CQl9CisJCQllbHNlCisJCQkJY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdChw YXJlbnQsIHNwcy0+bmFtZS0+cmVsbmFtZSwKKwkJCQkJCQkJCQkJCQkgIHNwcy0+Ym91bmQsIHNw bGl0UGFydE9pZCwgcHN0YXRlKTsKKwkJfQorCisJCS8qIFJhbmdlcyBvZiBuZXcgcGFydGl0aW9u cyBzaG91bGQgbm90IG92ZXJsYXAuICovCisJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RS QVRFR1lfUkFOR0UgJiYgc3BzUHJldikKKwkJCWNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19y YW5nZShwYXJlbnQsIHNwc1ByZXYtPm5hbWUsIHNwc1ByZXYtPmJvdW5kLAorCQkJCQkJCQkJCQkg IHNwcy0+bmFtZSwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCQkJICBjcmVhdGVEZWZhdWx0UGFydCwK KwkJCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCQkJICBwc3RhdGUpOworCisJCXNwc1ByZXYg PSBzcHM7CisKKwkJLyogQ2hlY2s6IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZlIGRpZmZlcmVu dCBuYW1lcy4gKi8KKwkJZm9yIChqID0gaSArIDE7IGogPCBucGFydHM7IGorKykKKwkJeworCQkJ U2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzMiA9IG5ld19wYXJ0c1tqXTsKKwkJCWJvb2wJCXJlc3Vs dCA9IGZhbHNlOworCisJCQkvKgorCQkJICogTmVlZCB0byBjb21wYXJlIG5hbWVzcGFjZXM/IE9u ZSBvZiB0aGUgc2NoZW1hIG5hbWVzIG1heSBiZQorCQkJICogdW5kZWZpbmVkLCBidXQgdGhlIHNj aGVtYXMgbWF5IHN0aWxsIGJlIGVxdWFsLgorCQkJICovCisJCQlpZiAoKHNwcy0+bmFtZS0+c2No ZW1hbmFtZSAmJiAhc3BzMi0+bmFtZS0+c2NoZW1hbmFtZSkgfHwKKwkJCQkoIXNwcy0+bmFtZS0+ c2NoZW1hbmFtZSAmJiBzcHMyLT5uYW1lLT5zY2hlbWFuYW1lKSkKKwkJCXsKKwkJCQlPaWQJCQlu c3BpZCA9IFJhbmdlVmFyR2V0Q3JlYXRpb25OYW1lc3BhY2Uoc3BzLT5uYW1lKTsKKwkJCQlPaWQJ CQluc3BpZDIgPSBSYW5nZVZhckdldENyZWF0aW9uTmFtZXNwYWNlKHNwczItPm5hbWUpOworCisJ CQkJaWYgKG5zcGlkID09IG5zcGlkMikKKwkJCQkJcmVzdWx0ID0gKHN0cmNtcChzcHMtPm5hbWUt PnJlbG5hbWUsIHNwczItPm5hbWUtPnJlbG5hbWUpID09IDApOworCQkJfQorCQkJZWxzZQorCQkJ CXJlc3VsdCA9IGVxdWFsKHNwcy0+bmFtZSwgc3BzMi0+bmFtZSk7CisKKwkJCWlmIChyZXN1bHQp CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFC TEUpLAorCQkJCQkJZXJybXNnKCJuYW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBzcHMyLT5u YW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHNwczItPm5h bWUtPmxvY2F0aW9uKSk7CisJCX0KKwl9CisKKwlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NU UkFURUdZX0xJU1QpCisJeworCQkvKiBWYWx1ZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5v dCBvdmVybGFwLiAqLworCQljaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX2xpc3QocGFyZW50 LCBuZXdfcGFydHMsIG5wYXJ0cywKKwkJCQkJCQkJCQkgIHBzdGF0ZSk7CisKKwkJLyoKKwkJICog TmVlZCB0byBjaGVjayB0aGF0IGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5z IGluIG5ldworCQkgKiBwYXJ0aXRpb25zLiBTa2lwIHRoaXMgY2hlY2sgaWYgREVGQVVMVCBwYXJ0 aXRpb24gZXhpc3RzLgorCQkgKi8KKwkJaWYgKCFjcmVhdGVEZWZhdWx0UGFydCkKKwkJCWNoZWNr X3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMocGFyZW50LCBzcGxpdFBhcnRPaWQsCisJ CQkJCQkJCQkJCQkgIG5ld19wYXJ0cywgbnBhcnRzLCBwc3RhdGUpOworCX0KKworCXBmcmVlKG5l d19wYXJ0cyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggM2Q2ZTZiZGJmZDIu LjNlMTY4OWIxMThjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMzcwNywzICsx MzcwNywyMSBAQCBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3VuZF9kYXR1bXMp CiAKIAlyZXR1cm4gYnVmLT5kYXRhOwogfQorCisvKgorICogZ2V0X2xpc3RfcGFydHZhbHVlX3N0 cmluZworICoJCUEgQyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygb25lIGxpc3QgcGFydGl0aW9u IHZhbHVlCisgKi8KK2NoYXIgKgorZ2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhDb25zdCAqdmFs KQoreworCWRlcGFyc2VfY29udGV4dCBjb250ZXh0OworCVN0cmluZ0luZm8JYnVmID0gbWFrZVN0 cmluZ0luZm8oKTsKKworCW1lbXNldCgmY29udGV4dCwgMCwgc2l6ZW9mKGRlcGFyc2VfY29udGV4 dCkpOworCWNvbnRleHQuYnVmID0gYnVmOworCisJZ2V0X2NvbnN0X2V4cHIodmFsLCAmY29udGV4 dCwgLTEpOworCisJcmV0dXJuIGJ1Zi0+ZGF0YTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRl eCAzZWMwMzNkOGQ4Zi4uYTA0OTUzZTUxMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTI3 NTAsNyArMjc1MCw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQkJ CQkgICJPV05FUiBUTyIsICJTRVQiLCAiVkFMSURBVEUgQ09OU1RSQUlOVCIsCiAJCQkJCSAgIlJF UExJQ0EgSURFTlRJVFkiLCAiQVRUQUNIIFBBUlRJVElPTiIsCiAJCQkJCSAgIkRFVEFDSCBQQVJU SVRJT04iLCAiRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIiwKLQkJCQkJICAiTUVSR0UgUEFSVElU SU9OUyAoIiwKKwkJCQkJICAiU1BMSVQgUEFSVElUSU9OIiwgIk1FUkdFIFBBUlRJVElPTlMgKCIs CiAJCQkJCSAgIk9GIiwgIk5PVCBPRiIpOwogCS8qIEFMVEVSIFRBQkxFIHh4eCBBREQgKi8KIAll bHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiQUREIikpCkBAIC0z MDEzLDEwICszMDEzLDEwIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAog CQlDT01QTEVURV9XSVRIKCJGUk9NICgiLCAiSU4gKCIsICJXSVRIICgiKTsKIAogCS8qCi0JICog SWYgd2UgaGF2ZSBBTFRFUiBUQUJMRSA8Zm9vPiBERVRBQ0ggUEFSVElUSU9OLCBwcm92aWRlIGEg bGlzdCBvZgorCSAqIElmIHdlIGhhdmUgQUxURVIgVEFCTEUgPGZvbz4gREVUQUNIfFNQTElUIFBB UlRJVElPTiwgcHJvdmlkZSBhIGxpc3Qgb2YKIAkgKiBwYXJ0aXRpb25zIG9mIDxmb28+LgogCSAq LwotCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJERVRBQ0gi LCAiUEFSVElUSU9OIikpCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRj aEFueSwgIkRFVEFDSHxTUExJVCIsICJQQVJUSVRJT04iKSkKIAl7CiAJCXNldF9jb21wbGV0aW9u X3JlZmVyZW5jZShwcmV2M193ZCk7CiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5 X2Zvcl9wYXJ0aXRpb25fb2ZfdGFibGUpOwpAQCAtMzAyNCw2ICszMDI0LDEwIEBAIG1hdGNoX3By ZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwg IlRBQkxFIiwgTWF0Y2hBbnksICJERVRBQ0giLCAiUEFSVElUSU9OIiwgTWF0Y2hBbnkpKQogCQlD T01QTEVURV9XSVRIKCJDT05DVVJSRU5UTFkiLCAiRklOQUxJWkUiKTsKIAorCS8qIEFMVEVSIFRB QkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPG5hbWU+ICovCisJZWxzZSBpZiAoTWF0Y2hlcygi QUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIlNQTElUIiwgIlBBUlRJVElPTiIsIE1hdGNoQW55 KSkKKwkJQ09NUExFVEVfV0lUSCgiSU5UTyAoIFBBUlRJVElPTiIpOworCiAJLyogQUxURVIgVEFC TEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlRBQkxFIiwgTWF0Y2hBbnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigiKSkKIAl7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggYjFiMzMxNWZlNTQuLjVjOWJlODQ4M2Y1IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCkBAIC05NjMsMTcgKzk2MywyOSBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0 aXRpb25SYW5nZURhdHVtCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwg b3IgLTEgaWYgdW5rbm93biAqLwogfSBQYXJ0aXRpb25SYW5nZURhdHVtOwogCisvKgorICogUGFy dGl0aW9uRGVzYyAtIGluZm8gYWJvdXQgc2luZ2xlIHBhcnRpdGlvbiBmb3IgQUxURVIgVEFCTEUg U1BMSVQgUEFSVElUSU9OIGNvbW1hbmQKKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2luZ2xlUGFydGl0 aW9uU3BlYworeworCU5vZGVUYWcJCXR5cGU7CisKKwlSYW5nZVZhciAgICpuYW1lOwkJCS8qIG5h bWUgb2YgcGFydGl0aW9uICovCisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZB TFVFUywgaWYgYXR0YWNoaW5nICovCit9IFNpbmdsZVBhcnRpdGlvblNwZWM7CisKIC8qCiAgKiBQ YXJ0aXRpb25DbWQgLSBpbmZvIGZvciBBTFRFUiBUQUJMRS9JTkRFWCBBVFRBQ0gvREVUQUNIIFBB UlRJVElPTiBhbmQgZm9yCi0gKgkgIEFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlMgY29tbWFu ZHMKKyAqCSAgQUxURVIgVEFCTEUgU1BMSVQvTUVSR0UgUEFSVElUSU9OKFMpIGNvbW1hbmRzCiAg Ki8KIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNtZAogewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFu Z2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoL21l cmdlICovCisJUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiB0bworCQkJ CQkJCQkgKiBhdHRhY2gvZGV0YWNoL21lcmdlL3NwbGl0ICovCiAJUGFydGl0aW9uQm91bmRTcGVj ICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCi0JTGlzdAkgICAqcGFydGxp c3Q7CQkvKiBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkLCB1c2VkIGluCi0JCQkJCQkJ CSAqIEFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlMgKi8KKwlMaXN0CSAgICpwYXJ0bGlzdDsJ CS8qIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBiZSBzcGxpdC9tZXJnZWQsIHVzZWQKKwkJCQkJCQkJ ICogaW4gQUxURVIgVEFCTEUgU1BMSVQvTUVSR0UgUEFSVElUSU9OKFMpICovCiAJYm9vbAkJY29u Y3VycmVudDsKIH0gUGFydGl0aW9uQ21kOwogCkBAIC0yNDc2LDYgKzI0ODgsNyBAQCB0eXBlZGVm IGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9BdHRhY2hQYXJ0aXRpb24sCQkJLyogQVRUQUNIIFBB UlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbiwJCQkvKiBERVRBQ0ggUEFSVElUSU9OICov CiAJQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemUsIC8qIERFVEFDSCBQQVJUSVRJT04gRklOQUxJ WkUgKi8KKwlBVF9TcGxpdFBhcnRpdGlvbiwJCQkvKiBTUExJVCBQQVJUSVRJT04gKi8KIAlBVF9N ZXJnZVBhcnRpdGlvbnMsCQkJLyogTUVSR0UgUEFSVElUSU9OUyAqLwogCUFUX0FkZElkZW50aXR5 LAkJCQkvKiBBREQgSURFTlRJVFkgKi8KIAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlkZW50 aXR5IGNvbHVtbiBvcHRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggOTBlOGNkZGY4YjcuLjY2 Yzg4NzY2NTdlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC00MjEsNiArNDIxLDcgQEAgUEdfS0VZV09S RCgic21hbGxpbnQiLCBTTUFMTElOVCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInNuYXBzaG90IiwgU05BUFNIT1QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInNvbWUiLCBTT01FLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgic291cmNlIiwgU09VUkNFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCitQR19LRVlXT1JEKCJzcGxpdCIsIFNQTElULCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzcWwiLCBTUUxfUCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3RhYmxlIiwgU1RBQkxFLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdGFuZGFsb25lIiwgU1RBTkRBTE9ORV9Q LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuaAppbmRleCA2OTBkMjU5NjE5MC4uNDViMWZhMWRlODAgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDYgKzE0MywxMCBAQCBleHRlcm4gaW50CXBh cnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKIGV4dGVy biBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZv LAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFpbmRlcik7CiAKK2V4dGVybiB2b2lk IGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCSAg IE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCQkJ CSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSk7CiBleHRlcm4gdm9pZCBjYWxjdWxhdGVfcGFydGl0aW9u X2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0 TmFtZXMsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0T2lkcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3J1bGV1dGlscy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKaW5k ZXggNWYyZWEyZTRkMGUuLjYyMDQzZDNiZjVjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9ydWxldXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApAQCAtNTQs NCArNTQsNiBAQCBleHRlcm4gY2hhciAqZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAq Ym91bmRfZGF0dW1zKTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9zdGF0aXN0aWNzb2JqZGVmX3N0 cmluZyhPaWQgc3RhdGV4dGlkKTsKIAorZXh0ZXJuIGNoYXIgKmdldF9saXN0X3BhcnR2YWx1ZV9z dHJpbmcoQ29uc3QgKnZhbCk7CisKICNlbmRpZgkJCQkJCQkvKiBSVUxFVVRJTFNfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQg Yi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWQ5ZThiMDkyNWYKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLXNwbGl0Lm91dApA QCAtMCwwICsxLDE5MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBz MWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElP TiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBW QUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElO U0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVw IHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1J VDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0K KyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1Ciso NSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnJyIHMyaSBz MWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRw YXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRw YXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9O IHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJycjog QkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQg SU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6 IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7Citz dGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0 ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93 cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJj IHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQ TElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEw XzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0 XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJ U09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOwor c3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBT RUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8 dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3Rl cCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFz cGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTwor CQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp LAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAo MjApKTsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxV RVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNU ICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQw MQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBz MWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0 OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJ ICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAor CQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjAp KTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7Citz dGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAK Ky0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1Cisz NXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJyIHMxc3Bs dCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVM IFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQ QVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8y MCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxV RVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAg czJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNU ICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQw MQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFicyBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJz OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFMVEVS IFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFS VElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAg UEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3Rl eHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRw YXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4dDAxCisxNXx0ZXh0 MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMWJzIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFiczogQkVHSU4g SVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0 cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0 cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElP TiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6 IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFj OiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOwor c3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8 dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJv d3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnMgczJpIHMxYyBz MmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7Citz dGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIw IElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkg VE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgx NSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFC TEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0 ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4 dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlv bi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVk dWxlCmluZGV4IDg1NDE1NDY2Nzg1Li44NTAzZGQ4MDFhYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNv bGF0aW9uX3NjaGVkdWxlCkBAIC0xMTEsNiArMTExLDcgQEAgdGVzdDogcGFydGl0aW9uLWtleS11 cGRhdGUtMgogdGVzdDogcGFydGl0aW9uLWtleS11cGRhdGUtMwogdGVzdDogcGFydGl0aW9uLWtl eS11cGRhdGUtNAogdGVzdDogcGFydGl0aW9uLW1lcmdlCit0ZXN0OiBwYXJ0aXRpb24tc3BsaXQK IHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0 ZXItY29uZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvcGFydGl0aW9uLXNwbGl0LnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0 aW9uLXNwbGl0LnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA4 NzIzOWE0YTE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3Bh cnRpdGlvbi1zcGxpdC5zcGVjCkBAIC0wLDAgKzEsNTQgQEAKKyMgVmVyaWZ5IHRoYXQgU1BMSVQg b3BlcmF0aW9uIGxvY2tzIERNTCBvcGVyYXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUKKwor c2V0dXAKK3sKKyAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBUQUJMRSB0 cGFydChpIGludCwgdCB0ZXh0KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJM RSB0cGFydF8wMF8xMCBQQVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MTApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBW QUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8yMF8zMCBQQVJU SVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKyAgQ1JFQVRFIFRB QkxFIHRwYXJ0X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7CisgIElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoNSwgJ3RleHQwNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxV RVMgKDE1LCAndGV4dDE1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMjUsICd0ZXh0 MjUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgzNSwgJ3RleHQzNScpOworfQorCit0 ZWFyZG93bgoreworICBEUk9QIFRBQkxFIHRwYXJ0OworfQorCitzZXNzaW9uIHMxCitzdGVwIHMx Ygl7IEJFR0lOOyB9CitzdGVwIHMxYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFC TEUgUkVBRDsgfQorc3RlcCBzMWJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJM RTsgfQorc3RlcCBzMXNwbHQJeyBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBh cnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVT IEZST00gKDE1KSBUTyAoMjApKTsgfQorc3RlcCBzMWMJeyBDT01NSVQ7IH0KKworCitzZXNzaW9u IHMyCitzdGVwIHMyYgl7IEJFR0lOOyB9CitzdGVwIHMyYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMmJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVM IFNFUklBTElaQUJMRTsgfQorc3RlcCBzMmkJeyBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEs ICd0ZXh0MDEnKTsgfQorc3RlcCBzMmMJeyBDT01NSVQ7IH0KK3N0ZXAgczJzCXsgU0VMRUNUICog RlJPTSB0cGFydDsgfQorCisKKyMgczEgc3RhcnRzIFNQTElUIFBBUlRJVElPTiB0aGVuIHMyIHRy eWluZyB0byBpbnNlcnQgcm93IGFuZAorIyB3YWl0cyB1bnRpbCBzMSBmaW5pc2hlZCBTUExJVCBv cGVyYXRpb24uCisKK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycwor cGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9u IHMxYiBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBzMnMKKworcGVybXV0YXRpb24gczFicnIgczFz cGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnJyIHMxc3BsdCBzMmJyciBz MmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnJyIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJj IHMycworCitwZXJtdXRhdGlvbiBzMWJzIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJt dXRhdGlvbiBzMWJzIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMx YnMgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0IGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dAppbmRleCBj NDAzYzJmNTY5Zi4uMTNjY2ZiNzRmNTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dApAQCAtNjEsNiAr NjEsMTEgQEAgTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgc2ltcGxlLCB0YWcgQ1JFQVRFIFRBQkxF CiBBTFRFUiBUQUJMRSBwYXJ0IE1FUkdFIFBBUlRJVElPTlMgKHBhcnQxLCBwYXJ0MikgSU5UTyBw YXJ0MTsKIE5PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcgQUxURVIgVEFC TEUKIE5PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBNRVJHRSBQQVJUSVRJT05TIGRlc2MgPE5V TEw+CitBTFRFUiBUQUJMRSBwYXJ0IFNQTElUIFBBUlRJVElPTiBwYXJ0MSBJTlRPCisJKFBBUlRJ VElPTiBwYXJ0MSBGT1IgVkFMVUVTIEZST00gKDEpIHRvICgxMDApLAorCSBQQVJUSVRJT04gcGFy dDIgRk9SIFZBTFVFUyBGUk9NICgxMDApIHRvICgyMDApKTsKK05PVElDRTogIERETCB0ZXN0OiB0 eXBlIGFsdGVyIHRhYmxlLCB0YWcgQUxURVIgVEFCTEUKK05PVElDRTogICAgc3ViY29tbWFuZDog dHlwZSBTUExJVCBQQVJUSVRJT04gZGVzYyA8TlVMTD4KIEFMVEVSIFRBQkxFIHBhcnQgQUREIFBS SU1BUlkgS0VZIChhKTsKIE5PVElDRTogIERETCB0ZXN0OiB0eXBlIGFsdGVyIHRhYmxlLCB0YWcg QUxURVIgVEFCTEUKIE5PVElDRTogICAgc3ViY29tbWFuZDogdHlwZSBBREQgQ09OU1RSQUlOVCAo YW5kIHJlY3Vyc2UpIGRlc2MgY29uc3RyYWludCBwYXJ0X2Ffbm90X251bGwgb24gdGFibGUgcGFy dApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRl cl90YWJsZS5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2Uvc3FsL2FsdGVy X3RhYmxlLnNxbAppbmRleCAzMWU2OTEwMGEzMC4uMWU3NWZlYWE0NTMgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsCkBA IC0zOCw2ICszOCwxMCBAQCBEUk9QIFRBQkxFIHBhcnQyOwogQ1JFQVRFIFRBQkxFIHBhcnQyIFBB UlRJVElPTiBPRiBwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSB0byAoMjAwKTsKIEFMVEVSIFRB QkxFIHBhcnQgTUVSR0UgUEFSVElUSU9OUyAocGFydDEsIHBhcnQyKSBJTlRPIHBhcnQxOwogCitB TFRFUiBUQUJMRSBwYXJ0IFNQTElUIFBBUlRJVElPTiBwYXJ0MSBJTlRPCisJKFBBUlRJVElPTiBw YXJ0MSBGT1IgVkFMVUVTIEZST00gKDEpIHRvICgxMDApLAorCSBQQVJUSVRJT04gcGFydDIgRk9S IFZBTFVFUyBGUk9NICgxMDApIHRvICgyMDApKTsKKwogQUxURVIgVEFCTEUgcGFydCBBREQgUFJJ TUFSWSBLRVkgKGEpOwogCiBBTFRFUiBUQUJMRSBwYXJlbnQgQUxURVIgQ09MVU1OIGEgU0VUIE5P VCBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rl c3RfZGRsX2RlcGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0 X2RkbF9kZXBhcnNlLmMKaW5kZXggN2RlNWRkYjg3ODUuLjE3ZDcyZTQxMmZmIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMK QEAgLTI5Niw2ICsyOTYsOSBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJjbWRpbmZvKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJCXN0cnR5cGUg PSAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUiOwogCQkJCWJyZWFrOworCQkJY2FzZSBB VF9TcGxpdFBhcnRpdGlvbjoKKwkJCQlzdHJ0eXBlID0gIlNQTElUIFBBUlRJVElPTiI7CisJCQkJ YnJlYWs7CiAJCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCQlzdHJ0eXBlID0gIk1FUkdF IFBBUlRJVElPTlMiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fc3BsaXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li45MDgyZTRkMTBlNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApAQCAtMCwwICsxLDE2NDIgQEAKKy0tCistLSBQQVJUSVRJ T05fU1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAu Li4iIGNvbW1hbmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitD UkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0g cGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlv bmluZworLS0KKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBz YWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIo MzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc194eHggSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp KTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX3h4eCIgZG9lcyBub3QgZXhpc3QKKy0tIEVSUk9S OiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworLS0g RVJST1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2UgcGFydGl0aW9u CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgSU4gKCcy MDIyLTA1LTAxJywgJzIwMjItMDYtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDUtMDEnKSk7CitFUlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSBy YW5nZSBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZB TFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVj aWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VS Uk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQgc3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21h cjIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFNwZWNpZmllZCBsb3dlciBib3VuZCAoJzAz LTAxLTIwMjInKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdXBwZXIgYm91bmQgKCcwMi0w MS0yMDIyJykuCistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNob3VsZCBjb250 YWluIGF0IGxlYXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOwor RVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3 byBwYXJ0aXRpb25zCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf ZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24K K0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlz IGFscmVhZHkgdXNlZAorLS0gKFdlIGNhbiBjcmVhdGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUg bmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24sIGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMg d2l0aCB0aGUgc2FtZSBuYW1lKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VS Uk9SOiAgbmFtZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUg MzogICAgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLi4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5hbWUgInNhbGVz X2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBuYW1l ICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAgUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPLi4uCisgICAgICAg ICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVh ZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gcGFy dGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjog IG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorTElORSAzOiAgICBQQVJUSVRJ T04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMuLi4KKyAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIg aXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitF UlJPUjogIEFMVEVSIGFjdGlvbiBTUExJVCBQQVJUSVRJT04gY2Fubm90IGJlIHBlcmZvcm1lZCBv biByZWxhdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgorREVUQUlMOiAgVGhpcyBvcGVyYXRp b24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFibGVzLgorLS0gRVJST1I6ICB1cHBlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBv ZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wMScpKTsKK0VSUk9SOiAgdXBwZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQg b2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDQ6IC4uLiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMC4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAg Y2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGgg cGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBjYW4g bm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0 aXRpb24gInNhbGVzX2ZlYjIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiCitISU5UOiAgQUxURVIgVEFCTEUgLi4u IFNQTElUIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRq YWNlbnQuCistLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91 bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CistLSBFUlJPUjogIGxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2Vy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBsb3dl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dl ciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRPLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gQ2hlY2sgdGhlIHNv dXJjZSBwYXJ0aXRpb24gbm90IGluIHRoZSBzZWFyY2ggcGF0aAorU0VUIHNlYXJjaF9wYXRoID0g cGFydGl0aW9uX3NwbGl0X3NjaGVtYTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UKK1NQTElUIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VUIHNlYXJjaF9wYXRo ID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworXGQrIHNhbGVzX3JhbmdlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicGFydGl0aW9uX3Nw bGl0X3NjaGVtYS5zYWxlc19yYW5nZSIKKyAgICAgIENvbHVtbiAgICAgIHwgICAgICAgICBUeXBl ICAgICAgICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSAgfCBT dGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgaW50ZWdl ciAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4g ICAgfCAgICAgICAgICAgICAgfCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgY2hhcmFjdGVyIHZhcnlp bmcoMzApIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAg ICAgICAgICAgfCAKKyBzYWxlc19hbW91bnQgICAgIHwgaW50ZWdlciAgICAgICAgICAgICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAg fCAKKyBzYWxlc19kYXRlICAgICAgIHwgZGF0ZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg IHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKK1BhcnRp dGlvbiBrZXk6IFJBTkdFIChzYWxlc19kYXRlKQorUGFydGl0aW9uczogcGFydGl0aW9uX3NwbGl0 X3NjaGVtYTIuc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8g KCcwNS0wMS0yMDIyJyksCisgICAgICAgICAgICBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjIn KSwKKyAgICAgICAgICAgIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpLAorICAgICAgICAg ICAgc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwMi0w MS0yMDIyJykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKK0RST1AgVEFCTEUgc2FsZXNfb3Ro ZXJzOworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUgdGhlbiBzcGxpdCBw YXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJf bWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwg ICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAw MCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycp LAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJv dCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAy Mi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5 LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAz NTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2 JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2Fu ZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcy MDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNz LCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENP TExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25f aWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2FwcjIwMjIg fCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0x My0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAg ICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNh bGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAg ICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIy IHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDIt MjMtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAg ICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAg ICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBz YWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAg ICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAgNyB8IExp ICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfbWFyMjAy MiB8ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAz LTExLTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAg ICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCiso MTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworLS0KKy0tIEFkZCBz cGxpdCBwYXJ0aXRpb24sIHRoZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZQorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIFNwbGl0IHBhcnRpdGlvbiwgYWxzbyBjaGVjayBzY2hl bWEgcXVhbGlmaWNhdGlvbiBvZiBuZXcgcGFydGl0aW9ucworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEn KSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNfcmFu Z2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlIgorICAgICAgQ29sdW1uICAgICAgfCAgICAg ICAgIFR5cGUgICAgICAgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9y YWdlICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAg fCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAg fCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCBjaGFyYWN0 ZXIgdmFyeWluZygzMCkgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBleHRlbmRl ZCB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2Ftb3VudCAgICAgfCBpbnRlZ2VyICAgICAgICAg ICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAg ICAgICAgICB8IAorIHNhbGVzX2RhdGUgICAgICAgfCBkYXRlICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8 IAorUGFydGl0aW9uIGtleTogUkFOR0UgKHNhbGVzX2RhdGUpCitQYXJ0aXRpb25zOiBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAzLTAxLTIw MjInKSBUTyAoJzA0LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpLAorICAgICAgICAgICAg c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0y MDIyJyksCisgICAgICAgICAgICBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAx LTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKSwKKyAgICAgICAgICAgIHNhbGVzX290aGVycyBERUZB VUxUCisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAg IDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDIt MTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJ dmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAg JzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAor ICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29u JywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0w My0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwg J1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAs ICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyks CisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xh c3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICAgICAgICAgICAgdGFi bGVvaWQgICAgICAgICAgICAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIw MjIgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAw My0wOC0yMDIyCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAyMiB8ICAgICAg ICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIK KyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgMTIg fCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX2Fw cjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfYXByMjAyMiAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8 ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0w Ni0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBz YWxlc19mZWIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDYgfCBQ b2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVzX2ZlYjIw MjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAg ICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAg ICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0y MDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg IDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCBy b3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gVGVzdCBmb3I6 CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVt bjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBz YWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwg c2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIoMTAp IEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcp IHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFE KHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZB UkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2RlYzIwMjEgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIx LCAxMiwgMSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8g KDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxl c19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxV RSwgTUFYVkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScs IDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwKKyAgKCdNYW5hZ2Vy MycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCksCisgICgnTWFuYWdl cjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDIsIDEpLAorICAoJ01hbmFn ZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0KSwKKyAgKCdNYW5h Z2VyMycsIDIwMjIsIDUsIDEpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5OworICAgICB0YWJsZW9pZCAgICAgIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8 IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2RlYzIwMjEgICAgIHwgTWFuYWdl cjEgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEu MTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZGVjMjAyMSAgICAgfCBNYW5hZ2VyMiAg ICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4w OCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIzICAgICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwg U2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdlcjIgICAgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxl cyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRl cGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0 bWVudAorIHNhbGVzX290aGVyICAgICAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50 Cisgc2FsZXNfb3RoZXIgICAgICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBz YWxlc19vdGhlciAgICAgICB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93 cykKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfamFuX2Zl YjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgy MDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKSk7CitJTlNFUlQgSU5U TyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBz YWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFn ZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5OworICAgdGFibGVvaWQgICAgfCBzYWxl c3BlcnNvbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2Fs ZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19kZWMyMDIxIHwgTWFuYWdlcjEgICAgICAgICB8 ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxl cyBkZXBhcnRtZW50Cisgc2FsZXNfZGVjMjAyMSB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAy MDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0 bWVudAorIHNhbGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBz YWxlc19mZWIyMDIyIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfZmVi MjAyMiB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAg ICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIgfCBN YW5hZ2VyMyAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwg MjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjIg ICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEu MDIgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAyMiB8IE1hbmFnZXIxICAgICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIyLjAxLjEwIHwgU2Fs ZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFy dG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisg c2FsZXNfb3RoZXIgICB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDExIHJvd3Mp CisKKy0tRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuX2ZlYjIwMjIiIGRvZXMgbm90IGV4aXN0 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworRVJST1I6ICByZWxhdGlvbiAic2Fs ZXNfamFuX2ZlYjIwMjIiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVDVCAqIEZST00gc2Fs ZXNfamFuX2ZlYjIwMjI7CisgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxl c19kYXRlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb247IHVz ZSBhbiBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBjaGVjayBpbmRleCBhZnRlciBzcGxpdAorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBB UlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19k YXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0w MS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAg J0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAs ICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyks CisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAg ICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4 MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTkn KSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0 aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsK KyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgICAg ICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAg ICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAg ICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgICAgIDUgfCBE ZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICAg ICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAg ICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIy CisgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDIt MjMtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAg ICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAg IHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgIDE0IHwgU21pdGggICAg ICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxMSByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOwor ICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5h bWUgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hIHwgc2FsZXNfb3RoZXJzIHwgc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4IHwgICAg ICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHggT04gcGFy dGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUp CisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsK Ky0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3RpbmcgaW5kZXhlcworU0VUIGVuYWJsZV9zZXFzY2Fu ID0gT0ZGOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIg d2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRl eCBTY2FuIHVzaW5nIHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0ZV9pZHggb24gc2FsZXNfZmViMjAy MgorICAgSW5kZXggQ29uZDogKHNhbGVzX2RhdGUgPiAnMDEtMDEtMjAyMic6OmRhdGUpCisoMiBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcy MDIyLTAxLTAxJzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAg ICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgICAg OCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisoMyByb3dz KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMiB3aGVy ZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNj YW4gdXNpbmcgc2FsZXNfbWFyMjAyMl9zYWxlc19kYXRlX2lkeCBvbiBzYWxlc19tYXIyMDIyCisg ICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ICcwMS0wMS0yMDIyJzo6ZGF0ZSkKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjIt MDEtMDEnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAg ICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgICAgIDkgfCBNdWxsZXIg ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgICAgIDEyIHwg UGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygzIHJvd3MpCisK K0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyIHdoZXJlIHNh bGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1 c2luZyBzYWxlc19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IG9uIHNhbGVzX2FwcjIwMjIKKyAgIElu ZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAxLTAxLTIwMjInOjpkYXRlKQorKDIgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0w MSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8 ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3Mp CisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUg c2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1 c2luZyBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIG9uIHNhbGVzX290aGVycworICAgSW5k ZXggQ29uZDogKHNhbGVzX2RhdGUgPiAnMDEtMDEtMjAyMic6OmRhdGUpCisoMiByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX290aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEn OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAg ICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2Fu OworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWIy MDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBp bmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAg ICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX2ZlYjIwMjIgfCBzYWxlc19mZWIyMDIy X3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19mZWIyMDIy X3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBV U0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRl eGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19tYXIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdw YXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1h bmFtZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAg IHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSB8IHNhbGVzX21hcjIwMjIgfCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAg ICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfbWFyMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkK KygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdz YWxlc19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBP UkRFUiBCWSBpbmRleG5hbWU7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAgdGFibGVuYW1l ICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX2FwcjIwMjIgfCBzYWxl c19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxl c19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNf YXByMjAyMiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJP TSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFu YW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZTsKKyAgICAg ICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAg ICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9z Y2hlbWEgfCBzYWxlc19vdGhlcnMgfCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIHwgICAg ICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHgxIE9OIHBh cnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KQorKDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gVGVz dDogc29tZSBjYXNlcyBmb3Igc3BsaXR0aW5nIERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQg Ym91bmRzKQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19k YXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBzYWxlc19l cnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAobG93ZXIgYm91bmQpCistLSBFUlJP UjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0 aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIx IEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04g c2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIwMjAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgy MDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBj YW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFy dGl0aW9uICJzYWxlc19kZWMyMDIxIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3Ig Rk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3Vu ZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQ TElUIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNl bnQuCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAyMiAodXBwZXIg Ym91bmQpCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19mZWIy MDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSks CisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8g KDIwMjIwMjAyKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFV TFQpOworRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIg dG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorTElORSA0OiAgICBQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAuLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRB SUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVh bCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0hJTlQ6ICBB TFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJv dW5kcyB0byBiZSBhZGphY2VudC4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxl c19kZWMyMDIxIChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFy dGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIw MjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEy MDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIxMCkgVE8gKDIwMjExMjIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlv biAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgor TElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIx MCkgVE8gKDIwMjEuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJv ciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Rl YzIwMjEiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgcmVxdWlyZXMg dGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBzYWxlc19lcnJvciBpbnRl cnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMSAoZXhhY3RseSB0aGUgc2FtZSBib3VuZHMpCistLSBF UlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIg d2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMy MDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRP ICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6 ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGgg cGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJy b3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitISU5UOiAgQUxURVIgVEFCTEUgLi4u IFNQTElUIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRq YWNlbnQuCistLSBFUlJPUjogIG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERF RkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8g KDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMjAyMDEpIFRPICgyMDIyMDMwMSkpOworRVJST1I6ICBvbmUgcGFydGl0aW9uIGluIHRoZSBs aXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQK K0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIx MTIwMSkgVE8gKDIwLi4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBubyBlcnJvcjogYm91 bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGJldHdlZW4gc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNf ZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJU SVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9u YW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBubyBlcnJvcjogYm91bmRzIG9mIHNh bGVzX25vZXJyb3IgYXJlIGVxdWFsIHRvIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNf ZGVjMjAyMSBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBG T1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgy MDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBh bmQgRk9SRUlHTiBLRVkgQ09OU1RSQUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVF UyAoMSwgICdQb2lyb3QnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoCitzYWxlc3BlcnNv bl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCksCitzYWxlc19h bW91bnQgSU5UIENIRUNLIChzYWxlc19hbW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkgUEFS VElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykg VE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNv bm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNf ZmViX21hcl9hcHIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOworICAgICAg ICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNL ICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBL RVkgKHNhbGVzcGVyc29uX2lkKSBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lk KSB8IHNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMg b24gc2FsZXNfZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJh aW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29u cmVsaWQgPSAnc2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7 CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t CisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBG T1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNw ZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93 cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIGNv bm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3Nh bGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJF RkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNw ZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50 ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVs aWQgPSAnc2FsZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7Cisg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisg Q0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JF SUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJz b25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykK KworLS0gRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0 ZXMgY2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworRVJST1I6 ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29u c3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorREVUQUlMOiAgRmFpbGlu ZyByb3cgY29udGFpbnMgKDEsIDAsIDAzLTExLTIwMjIpLgorLS0gRVJST1I6ICBpbnNlcnQgb3Ig dXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IgorSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAzLTExJyk7CitFUlJPUjogIGluc2VydCBv ciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkg KHNhbGVzcGVyc29uX2lkKT0oLTEpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJzYWxlc3Blb3Bs ZSIuCistLSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAxMCwgJzIwMjIt MDMtMTEnKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2Fs ZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb24gcGFydGl0 aW9uZWQgdGFibGUgaW4gY2FzZSBvZiBleGlzdGluZyBGT1JFSUdOIEtFWSByZWZlcmVuY2UgZnJv bSBhbm90aGVyIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29u X2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXMgKHNhbGVz cGVyc29uX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwgc2Fs ZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgx MCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUworICAoMSwgICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgxOSwgJ0l2YW5v dicpLAorICAoMjAsICdTbWlybm9mZicpLAorICAoMzAsICdGb3JkJyk7CitJTlNFUlQgSU5UTyBz YWxlcyBWQUxVRVMKKyAgKDEsICAxMDAsICcyMDIyLTAzLTAxJyksCisgICgxLCAgMTEwLCAnMjAy Mi0wMy0wMicpLAorICAoMTAsIDE1MCwgJzIwMjItMDMtMDEnKSwKKyAgKDEwLCA5MCwgICcyMDIy LTAzLTAzJyksCisgICgxOSwgMjAwLCAnMjAyMi0wMy0wNCcpLAorICAoMjAsIDUwLCAgJzIwMjIt MDMtMTInKSwKKyAgKDIwLCAxNzAsICcyMDIyLTAzLTAyJyksCisgICgzMCwgMzAsICAnMjAyMi0w My0wNCcpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9S REVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25f aWQ7CisgICAgIHRhYmxlb2lkICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorIHNhbGVzcGVvcGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNhbGVzcGVv cGxlMTBfNDAgfCAgICAgICAgICAgICAxMCB8IE1heQorIHNhbGVzcGVvcGxlMTBfNDAgfCAgICAg ICAgICAgICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxlMTBfNDAgfCAgICAgICAgICAgICAyMCB8 IFNtaXJub2ZmCisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDMwIHwgRm9yZAorKDUg cm93cykKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVv cGxlMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxV RVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1Ig VkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFU RSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAgICAgIDEg fCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTAgfCBNYXkKKyBzYWxl c3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Blb3BsZTIwXzMw IHwgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMzBfNDAgfCAgICAgICAg ICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBv biB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3Nh bGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDQwLCA1MCwgICcy MDIyLTAzLTA0Jyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxlc19zYWxlc3BlcnNvbl9pZF9ma2V5 IgorREVUQUlMOiAgS2V5IChzYWxlc3BlcnNvbl9pZCk9KDQwKSBpcyBub3QgcHJlc2VudCBpbiB0 YWJsZSAic2FsZXNwZW9wbGUiLgorLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMzAs IDUwLCAgJzIwMjItMDMtMDQnKTsKK0RST1AgVEFCTEUgc2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFC TEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2Yg cGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Bl b3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIFBBUlRJVElP TiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0Ug RlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdV QUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2Vy KCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0s IFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZ JDsKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJp Z2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0gg U1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2Vy KCdzYWxlc3Blb3BsZScpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBG T1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIoJ3NhbGVzcGVvcGxlJyk7CistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyAr IHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7 CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwg d2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkg Y2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQK Ky0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVz cGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJP VworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBf NDAgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJP TSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVT IEZST00gKDMwKSBUTyAoNDApKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93 ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWly bm9mZicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJ TlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNw ZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RB VEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK05PVElDRTogIHRyaWdnZXIo c2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVs ID0gUk9XCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JE RVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9p ZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Cisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAgICAgICAxIHwgUG9pcm90Cisgc2FsZXNwZW9w bGUxMF8yMCB8ICAgICAgICAgICAgIDEwIHwgTWF5Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAgICAg ICAgICAgIDE5IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUyMF8zMCB8ICAgICAgICAgICAgIDIwIHwg U21pcm5vZmYKKyBzYWxlc3Blb3BsZTMwXzQwIHwgICAgICAgICAgICAgMzAgfCBGb3JkCisoNSBy b3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGFm dGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3 aXRjaCBpZGVudGl0eSBjb2x1bW4KKy0tIElmIHNwbGl0IHBhcnRpdGlvbiBjb2x1bW4gaXMgaWRl bnRpdHkgY29sdW1uLCBjb2x1bW5zIG9mIG5ldyBwYXJ0aXRpb25zIGFyZSBpZGVudGl0eSBjb2x1 bW5zIHRvby4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5U IEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMV8yIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggaWRlbnRp dHkgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMl81KHNhbGVzcGVyc29uX2lkIElO VCBOT1QgTlVMTCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitBTFRFUiBUQUJMRSBz YWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IEZPUiBWQUxVRVMgRlJP TSAoMikgVE8gKDUpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25hbWUp IFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2YW5vdicpOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50 aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQg YXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsK KyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lk ICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAor KDIgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9w bGUxXzInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAg IHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8 IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworLS0gU3Bs aXQgcGFydGl0aW9uIGhhcyBpZGVudGl0eSBjb2x1bW46CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRl bnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFO RCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0 bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJz b25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAg IHwgCisoMiByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04g c2FsZXNwZW9wbGUyXzUgSU5UTworICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMl8zIEZPUiBWQUxV RVMgRlJPTSAoMikgVE8gKDMpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlM180IEZPUiBWQUxV RVMgRlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlNF81IEZPUiBWQUxV RVMgRlJPTSAoNCkgVE8gKDUpKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxlc3BlcnNv bl9uYW1lKSBWQUxVRVMgKCdNYXknKSwgKCdGb3JkJyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTFfMiB8ICAgICAgICAgICAgICAx IHwgUG9pcm90Cisgc2FsZXNwZW9wbGUyXzMgfCAgICAgICAgICAgICAgMiB8IEl2YW5vdgorIHNh bGVzcGVvcGxlM180IHwgICAgICAgICAgICAgIDMgfCBNYXkKKyBzYWxlc3Blb3BsZTRfNSB8ICAg ICAgICAgICAgICA0IHwgRm9yZAorKDQgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50 aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQg YXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsK KyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lk ICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAor KDIgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9w bGUxXzInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAg IHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8 IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworLS0gTmV3 IHBhcnRpdGlvbnMgaGF2ZSBpZGVudGl0eS1jb2x1bW5zOgorU0VMRUNUIGF0dG5hbWUsIGF0dGlk ZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBB TkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzMnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0 dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCist LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVy c29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAg ICB8IAorKDIgcm93cykKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0 ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2Fs ZXNwZW9wbGUzXzQnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFt ZSAgICAgIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAg ICAgICB8IAorIHNhbGVzcGVyc29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKwor U0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1 dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGU0XzUnOjpyZWdj bGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKyAgICAgYXR0bmFtZSAgICAgIHwgYXR0aWRlbnRp dHkgfCBhdHRnZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLQorIHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVy c29uX25hbWUgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc3Bl b3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQg Y29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQg UFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNwZXJzb25faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFS VElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENy ZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUxMF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNwZXJzb25faWQgSU5UIFBS SU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkp OworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMKKyAgKCdkdW1teSB2YWx1ZSAx JywgMTksIDEwMCwgbm93KCksICdJdmFub3YnKSwKKyAgKCdkdW1teSB2YWx1ZSAyJywgMjAsIDEw MSwgbm93KCksICdTbWlybm9mZicpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9Q IENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDI7 CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQzOworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAg KDEsICdQb2lyb3QnKSwKKyAgKDEwLCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCks CisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAo MzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkg VE8gKDQwKSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUg T1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNv bl9pZDsKKyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAgICAgICAxIHwgUG9pcm90Cisgc2FsZXNw ZW9wbGUxMF8yMCB8ICAgICAgICAgICAgIDEwIHwgTWF5Cisgc2FsZXNwZW9wbGUxMF8yMCB8ICAg ICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUyMF8zMCB8ICAgICAgICAgICAgIDIw IHwgU21pcm5vZmYKKyBzYWxlc3Blb3BsZTMwXzQwIHwgICAgICAgICAgICAgMzAgfCBGb3JkCiso NSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CistLQorLS0gVGVzdDog c3BsaXQgc3ViLXBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIy MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNw ZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYXByX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBz YWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2Fs ZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5Jywg ICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIy LTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQs ICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1 MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEn KSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmlj c3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIw MjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAo MTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAg MzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0w OScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJl Z2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAg IHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHJfYWxsIHwgICAgICAg ICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgor IHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAg ICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHJf YWxsIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAg ICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIK KyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAg ICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAgMSB8 IE1heSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFu MjAyMiB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAg ICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX21hcjIwMjIgfCAgICAg ICAgICAgICAgNyB8IExpICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIy Cisgc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgMTIg fCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX290 aGVycyAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAg fCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJ VCBQQVJUSVRJT04gc2FsZXNfYXByX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAy Ml8wMV8xMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8y MF8zMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRh Ymxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAg ICB0YWJsZW9pZCAgICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg c2FsZXNfYXByMjAyMl8wMV8xMCB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzAxXzEwIHwgICAgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor IHNhbGVzX2FwcjIwMjJfMTBfMjAgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAg fCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMl8yMF8zMCB8ICAgICAg ICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KyBzYWxlc19mZWIyMDIyICAgICAgIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAg IHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgICAgICAgfCAgICAg ICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIy Cisgc2FsZXNfZmViMjAyMiAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAg ICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgIHwgICAg ICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAy MgorIHNhbGVzX2phbjIwMjIgICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICB8ICAg ICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIw MjIKKyBzYWxlc19tYXIyMDIyICAgICAgIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAg ICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX21hcjIwMjIgICAgICAgfCAg ICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0y MDIyCisgc2FsZXNfbWFyMjAyMiAgICAgICB8ICAgICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAg ICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgIHwg ICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQt MjAyMgorKDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQlkgTElT VCBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBM SVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJz b25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUg VkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJU SVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1 cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsnLCAn TWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZvc3Rv aycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBE RUZBVUxUOworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19lYXN0IiB3b3VsZCBvdmVy bGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gInNhbGVzX25vcmQiCitBTFRF UiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdN YWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcn LCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAnSGVsc2lua2knKSwKKyAgIFBBUlRJVElPTiBzYWxl c19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CitF UlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90 aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0xJTkUgMzogLi4uIEZPUiBW QUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAnSGVsc2lua2knLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVy bGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlk JyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0Rl bGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFM VUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdMaXNib24nLCAnS3lpdicpKTsKK0VSUk9SOiAg bmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3 IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX3dl c3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRp dGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBh cnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJ VElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJ TiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCBOVUxMKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2sn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNh bm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2 ZQorTElORSAyOiAuLi5zX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycs ICdNYWRyaWQnLCBOVUxMKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJz YWxlc193ZXN0IiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9u IGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2sn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNh bm5vdCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2 ZQorTElORSAyOiAuLi5zdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01h ZHJpZCcsICdNZWxib3VybmUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gY2Fu bm90IGJlIERFRkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cwor QUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9O IHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicp LAorICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CitFUlJPUjogIG5ldyBwYXJ0 aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVzZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5 IGV4aXN0cworTElORSA1OiAgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsKKyAg ICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0 OiB0d28gc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBu ZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSBOVUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRp b24gaGFzLgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBz cGxpdCBwYXJ0aXRpb24gaGFzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNw ZXJzb25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3Rh dGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQ QVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNpbmtpJywgJ1N0LiBQ ZXRlcnNidXJnJywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lpdicsICdWbGFkaXZv c3RvaycsIE5VTEwpOworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1 ZSBOVUxMIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBT UExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZP UiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJ T04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9z dG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0JlcmxpbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2 ZSB2YWx1ZSBOVUxMIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworLS0gRVJST1I6ICBuZXcgcGFy dGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2Vz CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOworRVJST1I6ICBu ZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlv biBkb2VzCistLSBFUlJPUiAgREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZQorQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywg J0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsK K0VSUk9SOiAgREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9uZQorTElORSA2OiAgICBQQVJU SVRJT04gc2FsZXNfb3RoZXJzMiBERUZBVUxUKTsKKyAgICAgICAgICAgICAgICAgICAgIF4KK0RS T1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywg U1BMSVQgUEFSVElUSU9OIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Ciso c2FsZXNwZXJzb25faWQgU0VSSUFMLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisg c2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRl IERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIElOREVYIHNh bGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAo c2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9p ZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0hlbHNp bmtpJywgJ1N0LiBQZXRlcnNidXJnJywgJ09zbG8nKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdMaXNib24n LCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ0JlamluZycsICdCZXJsaW4nLCAnRGVsaGknLCAnS3lp dicsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJz b25fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisg ICgnVHJ1bXAnLCAgICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAo J1NtaXJub2ZmJywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwKKyAgKCdG b3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1JyksCisgICgnSXZh bm92JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpLAorICAoJ0RlZXYn LCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQb2lyb3Qn LCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5JywgICAg ICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xpJywgICAgICAg J1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKSwKKyAgKCdNYXknLCAgICAgICdP c2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyksCisgICgnSGFsZGVyJywgICAnSGVs c2lua2knLCAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAorICAoJ011bGxlcicsICAgJ01hZHJp ZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAgKCdTbWl0aCcsICAgICdLeWl2Jywg ICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisgICgnR2FuZGknLCAgICAnV2Fyc2F3Jywg ICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAorICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAg ICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQg UEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFM VUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycp LAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdC ZXJsaW4nLCAnS3lpdicpKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c19saXN0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2Fs ZXNwZXJzb25faWQ7CisgICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJz b25fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2NlbnRyYWwgfCAg ICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDAzLTA0LTIwMjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAgICAgIDYgfCBQ b2lyb3QgICAgICAgICAgIHwgQmVybGluICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0y MDIyCisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICAgICB8 IEt5aXYgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTAtMjAyMgorIHNhbGVzX2NlbnRy YWwgfCAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICAgICB8 ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyBzYWxlc19lYXN0ICAgIHwgICAgICAgICAgICAg IDEgfCBUcnVtcCAgICAgICAgICAgIHwgQmVqaW5nICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAw My0wMS0yMDIyCisgc2FsZXNfZWFzdCAgICB8ICAgICAgICAgICAgICA4IHwgTGkgICAgICAgICAg ICAgICB8IFZsYWRpdm9zdG9rICAgIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorIHNhbGVz X25vcmQgICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJz YnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1LTIwMjIKKyBzYWxlc19ub3JkICAgIHwgICAgICAg ICAgICAgIDcgfCBNYXkgICAgICAgICAgICAgIHwgT3NsbyAgICAgICAgICAgfCAgICAgICAgIDEy MDAgfCAwMy0wNi0yMDIyCisgc2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgICA5IHwgTWF5ICAg ICAgICAgICAgICB8IE9zbG8gICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgor IHNhbGVzX25vcmQgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBIZWxz aW5raSAgICAgICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKyBzYWxlc193ZXN0ICAgIHwg ICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAgIHwgTmV3IFlvcmsgICAgICAgfCAgICAg ICAgICA1MDAgfCAwMy0wMy0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMDct MjAyMgorIHNhbGVzX3dlc3QgICAgfCAgICAgICAgICAgICAxMSB8IE11bGxlciAgICAgICAgICAg fCBNYWRyaWQgICAgICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyBzYWxlc193ZXN0 ICAgIHwgICAgICAgICAgICAgMTQgfCBQbGF0byAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAg fCAgICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisoMTQgcm93cykKKworLS0gVXNlIGluZGV4c2Nh biBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIHNwbGl0dGluZyBwYXJ0aXRpb24KK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IE9GRjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxl c19jZW50cmFsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX2NlbnRyYWxfc2FsZXNfc3RhdGVfaWR4IG9uIHNh bGVzX2NlbnRyYWwKKyAgIEluZGV4IENvbmQ6ICgoc2FsZXNfc3RhdGUpOjp0ZXh0ID0gJ1dhcnNh dyc6OnRleHQpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUg c2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25h bWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAg ICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkg ICAgICAgICAgICB8IFdhcnNhdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIg cm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hF UkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX2NlbnRyYWxfc2FsZXNfc3RhdGVf aWR4IG9uIHNhbGVzX2NlbnRyYWwgc2FsZXNfbGlzdAorICAgSW5kZXggQ29uZDogKChzYWxlc19z dGF0ZSk6OnRleHQgPSAnV2Fyc2F3Jzo6dGV4dCkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lk IHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAg ICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAg fCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZS T00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBcHBlbmQKKyAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX2Vhc3Rfc2FsZXNwZXJz b25fbmFtZV9pZHggb24gc2FsZXNfZWFzdCBzYWxlc19saXN0XzEKKyAgICAgICAgIEluZGV4IENv bmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBJ bmRleCBTY2FuIHVzaW5nIHNhbGVzX2NlbnRyYWxfc2FsZXNwZXJzb25fbmFtZV9pZHggb24gc2Fs ZXNfY2VudHJhbCBzYWxlc19saXN0XzIKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJz b25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIHNhbGVzX25vcmQgc2FsZXNfbGlzdF8zCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc2Fs ZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBzYWxlc19ub3JkX3NhbGVzcGVyc29uX25hbWVfaWR4CisgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoKHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6 OnRleHQpCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBzYWxlc193ZXN0X3NhbGVzcGVyc29uX25h bWVfaWR4IG9uIHNhbGVzX3dlc3Qgc2FsZXNfbGlzdF80CisgICAgICAgICBJbmRleCBDb25kOiAo KHNhbGVzcGVyc29uX25hbWUpOjp0ZXh0ID0gJ0l2YW5vdic6OnRleHQpCisgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiBzYWxlc19vdGhlcnMgc2FsZXNfbGlzdF81CisgICAgICAgICBSZWNoZWNr IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBzYWxlc19vdGhlcnNfc2FsZXNwZXJzb25fbmFt ZV9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRl eHQgPSAnSXZhbm92Jzo6dGV4dCkKKygxNSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xp c3QgV0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworIHNhbGVzcGVyc29uX2lkIHwg c2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAg ICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisoMSByb3cpCisK K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRl c3QgZm9yOgorLS0gICAqIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0 aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlv bnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5 JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcy MDIyLTAyLTA5JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAg KDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAg IDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDIt MDcnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdF cmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAg JzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAor ICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywg ICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0w MS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIy XzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAy Ml8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQg Q09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICAgIHRhYmxlb2lkICAgICAgICB8IHNh bGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyXzFkZWNh ZGUgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw NC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2ZlYjIwMjJf MWRlY2FkZSB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAgIDUw MCB8IDAyLTA5LTIwMjIKKyBzYWxlc19mZWIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAgNiB8 IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0wNy0yMDIyCisgc2FsZXNfamFu MjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAg ICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX21hcjIwMjJfMWRlY2FkZSB8ICAgICAgICAgICAg ICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxl c19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAg ICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAg ICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgor IHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAg ICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAg ICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0y MDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAg ICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAx LTI4LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxMiB8IFBsYXRv ICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfb3RoZXJzICAg ICAgICAgIHwgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEw IHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQor LS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRp dGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9m IHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEw MDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDkn KSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAorICAo NywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0x MScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRl Y2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFk ZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRl eHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICAgIHRhYmxlb2lkICAgICAgICB8 IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyXzFk ZWNhZGUgfCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAg fCAwNC0wNy0yMDIyCisgc2FsZXNfYXByMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgMTEgfCBU cnVtcCAgICAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2ZlYjIw MjJfMWRlY2FkZSB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAgICAg IDUwMCB8IDAyLTA5LTIwMjIKKyBzYWxlc19mZWIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAg NiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0wNy0yMDIyCisgc2FsZXNf amFuMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAg ICAgICAgMzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX21hcjIwMjJfMWRlY2FkZSB8ICAgICAgICAg ICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBz YWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAg fCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAy MgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAg fCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0y My0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAgIHwgICAgICAgICAgICAgIDkgfCBNdWxsZXIg ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX290aGVycyAgICAg ICAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8 IDAxLTI4LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxMiB8IFBs YXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMTMgcm93cykKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVM VCBwYXJ0aXRpb24gdG8gREVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNw YWNlcyBiZXR3ZWVuIGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1Nt aXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAn MjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisg ICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAz LTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAn TXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwg ICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwK KyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScs ICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcp OworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZ IHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7Cisg ICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfYXBy MjAyMiB8ICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8 IDA0LTMwLTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAgICAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy Cisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDIg fCBTbWlybm9mZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHNhbGVzX2Zl YjIwMjIgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAg fCAwMi0xMS0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24g ICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19qYW4yMDIyIHwgICAg ICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAy MgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgIDEz IHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19v dGhlcnMgIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAg ICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAg ICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIw MjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwg ICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNf cmFuZ2U7CistLQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiBhbm90aGVyIHRhYmxlLgor LS0KK0NSRUFURSBUQUJMRSB0MShpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgTElTVCAodCk7 CitDUkVBVEUgVEFCTEUgdDFwYSBQQVJUSVRJT04gT0YgdDEgRk9SIFZBTFVFUyBJTiAoJ0EnKTsK K0NSRUFURSBUQUJMRSB0MiAoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFICh0KTsK Ky0tIEVSUk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlv biAidDIiCitBTFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJTlRPCisgICAoUEFS VElUSU9OIHQyYSBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdCJyksCisgICAgUEFSVElUSU9O IHQyYiBGT1IgVkFMVUVTIEZST00gKCdCJykgVE8gKCdDJykpOworRVJST1I6ICByZWxhdGlvbiAi dDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJ0MiIKK0hJTlQ6ICBBTFRFUiBU QUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyBjYW4gb25seSBzcGxpdCBwYXJ0aXRpb25zIGRvbid0 IGhhdmUgc3ViLXBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHQxOworLS0K Ky0tIFRyeSB0byBTUExJVCBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFU RSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRF TVAgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIp OworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19j YXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9p ZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBC WSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVM VCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAg IHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMiB8 IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpIHwgdAorKDEgcm93KQorCistLSBFUlJPUjogIGNh bm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFy eSByZWxhdGlvbiAidCIKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRP CisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFS VElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitFUlJPUjogIGNhbm5v dCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSBy ZWxhdGlvbiAidCIKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisg IChQQVJUSVRJT04gcGdfdGVtcC50cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisg ICBQQVJUSVRJT04gcGdfdGVtcC50cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOwor LS0gUGFydGl0aW9ucyBzaG91bGQgYmUgdGVtcG9yYXJ5LgorU0VMRUNUIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9p ZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2Nh dGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHBy KGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgIG9pZCAgIHwgICAgICAgIHBnX2dldF9leHByICAg ICAgICAgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMSB8IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpIHwgdAorIHRwXzFfMiB8IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpIHwgdAorKDIgcm93 cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hlY2sgdGhlIG5ldyBwYXJ0aXRpb25zIGluaGVyaXQg cGFyZW50J3MgdGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVT SU5HIElOREVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJB TkdFIChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8y IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUg dCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZB TFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJs ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1l LCB0YWJsZXNwYWNlOworIHRhYmxlbmFtZSB8ICAgIHRhYmxlc3BhY2UgICAgCistLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBf MF8xICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzFfMiAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UK KygzIHJvd3MpCisKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9N IHBnX2luZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8y JykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkg dGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CisgdGFibGVuYW1lIHwgIGluZGV4bmFt ZSAgfCAgICB0YWJsZXNwYWNlICAgIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0KKyB0ICAgICAgICAgfCB0X3BrZXkgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UK KyB0cF8wXzEgICAgfCB0cF8wXzFfcGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8xXzIgICAg fCB0cF8xXzJfcGtleSB8IHJlZ3Jlc3NfdGJsc3BhY2UKKygzIHJvd3MpCisKK0RST1AgVEFCTEUg dDsKKy0tIENoZWNrIG5ldyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2Vz cyBtZXRob2QKK0NSRUFURSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZUEUg VEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKK0NS RUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo Mik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElU SU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8x XzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5h bWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVS RSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8yJzo6 cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWU7CisgcmVsbmFtZSB8ICAgICAgICBhbW5hbWUg ICAgICAgIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgIHwgcGFy dGl0aW9uX3NwbGl0X2hlYXAKKyB0cF8wXzEgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKyB0cF8x XzIgIHwgcGFydGl0aW9uX3NwbGl0X2hlYXAKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RS T1AgQUNDRVNTIE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKKy0tIFRlc3QgcGVybWlzc2lv biBjaGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhl CistLSB0aGUgcGFydGl0aW9uIHRvIHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFURSBST0xF IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVN QSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsK K1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7 CitDUkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUg VEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOwor U0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitB TFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRw XzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxl IHQKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHQgT1dORVIgVE8g cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOwor RVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzBfMgorUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworQUxURVIgVEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAg KFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJ T04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTjsKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JFVk9L RSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9ib2I7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7 CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworLS0gU3BsaXQgcGFydGl0 aW9uIG9mIGEgdGVtcG9yYXJ5IHRhYmxlIHdoZW4gb25lIG9mIHRoZSBwYXJ0aXRpb25zIGFmdGVy CistLSBzcGxpdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgcGFydGl0aW9uIGJlaW5nIHNwbGl0 CitDUkVBVEUgVEVNUCBUQUJMRSB0IChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsKK0NS RUFURSBURU1QIFRBQkxFIHRwXzAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wIElOVE8KKyAgKFBBUlRJ VElPTiBwZ190ZW1wLnRwXzAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJ T04gcGdfdGVtcC50cF8xIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK0RST1AgVEFCTEUg dDsKKy0tIENoZWNrIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cyBvZiBuZXcgcGFydGl0aW9ucwor Q1JFQVRFIFRBQkxFIHRfYmlnaW50ICgKKyAgYiBiaWdpbnQsCisgIGkgaW50IERFRkFVTFQgKDMr MTApLAorICBqIGludCBERUZBVUxUIDEwMSwKKyAgayBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAo YisxMCkgU1RPUkVECispCitQQVJUSVRJT04gQlkgUkFOR0UgKGIpOworQ1JFQVRFIFRBQkxFIHRf YmlnaW50X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRfYmlnaW50IERFRkFVTFQ7CistLSBTaG93IGRl ZmF1bHRzL2NvbnN0cmFpbnRzIGJlZm9yZSBTUExJVCBQQVJUSVRJT04KK1xkKyB0X2JpZ2ludAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLnRfYmlnaW50IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBT dG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBi aWdpbnQgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3RvcmVk IHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogUkFOR0UgKGIpCitQ YXJ0aXRpb25zOiB0X2JpZ2ludF9kZWZhdWx0IERFRkFVTFQKKworXGQrIHRfYmlnaW50X2RlZmF1 bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25f c3BsaXRfc2NoZW1hLnRfYmlnaW50X2RlZmF1bHQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxh dGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8 IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8 IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAg ICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9y ZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRfYmlnaW50IERF RkFVTFQKK05vIHBhcnRpdGlvbiBjb25zdHJhaW50CisKK0FMVEVSIFRBQkxFIHRfYmlnaW50IFNQ TElUIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IElOVE8KKyAgKFBBUlRJVElPTiB0X2JpZ2lu dF8wMV8xMCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCksCisgICBQQVJUSVRJT04gdF9iaWdp bnRfZGVmYXVsdCBERUZBVUxUKTsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3RyYWludHMgYWZ0ZXIg U1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnRf ZGVmYXVsdCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAg ICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdl dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8 ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWlu ICAgfCAgICAgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwg Z2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAg ICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdF9iaWdpbnQgREVGQVVMVAorUGFydGl0aW9uIGNvbnN0 cmFpbnQ6IChOT1QgKChiIElTIE5PVCBOVUxMKSBBTkQgKChiID49ICcwJzo6YmlnaW50KSBBTkQg KGIgPCAnMTAnOjpiaWdpbnQpKSkpCisKK1xkKyB0X2JpZ2ludF8wMV8xMAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRf YmlnaW50XzAxXzEwIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 ICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMg dGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFp biAgIHwgICAgICAgICAgICAgIHwgCisgaiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAg fCAgICAgICAgICAgICAgfCAKKyBrICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAg ICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAg ICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0X2JpZ2ludCBGT1IgVkFMVUVTIEZST00gKCcw JykgVE8gKCcxMCcpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChiIElTIE5PVCBOVUxMKSBBTkQg KGIgPj0gJzAnOjpiaWdpbnQpIEFORCAoYiA8ICcxMCc6OmJpZ2ludCkpCisKK0RST1AgVEFCTEUg dF9iaWdpbnQ7CistLSBUZXN0OiBvd25lciBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgdGhl IHNhbWUgYXMgb3duZXIgb2Ygc3BsaXQgcGFydGl0aW9uCitDUkVBVEUgUk9MRSByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0 X3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8yKGkg aW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFRBQkxFIHQgQVRUQUNI IFBBUlRJVElPTiB0cF8wXzIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CistLSBPd25lciBp cyAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorXGR0IHRwXzBfMgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcworICAgICAgICAgU2NoZW1hICAgICAg ICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCB0cF8wXzIgfCB0YWJsZSB8 IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCisoMSByb3cpCisKK0FMVEVSIFRBQkxFIHQg U1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKSk7CistLSBPd25lciBzaG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlJzoKK1xkdCB0cF8wXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5hbWUgIHwgVHlwZSAgfCAgICAg ICAgICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hIHwgdHBfMF8xIHwgdGFibGUgfCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZQorKDEgcm93KQorCitcZHQgdHBfMV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2YgdGFibGVzCisgICAgICAgICBTY2hlbWEgICAgICAgICB8ICBOYW1lICB8IFR5cGUg IHwgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYSB8IHRwXzFfMiB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYWxpY2UKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hF TUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Fs aWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworLS0gVGVzdDog aW5kZXggb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCBzYW1lIG93bmVy IGFzIHNwbGl0CistLSBwYXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRP IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkg UEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8xMF8yMCBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworSU5TRVJUIElOVE8gdCBWQUxVRVMg KDExKSwgKDE2KTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHJ1bl9tZShpbnRlZ2VyKSBS RVRVUk5TIGludGVnZXIgQVMgJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAneW91IGFyZSBydW5u aW5nIG1lIGFzICUnLCBDVVJSRU5UX1VTRVI7CisgIFJFVFVSTiAkMTsKK0VORAorJCQgTEFOR1VB R0UgUExQR1NRTCBJTU1VVEFCTEU7CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2UnOgorQ1JFQVRFIElOREVYIE9OIHQgKHJ1bl9tZShpKSk7CitOT1RJQ0U6ICB5b3Ug YXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK05PVElDRTog IHlvdSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorUkVT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworLS0gT3duZXIgc2hvdWxkIGJlICdyZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZSc6CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8x MF8yMCBJTlRPCisgIChQQVJUSVRJT04gdHBfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDE1KSwKKyAgIFBBUlRJVElPTiB0cF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjAp KTsKK05PVElDRTogIHlvdSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9hbGljZQorTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlCitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHJ1bl9tZShpbnRlZ2Vy KTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9hbGljZTsKKy0tIFRlc3QgZm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBU QUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitD UkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAy LCBSRU1BSU5ERVIgMSk7CistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVk IHRhYmxlIGNhbm5vdCBiZSBzcGxpdAorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHAx IElOVE8KKyAgKFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVN QUlOREVSIDApLAorICAgUEFSVElUSU9OIHRwMV8yIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0 LCBSRU1BSU5ERVIgMikpOworRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0 YWJsZSBjYW5ub3QgYmUgc3BsaXQKKy0tIEVSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBz aG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gcGFydGl0aW9ucworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHAxIElOVE8KKyAgKFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEgg KE1PRFVMVVMgNCwgUkVNQUlOREVSIDApKTsKK0VSUk9SOiAgbGlzdCBvZiBuZXcgcGFydGl0aW9u cyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gcGFydGl0aW9ucworRFJPUCBUQUJMRSB0Owor LS0gQWRkaXRpb25hbCB0ZXN0cyBmb3IgZXJyb3IgbWVzc2FnZXMKK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzAp LCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor LS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5v dCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wMScp KTsKK0VSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBu b3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDQ6IC4uLiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYt MC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLSBUZXN0IGZvciBzcGxpdCBw YXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBpcyBlbXB0eQorLS0gKiBDT01N RU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUgc2FtZSBhcyBERUZBVUxUUyBmb3Ig cGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBpcyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZv ciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0 aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENPTlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJs ZQorLS0gKiBUUklHR0VSUyBhcmUgdGhlIHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVk IHRhYmxlCitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdF IEVYVEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywKKyBiIGJpZ2lu dCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBTVE9SRUQpIFBB UlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJUyAndDEu aSc7CitDUkVBVEUgVEFCTEUgdHBfeAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdF IE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF94JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJB VEVEIEFMV0FZUyBhcyAoJzIwMjItMDItMDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRB Q0ggUEFSVElUSU9OIHRwX3ggRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitDT01NRU5UIE9O IENPTFVNTiB0cF94LmkgSVMgJ3RwX3guaSc7CitDUkVBVEUgU1RBVElTVElDUyB0X3N0YXQgKERF UEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitDUkVBVEUgU1RBVElTVElDUyB0cF94X3N0YXQg KERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwX3g7CitBTFRFUiBUQUJMRSB0IEFERCBDT05T VFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RS QUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxURVIgVEFCTEUg dCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9UIFZBTElEOworQUxU RVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFMSUQ7CitJ TlNFUlQgSU5UTyB0cF94KGksIHQsIGIpIFZBTFVFUygwLCBERUZBVUxULCAxKTsKK0lOU0VSVCBJ TlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDIpOworQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAn cGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNh bGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09Q LCBUR19XSEVOLCBUR19MRVZFTDsKKyAgUkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZJDsKK0NSRUFU RSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQg Rk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsK K0NSRUFURSBUUklHR0VSIHRwX3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5T RVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVu Y3Rpb24oJ3RwX3gnKTsKK1xkKyB0cF94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRwX3giCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAg ICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwg RGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgdHBfeC5pCisgdCAgICAgIHwgdGV4 dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2RlZmF1bHRfdHBfeCc6OnRleHQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBtYWluICAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAg IHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisg ZCAgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5 cyBhcyAoJzAyLTAyLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAg IHwgCitQYXJ0aXRpb24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikKK1BhcnRpdGlv biBjb25zdHJhaW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMCkgQU5E IChhYnMoaSkgPCAyKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNL IChiID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAg ICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK1N0YXRpc3RpY3Mgb2JqZWN0 czoKKyAgICAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94X3N0YXQiIChkZXBlbmRlbmNpZXMp IE9OIGksIGIgRlJPTSB0cF94CitOb3QtbnVsbCBjb25zdHJhaW50czoKKyAgICAidHBfeF9pX25v dF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25uIiBOT1QgTlVMTCAi YiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2JlZm9yZV9pbnNlcnRf cm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZV TkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorICAgIHRwX3hfYmVmb3Jl X2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XIEVY RUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigndHBfeCcpCisKK0FMVEVSIFRBQkxFIHQg U1BMSVQgUEFSVElUSU9OIHRwX3ggSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpKTsKK1xkKyB0cF94CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50cF94IgorIENvbHVtbiB8 ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVm YXVsdCAgICAgICAgICAgICAgICAgICAgIHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNj cmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHQgICAgICB8IHRleHQgICAgfCAg ICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3QnOjp0ZXh0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBiaWdp bnQgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgZCAgICAg IHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAo JzAxLTAxLTIwMjInOjpkYXRlKSBzdG9yZWQgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAor UGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpCitQYXJ0aXRpb24gY29u c3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5VTEwpIEFORCAoYWJzKGkpID49IDEpIEFORCAoYWJz KGkpIDwgMikpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidF9iX2NoZWNrIiBDSEVDSyAoYiA+ IDApCisgICAgInRfYl9jaGVjazEiIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VECisgICAgInRf Yl9jaGVjazIiIENIRUNLIChiID4gMCkgTk9UIFZBTElECitOb3QtbnVsbCBjb25zdHJhaW50czoK KyAgICAidF9pX25vdF9udWxsIiBOT1QgTlVMTCAiaSIgKGluaGVyaXRlZCkKKyAgICAidF9iX25u IiBOT1QgTlVMTCAiYiIgKGluaGVyaXRlZCkgTk9UIFZBTElECitUcmlnZ2VyczoKKyAgICB0X2Jl Zm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF94IEZPUiBFQUNIIFJP VyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorCitJ TlNFUlQgSU5UTyB0KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK05PVElDRTogIHRy aWdnZXIodCkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBCRUZPUkUsIGxldmVsID0g Uk9XCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdCBPUkRFUiBCWSB0YWJsZW9p ZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGI7CisgdGFibGVvaWQgfCBpIHwgICAgICB0 ICAgICAgIHwgYiB8ICAgICBkICAgICAgCistLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0tLSst LS0rLS0tLS0tLS0tLS0tCisgdHBfMF8xICAgfCAwIHwgZGVmYXVsdF90cF94IHwgMSB8IDAxLTAx LTIwMjIKKyB0cF94ICAgICB8IDEgfCBkZWZhdWx0X3RwX3ggfCAyIHwgMDEtMDEtMjAyMgorIHRw X3ggICAgIHwgMSB8IGRlZmF1bHRfdCAgICB8IDMgfCAwMS0wMS0yMDIyCisoMyByb3dzKQorCitE Uk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKKy0tIFRlc3Qg Zm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JFQVRFIFRB QkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRhYmxlb2lkKSBz dG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBBREQg Q09OU1RSQUlOVCBjYyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOworSU5TRVJUIElOVE8g dCBWQUxVRVMgKDApLCAoMSk7CistLSBTaG91bGQgYmUgMSBiZWNhdXNlIHBhcnRpdGlvbiBpZGVu dGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMKKy0tIHBhcnRpdGlvbiBpZGVu dGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkg PSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKyBj b3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCistLSAidGFiX2lkIiBjb2x1bW4gKHN0 b3JlZCBnZW5lcmF0ZWQgY29sdW1uKSB3aXRoICJ0YWJsZW9pZCIgYXR0cmlidXRlIHJlcXVpcmVz CistLSByZWNvbXB1dGF0aW9uIGhlcmUuCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0 cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx KSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworLS0g U2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0w IGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGgg aT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChT RUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0tLS0tCisgICAg IDAKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworUkVTRVQgc2VhcmNoX3BhdGg7CistLQorRFJP UCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggMmQzZjUwYTQz YmEuLjBmYjUzZDQ4NmQzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEyMyw3 ICsxMjMsNyBAQCB0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFp biByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVzdCByZXNl dHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4gYmUgaW4K ICMgdGhpcyBncm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9uX21lcmdlIHBhcnRp dGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBw YXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXBy ZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCit0ZXN0 OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlv bl9wcnVuZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRl IHBhcnRpdGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9u X2x6NCBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCiAKICMgZXZlbnRfdHJpZ2dlciBkZXBl bmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkg dGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0 aXRpb25fc3BsaXQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmE4NDRlYmExZWQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3Fs CkBAIC0wLDAgKzEsMTE0OSBAQAorLS0KKy0tIFBBUlRJVElPTl9TUExJVAorLS0gVGVzdHMgZm9y ICJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OIC4uLiIgY29tbWFuZAorLS0KKworQ1JF QVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hMjsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hl bWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmluZworLS0KKworLS0KKy0t IFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3Vu dCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBFUlJP UjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9S OiAgcmVsYXRpb24gInNhbGVzX2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CisKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdl IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFM VUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIyLTA2LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNw ZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor CistLUVSUk9SOiAgbGlzdCBvZiBzcGxpdCBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxl YXN0IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOworCistLSBFUlJP UjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFs IHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCist LSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCist LSAoV2UgY2FuIGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBh cnRpdGlvbiwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9ucyB3aXRoIHRoZSBzYW1lIG5h bWUpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIG5hbWUg InNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBF UlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5z YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgInNhbGVzX2ZlYl9tYXJf YXByMjAyMiIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSk7CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIy MDIyIiBpcyBub3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIw MjItMDYtMDEnKSk7CisKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNh bGVzX21hcjIwMjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworCistLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywg dGhlbSBzaG91bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CisKKy0tIEVS Uk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1 YWwgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisK Ky0tIENoZWNrIHRoZSBzb3VyY2UgcGFydGl0aW9uIG5vdCBpbiB0aGUgc2VhcmNoIHBhdGgKK1NF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBU QUJMRSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlCitTUExJVCBQQVJUSVRJT04g cGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsK K1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKK1xkKyBz YWxlc19yYW5nZQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19v dGhlcnM7CisKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3Bs aXQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3Ro ZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAor ICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAg ICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0w NC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAg J1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUs ICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyks CisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVy JywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIy LTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEz LCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUx MCwgICcyMDIyLTA1LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VMRUNUIHRhYmxlb2lk OjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFz czo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlIENBU0NBREU7CisKKy0tCistLSBBZGQgc3BsaXQgcGFydGl0aW9uLCB0aGVuIGFkZCByb3dz IGludG8gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIFNw bGl0IHBhcnRpdGlvbiwgYWxzbyBjaGVjayBzY2hlbWEgcXVhbGlmaWNhdGlvbiBvZiBuZXcgcGFy dGl0aW9ucworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5z YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKSk7CitcZCsgc2FsZXNfcmFuZ2UKKworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIs ICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIw MjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAo OSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAg MzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0w NicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAn MjAyMi0wNS0wNCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNf cmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxl c3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworCistLQorLS0g VGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICogR0VORVJB VEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFU RSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195 ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZB UkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0 LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcu JyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19kZXBh cnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpOworCitDUkVB VEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVT IEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIy LCAxLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFM VUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNw ZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisg ICgnTWFuYWdlcjEnLCAyMDIxLCAxMiwgNyksCisgICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCks CisgICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAxKSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDIsIDQp LAorICAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMiksCisgICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAx KSwKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDMsIDMpLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMywg NCksCisgICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAxKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5OworCitBTFRF UiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEp IFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKKworSU5TRVJUIElOVE8gc2FsZXNf ZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 KSBWQUxVRVMKKyAgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKSwKKyAgKCdNYW5hZ2VyMicsIDIw MjIsIDIsIDEwKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2Rh dGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5OworCistLUVSUk9SOiAgcmVsYXRpb24gInNhbGVz X2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAorU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmVi MjAyMjsKKworRFJPUCBUQUJMRSBzYWxlc19kYXRlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBz cGxpdCBERUZBVUxUIHBhcnRpdGlvbjsgdXNlIGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNo ZWNrIGluZGV4IGFmdGVyIHNwbGl0CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRF IElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgx LCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1 MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw JyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVl dicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcy MDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAg KDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEt MjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQ bGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAg JzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOwor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBX SEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRp b25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CisKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGlu ZyBpbmRleGVzCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK0VYUExBSU4gKENPU1RTIE9G RikgU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0w MS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcy MDIyLTAxLTAxJzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19tYXIy MDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVz X21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAy Mi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ ICcyMDIyLTAxLTAxJzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19v dGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisKK1JFU0VUIGVuYWJs ZV9zZXFzY2FuOworCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0g J3NhbGVzX2ZlYjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEn IE9SREVSIEJZIGluZGV4bmFtZTsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJs ZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0 X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdI RVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRp b25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWU7CitTRUxFQ1QgKiBGUk9NIHBnX2lu ZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAn cGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lOworCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxp dHRpbmcgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRo IHNhbGVzX2RlYzIwMjEgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRv IHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19k ZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMzApIFRPICgyMDIyMDIwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3 aXRoIHNhbGVzX2ZlYjIwMjIgKHVwcGVyIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0 IHRvIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNh bGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00g KDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMiksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0 cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGluc2lkZSBib3VuZCkKKy0tIEVSUk9SOiAgY2FuIG5vdCBz cGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAi c2FsZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBG T1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMTEyMjApLAorICAgUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVy c2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChleGFjdGx5IHRoZSBzYW1lIGJvdW5kcykKKy0tIEVS Uk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3 aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8g KDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKKy0tIEVS Uk9SOiAgb25lIHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNl IHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIx IEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04g c2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8g KDIwMjIwMzAxKSk7CisKKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUg YmV0d2VlbiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTEwKSBUTyAo MjAyMjAxMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgy MDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CisKKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgZXF1 YWwgdG8gbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBvZiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19m ZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAy MTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFM VUVTIEZST00gKDIwMjEwMTAxKSBUTyAoMjAyMTAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisK Ky0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9SRUlHTiBLRVkg Q09OU1RSQUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3Qn KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgKK3NhbGVzcGVyc29uX2lkIElOVCBSRUZF UkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwKK3NhbGVzX2Ftb3VudCBJTlQgQ0hF Q0sgKHNhbGVzX2Ftb3VudCA+IDEpLAorc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFO R0UgKHNhbGVzX2RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNv bmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViX21hcl9h cHIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lOworCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CisKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNf ZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAn c2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgY29ubmFtZTs7CitTRUxFQ1Qg cGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3Ry YWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRF UiBCWSBjb25uYW1lOzsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1l LCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2FwcjIw MjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWU7OworCistLSBFUlJPUjogIG5ldyBy b3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50 ICJzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEsIDAsICcyMDIyLTAzLTExJyk7CistLSBFUlJPUjogIGluc2VydCBvciB1cGRh dGUgb24gdGFibGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInNhbGVzX3JhbmdlX3NhbGVzcGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKC0xLCAxMCwgJzIwMjItMDMtMTEnKTsKKy0tIG9rCitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEsIDEwLCAnMjAyMi0wMy0xMScpOworCitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0t CistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4gY2FzZSBv ZiBleGlzdGluZyBGT1JFSUdOIEtFWSByZWZlcmVuY2UgZnJvbSBhbm90aGVyIHRhYmxlCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtFWSwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3Bl cnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXMgKHNhbGVzcGVyc29uX2lkIElOVCBSRUZFUkVO Q0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoNDApOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICAn UG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMTksICdJdmFub3YnKSwKKyAgKDIwLCAnU21p cm5vZmYnKSwKKyAgKDMwLCAnRm9yZCcpOworCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMKKyAg KDEsICAxMDAsICcyMDIyLTAzLTAxJyksCisgICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpLAorICAo MTAsIDE1MCwgJzIwMjItMDMtMDEnKSwKKyAgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyksCisgICgx OSwgMjAwLCAnMjAyMi0wMy0wNCcpLAorICAoMjAsIDUwLCAgJzIwMjItMDMtMTInKSwKKyAgKDIw LCAxNzAsICcyMDIyLTAzLTAyJyksCisgICgzMCwgMzAsICAnMjAyMi0wMy0wNCcpOworCitTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVv aWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworQUxURVIg VEFCTEUgc2FsZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRP ICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMw KSBUTyAoNDApKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVv cGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNw ZXJzb25faWQ7CisKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzcGVyc29uX2lkX2Zr ZXkiCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDQwLCA1MCwgICcyMDIyLTAzLTA0Jyk7Cist LSBvaworSU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOwor CitEUk9QIFRBQkxFIHNhbGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NB REU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUg d2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUw MV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTAp OworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxl IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3Fs JyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDog YWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19X SEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRF IFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAg QUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQK KyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVv cGxlJyk7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJp Z2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0gg Uk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxl c3Blb3BsZScpOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRl bWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAx IHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl MTBfNDAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBT UExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNw ZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNh bGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElP TiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworCistLSAy IHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5U TyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKKy0tIDEgdHJpZ2dlciBzaG91 bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMg KDMwLCAnRm9yZCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNw ZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxl c3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworRFJPUCBGVU5D VElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBh cnRpdGlvbiB3aXRjaCBpZGVudGl0eSBjb2x1bW4KKy0tIElmIHNwbGl0IHBhcnRpdGlvbiBjb2x1 bW4gaXMgaWRlbnRpdHkgY29sdW1uLCBjb2x1bW5zIG9mIG5ldyBwYXJ0aXRpb25zIGFyZSBpZGVu dGl0eSBjb2x1bW5zIHRvby4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJz b25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgUFJJTUFSWSBLRVksIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNwZXJzb25f aWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxXzIgUEFSVElUSU9OIE9GIHNhbGVzcGVv cGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24g d2l0aCBpZGVudGl0eSBjb2x1bW46CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyXzUoc2FsZXNw ZXJzb25faWQgSU5UIE5PVCBOVUxMLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgRk9S IFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxl c3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdQb2lyb3QnKSwgKCdJdmFub3YnKTsKKworU0VMRUNUIGF0 dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUg YXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9S REVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVk IEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVz cGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CistLSBTcGxpdCBwYXJ0 aXRpb24gaGFzIGlkZW50aXR5IGNvbHVtbjoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwg YXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlMl81Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisK K0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzMgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAo MyksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzXzQgRk9SIFZBTFVFUyBGUk9NICgzKSBUTyAo NCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGU0XzUgRk9SIFZBTFVFUyBGUk9NICg0KSBUTyAo NSkpOworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVT ICgnTWF5JyksICgnRm9yZCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00g c2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMi LCBzYWxlc3BlcnNvbl9pZDsKKworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5l cmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAn c2FsZXNwZW9wbGUnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKK1NFTEVDVCBhdHRu YW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0 dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBP UkRFUiBCWSBhdHRudW07CistLSBOZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50aXR5LWNvbHVtbnM6 CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJp YnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfMyc6OnJl Z2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5 LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0 cmVsaWQgPSAnc2FsZXNwZW9wbGUzXzQnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsK K1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmli dXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlNF81Jzo6cmVn Y2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FT Q0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQgY29sdW1u cworLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFS WSBLRVksIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNwZXJzb25faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQQVJUSVRJ T04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRl IG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBz YWxlc3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFS WSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CisK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMTBfNDAgVkFMVUVTCisgICgnZHVtbXkgdmFsdWUgMScs IDE5LCAxMDAsIG5vdygpLCAnSXZhbm92JyksCisgICgnZHVtbXkgdmFsdWUgMicsIDIwLCAxMDEs IG5vdygpLCAnU21pcm5vZmYnKTsKKworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBEUk9Q IENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDI7 CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQzOworCitBTFRFUiBU QUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgRk9SIFZB TFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVT CisgICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScpLAorICAoMzAsICdGb3JkJyk7CisKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIw KSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9N ICgzMCkgVE8gKDQwKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNh bGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzcGVvcGxlIENBU0NBREU7CisKKy0tCist LSBUZXN0OiBzcGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jhbmdl IChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19k YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIw MjIgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKwor Q1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVT SU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT CisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIy LTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUs ICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1 MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIw MjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAg Mzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0w NCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JE RVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9p ZDsKKworQUxURVIgVEFCTEUgc2FsZXNfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfYXBy X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8wMV8xMCBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMl8xMF8yMCBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0 LTIwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMl8yMF8zMCBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJykpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJl Z2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZTsKKworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdDogc3Bl Y2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBz YWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5ULAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBz YWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVB VEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3Jywg J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxo aScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlv biAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFy dGl0aW9uICJzYWxlc19ub3JkIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJ T04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4g KCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFz dCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ0hlbHNp bmtpJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0JlcmxpbicsICdLeWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVz X3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Nl bnRyYWwiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdO ZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMg SU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxl c19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdL eWl2JykpOworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBo YXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAn TWFkcmlkJywgTlVMTCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2Vu dHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCistLSBF UlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZlIHRoaXMgdmFsdWUg YmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193 ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJv dXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycs ICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9S IFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworLS0gRVJST1I6ICBu ZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24g YWxyZWFkeSBleGlzdHMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdNZWxib3VybmUnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2sn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOwor CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiB0d28gc3BlY2lmaWMgZXJy b3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZzoKKy0tICAgKiBuZXcgcGFydGl0aW9ucyBkbyBu b3QgaGF2ZSBOVUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0gICAqIG5l dyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFz LgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5ULAorIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisg c2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAo c2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2Fs ZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3Ns bycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVq aW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CisK Ky0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3Bs aXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgn TGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3Qg Rk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFS VElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAn S3lpdicpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAn S3lpdicgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQ TElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9S IFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0 b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcn LCAnQmVybGluJywgTlVMTCkpOworCistLSBFUlJPUiAgREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxk IGJlIG9uZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxs IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVT IElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisg ICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzMiBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdDog QlkgTElTVCBwYXJ0aXRpb25pbmcsIFNQTElUIFBBUlRJVElPTiB3aXRoIGRhdGEKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIFNFUklBTCwKKyBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ft b3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0 YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04g c2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVgg c2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2Fs ZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3Nsbycp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFM VUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5n JywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUworICAoJ1RydW1wJywgICAgJ0JlamluZycsICAgICAg ICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdTbWlybm9mZicsICdOZXcgWW9yaycsICAgICAg ICA1MDAsICcyMDIyLTAzLTAzJyksCisgICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAy MDAwLCAnMjAyMi0wMy0wNScpLAorICAoJ0l2YW5vdicsICAgJ1dhcnNhdycsICAgICAgICAgIDc1 MCwgJzIwMjItMDMtMDQnKSwKKyAgKCdEZWV2JywgICAgICdMaXNib24nLCAgICAgICAgICAyNTAs ICcyMDIyLTAzLTA3JyksCisgICgnUG9pcm90JywgICAnQmVybGluJywgICAgICAgICAxMDAwLCAn MjAyMi0wMy0wMScpLAorICAoJ01heScsICAgICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIw MjItMDMtMDYnKSwKKyAgKCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIy LTAzLTA5JyksCisgICgnTWF5JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0w My0xMScpLAorICAoJ0hhbGRlcicsICAgJ0hlbHNpbmtpJywgICAgICAgIDgwMCwgJzIwMjItMDMt MDInKSwKKyAgKCdNdWxsZXInLCAgICdNYWRyaWQnLCAgICAgICAgICA2NTAsICcyMDIyLTAzLTA1 JyksCisgICgnU21pdGgnLCAgICAnS3lpdicsICAgICAgICAgICAgMzUwLCAnMjAyMi0wMy0xMCcp LAorICAoJ0dhbmRpJywgICAgJ1dhcnNhdycsICAgICAgICAgIDE1MCwgJzIwMjItMDMtMDgnKSwK KyAgKCdQbGF0bycsICAgICdMaXNib24nLCAgICAgICAgICA5NTAsICcyMDIyLTAzLTA1Jyk7CisK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0Jl amluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRy YWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKKworU0VMRUNU IHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6 OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGlu ZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzIGFmdGVyIHNwbGl0dGluZyBwYXJ0aXRpb24KK1NF VCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAq IEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUg PSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9 ICdXYXJzYXcnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Qg V0hFUkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworU0VMRUNUICogRlJPTSBzYWxlc19s aXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKworUkVTRVQgZW5hYmxlX3Nl cXNjYW47CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3QgZm9yOgorLS0g ICAqIHNwbGl0IERFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0 d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQg UEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3Bl cnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEw MDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDkn KSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFu b3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpLAorICAo NywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0x MScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAn MjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisg ICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2Fk ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFU RSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQor LS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRp dGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9m IHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAg MTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0w OScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2 YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAn MjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisg ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24n LCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAz LTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAn VHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsK KworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4yMDIy XzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMS0xMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy Ml8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xh c3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworCistLQorLS0gVGVzdCBmb3Igc3BsaXQgbm9uLURFRkFVTFQgcGFydGl0aW9uIHRv IERFRkFVTFQgcGFydGl0aW9uICsgcGFydGl0aW9ucworLS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBi b3VuZHMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTA1LTAxJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwg ICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcp LAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYn LCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAy Mi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4 LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAy NTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4 JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcy MDIyLTAxLTA5Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxl b2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIGFu b3RoZXIgdGFibGUuCistLQorQ1JFQVRFIFRBQkxFIHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElP TiBCWSBMSVNUICh0KTsKK0NSRUFURSBUQUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFM VUVTIElOICgnQScpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04g QlkgUkFOR0UgKHQpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0 aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIgU1BMSVQgUEFSVElUSU9OIHQx cGEgSU5UTworICAgKFBBUlRJVElPTiB0MmEgRk9SIFZBTFVFUyBGUk9NICgnQScpIFRPICgnQicp LAorICAgIFBBUlRJVElPTiB0MmIgRk9SIFZBTFVFUyBGUk9NICgnQicpIFRPICgnQycpKTsKKwor RFJPUCBUQUJMRSB0MjsKK0RST1AgVEFCTEUgdDE7CisKKy0tCistLSBUcnkgdG8gU1BMSVQgcGFy dGl0aW9uIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMiBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKworU0VMRUNUIGMub2lkOjpw Z19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMs IHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5E IGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKKy0tIEVSUk9SOiAgY2Fubm90IGNyZWF0 ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9u ICJ0IgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJ VElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBf MV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworQUxURVIgVEFCTEUgdCBTUExJVCBQ QVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiBwZ190ZW1wLnRwXzBfMSBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiBwZ190ZW1wLnRwXzFfMiBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKSk7CisKKy0tIFBhcnRpdGlvbnMgc2hvdWxkIGJlIHRlbXBvcmFy eS4KK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgcGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpLCBjLnJlbHBlcnNpc3RlbmNlCisgIEZST00gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5v aWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICd0Jzo6cmVnY2xhc3MKKyAgT1JERVIg QlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFV TFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9Q IFRBQkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9ucyBpbmhlcml0IHBhcmVudCdz IHRhYmxlc3BhY2UKK0NSRUFURSBUQUJMRSB0IChpIGludCBQUklNQVJZIEtFWSBVU0lORyBJTkRF WCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoaSkg VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJ T04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQg UEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSk7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdI RVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8xJywgJ3RwXzFfMicpIEFORCBzY2hlbWFuYW1l ID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxlbmFtZSwgdGFibGVz cGFjZTsKK1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2lu ZGV4ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5E IHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVu YW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2U7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIG5l dyBwYXJ0aXRpb25zIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK0NSRUFU RSBBQ0NFU1MgTUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwIFRZUEUgVEFCTEUgSEFORExFUiBo ZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8w XzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1Ig VkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMikpOworU0VMRUNUIGMucmVsbmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xh c3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxhbSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3Qn OjpyZWdjbGFzcywgJ3RwXzBfMSc6OnJlZ2NsYXNzLCAndHBfMV8yJzo6cmVnY2xhc3MpCitPUkRF UiBCWSBjLnJlbG5hbWU7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0 aW9uX3NwbGl0X2hlYXA7CisKKy0tIFRlc3QgcGVybWlzc2lvbiBjaGVja3MuICBUaGUgdXNlciBu ZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgdGhlCistLSB0aGUgcGFydGl0aW9uIHRv IHNwbGl0IHRvIGRvIHRoZSBzcGxpdC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworR1JB TlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKKworU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChp IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CisKK1NFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkg VE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdCBP V05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQg UEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHRwXzBf MiBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CisKK0RST1AgVEFCTEUgdDsK K1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitEUk9QIFJPTEUg cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYm9iOworCistLSBTcGxpdCBwYXJ0aXRpb24gb2YgYSB0ZW1wb3JhcnkgdGFibGUg d2hlbiBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0aGUgc2FtZSBu YW1lIGFzIHRoZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQKK0NSRUFURSBURU1QIFRBQkxFIHQgKGEg aW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMCBQQVJU SVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzAgSU5UTworICAoUEFSVElUSU9OIHBnX3RlbXAudHBfMCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiBwZ190ZW1wLnRwXzEgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMikpOworRFJPUCBUQUJMRSB0OworCistLSBDaGVjayBkZWZhdWx0cyBh bmQgY29uc3RyYWludHMgb2YgbmV3IHBhcnRpdGlvbnMKK0NSRUFURSBUQUJMRSB0X2JpZ2ludCAo CisgIGIgYmlnaW50LAorICBpIGludCBERUZBVUxUICgzKzEwKSwKKyAgaiBpbnQgREVGQVVMVCAx MDEsCisgIGsgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGIrMTApIFNUT1JFRAorKQorUEFSVElU SU9OIEJZIFJBTkdFIChiKTsKK0NSRUFURSBUQUJMRSB0X2JpZ2ludF9kZWZhdWx0IFBBUlRJVElP TiBPRiB0X2JpZ2ludCBERUZBVUxUOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBiZWZv cmUgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnQKK1xkKyB0X2JpZ2ludF9kZWZhdWx0CitB TFRFUiBUQUJMRSB0X2JpZ2ludCBTUExJVCBQQVJUSVRJT04gdF9iaWdpbnRfZGVmYXVsdCBJTlRP CisgIChQQVJUSVRJT04gdF9iaWdpbnRfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAp LAorICAgUEFSVElUSU9OIHRfYmlnaW50X2RlZmF1bHQgREVGQVVMVCk7CistLSBTaG93IGRlZmF1 bHRzL2NvbnN0cmFpbnRzIGFmdGVyIFNQTElUIFBBUlRJVElPTgorXGQrIHRfYmlnaW50X2RlZmF1 bHQKK1xkKyB0X2JpZ2ludF8wMV8xMAorRFJPUCBUQUJMRSB0X2JpZ2ludDsKKworCistLSBUZXN0 OiBvd25lciBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgb3duZXIgb2Yg c3BsaXQgcGFydGl0aW9uCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGlj ZTsKK0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBUTyByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJ T04gQlkgUkFOR0UgKGkpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzBfMihpIGludCk7CitSRVNFVCBT RVNTSU9OIEFVVEhPUklaQVRJT047CisKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0 cF8wXzIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CisKKy0tIE93bmVyIGlzICdyZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8yCisKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKSk7CisKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2UnOgorXGR0IHRwXzBfMQorXGR0IHRwXzFfMgorCitEUk9QIFRBQkxFIHQ7CitSRVZPS0Ug QUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7 CisKKworLS0gVGVzdDogaW5kZXggb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQg d2l0aCBzYW1lIG93bmVyIGFzIHNwbGl0CistLSBwYXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jl c3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25f c3BsaXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworCitTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRF IFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRw XzEwXzIwIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitJTlNF UlQgSU5UTyB0IFZBTFVFUyAoMTEpLCAoMTYpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04g cnVuX21lKGludGVnZXIpIFJFVFVSTlMgaW50ZWdlciBBUyAkJAorQkVHSU4KKyAgUkFJU0UgTk9U SUNFICd5b3UgYXJlIHJ1bm5pbmcgbWUgYXMgJScsIENVUlJFTlRfVVNFUjsKKyAgUkVUVVJOICQx OworRU5ECiskJCBMQU5HVUFHRSBQTFBHU1FMIElNTVVUQUJMRTsKKworLS0gT3duZXIgaXMgJ3Jl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0NSRUFURSBJTkRFWCBPTiB0IChydW5fbWUo aSkpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCistLSBPd25lciBzaG91bGQgYmUg J3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFS VElUSU9OIHRwXzEwXzIwIElOVE8KKyAgKFBBUlRJVElPTiB0cF8xMF8xNSBGT1IgVkFMVUVTIEZS T00gKDEwKSBUTyAoMTUpLAorICAgUEFSVElUSU9OIHRwXzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAo MTUpIFRPICgyMCkpOworCitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHJ1bl9tZShpbnRl Z2VyKTsKKworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9N IHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0 aW9uX3NwbGl0X2FsaWNlOworCistLSBUZXN0IGZvciBoYXNoIHBhcnRpdGlvbmVkIHRhYmxlCitD UkVBVEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBIQVNIKGkpOworQ1JFQVRFIFRBQkxF IHRwMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgMiwgUkVNQUlOREVS IDApOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIFdJVEggKE1P RFVMVVMgMiwgUkVNQUlOREVSIDEpOworCistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBh cnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdAorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJU SVRJT04gdHAxIElOVE8KKyAgKFBBUlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVM VVMgNCwgUkVNQUlOREVSIDApLAorICAgUEFSVElUSU9OIHRwMV8yIEZPUiBWQUxVRVMgV0lUSCAo TU9EVUxVUyA0LCBSRU1BSU5ERVIgMikpOworCistLSBFUlJPUjogIGxpc3Qgb2YgbmV3IHBhcnRp dGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0FMVEVSIFRBQkxF IHQgU1BMSVQgUEFSVElUSU9OIHRwMSBJTlRPCisgIChQQVJUSVRJT04gdHAxXzEgRk9SIFZBTFVF UyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAwKSk7CisKK0RST1AgVEFCTEUgdDsKKworCist LSBBZGRpdGlvbmFsIHRlc3RzIGZvciBlcnJvciBtZXNzYWdlcworQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCks IHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisK Ky0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBu b3QgZXF1YWwgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEn KSk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKworLS0gVGVzdCBmb3Igc3BsaXQgcGFy dGl0aW9uIHByb3BlcnRpZXM6CistLSAqIFNUQVRJU1RJQ1MgaXMgZW1wdHkKKy0tICogQ09NTUVO VCBpcyBlbXB0eQorLS0gKiBERUZBVUxUUyBhcmUgdGhlIHNhbWUgYXMgREVGQVVMVFMgZm9yIHBh cnRpdGlvbmVkIHRhYmxlCistLSAqIFNUT1JBR0UgaXMgdGhlIHNhbWUgYXMgU1RPUkFHRSBmb3Ig cGFydGl0aW9uZWQgdGFibGUKKy0tICogR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBhcmUgdGhl IHNhbWUgYXMgR0VORVJBVEVEIGFuZCBDT05TVFJBSU5UUyBmb3IgcGFydGl0aW9uZWQgdGFibGUK Ky0tICogVFJJR0dFUlMgYXJlIHRoZSBzYW1lIGFzIFRSSUdHRVJTIGZvciBwYXJ0aXRpb25lZCB0 YWJsZQorCitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4dCBTVE9SQUdF IEVYVEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90JywKKyBiIGJpZ2lu dCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEtMDEnKSBTVE9SRUQpIFBB UlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04gQ09MVU1OIHQuaSBJUyAndDEu aSc7CisKK0NSRUFURSBUQUJMRSB0cF94CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JB R0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwX3gnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBHRU5F UkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7CitBTFRFUiBUQUJMRSB0IEFU VEFDSCBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0NPTU1FTlQg T04gQ09MVU1OIHRwX3guaSBJUyAndHBfeC5pJzsKKworQ1JFQVRFIFNUQVRJU1RJQ1MgdF9zdGF0 IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0OworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfeF9z dGF0IChERVBFTkRFTkNJRVMpIG9uIGksIGIgZnJvbSB0cF94OworCitBTFRFUiBUQUJMRSB0IEFE RCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFCTEUgdCBBREQg Q09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9SQ0VEOworQUxURVIg VEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChiID4gMCkgTk9UIFZBTElE OworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4gTk9UIE5VTEwgYiBOT1QgVkFM SUQ7CisKK0lOU0VSVCBJTlRPIHRwX3goaSwgdCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOwor SU5TRVJUIElOVE8gdHBfeChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CisKK0NSRUFU RSBPUiBSRVBMQUNFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKSBSRVRVUk5TIHRyaWdnZXIg TEFOR1VBR0UgJ3BscGdzcWwnIEFTCiskQk9EWSQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAndHJp Z2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdW WzBdLCBUR19PUCwgVEdfV0hFTiwgVEdfTEVWRUw7CisgIFJFVFVSTiBuZXc7CitFTkQ7CiskQk9E WSQ7CisKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUg SU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVu Y3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwX3hfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dl ciBCRUZPUkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJF IHRyaWdnZXJfZnVuY3Rpb24oJ3RwX3gnKTsKKworXGQrIHRwX3gKK0FMVEVSIFRBQkxFIHQgU1BM SVQgUEFSVElUSU9OIHRwX3ggSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDIpKTsKK1xkKyB0cF94CisKK0lOU0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFV TFQsIDMpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHQgT1JERVIgQlkgdGFi bGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBiOworRFJPUCBUQUJMRSB0OworRFJP UCBGVU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCk7CisKKworLS0gVGVzdCBmb3IgcmVjb21wdXRh dGlvbiBvZiBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQs IHRhYl9pZCBpbnQgZ2VuZXJhdGVkIGFsd2F5cyBhcyAodGFibGVvaWQpIHN0b3JlZCkgUEFSVElU SU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIGNj IENIRUNLKHRhYmxlb2lkIDw+IDEyMzQ1Njc4OSk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMCks ICgxKTsKKworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Ig cm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Ig cm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFi X2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisKKy0tICJ0YWJfaWQi IGNvbHVtbiAoc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW4pIHdpdGggInRhYmxlb2lkIiBhdHRyaWJ1 dGUgcmVxdWlyZXMKKy0tIHJlY29tcHV0YXRpb24gaGVyZS4KK0FMVEVSIFRBQkxFIHQgU1BMSVQg UEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKSk7CisKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZpZXIgZm9y IHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0aW9uIGlkZW50aWZpZXIg Zm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5E IHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9IDEpOworCitEUk9QIFRB QkxFIHQ7CisKKworUkVTRVQgc2VhcmNoX3BhdGg7CisKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hOworRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTI7CmRp ZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGExM2U4MTYyODkwLi4xMmJmYTMwYzZjOCAxMDA2 NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI3NzcsNiArMjc3Nyw3IEBAIFNpbXBsZVN0YXRz CiBTaW1wbGVTdHJpbmdMaXN0CiBTaW1wbGVTdHJpbmdMaXN0Q2VsbAogU2luZ2xlQm91bmRTb3J0 SXRlbQorU2luZ2xlUGFydGl0aW9uU3BlYwogU2l6ZQogU2tpcFBhZ2VzCiBTa2lwU3VwcG9ydApA QCAtMjg0Myw2ICsyODQ0LDcgQEAgU3BlY2lhbEpvaW5JbmZvCiBTcGluRGVsYXlTdGF0dXMKIFNw bGl0SW50ZXJ2YWwKIFNwbGl0TFIKK1NwbGl0UGFydGl0aW9uQ29udGV4dAogU3BsaXRQYWdlTGF5 b3V0CiBTcGxpdFBvaW50CiBTcGxpdFRleHRPdXRwdXREYXRhCi0tIAoyLjM5LjUgKEFwcGxlIEdp dC0xNTQpCgo= --000000000000f1b44a063eda98de--