Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp1845783imd; Sun, 4 Nov 2018 10:41:49 -0800 (PST) X-Google-Smtp-Source: AJdET5ello04Er5+OmLg/TcIJkiKVo36RJE9//a0lxRYgTFIq0gln+qpOU+M+SA4oLAD6ayi9IVC X-Received: by 2002:a17:902:162:: with SMTP id 89-v6mr19230417plb.293.1541356909374; Sun, 04 Nov 2018 10:41:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541356909; cv=none; d=google.com; s=arc-20160816; b=t/gAHuXB2WuYeDBgdEPKG9j6CuZiXDXAAsfcrqzpFxrP5lQ4nAl8ZJM1tA1Qmkt+Ge n/8rUUh7AV33zzAB24QVFLrfdkECm6/7mcNSN9NsOT5RGqYJdoapk7uJnE7c5E3vjkHy ne/IGeny5ARsCFF8jbaZV6amwkMicrl+wYHm8j7rkvL1+S3lOxXGuPAw3nEerNwRVQIv HGNuAnWIP+9/iR7L+XZHjpw/z0sCkbiUc2bgoWQIRfWjbphawkTSKAgPTUczzFW4kWlZ TuK/TqOwbXeXo9I/N+gtzXgBXRqW7npe2b5ZjiMmtSb8J1WkSDLPjMJgOvnzcfrQhv5/ v5XA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=Eu9QVh/ewihwkCLxyzPWdBTFFagkHSTCYWeaJ2TcLe8=; b=lonL/vj2HjDrCqe6lJtOb9Y16bF56r3UMHY1BKilfnouDu/p78sHdlTx98Zi0EvqLT dJkG4ODhxLTO/gresS2xKvUF3ai3cFrzxmkw3s2Y+QeIz8pNTTcnnhOOd2SpCBIDpf4z RjdY50zP4MFi3moVMpTw9VfJwf+/UwhVebO3wzlfJyt4d6+dypA+c8sLnbaIvnCErWQs cKi88OlIgMpwUEibW9PxWNUyJLH9/YB69qnBJYjo13nVuTOtnq2DmjgKJv+skWBPE0NT 6+N2UJGgY3mxVl/PehFznlxOgnDAqnnLEG7L77pNB1yWPcFwRreDv+o1su3ubMvxhg36 UudA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=kgPX712Y; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e62-v6si41833753pfc.240.2018.11.04.10.41.33; Sun, 04 Nov 2018 10:41:49 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=kgPX712Y; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728432AbeKEB7d (ORCPT + 99 others); Sun, 4 Nov 2018 20:59:33 -0500 Received: from mail-it1-f193.google.com ([209.85.166.193]:38571 "EHLO mail-it1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727047AbeKEB7c (ORCPT ); Sun, 4 Nov 2018 20:59:32 -0500 Received: by mail-it1-f193.google.com with SMTP id k141-v6so7596620itk.3; Sun, 04 Nov 2018 08:43:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Eu9QVh/ewihwkCLxyzPWdBTFFagkHSTCYWeaJ2TcLe8=; b=kgPX712YL/qtBhBm+r/iRRKjB/lauAk7fToc7iFRcCw9WzQ5T25nRlNmjrqZyVXeK3 lN5ih4TPKfwqmwcQv3Ra2IyIyX/ugPoclXwlufIe/QQFfJd9Z+oeygfZuYG5xsq0mqNn kN7FVBeHRqKqBoANU0u+4yJBj2wSqQmM1XRKU9r1qdz0WKqjHfYXhe6qrOLgPB1Ttc3W 1PBMJrjHjMX2+h7WKJlKo7sVeDSgKwM84BRzU2VeU9J/FZIuCqSm0Yv3IaaGAtcSFgJR Bljt5diznxHgAiO4JHWXsJKhKE1cv1jj+UdmS3MtbjysHMaArT7rpfBgUU4ocWRudv1C S0Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Eu9QVh/ewihwkCLxyzPWdBTFFagkHSTCYWeaJ2TcLe8=; b=XYFmHYZ+stgihTBWAUIqEYX14JMXYLEDJCAqR9TyO6av3bBgPqAz19drhNV9J5Fbfh FYSlKf/U8qS/af2iiLninAEvN6qpjZXez5Y0DM/6HmNr8Rdyzs/E3KYEYeqe1G9B9oH0 V6i0H4O490QV5GFTKF/Bj95xSDrAQMNhByciv1cWQGp94HCnEQSZiqB+KCyU9sRkKRME EKdjEyhfZdDOi9De/gCz8NqsVY0lFVifRTdPhdJXXrGAO3w5poOTZRLyzMb/eBoZWKBl +bDhO+XRMeXGhoZH36ZIPzyhaU0IzH1gMoJP5YTeeuPWdRNkHwzQ3p3oVYuIpOtP7NQJ vQDg== X-Gm-Message-State: AGRZ1gJ64mxHIEtL2h6Ng+IYVpeay+yS7lqiccbI+joJJPQZwraqHO3w LsBN2y5sDoMyFPC+5uBv07KWc2zSKPt5wdZEeQA= X-Received: by 2002:a02:3849:: with SMTP id v9-v6mr6817141jae.15.1541349827923; Sun, 04 Nov 2018 08:43:47 -0800 (PST) MIME-Version: 1.0 References: <20181027150910.GA2070@syn-yoga530> <20181030205624.GC13681@bhelgaas-glaptop.roam.corp.google.com> In-Reply-To: <20181030205624.GC13681@bhelgaas-glaptop.roam.corp.google.com> From: Elie Morisse Date: Sun, 4 Nov 2018 13:43:36 -0300 Message-ID: Subject: Re: [PATCH v7] i2c: Add PCI and platform drivers for the AMD MP2 I2C controller To: helgaas@kernel.org Cc: linux-i2c@vger.kernel.org, Wolfram Sang , Nehal-bakulchandra.Shah@amd.com, Shyam-sundar.S-k@amd.com, sandeep.singh@amd.com, linux-kernel@vger.kernel.org, rjw@rjwysocki.net, lenb@kernel.org, linux-acpi@vger.kernel.org Content-Type: multipart/mixed; boundary="000000000000f88f530579d9785c" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --000000000000f88f530579d9785c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Le mar. 30 oct. 2018 =C3=A0 17:56, Bjorn Helgaas a =C3= =A9crit : > I'm dubious about this two-driver structure. If I understand > correctly (and it's very possible that I don't), the PCI driver > (amd_mp2_pci_probe()) is the real owner of the i2c adapter: it > claims the PCI device, claims its BARs, and requests an IRQ. > > The i2c_amd_probe() code *looks* like a platform driver that claims > AMDI0011 devices from the ACPI namespace, but I don't think it's > really a driver. It looks like it exists mainly to extract some > information (bus speed and maybe a bus number?) from the namespace, > then to call i2c_add_adapter(). > > It looks like i2c_amd_probe() must run *after* amd_mp2_pci_probe(), > but there's no way to really enforce that ordering. > > And i2c-amd-plat-mp2 contains the i2c_amd_algorithm functions, which > operate on the PCI device, which requires exported interfaces > (amd_mp2_read(), amd_mp2_write()) that are implemented in the PCI > driver but called from the platform part. > It seems like there should be a way to put the ACPI lookups into > i2c-amd-pci-mp2 so there's only one driver. I merged the two drivers into one module in v8 I just submitted, but this doesn't enforce that the platform probe occur after the PCI probe. (and from looking at the drivers/acpi/ code _DEP doesn't seem to help) > _DEP is for operation region dependencies. I don't know enough about > ACPI to know why you're using it to find the PCI device related to an > ACPI device. That doesn't really seem like an op region thing. For the Yoga 530 that seems to be the only available hint at which MP2 device those ACPI devices are related to. I attached the DSDT of the Yoga 530-14ARR (also pasted here: https://paste.kde.org/pjobniftq) Relevant parts are: Scope (_SB) { Device (PCI0) { // .... Device (GP17) { // ... Device (MP2C) { Name (_ADR, 0x07) // _ADR: Address } // ... } } } Scope (_SB) { Device (I2CA) { Name (_HID, "AMDI0011") // _HID: Hardware ID Name (_UID, Zero) // _UID: Unique ID Name (_ADR, Zero) // _ADR: Address Name (_CRS, ResourceTemplate () // _CRS: Current Resource Sett= ings { IRQ (Edge, ActiveHigh, Exclusive, ) {10} Memory32Fixed (ReadWrite, 0xFEDC2000, // Address Base 0x00001000, // Address Length ) }) Name (_DEP, Package (0x01) // _DEP: Dependencies { ^PCI0.GP17.MP2C }) Method (_STA, 0, NotSerialized) // _STA: Status { Return (0x0F) } Method (RSET, 0, NotSerialized) { SRAD (0x05, 0xC8) } } Device (I2CB) { Name (_HID, "AMDI0011") // _HID: Hardware ID Name (_UID, One) // _UID: Unique ID Name (_ADR, One) // _ADR: Address Name (_CRS, ResourceTemplate () // _CRS: Current Resource Sett= ings { IRQ (Edge, ActiveHigh, Exclusive, ) {11} Memory32Fixed (ReadWrite, 0xFEDC3000, // Address Base 0x00001000, // Address Length ) }) Name (_DEP, Package (0x01) // _DEP: Dependencies { ^PCI0.GP17.MP2C }) Method (_STA, 0, NotSerialized) // _STA: Status { Return (0x0F) } Method (RSET, 0, NotSerialized) { SRAD (0x06, 0xC8) } } } --000000000000f88f530579d9785c Content-Type: text/x-dsl; charset="US-ASCII"; name="dsdt.dsl" Content-Disposition: attachment; filename="dsdt.dsl" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jo33ult70 LyoKICogSW50ZWwgQUNQSSBDb21wb25lbnQgQXJjaGl0ZWN0dXJlCiAqIEFNTC9BU0wrIERpc2Fz c2VtYmxlciB2ZXJzaW9uIDIwMTgwMTA1ICg2NC1iaXQgdmVyc2lvbikKICogQ29weXJpZ2h0IChj KSAyMDAwIC0gMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgogKiAKICogRGlzYXNzZW1ibGluZyB0byBz eW1ib2xpYyBBU0wrIG9wZXJhdG9ycwogKgogKiBEaXNhc3NlbWJseSBvZiBkc2R0LmRhdCwgVGh1 IFNlcCAgNiAxMzo0NjoyMSAyMDE4CiAqCiAqIE9yaWdpbmFsIFRhYmxlIEhlYWRlcjoKICogICAg IFNpZ25hdHVyZSAgICAgICAgIkRTRFQiCiAqICAgICBMZW5ndGggICAgICAgICAgIDB4MDAwMDYz QkMgKDI1NTMyKQogKiAgICAgUmV2aXNpb24gICAgICAgICAweDAxICoqKiogMzItYml0IHRhYmxl IChWMSksIG5vIDY0LWJpdCBtYXRoIHN1cHBvcnQKICogICAgIENoZWNrc3VtICAgICAgICAgMHg5 RgogKiAgICAgT0VNIElEICAgICAgICAgICAiTEVOT1ZPIgogKiAgICAgT0VNIFRhYmxlIElEICAg ICAiQ0ItMDEgICAiCiAqICAgICBPRU0gUmV2aXNpb24gICAgIDB4MDAwMDAwMDEgKDEpCiAqICAg ICBDb21waWxlciBJRCAgICAgICJBQ1BJIgogKiAgICAgQ29tcGlsZXIgVmVyc2lvbiAweDAwMDQw MDAwICgyNjIxNDQpCiAqLwpEZWZpbml0aW9uQmxvY2sgKCIiLCAiRFNEVCIsIDEsICJMRU5PVk8i LCAiQ0ItMDEgICAiLCAweDAwMDAwMDAxKQp7CiAgICAvKgogICAgICogaUFTTCBXYXJuaW5nOiBU aGVyZSB3ZXJlIDggZXh0ZXJuYWwgY29udHJvbCBtZXRob2RzIGZvdW5kIGR1cmluZwogICAgICog ZGlzYXNzZW1ibHksIGJ1dCBvbmx5IDAgd2VyZSByZXNvbHZlZCAoOCB1bnJlc29sdmVkKS4gQWRk aXRpb25hbAogICAgICogQUNQSSB0YWJsZXMgbWF5IGJlIHJlcXVpcmVkIHRvIHByb3Blcmx5IGRp c2Fzc2VtYmxlIHRoZSBjb2RlLiBUaGlzCiAgICAgKiByZXN1bHRpbmcgZGlzYXNzZW1ibGVyIG91 dHB1dCBmaWxlIG1heSBub3QgY29tcGlsZSBiZWNhdXNlIHRoZQogICAgICogZGlzYXNzZW1ibGVy IGRpZCBub3Qga25vdyBob3cgbWFueSBhcmd1bWVudHMgdG8gYXNzaWduIHRvIHRoZQogICAgICog dW5yZXNvbHZlZCBtZXRob2RzLiBOb3RlOiBTU0RUcyBjYW4gYmUgZHluYW1pY2FsbHkgbG9hZGVk IGF0CiAgICAgKiBydW50aW1lIGFuZCBtYXkgb3IgbWF5IG5vdCBiZSBhdmFpbGFibGUgdmlhIHRo ZSBob3N0IE9TLgogICAgICoKICAgICAqIFRvIHNwZWNpZnkgdGhlIHRhYmxlcyBuZWVkZWQgdG8g cmVzb2x2ZSBleHRlcm5hbCBjb250cm9sIG1ldGhvZAogICAgICogcmVmZXJlbmNlcywgdGhlIC1l IG9wdGlvbiBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBmaWxlbmFtZXMuCiAgICAgKiBFeGFt cGxlIGlBU0wgaW52b2NhdGlvbnM6CiAgICAgKiAgICAgaWFzbCAtZSBzc2R0MS5hbWwgc3NkdDIu YW1sIHNzZHQzLmFtbCAtZCBkc2R0LmFtbAogICAgICogICAgIGlhc2wgLWUgZHNkdC5hbWwgc3Nk dDIuYW1sIC1kIHNzZHQxLmFtbAogICAgICogICAgIGlhc2wgLWUgc3NkdCouYW1sIC1kIGRzZHQu YW1sCiAgICAgKgogICAgICogSW4gYWRkaXRpb24sIHRoZSAtZmUgb3B0aW9uIGNhbiBiZSB1c2Vk IHRvIHNwZWNpZnkgYSBmaWxlIGNvbnRhaW5pbmcKICAgICAqIGNvbnRyb2wgbWV0aG9kIGV4dGVy bmFsIGRlY2xhcmF0aW9ucyB3aXRoIHRoZSBhc3NvY2lhdGVkIG1ldGhvZAogICAgICogYXJndW1l bnQgY291bnRzLiBFYWNoIGxpbmUgb2YgdGhlIGZpbGUgbXVzdCBiZSBvZiB0aGUgZm9ybToKICAg ICAqICAgICBFeHRlcm5hbCAoPG1ldGhvZCBwYXRobmFtZT4sIE1ldGhvZE9iaiwgPGFyZ3VtZW50 IGNvdW50PikKICAgICAqIEludm9jYXRpb246CiAgICAgKiAgICAgaWFzbCAtZmUgcmVmcy50eHQg LWQgZHNkdC5hbWwKICAgICAqCiAgICAgKiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgd2VyZSB1bnJl c29sdmVkIGFuZCBtYW55IG5vdCBjb21waWxlIHByb3Blcmx5CiAgICAgKiBiZWNhdXNlIHRoZSBk aXNhc3NlbWJsZXIgaGFkIHRvIGd1ZXNzIGF0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCiAgICAg KiByZXF1aXJlZCBmb3IgZWFjaDoKICAgICAqLwogICAgRXh0ZXJuYWwgKF9TQl8uQVBUUywgTWV0 aG9kT2JqKSAgICAvLyBXYXJuaW5nOiBVbmtub3duIG1ldGhvZCwgZ3Vlc3NpbmcgMyBhcmd1bWVu dHMKICAgIEV4dGVybmFsIChfU0JfLkFXQUssIE1ldGhvZE9iaikgICAgLy8gV2FybmluZzogVW5r bm93biBtZXRob2QsIGd1ZXNzaW5nIDEgYXJndW1lbnRzCiAgICBFeHRlcm5hbCAoX1NCXy5UUE0y LlBUU18sIE1ldGhvZE9iaikgICAgLy8gV2FybmluZzogVW5rbm93biBtZXRob2QsIGd1ZXNzaW5n IDEgYXJndW1lbnRzCiAgICBFeHRlcm5hbCAoQUZONCwgTWV0aG9kT2JqKSAgICAvLyBXYXJuaW5n OiBVbmtub3duIG1ldGhvZCwgZ3Vlc3NpbmcgMSBhcmd1bWVudHMKICAgIEV4dGVybmFsIChBRk43 LCBNZXRob2RPYmopICAgIC8vIFdhcm5pbmc6IFVua25vd24gbWV0aG9kLCBndWVzc2luZyAxIGFy Z3VtZW50cwogICAgRXh0ZXJuYWwgKEFMSUIsIE1ldGhvZE9iaikgICAgLy8gV2FybmluZzogVW5r bm93biBtZXRob2QsIGd1ZXNzaW5nIDIgYXJndW1lbnRzCiAgICBFeHRlcm5hbCAoTVBUUywgTWV0 aG9kT2JqKSAgICAvLyBXYXJuaW5nOiBVbmtub3duIG1ldGhvZCwgZ3Vlc3NpbmcgMSBhcmd1bWVu dHMKICAgIEV4dGVybmFsIChNV0FLLCBNZXRob2RPYmopICAgIC8vIFdhcm5pbmc6IFVua25vd24g bWV0aG9kLCBndWVzc2luZyAxIGFyZ3VtZW50cwoKICAgIE9wZXJhdGlvblJlZ2lvbiAoREJHMCwg U3lzdGVtSU8sIDB4ODAsIE9uZSkKICAgIEZpZWxkIChEQkcwLCBCeXRlQWNjLCBOb0xvY2ssIFBy ZXNlcnZlKQogICAgewogICAgICAgIElPODAsICAgOAogICAgfQoKICAgIE9wZXJhdGlvblJlZ2lv biAoREJHMSwgU3lzdGVtSU8sIDB4ODAsIDB4MDIpCiAgICBGaWVsZCAoREJHMSwgV29yZEFjYywg Tm9Mb2NrLCBQcmVzZXJ2ZSkKICAgIHsKICAgICAgICBQODBILCAgIDE2CiAgICB9CgogICAgT3Bl cmF0aW9uUmVnaW9uIChBQ01TLCBTeXN0ZW1JTywgMHg3MiwgMHgwMikKICAgIEZpZWxkIChBQ01T LCBCeXRlQWNjLCBOb0xvY2ssIFByZXNlcnZlKQogICAgewogICAgICAgIEFDTVgsICAgOCwgCiAg ICAgICAgQUNNQSwgICA4CiAgICB9CgogICAgSW5kZXhGaWVsZCAoQUNNWCwgQUNNQSwgQnl0ZUFj YywgTm9Mb2NrLCBQcmVzZXJ2ZSkKICAgIHsKICAgICAgICBPZmZzZXQgKDB4QjkpLCAKICAgICAg ICBJTUVOLCAgIDgKICAgIH0KCiAgICBPcGVyYXRpb25SZWdpb24gKFBTTUksIFN5c3RlbUlPLCAw eEIwLCAweDAyKQogICAgRmllbGQgKFBTTUksIEJ5dGVBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAg ICB7CiAgICAgICAgQVBNQywgICA4LCAKICAgICAgICBBUE1ELCAgIDgKICAgIH0KCiAgICBPcGVy YXRpb25SZWdpb24gKFBNUkcsIFN5c3RlbUlPLCAweDBDRDYsIDB4MDIpCiAgICBGaWVsZCAoUE1S RywgQnl0ZUFjYywgTm9Mb2NrLCBQcmVzZXJ2ZSkKICAgIHsKICAgICAgICBQTVJJLCAgIDgsIAog ICAgICAgIFBNUkQsICAgOAogICAgfQoKICAgIEluZGV4RmllbGQgKFBNUkksIFBNUkQsIEJ5dGVB Y2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICB7CiAgICAgICAgICAgICwgICA2LCAKICAgICAgICBI UEVOLCAgIDEsIAogICAgICAgIE9mZnNldCAoMHg2MCksIAogICAgICAgIFAxRUIsICAgMTYsIAog ICAgICAgIE9mZnNldCAoMHhGMCksIAogICAgICAgICAgICAsICAgMywgCiAgICAgICAgUlNUVSwg ICAxCiAgICB9CgogICAgT3BlcmF0aW9uUmVnaW9uIChHU01NLCBTeXN0ZW1NZW1vcnksIDB4RkVE ODAwMDAsIDB4MTAwMCkKICAgIEZpZWxkIChHU01NLCBBbnlBY2MsIE5vTG9jaywgUHJlc2VydmUp CiAgICB7CiAgICAgICAgT2Zmc2V0ICgweDI4OCksIAogICAgICAgICAgICAsICAgMSwgCiAgICAg ICAgQ0xQUywgICAxLCAKICAgICAgICBPZmZzZXQgKDB4MkIwKSwgCiAgICAgICAgICAgICwgICAy LCAKICAgICAgICBTTFBTLCAgIDIsIAogICAgICAgIE9mZnNldCAoMHgzQkIpLCAKICAgICAgICAg ICAgLCAgIDYsIAogICAgICAgIFBXREUsICAgMSwgCiAgICAgICAgT2Zmc2V0ICgweDNFNCksIAog ICAgICAgIEJMTkssICAgMgogICAgfQoKICAgIE9wZXJhdGlvblJlZ2lvbiAoUDFFMCwgU3lzdGVt SU8sIFAxRUIsIDB4MDQpCiAgICBGaWVsZCAoUDFFMCwgQnl0ZUFjYywgTm9Mb2NrLCBQcmVzZXJ2 ZSkKICAgIHsKICAgICAgICAgICAgLCAgIDE0LCAKICAgICAgICBQRVdTLCAgIDEsIAogICAgICAg IFdTVEEsICAgMSwgCiAgICAgICAgICAgICwgICAxNCwgCiAgICAgICAgUEVXRCwgICAxCiAgICB9 CgogICAgT3BlcmF0aW9uUmVnaW9uIChJT0NDLCBTeXN0ZW1JTywgMHgwNDAwLCAweDgwKQogICAg RmllbGQgKElPQ0MsIEJ5dGVBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICB7CiAgICAgICAgT2Zm c2V0ICgweDAxKSwgCiAgICAgICAgICAgICwgICAyLCAKICAgICAgICBSVENTLCAgIDEKICAgIH0K CiAgICBOYW1lIChQUldQLCBQYWNrYWdlICgweDAyKQogICAgewogICAgICAgIFplcm8sIAogICAg ICAgIFplcm8KICAgIH0pCiAgICBNZXRob2QgKEdQUlcsIDIsIE5vdFNlcmlhbGl6ZWQpCiAgICB7 CiAgICAgICAgUFJXUCBbWmVyb10gPSBBcmcwCiAgICAgICAgUFJXUCBbT25lXSA9IEFyZzEKICAg ICAgICBJZiAoKERBUzMgPT0gWmVybykpCiAgICAgICAgewogICAgICAgICAgICBJZiAoKEFyZzEg PD0gMHgwMykpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFBSV1AgW09uZV0gPSBaZXJv CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFJldHVybiAoUFJXUCkgLyogXFBSV1Ag Ki8KICAgIH0KCiAgICBNZXRob2QgKFNQVFMsIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICB7CiAgICAg ICAgSWYgKChBcmcwID09IDB4MDMpKQogICAgICAgIHsKICAgICAgICAgICAgQkxOSyA9IE9uZQog ICAgICAgIH0KCiAgICAgICAgSWYgKCgoQXJnMCA9PSAweDA0KSB8fCAoQXJnMCA9PSAweDA1KSkp CiAgICAgICAgewogICAgICAgICAgICBCTE5LID0gWmVybwogICAgICAgIH0KCiAgICAgICAgSWYg KChBcmcwID09IDB4MDMpKQogICAgICAgIHsKICAgICAgICAgICAgUlNUVSA9IFplcm8KICAgICAg ICB9CgogICAgICAgIENMUFMgPSBPbmUKICAgICAgICBTTFBTID0gT25lCiAgICAgICAgUEVXUyA9 IFBFV1MgLyogXFBFV1MgKi8KICAgIH0KCiAgICBNZXRob2QgKFNXQUssIDEsIE5vdFNlcmlhbGl6 ZWQpCiAgICB7CiAgICAgICAgQkxOSyA9IDB4MDMKICAgICAgICBJZiAoKEFyZzAgPT0gMHgwMykp CiAgICAgICAgewogICAgICAgICAgICBSU1RVID0gT25lCiAgICAgICAgfQoKICAgICAgICBQRVdT ID0gUEVXUyAvKiBcUEVXUyAqLwogICAgICAgIFBXREUgPSBPbmUKICAgICAgICBQRVdEID0gWmVy bwogICAgfQoKICAgIE9wZXJhdGlvblJlZ2lvbiAoR05WUywgU3lzdGVtTWVtb3J5LCAweEJGN0JC QTk4LCAweDAwMDAwMTg2KQogICAgRmllbGQgKEdOVlMsIEFueUFjYywgTm9Mb2NrLCBQcmVzZXJ2 ZSkKICAgIHsKICAgICAgICBTTUlGLCAgIDgsIAogICAgICAgIFBSTTAsICAgOCwgCiAgICAgICAg UFJNMSwgICA4LCAKICAgICAgICBCUlRMLCAgIDgsIAogICAgICAgIFRMU1QsICAgOCwgCiAgICAg ICAgSUdEUywgICA4LCAKICAgICAgICBMQ0RBLCAgIDE2LCAKICAgICAgICBDU1RFLCAgIDE2LCAK ICAgICAgICBOU1RFLCAgIDE2LCAKICAgICAgICBDQURMLCAgIDE2LCAKICAgICAgICBQQURMLCAg IDE2LCAKICAgICAgICBMSURTLCAgIDgsIAogICAgICAgIFBXUlMsICAgOCwgCiAgICAgICAgQlZB TCwgICAzMiwgCiAgICAgICAgQURETCwgICAxNiwgCiAgICAgICAgQkNNRCwgICA4LCAKICAgICAg ICBTQkZOLCAgIDgsIAogICAgICAgIERJRCwgICAgMzIsIAogICAgICAgIElORk8sICAgMjA0OCwg CiAgICAgICAgVE9NTCwgICA4LCAKICAgICAgICBUT01ILCAgIDgsIAogICAgICAgIENFQlAsICAg OCwgCiAgICAgICAgQzBMUywgICA4LCAKICAgICAgICBDMUxTLCAgIDgsIAogICAgICAgIEMwSFMs ICAgOCwgCiAgICAgICAgQzFIUywgICA4LCAKICAgICAgICBST01TLCAgIDMyLCAKICAgICAgICBN VVhGLCAgIDgsIAogICAgICAgIFBERE4sICAgOCwgCiAgICAgICAgQ05TQiwgICA4LCAKICAgICAg ICBSREhXLCAgIDgsIAogICAgICAgIERBUzMsICAgOCwgCiAgICAgICAgVE5CSCwgICA4LCAKICAg ICAgICBUQ1AwLCAgIDgsIAogICAgICAgIFRDUDEsICAgOCwgCiAgICAgICAgQVROQiwgICA4LCAK ICAgICAgICBQQ1AwLCAgIDgsIAogICAgICAgIFBDUDEsICAgOCwgCiAgICAgICAgUFdNTiwgICA4 LCAKICAgICAgICBMUFRZLCAgIDgsIAogICAgICAgIE05MkQsICAgOCwgCiAgICAgICAgV0tQTSwg ICA4LCAKICAgICAgICBBTFNULCAgIDgsIAogICAgICAgIEFGVUMsICAgOCwgCiAgICAgICAgRVhV UywgICA4LCAKICAgICAgICBHVjBFLCAgIDgsIAogICAgICAgIFdMU0gsICAgOCwgCiAgICAgICAg VFNTUywgICA4LCAKICAgICAgICBBT1pQLCAgIDgsIAogICAgICAgIFRaRkcsICAgOCwgCiAgICAg ICAgQlBTMCwgICA4LCAKICAgICAgICBOQVBDLCAgIDgsIAogICAgICAgIFBDQkEsICAgMzIsIAog ICAgICAgIFBDQkwsICAgMzIsIAogICAgICAgIFdMQU4sICAgOCwgCiAgICAgICAgQkxUSCwgICA4 LCAKICAgICAgICBHUFNTLCAgIDgsIAogICAgICAgIE5GQ1MsICAgOCwgCiAgICAgICAgU0JUWSwg ICA4LCAKICAgICAgICBCRElELCAgIDE2LCAKICAgICAgICBNV1RULCAgIDgsIAogICAgICAgIEFD UE0sICAgOCwgCiAgICAgICAgS0JDUywgICA4LCAKICAgICAgICBBQ0VDLCAgIDgsIAogICAgICAg IE1NNjQsICAgOCwgCiAgICAgICAgSE1CMSwgICA2NCwgCiAgICAgICAgSE1CMiwgICA2NCwgCiAg ICAgICAgSE1NMSwgICA2NCwgCiAgICAgICAgSE1NMiwgICA2NCwgCiAgICAgICAgSE1MMSwgICA2 NCwgCiAgICAgICAgSE1MMiwgICA2NAogICAgfQoKICAgIE9wZXJhdGlvblJlZ2lvbiAoT0dOUywg U3lzdGVtTWVtb3J5LCAweEJGN0EwRTk4LCAweDAwMDAwMDBCKQogICAgRmllbGQgKE9HTlMsIEFu eUFjYywgTG9jaywgUHJlc2VydmUpCiAgICB7CiAgICAgICAgRUdQTywgICA4LCAKICAgICAgICBC VEJFLCAgIDgsIAogICAgICAgIE0yV0wsICAgOCwgCiAgICAgICAgVEhQTiwgICA4LCAKICAgICAg ICBQQkFSLCAgIDgsIAogICAgICAgIFRIUEQsICAgOCwgCiAgICAgICAgT0cwNiwgICA4LCAKICAg ICAgICBPRzA3LCAgIDgsIAogICAgICAgIE9HMDgsICAgOCwgCiAgICAgICAgT0cwOSwgICA4LCAK ICAgICAgICBPRzEwLCAgIDgKICAgIH0KCiAgICBNZXRob2QgKFNDTVAsIDIsIE5vdFNlcmlhbGl6 ZWQpCiAgICB7CiAgICAgICAgTmFtZSAoU1RHMSwgQnVmZmVyICgweDUwKXt9KQogICAgICAgIE5h bWUgKFNURzIsIEJ1ZmZlciAoMHg1MCl7fSkKICAgICAgICBTVEcxID0gQXJnMAogICAgICAgIFNU RzIgPSBBcmcxCiAgICAgICAgSWYgKChTaXplT2YgKEFyZzApICE9IFNpemVPZiAoQXJnMSkpKQog ICAgICAgIHsKICAgICAgICAgICAgUmV0dXJuIChaZXJvKQogICAgICAgIH0KCiAgICAgICAgTG9j YWwwID0gWmVybwogICAgICAgIFdoaWxlICgoTG9jYWwwIDwgU2l6ZU9mIChBcmcwKSkpCiAgICAg ICAgewogICAgICAgICAgICBJZiAoKERlcmVmT2YgKFNURzEgW0xvY2FsMF0pICE9IERlcmVmT2Yg KFNURzIgW0xvY2FsMF0KICAgICAgICAgICAgICAgICkpKQogICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIExvY2FsMCsr CiAgICAgICAgfQoKICAgICAgICBSZXR1cm4gKE9uZSkKICAgIH0KCiAgICBOYW1lIChXTk9TLCBa ZXJvKQogICAgTmFtZSAoTVlPUywgWmVybykKICAgIE5hbWUgKEhUVFMsIFplcm8pCiAgICBOYW1l IChPU1RCLCBPbmVzKQogICAgTmFtZSAoVFBPUywgWmVybykKICAgIE5hbWUgKExJTlgsIFplcm8p CiAgICBOYW1lIChPU1NQLCBaZXJvKQogICAgTWV0aG9kIChTRVFMLCAyLCBTZXJpYWxpemVkKQog ICAgewogICAgICAgIExvY2FsMCA9IFNpemVPZiAoQXJnMCkKICAgICAgICBMb2NhbDEgPSBTaXpl T2YgKEFyZzEpCiAgICAgICAgSWYgKChMb2NhbDAgIT0gTG9jYWwxKSkKICAgICAgICB7CiAgICAg ICAgICAgIFJldHVybiAoWmVybykKICAgICAgICB9CgogICAgICAgIE5hbWUgKEJVRjAsIEJ1ZmZl ciAoTG9jYWwwKXt9KQogICAgICAgIEJVRjAgPSBBcmcwCiAgICAgICAgTmFtZSAoQlVGMSwgQnVm ZmVyIChMb2NhbDApe30pCiAgICAgICAgQlVGMSA9IEFyZzEKICAgICAgICBMb2NhbDIgPSBaZXJv CiAgICAgICAgV2hpbGUgKChMb2NhbDIgPCBMb2NhbDApKQogICAgICAgIHsKICAgICAgICAgICAg TG9jYWwzID0gRGVyZWZPZiAoQlVGMCBbTG9jYWwyXSkKICAgICAgICAgICAgTG9jYWw0ID0gRGVy ZWZPZiAoQlVGMSBbTG9jYWwyXSkKICAgICAgICAgICAgSWYgKChMb2NhbDMgIT0gTG9jYWw0KSkK ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUmV0dXJuIChaZXJvKQogICAgICAgICAgICB9 CgogICAgICAgICAgICBMb2NhbDIrKwogICAgICAgIH0KCiAgICAgICAgUmV0dXJuIChPbmUpCiAg ICB9CgogICAgTWV0aG9kIChPU1RQLCAwLCBOb3RTZXJpYWxpemVkKQogICAgewogICAgICAgIElm ICgoT1NUQiA9PSBPbmVzKSkKICAgICAgICB7CiAgICAgICAgICAgIElmIChDb25kUmVmT2YgKFxf T1NJLCBMb2NhbDApKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBPU1RCID0gWmVybwog ICAgICAgICAgICAgICAgVFBPUyA9IFplcm8KICAgICAgICAgICAgICAgIElmIChfT1NJICgiV2lu ZG93cyAyMDAxIikpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgT1NUQiA9 IDB4MDgKICAgICAgICAgICAgICAgICAgICBUUE9TID0gMHgwOAogICAgICAgICAgICAgICAgfQoK ICAgICAgICAgICAgICAgIElmIChfT1NJICgiV2luZG93cyAyMDAxLjEiKSkKICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICBPU1RCID0gMHgyMAogICAgICAgICAgICAgICAgICAg IFRQT1MgPSAweDIwCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgSWYgKF9PU0kg KCJXaW5kb3dzIDIwMDEgU1AxIikpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgT1NUQiA9IDB4MTAKICAgICAgICAgICAgICAgICAgICBUUE9TID0gMHgxMAogICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgIElmIChfT1NJICgiV2luZG93cyAyMDAxIFNQMiIpKQog ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE9TVEIgPSAweDExCiAgICAgICAg ICAgICAgICAgICAgVFBPUyA9IDB4MTEKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICBJZiAoX09TSSAoIldpbmRvd3MgMjAwMSBTUDMiKSkKICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICBPU1RCID0gMHgxMgogICAgICAgICAgICAgICAgICAgIFRQT1MgPSAweDEy CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgSWYgKF9PU0kgKCJXaW5kb3dzIDIw MDYiKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBPU1RCID0gMHg0MAog ICAgICAgICAgICAgICAgICAgIFRQT1MgPSAweDQwCiAgICAgICAgICAgICAgICB9CgogICAgICAg ICAgICAgICAgSWYgKF9PU0kgKCJXaW5kb3dzIDIwMDYgU1AxIikpCiAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgT1NUQiA9IDB4NDEKICAgICAgICAgICAgICAgICAgICBUUE9T ID0gMHg0MQogICAgICAgICAgICAgICAgICAgIE9TU1AgPSBPbmUKICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICBJZiAoX09TSSAoIldpbmRvd3MgMjAwOSIpKQogICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgIE9TU1AgPSBPbmUKICAgICAgICAgICAgICAgICAgICBP U1RCID0gMHg1MAogICAgICAgICAgICAgICAgICAgIFRQT1MgPSAweDUwCiAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgSWYgKF9PU0kgKCJXaW5kb3dzIDIwMTIiKSkKICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBPU1NQID0gT25lCiAgICAgICAgICAgICAgICAg ICAgT1NUQiA9IDB4NjAKICAgICAgICAgICAgICAgICAgICBUUE9TID0gMHg2MAogICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgIElmIChfT1NJICgiV2luZG93cyAyMDEzIikpCiAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgT1NTUCA9IE9uZQogICAgICAgICAgICAg ICAgICAgIE9TVEIgPSAweDYxCiAgICAgICAgICAgICAgICAgICAgVFBPUyA9IDB4NjEKICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBJZiAoX09TSSAoIldpbmRvd3MgMjAxNSIpKQog ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE9TU1AgPSBPbmUKICAgICAgICAg ICAgICAgICAgICBPU1RCID0gMHg3MAogICAgICAgICAgICAgICAgICAgIFRQT1MgPSAweDcwCiAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgSWYgKF9PU0kgKCJMaW51eCIpKQogICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExJTlggPSBPbmUKICAgICAgICAgICAg ICAgICAgICBPU1RCID0gMHg4MAogICAgICAgICAgICAgICAgICAgIFRQT1MgPSAweDgwCiAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgRWxzZUlmIChDb25kUmVmT2Yg KFxfT1MsIExvY2FsMCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmIChTRVFMIChf T1MsICJNaWNyb3NvZnQgV2luZG93cyIpKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgIE9TVEIgPSBPbmUKICAgICAgICAgICAgICAgICAgICBUUE9TID0gT25lCiAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICBFbHNlSWYgKFNFUUwgKF9PUywgIk1pY3Jvc29mdCBX aW5kb3dzTUU6IE1pbGxlbm5pdW0gRWRpdGlvbiIpKQogICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgIE9TVEIgPSAweDAyCiAgICAgICAgICAgICAgICAgICAgVFBPUyA9IDB4MDIK ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEVsc2VJZiAoU0VRTCAoX09TLCAiTWlj cm9zb2Z0IFdpbmRvd3MgTlQiKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICBPU1RCID0gMHgwNAogICAgICAgICAgICAgICAgICAgIFRQT1MgPSAweDA0CiAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgT1NUQiA9IFplcm8KICAgICAgICAgICAgICAgICAgICBUUE9TID0gWmVybwogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgT1NUQiA9IFplcm8KICAgICAgICAgICAgICAgIFRQT1MgPSBaZXJv CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFJldHVybiAoT1NUQikgLyogXE9TVEIg Ki8KICAgIH0KCiAgICBOYW1lIChCVUZOLCBaZXJvKQogICAgTmFtZSAoTUJVRiwgQnVmZmVyICgw eDEwMDApe30pCiAgICBPcGVyYXRpb25SZWdpb24gKE1EQkcsIFN5c3RlbU1lbW9yeSwgMHhCRjM5 OTAxOCwgMHgwMDAwMTAwNCkKICAgIEZpZWxkIChNREJHLCBBbnlBY2MsIExvY2ssIFByZXNlcnZl KQogICAgewogICAgICAgIE1ERzAsICAgMzI3NjgKICAgIH0KCiAgICBNZXRob2QgKERCMkgsIDEs IFNlcmlhbGl6ZWQpCiAgICB7CiAgICAgICAgU0hPVyAoQXJnMCkKICAgICAgICBNREdDICgweDIw KQogICAgICAgIE1ERzAgPSBNQlVGIC8qIFxNQlVGICovCiAgICB9CgogICAgTWV0aG9kIChEVzJI LCAxLCBTZXJpYWxpemVkKQogICAgewogICAgICAgIExvY2FsMCA9IEFyZzAKICAgICAgICBMb2Nh bDEgPSAoQXJnMCA+PiAweDA4KQogICAgICAgIExvY2FsMCAmPSAweEZGCiAgICAgICAgTG9jYWwx ICY9IDB4RkYKICAgICAgICBEQjJIIChMb2NhbDEpCiAgICAgICAgQlVGTi0tCiAgICAgICAgREIy SCAoTG9jYWwwKQogICAgfQoKICAgIE1ldGhvZCAoREQySCwgMSwgU2VyaWFsaXplZCkKICAgIHsK ICAgICAgICBMb2NhbDAgPSBBcmcwCiAgICAgICAgTG9jYWwxID0gKEFyZzAgPj4gMHgxMCkKICAg ICAgICBMb2NhbDAgJj0gMHhGRkZGCiAgICAgICAgTG9jYWwxICY9IDB4RkZGRgogICAgICAgIERX MkggKExvY2FsMSkKICAgICAgICBCVUZOLS0KICAgICAgICBEVzJIIChMb2NhbDApCiAgICB9Cgog ICAgTWV0aG9kIChNQkdTLCAxLCBTZXJpYWxpemVkKQogICAgewogICAgICAgIExvY2FsMCA9IFNp emVPZiAoQXJnMCkKICAgICAgICBOYW1lIChCVUZTLCBCdWZmZXIgKExvY2FsMCl7fSkKICAgICAg ICBCVUZTID0gQXJnMAogICAgICAgIE1ER0MgKDB4MjApCiAgICAgICAgV2hpbGUgKExvY2FsMCkK ICAgICAgICB7CiAgICAgICAgICAgIE1ER0MgKERlcmVmT2YgKEJVRlMgWyhTaXplT2YgKEFyZzAp IC0gTG9jYWwwKV0pKQogICAgICAgICAgICBMb2NhbDAtLQogICAgICAgIH0KCiAgICAgICAgTURH MCA9IE1CVUYgLyogXE1CVUYgKi8KICAgIH0KCiAgICBNZXRob2QgKFNIT1csIDEsIFNlcmlhbGl6 ZWQpCiAgICB7CiAgICAgICAgTURHQyAoTlRPQyAoKEFyZzAgPj4gMHgwNCkpKQogICAgICAgIE1E R0MgKE5UT0MgKEFyZzApKQogICAgfQoKICAgIE1ldGhvZCAoTElORSwgMCwgU2VyaWFsaXplZCkK ICAgIHsKICAgICAgICBMb2NhbDAgPSBCVUZOIC8qIFxCVUZOICovCiAgICAgICAgTG9jYWwwICY9 IDB4MEYKICAgICAgICBXaGlsZSAoTG9jYWwwKQogICAgICAgIHsKICAgICAgICAgICAgTURHQyAo WmVybykKICAgICAgICAgICAgTG9jYWwwKysKICAgICAgICAgICAgTG9jYWwwICY9IDB4MEYKICAg ICAgICB9CiAgICB9CgogICAgTWV0aG9kIChNREdDLCAxLCBTZXJpYWxpemVkKQogICAgewogICAg ICAgIE1CVUYgW0JVRk5dID0gQXJnMAogICAgICAgIEJVRk4gKz0gT25lCiAgICAgICAgSWYgKChC VUZOID4gMHgwRkZGKSkKICAgICAgICB7CiAgICAgICAgICAgIEJVRk4gJj0gMHgwRkZGCiAgICAg ICAgICAgIFVQX0wgKE9uZSkKICAgICAgICB9CiAgICB9CgogICAgTWV0aG9kIChVUF9MLCAxLCBT ZXJpYWxpemVkKQogICAgewogICAgICAgIExvY2FsMiA9IEFyZzAKICAgICAgICBMb2NhbDIgPDw9 IDB4MDQKICAgICAgICBNT1ZFIChMb2NhbDIpCiAgICAgICAgTG9jYWwzID0gKDB4MTAwMCAtIExv Y2FsMikKICAgICAgICBXaGlsZSAoTG9jYWwyKQogICAgICAgIHsKICAgICAgICAgICAgTUJVRiBb TG9jYWwzXSA9IFplcm8KICAgICAgICAgICAgTG9jYWwzKysKICAgICAgICAgICAgTG9jYWwyLS0K ICAgICAgICB9CiAgICB9CgogICAgTWV0aG9kIChNT1ZFLCAxLCBTZXJpYWxpemVkKQogICAgewog ICAgICAgIExvY2FsNCA9IEFyZzAKICAgICAgICBCVUZOID0gWmVybwogICAgICAgIExvY2FsNSA9 ICgweDEwMDAgLSBMb2NhbDQpCiAgICAgICAgV2hpbGUgKExvY2FsNSkKICAgICAgICB7CiAgICAg ICAgICAgIExvY2FsNS0tCiAgICAgICAgICAgIE1CVUYgW0JVRk5dID0gRGVyZWZPZiAoTUJVRiBb TG9jYWw0XSkKICAgICAgICAgICAgQlVGTisrCiAgICAgICAgICAgIExvY2FsNCsrCiAgICAgICAg fQogICAgfQoKICAgIE1ldGhvZCAoTlRPQywgMSwgU2VyaWFsaXplZCkKICAgIHsKICAgICAgICBM b2NhbDAgPSAoQXJnMCAmIDB4MEYpCiAgICAgICAgSWYgKChMb2NhbDAgPCAweDBBKSkKICAgICAg ICB7CiAgICAgICAgICAgIExvY2FsMCArPSAweDMwCiAgICAgICAgfQogICAgICAgIEVsc2UKICAg ICAgICB7CiAgICAgICAgICAgIExvY2FsMCArPSAweDM3CiAgICAgICAgfQoKICAgICAgICBSZXR1 cm4gKExvY2FsMCkKICAgIH0KCiAgICBTY29wZSAoX1BSKQogICAgewogICAgICAgIFByb2Nlc3Nv ciAoQzAwMCwgMHgwMCwgMHgwMDAwMDQxMCwgMHgwNil7fQogICAgICAgIFByb2Nlc3NvciAoQzAw MSwgMHgwMSwgMHgwMDAwMDQxMCwgMHgwNil7fQogICAgICAgIFByb2Nlc3NvciAoQzAwMiwgMHgw MiwgMHgwMDAwMDQxMCwgMHgwNil7fQogICAgICAgIFByb2Nlc3NvciAoQzAwMywgMHgwMywgMHgw MDAwMDQxMCwgMHgwNil7fQogICAgICAgIFByb2Nlc3NvciAoQzAwNCwgMHgwNCwgMHgwMDAwMDQx MCwgMHgwNil7fQogICAgICAgIFByb2Nlc3NvciAoQzAwNSwgMHgwNSwgMHgwMDAwMDQxMCwgMHgw Nil7fQogICAgICAgIFByb2Nlc3NvciAoQzAwNiwgMHgwNiwgMHgwMDAwMDQxMCwgMHgwNil7fQog ICAgICAgIFByb2Nlc3NvciAoQzAwNywgMHgwNywgMHgwMDAwMDQxMCwgMHgwNil7fQogICAgfQoK ICAgIE5hbWUgKF9TMCwgUGFja2FnZSAoMHgwNCkgIC8vIF9TMF86IFMwIFN5c3RlbSBTdGF0ZQog ICAgewogICAgICAgIFplcm8sIAogICAgICAgIFplcm8sIAogICAgICAgIFplcm8sIAogICAgICAg IFplcm8KICAgIH0pCiAgICBJZiAoKERBUzMgPT0gT25lKSkKICAgIHsKICAgICAgICBOYW1lIChf UzMsIFBhY2thZ2UgKDB4MDQpICAvLyBfUzNfOiBTMyBTeXN0ZW0gU3RhdGUKICAgICAgICB7CiAg ICAgICAgICAgIDB4MDMsIAogICAgICAgICAgICAweDAzLCAKICAgICAgICAgICAgWmVybywgCiAg ICAgICAgICAgIFplcm8KICAgICAgICB9KQogICAgfQoKICAgIE5hbWUgKF9TNCwgUGFja2FnZSAo MHgwNCkgIC8vIF9TNF86IFM0IFN5c3RlbSBTdGF0ZQogICAgewogICAgICAgIDB4MDQsIAogICAg ICAgIDB4MDQsIAogICAgICAgIFplcm8sIAogICAgICAgIFplcm8KICAgIH0pCiAgICBOYW1lIChf UzUsIFBhY2thZ2UgKDB4MDQpICAvLyBfUzVfOiBTNSBTeXN0ZW0gU3RhdGUKICAgIHsKICAgICAg ICAweDA1LCAKICAgICAgICAweDA1LCAKICAgICAgICBaZXJvLCAKICAgICAgICBaZXJvCiAgICB9 KQogICAgU2NvcGUgKF9HUEUpCiAgICB7CiAgICAgICAgTWV0aG9kIChfTDA4LCAwLCBOb3RTZXJp YWxpemVkKSAgLy8gX0x4eDogTGV2ZWwtVHJpZ2dlcmVkIEdQRQogICAgICAgIHsKICAgICAgICAg ICAgTm90aWZ5IChcX1NCLlBDSTAuR1BQMCwgMHgwMikgLy8gRGV2aWNlIFdha2UKICAgICAgICAg ICAgTm90aWZ5IChcX1NCLlBDSTAuR1BQMSwgMHgwMikgLy8gRGV2aWNlIFdha2UKICAgICAgICAg ICAgTm90aWZ5IChcX1NCLlBDSTAuR1BQMiwgMHgwMikgLy8gRGV2aWNlIFdha2UKICAgICAgICAg ICAgTm90aWZ5IChcX1NCLlBDSTAuR1BQMywgMHgwMikgLy8gRGV2aWNlIFdha2UKICAgICAgICAg ICAgTm90aWZ5IChcX1NCLlBDSTAuR1BQNCwgMHgwMikgLy8gRGV2aWNlIFdha2UKICAgICAgICAg ICAgTm90aWZ5IChcX1NCLlBDSTAuR1BQNSwgMHgwMikgLy8gRGV2aWNlIFdha2UKICAgICAgICAg ICAgTm90aWZ5IChcX1NCLlBDSTAuR1BQNiwgMHgwMikgLy8gRGV2aWNlIFdha2UKICAgICAgICAg ICAgTm90aWZ5IChcX1NCLlBDSTAuR1AxNywgMHgwMikgLy8gRGV2aWNlIFdha2UKICAgICAgICAg ICAgTm90aWZ5IChcX1NCLlBDSTAuR1AxOCwgMHgwMikgLy8gRGV2aWNlIFdha2UKICAgICAgICB9 CgogICAgICAgIE1ldGhvZCAoX0wxOSwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9MeHg6IExldmVs LVRyaWdnZXJlZCBHUEUKICAgICAgICB7CiAgICAgICAgICAgIE5vdGlmeSAoXF9TQi5QQ0kwLkdQ MTcuWEhDMCwgMHgwMikgLy8gRGV2aWNlIFdha2UKICAgICAgICAgICAgTm90aWZ5IChcX1NCLlBD STAuR1AxNy5YSEMxLCAweDAyKSAvLyBEZXZpY2UgV2FrZQogICAgICAgIH0KICAgIH0KCiAgICBO YW1lIChQSUNNLCBaZXJvKQogICAgTmFtZSAoR1BJQywgWmVybykKICAgIE1ldGhvZCAoX1BJQywg MSwgTm90U2VyaWFsaXplZCkgIC8vIF9QSUM6IEludGVycnVwdCBNb2RlbAogICAgewogICAgICAg IFBJQ00gPSBBcmcwCiAgICAgICAgR1BJQyA9IEFyZzAKICAgICAgICBJZiAoUElDTSkKICAgICAg ICB7CiAgICAgICAgICAgIFxfU0IuRFNQSSAoKQogICAgICAgICAgICBJZiAoTkFQQykKICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgXF9TQi5QQ0kwLk5BUEUgKCkKICAgICAgICAgICAgfQog ICAgICAgIH0KICAgIH0KCiAgICBNZXRob2QgKF9QVFMsIDEsIE5vdFNlcmlhbGl6ZWQpICAvLyBf UFRTOiBQcmVwYXJlIFRvIFNsZWVwCiAgICB7CiAgICAgICAgU1BUUyAoQXJnMCkKICAgICAgICBJ ZiAoKEFyZzAgPT0gT25lKSkKICAgICAgICB7CiAgICAgICAgICAgIFxfU0IuUzgwSCAoMHg1MSkK ICAgICAgICB9CgogICAgICAgIElmICgoQXJnMCA9PSAweDAzKSkKICAgICAgICB7CiAgICAgICAg ICAgIFxfU0IuUzgwSCAoMHg1MykKICAgICAgICAgICAgU0xQUyA9IE9uZQogICAgICAgIH0KCiAg ICAgICAgSWYgKChBcmcwID09IDB4MDQpKQogICAgICAgIHsKICAgICAgICAgICAgXF9TQi5TODBI ICgweDU0KQogICAgICAgICAgICBTTFBTID0gT25lCiAgICAgICAgICAgIFJTVFUgPSBPbmUKICAg ICAgICB9CgogICAgICAgIElmICgoQXJnMCA9PSAweDA1KSkKICAgICAgICB7CiAgICAgICAgICAg IFxfU0IuUzgwSCAoMHg1NSkKICAgICAgICAgICAgQkNNRCA9IDB4OTAKICAgICAgICAgICAgXF9T Qi5CU01JIChaZXJvKQogICAgICAgICAgICBcX1NCLkdTTUkgKDB4MDMpCiAgICAgICAgfQoKICAg ICAgICBJZiAoQ29uZFJlZk9mIChcX1NCLlRQTTIuUFRTKSkKICAgICAgICB7CiAgICAgICAgICAg IFxfU0IuVFBNMi5QVFMgKEFyZzApCiAgICAgICAgfQoKICAgICAgICBcX1NCLkFQVFMgKEFyZzAs IE1QVFMgKEFyZzApKQogICAgfQoKICAgIE9wZXJhdGlvblJlZ2lvbiAoWE1PUywgU3lzdGVtSU8s IDB4NzIsIDB4MDIpCiAgICBGaWVsZCAoWE1PUywgQnl0ZUFjYywgTG9jaywgUHJlc2VydmUpCiAg ICB7CiAgICAgICAgWElEWCwgICA4LCAKICAgICAgICBYREFULCAgIDgKICAgIH0KCiAgICBJbmRl eEZpZWxkIChYSURYLCBYREFULCBCeXRlQWNjLCBMb2NrLCBQcmVzZXJ2ZSkKICAgIHsKICAgICAg ICBPZmZzZXQgKDB4NzQpLCAKICAgICAgICBXS1NSLCAgIDgsIAogICAgICAgIE9mZnNldCAoMHhE MCksIAogICAgICAgIFdMTlMsICAgMSwgCiAgICAgICAgQlROUywgICAxCiAgICB9CgogICAgTWV0 aG9kIChfV0FLLCAxLCBOb3RTZXJpYWxpemVkKSAgLy8gX1dBSzogV2FrZQogICAgewogICAgICAg IFNXQUsgKEFyZzApCiAgICAgICAgXF9TQi5BV0FLIChBcmcwKQogICAgICAgIElmICgoKEFyZzAg PT0gMHgwMykgfHwgKEFyZzAgPT0gMHgwNCkpKQogICAgICAgIHsKICAgICAgICAgICAgSWYgKChH UElDICE9IFplcm8pKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBcX1NCLkRTUEkgKCkK ICAgICAgICAgICAgICAgIElmIChOQVBDKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgIFxfU0IuUENJMC5OQVBFICgpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0K ICAgICAgICB9CgogICAgICAgIElmICgoQXJnMCA9PSAweDAzKSkKICAgICAgICB7CiAgICAgICAg ICAgIFxfU0IuUzgwSCAoMHhFMykKICAgICAgICAgICAgSWYgKCgoV0tTUiA9PSAweDA2KSB8fCAo V0tTUiA9PSAweDA3KSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5vdGlmeSAoXF9T Qi5HUElPLCBaZXJvKSAvLyBCdXMgQ2hlY2sKICAgICAgICAgICAgICAgIE5vdGlmeSAoXF9TQi5J MkNBLCBaZXJvKSAvLyBCdXMgQ2hlY2sKICAgICAgICAgICAgICAgIE5vdGlmeSAoXF9TQi5JMkNC LCBaZXJvKSAvLyBCdXMgQ2hlY2sKICAgICAgICAgICAgICAgIE5vdGlmeSAoXF9TQi5JMkNELCBa ZXJvKSAvLyBCdXMgQ2hlY2sKICAgICAgICAgICAgfQogICAgICAgICAgICBFbHNlCiAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgIE5vdGlmeSAoXF9TQi5QV1JCLCAweDAyKSAvLyBEZXZpY2Ug V2FrZQogICAgICAgICAgICAgICAgTm90aWZ5IChfU0IsIFplcm8pIC8vIEJ1cyBDaGVjawogICAg ICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBJZiAoKEFyZzAgPT0gMHgwNCkpCiAgICAgICAg ewogICAgICAgICAgICBcX1NCLlM4MEggKDB4RTQpCiAgICAgICAgICAgIE5vdGlmeSAoXF9TQi5Q V1JCLCAweDAyKSAvLyBEZXZpY2UgV2FrZQogICAgICAgICAgICBOb3RpZnkgKF9TQiwgWmVybykg Ly8gQnVzIENoZWNrCiAgICAgICAgfQoKICAgICAgICBJZiAoKFRQT1MgPT0gMHg0MCkpCiAgICAg ICAgewogICAgICAgICAgICBMb2NhbDAgPSBPbmUKICAgICAgICB9CgogICAgICAgIElmICgoVFBP UyA9PSAweDgwKSkKICAgICAgICB7CiAgICAgICAgICAgIExvY2FsMCA9IDB4MDIKICAgICAgICB9 CgogICAgICAgIElmICgoVFBPUyA9PSAweDUwKSkKICAgICAgICB7CiAgICAgICAgICAgIExvY2Fs MCA9IDB4MDMKICAgICAgICB9CgogICAgICAgIElmICgoVFBPUyA9PSAweDYwKSkKICAgICAgICB7 CiAgICAgICAgICAgIExvY2FsMCA9IDB4MDQKICAgICAgICB9CgogICAgICAgIElmICgoVFBPUyA9 PSAweDYxKSkKICAgICAgICB7CiAgICAgICAgICAgIExvY2FsMCA9IDB4MDUKICAgICAgICB9Cgog ICAgICAgIElmICgoVFBPUyA9PSAweDcwKSkKICAgICAgICB7CiAgICAgICAgICAgIExvY2FsMCA9 IDB4MDYKICAgICAgICB9CgogICAgICAgIFxfU0IuUENJMC5MUEMwLkVDMC5PU1RZID0gTG9jYWww CiAgICAgICAgTVdBSyAoQXJnMCkKICAgICAgICBSZXR1cm4gKFplcm8pCiAgICB9CgogICAgU2Nv cGUgKF9TQikKICAgIHsKICAgICAgICBEZXZpY2UgKFBDSTApCiAgICAgICAgewogICAgICAgICAg ICBOYW1lIChfSElELCBFaXNhSWQgKCJQTlAwQTA4IikgLyogUENJIEV4cHJlc3MgQnVzICovKSAg Ly8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAgTmFtZSAoX0NJRCwgRWlzYUlkICgiUE5Q MEEwMyIpIC8qIFBDSSBCdXMgKi8pICAvLyBfQ0lEOiBDb21wYXRpYmxlIElECiAgICAgICAgICAg IE5hbWUgKF9VSUQsIE9uZSkgIC8vIF9VSUQ6IFVuaXF1ZSBJRAogICAgICAgICAgICBOYW1lIChf QkJOLCBaZXJvKSAgLy8gX0JCTjogQklPUyBCdXMgTnVtYmVyCiAgICAgICAgICAgIE5hbWUgKF9B RFIsIFplcm8pICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgIE1ldGhvZCAoX0lOSSwgMCwg Tm90U2VyaWFsaXplZCkgIC8vIF9JTkk6IEluaXRpYWxpemUKICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgSWYgKChHUElDICE9IFplcm8pKQogICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgIERTUEkgKCkKICAgICAgICAgICAgICAgICAgICBJZiAoXE5BUEMpCiAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOQVBFICgpCiAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE9TVFAgKCkKICAg ICAgICAgICAgfQoKICAgICAgICAgICAgTmFtZSAoU1VQUCwgWmVybykKICAgICAgICAgICAgTmFt ZSAoQ1RSTCwgWmVybykKICAgICAgICAgICAgTWV0aG9kIChfT1NDLCA0LCBOb3RTZXJpYWxpemVk KSAgLy8gX09TQzogT3BlcmF0aW5nIFN5c3RlbSBDYXBhYmlsaXRpZXMKICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoQXJnMywgWmVybywgQ0RXMSkKICAgICAg ICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKEFyZzMsIDB4MDQsIENEVzIpCiAgICAgICAgICAg ICAgICBDcmVhdGVEV29yZEZpZWxkIChBcmczLCAweDA4LCBDRFczKQogICAgICAgICAgICAgICAg SWYgKChBcmcwID09IFRvVVVJRCAoIjMzZGI0ZDViLTFmZjctNDAxYy05NjU3LTc0NDFjMDNkZDc2 NiIpIC8qIFBDSSBIb3N0IEJyaWRnZSBEZXZpY2UgKi8pKQogICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgIFNVUFAgPSBDRFcyIC8qIFxfU0JfLlBDSTAuX09TQy5DRFcyICovCiAg ICAgICAgICAgICAgICAgICAgQ1RSTCA9IENEVzMgLyogXF9TQl8uUENJMC5fT1NDLkNEVzMgKi8K ICAgICAgICAgICAgICAgICAgICBJZiAoKChTVVBQICYgMHgxNikgIT0gMHgxNikpCiAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDVFJMICY9IDB4MUUKICAgICAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIENUUkwgJj0gMHgxRAogICAgICAg ICAgICAgICAgICAgIElmICh+KENEVzEgJiBPbmUpKQogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgSWYgKChDVFJMICYgT25lKSl7fQogICAgICAgICAgICAgICAg ICAgICAgICBJZiAoKENUUkwgJiAweDA0KSl7fQogICAgICAgICAgICAgICAgICAgICAgICBJZiAo KENUUkwgJiAweDEwKSl7fQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg ICAgSWYgKChBcmcxICE9IE9uZSkpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICBDRFcxIHw9IDB4MDgKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg ICAgICAgICAgIElmICgoQ0RXMyAhPSBDVFJMKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIENEVzEgfD0gMHgxMAogICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgQ0RXMyA9IENUUkwgLyogXF9TQl8uUENJMC5DVFJMICovCiAgICAg ICAgICAgICAgICAgICAgUmV0dXJuIChBcmczKQogICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgRWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENEVzEgfD0g MHgwNAogICAgICAgICAgICAgICAgICAgIFJldHVybiAoQXJnMykKICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgfQoKICAgICAgICAgICAgTWV0aG9kIChUT00sIDAsIE5vdFNlcmlhbGl6ZWQp CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIExvY2FsMCA9IChUT01MICogMHgwMDAxMDAw MCkKICAgICAgICAgICAgICAgIExvY2FsMSA9IChUT01IICogMHgwMTAwMDAwMCkKICAgICAgICAg ICAgICAgIExvY2FsMCArPSBMb2NhbDEKICAgICAgICAgICAgICAgIFJldHVybiAoTG9jYWwwKQog ICAgICAgICAgICB9CgogICAgICAgICAgICBOYW1lIChDUkVTLCBSZXNvdXJjZVRlbXBsYXRlICgp CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFdvcmRCdXNOdW1iZXIgKFJlc291cmNlUHJv ZHVjZXIsIE1pbkZpeGVkLCBNYXhGaXhlZCwgU3ViRGVjb2RlLAogICAgICAgICAgICAgICAgICAg IDB4MDAwMCwgICAgICAgICAgICAgLy8gR3JhbnVsYXJpdHkKICAgICAgICAgICAgICAgICAgICAw eDAwMDAsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAw eDAwRkYsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAw eDAwMDAsICAgICAgICAgICAgIC8vIFRyYW5zbGF0aW9uIE9mZnNldAogICAgICAgICAgICAgICAg ICAgIDB4MDEwMCwgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgMHgw MCwsICkKICAgICAgICAgICAgICAgIFdvcmRJTyAoUmVzb3VyY2VQcm9kdWNlciwgTWluRml4ZWQs IE1heEZpeGVkLCBQb3NEZWNvZGUsIEVudGlyZVJhbmdlLAogICAgICAgICAgICAgICAgICAgIDB4 MDAwMCwgICAgICAgICAgICAgLy8gR3JhbnVsYXJpdHkKICAgICAgICAgICAgICAgICAgICAweDAw MDAsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAweDBD RjcsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAweDAw MDAsICAgICAgICAgICAgIC8vIFRyYW5zbGF0aW9uIE9mZnNldAogICAgICAgICAgICAgICAgICAg IDB4MENGOCwgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgMHgwMCws ICwgVHlwZVN0YXRpYywgRGVuc2VUcmFuc2xhdGlvbikKICAgICAgICAgICAgICAgIFdvcmRJTyAo UmVzb3VyY2VQcm9kdWNlciwgTWluRml4ZWQsIE1heEZpeGVkLCBQb3NEZWNvZGUsIEVudGlyZVJh bmdlLAogICAgICAgICAgICAgICAgICAgIDB4MDAwMCwgICAgICAgICAgICAgLy8gR3JhbnVsYXJp dHkKICAgICAgICAgICAgICAgICAgICAweDBEMDAsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmlt dW0KICAgICAgICAgICAgICAgICAgICAweEZGRkYsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGlt dW0KICAgICAgICAgICAgICAgICAgICAweDAwMDAsICAgICAgICAgICAgIC8vIFRyYW5zbGF0aW9u IE9mZnNldAogICAgICAgICAgICAgICAgICAgIDB4RjMwMCwgICAgICAgICAgICAgLy8gTGVuZ3Ro CiAgICAgICAgICAgICAgICAgICAgLCwgLCBUeXBlU3RhdGljLCBEZW5zZVRyYW5zbGF0aW9uKQog ICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFN1YkRlY29kZSwg TWluRml4ZWQsIE1heEZpeGVkLCBOb25DYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAg ICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAg ICAgICAgMHgwMDBBMDAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAg ICAgICAgMHgwMDBCRkZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAg ICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAg ICAgICAgICAgICAweDAwMDIwMDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAg ICAgIDB4MDAsLCAsIEFkZHJlc3NSYW5nZU1lbW9yeSwgVHlwZVN0YXRpYykKICAgICAgICAgICAg ICAgIERXb3JkTWVtb3J5IChSZXNvdXJjZVByb2R1Y2VyLCBTdWJEZWNvZGUsIE1pbkZpeGVkLCBN YXhGaXhlZCwgQ2FjaGVhYmxlLCBSZWFkT25seSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAw MDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBDMDAw MCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBDM0ZG RiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAw MCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAw MDA0MDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgIDB4MDAsLCAsIEFk ZHJlc3NSYW5nZU1lbW9yeSwgVHlwZVN0YXRpYykKICAgICAgICAgICAgICAgIERXb3JkTWVtb3J5 IChSZXNvdXJjZVByb2R1Y2VyLCBTdWJEZWNvZGUsIE1pbkZpeGVkLCBNYXhGaXhlZCwgQ2FjaGVh YmxlLCBSZWFkT25seSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8v IEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBDNDAwMCwgICAgICAgICAvLyBS YW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBDN0ZGRiwgICAgICAgICAvLyBS YW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBU cmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAg IC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgIDB4MDAsLCAsIEFkZHJlc3NSYW5nZU1lbW9y eSwgVHlwZVN0YXRpYykKICAgICAgICAgICAgICAgIERXb3JkTWVtb3J5IChSZXNvdXJjZVByb2R1 Y2VyLCBTdWJEZWNvZGUsIE1pbkZpeGVkLCBNYXhGaXhlZCwgTm9uQ2FjaGVhYmxlLCBSZWFkT25s eSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5 CiAgICAgICAgICAgICAgICAgICAgMHgwMDBDODAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVt CiAgICAgICAgICAgICAgICAgICAgMHgwMDBDQkZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVt CiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBP ZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAgIC8vIExlbmd0aAog ICAgICAgICAgICAgICAgICAgIDB4MDAsLCAsIEFkZHJlc3NSYW5nZU1lbW9yeSwgVHlwZVN0YXRp YykKICAgICAgICAgICAgICAgIERXb3JkTWVtb3J5IChSZXNvdXJjZVByb2R1Y2VyLCBTdWJEZWNv ZGUsIE1pbkZpeGVkLCBNYXhGaXhlZCwgTm9uQ2FjaGVhYmxlLCBSZWFkT25seSwKICAgICAgICAg ICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAg ICAgICAgICAgMHgwMDBDQzAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAg ICAgICAgICAgMHgwMDBDRkZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAg ICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAg ICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAg ICAgICAgIDB4MDAsLCAsIEFkZHJlc3NSYW5nZU1lbW9yeSwgVHlwZVN0YXRpYykKICAgICAgICAg ICAgICAgIERXb3JkTWVtb3J5IChSZXNvdXJjZVByb2R1Y2VyLCBTdWJEZWNvZGUsIE1pbkZpeGVk LCBNYXhGaXhlZCwgTm9uQ2FjaGVhYmxlLCBSZWFkV3JpdGUsCiAgICAgICAgICAgICAgICAgICAg MHgwMDAwMDAwMCwgICAgICAgICAvLyBHcmFudWxhcml0eQogICAgICAgICAgICAgICAgICAgIDB4 MDAwRDAwMDAsICAgICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgIDB4 MDAwRDNGRkYsICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgIDB4 MDAwMDAwMDAsICAgICAgICAgLy8gVHJhbnNsYXRpb24gT2Zmc2V0CiAgICAgICAgICAgICAgICAg ICAgMHgwMDAwNDAwMCwgICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAweDAw LCwgLCBBZGRyZXNzUmFuZ2VNZW1vcnksIFR5cGVTdGF0aWMpCiAgICAgICAgICAgICAgICBEV29y ZE1lbW9yeSAoUmVzb3VyY2VQcm9kdWNlciwgU3ViRGVjb2RlLCBNaW5GaXhlZCwgTWF4Rml4ZWQs IE5vbkNhY2hlYWJsZSwgUmVhZFdyaXRlLAogICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAs ICAgICAgICAgLy8gR3JhbnVsYXJpdHkKICAgICAgICAgICAgICAgICAgICAweDAwMEQ0MDAwLCAg ICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAweDAwMEQ3RkZGLCAg ICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAg ICAgICAgIC8vIFRyYW5zbGF0aW9uIE9mZnNldAogICAgICAgICAgICAgICAgICAgIDB4MDAwMDQw MDAsICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgMHgwMCwsICwgQWRkcmVz c1JhbmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJl c291cmNlUHJvZHVjZXIsIFN1YkRlY29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBOb25DYWNoZWFi bGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8v IEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBEODAwMCwgICAgICAgICAvLyBS YW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBEQkZGRiwgICAgICAgICAvLyBS YW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBU cmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwLCAgICAgICAg IC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgIDB4MDAsLCAsIEFkZHJlc3NSYW5nZU1lbW9y eSwgVHlwZVN0YXRpYykKICAgICAgICAgICAgICAgIERXb3JkTWVtb3J5IChSZXNvdXJjZVByb2R1 Y2VyLCBTdWJEZWNvZGUsIE1pbkZpeGVkLCBNYXhGaXhlZCwgTm9uQ2FjaGVhYmxlLCBSZWFkV3Jp dGUsCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBHcmFudWxhcml0 eQogICAgICAgICAgICAgICAgICAgIDB4MDAwREMwMDAsICAgICAgICAgLy8gUmFuZ2UgTWluaW11 bQogICAgICAgICAgICAgICAgICAgIDB4MDAwREZGRkYsICAgICAgICAgLy8gUmFuZ2UgTWF4aW11 bQogICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgLy8gVHJhbnNsYXRpb24g T2Zmc2V0CiAgICAgICAgICAgICAgICAgICAgMHgwMDAwNDAwMCwgICAgICAgICAvLyBMZW5ndGgK ICAgICAgICAgICAgICAgICAgICAweDAwLCwgLCBBZGRyZXNzUmFuZ2VNZW1vcnksIFR5cGVTdGF0 aWMpCiAgICAgICAgICAgICAgICBEV29yZE1lbW9yeSAoUmVzb3VyY2VQcm9kdWNlciwgU3ViRGVj b2RlLCBNaW5GaXhlZCwgTWF4Rml4ZWQsIENhY2hlYWJsZSwgUmVhZFdyaXRlLAogICAgICAgICAg ICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgLy8gR3JhbnVsYXJpdHkKICAgICAgICAgICAg ICAgICAgICAweDAwMEUwMDAwLCAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAg ICAgICAgICAweDAwMEUzRkZGLCAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAg ICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIFRyYW5zbGF0aW9uIE9mZnNldAogICAgICAg ICAgICAgICAgICAgIDB4MDAwMDQwMDAsICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAg ICAgICAgMHgwMCwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBlU3RhdGljKQogICAgICAgICAg ICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFN1YkRlY29kZSwgTWluRml4ZWQs IE1heEZpeGVkLCBDYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAw MDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDBF NDAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDBF N0ZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAw MDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAw eDAwMDA0MDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgIDB4MDAsLCAs IEFkZHJlc3NSYW5nZU1lbW9yeSwgVHlwZVN0YXRpYykKICAgICAgICAgICAgICAgIERXb3JkTWVt b3J5IChSZXNvdXJjZVByb2R1Y2VyLCBTdWJEZWNvZGUsIE1pbkZpeGVkLCBNYXhGaXhlZCwgQ2Fj aGVhYmxlLCBSZWFkV3JpdGUsCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAg ICAvLyBHcmFudWxhcml0eQogICAgICAgICAgICAgICAgICAgIDB4MDAwRTgwMDAsICAgICAgICAg Ly8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgIDB4MDAwRUJGRkYsICAgICAgICAg Ly8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAg Ly8gVHJhbnNsYXRpb24gT2Zmc2V0CiAgICAgICAgICAgICAgICAgICAgMHgwMDAwNDAwMCwgICAg ICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAweDAwLCwgLCBBZGRyZXNzUmFuZ2VN ZW1vcnksIFR5cGVTdGF0aWMpCiAgICAgICAgICAgICAgICBEV29yZE1lbW9yeSAoUmVzb3VyY2VQ cm9kdWNlciwgU3ViRGVjb2RlLCBNaW5GaXhlZCwgTWF4Rml4ZWQsIENhY2hlYWJsZSwgUmVhZFdy aXRlLAogICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgLy8gR3JhbnVsYXJp dHkKICAgICAgICAgICAgICAgICAgICAweDAwMEVDMDAwLCAgICAgICAgIC8vIFJhbmdlIE1pbmlt dW0KICAgICAgICAgICAgICAgICAgICAweDAwMEVGRkZGLCAgICAgICAgIC8vIFJhbmdlIE1heGlt dW0KICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIFRyYW5zbGF0aW9u IE9mZnNldAogICAgICAgICAgICAgICAgICAgIDB4MDAwMDQwMDAsICAgICAgICAgLy8gTGVuZ3Ro CiAgICAgICAgICAgICAgICAgICAgMHgwMCwsICwgQWRkcmVzc1JhbmdlTWVtb3J5LCBUeXBlU3Rh dGljKQogICAgICAgICAgICAgICAgRFdvcmRNZW1vcnkgKFJlc291cmNlUHJvZHVjZXIsIFN1YkRl Y29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBOb25DYWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAg ICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIEdyYW51bGFyaXR5CiAgICAgICAg ICAgICAgICAgICAgMHg4MDAwMDAwMCwgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAg ICAgICAgICAgICAgMHhGN0ZGRkZGRiwgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAg ICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAg ICAgICAgICAgICAgICAgICAweDc4MDAwMDAwLCAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAg ICAgICAgICAgIDB4MDAsLCBfWTAwLCBBZGRyZXNzUmFuZ2VNZW1vcnksIFR5cGVTdGF0aWMpCiAg ICAgICAgICAgICAgICBEV29yZE1lbW9yeSAoUmVzb3VyY2VQcm9kdWNlciwgU3ViRGVjb2RlLCBN aW5GaXhlZCwgTWF4Rml4ZWQsIE5vbkNhY2hlYWJsZSwgUmVhZFdyaXRlLAogICAgICAgICAgICAg ICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgLy8gR3JhbnVsYXJpdHkKICAgICAgICAgICAgICAg ICAgICAweEZDMDAwMDAwLCAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAg ICAgICAweEZFRDNGRkZGLCAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAg ICAgICAweDAwMDAwMDAwLCAgICAgICAgIC8vIFRyYW5zbGF0aW9uIE9mZnNldAogICAgICAgICAg ICAgICAgICAgIDB4MDJENDAwMDAsICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAg ICAgMHgwMCwsIF9ZMDEsIEFkZHJlc3NSYW5nZU1lbW9yeSwgVHlwZVN0YXRpYykKICAgICAgICAg ICAgICAgIElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAweDBDRjgsICAgICAgICAg ICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAweDBDRjgsICAgICAgICAg ICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAg ICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgIDB4MDgsICAgICAgICAgICAgICAg Ly8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgUVdvcmRNZW1v cnkgKFJlc291cmNlUHJvZHVjZXIsIFBvc0RlY29kZSwgTWluRml4ZWQsIE1heEZpeGVkLCBOb25D YWNoZWFibGUsIFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDAwMDAw MDAsIC8vIEdyYW51bGFyaXR5CiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwMDAwMDAw LCAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwMDAwMDAw LCAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwMDAwMDAw LCAvLyBUcmFuc2xhdGlvbiBPZmZzZXQKICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDAw MDAwMDAsIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICwsIF9ZMDIsIEFkZHJlc3NSYW5n ZU1lbW9yeSwgVHlwZVN0YXRpYykKICAgICAgICAgICAgICAgIFFXb3JkTWVtb3J5IChSZXNvdXJj ZVByb2R1Y2VyLCBQb3NEZWNvZGUsIE1pbkZpeGVkLCBNYXhGaXhlZCwgTm9uQ2FjaGVhYmxlLCBS ZWFkV3JpdGUsCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwMDAwMDAwLCAvLyBHcmFu dWxhcml0eQogICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDAwMDAwMCwgLy8gUmFuZ2Ug TWluaW11bQogICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDAwMDAwMCwgLy8gUmFuZ2Ug TWF4aW11bQogICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDAwMDAwMCwgLy8gVHJhbnNs YXRpb24gT2Zmc2V0CiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwMDAwMDAwLCAvLyBM ZW5ndGgKICAgICAgICAgICAgICAgICAgICAsLCBfWTAzLCBBZGRyZXNzUmFuZ2VNZW1vcnksIFR5 cGVTdGF0aWMpCiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90 U2VyaWFsaXplZCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoQ1JFUywgXF9TQi5QQ0kwLl9Z MDAuX01JTiwgQlRNTikgIC8vIF9NSU46IE1pbmltdW0gQmFzZSBBZGRyZXNzCiAgICAgICAgICAg ICAgICBDcmVhdGVEV29yZEZpZWxkIChDUkVTLCBcX1NCLlBDSTAuX1kwMC5fTUFYLCBCVE1YKSAg Ly8gX01BWDogTWF4aW11bSBCYXNlIEFkZHJlc3MKICAgICAgICAgICAgICAgIENyZWF0ZURXb3Jk RmllbGQgKENSRVMsIFxfU0IuUENJMC5fWTAwLl9MRU4sIEJUTE4pICAvLyBfTEVOOiBMZW5ndGgK ICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQgKENSRVMsIFxfU0IuUENJMC5fWTAxLl9N SU4sIEJUTjEpICAvLyBfTUlOOiBNaW5pbXVtIEJhc2UgQWRkcmVzcwogICAgICAgICAgICAgICAg Q3JlYXRlRFdvcmRGaWVsZCAoQ1JFUywgXF9TQi5QQ0kwLl9ZMDEuX01BWCwgQlRYMSkgIC8vIF9N QVg6IE1heGltdW0gQmFzZSBBZGRyZXNzCiAgICAgICAgICAgICAgICBDcmVhdGVEV29yZEZpZWxk IChDUkVTLCBcX1NCLlBDSTAuX1kwMS5fTEVOLCBCVEwxKSAgLy8gX0xFTjogTGVuZ3RoCiAgICAg ICAgICAgICAgICBCVE1OID0gVE9NICgpCiAgICAgICAgICAgICAgICBCVE1YID0gKFBDQkEgLSBP bmUpCiAgICAgICAgICAgICAgICBCVExOID0gKFBDQkEgLSBCVE1OKSAvKiBcX1NCXy5QQ0kwLl9D UlMuQlRNTiAqLwogICAgICAgICAgICAgICAgQlROMSA9IChQQ0JMICsgT25lKQogICAgICAgICAg ICAgICAgQlRMMSA9IChCVFgxIC0gQlROMSkgLyogXF9TQl8uUENJMC5fQ1JTLkJUTjEgKi8KICAg ICAgICAgICAgICAgIEJUTDEgKz0gT25lCiAgICAgICAgICAgICAgICBJZiAoKE1NNjQgPT0gT25l KSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDcmVhdGVRV29yZEZpZWxk IChDUkVTLCBcX1NCLlBDSTAuX1kwMi5fTUlOLCBNMU1OKSAgLy8gX01JTjogTWluaW11bSBCYXNl IEFkZHJlc3MKICAgICAgICAgICAgICAgICAgICBDcmVhdGVRV29yZEZpZWxkIChDUkVTLCBcX1NC LlBDSTAuX1kwMi5fTUFYLCBNMU1YKSAgLy8gX01BWDogTWF4aW11bSBCYXNlIEFkZHJlc3MKICAg ICAgICAgICAgICAgICAgICBDcmVhdGVRV29yZEZpZWxkIChDUkVTLCBcX1NCLlBDSTAuX1kwMi5f TEVOLCBNMUxOKSAgLy8gX0xFTjogTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgTTFNTiA9IEhN QjEgLyogXEhNQjEgKi8KICAgICAgICAgICAgICAgICAgICBNMU1YID0gSE1NMSAvKiBcSE1NMSAq LwogICAgICAgICAgICAgICAgICAgIE0xTE4gPSBITUwxIC8qIFxITUwxICovCiAgICAgICAgICAg ICAgICAgICAgQ3JlYXRlUVdvcmRGaWVsZCAoQ1JFUywgXF9TQi5QQ0kwLl9ZMDMuX01JTiwgTTJN TikgIC8vIF9NSU46IE1pbmltdW0gQmFzZSBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgQ3Jl YXRlUVdvcmRGaWVsZCAoQ1JFUywgXF9TQi5QQ0kwLl9ZMDMuX01BWCwgTTJNWCkgIC8vIF9NQVg6 IE1heGltdW0gQmFzZSBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlUVdvcmRGaWVs ZCAoQ1JFUywgXF9TQi5QQ0kwLl9ZMDMuX0xFTiwgTTJMTikgIC8vIF9MRU46IExlbmd0aAogICAg ICAgICAgICAgICAgICAgIE0yTU4gPSBITUIyIC8qIFxITUIyICovCiAgICAgICAgICAgICAgICAg ICAgTTJNWCA9IEhNTTIgLyogXEhNTTIgKi8KICAgICAgICAgICAgICAgICAgICBNMkxOID0gSE1M MiAvKiBcSE1MMiAqLwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIFJldHVybiAo Q1JFUykgLyogXF9TQl8uUENJMC5DUkVTICovCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERl dmljZSAoTUVNUikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAoX0hJRCwgRWlz YUlkICgiUE5QMEMwMiIpIC8qIFBOUCBNb3RoZXJib2FyZCBSZXNvdXJjZXMgKi8pICAvLyBfSElE OiBIYXJkd2FyZSBJRAogICAgICAgICAgICAgICAgTmFtZSAoQkFSMywgMHhGREEwMDAwMCkKICAg ICAgICAgICAgICAgIE5hbWUgKE1FTTEsIFJlc291cmNlVGVtcGxhdGUgKCkKICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICBNZW1vcnkzMkZpeGVkIChSZWFkV3JpdGUsCiAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgLy8gQWRkcmVzcyBCYXNlCiAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgLy8gQWRkcmVzcyBMZW5n dGgKICAgICAgICAgICAgICAgICAgICAgICAgX1kwNCkKICAgICAgICAgICAgICAgICAgICBNZW1v cnkzMkZpeGVkIChSZWFkV3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAs ICAgICAgICAgLy8gQWRkcmVzcyBCYXNlCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAw MDAsICAgICAgICAgLy8gQWRkcmVzcyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgX1kw NSkKICAgICAgICAgICAgICAgICAgICBNZW1vcnkzMkZpeGVkIChSZWFkV3JpdGUsCiAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgLy8gQWRkcmVzcyBCYXNlCiAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgLy8gQWRkcmVzcyBMZW5ndGgK ICAgICAgICAgICAgICAgICAgICAgICAgX1kwNikKICAgICAgICAgICAgICAgIH0pCiAgICAgICAg ICAgICAgICBNZXRob2QgKF9DUlMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfQ1JTOiBDdXJyZW50 IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg Q3JlYXRlRFdvcmRGaWVsZCAoTUVNMSwgXF9TQi5QQ0kwLk1FTVIuX1kwNC5fQkFTLCBNQjAxKSAg Ly8gX0JBUzogQmFzZSBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVs ZCAoTUVNMSwgXF9TQi5QQ0kwLk1FTVIuX1kwNC5fTEVOLCBNTDAxKSAgLy8gX0xFTjogTGVuZ3Ro CiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoTUVNMSwgXF9TQi5QQ0kwLk1F TVIuX1kwNS5fQkFTLCBNQjAyKSAgLy8gX0JBUzogQmFzZSBBZGRyZXNzCiAgICAgICAgICAgICAg ICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoTUVNMSwgXF9TQi5QQ0kwLk1FTVIuX1kwNS5fTEVOLCBN TDAyKSAgLy8gX0xFTjogTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVs ZCAoTUVNMSwgXF9TQi5QQ0kwLk1FTVIuX1kwNi5fQkFTLCBNQjAzKSAgLy8gX0JBUzogQmFzZSBB ZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoTUVNMSwgXF9TQi5Q Q0kwLk1FTVIuX1kwNi5fTEVOLCBNTDAzKSAgLy8gX0xFTjogTGVuZ3RoCiAgICAgICAgICAgICAg ICAgICAgSWYgKEdQSUMpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICBNQjAxID0gMHhGRUMwMDAwMAogICAgICAgICAgICAgICAgICAgICAgICBNQjAyID0gMHhG RUUwMDAwMAogICAgICAgICAgICAgICAgICAgICAgICBNTDAxID0gMHgxMDAwCiAgICAgICAgICAg ICAgICAgICAgICAgIElmIChcTkFQQykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgTUwwMSArPSAweDEwMDAKICAgICAgICAgICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgTUwwMiA9IDB4MTAwMAogICAgICAgICAgICAg ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgSWYgKChCQVIzICE9IDB4RkZGMDAwMDApKQog ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTUIwMyA9IEJBUjMg LyogXF9TQl8uUENJMC5NRU1SLkJBUjMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgTUwwMyA9 IDB4MDAxMDAwMDAKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIFJl dHVybiAoTUVNMSkgLyogXF9TQl8uUENJMC5NRU1SLk1FTTEgKi8KICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgfQoKICAgICAgICAgICAgT3BlcmF0aW9uUmVnaW9uIChOQVBDLCBQQ0lfQ29u ZmlnLCAweEI4LCAweDA4KQogICAgICAgICAgICBGaWVsZCAoTkFQQywgRFdvcmRBY2MsIE5vTG9j aywgUHJlc2VydmUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5BUFgsICAgMzIsIAog ICAgICAgICAgICAgICAgTkFQRCwgICAzMgogICAgICAgICAgICB9CgogICAgICAgICAgICBNdXRl eCAoTkFQTSwgMHgwMCkKICAgICAgICAgICAgTWV0aG9kIChOQVBFLCAwLCBOb3RTZXJpYWxpemVk KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3F1aXJlIChOQVBNLCAweEZGRkYpCiAg ICAgICAgICAgICAgICBOQVBYID0gMHgxNDMwMDAwMAogICAgICAgICAgICAgICAgTG9jYWwwID0g TkFQRCAvKiBcX1NCXy5QQ0kwLk5BUEQgKi8KICAgICAgICAgICAgICAgIExvY2FsMCAmPSAweEZG RkZGRkVGCiAgICAgICAgICAgICAgICBOQVBEID0gTG9jYWwwCiAgICAgICAgICAgICAgICBSZWxl YXNlIChOQVBNKQogICAgICAgICAgICB9CgogICAgICAgICAgICBOYW1lIChQUjAwLCBQYWNrYWdl ICgweDBBKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIDB4MDAwMUZGRkYsIAogICAgICAgICAg ICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgIExOS0EsIAogICAgICAgICAgICAg ICAgICAgIFplcm8KICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgIFBhY2thZ2Ug KDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgMHgwMDAxRkZGRiwg CiAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICBMTktCLCAKICAg ICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAg ICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIDB4 MDAwMUZGRkYsIAogICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAg IExOS0MsIAogICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgIH0sIAoKICAg ICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgMHgwMDAxRkZGRiwgCiAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAg ICAgICAgICAgICAgTE5LRCwgCiAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAg ICAgfSwgCgogICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAweDAwMDhGRkZGLCAKICAgICAgICAgICAgICAgICAgICBaZXJv LCAKICAgICAgICAgICAgICAgICAgICBMTktELCAKICAgICAgICAgICAgICAgICAgICBaZXJvCiAg ICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIDB4MDAwOEZGRkYsIAogICAgICAgICAgICAg ICAgICAgIE9uZSwgCiAgICAgICAgICAgICAgICAgICAgTE5LRSwgCiAgICAgICAgICAgICAgICAg ICAgWmVybwogICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgUGFja2FnZSAoMHgw NCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAweDAwMTRGRkZGLCAKICAg ICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICBMTktBLCAKICAgICAg ICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICBQ YWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIDB4MDAx NEZGRkYsIAogICAgICAgICAgICAgICAgICAgIE9uZSwgCiAgICAgICAgICAgICAgICAgICAgTE5L QiwgCiAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgfSwgCgogICAgICAg ICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAweDAwMTRGRkZGLCAKICAgICAgICAgICAgICAgICAgICAweDAyLCAKICAgICAgICAgICAg ICAgICAgICBMTktDLCAKICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICB9 LCAKCiAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgIDB4MDAxNEZGRkYsIAogICAgICAgICAgICAgICAgICAgIDB4MDMsIAog ICAgICAgICAgICAgICAgICAgIExOS0QsIAogICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICAgICAgTmFtZSAoQVIwMCwgUGFja2Fn ZSAoMHgwQSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAweDAwMDFGRkZGLCAKICAgICAgICAg ICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAweDEwCiAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICBQYWNrYWdl ICgweDA0KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIDB4MDAwMUZGRkYs IAogICAgICAgICAgICAgICAgICAgIE9uZSwgCiAgICAgICAgICAgICAgICAgICAgWmVybywgCiAg ICAgICAgICAgICAgICAgICAgMHgxMQogICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAg ICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAw eDAwMDFGRkZGLCAKICAgICAgICAgICAgICAgICAgICAweDAyLCAKICAgICAgICAgICAgICAgICAg ICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAweDEyCiAgICAgICAgICAgICAgICB9LCAKCiAg ICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgIDB4MDAwMUZGRkYsIAogICAgICAgICAgICAgICAgICAgIDB4MDMsIAogICAgICAg ICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgIDB4MTMKICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgMHgwMDA4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgWmVy bywgCiAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgMHgxMwog ICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAweDAwMDhGRkZGLCAKICAgICAgICAgICAg ICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAg ICAgIDB4MTQKICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4 MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgMHgwMDE0RkZGRiwgCiAg ICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAg ICAgICAgICAgICAgICAgMHgxMAogICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAg UGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAweDAw MTRGRkZGLCAKICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgIFpl cm8sIAogICAgICAgICAgICAgICAgICAgIDB4MTEKICAgICAgICAgICAgICAgIH0sIAoKICAgICAg ICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgMHgwMDE0RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgMHgwMiwgCiAgICAgICAgICAg ICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgMHgxMgogICAgICAgICAgICAgICAg fSwgCgogICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAweDAwMTRGRkZGLCAKICAgICAgICAgICAgICAgICAgICAweDAzLCAK ICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAweDEzCiAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIE5hbWUgKE5SMDAsIFBhY2th Z2UgKDB4MEEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgMHgwMDAxRkZGRiwgCiAgICAgICAg ICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAg ICAgICAgICAgMHgyOAogICAgICAgICAgICAgICAgfSwgCgogICAgICAgICAgICAgICAgUGFja2Fn ZSAoMHgwNCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAweDAwMDFGRkZG LCAKICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgIFplcm8sIAog ICAgICAgICAgICAgICAgICAgIDB4MjkKICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAg ICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg MHgwMDAxRkZGRiwgCiAgICAgICAgICAgICAgICAgICAgMHgwMiwgCiAgICAgICAgICAgICAgICAg ICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgMHgyQQogICAgICAgICAgICAgICAgfSwgCgog ICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAweDAwMDFGRkZGLCAKICAgICAgICAgICAgICAgICAgICAweDAzLCAKICAgICAg ICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAweDJCCiAgICAgICAgICAg ICAgICB9LCAKCiAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgIDB4MDAwOEZGRkYsIAogICAgICAgICAgICAgICAgICAgIFpl cm8sIAogICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgIDB4MkIK ICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgMHgwMDA4RkZGRiwgCiAgICAgICAgICAg ICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAg ICAgICAweDI0CiAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICBQYWNrYWdlICgw eDA0KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIDB4MDAxNEZGRkYsIAog ICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAg ICAgICAgICAgICAgICAgIDB4MTAKICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAg IFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgMHgw MDE0RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAweDExCiAgICAgICAgICAgICAgICB9LCAKCiAgICAg ICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgIDB4MDAxNEZGRkYsIAogICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAg ICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgIDB4MTIKICAgICAgICAgICAgICAg IH0sIAoKICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgMHgwMDE0RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgMHgwMywg CiAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgMHgxMwogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgICAgICBNZXRob2QgKF9QUlQsIDAs IE5vdFNlcmlhbGl6ZWQpICAvLyBfUFJUOiBQQ0kgUm91dGluZyBUYWJsZQogICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICBJZiAoUElDTSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICBJZiAoXE5BUEMpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKE5SMDApIC8qIFxfU0JfLlBDSTAuTlIwMCAqLwogICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKEFSMDApIC8qIFxfU0JfLlBDSTAuQVIwMCAq LwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg IEVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBSMDAp IC8qIFxfU0JfLlBDSTAuUFIwMCAqLwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9Cgog ICAgICAgICAgICBEZXZpY2UgKEdQUDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5h bWUgKF9BRFIsIDB4MDAwMTAwMDEpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICBN ZXRob2QgKF9QUlcsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFJXOiBQb3dlciBSZXNvdXJjZXMg Zm9yIFdha2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJZiAoKFdLUE0g PT0gT25lKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJl dHVybiAoR1BSVyAoMHgwOCwgMHgwMykpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoR1BSVyAoMHgwOCwgWmVybykpCiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE5hbWUgKFBSMDEsIFBhY2thZ2UgKDB4MDQp CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBMTktBLCAK ICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25l LCAKICAgICAgICAgICAgICAgICAgICAgICAgTE5LQiwgCiAgICAgICAgICAgICAgICAgICAgICAg IFplcm8KICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2Fn ZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4 RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAg ICAgICBMTktDLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIExOS0QsIAogICAgICAgICAg ICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg fSkKICAgICAgICAgICAgICAgIE5hbWUgKEFSMDEsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAg ICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgMHgxMAogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAg ICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAg ICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEKICAgICAg ICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAK ICAgICAgICAgICAgICAgICAgICAgICAgMHgxMgogICAgICAgICAgICAgICAgICAgIH0sIAoKICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgw MywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAg ICAweDEzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAg ICAgICAgIE5hbWUgKE5SMDEsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8s IAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAg MHgxOAogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdl ICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhG RkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAg ICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MTkKICAgICAgICAgICAgICAgICAg ICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgMHgxQQogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAg ICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAg ICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAweDFCCiAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE1ldGhv ZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUlQ6IFBDSSBSb3V0aW5nIFRhYmxlCiAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSWYgKFBJQ00pCiAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBJZiAoXE5BUEMpCiAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoTlIwMSkg LyogXF9TQl8uUENJMC5HUFAwLk5SMDEgKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQVIwMSkgLyogXF9TQl8uUENJMC5HUFAwLkFS MDEgKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICBSZXR1cm4gKFBSMDEpIC8qIFxfU0JfLlBDSTAuR1BQMC5QUjAxICovCiAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERldmlj ZSAoVkdBKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIs IFplcm8pICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgTmFtZSAoRE9TQSwg WmVybykKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9ET1MsIDEsIE5vdFNlcmlhbGl6ZWQp ICAvLyBfRE9TOiBEaXNhYmxlIE91dHB1dCBTd2l0Y2hpbmcKICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgIERPU0EgPSBBcmcwCiAgICAgICAgICAgICAgICAgICAg fQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9ET0QsIDAsIE5vdFNlcmlhbGl6ZWQpICAv LyBfRE9EOiBEaXNwbGF5IE91dHB1dCBEZXZpY2VzCiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBhY2thZ2UgKDB4MDUpCiAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAxMTAsIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDIxMCwgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDAwMDEwMjIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAy MzAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDI0MAogICAgICAgICAgICAg ICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg RGV2aWNlIChMQ0QpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICBOYW1lIChfQURSLCAweDAxMTApICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAg ICAgICAgIE5hbWUgKEJDTEIsIFBhY2thZ2UgKDB4MzQpCiAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NUEsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgzQywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgwNiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4LCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MEEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQywgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDBFLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MTAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDE0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYs IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDFBLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUMsIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgxRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgyNCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2LCAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgyQSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJDLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MkUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMCwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MzQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDM4LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 M0EsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzQywgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDNFLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAsIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDQ0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHg0OCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRBLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NEMsIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHg0RSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUwLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4NTIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1 NCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4NTgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1QSwgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDVDLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4NUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDYyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NjQKICAg ICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChf QkNMLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX0JDTDogQnJpZ2h0bmVzcyBDb250cm9sIExldmVs cwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZXR1cm4gKEJDTEIpIC8qIFxfU0JfLlBDSTAuR1BQMC5WR0FfLkxDRF8uQkNMQiAqLwogICAgICAg ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9CQ00s IDEsIE5vdFNlcmlhbGl6ZWQpICAvLyBfQkNNOiBCcmlnaHRuZXNzIENvbnRyb2wgTWV0aG9kCiAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpdmlk ZSAoKEFyZzAgKiAweEZGKSwgMHg2NCwgTG9jYWwxLCBMb2NhbDApCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBRk43IChMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCUlRM ID0gQXJnMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoK ICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9STVYsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBf Uk1WOiBSZW1vdmFsIFN0YXR1cwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgUmV0dXJuIChaZXJvKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgIH0KCiAgICAgICAgICAgICAgICBEZXZpY2UgKEhEQVUpCiAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgT25lKSAgLy8gX0FEUjogQWRkcmVzcwogICAg ICAgICAgICAgICAgICAgIE1ldGhvZCAoX1JNViwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9STVY6 IFJlbW92YWwgU3RhdHVzCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg fQogICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKEdQUDEpCiAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAwMTAwMDIpICAvLyBfQURSOiBBZGRyZXNz CiAgICAgICAgICAgICAgICBNZXRob2QgKF9QUlcsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFJX OiBQb3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICBJZiAoKFdLUE0gPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgMHgwMykpCiAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgWmVybykpCiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE5hbWUgKFBS MDIsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg UGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAg ICAgICAgICAgICBMTktFLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAg ICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAg ICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgTE5LRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAg ICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAog ICAgICAgICAgICAgICAgICAgICAgICBMTktHLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVy bwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgw eDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZG LCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAg IExOS0gsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKEFSMDIsIFBhY2thZ2Ug KDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgw NCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwg CiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxNAogICAgICAgICAgICAgICAgICAgIH0s IAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAg ICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAg ICAgICAgIDB4MTUKICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAg UGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAg ICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxNgogICAgICAgICAg ICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAg ICAgICAgICAgICAgICAgICAgICAweDE3CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKE5SMDIsIFBhY2thZ2UgKDB4MDQpCiAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAg ICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAg ICAgICAgICAgICAgICAgICAgMHgxQwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAg ICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAg ICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MUQK ICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgw NCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwg CiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxRQogICAgICAgICAgICAgICAgICAgIH0s IAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAg ICAgICAgICAweDFGCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAg ICAgICAgICAgICAgIE1ldGhvZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUlQ6IFBD SSBSb3V0aW5nIFRhYmxlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSWYg KFBJQ00pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBJZiAo XE5BUEMpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoTlIwMikgLyogXF9TQl8uUENJMC5HUFAxLk5SMDIgKi8KICAgICAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQVIwMikgLyog XF9TQl8uUENJMC5HUFAxLkFSMDIgKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBSMDIpIC8qIFxfU0JfLlBDSTAu R1BQMS5QUjAyICovCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgIERldmljZSAoVkdBKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgIE5hbWUgKF9BRFIsIFplcm8pICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAg ICAgICAgTmFtZSAoRE9TQSwgWmVybykKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9ET1Ms IDEsIE5vdFNlcmlhbGl6ZWQpICAvLyBfRE9TOiBEaXNhYmxlIE91dHB1dCBTd2l0Y2hpbmcKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERPU0EgPSBBcmcwCiAg ICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9ET0QsIDAs IE5vdFNlcmlhbGl6ZWQpICAvLyBfRE9EOiBEaXNwbGF5IE91dHB1dCBEZXZpY2VzCiAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBhY2thZ2UgKDB4 MDUpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MDAwMTAxMTAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDIxMCwgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMjIwLCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDAwMTAyMzAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAx MDI0MAogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgRGV2aWNlIChMQ0QpCiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDAxMTApICAvLyBfQURSOiBBZGRyZXNz CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKEJDTEIsIFBhY2thZ2UgKDB4MzQpCiAgICAg ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NUEsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzQywgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQsIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwNiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4 LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEEsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwQywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBFLCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgxMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MTYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDFBLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MUMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRSwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIs IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDI2LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgyQSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDJDLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MkUsIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgzMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQsIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgzNiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4M0EsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzQywg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNFLCAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4NDAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDQ0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 NDYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDRBLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NEMsIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHg0RSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDUwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHg1NCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHg1QSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVDLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4NUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2 MCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4NjQKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAg ICAgICAgICAgTWV0aG9kIChfQkNMLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX0JDTDogQnJpZ2h0 bmVzcyBDb250cm9sIExldmVscwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKEJDTEIpIC8qIFxfU0JfLlBDSTAuR1BQMS5WR0FfLkxD RF8uQkNMQiAqLwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAg ICAgICBNZXRob2QgKF9CQ00sIDEsIE5vdFNlcmlhbGl6ZWQpICAvLyBfQkNNOiBCcmlnaHRuZXNz IENvbnRyb2wgTWV0aG9kCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERpdmlkZSAoKEFyZzAgKiAweEZGKSwgMHg2NCwgTG9jYWwxLCBMb2NhbDAp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRk43IChMb2NhbDApCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCUlRMID0gQXJnMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9STVYsIDAsIE5v dFNlcmlhbGl6ZWQpICAvLyBfUk1WOiBSZW1vdmFsIFN0YXR1cwogICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChaZXJvKQogICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBEZXZpY2UgKEhEQVUpCiAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgT25lKSAgLy8g X0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1JNViwgMCwgTm90U2Vy aWFsaXplZCkgIC8vIF9STVY6IFJlbW92YWwgU3RhdHVzCiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKEdQ UDIpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAwMTAwMDMp ICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICBNZXRob2QgKF9QUlcsIDAsIE5vdFNl cmlhbGl6ZWQpICAvLyBfUFJXOiBQb3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICBJZiAoKFdLUE0gPT0gT25lKSkKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgMHgw MykpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgw OCwgWmVybykpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAg ICAgICAgICAgIE5hbWUgKFBSMDMsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFpl cm8sIAogICAgICAgICAgICAgICAgICAgICAgICBMTktBLCAKICAgICAgICAgICAgICAgICAgICAg ICAgWmVybwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNr YWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg MHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAg ICAgICAgTE5LQiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAg ICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBMTktDLCAKICAgICAgICAg ICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAg ICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAg ICAgICAgICAgICAgICAgICAgIExOS0QsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE5h bWUgKEFSMDMsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAg ICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxMAogICAg ICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQog ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAg ICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybywg CiAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEKICAgICAgICAgICAgICAgICAgICB9LCAKCiAg ICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAg ICAgMHgxMgogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNr YWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg MHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAg ICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAweDEzCiAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKE5SMDMsIFBh Y2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2Fn ZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4 RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAg ICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgyMAogICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAg ICAgICAgICAgICAgIDB4MjEKICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAg ICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAg ICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgyMgogICAg ICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQog ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8s IAogICAgICAgICAgICAgICAgICAgICAgICAweDIzCiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BSVCwgMCwgTm90U2VyaWFs aXplZCkgIC8vIF9QUlQ6IFBDSSBSb3V0aW5nIFRhYmxlCiAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgSWYgKFBJQ00pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICBJZiAoXE5BUEMpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoTlIwMykgLyogXF9TQl8uUENJMC5HUFAyLk5S MDMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBF bHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJldHVybiAoQVIwMykgLyogXF9TQl8uUENJMC5HUFAyLkFSMDMgKi8KICAgICAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNl CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBS MDMpIC8qIFxfU0JfLlBDSTAuR1BQMi5QUjAzICovCiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKEdQUDMpCiAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAwMTAwMDQpICAvLyBf QURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICBNZXRob2QgKF9QUlcsIDAsIE5vdFNlcmlhbGl6 ZWQpICAvLyBfUFJXOiBQb3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICBJZiAoKFdLUE0gPT0gT25lKSkKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgMHgwMykpCiAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgWmVy bykpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgIE5hbWUgKFBSMDQsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAog ICAgICAgICAgICAgICAgICAgICAgICBMTktFLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVy bwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgw eDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZG LCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAg TE5LRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICB9 LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBMTktHLCAKICAgICAgICAgICAgICAg ICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAg ICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAg ICAgICAgICAgICAgIExOS0gsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKEFS MDQsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg UGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAg ICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxNAogICAgICAgICAg ICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAg ICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAg ICAgICAgICAgICAgICAgICAgIDB4MTUKICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAg ICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAog ICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgx NgogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgw eDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZG LCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAg IFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAweDE3CiAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKE5SMDQsIFBhY2thZ2Ug KDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgw NCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwg CiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgyNAogICAgICAgICAgICAgICAgICAgIH0s IAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAg ICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAg ICAgICAgIDB4MjUKICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAg UGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAg ICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgyNgogICAgICAgICAg ICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAg ICAgICAgICAgICAgICAgICAgICAweDI3CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgfSkKICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkg IC8vIF9QUlQ6IFBDSSBSb3V0aW5nIFRhYmxlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgSWYgKFBJQ00pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICAgICBJZiAoXE5BUEMpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJldHVybiAoTlIwNCkgLyogXF9TQl8uUENJMC5HUFAzLk5SMDQgKi8K ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVy biAoQVIwNCkgLyogXF9TQl8uUENJMC5HUFAzLkFSMDQgKi8KICAgICAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBSMDQpIC8q IFxfU0JfLlBDSTAuR1BQMy5QUjA0ICovCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKEdQUDQpCiAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAwMTAwMDUpICAvLyBfQURSOiBB ZGRyZXNzCiAgICAgICAgICAgICAgICBNZXRob2QgKF9QUlcsIDAsIE5vdFNlcmlhbGl6ZWQpICAv LyBfUFJXOiBQb3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICBJZiAoKFdLUE0gPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgMHgwMykpCiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgWmVybykpCiAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE5h bWUgKFBSMDUsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAg ICAgICAgICAgICAgICAgICBMTktBLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAg ICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQog ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAg ICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgTE5LQiwg CiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICB9LCAKCiAg ICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBMTktDLCAKICAgICAgICAgICAgICAgICAgICAg ICAgWmVybwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNr YWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg MHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAg ICAgICAgIExOS0QsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKEFSMDUsIFBh Y2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2Fn ZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4 RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAg ICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxMAogICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAg ICAgICAgICAgICAgIDB4MTEKICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAg ICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAg ICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxMgogICAg ICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQog ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8s IAogICAgICAgICAgICAgICAgICAgICAgICAweDEzCiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKE5SMDUsIFBhY2thZ2UgKDB4MDQp CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAK ICAgICAgICAgICAgICAgICAgICAgICAgMHgyOAogICAgICAgICAgICAgICAgICAgIH0sIAoKICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25l LCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAg IDB4MjkKICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2Fn ZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4 RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAg ICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgyQQogICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAg ICAgICAgICAgICAgICAweDJCCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg fSkKICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9Q UlQ6IFBDSSBSb3V0aW5nIFRhYmxlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgSWYgKFBJQ00pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICBJZiAoXE5BUEMpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJldHVybiAoTlIwNSkgLyogXF9TQl8uUENJMC5HUFA0Lk5SMDUgKi8KICAgICAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQVIw NSkgLyogXF9TQl8uUENJMC5HUFA0LkFSMDUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBSMDUpIC8qIFxfU0Jf LlBDSTAuR1BQNC5QUjA1ICovCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg fQogICAgICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKEdQUDUpCiAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAwMTAwMDYpICAvLyBfQURSOiBBZGRyZXNz CiAgICAgICAgICAgICAgICBNZXRob2QgKF9QUlcsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFJX OiBQb3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICBJZiAoKFdLUE0gPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgMHgwMykpCiAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgWmVybykpCiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE5hbWUgKFBS MDYsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg UGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAg ICAgICAgICAgICBMTktFLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAg ICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAg ICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgTE5LRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAg ICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAog ICAgICAgICAgICAgICAgICAgICAgICBMTktHLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVy bwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgw eDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZG LCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAg IExOS0gsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKEFSMDYsIFBhY2thZ2Ug KDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgw NCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwg CiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxNAogICAgICAgICAgICAgICAgICAgIH0s IAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAg ICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAg ICAgICAgIDB4MTUKICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAg UGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAg ICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxNgogICAgICAgICAg ICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAg ICAgICAgICAgICAgICAgICAgICAweDE3CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKE5SMDYsIFBhY2thZ2UgKDB4MDQpCiAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAg ICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAg ICAgICAgICAgICAgICAgICAgMHgyQwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAg ICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAg ICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MkQK ICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgw NCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwg CiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgyRQogICAgICAgICAgICAgICAgICAgIH0s IAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAg ICAgICAgICAweDJGCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAg ICAgICAgICAgICAgIE1ldGhvZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUlQ6IFBD SSBSb3V0aW5nIFRhYmxlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSWYg KFBJQ00pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBJZiAo XE5BUEMpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoTlIwNikgLyogXF9TQl8uUENJMC5HUFA1Lk5SMDYgKi8KICAgICAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQVIwNikgLyog XF9TQl8uUENJMC5HUFA1LkFSMDYgKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBSMDYpIC8qIFxfU0JfLlBDSTAu R1BQNS5QUjA2ICovCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAg ICAgICAgICB9CgogICAgICAgICAgICBEZXZpY2UgKEdQUDYpCiAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDAwMTAwMDcpICAvLyBfQURSOiBBZGRyZXNzCiAgICAg ICAgICAgICAgICBNZXRob2QgKF9QUlcsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFJXOiBQb3dl ciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICBJZiAoKFdLUE0gPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgMHgwMykpCiAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgwOCwgWmVybykpCiAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE5hbWUgKFBSMDcsIFBh Y2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2Fn ZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4 RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAg ICAgICBMTktBLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgTE5LQiwgCiAgICAgICAgICAg ICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAg ICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAg ICAgICAgICAgICAgICAgICBMTktDLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAg ICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQog ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIExOS0Qs IAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKEFSMDcsIFBhY2thZ2UgKDB4MDQp CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAK ICAgICAgICAgICAgICAgICAgICAgICAgMHgxMAogICAgICAgICAgICAgICAgICAgIH0sIAoKICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25l LCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAg IDB4MTEKICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2Fn ZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4 RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAg ICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxMgogICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAg ICAgICAgICAgICAgICAweDEzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg fSkKICAgICAgICAgICAgICAgIE5hbWUgKE5SMDcsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAg ICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgMHgzMAogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAg ICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAg ICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MzEKICAgICAg ICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAK ICAgICAgICAgICAgICAgICAgICAgICAgMHgzMgogICAgICAgICAgICAgICAgICAgIH0sIAoKICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgw MywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAg ICAweDMzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAg ICAgICAgIE1ldGhvZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUlQ6IFBDSSBSb3V0 aW5nIFRhYmxlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSWYgKFBJQ00p CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBJZiAoXE5BUEMp CiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl dHVybiAoTlIwNykgLyogXF9TQl8uUENJMC5HUFA2Lk5SMDcgKi8KICAgICAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQVIwNykgLyogXF9TQl8u UENJMC5HUFA2LkFSMDcgKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBSMDcpIC8qIFxfU0JfLlBDSTAuR1BQNi5Q UjA3ICovCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAg ICB9CgogICAgICAgICAgICBEZXZpY2UgKEdQMTcpCiAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgIE5hbWUgKF9BRFIsIDB4MDAwODAwMDEpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAg ICAgICBNZXRob2QgKF9QUlcsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFJXOiBQb3dlciBSZXNv dXJjZXMgZm9yIFdha2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJZiAo KFdLUE0gPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoR1BSVyAoMHgxOSwgMHgwMykpCiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgxOSwgWmVybykpCiAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE5hbWUgKFBSMTcsIFBhY2thZ2Ug KDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgw NCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwg CiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBM TktFLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgIH0s IAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAg ICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgTE5LRiwgCiAgICAgICAgICAgICAgICAg ICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAg UGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAg ICAgICAgICAgICBMTktHLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAg ICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIExOS0gsIAogICAg ICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgfSkKICAgICAgICAgICAgICAgIE5hbWUgKEFSMTcsIFBhY2thZ2UgKDB4MDQpCiAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAg ICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAg ICAgICAgICAgICAgICAgICAgMHgxNAogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAg ICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAg ICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUK ICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgw NCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwg CiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBa ZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgxNgogICAgICAgICAgICAgICAgICAgIH0s IAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAg ICAgICAgICAweDE3CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAg ICAgICAgICAgICAgIE5hbWUgKE5SMTcsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAg IFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAg ICAgICAgMHgzNAogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQ YWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAg ICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MzUKICAgICAgICAgICAg ICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAg ICAgICAgICAgICAgICAgICAgMHgzNgogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAg ICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAg ICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAweDM3 CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAg IE1ldGhvZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUlQ6IFBDSSBSb3V0aW5nIFRh YmxlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSWYgKFBJQ00pCiAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBJZiAoXE5BUEMpCiAgICAg ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAo TlIxNykgLyogXF9TQl8uUENJMC5HUDE3Lk5SMTcgKi8KICAgICAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQVIxNykgLyogXF9TQl8uUENJMC5H UDE3LkFSMTcgKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKFBSMTcpIC8qIFxfU0JfLlBDSTAuR1AxNy5QUjE3ICov CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg IERldmljZSAoVkdBKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUg KF9BRFIsIFplcm8pICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgTWV0aG9k IChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEYpCiAgICAgICAgICAg ICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBOYW1lIChET1NBLCBaZXJvKQogICAgICAg ICAgICAgICAgICAgIE1ldGhvZCAoX0RPUywgMSwgTm90U2VyaWFsaXplZCkgIC8vIF9ET1M6IERp c2FibGUgT3V0cHV0IFN3aXRjaGluZwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgRE9TQSA9IEFyZzAKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg ICAgICAgICAgIE1ldGhvZCAoX0RPRCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ET0Q6IERpc3Bs YXkgT3V0cHV0IERldmljZXMKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgIFJldHVybiAoUGFja2FnZSAoMHgwNykKICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDExMCwgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAwMDEwMjEwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAw MTAyMjAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDIzMCwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDAwMDEwMjQwLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDAwMzEwMDAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAzMjAwMAog ICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgRGV2aWNlIChMQ0QpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDAxMTApICAvLyBfQURSOiBBZGRyZXNzCiAgICAg ICAgICAgICAgICAgICAgICAgIE5hbWUgKEJDTEIsIFBhY2thZ2UgKDB4MzQpCiAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NUEsIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgzQywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQsIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwNiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4LCAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEEsIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwQywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBFLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MTAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0LCAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MTYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOCwgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDFBLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MUMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRSwgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDIwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjIsIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDI2LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgsIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgyQSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJDLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MkUsIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgzMCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMyLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MzQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgz NiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDM4LCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4M0EsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzQywgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDNFLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4NDAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MiwgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDQ0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDYsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0OCwgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDRBLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NEMsIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHg0RSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUw LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTIsIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHg1NCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2LCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4NTgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg MHg1QSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVDLCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4NUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2MCwgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDYyLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4NjQKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAg ICAgTWV0aG9kIChfQkNMLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX0JDTDogQnJpZ2h0bmVzcyBD b250cm9sIExldmVscwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZXR1cm4gKEJDTEIpIC8qIFxfU0JfLlBDSTAuR1AxNy5WR0FfLkxDRF8uQkNM QiAqLwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBN ZXRob2QgKF9CQ00sIDEsIE5vdFNlcmlhbGl6ZWQpICAvLyBfQkNNOiBCcmlnaHRuZXNzIENvbnRy b2wgTWV0aG9kCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERpdmlkZSAoKEFyZzAgKiAweEZGKSwgMHg2NCwgTG9jYWwxLCBMb2NhbDApCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBBRk43IChMb2NhbDApCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCUlRMID0gQXJnMAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBPcGVyYXRpb25SZWdpb24gKEdQVU0sIFBD SV9Db25maWcsIDB4MjQsIDB4MDQpCiAgICAgICAgICAgICAgICAgICAgRmllbGQgKEdQVU0sIEJ5 dGVBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICBHUFVCLCAgIDMyCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICBNZXRob2QgKEdCU0EsIDAsIFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBHUFVCIC8qIFxfU0JfLlBDSTAu R1AxNy5WR0FfLkdQVUIgKi8KICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwICY9IDB4RkZG RkZGMDAKICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwICs9IDB4MDEzOAogICAgICAgICAg ICAgICAgICAgICAgICBSZXR1cm4gKExvY2FsMCkKICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoU0NSQSwgU3lzdGVtTWVtb3J5LCBHQlNB ICgpLCAweDA0KQogICAgICAgICAgICAgICAgICAgIEZpZWxkIChTQ1JBLCBCeXRlQWNjLCBOb0xv Y2ssIFByZXNlcnZlKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgT2Zmc2V0ICgweDAxKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEJSSUwsICAgOAogICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBEZXZp Y2UgKFBTUCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lIChfQURS LCAweDAyKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgIERldmljZSAoQUNQKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5h bWUgKF9BRFIsIDB4MDUpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgRGV2aWNlIChBWkFMKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgIE5hbWUgKF9BRFIsIDB4MDYpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgRGV2aWNlIChNUDJDKQogICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDcpICAvLyBfQURSOiBBZGRyZXNzCiAgICAg ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgRGV2aWNlIChYSEMwKQogICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDMpICAvLyBfQURSOiBBZGRy ZXNzCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUzBXLCAwLCBOb3RTZXJpYWxpemVkKSAg Ly8gX1MwVzogUzAgRGV2aWNlIFdha2UgU3RhdGUKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIFJldHVybiAoWmVybykKICAgICAgICAgICAgICAgICAgICB9Cgog ICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BSVywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9Q Ulc6IFBvd2VyIFJlc291cmNlcyBmb3IgV2FrZQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgUmV0dXJuIChHUFJXICgweDE5LCAweDAzKSkKICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIERldmljZSAoSFVCTikKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIFplcm8pICAvLyBf QURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKFVQQzAsIFBhY2thZ2Ug KDB4MDQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRiwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8K ICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAo VVBDTiwgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJv LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAg ICAgICAgICBOYW1lIChVUENDLCBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGLCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAg ICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKFVQQzMsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYsIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAg ICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoVVBDMiwgUGFja2FnZSAo MHgwNCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHhGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybwog ICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChV UENQLCBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweEZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYs IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAg ICAgICAgIE5hbWUgKFBMRE4sIFBhY2thZ2UgKDB4MDEpCiAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlciAoMHgxMCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDAw ICovICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8g Li4uLi4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDA4ICovICAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwICAgLy8gLi4uLi4uLi4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkK ICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoUExEMSwgUGFja2FnZSAoMHgwMSkKICAgICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICgw eDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIDAwMDAgKi8gIDB4MDEsIDB4QzYsIDB4NzIsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsICAvLyAuLnIuLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIDAwMDggKi8gIDB4NjksIDB4MEMsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAgICAvLyBpLi4uLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChQTEQyLCBQYWNr YWdlICgweDAxKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCdWZmZXIgKDB4MTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDAwMCAqLyAgMHgwMSwgMHhDNiwgMHg3Miwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIC4uci4uLi4uCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogMDAwOCAqLyAgMHg3MSwgMHgwQywgMHg4MCwgMHgwMSwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCAgIC8vIHEuLi4uLi4uCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAg IE5hbWUgKFBMRDMsIFBhY2thZ2UgKDB4MDEpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlciAoMHgxMCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDAwICovICAw eDAxLCAweEM2LCAweDcyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gLi5yLi4u Li4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDA4ICovICAweDY5LCAweDBD LCAweDAwLCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDAwICAgLy8gaS4uLi4uLi4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAg ICAgICAgICAgICAgICAgICAgTmFtZSAoUExEQiwgUGFja2FnZSAoMHgwMSkKICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICgweDEwKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIDAwMDAgKi8gIDB4ODEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsICAvLyAuLi4uLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAw MDggKi8gIDB4RTAsIDB4MUUsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgICAv LyAuLi4uLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg ICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UgKEhTMDEpCiAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIs IE9uZSkgIC8vIF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhv ZCAoX1VQQywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9VUEM6IFVTQiBQb3J0IENhcGFiaWxpdGll cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJldHVybiAoVVBDMikgLyogXF9TQl8uUENJMC5HUDE3LlhIQzAuSFVCTi5VUEMyICov CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgTWV0aG9kIChfUExELCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BMRDogUGh5c2ljYWwgTG9j YXRpb24gb2YgRGV2aWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChQTEQxKSAvKiBcX1NCXy5QQ0kwLkdQMTcuWEhD MC5IVUJOLlBMRDEgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlIChIUzAyKQogICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChf QURSLCAweDAyKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAg TWV0aG9kIChfVVBDLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1VQQzogVVNCIFBvcnQgQ2FwYWJp bGl0aWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmV0dXJuIChVUEMyKSAvKiBcX1NCXy5QQ0kwLkdQMTcuWEhDMC5IVUJOLlVQ QzIgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNZXRob2QgKF9QTEQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUExEOiBQaHlzaWNh bCBMb2NhdGlvbiBvZiBEZXZpY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBMRDIpIC8qIFxfU0JfLlBDSTAuR1Ax Ny5YSEMwLkhVQk4uUExEMiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UgKEhTMDMp CiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5h bWUgKF9BRFIsIDB4MDMpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNZXRob2QgKF9VUEMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfVVBDOiBVU0IgUG9ydCBD YXBhYmlsaXRpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKFVQQ0MpIC8qIFxfU0JfLlBDSTAuR1AxNy5YSEMwLkhV Qk4uVVBDQyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE1ldGhvZCAoX1BMRCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QTEQ6IFBo eXNpY2FsIExvY2F0aW9uIG9mIERldmljZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoUExEMykgLyogXF9TQl8uUENJ MC5HUDE3LlhIQzAuSFVCTi5QTEQzICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIERldmljZSAo SFMwNCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgTmFtZSAoX0FEUiwgMHgwNCkgIC8vIF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1ldGhvZCAoX1VQQywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9VUEM6IFVTQiBQ b3J0IENhcGFiaWxpdGllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoVVBDUCkgLyogXF9TQl8uUENJMC5HUDE3LlhI QzAuSFVCTi5VUENQICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUExELCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BM RDogUGh5c2ljYWwgTG9jYXRpb24gb2YgRGV2aWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChQTERCKSAvKiBcX1NC Xy5QQ0kwLkdQMTcuWEhDMC5IVUJOLlBMREIgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UgKEJMVEgpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAo X0FEUiwgT25lKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1ldGhvZCAoX1BMRCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QTEQ6IFBoeXNpY2FsIExv Y2F0aW9uIG9mIERldmljZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChQTERCKSAvKiBcX1NCXy5QQ0kw LkdQMTcuWEhDMC5IVUJOLlBMREIgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2Vy aWFsaXplZCkgIC8vIF9TVEE6IFN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDBGKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgRGV2 aWNlIChTUzAxKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOYW1lIChfQURSLCAweDA1KSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgTWV0aG9kIChfVVBDLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1VQQzog VVNCIFBvcnQgQ2FwYWJpbGl0aWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChVUEMzKSAvKiBcX1NCXy5QQ0kwLkdQ MTcuWEhDMC5IVUJOLlVQQzMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9QTEQsIDAsIE5vdFNlcmlhbGl6ZWQpICAv LyBfUExEOiBQaHlzaWNhbCBMb2NhdGlvbiBvZiBEZXZpY2UKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBMRDEpIC8q IFxfU0JfLlBDSTAuR1AxNy5YSEMwLkhVQk4uUExEMSAqLwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg ICBEZXZpY2UgKFNTMDIpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDYpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9VUEMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBf VVBDOiBVU0IgUG9ydCBDYXBhYmlsaXRpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFVQQzMpIC8qIFxfU0JfLlBD STAuR1AxNy5YSEMwLkhVQk4uVVBDMyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BMRCwgMCwgTm90U2VyaWFsaXpl ZCkgIC8vIF9QTEQ6IFBoeXNpY2FsIExvY2F0aW9uIG9mIERldmljZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoUExE MikgLyogXF9TQl8uUENJMC5HUDE3LlhIQzAuSFVCTi5QTEQyICovCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg ICAgICAgIERldmljZSAoU1MwMykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgMHgwNykgIC8vIF9BRFI6IEFkZHJlc3MKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1VQQywgMCwgTm90U2VyaWFsaXplZCkg IC8vIF9VUEM6IFVTQiBQb3J0IENhcGFiaWxpdGllcwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoVVBDQykgLyogXF9T Ql8uUENJMC5HUDE3LlhIQzAuSFVCTi5VUENDICovCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUExELCAwLCBOb3RTZXJp YWxpemVkKSAgLy8gX1BMRDogUGh5c2ljYWwgTG9jYXRpb24gb2YgRGV2aWNlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJu IChQTEQzKSAvKiBcX1NCXy5QQ0kwLkdQMTcuWEhDMC5IVUJOLlBMRDMgKi8KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgICAgICAgICAgRGV2aWNlIChTUzA0KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDA4KSAgLy8gX0FEUjogQWRkcmVz cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfVVBDLCAwLCBOb3RTZXJpYWxp emVkKSAgLy8gX1VQQzogVVNCIFBvcnQgQ2FwYWJpbGl0aWVzCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChVUEMwKSAv KiBcX1NCXy5QQ0kwLkdQMTcuWEhDMC5IVUJOLlVQQzAgKi8KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9QTEQsIDAsIE5v dFNlcmlhbGl6ZWQpICAvLyBfUExEOiBQaHlzaWNhbCBMb2NhdGlvbiBvZiBEZXZpY2UKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZXR1cm4gKFBMRE4pIC8qIFxfU0JfLlBDSTAuR1AxNy5YSEMwLkhVQk4uUExETiAqLwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERldmljZSAo WEhDMSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAw eDA0KSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1MwVywg MCwgTm90U2VyaWFsaXplZCkgIC8vIF9TMFc6IFMwIERldmljZSBXYWtlIFN0YXRlCiAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAg ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9QUlcsIDAsIE5v dFNlcmlhbGl6ZWQpICAvLyBfUFJXOiBQb3dlciBSZXNvdXJjZXMgZm9yIFdha2UKICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoR1BSVyAoMHgxOSwg MHgwMykpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBEZXZpY2Ug KEhVQk4pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1l IChfQURSLCBaZXJvKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgICAgICAgICBO YW1lIChVUENOLCBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg IFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAg ICAgICAgICAgICAgIE5hbWUgKFVQQ1AsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYsIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHhGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICAgICAg fSkKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoUExETiwgUGFja2FnZSAoMHgwMSkKICAg ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy ICgweDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIDAwMDAgKi8gIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsICAvLyAuLi4uLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIDAwMDggKi8gIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAgICAvLyAuLi4uLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChQTERSLCBQ YWNrYWdlICgweDAxKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBCdWZmZXIgKDB4MTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDAwMCAqLyAgMHg4MSwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIC4uLi4uLi4uCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogMDAwOCAqLyAgMHhCMCwgMHgxRSwgMHgwMCwgMHgwMSwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAgIC8vIC4uLi4uLi4uCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAg ICAgIE5hbWUgKFBMREgsIFBhY2thZ2UgKDB4MDEpCiAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlciAoMHgxMCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDAwICov ICAweDgyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gLi4u Li4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDA4ICovICAweDAwLCAw eDAwLCAweDgwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwICAgLy8gLi4uLi4uLi4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAg ICAgICAgICAgICAgICAgICAgICAgTmFtZSAoUExEQywgUGFja2FnZSAoMHgwMSkKICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICgweDE0 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIDAwMDAgKi8gIDB4ODIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsICAvLyAuLi4uLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IDAwMDggKi8gIDB4MjQsIDB4MDEsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs ICAvLyAkLi4uLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAwMTAgKi8g IDB4ODgsIDB4RkYsIDB4QjgsIDB4RkYgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuLi4u CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0p CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKFBMREYsIFBhY2thZ2UgKDB4MDEpCiAgICAg ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlciAo MHgxMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiAwMDAwICovICAweDgxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLCAgLy8gLi4uLi4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiAwMDA4ICovICAweEUwLCAweDFFLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAweDAwLCAw eDAwICAgLy8gLi4uLi4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlIChIUzAxKQog ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1l IChfQURSLCBPbmUpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNZXRob2QgKF9VUEMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfVVBDOiBVU0IgUG9ydCBDYXBh YmlsaXRpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZXR1cm4gKFVQQ1ApIC8qIFxfU0JfLlBDSTAuR1AxNy5YSEMxLkhVQk4u VVBDUCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1ldGhvZCAoX1BMRCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QTEQ6IFBoeXNp Y2FsIExvY2F0aW9uIG9mIERldmljZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoUExEUikgLyogXF9TQl8uUENJMC5H UDE3LlhIQzEuSFVCTi5QTERSICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlIChDQVJEKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIE9u ZSkgIC8vIF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRo b2QgKF9VUEMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfVVBDOiBVU0IgUG9ydCBDYXBhYmlsaXRp ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJldHVybiAoVVBDUCkgLyogXF9TQl8uUENJMC5HUDE3LlhIQzEuSFVC Ti5VUENQICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9QTEQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBf UExEOiBQaHlzaWNhbCBMb2NhdGlvbiBvZiBEZXZpY2UKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoUExE UikgLyogXF9TQl8uUENJMC5HUDE3LlhIQzEuSFVCTi5QTERSICovCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2Qg KF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl dHVybiAoMHgwRikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg ICAgICAgICAgICAgIE5hbWUgKFhVUEMsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYsIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHhGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplcm8KICAgICAgICAgICAgICAgICAgICAgICAg fSkKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoWFBMRCwgQnVmZmVyICgweDEwKQogICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDAw ICovICAweDgxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8g Li4uLi4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAwMDggKi8gIDB4MzAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgICAvLyAwLi4uLi4uLgogICAg ICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UgKEhT MDIpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9wZXJhdGlvblJlZ2lvbiAoQk9JRCwgU3lzdGVtTWVtb3J5LCAweEZFRDgxNjE0LCAweDA0KQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgKEJPSUQsIEJ5dGVBY2MsIE5vTG9jaywg UHJlc2VydmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT2Zmc2V0ICgweDAyKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSUQzViwgICAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgMHgwMikgIC8vIF9BRFI6IEFkZHJlc3MKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1VQQywgMCwgTm90U2VyaWFsaXplZCkg IC8vIF9VUEM6IFVTQiBQb3J0IENhcGFiaWxpdGllcwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoVVBDUCkgLyogXF9T Ql8uUENJMC5HUDE3LlhIQzEuSFVCTi5VUENQICovCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUExELCAwLCBOb3RTZXJp YWxpemVkKSAgLy8gX1BMRDogUGh5c2ljYWwgTG9jYXRpb24gb2YgRGV2aWNlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJu IChQTERIKSAvKiBcX1NCXy5QQ0kwLkdQMTcuWEhDMS5IVUJOLlBMREggKi8KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UgKEdI VUIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTmFtZSAoX0FEUiwgT25lKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1VQQywgMCwgU2VyaWFsaXplZCkgIC8vIF9VUEM6 IFVTQiBQb3J0IENhcGFiaWxpdGllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChYVVBDKSAvKiBcX1NC Xy5QQ0kwLkdQMTcuWEhDMS5IVUJOLlhVUEMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BMRCwgMCwg U2VyaWFsaXplZCkgIC8vIF9QTEQ6IFBoeXNpY2FsIExvY2F0aW9uIG9mIERldmljZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUmV0dXJuIChYUExEKSAvKiBcX1NCXy5QQ0kwLkdQMTcuWEhDMS5IVUJOLlhQTEQgKi8K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERldmljZSAoQ0FNQSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIE9uZSkgIC8v IF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9k IChfUExELCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BMRDogUGh5c2ljYWwgTG9jYXRpb24gb2Yg RGV2aWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoUExEQykgLyogXF9TQl8uUENJMC5H UDE3LlhIQzEuSFVCTi5QTERDICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwg Tm90U2VyaWFsaXplZCkgIC8vIF9TVEE6IFN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1 cm4gKDB4MEYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERldmljZSAoRkdQVCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9BRFIsIDB4MDIpICAvLyBfQURSOiBB ZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1BMRCwg MCwgTm90U2VyaWFsaXplZCkgIC8vIF9QTEQ6IFBoeXNpY2FsIExvY2F0aW9uIG9mIERldmljZQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBMREYpIC8qIFxfU0JfLlBDSTAuR1AxNy5YSEMx LkhVQk4uUExERiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlh bGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChJRDNWID09 IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoWmVybykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEYpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkg IC8vIF9TVEE6IFN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChJRDNWID09IFplcm8pKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgw RikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlIChDQU1CKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE5hbWUgKF9BRFIsIDB4MDIpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTWV0aG9kIChfUExELCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BMRDogUGh5 c2ljYWwgTG9jYXRpb24gb2YgRGV2aWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBMREMpIC8qIFxf U0JfLlBDSTAuR1AxNy5YSEMxLkhVQk4uUExEQyAqLwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfU1RBLCAw LCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKElEM1Yg PT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwRikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUmV0dXJuIChaZXJvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgICAgICAgICAgRGV2aWNlIChTUzAxKQogICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDAzKSAgLy8gX0FE UjogQWRkcmVzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfVVBDLCAwLCBO b3RTZXJpYWxpemVkKSAgLy8gX1VQQzogVVNCIFBvcnQgQ2FwYWJpbGl0aWVzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJu IChVUENOKSAvKiBcX1NCXy5QQ0kwLkdQMTcuWEhDMS5IVUJOLlVQQ04gKi8KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9Q TEQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUExEOiBQaHlzaWNhbCBMb2NhdGlvbiBvZiBEZXZp Y2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKFBMRE4pIC8qIFxfU0JfLlBDSTAuR1AxNy5YSEMxLkhVQk4uUExETiAq LwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9Cgog ICAgICAgICAgICBEZXZpY2UgKEdQMTgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5h bWUgKF9BRFIsIDB4MDAwODAwMDIpICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgICAgICBN ZXRob2QgKF9QUlcsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFJXOiBQb3dlciBSZXNvdXJjZXMg Zm9yIFdha2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJZiAoKFdLUE0g PT0gT25lKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJl dHVybiAoR1BSVyAoMHgwOCwgMHgwMykpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoR1BSVyAoMHgwOCwgWmVybykpCiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE5hbWUgKFBSMTgsIFBhY2thZ2UgKDB4MDQp CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBMTktHLCAK ICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAgICAgIH0sIAoKICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25l LCAKICAgICAgICAgICAgICAgICAgICAgICAgTE5LSCwgCiAgICAgICAgICAgICAgICAgICAgICAg IFplcm8KICAgICAgICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2Fn ZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4 RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAg ICAgICBMTktFLCAKICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAgICAg ICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMywgCiAgICAgICAgICAgICAgICAgICAgICAgIExOS0YsIAogICAgICAgICAg ICAgICAgICAgICAgICBaZXJvCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg fSkKICAgICAgICAgICAgICAgIE5hbWUgKEFSMTgsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAg ICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgMHgxNgogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAg ICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAg ICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcKICAgICAg ICAgICAgICAgICAgICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAK ICAgICAgICAgICAgICAgICAgICAgICAgMHgxNAogICAgICAgICAgICAgICAgICAgIH0sIAoKICAg ICAgICAgICAgICAgICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgw MywgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAg ICAweDE1CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAg ICAgICAgIE5hbWUgKE5SMTgsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAgICAgICAgIFplcm8s IAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAg MHgzNgogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAgICAgICBQYWNrYWdl ICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgMHhG RkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAg ICAgWmVybywgCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MzcKICAgICAgICAgICAgICAgICAg ICB9LCAKCiAgICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwNCkKICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRiwgCiAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDIsIAogICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgMHgzNAogICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAgICAgICAg ICAgICBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgMHhGRkZGLCAKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMywgCiAgICAgICAg ICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAweDM1CiAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIE1ldGhv ZCAoX1BSVCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUlQ6IFBDSSBSb3V0aW5nIFRhYmxlCiAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSWYgKFBJQ00pCiAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBJZiAoXE5BUEMpCiAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoTlIxOCkg LyogXF9TQl8uUENJMC5HUDE4Lk5SMTggKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQVIxOCkgLyogXF9TQl8uUENJMC5HUDE4LkFS MTggKi8KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICBSZXR1cm4gKFBSMTgpIC8qIFxfU0JfLlBDSTAuR1AxOC5QUjE4ICovCiAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERldmlj ZSAoU0FUQSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lIChfQURS LCBaZXJvKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9 CgogICAgICAgICAgICBEZXZpY2UgKEhQRVQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg IE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDAxMDMiKSAvKiBIUEVUIFN5c3RlbSBUaW1lciAqLykg IC8vIF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5v dFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICBJZiAoKEhQRU4gPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIElmICgoT1NUQiA+PSAweDQwKSkKICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDBGKQogICAgICAg ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBIUEVOID0gWmVybwog ICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgIFJldHVybiAoT25lKQogICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9DUlM6IEN1 cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICBOYW1lIChCVUYwLCBSZXNvdXJjZVRlbXBsYXRlICgpCiAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICBJUlFOb0ZsYWdzICgpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7MH0KICAgICAgICAgICAgICAgICAgICAgICAgSVJRTm9GbGFncyAoKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgezh9CiAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9y eTMyRml4ZWQgKFJlYWRPbmx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRUQwMDAw MCwgICAgICAgICAvLyBBZGRyZXNzIEJhc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDAwMDA0MDAsICAgICAgICAgLy8gQWRkcmVzcyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9ZMDcpCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICBD cmVhdGVEV29yZEZpZWxkIChCVUYwLCBcX1NCLlBDSTAuSFBFVC5fQ1JTLl9ZMDcuX0JBUywgSFBF QikgIC8vIF9CQVM6IEJhc2UgQWRkcmVzcwogICAgICAgICAgICAgICAgICAgIExvY2FsMCA9IDB4 RkVEMDAwMDAKICAgICAgICAgICAgICAgICAgICBIUEVCID0gKExvY2FsMCAmIDB4RkZGRkZDMDAp CiAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChCVUYwKSAvKiBcX1NCXy5QQ0kwLkhQRVQuX0NS Uy5CVUYwICovCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERl dmljZSAoU01CUykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAoX0FEUiwgMHgw MDE0MDAwMCkgIC8vIF9BRFI6IEFkZHJlc3MKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRGV2 aWNlIChMUEMwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lIChfQURSLCAweDAw MTQwMDAzKSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICAgICAgRGV2aWNlIChETUFDKQog ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAo IlBOUDAyMDAiKSAvKiBQQy1jbGFzcyBETUEgQ29udHJvbGxlciAqLykgIC8vIF9ISUQ6IEhhcmR3 YXJlIElECiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAo KSAgLy8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMDAwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDAwMDAsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25t ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwLCAgICAgICAgICAgICAgIC8vIExl bmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAg ICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODEsICAgICAg ICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA4 MSwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MEYsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDBDMCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11bQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEMwLCAgICAgICAgICAgICAvLyBSYW5nZSBN YXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8v IEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMCwgICAgICAgICAgICAg ICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAg ICAgICAgICAgRE1BIChDb21wYXRpYmlsaXR5LCBOb3RCdXNNYXN0ZXIsIFRyYW5zZmVyOF8xNiwg KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgezR9CiAgICAgICAgICAgICAgICAgICAgfSkK ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBEZXZpY2UgKENPUFIpCiAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMEMw NCIpIC8qIHg4Ny1jb21wYXRpYmxlIEZsb2F0aW5nIFBvaW50IFByb2Nlc3NpbmcgVW5pdCAqLykg IC8vIF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0NSUywgUmVz b3VyY2VUZW1wbGF0ZSAoKSAgLy8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEYwLCAgICAgICAgICAgICAvLyBSYW5nZSBN aW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwRjAsICAgICAgICAgICAgIC8v IFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAg ICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBGLCAgICAg ICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgICAgICAgICAgICBJUlFOb0ZsYWdzICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7MTN9CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICBEZXZpY2UgKFBJQykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICBOYW1lIChfSElELCBFaXNhSWQgKCJQTlAwMDAwIikgLyogODI1OS1jb21wYXRpYmxlIFByb2dy YW1tYWJsZSBJbnRlcnJ1cHQgQ29udHJvbGxlciAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAg ICAgICAgICAgICAgICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSAgLy8gX0NS UzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMDIwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAwMjAsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBJTyAoRGVj b2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwQTAsICAgICAgICAgICAgIC8v IFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBBMCwgICAgICAg ICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwg ICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDIsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAp CiAgICAgICAgICAgICAgICAgICAgICAgIElSUU5vRmxhZ3MgKCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsyfQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9Cgog ICAgICAgICAgICAgICAgRGV2aWNlIChSVEMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgTmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMEIwMCIpIC8qIEFUIFJlYWwtVGltZSBD bG9jayAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgICAgICAgICAgTmFtZSAo QlVGMCwgUmVzb3VyY2VUZW1wbGF0ZSAoKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgwMDcwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDAwNzAsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDAyLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAg ICAgICAgICAgTmFtZSAoQlVGMSwgUmVzb3VyY2VUZW1wbGF0ZSAoKQogICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMDcwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDAwNzAsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGlt dW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxp Z25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAgICAgICAgICAgICAgIC8v IExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAg ICAgICBJUlFOb0ZsYWdzICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7OH0KICAgICAg ICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgU2Vy aWFsaXplZCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIElmICgoSFBFTiA9PSBPbmUpKQogICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4g KEJVRjApIC8qIFxfU0JfLlBDSTAuTFBDMC5SVENfLkJVRjAgKi8KICAgICAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChCVUYxKSAvKiBcX1NCXy5Q Q0kwLkxQQzAuUlRDXy5CVUYxICovCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgIERldmljZSAoU1BLUikKICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICBOYW1lIChfSElELCBFaXNhSWQgKCJQTlAwODAwIikgLyogTWljcm9z b2Z0IFNvdW5kIFN5c3RlbSBDb21wYXRpYmxlIERldmljZSAqLykgIC8vIF9ISUQ6IEhhcmR3YXJl IElECiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSAg Ly8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMDYxLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDAwNjEsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8vIExlbmd0 aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIH0pCiAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgRGV2aWNlIChUTVIpCiAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMDEwMCIp IC8qIFBDLWNsYXNzIFN5c3RlbSBUaW1lciAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAgICAg ICAgICAgICAgICAgICAgTmFtZSAoQlVGMCwgUmVzb3VyY2VUZW1wbGF0ZSAoKQogICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMDQwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVt CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAsICAgICAgICAgICAgIC8vIFJhbmdl IE1heGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAg Ly8gQWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0LCAgICAgICAgICAg ICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAg ICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgTmFtZSAoQlVGMSwgUmVzb3VyY2VUZW1wbGF0 ZSAoKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERl Y29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDQwLCAgICAgICAgICAgICAv LyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAsICAgICAg ICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEs ICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDA0LCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAg KQogICAgICAgICAgICAgICAgICAgICAgICBJUlFOb0ZsYWdzICgpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7MH0KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAg IE1ldGhvZCAoX0NSUywgMCwgU2VyaWFsaXplZCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2Ug U2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIElm ICgoSFBFTiA9PSBPbmUpKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZXR1cm4gKEJVRjApIC8qIFxfU0JfLlBDSTAuTFBDMC5UTVJfLkJVRjAg Ki8KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgUmV0 dXJuIChCVUYxKSAvKiBcX1NCXy5QQ0kwLkxQQzAuVE1SXy5CVUYxICovCiAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERldmljZSAoS0JDMCkK ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lIChfSElELCBFaXNhSWQg KCJGVUo3NDAxIikpICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICAgICAgICAgIE5h bWUgKF9DSUQsIEVpc2FJZCAoIlBOUDAzMDMiKSAvKiBJQk0gRW5oYW5jZWQgS2V5Ym9hcmQgKDEw MS8xMDIta2V5LCBQUy8yIE1vdXNlKSAqLykgIC8vIF9DSUQ6IENvbXBhdGlibGUgSUQKICAgICAg ICAgICAgICAgICAgICBOYW1lIChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlICgpICAvLyBfQ1JTOiBD dXJyZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAwNjAsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDA2MCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUx NiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA2NCwgICAgICAgICAgICAgLy8gUmFu Z2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDY0LCAgICAgICAgICAg ICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAg ICAgICAgICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwg ICAgICAgICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAg ICAgICAgICAgICAgICAgICAgICAgSVJRTm9GbGFncyAoKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgezF9CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICBEZXZpY2UgKFNZU1IpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgTmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMEMwMiIpIC8qIFBOUCBNb3RoZXJib2FyZCBS ZXNvdXJjZXMgKi8pICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICAgICAgICAgIE5h bWUgKF9VSUQsIE9uZSkgIC8vIF9VSUQ6IFVuaXF1ZSBJRAogICAgICAgICAgICAgICAgICAgIE5h bWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2Ug U2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIElP IChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAxMCwgICAgICAgICAg ICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDEwLCAg ICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgxMCwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMDcyLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDAwNzIsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGlt dW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxp Z25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyLCAgICAgICAgICAgICAgIC8v IExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAg ICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODAsICAg ICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDA4MCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDBCMCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11 bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMEIwLCAgICAgICAgICAgICAvLyBSYW5n ZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAg IC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgICAgICAgICAg ICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAg ICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw MDkyLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAwOTIsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBJTyAoRGVjb2RlMTYs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0MDAsICAgICAgICAgICAgIC8vIFJhbmdl IE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQwMCwgICAgICAgICAgICAg Ly8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAg ICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RDAsICAg ICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAg ICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDREMCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwNEQwLCAgICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERl Y29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNEQ2LCAgICAgICAgICAgICAv LyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0RDYsICAgICAg ICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEs ICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAxLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAg KQogICAgICAgICAgICAgICAgICAgICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDBDMDAsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MEMwMCwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1l bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIsICAgICAgICAgICAgICAgLy8gTGVu Z3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAg IElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEMxNCwgICAgICAg ICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQzE0 LCAgICAgICAgICAgICAvLyBSYW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDAxLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwQzUwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDNTAsICAgICAgICAgICAgIC8vIFJhbmdlIE1h eGltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8g QWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzLCAgICAgICAgICAgICAg IC8vIExlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAg ICAgICAgICBJTyAoRGVjb2RlMTYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDNkMs ICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MEM2QywgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBBbGlnbm1lbnQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gTGVuZ3RoCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIElPIChEZWNvZGUxNiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEM2RiwgICAgICAgICAgICAgLy8gUmFuZ2UgTWlu aW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQzZGLCAgICAgICAgICAgICAvLyBS YW5nZSBNYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxLCAgICAgICAgICAg ICAgIC8vIEFsaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAg ICAgICAgICAvLyBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAg ICAgICAgICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgwQ0QwLCAgICAgICAgICAgICAvLyBSYW5nZSBNaW5pbXVtCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDBDRDAsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDBDLCAgICAgICAgICAgICAgIC8vIExlbmd0aAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgRGV2aWNlIChNRU0pCiAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgTmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMEMwMSIpIC8qIFN5c3Rl bSBCb2FyZCAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgICAgICAgICAgTmFt ZSAoTVNSQywgUmVzb3VyY2VUZW1wbGF0ZSAoKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgTWVtb3J5MzJGaXhlZCAoUmVhZE9ubHksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDAwMEUwMDAwLCAgICAgICAgIC8vIEFkZHJlc3MgQmFzZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMDAyMDAwMCwgICAgICAgICAvLyBBZGRyZXNzIExlbmd0 aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICBN ZW1vcnkzMkZpeGVkIChSZWFkV3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZG RjAwMDAwLCAgICAgICAgIC8vIEFkZHJlc3MgQmFzZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMDEwMDAwMCwgICAgICAgICAvLyBBZGRyZXNzIExlbmd0aAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgX1kwOCkKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAg ICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVz b3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgIENyZWF0ZURXb3JkRmllbGQgKE1TUkMsIFxfU0IuUENJMC5MUEMwLk1FTS5fWTA4Ll9MRU4s IFBTSVopICAvLyBfTEVOOiBMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlRFdv cmRGaWVsZCAoTVNSQywgXF9TQi5QQ0kwLkxQQzAuTUVNLl9ZMDguX0JBUywgUEJBUykgIC8vIF9C QVM6IEJhc2UgQWRkcmVzcwogICAgICAgICAgICAgICAgICAgICAgICBQU0laID0gUk9NUyAvKiBc Uk9NUyAqLwogICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSAoUk9NUyAtIE9uZSkKICAg ICAgICAgICAgICAgICAgICAgICAgUEJBUyA9IChPbmVzIC0gTG9jYWwwKQogICAgICAgICAgICAg ICAgICAgICAgICBSZXR1cm4gKE1TUkMpIC8qIFxfU0JfLlBDSTAuTFBDMC5NRU1fLk1TUkMgKi8K ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg U2NvcGUgKFwpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoRUNP TiwgT25lKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERldmljZSAoRUMwKQog ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAo IlBOUDBDMDkiKSAvKiBFbWJlZGRlZCBDb250cm9sbGVyIERldmljZSAqLykgIC8vIF9ISUQ6IEhh cmR3YXJlIElECiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX1VJRCwgT25lKSAgLy8gX1VJRDog VW5pcXVlIElECiAgICAgICAgICAgICAgICAgICAgTmFtZSAoRUNBViwgWmVybykKICAgICAgICAg ICAgICAgICAgICBOYW1lIChYWDExLCBCdWZmZXIgKDB4MDcpe30pCiAgICAgICAgICAgICAgICAg ICAgTXV0ZXggKExGQ00sIDB4MDApCiAgICAgICAgICAgICAgICAgICAgTXV0ZXggKEVDTVQsIDB4 MDApCiAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0dQRSwgMHgwMykgIC8vIF9HUEU6IEdlbmVy YWwgUHVycG9zZSBFdmVudHMKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9DUlMsIDAsIE5v dFNlcmlhbGl6ZWQpICAvLyBfQ1JTOiBDdXJyZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChCRkZSLCBSZXNvdXJj ZVRlbXBsYXRlICgpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElPIChEZWNvZGUxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAwNjIsICAgICAgICAgICAgIC8vIFJhbmdlIE1pbmltdW0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAwNjIsICAgICAgICAgICAgIC8vIFJhbmdlIE1heGltdW0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDAwLCAgICAgICAgICAgICAgIC8vIEFsaWdubWVudAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEsICAgICAgICAgICAgICAgLy8gTGVu Z3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU8gKERlY29kZTE2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDA2NiwgICAgICAgICAgICAgLy8gUmFuZ2UgTWluaW11bQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDA2NiwgICAgICAgICAgICAgLy8gUmFuZ2UgTWF4aW11bQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDAsICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwgICAgICAgICAgICAgICAvLyBMZW5n dGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAg ICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQkZGUikgLyogXF9TQl8uUENJ MC5MUEMwLkVDMF8uX0NSUy5CRkZSICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0 dXMKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAo MHgwRikKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE9wZXJhdGlv blJlZ2lvbiAoRVJBTSwgRW1iZWRkZWRDb250cm9sLCBaZXJvLCAweEZGKQogICAgICAgICAgICAg ICAgICAgIEZpZWxkIChFUkFNLCBCeXRlQWNjLCBMb2NrLCBQcmVzZXJ2ZSkKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZDTUQsICAgOCwgCiAgICAgICAgICAg ICAgICAgICAgICAgIE9mZnNldCAoMHg2MCksIAogICAgICAgICAgICAgICAgICAgICAgICBTTVBS LCAgIDgKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE9wZXJhdGlv blJlZ2lvbiAoRVJBWCwgU3lzdGVtTWVtb3J5LCAweEZGMDBENDAwLCAweEZGKQogICAgICAgICAg ICAgICAgICAgIEZpZWxkIChFUkFYLCBCeXRlQWNjLCBMb2NrLCBQcmVzZXJ2ZSkKICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHgwMSksIAogICAg ICAgICAgICAgICAgICAgICAgICBWREFULCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBW U1RBLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4MDYpLCAKICAgICAg ICAgICAgICAgICAgICAgICAgRkFOUywgICA4LCAKICAgICAgICAgICAgICAgICAgICAgICAgQlVT RywgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQkxFRywgICAxLCAKICAgICAgICAgICAg ICAgICAgICAgICAgQkFURiwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQk5TTSwgICAx LCAKICAgICAgICAgICAgICAgICAgICAgICAgQlRTVCwgICAxLCAKICAgICAgICAgICAgICAgICAg ICAgICAgQkJBRCwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQVVUTywgICAxLCAKICAg ICAgICAgICAgICAgICAgICAgICAgRkNIRywgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAg QUJUTCwgICA4LCAKICAgICAgICAgICAgICAgICAgICAgICAgREJUTCwgICA4LCAKICAgICAgICAg ICAgICAgICAgICAgICAgRURDQywgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQUxTQywg ICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQ0RNQiwgICAxLCAKICAgICAgICAgICAgICAg ICAgICAgICAgQ0NTQiwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQlRTTSwgICAxLCAK ICAgICAgICAgICAgICAgICAgICAgICAgQlRDTSwgICAxLCAKICAgICAgICAgICAgICAgICAgICAg ICAgTEJUTSwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQ1NCTSwgICAxLCAKICAgICAg ICAgICAgICAgICAgICAgICAgU0dTVCwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgSERN SSwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgSFlCRCwgICAxLCAKICAgICAgICAgICAg ICAgICAgICAgICAgU1dTVCwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgRVZOVCwgICAx LCAKICAgICAgICAgICAgICAgICAgICAgICAgRENSRiwgICAxLCAKICAgICAgICAgICAgICAgICAg ICAgICAgQ09MUiwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgU0dDTiwgICAxLCAKICAg ICAgICAgICAgICAgICAgICAgICAgT0RQTywgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAg RU9ERCwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgT0RQSywgICAxLCAKICAgICAgICAg ICAgICAgICAgICAgICAgQ01FWCwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQ01PTiwg ICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgU09ERCwgICAxLCAKICAgICAgICAgICAgICAg ICAgICAgICAgT0RGQiwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgRU9EUywgICAxLCAK ICAgICAgICAgICAgICAgICAgICAgICAgUlRNUCwgICA4LCAKICAgICAgICAgICAgICAgICAgICAg ICAgVlRNUCwgICA4LCAKICAgICAgICAgICAgICAgICAgICAgICAgQUZDQywgICA4LCAKICAgICAg ICAgICAgICAgICAgICAgICAgUElORiwgICAzLCAKICAgICAgICAgICAgICAgICAgICAgICAgU1VQ UiwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgR1RNUCwgICAxLCAKICAgICAgICAgICAg ICAgICAgICAgICAgUVVJVCwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgTFMzNSwgICAx LCAKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweDExKSwgCiAgICAgICAgICAgICAg ICAgICAgICAgIFJNQlQsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFJTQlQsICAgMSwg CiAgICAgICAgICAgICAgICAgICAgICAgIFZUWVAsICAgMiwgCiAgICAgICAgICAgICAgICAgICAg ICAgIE9mZnNldCAoMHgxMiksIAogICAgICAgICAgICAgICAgICAgICAgICBGVVNMLCAgIDgsIAog ICAgICAgICAgICAgICAgICAgICAgICBGVVNILCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAg ICBGV0JULCAgIDY0LCAKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweDFEKSwgCiAg ICAgICAgICAgICAgICAgICAgICAgIFFVSUUsICAgOCwgCiAgICAgICAgICAgICAgICAgICAgICAg IE9mZnNldCAoMHgzMSksIAogICAgICAgICAgICAgICAgICAgICAgICBHSVJULCAgIDgsIAogICAg ICAgICAgICAgICAgICAgICAgICBQSVJULCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBL SVJULCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBJUlRJLCAgIDgsIAogICAgICAgICAg ICAgICAgICAgICAgICBPZmZzZXQgKDB4MzYpLCAKICAgICAgICAgICAgICAgICAgICAgICAgREdQ VSwgICA4LCAKICAgICAgICAgICAgICAgICAgICAgICAgR1VTVCwgICA4LCAKICAgICAgICAgICAg ICAgICAgICAgICAgR0RTVCwgICA4LCAKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgw eDQzKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEVDVFAsICAgOCwgCiAgICAgICAgICAgICAg ICAgICAgICAgIE9mZnNldCAoMHg0QSksIAogICAgICAgICAgICAgICAgICAgICAgICBFU01DLCAg IDEsIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4NEIpLCAKICAgICAgICAgICAg ICAgICAgICAgICAgRU1PRCwgICA4LCAKICAgICAgICAgICAgICAgICAgICAgICAgQkZVRCwgICAx NiwgCiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHg1RCksIAogICAgICAgICAgICAg ICAgICAgICAgICBFWFNJLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBFWFNCLCAgIDgs IAogICAgICAgICAgICAgICAgICAgICAgICBFWE5ELCAgIDgsIAogICAgICAgICAgICAgICAgICAg ICAgICBPZmZzZXQgKDB4NjEpLCAKICAgICAgICAgICAgICAgICAgICAgICAgU01TVCwgICA4LCAK ICAgICAgICAgICAgICAgICAgICAgICAgU01BRCwgICA4LCAKICAgICAgICAgICAgICAgICAgICAg ICAgU01DTSwgICA4LCAKICAgICAgICAgICAgICAgICAgICAgICAgU01EQSwgICAyNTYsIAogICAg ICAgICAgICAgICAgICAgICAgICBCQ05ULCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBT TUFBLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBTQUQwLCAgIDgsIAogICAgICAgICAg ICAgICAgICAgICAgICBTQUQxLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAg IDEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDEsIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDEsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAg ICBGQkZHLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4OEEpLCAKICAg ICAgICAgICAgICAgICAgICAgICAgS0JMTywgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAg VUNIRSwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgS0xDSCwgICAxLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgS0xGUywg ICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgS0xPUiwgICAxLCAKICAgICAgICAgICAgICAg ICAgICAgICAgVUNIUiwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgVUNFUiwgICAxLCAK ICAgICAgICAgICAgICAgICAgICAgICAgVFBEViwgICAzLCAKICAgICAgICAgICAgICAgICAgICAg ICAgT2Zmc2V0ICgweDhDKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFFDSE8sICAgMSwgCiAg ICAgICAgICAgICAgICAgICAgICAgIEJLTFQsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAg IE9mZnNldCAoMHg4RiksIAogICAgICAgICAgICAgICAgICAgICAgICBCTU4wLCAgIDcyLCAKICAg ICAgICAgICAgICAgICAgICAgICAgQkROMCwgICA2NCwgCiAgICAgICAgICAgICAgICAgICAgICAg IElCVEwsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIElCQ0wsICAgMSwgCiAgICAgICAg ICAgICAgICAgICAgICAgIElTUzAsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIElSVEMs ICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIElTVVAsICAgMSwgCiAgICAgICAgICAgICAg ICAgICAgICAgIElTQzIsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIElXQUssICAgMSwg CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHhBMSksIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBWT1VULCAgIDEsIAog ICAgICAgICAgICAgICAgICAgICAgICBUUEFELCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAg ICBIS0RCLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4QTIpLCAKICAg ICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweEEzKSwgCiAgICAgICAgICAgICAgICAgICAg ICAgIE9TVFksICAgMywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICAgMSwgCiAgICAg ICAgICAgICAgICAgICAgICAgIEFEUEksICAgMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEFEUFQsICAgMSwgCiAgICAgICAgICAg ICAgICAgICAgICAgIFBNRVcsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIE1PRFcsICAg MSwgCiAgICAgICAgICAgICAgICAgICAgICAgIExBTlcsICAgMSwgCiAgICAgICAgICAgICAgICAg ICAgICAgIFJUQ1csICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFdMQVcsICAgMSwgCiAg ICAgICAgICAgICAgICAgICAgICAgIFVTQlcsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAg IEtFWVcsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFRQV0ssICAgMSwgCiAgICAgICAg ICAgICAgICAgICAgICAgIENIQ1IsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEFEUFAs ICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIExFUk4sICAgMSwgCiAgICAgICAgICAgICAg ICAgICAgICAgIEFDTUQsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEJPVlAsICAgMSwg CiAgICAgICAgICAgICAgICAgICAgICAgIExFQUssICAgMSwgCiAgICAgICAgICAgICAgICAgICAg ICAgIEFJUlAsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEFDT0YsICAgMSwgCiAgICAg ICAgICAgICAgICAgICAgICAgIFMzRU4sICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFMz UlMsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFM0RU4sICAgMSwgCiAgICAgICAgICAg ICAgICAgICAgICAgIFM0UlMsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFM1RU4sICAg MSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFM1UlMsICAgMSwgCiAgICAgICAgICAgICAgICAg ICAgICAgIE9mZnNldCAoMHhBNyksIAogICAgICAgICAgICAgICAgICAgICAgICBPU1RULCAgIDgs IAogICAgICAgICAgICAgICAgICAgICAgICBPU1NULCAgIDgsIAogICAgICAgICAgICAgICAgICAg ICAgICBUSFJULCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBUQ09ULCAgIDgsIAogICAg ICAgICAgICAgICAgICAgICAgICBNT0RFLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgLCAgIDIsIAogICAgICAgICAgICAgICAgICAgICAgICBJTklULCAgIDEsIAogICAgICAgICAg ICAgICAgICAgICAgICBGQU4xLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBGQU4yLCAg IDEsIAogICAgICAgICAgICAgICAgICAgICAgICBGQU9LLCAgIDEsIAogICAgICAgICAgICAgICAg ICAgICAgICBTS0lOLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBTRFRFLCAgIDgsIAog ICAgICAgICAgICAgICAgICAgICAgICBTUEROLCAgIDQsIAogICAgICAgICAgICAgICAgICAgICAg ICBGTlVNLCAgIDQsIAogICAgICAgICAgICAgICAgICAgICAgICBUTFZMLCAgIDQsIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgLCAgIDIsIAogICAgICAgICAgICAgICAgICAgICAgICBUSFNX LCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBUUElOLCAgIDEsIAogICAgICAgICAgICAg ICAgICAgICAgICBUU1RILCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBUU0NQLCAgIDEs IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDIsIAogICAgICAgICAgICAgICAgICAg ICAgICBQTFZMLCAgIDQsIAogICAgICAgICAgICAgICAgICAgICAgICBDUFVULCAgIDgsIAogICAg ICAgICAgICAgICAgICAgICAgICBDUFRMLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBP ZmZzZXQgKDB4QjcpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgICAxLCAKICAgICAg ICAgICAgICAgICAgICAgICAgUFdEQiwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgRElH VCwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQ0RMSywgICAxLCAKICAgICAgICAgICAg ICAgICAgICAgICAgT2Zmc2V0ICgweEI4KSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAs ICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIExTVEUsICAgMSwgCiAgICAgICAgICAgICAg ICAgICAgICAgIFBNRUUsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIFBXQkUsICAgMSwg CiAgICAgICAgICAgICAgICAgICAgICAgIFJOR0UsICAgMSwgCiAgICAgICAgICAgICAgICAgICAg ICAgIEJUV0UsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHhCOSksIAog ICAgICAgICAgICAgICAgICAgICAgICBMQ0JWLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAg ICBER0RGLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBXTEFOLCAgIDEsIAogICAgICAg ICAgICAgICAgICAgICAgICBCTFVFLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBXRVhU LCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBCRVhULCAgIDEsIAogICAgICAgICAgICAg ICAgICAgICAgICBLSUxMLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBXTE9LLCAgIDEs IAogICAgICAgICAgICAgICAgICAgICAgICBFTjNHLCAgIDEsIAogICAgICAgICAgICAgICAgICAg ICAgICBFWDNHLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBLUElELCAgIDgsIAogICAg ICAgICAgICAgICAgICAgICAgICBDVFlQLCAgIDMsIAogICAgICAgICAgICAgICAgICAgICAgICBD T1JFLCAgIDMsIAogICAgICAgICAgICAgICAgICAgICAgICBHQVRZLCAgIDIsIAogICAgICAgICAg ICAgICAgICAgICAgICBCQTFQLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBCQTJQLCAg IDEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAgIDIsIAogICAgICAgICAgICAgICAg ICAgICAgICBCMUNILCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBCMkNILCAgIDEsIAog ICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4QkYpLCAKICAgICAgICAgICAgICAgICAg ICAgICAgUEJZMSwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgUEJZMiwgICAxLCAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICwgICAyLCAKICAgICAgICAgICAgICAgICAgICAgICAg U01CMSwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgU01CMiwgICAxLCAKICAgICAgICAg ICAgICAgICAgICAgICAgT2Zmc2V0ICgweEMwKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIx VFksICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxTUQsICAgMSwgCiAgICAgICAgICAg ICAgICAgICAgICAgIEIxTFcsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICAg MSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxTUYsICAgMywgCiAgICAgICAgICAgICAgICAg ICAgICAgIE9mZnNldCAoMHhDMSksIAogICAgICAgICAgICAgICAgICAgICAgICBCMVNULCAgIDgs IAogICAgICAgICAgICAgICAgICAgICAgICBCMVJDLCAgIDE2LCAKICAgICAgICAgICAgICAgICAg ICAgICAgQjFTTiwgICAxNiwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxRlYsICAgMTYsIAog ICAgICAgICAgICAgICAgICAgICAgICBCMURWLCAgIDE2LCAKICAgICAgICAgICAgICAgICAgICAg ICAgQjFEQywgICAxNiwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxRkMsICAgMTYsIAogICAg ICAgICAgICAgICAgICAgICAgICBCMUdTLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBC MUNULCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBCMUNSLCAgIDE2LCAKICAgICAgICAg ICAgICAgICAgICAgICAgQjFBQywgICAxNiwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxUEMs ICAgOCwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxVkwsICAgOCwgCiAgICAgICAgICAgICAg ICAgICAgICAgIEIxVE0sICAgOCwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxQVQsICAgOCwg CiAgICAgICAgICAgICAgICAgICAgICAgIEIxQ0MsICAgMTYsIAogICAgICAgICAgICAgICAgICAg ICAgICBCMVRDLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBCMUNJLCAgIDgsIAogICAg ICAgICAgICAgICAgICAgICAgICBCMUNVLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBC MUNBLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBCMVNNLCAgIDE2LCAKICAgICAgICAg ICAgICAgICAgICAgICAgQjFWQywgICA4LCAKICAgICAgICAgICAgICAgICAgICAgICAgQjFGQSwg ICA4LCAKICAgICAgICAgICAgICAgICAgICAgICAgQjFWQSwgICA4LCAKICAgICAgICAgICAgICAg ICAgICAgICAgQjFDMSwgICAxNiwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxQzIsICAgMTYs IAogICAgICAgICAgICAgICAgICAgICAgICBCMUMzLCAgIDE2LCAKICAgICAgICAgICAgICAgICAg ICAgICAgQjFDNCwgICAxNiwgCiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHhGMCks IAogICAgICAgICAgICAgICAgICAgICAgICBCMUVYLCAgIDEsIAogICAgICAgICAgICAgICAgICAg ICAgICBCMUZMLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICBCMUVQLCAgIDEsIAogICAg ICAgICAgICAgICAgICAgICAgICBCMUZJLCAgIDEsIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgLCAgIDIsIAogICAgICAgICAgICAgICAgICAgICAgICBCMVJFLCAgIDEsIAogICAgICAgICAg ICAgICAgICAgICAgICBPZmZzZXQgKDB4RjEpLCAKICAgICAgICAgICAgICAgICAgICAgICAgQjFM TCwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQjFDRSwgICAxLCAKICAgICAgICAgICAg ICAgICAgICAgICAgQjFTRSwgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgQjFTNSwgICAx LCAKICAgICAgICAgICAgICAgICAgICAgICAgQjFTUiwgICAxLCAKICAgICAgICAgICAgICAgICAg ICAgICAgQjFTQywgICAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweEYyKSwg CiAgICAgICAgICAgICAgICAgICAgICAgIEIxVE8sICAgMSwgCiAgICAgICAgICAgICAgICAgICAg ICAgIEIxQkMsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxQ0YsICAgMSwgCiAgICAg ICAgICAgICAgICAgICAgICAgIEIxQ1MsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIx U0csICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxU1UsICAgMSwgCiAgICAgICAgICAg ICAgICAgICAgICAgIEIxT1YsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxT1QsICAg MSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxVFQsICAgMSwgCiAgICAgICAgICAgICAgICAg ICAgICAgIEIxU0EsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxU1MsICAgMSwgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAg IEIxU0YsICAgMSwgCiAgICAgICAgICAgICAgICAgICAgICAgIEIxV04sICAgMSwgCiAgICAgICAg ICAgICAgICAgICAgICAgIE9mZnNldCAoMHhGNCksIAogICAgICAgICAgICAgICAgICAgICAgICBC MURBLCAgIDE2LCAKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgweEY4KSwgCiAgICAg ICAgICAgICAgICAgICAgICAgIEIxQ04sICAgOCwgCiAgICAgICAgICAgICAgICAgICAgICAgIE9m ZnNldCAoMHhGQiksIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4RkUpLCAKICAg ICAgICAgICAgICAgICAgICAgICAgRkEyUywgICA4CiAgICAgICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgICAgICBPcGVyYXRpb25SZWdpb24gKEVDTVMsIFN5c3RlbUlPLCAweDcyLCAw eDAyKQogICAgICAgICAgICAgICAgICAgIEZpZWxkIChFQ01TLCBCeXRlQWNjLCBMb2NrLCBQcmVz ZXJ2ZSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIElORFgs ICAgOCwgCiAgICAgICAgICAgICAgICAgICAgICAgIERBVEEsICAgOAogICAgICAgICAgICAgICAg ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChSRUNNLCAxLCBTZXJpYWxpemVkKQog ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSU5EWCA9IEFyZzAK ICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChEQVRBKSAvKiBcX1NCXy5QQ0kwLkxQQzAu RUMwXy5EQVRBICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBN ZXRob2QgKFdFQ00sIDIsIFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICBJTkRYID0gQXJnMAogICAgICAgICAgICAgICAgICAgICAgICBEQVRB ID0gQXJnMQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgT3BlcmF0 aW9uUmVnaW9uIChDTURFLCBTeXN0ZW1JTywgMHg2MiwgMHgwQikKICAgICAgICAgICAgICAgICAg ICBGaWVsZCAoQ01ERSwgQnl0ZUFjYywgTG9jaywgUHJlc2VydmUpCiAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICBFQzYyLCAgIDgsIAogICAgICAgICAgICAgICAg ICAgICAgICBPZmZzZXQgKDB4MDIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICgw eDAzKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHgwNCksIAogICAgICAgICAg ICAgICAgICAgICAgICBFQzY2LCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQg KDB4MDYpLCAKICAgICAgICAgICAgICAgICAgICAgICAgRUM2OCwgICA4LCAKICAgICAgICAgICAg ICAgICAgICAgICAgT2Zmc2V0ICgweDA4KSwgCiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNl dCAoMHgwOSksIAogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKDB4MEEpLCAKICAgICAg ICAgICAgICAgICAgICAgICAgRUM2QywgICA4CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg ICAgICAgICAgICAgICBNZXRob2QgKFdJQkUsIDEsIFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSAweDAwMDEwMDAwCiAgICAg ICAgICAgICAgICAgICAgICAgIFdoaWxlIChMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoQXJnMCA9PSBPbmUpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExv Y2FsMSA9IEVDNjYgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uRUM2NiAqLwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxzZUlmICgoQXJn MCA9PSAweDAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMb2NhbDEgPSBFQzZDIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLkVD NkMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKCgoTG9jYWwxICYgMHgwMikgPT0g WmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmV0dXJuIChaZXJvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWxsICgweDBBKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgTG9jYWwwLS0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICAgICAgUmV0dXJuIChPbmUpCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg ICAgICAgICAgICAgICBNZXRob2QgKFdPQkYsIDEsIFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSAweDAwMDEwMDAwCiAgICAg ICAgICAgICAgICAgICAgICAgIFdoaWxlIChMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoQXJnMCA9PSBPbmUpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExv Y2FsMSA9IEVDNjYgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uRUM2NiAqLwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxzZUlmICgoQXJn MCA9PSAweDAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMb2NhbDEgPSBFQzZDIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLkVD NkMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKCgoTG9jYWwxICYgT25lKSA9PSBP bmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJldHVybiAoWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFsbCAoMHgwQSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExvY2FsMC0tCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg ICAgICAgICAgICAgIFJldHVybiAoT25lKQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgTWV0aG9kIChXT0JFLCAxLCBTZXJpYWxpemVkKQogICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwID0gMHgwMDAxMDAwMAogICAgICAg ICAgICAgICAgICAgICAgICBXaGlsZSAoTG9jYWwwKQogICAgICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKEFyZzAgPT0gT25lKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2Nh bDEgPSBFQzY2IC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLkVDNjYgKi8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsc2VJZiAoKEFyZzAg PT0gMHgwMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTG9jYWwxID0gRUM2QyAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5FQzZD ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUmV0dXJuICgweDAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg fQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoKExvY2FsMSAmIE9uZSkgPT0gT25l KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJZiAoKEFyZzAgPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMiA9IEVDNjIgLyog XF9TQl8uUENJMC5MUEMwLkVDMF8uRUM2MiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbHNlSWYgKChBcmcwID09IDB4 MDIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTG9jYWwyID0gRUM2OCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5F QzY4ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwMikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChaZXJvKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YWxs ICgweDBBKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwLS0KICAgICAgICAgICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChPbmUpCiAgICAg ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKExDTUQsIDIsIFNl cmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBO YW1lIChMQlVGLCBCdWZmZXIgKDB4MUUpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gLgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAg ICAgICAgICAgICAgICBJZiAoKFdJQkUgKDB4MDIpICE9IFplcm8pKQogICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAg ICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChXT0JFICgw eDAyKSAhPSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmV0dXJuIChPbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgICAgIEVDNkMgPSBBcmcwCiAgICAgICAgICAgICAgICAgICAgICAgIElm ICgoV0lCRSAoMHgwMikgIT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoT25lKQogICAgICAgICAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgICAgICAgICBJZiAoKChBcmcxICE9IFplcm8pICYmIChBcmcx ICE9IDB4RkYpKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgRUM2OCA9IEFyZzEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoV0lC RSAoMHgwMikgIT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChPbmUpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg ICAgIElmICgoV09CRiAoMHgwMikgIT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoT25lKQogICAgICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBFQzY4IC8qIFxfU0Jf LlBDSTAuTFBDMC5FQzBfLkVDNjggKi8KICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwxID0g WmVybwogICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSAoTG9jYWwwKQogICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKFdPQkYgKDB4MDIp ICE9IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJldHVybiAoT25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg fQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExCVUYgW0xvY2FsMV0gPSBFQzY4IC8qIFxf U0JfLlBDSTAuTFBDMC5FQzBfLkVDNjggKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIExv Y2FsMSsrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAtLQogICAgICAgICAgICAg ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKExCVUYpIC8qIFxf U0JfLlBDSTAuTFBDMC5FQzBfLkxDTUQuTEJVRiAqLwogICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgTWV0aG9kIChTQ01ELCAyLCBTZXJpYWxpemVkKQogICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoTEJVRiwgQnVmZmVyICgw eDFFKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHgwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4K ICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChX SUJFIChPbmUpICE9IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoK ICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChXT0JFIChPbmUpICE9IFplcm8pKQogICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKE9u ZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgRUM2 NiA9IEFyZzAKICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChXSUJFIChPbmUpICE9IFplcm8p KQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZXR1cm4gKE9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg ICAgICAgSWYgKCgoQXJnMSAhPSBaZXJvKSAmJiAoQXJnMSAhPSAweEZGKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDNjIgPSBBcmcxCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKFdJQkUgKE9uZSkgIT0gWmVybykpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UmV0dXJuIChPbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIElmICgoV09CRiAoT25lKSAhPSBa ZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgUmV0dXJuIChPbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAgICAgICAgIExvY2FsMCA9IEVDNjIgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uRUM2MiAqLwog ICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDEgPSBaZXJvCiAgICAgICAgICAgICAgICAgICAg ICAgIFdoaWxlIChMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElmICgoV09CRiAoT25lKSAhPSBaZXJvKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKE9u ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMQlVGIFtMb2NhbDFdID0gRUM2MiAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5FQzYyICov CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDErKwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgTG9jYWwwLS0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgICAgICAgICAgUmV0dXJuIChMQlVGKSAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5TQ01ELkxC VUYgKi8KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAo TFJBTSwgMiwgU2VyaWFsaXplZCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIElmICgoV0lCRSAoMHgwMikgIT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoT25lKQogICAgICAgICAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBJZiAoKFdPQkUgKDB4MDIp ICE9IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICAgICAgRUM2QyA9IDB4N0UKICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChX SUJFICgweDAyKSAhPSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmV0dXJuIChPbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICAgICAgICAgIEVDNjggPSBBcmcwCiAgICAgICAgICAgICAgICAgICAg ICAgIElmICgoV0lCRSAoMHgwMikgIT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoT25lKQogICAgICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBFQzY4ID0gQXJnMQogICAgICAgICAg ICAgICAgICAgICAgICBJZiAoKFdJQkUgKDB4MDIpICE9IFplcm8pKQogICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAg ICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChXT0JGICgw eDAyKSAhPSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmV0dXJuIChPbmUpCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgICAgIFJldHVybiAoRUM2OCkgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8u RUM2OCAqLwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9k IChTUkFNLCAyLCBTZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgSWYgKChXSUJFIChPbmUpICE9IFplcm8pKQogICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAgICAg ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChXT0JFIChPbmUp ICE9IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICAgICAgRUM2NiA9IDB4N0UKICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChX SUJFIChPbmUpICE9IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoK ICAgICAgICAgICAgICAgICAgICAgICAgRUM2MiA9IEFyZzAKICAgICAgICAgICAgICAgICAgICAg ICAgSWYgKChXSUJFIChPbmUpICE9IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgRUM2MiA9IEFyZzEKICAgICAgICAgICAg ICAgICAgICAgICAgSWYgKChXSUJFIChPbmUpICE9IFplcm8pKQogICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAgICAg ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChXT0JGIChPbmUp ICE9IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICAgICAgUmV0dXJuIChFQzYyKSAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5FQzYy ICovCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBTY29wZSAoXCkK ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdGlvblJl Z2lvbiAoTEZDTiwgU3lzdGVtTWVtb3J5LCAweEJGN0JCRDE4LCAweDAwRUUpCiAgICAgICAgICAg ICAgICAgICAgICAgIEZpZWxkIChMRkNOLCBBbnlBY2MsIExvY2ssIFByZXNlcnZlKQogICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUzJWLCAgIDgs IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgS0JJRCwgICA4LCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE1DU1osICAgOCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPS1JC LCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRURJRCwgICAxMDI0LCAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRQVFksICAgOCwgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUUE5WLCAgIDE2LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTlAsICAgMTYs IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWUc1MywgICA4LCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExGQ08sICAgODAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoU01JTywgU3lzdGVtSU8sIDB4QjAs IDB4MDIpCiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkIChTTUlPLCBCeXRlQWNjLCBOb0xv Y2ssIFByZXNlcnZlKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTTUJBLCAgIDgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CQiwg ICA4CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgIERldmljZSAoQkFUMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMEEiKSAvKiBDb250 cm9sIE1ldGhvZCBCYXR0ZXJ5ICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAg ICAgICAgICAgICAgTmFtZSAoX1VJRCwgT25lKSAgLy8gX1VJRDogVW5pcXVlIElECiAgICAgICAg ICAgICAgICAgICAgICAgIE5hbWUgKF9QQ0wsIFBhY2thZ2UgKDB4MDEpICAvLyBfUENMOiBQb3dl ciBDb25zdW1lciBMaXN0CiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF9TQgogICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAg ICAgICAgICAgICBOYW1lIChQQklGLCBQYWNrYWdlICgweDBEKQogICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE9uZXMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT25lcywgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgT25lcywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFplcm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2NCwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJMQ0ZDIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQkFUMjAxMDEwMDEi LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMaVAiLCAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJMRU5PVk8iCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAg ICAgICAgICAgICAgIE5hbWUgKFBCU1QsIFBhY2thZ2UgKDB4MDQpCiAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uZSwgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDBBOTAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMDAw LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MkEzMAogICAgICAgICAgICAgICAgICAg ICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlh bGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgSWYgKChFQ09OID09IE9uZSkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKEVDQVYpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJZiAoKEFjcXVpcmUgKExGQ00sIDB4QTAwMCkgPT0gWmVybykpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExvY2FsMCA9IEJBMVAgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uQkExUCAq LwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSAoTEZDTSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChMb2Nh bDAgJiBPbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDFGKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKDB4MEYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg RWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJldHVybiAoWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChf QklGLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX0JJRjogQmF0dGVyeSBJbmZvcm1hdGlvbgogICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKEVD QVYgPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJZiAoKEFjcXVpcmUgKExGQ00sIDB4QTAwMCkgPT0gWmVybykpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMb2NhbDAgPSBCMURDIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLkIxREMgKi8K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwICo9IDB4MEEKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEJJRiBbT25lXSA9IExvY2FsMAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBCMUZDIC8qIFxfU0JfLlBDSTAu TFBDMC5FQzBfLkIxRkMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9j YWwwICo9IDB4MEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEJJRiBbMHgw Ml0gPSBMb2NhbDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEJJRiBbMHgw NF0gPSBCMURWIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLkIxRFYgKi8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSWYgKEIxRkMpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBCSUYg WzB4MDVdID0gKChCMUZDICogMHgwQSkgLyAweDBBKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUEJJRiBbMHgwNl0gPSAoKEIxRkMgKiAweDBBKSAvIDB4MTkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQklGIFsweDA3XSA9ICgoQjFEQyAq IDB4MEEpIC8gMHg2NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEJJRiBbMHgwOV0gPSAiIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQklGIFsweDBBXSA9ICIiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBCSUYgWzB4MEJdID0gIiIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUEJJRiBbMHgwQ10gPSAiIgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOYW1lIChCRE5ULCBCdWZmZXIgKDB4MDkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBCRE5UID0gQkROMCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMw Xy5CRE4wICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBCSUYgWzB4MDld ID0gVG9TdHJpbmcgKEJETlQsIE9uZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExvY2FsMCA9IEIxU04gLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uQjFTTiAqLwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChTRVJOLCBCdWZmZXIgKDB4MDYpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwyID0gMHgw NAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSAoTG9jYWwwKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEaXZpZGUgKExvY2FsMCwgMHgwQSwgTG9jYWwxLCBMb2NhbDApCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVJOIFtMb2NhbDJdID0gKExv Y2FsMSArIDB4MzApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2Nh bDItLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQQklGIFsweDBBXSA9IFNFUk4gLyogXF9TQl8uUENJMC5M UEMwLkVDMF8uQkFUMC5fQklGLlNFUk4gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTmFtZSAoRENIMCwgQnVmZmVyICgweDBBKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTmFtZSAoRENIMSwgIkxJT04iKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOYW1lIChEQ0gyLCAiTGlQIikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSWYgKChCMVRZID09IE9uZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERDSDAgPSBE Q0gxIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLkJBVDAuX0JJRi5EQ0gxICovCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQklGIFsweDBCXSA9IFRvU3RyaW5nIChEQ0gw LCBPbmVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRENIMCA9 IERDSDIgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uQkFUMC5fQklGLkRDSDIgKi8KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBCSUYgWzB4MEJdID0gVG9TdHJpbmcgKERD SDAsIE9uZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKEJNTlQsIEJ1ZmZlciAoMHgwQSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJNTlQgPSBCTU4wIC8qIFxfU0JfLlBD STAuTFBDMC5FQzBfLkJNTjAgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UEJJRiBbMHgwQ10gPSBUb1N0cmluZyAoQk1OVCwgT25lcykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVsZWFzZSAoTEZDTSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgUmV0dXJuIChQQklGKSAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CQVQwLlBCSUYg Ki8KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgTmFt ZSAoT0JTVCwgWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoT0JBQywgWmVybykK ICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoT0JQUiwgWmVybykKICAgICAgICAgICAgICAg ICAgICAgICAgTmFtZSAoT0JSQywgWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAo T0JQViwgWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfQlNULCAwLCBTZXJp YWxpemVkKSAgLy8gX0JTVDogQmF0dGVyeSBTdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChFQ0FWID09IE9uZSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYg KChBY3F1aXJlIChMRkNNLCAweEEwMDApID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xlZXAgKDB4 MTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCA9IEIxU1QgLyog XF9TQl8uUENJMC5MUEMwLkVDMF8uQjFTVCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMb2NhbDEgPSBEZXJlZk9mIChQQlNUIFtaZXJvXSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3dpdGNoICgoTG9jYWwwICYgMHgwNykpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENhc2UgKFplcm8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0JTVCA9IChM b2NhbDEgJiAweEY4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZSAoT25lKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9CU1QgPSAoT25lIHwgKExvY2FsMSAmIDB4RjgpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ2FzZSAoMHgwMikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPQlNUID0gKDB4MDIgfCAoTG9jYWwxICYgMHhGOCkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDYXNlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9CU1QgPSAoMHgw NCB8IChMb2NhbDEgJiAweEY4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNsZWVwICgweDEwKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPQkFDID0gQjFBQyAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CMUFD ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoT0JTVCAmIE9uZSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElmICgoT0JBQyAhPSBaZXJvKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPQkFDID0gKH5PQkFDICYgMHg3RkZGKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsc2VJZiAoKEZCRkcgIT0g T25lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChPQkFDID09IFplcm8pKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE9CQUMgPSAweEZGCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsZWVwICgweDEwKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPQlJDID0gQjFSQyAvKiBcX1NCXy5QQ0kwLkxQQzAu RUMwXy5CMVJDICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsZWVwICgw eDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQlBWID0gQjFGViAvKiBc X1NCXy5QQ0kwLkxQQzAuRUMwXy5CMUZWICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE9CUkMgKj0gMHgwQQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP QlBSID0gKChPQkFDICogT0JQVikgLyAweDAzRTgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBCU1QgW1plcm9dID0gT0JTVCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CQVQw Lk9CU1QgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEJTVCBbT25lXSA9 IE9CUFIgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uQkFUMC5PQlBSICovCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBCU1QgWzB4MDJdID0gT0JSQyAvKiBcX1NCXy5QQ0kwLkxQ QzAuRUMwXy5CQVQwLk9CUkMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UEJTVCBbMHgwM10gPSBPQlBWIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLkJBVDAuT0JQViAqLwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFBCU1QpIC8qIFxfU0JfLlBDSTAu TFBDMC5FQzBfLkJBVDAuUEJTVCAqLwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBTY29wZSAoXF9TQi5QQ0kwLkxQQzAu RUMwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNl IChWUEMwKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPcGVyYXRpb25SZWdpb24gKEJPSUQsIFN5c3RlbU1lbW9yeSwgMHhGRUQ4MTUwQywgMHgw NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkIChCT0lELCBCeXRlQWNjLCBOb0xv Y2ssIFByZXNlcnZlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE9mZnNldCAoMHgwMiksIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElEMlYsICAgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsICJWUEMyMDA0IikgIC8vIF9ISUQ6IEhh cmR3YXJlIElECiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChfVUlELCBaZXJvKSAg Ly8gX1VJRDogVW5pcXVlIElECiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChfVlBD LCAweDQwMERFMTE0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoVlBDRCwgWmVy bykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX0hSViwgMCwgTm90U2VyaWFs aXplZCkgIC8vIF9IUlY6IEhhcmR3YXJlIFJldmlzaW9uCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChPbmUpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0 aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChZ RzUzID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZQQyA9IDB4RkMwREYwMTAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElm ICgoWUc1MyA9PSBPbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZQQyA9IDB4RjQwREYwMTgKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElmICgoWUc1MyA9PSAweDAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WUEMgPSAweEY0MERGMDA4CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSZXR1cm4gKDB4MEYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfQ0ZHLCAwLCBOb3RTZXJpYWxpemVkKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJldHVybiAoX1ZQQykgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uVlBDMC5fVlBDICovCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0 aG9kIChWUENSLCAxLCBTZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIChFQ0FWKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYg KChBY3F1aXJlIChMRkNNLCAweEEwMDApID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ ZiAoKEFyZzAgPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWUENEID0gVkNN RCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5WQ01EICovCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlBDRCA9IFZEQVQgLyogXF9TQl8u UENJMC5MUEMwLkVDMF8uVkRBVCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2Ug KExGQ00pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl dHVybiAoVlBDRCkgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uVlBDMC5WUENEICovCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9k IChWUENXLCAyLCBTZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIChFQ0FWKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChB Y3F1aXJlIChMRkNNLCAweEEwMDApID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAo KEFyZzAgPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQ01EID0gQXJnMQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFZEQVQgPSBBcmcxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSAoTEZDTSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChaZXJv KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1ldGhvZCAoU1ZDUiwgMSwgU2VyaWFsaXplZCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNZXRob2QgKEhBTFMsIDAsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwID0gWmVy bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIChFQ0FWKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SWYgKChBY3F1aXJlIChMRkNNLCAweEEwMDApID09IFplcm8pKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJZiAoKChZRzUzID09IE9uZSkgJiYgKElEMlYgPT0gWmVybykpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExvY2FsMCB8PSAweDEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYg KCgoWUc1MyA9PSBPbmUpICYmIChJRDJWID09IFplcm8pKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJZiAoKE9uZSA9PSBLQkxPKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExvY2FsMCB8PSAweDIwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCB8PSAweDQwCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKE9uZSA9PSBVQ0hFKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgfD0gMHg4MAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExvY2FsMCB8PSAweDAyMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElmIChIS0RCKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCB8 PSAweDA0MDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgfD0gMHgwODAwCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKFFVSUUgPT0gT25lKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgfD0gMHgyMDAwCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVsZWFzZSAoTEZDTSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmV0dXJuIChMb2NhbDApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChTQUxTLCAxLCBTZXJp YWxpemVkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExvY2FsMCA9IFRvSW50ZWdlciAoQXJnMCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJZiAoRUNBVikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoQWNxdWlyZSAoTEZDTSwg MHhBMDAwKSA9PSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChMb2NhbDAgPT0gMHgw OCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0JMTyA9IE9uZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgKExGQ00pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChaZXJvKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElmICgoTG9jYWwwID09IDB4MDkpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEtCTE8gPSBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUmVsZWFzZSAoTEZDTSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChM b2NhbDAgPT0gMHgwQSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNIRSA9IE9uZQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQkIgPSAweDMyCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CQSA9IDB4Q0EKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoWmVybykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKExvY2FsMCA9PSAweDBCKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBVQ0hFID0gWmVybwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNNQkIgPSAweDMzCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU01CQSA9IDB4Q0EKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJldHVybiAoWmVybykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJZiAoKExvY2FsMCA9PSAweDBFKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIS0RC ID0gT25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CQiA9 IDB4MzEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUJBID0g MHhDQQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2Ug KExGQ00pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJu IChaZXJvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoTG9jYWwwID09IDB4MEYpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhLREIgPSBaZXJvCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CQiA9IDB4MzAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTTUJBID0gMHhDQQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgKExGQ00pCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChaZXJvKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJlbGVhc2UgKExGQ00pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJldHVybiAoWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRob2QgKEdCTUQsIDAsIE5vdFNlcmlh bGl6ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTG9jYWwwID0gMHgxMDAwMDAwMAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElmIChFQ0FWKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChBY3F1aXJlIChMRkNNLCAweEEwMDAp ID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKE9uZSA9PSBDRE1CKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgfD0gT25lCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSWYgKChPbmUgPT0gUUNITykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9j YWwwIHw9IDB4MDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKE9uZSA9PSBCQkFEKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgfD0gMHgwOAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElmICgoT25lID09IEJUU00pKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExvY2FsMCB8PSAweDIwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChPbmUgPT0g QkxFRykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwIHw9IDB4ODAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJZiAoKE9uZSA9PSBCQVRGKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMb2NhbDAgfD0gMHgwMTAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYg KChaZXJvID09IEJUU00pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCB8PSAw eDAyMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKE9uZSA9PSBCVVNHKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgfD0gMHgwODAwCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSWYgKChaZXJvID09IEFEUEkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExvY2FsMCAmPSAweEZGRkU3RkZGCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChPbmUg PT0gQURQSSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwIHw9IDB4ODAwMAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoMHgwMiA9PSBBRFBJKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMb2NhbDAgfD0gMHgwMDAxMDAwMAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExvY2FsMCB8PSAweDAwMDIwMDAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMb2NhbDAgfD0gMHgwMDA0MDAwMAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSWYgKChPbmUgPT0gRVNNQykpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTG9jYWwwIHw9IDB4MDA0MDAwMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxl YXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZXR1cm4gKExvY2FsMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOYW1lIChWQlNULCBaZXJvKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgTmFtZSAoVkJBQywgWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5h bWUgKFZCUFIsIFplcm8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChWQlJDLCBa ZXJvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoVkJQViwgWmVybykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKFZCRkMsIFplcm8pCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOYW1lIChWQkNULCBaZXJvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg TWV0aG9kIChTTVRGLCAxLCBOb3RTZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIChFQ0FWKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSWYgKChBY3F1aXJlIChMRkNNLCAweEEwMDApID09IFplcm8pKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJZiAoKEFyZzAgPT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYg KChCMUZWID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVs ZWFzZSAoTEZDTSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUmV0dXJuICgweEZGRkYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAo KEIxQUMgPT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxl YXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZXR1cm4gKDB4RkZGRikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2Fs MCA9IEIxRkMgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uQjFGQyAqLwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCAqPSAweDBBCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkJGQyA9IExvY2FsMAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMSA9IEIxUkMgLyogXF9TQl8uUENJ MC5MUEMwLkVDMF8uQjFSQyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExvY2FsMSAqPSAweDBBCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVkJSQyA9IExvY2FsMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElmICgoVkJGQyA+IFZCUkMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVkJQViA9IEIxRlYgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uQjFGViAqLwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQkFDID0gQjFBQyAv KiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CMUFDICovCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCAtPSBMb2NhbDEKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwxID0gKFZCQUMgKiBWQlBWKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDMgPSAoTG9j YWwwICogMHgwM0U4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMb2NhbDMgPSAoTG9jYWwzICogMHgzQykKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVkJDVCA9IChMb2NhbDMgLyBMb2NhbDEpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgKExGQ00pCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoVkJDVCkg LyogXF9TQl8uUENJMC5MUEMwLkVDMF8uVlBDMC5WQkNUICovCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl bGVhc2UgKExGQ00pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoMHhGRkZGKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKEFyZzAgPT0gT25lKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHhGRkZGKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJlbGVhc2UgKExGQ00pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHhGRkZGKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKFFCU1QsIFplcm8pCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChRQkFDLCBaZXJvKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgTmFtZSAoUUJQUiwgWmVybykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5hbWUgKFFCUkMsIFplcm8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChR QlBWLCBaZXJvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoUUJGQywgWmVybykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKFFCQ1QsIFplcm8pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNZXRob2QgKFNNVEUsIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYg KEVDQVYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJZiAoKEFjcXVpcmUgKExGQ00sIDB4QTAwMCkgPT0gWmVybykp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElmICgoQXJnMCA9PSBaZXJvKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJZiAoKEIxRlYgPT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4RkZGRikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElmICgoQjFBQyA9PSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJlbGVhc2UgKExGQ00pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHhGRkZGKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTG9jYWwwID0gQjFSQyAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CMVJDICov CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwICo9IDB4 MEEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQlJDID0gTG9j YWwwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwxID0g QjFGQyAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CMUZDICovCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwxICo9IDB4MEEKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRQkZDID0gTG9jYWwxCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChRQkZDID4gUUJSQykpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRQlBWID0gQjFGViAvKiBcX1NCXy5QQ0kwLkxQQzAu RUMwXy5CMUZWICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElmICgoKEIxQUMgJiAweDgwMDApID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRQkFDID0gQjFBQyAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMw Xy5CMUFDICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxzZQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQkFDID0gKDB4RkZG RiAtIEIxQUMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2Fs MSA9IChRQkFDICogUUJQVikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTG9jYWwzID0gKExvY2FsMCAqIDB4MDNFOCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwzID0gKExvY2FsMyAqIDB4M0MpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFCQ1QgPSAoTG9jYWwz IC8gTG9jYWwxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKFFCQ1QpIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLlZQQzAuUUJDVCAq LwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4RkZGRikKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SWYgKChBcmcwID09IE9uZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSAo TEZDTSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4g KDB4RkZGRikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4RkZGRikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNZXRob2QgKFNCTUMsIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKEVDQVYpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJZiAoKEFjcXVpcmUgKExGQ00sIDB4QTAwMCkgPT0gWmVybykpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElmICgoQXJnMCA9PSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD RE1CID0gWmVybwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVE Q0MgPSBPbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxl YXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl dHVybiAoWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKEFyZzAgPT0gT25lKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRE1CID0gT25lCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSAoTEZDTSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSWYgKChBcmcwID09IDB4MDMpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEJUU00gPSBPbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJldHVybiAoWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKEFyZzAgPT0g MHgwNSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlRTTSA9IFplcm8KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoWmVybykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJZiAoKEFyZzAgPT0gMHgwNykpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUUNITyA9IE9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEJUU00gPSBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUmVsZWFzZSAoTEZDTSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChB cmcwID09IDB4MDgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDSE8gPSBaZXJvCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSAoTEZDTSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8p CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChBcmcwID09IDB4MDkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVTTUMgPSBPbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJldHVybiAoWmVybykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJZiAoKEFyZzAgPT0gMHgxMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNNQyA9 IFplcm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNl IChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVy biAoWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg TWV0aG9kIChNSENGLCAxLCBOb3RTZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFA4MEggPSAweDc4CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwID0gQXJnMAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElmIChFQ0FWKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChBY3F1aXJlIChMRkNNLCAw eEEwMDApID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgJj0gMHgyMAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwID4+PSAweDA1CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSTUJUID0gTG9jYWwwCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbGVlcCAoMHgxNCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgKExGQ00pCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoTG9jYWwwKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhv ZCAoTUhQRiwgMSwgTm90U2VyaWFsaXplZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoRUNBVikKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElm ICgoQWNxdWlyZSAoTEZDTSwgMHhBMDAwKSA9PSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TmFtZSAoQkZXQiwgQnVmZmVyICgweDI1KXt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ3JlYXRlQnl0ZUZpZWxkIChCRldCLCBaZXJvLCBGQjApCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeXRlRmllbGQgKEJGV0IsIE9uZSwg RkIxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnl0ZUZp ZWxkIChCRldCLCAweDAyLCBGQjIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDcmVhdGVCeXRlRmllbGQgKEJGV0IsIDB4MDMsIEZCMykKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUZpZWxkIChCRldCLCAweDIwLCAweDAxMDAsIEZC NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5dGVGaWVs ZCAoQkZXQiwgMHgyNCwgRkI1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSWYgKChTaXplT2YgKEFyZzApIDw9IDB4MjUpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElmICgoU01QUiAhPSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEZCMSA9IFNNU1QgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uU01TVCAqLwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCRldCID0gQXJnMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTTUFEID0gRkIyIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLlZQQzAuTUhQRi5G QjJfICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNN Q00gPSBGQjMgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uVlBDMC5NSFBGLkZCM18gKi8KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkNOVCA9IEZCNSAvKiBc X1NCXy5QQ0kwLkxQQzAuRUMwXy5WUEMwLk1IUEYuRkI1XyAqLwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBGQjAgLyogXF9TQl8uUENJMC5M UEMwLkVDMF8uVlBDMC5NSFBGLkZCMF8gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSWYgKCgoTG9jYWwwICYgT25lKSA9PSBaZXJvKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01EQSA9IEZCNCAvKiBcX1NCXy5Q Q0kwLkxQQzAuRUMwXy5WUEMwLk1IUEYuRkI0XyAqLwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTTVNUID0gWmVybwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTTVBSID0gRkIwIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLlZQ QzAuTUhQRi5GQjBfICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExvY2FsMSA9IDB4MDNFOAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBXaGlsZSAoTG9jYWwxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTbGVlcCAoT25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwxLS0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoKFNNU1QgJiYgMHg4MCkgfHwgKFNNUFIg PT0gWmVybykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2Fs MCA9IEZCMCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5WUEMwLk1IUEYuRkIwXyAqLwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKChMb2NhbDAgJiBP bmUpICE9IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGQjQgPSBTTURBIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLlNNREEgKi8KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkIxID0gU01TVCAvKiBcX1NCXy5QQ0kwLkxQ QzAuRUMwXy5TTVNUICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElmICgoKExvY2FsMSA9PSBaZXJvKSB8fCAhKFNNU1QgJiYgMHg4MCkpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTVBSID0gWmVybwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkIxID0gMHg5Mgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQkZXQikgLyogXF9TQl8uUENJMC5M UEMwLkVDMF8uVlBDMC5NSFBGLkJGV0IgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxl YXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoTUhJRiwgMSwgTm90U2VyaWFsaXpl ZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJZiAoRUNBVikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoQWNxdWlyZSAoTEZDTSwgMHhBMDAw KSA9PSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDgwSCA9IDB4NTAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoQXJnMCA9PSBaZXJvKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOYW1lIChSRVRCLCBCdWZmZXIgKDB4MEEpe30pCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoQlVGMSwgQnVmZmVyICgw eDA4KXt9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRjEg PSBGV0JUIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLkZXQlQgKi8KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeXRlRmllbGQgKEJVRjEsIFplcm8sIEZX MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeXRl RmllbGQgKEJVRjEsIE9uZSwgRlcxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENyZWF0ZUJ5dGVGaWVsZCAoQlVGMSwgMHgwMiwgRlcyKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5dGVGaWVsZCAoQlVGMSwgMHgw MywgRlczKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0 ZUJ5dGVGaWVsZCAoQlVGMSwgMHgwNCwgRlc0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENyZWF0ZUJ5dGVGaWVsZCAoQlVGMSwgMHgwNSwgRlc1KQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5dGVGaWVsZCAoQlVG MSwgMHgwNiwgRlc2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IENyZWF0ZUJ5dGVGaWVsZCAoQlVGMSwgMHgwNywgRlc3KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJFVEIgW1plcm9dID0gRlVTTCAvKiBcX1NCXy5QQ0kwLkxQ QzAuRUMwXy5GVVNMICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUkVUQiBbT25lXSA9IEZVU0ggLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uRlVTSCAqLwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVEIgWzB4MDJdID0gRlcw IC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLlZQQzAuTUhJRi5GVzBfICovCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVUQiBbMHgwM10gPSBGVzEgLyogXF9TQl8u UENJMC5MUEMwLkVDMF8uVlBDMC5NSElGLkZXMV8gKi8KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSRVRCIFsweDA0XSA9IEZXMiAvKiBcX1NCXy5QQ0kwLkxQQzAu RUMwXy5WUEMwLk1ISUYuRlcyXyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJFVEIgWzB4MDVdID0gRlczIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLlZQQzAu TUhJRi5GVzNfICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UkVUQiBbMHgwNl0gPSBGVzQgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uVlBDMC5NSElGLkZXNF8g Ki8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVRCIFsweDA3 XSA9IEZXNSAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5WUEMwLk1ISUYuRlc1XyAqLwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVEIgWzB4MDhdID0gRlc2IC8q IFxfU0JfLlBDSTAuTFBDMC5FQzBfLlZQQzAuTUhJRi5GVzZfICovCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVUQiBbMHgwOV0gPSBGVzcgLyogXF9TQl8uUENJ MC5MUEMwLkVDMF8uVlBDMC5NSElGLkZXN18gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJldHVybiAoUkVUQikgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8u VlBDMC5NSElGLlJFVEIgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNN KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoR1NCSSwgMSwgTm90U2VyaWFsaXplZCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO YW1lIChCSUZCLCBCdWZmZXIgKDB4NTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDAwICovICAweEZGLCAw eEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAgLy8gLi4uLi4uLi4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDAwOCAqLyAgMHhGRiwgMHhGRiwg MHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgIC8vIC4uLi4uLi4uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAwMTAgKi8gIDB4RkYsIDB4RkYsIDB4RkYs IDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsICAvLyAuLi4uLi4uLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDE4ICovICAweEZGLCAweEZGLCAweEZGLCAweEZG LCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAgLy8gLi4uLi4uLi4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogMDAyMCAqLyAgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhG RiwgMHhGRiwgMHhGRiwgMHhGRiwgIC8vIC4uLi4uLi4uCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIDAwMjggKi8gIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4 RkYsIDB4RkYsIDB4RkYsICAvLyAuLi4uLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiAwMDMwICovICAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAw eEZGLCAweEZGLCAgLy8gLi4uLi4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogMDAzOCAqLyAgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwg MHhGRiwgIC8vIC4uLi4uLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IDAwNDAgKi8gIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYs ICAvLyAuLi4uLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDQ4 ICovICAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAgLy8g Li4uLi4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDA1MCAqLyAg MHhGRiwgMHhGRiwgMHhGRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4uLgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChCSUZCLCBaZXJvLCBEQ0FQKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoQklGQiwgMHgwMiwgRkNBUCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEJJRkIsIDB4MDQs IFJDQVApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChC SUZCLCAweDA2LCBBVFRFKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVdv cmRGaWVsZCAoQklGQiwgMHgwOCwgQVRURikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDcmVhdGVXb3JkRmllbGQgKEJJRkIsIDB4MEEsIEJUVlQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChCSUZCLCAweDBDLCBCVENUKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoQklGQiwgMHgwRSwgQlRNUCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEJJRkIsIDB4 MTAsIE1EQVQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxk IChCSUZCLCAweDEyLCBGVURUKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0 ZVdvcmRGaWVsZCAoQklGQiwgMHgxNCwgRFZMVCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDcmVhdGVGaWVsZCAoQklGQiwgMHhCMCwgMHg1MCwgRENIRSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBDcmVhdGVGaWVsZCAoQklGQiwgMHgwMTAwLCAweDQwLCBETkFNKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUZpZWxkIChCSUZCLCAweDAxNDAs IDB4NjAsIE1OQU0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlRmllbGQg KEJJRkIsIDB4MDFBMCwgMHhCOCwgQlJOQikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDcmVhdGVRV29yZEZpZWxkIChCSUZCLCAweDRCLCBCRlcwKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElmICgoKEFyZzAgPT0gWmVybykgfHwgKEFyZzAgPT0gT25lKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJZiAoRUNBVikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChBY3F1aXJlIChMRkNN LCAweEEwMDApID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCA9 IEIxREMgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uQjFEQyAqLwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCAqPSAweDBBCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRENBUCA9IExvY2FsMAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCA9IEIxRkMgLyogXF9TQl8uUENJMC5M UEMwLkVDMF8uQjFGQyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExvY2FsMCAqPSAweDBBCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRkNBUCA9IExvY2FsMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExvY2FsMCA9IEIxUkMgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uQjFSQyAqLwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCAqPSAweDBBCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNBUCA9IExvY2FsMAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUVEUgPSBTTVRFICha ZXJvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFUVEYgPSBT TVRGIChaZXJvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJU VlQgPSBCMUZWIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLkIxRlYgKi8KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVENUID0gQjFBQyAvKiBcX1NCXy5QQ0kwLkxQ QzAuRUMwXy5CMUFDICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTG9jYWwwID0gQjFBVCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CMUFUICovCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwICs9IDB4MDExMQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCAqPSAweDBBCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlRNUCA9IExvY2FsMAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1EQVQgPSBCMURBIC8q IFxfU0JfLlBDSTAuTFBDMC5FQzBfLkIxREEgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJZiAoKEJGVUQgIT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGVURUID0gQkZVRCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CRlVE ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkxUID0gQjFEViAvKiBcX1NC Xy5QQ0kwLkxQQzAuRUMwXy5CMURWICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTmFtZSAoRENIMCwgQnVmZmVyICgweDBBKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyAuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChE Q0gxLCAiTElPTiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TmFtZSAoRENIMiwgIkxpUCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSWYgKChCMVRZID09IE9uZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBEQ0gwID0gRENIMSAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5WUEMwLkdTQkkuRENIMSAq LwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ0hFID0g RENIMCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5WUEMwLkdTQkkuRENIMCAqLwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEQ0gwID0gRENIMiAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5WUEMwLkdTQkkuRENI MiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ0hF ID0gRENIMCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5WUEMwLkdTQkkuRENIMCAqLwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoQkROVCwgQnVmZmVyICgweDA4KQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCRE5UID0gQkROMCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CRE4wICovCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE5BTSA9IEJETlQgLyogXF9T Ql8uUENJMC5MUEMwLkVDMF8uVlBDMC5HU0JJLkJETlQgKi8KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChCTU5ULCBCdWZmZXIgKDB4MEMpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEJNTlQgPSBCTU4wIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLkJNTjAgKi8KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNTkFNID0gQk1OVCAvKiBcX1NCXy5Q Q0kwLkxQQzAuRUMwXy5WUEMwLkdTQkkuQk1OVCAqLwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5hbWUgKEJSTjAsIEJ1ZmZlciAoMHgxNykKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TG9jYWwxID0gMHgxNwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExvY2FsMiA9IDB4MkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBXaGlsZSAoTG9jYWwxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlJO MCBbKDB4MTcgLSBMb2NhbDEpXSA9IFNSQU0gKDB4MDIsIExvY2FsMikKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwyKysKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwxLS0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJSTkIgPSBCUk4wIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLlZQ QzAuR1NCSS5CUk4wICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQkZXMCA9IEZXQlQgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uRldCVCAqLwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgKExGQ00pCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVy biAoQklGQikgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uVlBDMC5HU0JJLkJJRkIgKi8KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElmICgoQXJnMCA9PSAweDAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoQklGQikgLyogXF9T Ql8uUENJMC5MUEMwLkVDMF8uVlBDMC5HU0JJLkJJRkIgKi8KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoWmVy bykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNZXRob2QgKEhPREQsIDAsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgTWV0aG9kIChTT0RELCAxLCBTZXJpYWxpemVkKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1ldGhvZCAoR0JJRCwgMCwgU2VyaWFsaXplZCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChH QlVGLCBQYWNrYWdlICgweDA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICgweDAyKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMCwgMHgwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIC4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICgweDAyKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMCwgMHgwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIC4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICgweDA4KQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAgIC8v IC4uLi4uLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICgweDA4KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAg IC8vIC4uLi4uLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElmIChFQ0FWKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChBY3F1aXJlIChMRkNNLCAweEEwMDApID09 IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXJlZk9mIChHQlVGIFtaZXJvXSkgW1plcm9d ID0gQjFDVCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CMUNUICovCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBEZXJlZk9mIChHQlVGIFtPbmVdKSBbWmVyb10gPSBaZXJv CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChCVUYxLCBCdWZm ZXIgKDB4MDgpe30pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVUYx ID0gRldCVCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5GV0JUICovCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeXRlRmllbGQgKEJVRjEsIFplcm8sIEZXMCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5dGVGaWVsZCAo QlVGMSwgT25lLCBGVzEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD cmVhdGVCeXRlRmllbGQgKEJVRjEsIDB4MDIsIEZXMikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENyZWF0ZUJ5dGVGaWVsZCAoQlVGMSwgMHgwMywgRlczKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnl0ZUZpZWxkIChCVUYxLCAw eDA0LCBGVzQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVC eXRlRmllbGQgKEJVRjEsIDB4MDUsIEZXNSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENyZWF0ZUJ5dGVGaWVsZCAoQlVGMSwgMHgwNiwgRlc2KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnl0ZUZpZWxkIChCVUYxLCAweDA3LCBG VzcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXJlZk9mIChHQlVG IFsweDAyXSkgW1plcm9dID0gRlcwIC8qIFxfU0JfLlBDSTAuTFBDMC5FQzBfLlZQQzAuR0JJRC5G VzBfICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXJlZk9mIChH QlVGIFsweDAyXSkgW09uZV0gPSBGVzEgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uVlBDMC5HQklE LkZXMV8gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcmVmT2Yg KEdCVUYgWzB4MDJdKSBbMHgwMl0gPSBGVzIgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uVlBDMC5H QklELkZXMl8gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcmVm T2YgKEdCVUYgWzB4MDJdKSBbMHgwM10gPSBGVzMgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uVlBD MC5HQklELkZXM18gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERl cmVmT2YgKEdCVUYgWzB4MDJdKSBbMHgwNF0gPSBGVzQgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8u VlBDMC5HQklELkZXNF8gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERlcmVmT2YgKEdCVUYgWzB4MDJdKSBbMHgwNV0gPSBGVzUgLyogXF9TQl8uUENJMC5MUEMwLkVD MF8uVlBDMC5HQklELkZXNV8gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERlcmVmT2YgKEdCVUYgWzB4MDJdKSBbMHgwNl0gPSBGVzYgLyogXF9TQl8uUENJMC5MUEMw LkVDMF8uVlBDMC5HQklELkZXNl8gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERlcmVmT2YgKEdCVUYgWzB4MDJdKSBbMHgwN10gPSBGVzcgLyogXF9TQl8uUENJMC5M UEMwLkVDMF8uVlBDMC5HQklELkZXN18gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERlcmVmT2YgKEdCVUYgWzB4MDNdKSBbWmVyb10gPSBaZXJvCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKEdCVUYpIC8qIFxfU0Jf LlBDSTAuTFBDMC5FQzBfLlZQQzAuR0JJRC5HQlVGICovCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoQVBEVCwgWmVybykKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoQVBQQywgMSwgU2VyaWFsaXplZCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBUERUID0gQXJnMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoWmVy bykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNZXRob2QgKERCU0wsIDAsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChQYWNrYWdl ICgweDEwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHhDOSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4QUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3RSwgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDB4NjksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDU2LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NSwg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzYsIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDI5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgxRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUs IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBFLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwOSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA1 LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChTQlNMLCAxLCBTZXJpYWxpemVkKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElmIChFQ0FWKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChBY3F1aXJlIChMRkNNLCAweEEwMDApID09IFpl cm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBBcmcwCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJZiAoKExvY2FsMCA9PSBPbmUpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExDQlYgPSAweDBFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYg KChMb2NhbDAgPT0gMHgwMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTENCViA9IDB4 MDcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNNKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9k IChTVEhULCAxLCBTZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoWmVybykKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgRGV2aWNlIChDSU5EKQogICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoX0hJRCwgIkNJTkQwQzYwIikgIC8v IF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9DSUQsICJQ TlAwQzYwIiAvKiBEaXNwbGF5IFNlbnNvciBEZXZpY2UgKi8pICAvLyBfQ0lEOiBDb21wYXRpYmxl IElECiAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXpl ZCkgIC8vIF9TVEE6IFN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJZiAoKFlHNTMgPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEYpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg UmV0dXJuIChaZXJvKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9SRUcsIDIsIE5vdFNlcmlhbGl6ZWQp ICAvLyBfUkVHOiBSZWdpb24gQXZhaWxhYmlsaXR5CiAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICBJZiAoKEFyZzAgPT0gMHgwMykpCiAgICAgICAgICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDQVYgPSBBcmcxCiAgICAgICAg ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIElmICgoKEFyZzAgPT0g MHgwMykgJiYgKEFyZzEgPT0gT25lKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElmICgoVFBPUyA9PSAweDQwKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBP bmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJZiAoKFRQT1MgPT0gMHg4MCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwID0gMHgwMgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoVFBPUyA9 PSAweDUwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMb2NhbDAgPSAweDAzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChUUE9TID09IDB4NjApKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExv Y2FsMCA9IDB4MDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJZiAoKFRQT1MgPT0gMHg2MSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwID0gMHgwNQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElm ICgoVFBPUyA9PSAweDcwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSAweDA2CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChBY3F1aXJlIChMRkNN LCAweEEwMDApID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE9TVFkgPSBMb2NhbDAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSURTID0gTFNURSAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5MU1RFICov CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSAoTEZDTSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChDTUZDLCAwLCBTZXJpYWxp emVkKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJu IChFRElEKSAvKiBcRURJRCAqLwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAgICAgTWV0aG9kIChMRkNJLCAyLCBTZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChPS1JCKSAvKiBcT0tSQiAqLwogICAgICAg ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTExLCAwLCBOb3RT ZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIElmIChJR0RTKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKF5eXkdQMTcuVkdBLkJSSUwgPT0gMHgwQykp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQktMVCA9IE9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBQODBIID0gMHgxMQogICAg ICAgICAgICAgICAgICAgICAgICBOb3RpZnkgKF5eXkdQMTcuVkdBLkxDRCwgMHg4NykgLy8gRGV2 aWNlLVNwZWNpZmljCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeSAoVlBDMCwgMHg4MCkg Ly8gU3RhdHVzIENoYW5nZQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg ICAgTWV0aG9kIChfUTEyLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAg ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIElmIChJR0RTKQogICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKEJL TFQgPT0gT25lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBCS0xUID0gWmVybwogICAgICAgICAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFA4MEggPSAweDEyCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZ5ICheXl5HUDE3LlZHQS5MQ0QsIDB4ODYp IC8vIERldmljZS1TcGVjaWZpYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlm eSAoVlBDMCwgMHg4MCkgLy8gU3RhdHVzIENoYW5nZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEVs c2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg UDgwSCA9IDB4MTIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeSAoXl5eR1AxNy5W R0EuTENELCAweDg2KSAvLyBEZXZpY2UtU3BlY2lmaWMKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5vdGlmeSAoVlBDMCwgMHg4MCkgLy8gU3RhdHVzIENoYW5nZQogICAgICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRo b2QgKF9RMTMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUXh4OiBFQyBRdWVyeQogICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChYWDEx LCBaZXJvLCBTU1pFKQogICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeXRlRmllbGQgKFhY MTEsIDB4MDIsIFNNVUYpCiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQg KFhYMTEsIDB4MDMsIFNNVUQpCiAgICAgICAgICAgICAgICAgICAgICAgIFNTWkUgPSAweDA3CiAg ICAgICAgICAgICAgICAgICAgICAgIFNNVUYgPSAweDA1CiAgICAgICAgICAgICAgICAgICAgICAg IElmICgoUVVJRSA9PSAweDAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgU01VRCA9IDB4MzJDOAogICAgICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgU01VRCA9IDB4M0E5OAogICAgICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBBTElCICgweDBDLCBYWDExKQogICAg ICAgICAgICAgICAgICAgICAgICBQODBIID0gMHgxMwogICAgICAgICAgICAgICAgICAgICAgICBJ ZiAoKFFVSUUgPT0gMHgwMikpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNNQkIgPSAweDM2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBT TUJBID0gMHhDQQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg ICAgIEVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgU01CQiA9IDB4MzUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQkEgPSAweENB CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg ICAgICAgICAgICAgIE1ldGhvZCAoX1ExNSwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ReHg6IEVD IFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBQODBI ID0gMHgxNQogICAgICAgICAgICAgICAgICAgICAgICBJZiAoRUNBVikKICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChBY3F1aXJlIChMRkNN LCAweEEwMDApID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExJRFMgPSBMU1RFIC8qIFxfU0JfLlBDSTAuTFBDMC5F QzBfLkxTVEUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIChMRkNN KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgICAgICBOb3RpZnkgKExJRCwgMHg4MCkgLy8gU3RhdHVzIENo YW5nZQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChf UTE2LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFA4MEggPSAweDE2CiAgICAgICAgICAgICAg ICAgICAgICAgIElmIChFQ0FWKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJZiAoKEFjcXVpcmUgKExGQ00sIDB4QTAwMCkgPT0gWmVybykpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTElEUyA9IExTVEUgLyogXF9TQl8uUENJMC5MUEMwLkVDMF8uTFNURSAqLwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgKExGQ00pCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg ICAgIE5vdGlmeSAoTElELCAweDgwKSAvLyBTdGF0dXMgQ2hhbmdlCiAgICAgICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRob2QgKF9RMjUsIDAsIE5vdFNlcmlhbGl6ZWQp ICAvLyBfUXh4OiBFQyBRdWVyeQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICAgICAgUDgwSCA9IDB4MjUKICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZ5IChBRFAw LCAweDgwKSAvLyBTdGF0dXMgQ2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeSAo QkFUMCwgMHg4MCkgLy8gU3RhdHVzIENoYW5nZQogICAgICAgICAgICAgICAgICAgICAgICBOb3Rp ZnkgKEJBVDAsIDB4ODEpIC8vIEluZm9ybWF0aW9uIENoYW5nZQogICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTM3LCAwLCBOb3RTZXJpYWxpemVkKSAg Ly8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgICAgIFA4MEggPSAweDM3CiAgICAgICAgICAgICAgICAgICAgICAgIFNsZWVwICgweEM4KQog ICAgICAgICAgICAgICAgICAgICAgICBQV1JTID0gT25lCiAgICAgICAgICAgICAgICAgICAgICAg IE5vdGlmeSAoQURQMCwgMHg4MCkgLy8gU3RhdHVzIENoYW5nZQogICAgICAgICAgICAgICAgICAg ICAgICBOb3RpZnkgKEJBVDAsIDB4ODApIC8vIFN0YXR1cyBDaGFuZ2UKICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoX1EzOCwgMCwgTm90U2VyaWFsaXpl ZCkgIC8vIF9ReHg6IEVDIFF1ZXJ5CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICBQODBIID0gMHgzOAogICAgICAgICAgICAgICAgICAgICAgICBTbGVlcCAoMHhD OCkKICAgICAgICAgICAgICAgICAgICAgICAgUFdSUyA9IFplcm8KICAgICAgICAgICAgICAgICAg ICAgICAgTm90aWZ5IChBRFAwLCAweDgwKSAvLyBTdGF0dXMgQ2hhbmdlCiAgICAgICAgICAgICAg ICAgICAgICAgIE5vdGlmeSAoQkFUMCwgMHg4MCkgLy8gU3RhdHVzIENoYW5nZQogICAgICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTMyLCAwLCBOb3RTZXJp YWxpemVkKSAgLy8gX1F4eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIFA4MEggPSAweDMyCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlm eSAoUFdSQiwgMHg4MCkgLy8gU3RhdHVzIENoYW5nZQogICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgTWV0aG9kIChfUTNFLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1F4 eDogRUMgUXVlcnkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg IFA4MEggPSAweDNFCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeSAoXl5eXkkyQ0IuVFBE MCwgMHgzRSkgLy8gUmVzZXJ2ZWQKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgICAgIE1ldGhvZCAoX1EzRiwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ReHg6IEVDIFF1ZXJ5 CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBQODBIID0gMHgz RgogICAgICAgICAgICAgICAgICAgICAgICBOb3RpZnkgKF5eXl5JMkNCLlRQRDAsIDB4M0YpIC8v IFJlc2VydmVkCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBNZXRo b2QgKF9RNDQsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUXh4OiBFQyBRdWVyeQogICAgICAgICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgUDgwSCA9IDB4NDQKICAgICAgICAg ICAgICAgICAgICAgICAgTm90aWZ5IChWUEMwLCAweDgwKSAvLyBTdGF0dXMgQ2hhbmdlCiAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIFNjb3Bl IChcX1NCKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIERldmljZSAoQURQ MCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9I SUQsICJBQ1BJMDAwMyIgLyogUG93ZXIgU291cmNlIERldmljZSAqLykgIC8vIF9ISUQ6IEhhcmR3 YXJlIElECiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKFhYMDAsIEJ1ZmZlciAoMHgwMyl7 fSkKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAoQUNEQywgMHhGRikKICAgICAgICAgICAg ICAgICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3Rh dHVzCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IElmICgoRUNPTiA9PSBPbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwRikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAg ICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAo X1BTUiwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QU1I6IFBvd2VyIFNvdXJjZQogICAgICAgICAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoXl5QQ0kwLkxQ QzAuRUMwLkVDQVYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSWYgKChBY3F1aXJlICheXlBDSTAuTFBDMC5FQzAuTEZDTSwgMHhB MDAwKSA9PSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCA9IE9uZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBeXlBDSTAuTFBDMC5FQzAuQURQVCAvKiBcX1NC Xy5QQ0kwLkxQQzAuRUMwXy5BRFBUICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElmICgoKExvY2FsMCAhPSBBQ0RDKSB8fCAoQUNEQyA9PSAweEZGKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoWFgwMCwgWmVybywgU1NaRSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5dGVGaWVsZCAoWFgwMCwgMHgwMiwg QUNTVCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTWkUgPSAweDAz CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoTG9jYWwwKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFA4MEggPSAweEFDCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQUZONCAoT25lKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEFDU1QgPSBaZXJvCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDgwSCA9IDB4REMKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRk40ICgweDAyKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDU1QgPSBPbmUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTbGVlcCAoMHg2NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFMSUIgKE9uZSwgWFgwMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFDREMgPSBMb2NhbDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSAoXl5QQ0kw LkxQQzAuRUMwLkxGQ00pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVy biAoTG9jYWwwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgICAgICAgICAgTWV0aG9kIChfUENMLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BDTDogUG93 ZXIgQ29uc3VtZXIgTGlzdAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZXR1cm4gKFBhY2thZ2UgKDB4MDEpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1NCCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBEZXZpY2UgKExJRCkKICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBO UDBDMEQiKSAvKiBMaWQgRGV2aWNlICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAg ICAgICAgICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTog U3RhdHVzCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElmICgoRUNPTiA9PSBPbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwRikKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8p CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhv ZCAoX0xJRCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9MSUQ6IExpZCBTdGF0dXMKICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwID0gWmVy bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgKChBY3F1aXJlICheXlBDSTAuTFBDMC5F QzAuTEZDTSwgMHhBMDAwKSA9PSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBeXlBDSTAuTFBDMC5FQzAu TFNURSAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5MU1RFICovCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVsZWFzZSAoXl5QQ0kwLkxQQzAuRUMwLkxGQ00pCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChMb2Nh bDApCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgIERldmljZSAoUFdSQikKICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMEMiKSAvKiBQb3dl ciBCdXR0b24gRGV2aWNlICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAgICAg ICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVz CiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElm ICgoRUNPTiA9PSBPbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwRikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAg ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg ICAgICAgIERldmljZSAoV01JNCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMTQiKSAvKiBXaW5kb3dzIE1hbmFn ZW1lbnQgSW5zdHJ1bWVudGF0aW9uIERldmljZSAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAg ICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKF9VSUQsIDB4MDQpICAvLyBfVUlEOiBVbmlxdWUg SUQKICAgICAgICAgICAgICAgICAgICAgICAgTXV0ZXggKE1XTUksIDB4MDApCiAgICAgICAgICAg ICAgICAgICAgICAgIE5hbWUgKF9XREcsIEJ1ZmZlciAoMHgyOCkKICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDAwMCAqLyAgMHg3NiwgMHgz NywgMHhBMCwgMHhDMywgMHhBQywgMHg1MSwgMHhBQSwgMHg0OSwgIC8vIHY3Li4uUS5JCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDA4ICovICAweEFELCAweDBGLCAweEYyLCAweEY3 LCAweEQ2LCAweDJDLCAweDNGLCAweDNDLCAgLy8gLi4uLi4sPzwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIDAwMTAgKi8gIDB4NDEsIDB4NDQsIDB4MDMsIDB4MDUsIDB4MjEsIDB4MTIs IDB4OTAsIDB4MDUsICAvLyBBRC4uIS4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog MDAxOCAqLyAgMHg2NiwgMHhENSwgMHhEMSwgMHgxMSwgMHhCMiwgMHhGMCwgMHgwMCwgMHhBMCwg IC8vIGYuLi4uLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDIwICovICAweEM5 LCAweDA2LCAweDI5LCAweDEwLCAweDQyLCAweDQ0LCAweDAxLCAweDAwICAgLy8gLi4pLkJELi4K ICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAo SVRFTSwgUGFja2FnZSAoMHgwMykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgUGFja2FnZSAoMHgwMykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBaZXJvLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiQkFUMCBCYXRNYWtlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDMpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT25lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiQkFUMCBId0lkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIAoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UgKDB4MDMpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWmVybywgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIkJBVDAgTWZnRGF0ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoV1FB RCwgMSwgTm90U2VyaWFsaXplZCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgSWYgKF5eUENJMC5MUEMwLkVDMC5FQ0FWKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmICgoQWNx dWlyZSAoXl5QQ0kwLkxQQzAuRUMwLkxGQ00sIDB4QTAwMCkgPT0gWmVybykpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMb2NhbDAgPSBQU0FHIChBcmcwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMb2NhbDEgPSBEZXJlZk9mIChJVEVNIFtMb2NhbDBdKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMb2NhbDIgPSBEZXJlZk9mIChMb2NhbDEgW1plcm9dKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDMgPSBEZXJlZk9mIChMb2NhbDEgW09uZV0p CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsNCA9IERlcmVmT2YgKExv Y2FsMSBbMHgwMl0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsNSA9 IEJBVEQgKExvY2FsMiwgTG9jYWwzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDb25jYXRlbmF0ZSAoTG9jYWw0LCAiLCIsIExvY2FsNikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQ29uY2F0ZW5hdGUgKExvY2FsNiwgTG9jYWw1LCBMb2NhbDcpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgKF5eUENJMC5MUEMwLkVDMC5M RkNNKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKExvY2FsNykK ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9k IChQU0FHLCAxLCBOb3RTZXJpYWxpemVkKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKEFyZzApCiAgICAgICAgICAgICAgICAgICAg ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZCAoQkFURCwgMiwgTm90U2VyaWFs aXplZCkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgTmFtZSAoU1RSQiwgQnVmZmVyICgweDBBKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKEJVRlIsIEJ1ZmZlciAoMHgw OCl7fSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRlIgPSBeXlBDSTAuTFBDMC5FQzAu RldCVCAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5GV0JUICovCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEJVRlIsIFplcm8sIE1JRDApCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEJVRlIsIDB4MDIsIEhJRDApCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEJVRlIsIDB4MDQsIEZJUjApCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEJVRlIsIDB4MDYsIERB VDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAoKEFyZzAgPT0gWmVybykpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SWYgKChBcmcxID09IFplcm8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSQiA9IFRvSGV4U3RyaW5nIChNSUQw KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSWYgKChBcmcxID09IE9uZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJCID0gVG9IZXhT dHJpbmcgKEhJRDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJZiAoKEFyZzEgPT0gMHgwMikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM b2NhbDAgPSBeXlBDSTAuTFBDMC5FQzAuQjFEQSAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5CMURB ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgKERBVEIsIEJ1ZmZl ciAoMHgwOSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAwMDAwMDAwIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMb2NhbDMgPSAweDA3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2Fs MSA9IChMb2NhbDAgJiAweDFGKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX aGlsZSAoTG9jYWwxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXZpZGUgKExvY2FsMSwgMHgwQSwg TG9jYWwyLCBMb2NhbDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE QVRCIFtMb2NhbDNdID0gKExvY2FsMiArIDB4MzApCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMb2NhbDMtLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDMgPSAweDA1CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMSA9ICgoTG9jYWwwICYgMHgw MUUwKSA+PiAweDA1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSAo TG9jYWwxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXZpZGUgKExvY2FsMSwgMHgwQSwgTG9jYWwy LCBMb2NhbDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRCIFtM b2NhbDNdID0gKExvY2FsMiArIDB4MzApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMb2NhbDMtLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDMgPSAweDAzCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsMSA9ICgoKExvY2FsMCAmIDB4RkUwMCkg Pj4gMHgwOSkgKyAweDA3QkMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdo aWxlIChMb2NhbDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpdmlkZSAoTG9jYWwxLCAweDBBLCBM b2NhbDIsIExvY2FsMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERB VEIgW0xvY2FsM10gPSAoTG9jYWwyICsgMHgzMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExvY2FsMy0tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUkIgPSBEQVRCIC8qIFxf U0JfLldNSTQuQkFURC5EQVRCICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJldHVybiAoVG9TdHJpbmcgKFNUUkIsIE9uZXMpKQogICAgICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgICAgICBOYW1lIChXUUJELCBCdWZmZXIgKDB4MDI3NSkKICAg ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDAw MCAqLyAgMHg0NiwgMHg0RiwgMHg0RCwgMHg0MiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgIC8v IEZPTUIuLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDA4ICovICAweDY1LCAw eDAyLCAweDAwLCAweDAwLCAweEY4LCAweDA1LCAweDAwLCAweDAwLCAgLy8gZS4uLi4uLi4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAwMTAgKi8gIDB4NDQsIDB4NTMsIDB4MDAsIDB4 MDEsIDB4MUEsIDB4N0QsIDB4REEsIDB4NTQsICAvLyBEUy4uLn0uVAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogMDAxOCAqLyAgMHgxOCwgMHhEMSwgMHg4MiwgMHgwMCwgMHgwMSwgMHgw NiwgMHgxOCwgMHg0MiwgIC8vIC4uLi4uLi5CCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiAwMDIwICovICAweDEwLCAweDA1LCAweDEwLCAweDhBLCAweDBELCAweDIxLCAweDAyLCAweDBC LCAgLy8gLi4uLi4hLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAwMjggKi8gIDB4 ODMsIDB4NTAsIDB4NTAsIDB4MTgsIDB4MTQsIDB4QTAsIDB4NDUsIDB4NDEsICAvLyAuUFAuLi5F QQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDAzMCAqLyAgMHhDOCwgMHgwNSwgMHgx NCwgMHg5NSwgMHgwMiwgMHgyMSwgMHhDMywgMHgwMiwgIC8vIC4uLi4uIS4uCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiAwMDM4ICovICAweDE0LCAweDBCLCAweDcwLCAweDJFLCAweDQw LCAweEJBLCAweDAwLCAweEU1LCAgLy8gLi5wLkAuLi4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIDAwNDAgKi8gIDB4MjgsIDB4NzIsIDB4MEMsIDB4MjIsIDB4MDIsIDB4RjcsIDB4RUYs IDB4MEYsICAvLyAoci4iLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDA0OCAq LyAgMHgzMSwgMHhEMCwgMHgxOCwgMHhBOCwgMHg1MCwgMHgwOCwgMHg4OSwgMHgwMCwgIC8vIDEu Li5QLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDUwICovICAweEE2LCAweDQy LCAweEUwLCAweDA4LCAweDQxLCAweEJGLCAweDAyLCAweDEwLCAgLy8gLkIuLkEuLi4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIDAwNTggKi8gIDB4M0EsIDB4MTQsIDB4MjAsIDB4NTMs IDB4ODAsIDB4NDEsIDB4MDEsIDB4NEUsICAvLyA6LiBTLkEuTgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogMDA2MCAqLyAgMHgxMSwgMHg0NCwgMHgxMCwgMHhBNSwgMHg2NSwgMHgwMSwg MHhCQSwgMHgwNSwgIC8vIC5ELi5lLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAw MDY4ICovICAweEY4LCAweDE2LCAweEEwLCAweDFELCAweDQyLCAweDY4LCAweDkxLCAweDlBLCAg Ly8gLi4uLkJoLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAwNzAgKi8gIDB4OUYs IDB4MDQsIDB4ODEsIDB4NkEsIDB4NUIsIDB4ODAsIDB4NDUsIDB4MDEsICAvLyAuLi5qWy5FLgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDA3OCAqLyAgMHhCMiwgMHg0MSwgMHgwOCwg MHhBMCwgMHhDNywgMHhDMSwgMHg0NCwgMHgwRSwgIC8vIC5BLi4uLkQuCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiAwMDgwICovICAweDAyLCAweDI1LCAweDY2LCAweDEwLCAweDI4LCAw eDlELCAweDczLCAweDkwLCAgLy8gLiVmLigucy4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIDAwODggKi8gIDB4NEQsIDB4NjAsIDB4RTEsIDB4OUYsIDB4NEMsIDB4OTQsIDB4RjMsIDB4 ODgsICAvLyBNYC4uTC4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDA5MCAqLyAg MHg5MiwgMHhFMCwgMHhBOCwgMHgwRSwgMHgyMiwgMHg0MiwgMHhGMCwgMHg3MiwgIC8vIC4uLi4i Qi5yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMDk4ICovICAweDA1LCAweDQ4LCAw eDlFLCAweDgwLCAweDM0LCAweDRGLCAweDRDLCAweEQ2LCAgLy8gLkguLjRPTC4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIDAwQTAgKi8gIDB4MDcsIDB4QTEsIDB4MjEsIDB4QjAsIDB4 MTEsIDB4RjAsIDB4ODgsIDB4MTIsICAvLyAuLiEuLi4uLgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogMDBBOCAqLyAgMHg0MCwgMHg1OCwgMHhBMCwgMHg3NSwgMHgyQSwgMHgxNCwgMHgw QywgMHhDQSwgIC8vIEBYLnUqLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMEIw ICovICAweDAzLCAweDg4LCAweEU0LCAweDhDLCAweDE1LCAweDA1LCAweDZDLCAweEFGLCAgLy8g Li4uLi4ubC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAwQjggKi8gIDB4MTMsIDB4 OTEsIDB4QzksIDB4ODEsIDB4NTIsIDB4NDksIDB4NzAsIDB4QTgsICAvLyAuLi4uUklwLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogMDBDMCAqLyAgMHg2MSwgMHg1QSwgMHhFMiwgMHhF QywgMHgzNCwgMHhCMiwgMHgxMywgMHgzOSwgIC8vIGFaLi40Li45CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiAwMEM4ICovICAweEI2LCAweEE2LCAweDg3LCAweDJDLCAweDQ4LCAweDI2 LCAweDZELCAweDI4LCAgLy8gLi4uLEgmbSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IDAwRDAgKi8gIDB4QTgsIDB4QjEsIDB4N0IsIDB4NUEsIDB4MjcsIDB4RTUsIDB4OTksIDB4NDYs ICAvLyAuLntaJy4uRgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDBEOCAqLyAgMHgz QywgMHgyOCwgMHhDMywgMHgyNCwgMHhGMCwgMHgyOCwgMHgxOCwgMHgxQSwgIC8vIDwoLiQuKC4u CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMEUwICovICAweDI3LCAweDI4LCAweDBC LCAweDQyLCAweDBFLCAweDA2LCAweDhBLCAweDAyLCAgLy8gJyguQi4uLi4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIDAwRTggKi8gIDB4M0MsIDB4MDksIDB4Q0YsIDB4QjEsIDB4Nzgs IDB4MDEsIDB4QzIsIDB4NjcsICAvLyA8Li4ueC4uZwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogMDBGMCAqLyAgMHg0QywgMHhBNiwgMHgxRCwgMHgyMywgMHg4MSwgMHhDRiwgMHgwNCwg MHgxRSwgIC8vIEwuLiMuLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMEY4ICov ICAweEU2LCAweDMxLCAweDYzLCAweDQ3LCAweDE0LCAweDJFLCAweEUwLCAweEY5LCAgLy8gLjFj Ry4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAxMDAgKi8gIDB4MUMsIDB4NDMs IDB4RTQsIDB4QjgsIDB4ODcsIDB4MUEsIDB4RTMsIDB4MjgsICAvLyAuQy4uLi4uKAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogMDEwOCAqLyAgMHgyMiwgMHgzRiwgMHgwOCwgMHg2MCwg MHgwNSwgMHgxRCwgMHgwNCwgMHg5MCwgIC8vICI/LmAuLi4uCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiAwMTEwICovICAweDM4LCAweEZGLCAweEZGLCAweEUzLCAweDg5LCAweDc2LCAw eERBLCAweEMxLCAgLy8gOC4uLi52Li4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAx MTggKi8gIDB4NDIsIDB4QzcsIDB4MzksIDB4QkYsIDB4RDAsIDB4MTgsIDB4RDEsIDB4RTMsICAv LyBCLjkuLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDEyMCAqLyAgMHg0MCwg MHhDOSwgMHg4MCwgMHg5MCwgMHg0NywgMHgwMSwgMHg1NiwgMHg2MSwgIC8vIEAuLi5HLlZhCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMTI4ICovICAweDM1LCAweDkxLCAweDA0LCAw eEJFLCAweDA3LCAweDc0LCAweDc2LCAweDEyLCAgLy8gNS4uLi50di4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIDAxMzAgKi8gIDB4RDAsIDB4QTUsIDB4MjEsIDB4NDYsIDB4NkYsIDB4 MDgsIDB4RDIsIDB4MjYsICAvLyAuLiFGby4uJgogICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogMDEzOCAqLyAgMHhDMCwgMHg5NiwgMHgwMCwgMHg2QiwgMHgwMiwgMHg4QywgMHhERCwgMHgw NiwgIC8vIC4uLmsuLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMTQwICovICAw eDA4LCAweENBLCAweEQxLCAweDM2LCAweDg3LCAweDIyLCAweDg0LCAweDI4LCAgLy8gLi4uNi4i LigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAxNDggKi8gIDB4MjEsIDB4RTIsIDB4 ODYsIDB4QUMsIDB4MTEsIDB4NDUsIDB4MTAsIDB4OTUsICAvLyAhLi4uLkUuLgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogMDE1MCAqLyAgMHg0MSwgMHgwOCwgMHgzNSwgMHg1MCwgMHhE OCwgMHgyOCwgMHhGMSwgMHg4RCwgIC8vIEEuNVAuKC4uCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiAwMTU4ICovICAweDEzLCAweDIyLCAweDQ4LCAweDAyLCAweDhGLCAweDFDLCAweDc3 LCAweDA0LCAgLy8gLiJILi4udy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAxNjAg Ki8gIDB4RjAsIDB4RDgsIDB4MEUsIDB4RTgsIDB4MDQsIDB4NEYsIDB4RTksIDB4NzEsICAvLyAu Li4uLk8ucQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDE2OCAqLyAgMHhDMSwgMHgw NCwgMHg5RSwgMHhGNywgMHhDMSwgMHgxRCwgMHhFQSwgMHgyMSwgIC8vIC4uLi4uLi4hCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiAwMTcwICovICAweDFDLCAweDcwLCAweEQ0LCAweDE4 LCAweEM3LCAweEYxLCAweDRDLCAweDQwLCAgLy8gLnAuLi4uTEAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIDAxNzggKi8gIDB4MTYsIDB4MkUsIDB4MEQsIDB4MjAsIDB4OEEsIDB4MDQs IDB4OEYsIDB4M0EsICAvLyAuLi4gLi4uOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog MDE4MCAqLyAgMHgzMiwgMHhGOCwgMHg3MCwgMHhFMCwgMHg0MSwgMHg3QSwgMHg5RSwgMHg5RSwg IC8vIDIucC5Bei4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMTg4ICovICAweDQw LCAweDkwLCAweDQzLCAweDM4LCAweDgyLCAweEM3LCAweDg2LCAweEE3LCAgLy8gQC5DOC4uLi4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAxOTAgKi8gIDB4MDIsIDB4OEYsIDB4ODEs IDB4NUQsIDB4MTcsIDB4N0MsIDB4MEUsIDB4RjAsICAvLyAuLi5dLnwuLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogMDE5OCAqLyAgMHgzMSwgMHgwMSwgMHhFRiwgMHgxQSwgMHg1MCwg MHhBMywgMHg3RSwgMHgzQSwgIC8vIDEuLi5QLn46CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiAwMUEwICovICAweDYwLCAweDkzLCAweDBFLCAweDg3LCAweDE5LCAweEFFLCAweDg3LCAw eDFELCAgLy8gYC4uLi4uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAxQTggKi8g IDB4RUUsIDB4MDQsIDB4MUUsIDB4MEUsIDB4MUUsIDB4MzMsIDB4RjgsIDB4OTEsICAvLyAuLi4u LjMuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDFCMCAqLyAgMHhDMywgMHg4Mywg MHhDMywgMHhDRCwgMHhGMCwgMHg2NCwgMHg4RSwgMHhBQywgIC8vIC4uLi4uZC4uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiAwMUI4ICovICAweDU0LCAweDAxLCAweDY2LCAweDRGLCAw eDA4LCAweDNBLCAweDRELCAweEY4LCAgLy8gVC5mTy46TS4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIDAxQzAgKi8gIDB4Q0MsIDB4QzEsIDB4NkUsIDB4MDAsIDB4RTcsIDB4RDMsIDB4 MzMsIDB4MjQsICAvLyAuLm4uLi4zJAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDFD OCAqLyAgMHg5MSwgMHgzRiwgMHgwOCwgMHhENCwgMHhDOCwgMHgwQywgMHhFRCwgMHg2OSwgIC8v IC4/Li4uLi5pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMUQwICovICAweEJGLCAw eDdBLCAweDE4LCAweEYyLCAweEExLCAweEUwLCAweEIwLCAweDk4LCAgLy8gLnouLi4uLi4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAxRDggKi8gIDB4RDgsIDB4QjMsIDB4MDcsIDB4 MUQsIDB4MEYsIDB4RjgsIDB4QUYsIDB4MjQsICAvLyAuLi4uLi4uJAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogMDFFMCAqLyAgMHgwRiwgMHgxQiwgMHg5RSwgMHhCRSwgMHhFNywgMHg2 QiwgMHg4MiwgMHg5MSwgIC8vIC4uLi4uay4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiAwMUU4ICovICAweDA3LCAweDhFLCAweDFFLCAweDg4LCAweEExLCAweDlGLCAweDM4LCAweDBF LCAgLy8gLi4uLi4uOC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAxRjAgKi8gIDB4 RTMsIDB4MzQsIDB4N0MsIDB4MDksIDB4RjEsIDB4MzksIDB4RTAsIDB4RkYsICAvLyAuNHwuLjku LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDFGOCAqLyAgMHgxRiwgMHgyNCwgMHhD NiwgMHgzMSwgMHg3OSwgMHg3MCwgMHgzQywgMHhEOCwgIC8vIC4kLjF5cDwuCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiAwMjAwICovICAweEM4LCAweEU5LCAweDUxLCAweEM1LCAweDQ3 LCAweDBBLCAweDdFLCAweEJFLCAgLy8gLi5RLkcufi4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIDAyMDggKi8gIDB4RjAsIDB4OTEsIDB4ODIsIDB4NUQsIDB4MTAsIDB4OUUsIDB4MUMs IDB4MEMsICAvLyAuLi5dLi4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDIxMCAq LyAgMHg3MSwgMHgzOCwgMHg2NywgMHhFNSwgMHgxMywgMHg4NSwgMHgwRiwgMHgyQSwgIC8vIHE4 Zy4uLi4qCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMjE4ICovICAweEI4LCAweDEz LCAweDA1LCAweDVDLCAweDg1LCAweEU4LCAweEU0LCAweDM2LCAgLy8gLi4uXC4uLjYKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIDAyMjAgKi8gIDB4NjEsIDB4QjQsIDB4NjcsIDB4ODEs IDB4QzcsIDB4MDksIDB4OTgsIDB4MDcsICAvLyBhLmcuLi4uLgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogMDIyOCAqLyAgMHgwMSwgMHhGMCwgMHg4RCwgMHhERiwgMHgwNywgMHgxOSwg MHhCMCwgMHg0RCwgIC8vIC4uLi4uLi5NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAw MjMwICovICAweDA5LCAweDNCLCAweDI0LCAweDc4LCAweDQ3LCAweDE5LCAweEUwLCAweDcxLCAg Ly8gLjskeEcuLnEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAyMzggKi8gIDB4MzIs IDB4QzEsIDB4MUQsIDB4MjcsIDB4M0MsIDB4MDQsIDB4M0UsIDB4ODAsICAvLyAyLi4nPC4+Lgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDI0MCAqLyAgMHg4NywgMHg5MCwgMHg5Mywg MHhCNCwgMHhEMiwgMHhBOSwgMHgyMSwgMHhDRiwgIC8vIC4uLi4uLiEuCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiAwMjQ4ICovICAweDNDLCAweDYwLCAweDFCLCAweDA2LCAweDU3LCAw eDY4LCAweEQzLCAweEE3LCAgLy8gPGAuLldoLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIDAyNTAgKi8gIDB4NDYsIDB4QTMsIDB4NTYsIDB4MEQsIDB4Q0EsIDB4RDQsIDB4MjgsIDB4 RDMsICAvLyBGLlYuLi4oLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMDI1OCAqLyAg MHhBMCwgMHg1NiwgMHg5RiwgMHg0QSwgMHg4RCwgMHgxOSwgMHhGQiwgMHhFMSwgIC8vIC5WLkou Li4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwMjYwICovICAweDU4LCAweERDLCAw eEJCLCAweDQwLCAweDA3LCAweDAzLCAweDBCLCAweDdCLCAgLy8gWC4uQC4uLnsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIDAyNjggKi8gIDB4MjEsIDB4RTgsIDB4ODgsIDB4RTAsIDB4 NTgsIDB4MjAsIDB4MzQsIDB4MDgsICAvLyAhLi4uWCA0LgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogMDI3MCAqLyAgMHg5RCwgMHg0MCwgMHhGQywgMHhGRiwgMHgwNyAgICAgICAgICAg ICAgICAgICAgIC8vIC5ALi4uCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIE11dGV4IChQU01Y LCAweDAwKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBPcGVyYXRpb25SZWdpb24g KFBJUlEsIFN5c3RlbUlPLCAweDBDMDAsIDB4MDIpCiAgICAgICAgRmllbGQgKFBJUlEsIEJ5dGVB Y2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICAgICAgewogICAgICAgICAgICBQSURYLCAgIDgsIAog ICAgICAgICAgICBQREFULCAgIDgKICAgICAgICB9CgogICAgICAgIEluZGV4RmllbGQgKFBJRFgs IFBEQVQsIEJ5dGVBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICAgICAgewogICAgICAgICAgICBQ SVJBLCAgIDgsIAogICAgICAgICAgICBQSVJCLCAgIDgsIAogICAgICAgICAgICBQSVJDLCAgIDgs IAogICAgICAgICAgICBQSVJELCAgIDgsIAogICAgICAgICAgICBQSVJFLCAgIDgsIAogICAgICAg ICAgICBQSVJGLCAgIDgsIAogICAgICAgICAgICBQSVJHLCAgIDgsIAogICAgICAgICAgICBQSVJI LCAgIDgsIAogICAgICAgICAgICBPZmZzZXQgKDB4MEMpLCAKICAgICAgICAgICAgU0lSQSwgICA4 LCAKICAgICAgICAgICAgU0lSQiwgICA4LCAKICAgICAgICAgICAgU0lSQywgICA4LCAKICAgICAg ICAgICAgU0lSRCwgICA4LCAKICAgICAgICAgICAgUElSUywgICA4LCAKICAgICAgICAgICAgT2Zm c2V0ICgweDEzKSwgCiAgICAgICAgICAgIEhEQUQsICAgOCwgCiAgICAgICAgICAgIE9mZnNldCAo MHgxNyksIAogICAgICAgICAgICBTRENMLCAgIDgsIAogICAgICAgICAgICBPZmZzZXQgKDB4MUEp LCAKICAgICAgICAgICAgU0RJTywgICA4LCAKICAgICAgICAgICAgT2Zmc2V0ICgweDMwKSwgCiAg ICAgICAgICAgIFVTQjEsICAgOCwgCiAgICAgICAgICAgIE9mZnNldCAoMHgzNCksIAogICAgICAg ICAgICBVU0IzLCAgIDgsIAogICAgICAgICAgICBPZmZzZXQgKDB4NDEpLCAKICAgICAgICAgICAg U0FUQSwgICA4LCAKICAgICAgICAgICAgT2Zmc2V0ICgweDYyKSwgCiAgICAgICAgICAgIEdJT0Ms ICAgOCwgCiAgICAgICAgICAgIE9mZnNldCAoMHg3MCksIAogICAgICAgICAgICBJMkMwLCAgIDgs IAogICAgICAgICAgICBJMkMxLCAgIDgsIAogICAgICAgICAgICBJMkMyLCAgIDgsIAogICAgICAg ICAgICBJMkMzLCAgIDgsIAogICAgICAgICAgICBVUlQwLCAgIDgsIAogICAgICAgICAgICBVUlQx LCAgIDgKICAgICAgICB9CgogICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoS0JERCwgU3lzdGVtSU8s IDB4NjQsIE9uZSkKICAgICAgICBGaWVsZCAoS0JERCwgQnl0ZUFjYywgTm9Mb2NrLCBQcmVzZXJ2 ZSkKICAgICAgICB7CiAgICAgICAgICAgIFBENjQsICAgOAogICAgICAgIH0KCiAgICAgICAgTWV0 aG9kIChEU1BJLCAwLCBOb3RTZXJpYWxpemVkKQogICAgICAgIHsKICAgICAgICAgICAgSU5UQSAo MHgxRikKICAgICAgICAgICAgSU5UQiAoMHgxRikKICAgICAgICAgICAgSU5UQyAoMHgxRikKICAg ICAgICAgICAgSU5URCAoMHgxRikKICAgICAgICAgICAgTG9jYWwxID0gUEQ2NCAvKiBcX1NCXy5Q RDY0ICovCiAgICAgICAgICAgIFBJUkUgPSAweDFGCiAgICAgICAgICAgIFBJUkYgPSAweDFGCiAg ICAgICAgICAgIFBJUkcgPSAweDFGCiAgICAgICAgICAgIFBJUkggPSAweDFGCiAgICAgICAgfQoK ICAgICAgICBNZXRob2QgKElOVEEsIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgewogICAgICAg ICAgICBQSVJBID0gQXJnMAogICAgICAgICAgICBJZiAoUElDTSkKICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgSERBRCA9IEFyZzAKICAgICAgICAgICAgICAgIFNEQ0wgPSBBcmcwCiAgICAg ICAgICAgIH0KICAgICAgICB9CgogICAgICAgIE1ldGhvZCAoSU5UQiwgMSwgTm90U2VyaWFsaXpl ZCkKICAgICAgICB7CiAgICAgICAgICAgIFBJUkIgPSBBcmcwCiAgICAgICAgfQoKICAgICAgICBN ZXRob2QgKElOVEMsIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgewogICAgICAgICAgICBQSVJD ID0gQXJnMAogICAgICAgICAgICBJZiAoUElDTSkKICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgVVNCMSA9IEFyZzAKICAgICAgICAgICAgICAgIFVTQjMgPSBBcmcwCiAgICAgICAgICAgIH0K ICAgICAgICB9CgogICAgICAgIE1ldGhvZCAoSU5URCwgMSwgTm90U2VyaWFsaXplZCkKICAgICAg ICB7CiAgICAgICAgICAgIFBJUkQgPSBBcmcwCiAgICAgICAgICAgIElmIChQSUNNKQogICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICBTQVRBID0gQXJnMAogICAgICAgICAgICB9CiAgICAgICAg fQoKICAgICAgICBOYW1lIChQUlMxLCBSZXNvdXJjZVRlbXBsYXRlICgpCiAgICAgICAgewogICAg ICAgICAgICBJUlEgKExldmVsLCBBY3RpdmVMb3csIFNoYXJlZCwgKQogICAgICAgICAgICAgICAg ezMsNSw2LDEwLDExfQogICAgICAgIH0pCiAgICAgICAgTmFtZSAoQlVGQSwgUmVzb3VyY2VUZW1w bGF0ZSAoKQogICAgICAgIHsKICAgICAgICAgICAgSVJRIChMZXZlbCwgQWN0aXZlTG93LCBTaGFy ZWQsICkKICAgICAgICAgICAgICAgIHsxNX0KICAgICAgICB9KQogICAgICAgIERldmljZSAoTE5L QSkKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMEYiKSAv KiBQQ0kgSW50ZXJydXB0IExpbmsgRGV2aWNlICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAg ICAgICAgICAgTmFtZSAoX1VJRCwgT25lKSAgLy8gX1VJRDogVW5pcXVlIElECiAgICAgICAgICAg IE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9TVEE6IFN0YXR1cwogICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICBJZiAoKFBJUkEgJiYgKFBJUkEgIT0gMHgxRikpKQogICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwQikKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICBSZXR1cm4gKDB4MDkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0K CiAgICAgICAgICAgIE1ldGhvZCAoX1BSUywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUlM6IFBv c3NpYmxlIFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFJl dHVybiAoUFJTMSkgLyogXF9TQl8uUFJTMSAqLwogICAgICAgICAgICB9CgogICAgICAgICAgICBN ZXRob2QgKF9ESVMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfRElTOiBEaXNhYmxlIERldmljZQog ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJTlRBICgweDFGKQogICAgICAgICAgICB9Cgog ICAgICAgICAgICBNZXRob2QgKF9DUlMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfQ1JTOiBDdXJy ZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0 ZVdvcmRGaWVsZCAoQlVGQSwgT25lLCBJUlFYKQogICAgICAgICAgICAgICAgSVJRWCA9IChPbmUg PDwgUElSQSkgLyogXF9TQl8uUElSQSAqLwogICAgICAgICAgICAgICAgUmV0dXJuIChCVUZBKSAv KiBcX1NCXy5CVUZBICovCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhvZCAoX1NSUywg MSwgTm90U2VyaWFsaXplZCkgIC8vIF9TUlM6IFNldCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEFyZzAsIE9uZSwgSVJBKQog ICAgICAgICAgICAgICAgRmluZFNldFJpZ2h0Qml0IChJUkEsIExvY2FsMCkKICAgICAgICAgICAg ICAgIExvY2FsMC0tCiAgICAgICAgICAgICAgICBQSVJBID0gTG9jYWwwCiAgICAgICAgICAgIH0K ICAgICAgICB9CgogICAgICAgIERldmljZSAoTE5LQikKICAgICAgICB7CiAgICAgICAgICAgIE5h bWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMEYiKSAvKiBQQ0kgSW50ZXJydXB0IExpbmsgRGV2aWNl ICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAgTmFtZSAoX1VJRCwgMHgwMikg IC8vIF9VSUQ6IFVuaXF1ZSBJRAogICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlh bGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWYg KChQSVJCICYmIChQSVJCICE9IDB4MUYpKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKDB4MEIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBF bHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDA5KQog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9QUlMs IDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFJTOiBQb3NzaWJsZSBSZXNvdXJjZSBTZXR0aW5ncwog ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBSZXR1cm4gKFBSUzEpIC8qIFxfU0JfLlBSUzEg Ki8KICAgICAgICAgICAgfQoKICAgICAgICAgICAgTWV0aG9kIChfRElTLCAwLCBOb3RTZXJpYWxp emVkKSAgLy8gX0RJUzogRGlzYWJsZSBEZXZpY2UKICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgSU5UQiAoMHgxRikKICAgICAgICAgICAgfQoKICAgICAgICAgICAgTWV0aG9kIChfQ1JTLCAw LCBOb3RTZXJpYWxpemVkKSAgLy8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEJVRkEsIE9uZSwgSVJR WCkKICAgICAgICAgICAgICAgIElSUVggPSAoT25lIDw8IFBJUkIpIC8qIFxfU0JfLlBJUkIgKi8K ICAgICAgICAgICAgICAgIFJldHVybiAoQlVGQSkgLyogXF9TQl8uQlVGQSAqLwogICAgICAgICAg ICB9CgogICAgICAgICAgICBNZXRob2QgKF9TUlMsIDEsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1JT OiBTZXQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ3Jl YXRlV29yZEZpZWxkIChBcmcwLCBPbmUsIElSQSkKICAgICAgICAgICAgICAgIEZpbmRTZXRSaWdo dEJpdCAoSVJBLCBMb2NhbDApCiAgICAgICAgICAgICAgICBMb2NhbDAtLQogICAgICAgICAgICAg ICAgUElSQiA9IExvY2FsMAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBEZXZpY2Ug KExOS0MpCiAgICAgICAgewogICAgICAgICAgICBOYW1lIChfSElELCBFaXNhSWQgKCJQTlAwQzBG IikgLyogUENJIEludGVycnVwdCBMaW5rIERldmljZSAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElE CiAgICAgICAgICAgIE5hbWUgKF9VSUQsIDB4MDMpICAvLyBfVUlEOiBVbmlxdWUgSUQKICAgICAg ICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmICgoUElSQyAmJiAoUElSQyAhPSAweDFGKSkp CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDBCKQogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgICAgIFJldHVybiAoMHgwOSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgfQoKICAgICAgICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BS UzogUG9zc2libGUgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgUmV0dXJuIChQUlMxKSAvKiBcX1NCXy5QUlMxICovCiAgICAgICAgICAgIH0KCiAgICAgICAg ICAgIE1ldGhvZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9ESVM6IERpc2FibGUgRGV2 aWNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElOVEMgKDB4MUYpCiAgICAgICAgICAg IH0KCiAgICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9DUlM6 IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg Q3JlYXRlV29yZEZpZWxkIChCVUZBLCBPbmUsIElSUVgpCiAgICAgICAgICAgICAgICBJUlFYID0g KE9uZSA8PCBQSVJDKSAvKiBcX1NCXy5QSVJDICovCiAgICAgICAgICAgICAgICBSZXR1cm4gKEJV RkEpIC8qIFxfU0JfLkJVRkEgKi8KICAgICAgICAgICAgfQoKICAgICAgICAgICAgTWV0aG9kIChf U1JTLCAxLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NSUzogU2V0IFJlc291cmNlIFNldHRpbmdzCiAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoQXJnMCwgT25lLCBJ UkEpCiAgICAgICAgICAgICAgICBGaW5kU2V0UmlnaHRCaXQgKElSQSwgTG9jYWwwKQogICAgICAg ICAgICAgICAgTG9jYWwwLS0KICAgICAgICAgICAgICAgIFBJUkMgPSBMb2NhbDAKICAgICAgICAg ICAgfQogICAgICAgIH0KCiAgICAgICAgRGV2aWNlIChMTktEKQogICAgICAgIHsKICAgICAgICAg ICAgTmFtZSAoX0hJRCwgRWlzYUlkICgiUE5QMEMwRiIpIC8qIFBDSSBJbnRlcnJ1cHQgTGluayBE ZXZpY2UgKi8pICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICBOYW1lIChfVUlELCAw eDA0KSAgLy8gX1VJRDogVW5pcXVlIElECiAgICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90 U2VyaWFsaXplZCkgIC8vIF9TVEE6IFN0YXR1cwogICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICBJZiAoKFBJUkQgJiYgKFBJUkQgIT0gMHgxRikpKQogICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgIFJldHVybiAoMHgwQikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgIEVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4 MDkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhvZCAo X1BSUywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUlM6IFBvc3NpYmxlIFJlc291cmNlIFNldHRp bmdzCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFJldHVybiAoUFJTMSkgLyogXF9TQl8u UFJTMSAqLwogICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIE5vdFNl cmlhbGl6ZWQpICAvLyBfRElTOiBEaXNhYmxlIERldmljZQogICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICBJTlREICgweDFGKQogICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9D UlMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfQ1JTOiBDdXJyZW50IFJlc291cmNlIFNldHRpbmdz CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoQlVGQSwgT25l LCBJUlFYKQogICAgICAgICAgICAgICAgSVJRWCA9IChPbmUgPDwgUElSRCkgLyogXF9TQl8uUElS RCAqLwogICAgICAgICAgICAgICAgUmV0dXJuIChCVUZBKSAvKiBcX1NCXy5CVUZBICovCiAgICAg ICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhvZCAoX1NSUywgMSwgTm90U2VyaWFsaXplZCkgIC8v IF9TUlM6IFNldCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICBDcmVhdGVXb3JkRmllbGQgKEFyZzAsIE9uZSwgSVJBKQogICAgICAgICAgICAgICAgRmluZFNl dFJpZ2h0Qml0IChJUkEsIExvY2FsMCkKICAgICAgICAgICAgICAgIExvY2FsMC0tCiAgICAgICAg ICAgICAgICBQSVJEID0gTG9jYWwwCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIERl dmljZSAoTE5LRSkKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBO UDBDMEYiKSAvKiBQQ0kgSW50ZXJydXB0IExpbmsgRGV2aWNlICovKSAgLy8gX0hJRDogSGFyZHdh cmUgSUQKICAgICAgICAgICAgTmFtZSAoX1VJRCwgMHgwNSkgIC8vIF9VSUQ6IFVuaXF1ZSBJRAog ICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0 dXMKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWYgKChQSVJFICYmIChQSVJFICE9IDB4 MUYpKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEIp CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDA5KQogICAgICAgICAgICAgICAgfQogICAg ICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9QUlMsIDAsIE5vdFNlcmlhbGl6ZWQpICAv LyBfUFJTOiBQb3NzaWJsZSBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICBSZXR1cm4gKFBSUzEpIC8qIFxfU0JfLlBSUzEgKi8KICAgICAgICAgICAgfQoKICAg ICAgICAgICAgTWV0aG9kIChfRElTLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX0RJUzogRGlzYWJs ZSBEZXZpY2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUElSRSA9IDB4MUYKICAgICAg ICAgICAgfQoKICAgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8g X0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICBDcmVhdGVXb3JkRmllbGQgKEJVRkEsIE9uZSwgSVJRWCkKICAgICAgICAgICAgICAgIElS UVggPSAoT25lIDw8IFBJUkUpIC8qIFxfU0JfLlBJUkUgKi8KICAgICAgICAgICAgICAgIFJldHVy biAoQlVGQSkgLyogXF9TQl8uQlVGQSAqLwogICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRo b2QgKF9TUlMsIDEsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1JTOiBTZXQgUmVzb3VyY2UgU2V0dGlu Z3MKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChBcmcwLCBP bmUsIElSQSkKICAgICAgICAgICAgICAgIEZpbmRTZXRSaWdodEJpdCAoSVJBLCBMb2NhbDApCiAg ICAgICAgICAgICAgICBMb2NhbDAtLQogICAgICAgICAgICAgICAgUElSRSA9IExvY2FsMAogICAg ICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBEZXZpY2UgKExOS0YpCiAgICAgICAgewogICAg ICAgICAgICBOYW1lIChfSElELCBFaXNhSWQgKCJQTlAwQzBGIikgLyogUENJIEludGVycnVwdCBM aW5rIERldmljZSAqLykgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgIE5hbWUgKF9V SUQsIDB4MDYpICAvLyBfVUlEOiBVbmlxdWUgSUQKICAgICAgICAgICAgTWV0aG9kIChfU1RBLCAw LCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgIElmICgoUElSRiAmJiAoUElSRiAhPSAweDFGKSkpCiAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgUmV0dXJuICgweDBCKQogICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFJldHVy biAoMHgwOSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgTWV0 aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BSUzogUG9zc2libGUgUmVzb3VyY2Ug U2V0dGluZ3MKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUmV0dXJuIChQUlMxKSAvKiBc X1NCXy5QUlMxICovCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhvZCAoX0RJUywgMCwg Tm90U2VyaWFsaXplZCkgIC8vIF9ESVM6IERpc2FibGUgRGV2aWNlCiAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgIFBJUkYgPSAweDFGCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhv ZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2UgU2V0 dGluZ3MKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChCVUZB LCBPbmUsIElSUVgpCiAgICAgICAgICAgICAgICBJUlFYID0gKE9uZSA8PCBQSVJGKSAvKiBcX1NC Xy5QSVJGICovCiAgICAgICAgICAgICAgICBSZXR1cm4gKEJVRkEpIC8qIFxfU0JfLkJVRkEgKi8K ICAgICAgICAgICAgfQoKICAgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxpemVk KSAgLy8gX1NSUzogU2V0IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoQXJnMCwgT25lLCBJUkEpCiAgICAgICAgICAgICAgICBG aW5kU2V0UmlnaHRCaXQgKElSQSwgTG9jYWwwKQogICAgICAgICAgICAgICAgTG9jYWwwLS0KICAg ICAgICAgICAgICAgIFBJUkYgPSBMb2NhbDAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg ICAgRGV2aWNlIChMTktHKQogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAoX0hJRCwgRWlzYUlk ICgiUE5QMEMwRiIpIC8qIFBDSSBJbnRlcnJ1cHQgTGluayBEZXZpY2UgKi8pICAvLyBfSElEOiBI YXJkd2FyZSBJRAogICAgICAgICAgICBOYW1lIChfVUlELCAweDA3KSAgLy8gX1VJRDogVW5pcXVl IElECiAgICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9TVEE6 IFN0YXR1cwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZiAoKFBJUkcgJiYgKFBJUkcg IT0gMHgxRikpKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFJldHVybiAo MHgwQikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MDkpCiAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhvZCAoX1BSUywgMCwgTm90U2VyaWFsaXpl ZCkgIC8vIF9QUlM6IFBvc3NpYmxlIFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgIFJldHVybiAoUFJTMSkgLyogXF9TQl8uUFJTMSAqLwogICAgICAgICAgICB9 CgogICAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfRElTOiBE aXNhYmxlIERldmljZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBQSVJHID0gMHgxRgog ICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9DUlMsIDAsIE5vdFNlcmlhbGl6ZWQp ICAvLyBfQ1JTOiBDdXJyZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgIENyZWF0ZVdvcmRGaWVsZCAoQlVGQSwgT25lLCBJUlFYKQogICAgICAgICAgICAg ICAgSVJRWCA9IChPbmUgPDwgUElSRykgLyogXF9TQl8uUElSRyAqLwogICAgICAgICAgICAgICAg UmV0dXJuIChCVUZBKSAvKiBcX1NCXy5CVUZBICovCiAgICAgICAgICAgIH0KCiAgICAgICAgICAg IE1ldGhvZCAoX1NSUywgMSwgTm90U2VyaWFsaXplZCkgIC8vIF9TUlM6IFNldCBSZXNvdXJjZSBT ZXR0aW5ncwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEFy ZzAsIE9uZSwgSVJBKQogICAgICAgICAgICAgICAgRmluZFNldFJpZ2h0Qml0IChJUkEsIExvY2Fs MCkKICAgICAgICAgICAgICAgIExvY2FsMC0tCiAgICAgICAgICAgICAgICBQSVJHID0gTG9jYWww CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIERldmljZSAoTE5LSCkKICAgICAgICB7 CiAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIlBOUDBDMEYiKSAvKiBQQ0kgSW50ZXJy dXB0IExpbmsgRGV2aWNlICovKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAgTmFt ZSAoX1VJRCwgMHgwOCkgIC8vIF9VSUQ6IFVuaXF1ZSBJRAogICAgICAgICAgICBNZXRob2QgKF9T VEEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgSWYgKChQSVJIICYmIChQSVJIICE9IDB4MUYpKSkKICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEIpCiAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg UmV0dXJuICgweDA5KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAg ICBNZXRob2QgKF9QUlMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFJTOiBQb3NzaWJsZSBSZXNv dXJjZSBTZXR0aW5ncwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBSZXR1cm4gKFBSUzEp IC8qIFxfU0JfLlBSUzEgKi8KICAgICAgICAgICAgfQoKICAgICAgICAgICAgTWV0aG9kIChfRElT LCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX0RJUzogRGlzYWJsZSBEZXZpY2UKICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgUElSSCA9IDB4MUYKICAgICAgICAgICAgfQoKICAgICAgICAgICAg TWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX0NSUzogQ3VycmVudCBSZXNvdXJj ZSBTZXR0aW5ncwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQg KEJVRkEsIE9uZSwgSVJRWCkKICAgICAgICAgICAgICAgIElSUVggPSAoT25lIDw8IFBJUkgpIC8q IFxfU0JfLlBJUkggKi8KICAgICAgICAgICAgICAgIFJldHVybiAoQlVGQSkgLyogXF9TQl8uQlVG QSAqLwogICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9TUlMsIDEsIE5vdFNlcmlh bGl6ZWQpICAvLyBfU1JTOiBTZXQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChBcmcwLCBPbmUsIElSQSkKICAgICAgICAgICAg ICAgIEZpbmRTZXRSaWdodEJpdCAoSVJBLCBMb2NhbDApCiAgICAgICAgICAgICAgICBMb2NhbDAt LQogICAgICAgICAgICAgICAgUElSSCA9IExvY2FsMAogICAgICAgICAgICB9CiAgICAgICAgfQoK ICAgICAgICBNZXRob2QgKEdTTUksIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgewogICAgICAg ICAgICBBUE1EID0gQXJnMAogICAgICAgICAgICBBUE1DID0gMHhFNAogICAgICAgICAgICBTbGVl cCAoMHgwMikKICAgICAgICB9CgogICAgICAgIE1ldGhvZCAoUzgwSCwgMSwgTm90U2VyaWFsaXpl ZCkKICAgICAgICB7CiAgICAgICAgICAgIFA4MEggPSBBcmcwCiAgICAgICAgfQoKICAgICAgICBN ZXRob2QgKEJTTUksIDEsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgewogICAgICAgICAgICBBUE1E ID0gQXJnMAogICAgICAgICAgICBBUE1DID0gMHhCRQogICAgICAgICAgICBTbGVlcCAoT25lKQog ICAgICAgIH0KICAgIH0KCiAgICBOYW1lIChUU09TLCAweDc1KQogICAgSWYgKENvbmRSZWZPZiAo XF9PU0kpKQogICAgewogICAgICAgIElmIChfT1NJICgiV2luZG93cyAyMDA5IikpCiAgICAgICAg ewogICAgICAgICAgICBUU09TID0gMHg1MAogICAgICAgIH0KCiAgICAgICAgSWYgKF9PU0kgKCJX aW5kb3dzIDIwMTUiKSkKICAgICAgICB7CiAgICAgICAgICAgIFRTT1MgPSAweDcwCiAgICAgICAg fQoKICAgICAgICBJZiAoX09TSSAoIkxpbnV4IikpCiAgICAgICAgewogICAgICAgICAgICBUU09T ID0gMHg4MAogICAgICAgIH0KICAgIH0KCiAgICBTY29wZSAoX1NCKQogICAgewogICAgICAgIE9w ZXJhdGlvblJlZ2lvbiAoU01JQywgU3lzdGVtTWVtb3J5LCAweEZFRDgwMDAwLCAweDAwODAwMDAw KQogICAgICAgIEZpZWxkIChTTUlDLCBCeXRlQWNjLCBOb0xvY2ssIFByZXNlcnZlKQogICAgICAg IHsKICAgICAgICAgICAgT2Zmc2V0ICgweDM2QSksIAogICAgICAgICAgICBTTUlCLCAgIDgKICAg ICAgICB9CgogICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoU1NNSSwgU3lzdGVtSU8sIFNNSUIsIDB4 MDIpCiAgICAgICAgRmllbGQgKFNTTUksIEFueUFjYywgTm9Mb2NrLCBQcmVzZXJ2ZSkKICAgICAg ICB7CiAgICAgICAgICAgIFNNSVcsICAgMTYKICAgICAgICB9CgogICAgICAgIE9wZXJhdGlvblJl Z2lvbiAoRUNNQywgU3lzdGVtSU8sIDB4NzIsIDB4MDIpCiAgICAgICAgRmllbGQgKEVDTUMsIEFu eUFjYywgTm9Mb2NrLCBQcmVzZXJ2ZSkKICAgICAgICB7CiAgICAgICAgICAgIEVDTUksICAgOCwg CiAgICAgICAgICAgIEVDTUQsICAgOAogICAgICAgIH0KCiAgICAgICAgSW5kZXhGaWVsZCAoRUNN SSwgRUNNRCwgQnl0ZUFjYywgTm9Mb2NrLCBQcmVzZXJ2ZSkKICAgICAgICB7CiAgICAgICAgICAg IE9mZnNldCAoMHgwOCksIAogICAgICAgICAgICBGUlRCLCAgIDMyCiAgICAgICAgfQoKICAgICAg ICBPcGVyYXRpb25SZWdpb24gKEZSVFAsIFN5c3RlbU1lbW9yeSwgRlJUQiwgMHgwMTAwKQogICAg ICAgIEZpZWxkIChGUlRQLCBBbnlBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICAgICAgewogICAg ICAgICAgICBQRUJBLCAgIDMyLCAKICAgICAgICAgICAgICAgICwgICA1LCAKICAgICAgICAgICAg SUMwRSwgICAxLCAKICAgICAgICAgICAgSUMxRSwgICAxLCAKICAgICAgICAgICAgSUMyRSwgICAx LCAKICAgICAgICAgICAgSUMzRSwgICAxLCAKICAgICAgICAgICAgSUM0RSwgICAxLCAKICAgICAg ICAgICAgSUM1RSwgICAxLCAKICAgICAgICAgICAgVVQwRSwgICAxLCAKICAgICAgICAgICAgVVQx RSwgICAxLCAKICAgICAgICAgICAgICAgICwgICAxLCAKICAgICAgICAgICAgICAgICwgICAxLCAK ICAgICAgICAgICAgU1RfRSwgICAxLCAKICAgICAgICAgICAgVVQyRSwgICAxLCAKICAgICAgICAg ICAgICAgICwgICAxLCAKICAgICAgICAgICAgRU1NRCwgICAyLCAKICAgICAgICAgICAgICAgICwg ICAzLCAKICAgICAgICAgICAgWEhDRSwgICAxLCAKICAgICAgICAgICAgICAgICwgICAxLCAKICAg ICAgICAgICAgICAgICwgICAxLCAKICAgICAgICAgICAgVVQzRSwgICAxLCAKICAgICAgICAgICAg RVNQSSwgICAxLCAKICAgICAgICAgICAgRU1NRSwgICAxLCAKICAgICAgICAgICAgT2Zmc2V0ICgw eDA4KSwgCiAgICAgICAgICAgIFBDRUYsICAgMSwgCiAgICAgICAgICAgICAgICAsICAgNCwgCiAg ICAgICAgICAgIElDMEQsICAgMSwgCiAgICAgICAgICAgIElDMUQsICAgMSwgCiAgICAgICAgICAg IElDMkQsICAgMSwgCiAgICAgICAgICAgIElDM0QsICAgMSwgCiAgICAgICAgICAgIElDNEQsICAg MSwgCiAgICAgICAgICAgIElDNUQsICAgMSwgCiAgICAgICAgICAgIFVUMEQsICAgMSwgCiAgICAg ICAgICAgIFVUMUQsICAgMSwgCiAgICAgICAgICAgICAgICAsICAgMSwgCiAgICAgICAgICAgICAg ICAsICAgMSwgCiAgICAgICAgICAgIFNUX0QsICAgMSwgCiAgICAgICAgICAgIFVUMkQsICAgMSwg CiAgICAgICAgICAgICAgICAsICAgMSwgCiAgICAgICAgICAgIEVIQ0QsICAgMSwgCiAgICAgICAg ICAgICAgICAsICAgNCwgCiAgICAgICAgICAgIFhIQ0QsICAgMSwgCiAgICAgICAgICAgIFNEX0Qs ICAgMSwgCiAgICAgICAgICAgICAgICAsICAgMSwgCiAgICAgICAgICAgIFVUM0QsICAgMSwgCiAg ICAgICAgICAgICAgICAsICAgMSwgCiAgICAgICAgICAgIEVNRDMsICAgMSwgCiAgICAgICAgICAg ICAgICAsICAgMiwgCiAgICAgICAgICAgIFMwM0QsICAgMSwgCiAgICAgICAgICAgIEZXMDAsICAg MTYsIAogICAgICAgICAgICBGVzAxLCAgIDMyLCAKICAgICAgICAgICAgRlcwMiwgICAxNiwgCiAg ICAgICAgICAgIEZXMDMsICAgMzIsIAogICAgICAgICAgICBTRFMwLCAgIDgsIAogICAgICAgICAg ICBTRFMxLCAgIDgsIAogICAgICAgICAgICBDWkZHLCAgIDEsIAogICAgICAgICAgICBPZmZzZXQg KDB4MjApLCAKICAgICAgICAgICAgU0QxMCwgICAzMiwgCiAgICAgICAgICAgIEVIMTAsICAgMzIs IAogICAgICAgICAgICBYSDEwLCAgIDMyLCAKICAgICAgICAgICAgU1RCQSwgICAzMgogICAgICAg IH0KCiAgICAgICAgT3BlcmF0aW9uUmVnaW9uIChGQ0ZHLCBTeXN0ZW1NZW1vcnksIFBFQkEsIDB4 MDEwMDAwMDApCiAgICAgICAgRmllbGQgKEZDRkcsIERXb3JkQWNjLCBOb0xvY2ssIFByZXNlcnZl KQogICAgICAgIHsKICAgICAgICAgICAgT2Zmc2V0ICgweEEzMDQ0KSwgCiAgICAgICAgICAgIElQ REUsICAgMzIsIAogICAgICAgICAgICBJTVBFLCAgIDMyLCAKICAgICAgICAgICAgT2Zmc2V0ICgw eEEzMDc4KSwgCiAgICAgICAgICAgICAgICAsICAgMiwgCiAgICAgICAgICAgIExEUTAsICAgMSwg CiAgICAgICAgICAgIE9mZnNldCAoMHhBMzBDQiksIAogICAgICAgICAgICAgICAgLCAgIDcsIAog ICAgICAgICAgICBBVVNTLCAgIDEsIAogICAgICAgICAgICBPZmZzZXQgKDB4QTMwRDApLCAKICAg ICAgICAgICAgICAgICwgICAxMywgCiAgICAgICAgICAgIExDTEssICAgMgogICAgICAgIH0KCiAg ICAgICAgT3BlcmF0aW9uUmVnaW9uIChJT01YLCBTeXN0ZW1NZW1vcnksIDB4RkVEODBEMDAsIDB4 MDEwMCkKICAgICAgICBGaWVsZCAoSU9NWCwgQW55QWNjLCBOb0xvY2ssIFByZXNlcnZlKQogICAg ICAgIHsKICAgICAgICAgICAgT2Zmc2V0ICgweDE1KSwgCiAgICAgICAgICAgIElNMTUsICAgOCwg CiAgICAgICAgICAgIElNMTYsICAgOCwgCiAgICAgICAgICAgIE9mZnNldCAoMHgxRiksIAogICAg ICAgICAgICBJTTFGLCAgIDgsIAogICAgICAgICAgICBJTTIwLCAgIDgsIAogICAgICAgICAgICBP ZmZzZXQgKDB4NDQpLCAKICAgICAgICAgICAgSU00NCwgICA4LCAKICAgICAgICAgICAgT2Zmc2V0 ICgweDQ2KSwgCiAgICAgICAgICAgIElNNDYsICAgOCwgCiAgICAgICAgICAgIE9mZnNldCAoMHg0 QSksIAogICAgICAgICAgICBJTTRBLCAgIDgsIAogICAgICAgICAgICBJTTRCLCAgIDgsIAogICAg ICAgICAgICBPZmZzZXQgKDB4NTcpLCAKICAgICAgICAgICAgSU01NywgICA4LCAKICAgICAgICAg ICAgSU01OCwgICA4LCAKICAgICAgICAgICAgT2Zmc2V0ICgweDY4KSwgCiAgICAgICAgICAgIElN NjgsICAgOCwgCiAgICAgICAgICAgIElNNjksICAgOCwgCiAgICAgICAgICAgIElNNkEsICAgOCwg CiAgICAgICAgICAgIElNNkIsICAgOCwgCiAgICAgICAgICAgIE9mZnNldCAoMHg2RCksIAogICAg ICAgICAgICBJTTZELCAgIDgKICAgICAgICB9CgogICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoRk1J UywgU3lzdGVtTWVtb3J5LCAweEZFRDgwRTAwLCAweDAxMDApCiAgICAgICAgRmllbGQgKEZNSVMs IEFueUFjYywgTm9Mb2NrLCBQcmVzZXJ2ZSkKICAgICAgICB7CiAgICAgICAgICAgIE9mZnNldCAo MHg0MCksIAogICAgICAgICAgICAgICAgLCAgIDEzLCAKICAgICAgICAgICAgSTI0TSwgICAxCiAg ICAgICAgfQoKICAgICAgICBPcGVyYXRpb25SZWdpb24gKEZHSU8sIFN5c3RlbU1lbW9yeSwgMHhG RUQ4MTUwMCwgMHgwMzAwKQogICAgICAgIEZpZWxkIChGR0lPLCBBbnlBY2MsIE5vTG9jaywgUHJl c2VydmUpCiAgICAgICAgewogICAgICAgICAgICBPZmZzZXQgKDB4QTgpLCAKICAgICAgICAgICAg ICAgICwgICAyMiwgCiAgICAgICAgICAgIE8wNDIsICAgMSwgCiAgICAgICAgICAgIE9mZnNldCAo MHgxNjQpLCAKICAgICAgICAgICAgICAgICwgICAyMiwgCiAgICAgICAgICAgIE8wODksICAgMQog ICAgICAgIH0KCiAgICAgICAgT3BlcmF0aW9uUmVnaW9uIChGQUNSLCBTeXN0ZW1NZW1vcnksIDB4 RkVEODFFMDAsIDB4MDEwMCkKICAgICAgICBGaWVsZCAoRkFDUiwgQW55QWNjLCBOb0xvY2ssIFBy ZXNlcnZlKQogICAgICAgIHsKICAgICAgICAgICAgT2Zmc2V0ICgweDgwKSwgCiAgICAgICAgICAg ICAgICAsICAgMjgsIAogICAgICAgICAgICBSRDI4LCAgIDEsIAogICAgICAgICAgICAgICAgLCAg IDEsIAogICAgICAgICAgICBSUVRZLCAgIDEsIAogICAgICAgICAgICBPZmZzZXQgKDB4ODQpLCAK ICAgICAgICAgICAgICAgICwgICAyOCwgCiAgICAgICAgICAgIFNEMjgsICAgMSwgCiAgICAgICAg ICAgICAgICAsICAgMSwgCiAgICAgICAgICAgIE9mZnNldCAoMHhBMCksIAogICAgICAgICAgICBQ RzFBLCAgIDEKICAgICAgICB9CgogICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoRU1NWCwgU3lzdGVt TWVtb3J5LCAweEZFREQ1ODAwLCAweDAxMzApCiAgICAgICAgRmllbGQgKEVNTVgsIEFueUFjYywg Tm9Mb2NrLCBQcmVzZXJ2ZSkKICAgICAgICB7CiAgICAgICAgICAgIE9mZnNldCAoMHhEMCksIAog ICAgICAgICAgICAgICAgLCAgIDE3LCAKICAgICAgICAgICAgRkMxOCwgICAxLCAKICAgICAgICAg ICAgRkMzMywgICAxLCAKICAgICAgICAgICAgICAgICwgICA3LCAKICAgICAgICAgICAgQ0RfVCwg ICAxLCAKICAgICAgICAgICAgV1BfVCwgICAxCiAgICAgICAgfQoKICAgICAgICBPcGVyYXRpb25S ZWdpb24gKEVNTUIsIFN5c3RlbU1lbW9yeSwgMHhGRURENTgwMCwgMHgwMTMwKQogICAgICAgIEZp ZWxkIChFTU1CLCBBbnlBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICAgICAgewogICAgICAgICAg ICBPZmZzZXQgKDB4QTQpLCAKICAgICAgICAgICAgRTBBNCwgICAzMiwgCiAgICAgICAgICAgIEUw QTgsICAgMzIsIAogICAgICAgICAgICBPZmZzZXQgKDB4QjApLCAKICAgICAgICAgICAgRTBCMCwg ICAzMiwgCiAgICAgICAgICAgIE9mZnNldCAoMHhEMCksIAogICAgICAgICAgICBFMEQwLCAgIDMy LCAKICAgICAgICAgICAgT2Zmc2V0ICgweDExNiksIAogICAgICAgICAgICBFMTE2LCAgIDMyCiAg ICAgICAgfQoKICAgICAgICBOYW1lIChTVkJGLCBCdWZmZXIgKDB4MDEwMCkKICAgICAgICB7CiAg ICAgICAgICAgICAweDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gLgogICAgICAgIH0pCiAgICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoU1ZCRiwgWmVybywg UzBBNCkKICAgICAgICBDcmVhdGVEV29yZEZpZWxkIChTVkJGLCAweDA0LCBTMEE4KQogICAgICAg IENyZWF0ZURXb3JkRmllbGQgKFNWQkYsIDB4MDgsIFMwQjApCiAgICAgICAgQ3JlYXRlRFdvcmRG aWVsZCAoU1ZCRiwgMHgwQywgUzBEMCkKICAgICAgICBDcmVhdGVEV29yZEZpZWxkIChTVkJGLCAw eDEwLCBTMTE2KQogICAgICAgIE1ldGhvZCAoU0VDUiwgMCwgU2VyaWFsaXplZCkKICAgICAgICB7 CiAgICAgICAgICAgIFMxMTYgPSBFMTE2IC8qIFxfU0JfLkUxMTYgKi8KICAgICAgICAgICAgUlFU WSA9IFplcm8KICAgICAgICAgICAgUkQyOCA9IE9uZQogICAgICAgICAgICBMb2NhbDAgPSBTRDI4 IC8qIFxfU0JfLlNEMjggKi8KICAgICAgICAgICAgV2hpbGUgKExvY2FsMCkKICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgTG9jYWwwID0gU0QyOCAvKiBcX1NCXy5TRDI4ICovCiAgICAgICAg ICAgIH0KICAgICAgICB9CgogICAgICAgIE1ldGhvZCAoUkVDUiwgMCwgU2VyaWFsaXplZCkKICAg ICAgICB7CiAgICAgICAgICAgIEUxMTYgPSBTMTE2IC8qIFxfU0JfLlMxMTYgKi8KICAgICAgICB9 CgogICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoTFVJRSwgU3lzdGVtTWVtb3J5LCAweEZFREMwMDIw LCAweDA0KQogICAgICAgIEZpZWxkIChMVUlFLCBBbnlBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAg ICAgICAgewogICAgICAgICAgICBJRVIwLCAgIDEsIAogICAgICAgICAgICBJRVIxLCAgIDEsIAog ICAgICAgICAgICBJRVIyLCAgIDEsIAogICAgICAgICAgICBJRVIzLCAgIDEsIAogICAgICAgICAg ICBVT0wwLCAgIDEsIAogICAgICAgICAgICBVT0wxLCAgIDEsIAogICAgICAgICAgICBVT0wyLCAg IDEsIAogICAgICAgICAgICBVT0wzLCAgIDEsIAogICAgICAgICAgICBXVVIwLCAgIDIsIAogICAg ICAgICAgICBXVVIxLCAgIDIsIAogICAgICAgICAgICBXVVIyLCAgIDIsIAogICAgICAgICAgICBX VVIzLCAgIDIKICAgICAgICB9CgogICAgICAgIE1ldGhvZCAoRlJVSSwgMSwgU2VyaWFsaXplZCkK ICAgICAgICB7CiAgICAgICAgICAgIElmICgoQXJnMCA9PSBaZXJvKSkKICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgUmV0dXJuIChJVUEwKSAvKiBcX1NCXy5JVUEwICovCiAgICAgICAgICAg IH0KCiAgICAgICAgICAgIElmICgoQXJnMCA9PSBPbmUpKQogICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICBSZXR1cm4gKElVQTEpIC8qIFxfU0JfLklVQTEgKi8KICAgICAgICAgICAgfQoKICAg ICAgICAgICAgSWYgKChBcmcwID09IDB4MDIpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICBSZXR1cm4gKElVQTIpIC8qIFxfU0JfLklVQTIgKi8KICAgICAgICAgICAgfQoKICAgICAgICAg ICAgSWYgKChBcmcwID09IDB4MDMpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBSZXR1 cm4gKElVQTMpIC8qIFxfU0JfLklVQTMgKi8KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg ICAgTWV0aG9kIChTUkFELCAyLCBTZXJpYWxpemVkKQogICAgICAgIHsKICAgICAgICAgICAgTG9j YWwwID0gKEFyZzAgPDwgT25lKQogICAgICAgICAgICBMb2NhbDAgKz0gMHhGRUQ4MUU0MAogICAg ICAgICAgICBPcGVyYXRpb25SZWdpb24gKEFEQ1IsIFN5c3RlbU1lbW9yeSwgTG9jYWwwLCAweDAy KQogICAgICAgICAgICBGaWVsZCAoQURDUiwgQnl0ZUFjYywgTm9Mb2NrLCBQcmVzZXJ2ZSkKICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgQURURCwgICAyLCAKICAgICAgICAgICAgICAgIEFE UFMsICAgMSwgCiAgICAgICAgICAgICAgICBBRFBELCAgIDEsIAogICAgICAgICAgICAgICAgQURT TywgICAxLCAKICAgICAgICAgICAgICAgIEFEU0MsICAgMSwgCiAgICAgICAgICAgICAgICBBRFNS LCAgIDEsIAogICAgICAgICAgICAgICAgQURJUywgICAxLCAKICAgICAgICAgICAgICAgIEFERFMs ICAgMwogICAgICAgICAgICB9CgogICAgICAgICAgICBBRElTID0gT25lCiAgICAgICAgICAgIEFE U1IgPSBaZXJvCiAgICAgICAgICAgIFN0YWxsIChBcmcxKQogICAgICAgICAgICBBRFNSID0gT25l CiAgICAgICAgICAgIEFESVMgPSBaZXJvCiAgICAgICAgICAgIFN0YWxsIChBcmcxKQogICAgICAg IH0KCiAgICAgICAgTWV0aG9kIChEU0FELCAyLCBTZXJpYWxpemVkKQogICAgICAgIHsKICAgICAg ICAgICAgTG9jYWwwID0gKEFyZzAgPDwgT25lKQogICAgICAgICAgICBMb2NhbDAgKz0gMHhGRUQ4 MUU0MAogICAgICAgICAgICBPcGVyYXRpb25SZWdpb24gKEFEQ1IsIFN5c3RlbU1lbW9yeSwgTG9j YWwwLCAweDAyKQogICAgICAgICAgICBGaWVsZCAoQURDUiwgQnl0ZUFjYywgTm9Mb2NrLCBQcmVz ZXJ2ZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQURURCwgICAyLCAKICAgICAgICAg ICAgICAgIEFEUFMsICAgMSwgCiAgICAgICAgICAgICAgICBBRFBELCAgIDEsIAogICAgICAgICAg ICAgICAgQURTTywgICAxLCAKICAgICAgICAgICAgICAgIEFEU0MsICAgMSwgCiAgICAgICAgICAg ICAgICBBRFNSLCAgIDEsIAogICAgICAgICAgICAgICAgQURJUywgICAxLCAKICAgICAgICAgICAg ICAgIEFERFMsICAgMwogICAgICAgICAgICB9CgogICAgICAgICAgICBJZiAoKEFyZzEgIT0gQURU RCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmICgoQXJnMSA9PSBaZXJvKSkKICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBRFREID0gWmVybwogICAgICAgICAg ICAgICAgICAgIEFEUEQgPSBPbmUKICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBBRERTIC8q IFxfU0JfLkRTQUQuQUREUyAqLwogICAgICAgICAgICAgICAgICAgIFdoaWxlICgoTG9jYWwwICE9 IDB4MDcpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTG9j YWwwID0gQUREUyAvKiBcX1NCXy5EU0FELkFERFMgKi8KICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgSWYgKChBcmcxID09IDB4MDMpKQogICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFEUEQgPSBaZXJvCiAgICAgICAgICAg ICAgICAgICAgTG9jYWwwID0gQUREUyAvKiBcX1NCXy5EU0FELkFERFMgKi8KICAgICAgICAgICAg ICAgICAgICBXaGlsZSAoKExvY2FsMCAhPSBaZXJvKSkKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgIExvY2FsMCA9IEFERFMgLyogXF9TQl8uRFNBRC5BRERTICov CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBBRFREID0gMHgwMwog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBNZXRob2Qg KEhTQUQsIDIsIFNlcmlhbGl6ZWQpCiAgICAgICAgewogICAgICAgICAgICBMb2NhbDMgPSAoT25l IDw8IEFyZzApCiAgICAgICAgICAgIExvY2FsMCA9IChBcmcwIDw8IE9uZSkKICAgICAgICAgICAg TG9jYWwwICs9IDB4RkVEODFFNDAKICAgICAgICAgICAgT3BlcmF0aW9uUmVnaW9uIChBRENSLCBT eXN0ZW1NZW1vcnksIExvY2FsMCwgMHgwMikKICAgICAgICAgICAgRmllbGQgKEFEQ1IsIEJ5dGVB Y2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFEVEQs ICAgMiwgCiAgICAgICAgICAgICAgICBBRFBTLCAgIDEsIAogICAgICAgICAgICAgICAgQURQRCwg ICAxLCAKICAgICAgICAgICAgICAgIEFEU08sICAgMSwgCiAgICAgICAgICAgICAgICBBRFNDLCAg IDEsIAogICAgICAgICAgICAgICAgQURTUiwgICAxLCAKICAgICAgICAgICAgICAgIEFESVMsICAg MSwgCiAgICAgICAgICAgICAgICBBRERTLCAgIDMKICAgICAgICAgICAgfQoKICAgICAgICAgICAg SWYgKChBcmcxICE9IEFEVEQpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZiAoKEFy ZzEgPT0gWmVybykpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQURURCA9 IFplcm8KICAgICAgICAgICAgICAgICAgICBBRFBEID0gT25lCiAgICAgICAgICAgICAgICAgICAg TG9jYWwwID0gQUREUyAvKiBcX1NCXy5IU0FELkFERFMgKi8KICAgICAgICAgICAgICAgICAgICBX aGlsZSAoKExvY2FsMCAhPSAweDA3KSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgIExvY2FsMCA9IEFERFMgLyogXF9TQl8uSFNBRC5BRERTICovCiAgICAgICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBSUVRZID0gT25lCiAgICAgICAgICAg ICAgICAgICAgUkQyOCA9IE9uZQogICAgICAgICAgICAgICAgICAgIExvY2FsMCA9IFNEMjggLyog XF9TQl8uU0QyOCAqLwogICAgICAgICAgICAgICAgICAgIFdoaWxlICghTG9jYWwwKQogICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwwID0gU0QyOCAvKiBc X1NCXy5TRDI4ICovCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgIElmICgoQXJnMSA9PSAweDAzKSkKICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICBSUVRZID0gWmVybwogICAgICAgICAgICAgICAgICAgIFJEMjggPSBPbmUK ICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBTRDI4IC8qIFxfU0JfLlNEMjggKi8KICAgICAg ICAgICAgICAgICAgICBXaGlsZSAoTG9jYWwwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAgTG9jYWwwID0gU0QyOCAvKiBcX1NCXy5TRDI4ICovCiAgICAgICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBBRFBEID0gWmVybwogICAgICAgICAg ICAgICAgICAgIExvY2FsMCA9IEFERFMgLyogXF9TQl8uSFNBRC5BRERTICovCiAgICAgICAgICAg ICAgICAgICAgV2hpbGUgKChMb2NhbDAgIT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICAgICBMb2NhbDAgPSBBRERTIC8qIFxfU0JfLkhTQUQuQUREUyAq LwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgQURURCA9IDB4MDMK ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgT3BlcmF0 aW9uUmVnaW9uIChGUElDLCBTeXN0ZW1JTywgMHgwQzAwLCAweDAyKQogICAgICAgIEZpZWxkIChG UElDLCBBbnlBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICAgICAgewogICAgICAgICAgICBGUElJ LCAgIDgsIAogICAgICAgICAgICBGUElELCAgIDgKICAgICAgICB9CgogICAgICAgIEluZGV4Rmll bGQgKEZQSUksIEZQSUQsIEJ5dGVBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICAgICAgewogICAg ICAgICAgICBPZmZzZXQgKDB4RjQpLCAKICAgICAgICAgICAgSVVBMCwgICA4LCAKICAgICAgICAg ICAgSVVBMSwgICA4LCAKICAgICAgICAgICAgT2Zmc2V0ICgweEY4KSwgCiAgICAgICAgICAgIElV QTIsICAgOCwgCiAgICAgICAgICAgIElVQTMsICAgOAogICAgICAgIH0KCiAgICAgICAgRGV2aWNl IChHUElPKQogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAoX0hJRCwgIkFNREkwMDMwIikgIC8v IF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgIE5hbWUgKF9DSUQsICJBTURJMDAzMCIpICAv LyBfQ0lEOiBDb21wYXRpYmxlIElECiAgICAgICAgICAgIE5hbWUgKF9VSUQsIFplcm8pICAvLyBf VUlEOiBVbmlxdWUgSUQKICAgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxpemVk KSAgLy8gX0NSUzogQ3VycmVudCBSZXNvdXJjZSBTZXR0aW5ncwogICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICBOYW1lIChSQlVGLCBSZXNvdXJjZVRlbXBsYXRlICgpCiAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgSW50ZXJydXB0IChSZXNvdXJjZUNvbnN1bWVyLCBMZXZl bCwgQWN0aXZlTG93LCBTaGFyZWQsICwsICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgICAgIDB4MDAwMDAwMDcsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgICAgIE1lbW9yeTMyRml4ZWQgKFJlYWRXcml0ZSwKICAgICAgICAgICAgICAgICAg ICAgICAgMHhGRUQ4MTUwMCwgICAgICAgICAvLyBBZGRyZXNzIEJhc2UKICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMDAwMDQwMCwgICAgICAgICAvLyBBZGRyZXNzIExlbmd0aAogICAgICAgICAg ICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgUmV0dXJu IChSQlVGKSAvKiBcX1NCXy5HUElPLl9DUlMuUkJVRiAqLwogICAgICAgICAgICB9CgogICAgICAg ICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgSWYgKChUU09TID49IDB4NzApKQogICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgIFJldHVybiAoMHgwRikKICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAg ICB9CgogICAgICAgIERldmljZSAoSTJDQSkKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgKF9I SUQsICJBTURJMDAxMSIpICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICBOYW1lIChf VUlELCBaZXJvKSAgLy8gX1VJRDogVW5pcXVlIElECiAgICAgICAgICAgIE5hbWUgKF9BRFIsIFpl cm8pICAvLyBfQURSOiBBZGRyZXNzCiAgICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVt cGxhdGUgKCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgSVJRIChFZGdlLCBBY3RpdmVIaWdoLCBFeGNsdXNpdmUsICkKICAg ICAgICAgICAgICAgICAgICB7MTB9CiAgICAgICAgICAgICAgICBNZW1vcnkzMkZpeGVkIChSZWFk V3JpdGUsCiAgICAgICAgICAgICAgICAgICAgMHhGRURDMjAwMCwgICAgICAgICAvLyBBZGRyZXNz IEJhc2UKICAgICAgICAgICAgICAgICAgICAweDAwMDAxMDAwLCAgICAgICAgIC8vIEFkZHJlc3Mg TGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICB9KQogICAgICAgICAgICBO YW1lIChfREVQLCBQYWNrYWdlICgweDAxKSAgLy8gX0RFUDogRGVwZW5kZW5jaWVzCiAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgIF5QQ0kwLkdQMTcuTVAyQwogICAgICAgICAgICB9KQogICAg ICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMK ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUmV0dXJuICgweDBGKQogICAgICAgICAgICB9 CgogICAgICAgICAgICBNZXRob2QgKFJTRVQsIDAsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgIFNSQUQgKDB4MDUsIDB4QzgpCiAgICAgICAgICAgIH0KICAgICAg ICB9CgogICAgICAgIERldmljZSAoSTJDQikKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgKF9I SUQsICJBTURJMDAxMSIpICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICBOYW1lIChf VUlELCBPbmUpICAvLyBfVUlEOiBVbmlxdWUgSUQKICAgICAgICAgICAgTmFtZSAoX0FEUiwgT25l KSAgLy8gX0FEUjogQWRkcmVzcwogICAgICAgICAgICBOYW1lIChfQ1JTLCBSZXNvdXJjZVRlbXBs YXRlICgpICAvLyBfQ1JTOiBDdXJyZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgIElSUSAoRWRnZSwgQWN0aXZlSGlnaCwgRXhjbHVzaXZlLCApCiAgICAg ICAgICAgICAgICAgICAgezExfQogICAgICAgICAgICAgICAgTWVtb3J5MzJGaXhlZCAoUmVhZFdy aXRlLAogICAgICAgICAgICAgICAgICAgIDB4RkVEQzMwMDAsICAgICAgICAgLy8gQWRkcmVzcyBC YXNlCiAgICAgICAgICAgICAgICAgICAgMHgwMDAwMTAwMCwgICAgICAgICAvLyBBZGRyZXNzIExl bmd0aAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgfSkKICAgICAgICAgICAgTmFt ZSAoX0RFUCwgUGFja2FnZSAoMHgwMSkgIC8vIF9ERVA6IERlcGVuZGVuY2llcwogICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICBeUENJMC5HUDE3Lk1QMkMKICAgICAgICAgICAgfSkKICAgICAg ICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NUQTogU3RhdHVzCiAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFJldHVybiAoMHgwRikKICAgICAgICAgICAgfQoK ICAgICAgICAgICAgTWV0aG9kIChSU0VULCAwLCBOb3RTZXJpYWxpemVkKQogICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICBTUkFEICgweDA2LCAweEM4KQogICAgICAgICAgICB9CiAgICAgICAg fQoKICAgICAgICBEZXZpY2UgKEkyQ0QpCiAgICAgICAgewogICAgICAgICAgICBOYW1lIChfSElE LCAiQU1ESTAwMTAiKSAgLy8gX0hJRDogSGFyZHdhcmUgSUQKICAgICAgICAgICAgTmFtZSAoX1VJ RCwgMHgwMykgIC8vIF9VSUQ6IFVuaXF1ZSBJRAogICAgICAgICAgICBOYW1lIChfQ1JTLCBSZXNv dXJjZVRlbXBsYXRlICgpICAvLyBfQ1JTOiBDdXJyZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgIElSUSAoRWRnZSwgQWN0aXZlSGlnaCwgRXhjbHVzaXZl LCApCiAgICAgICAgICAgICAgICAgICAgezZ9CiAgICAgICAgICAgICAgICBNZW1vcnkzMkZpeGVk IChSZWFkV3JpdGUsCiAgICAgICAgICAgICAgICAgICAgMHhGRURDNTAwMCwgICAgICAgICAvLyBB ZGRyZXNzIEJhc2UKICAgICAgICAgICAgICAgICAgICAweDAwMDAxMDAwLCAgICAgICAgIC8vIEFk ZHJlc3MgTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICB9KQogICAgICAg ICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgUmV0dXJuICgweDBGKQogICAgICAgICAgICB9Cgog ICAgICAgICAgICBNZXRob2QgKFJTRVQsIDAsIE5vdFNlcmlhbGl6ZWQpCiAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgIFNSQUQgKDB4MDgsIDB4QzgpCiAgICAgICAgICAgIH0KCiAgICAgICAg ICAgIE1ldGhvZCAoX1MwVywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9TMFc6IFMwIERldmljZSBX YWtlIFN0YXRlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmICgoSUMzRCAmJiBJQzNF KSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MDQpCiAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgUmV0dXJuIChaZXJvKQogICAgICAgICAgICAgICAgfQogICAgICAg ICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9QUzAsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBf UFMwOiBQb3dlciBTdGF0ZSAwCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmICgoSUMz RCAmJiBJQzNFKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEU0FEICgw eDA4LCBaZXJvKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBN ZXRob2QgKF9QUzMsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfUFMzOiBQb3dlciBTdGF0ZSAzCiAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmICgoSUMzRCAmJiBJQzNFKSkKICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEU0FEICgweDA4LCAweDAzKQogICAgICAgICAg ICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBOYW1lIChEMFNULCBPbmUp CiAgICAgICAgTmFtZSAoRDNTVCwgT25lKQogICAgICAgIFBvd2VyUmVzb3VyY2UgKFAwU1QsIDB4 MDAsIDB4MDAwMCkKICAgICAgICB7CiAgICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2Vy aWFsaXplZCkgIC8vIF9TVEE6IFN0YXR1cwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBS ZXR1cm4gKEQwU1QpIC8qIFxfU0JfLkQwU1QgKi8KICAgICAgICAgICAgfQoKICAgICAgICAgICAg TWV0aG9kIChfT04sIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfT05fOiBQb3dlciBPbgogICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICBEMFNUID0gT25lCiAgICAgICAgICAgIH0KCiAgICAgICAg ICAgIE1ldGhvZCAoX09GRiwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9PRkY6IFBvd2VyIE9mZgog ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBEMFNUID0gWmVybwogICAgICAgICAgICB9CiAg ICAgICAgfQoKICAgICAgICBQb3dlclJlc291cmNlIChQM1NULCAweDAwLCAweDAwMDApCiAgICAg ICAgewogICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfU1RB OiBTdGF0dXMKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUmV0dXJuIChEM1NUKSAvKiBc X1NCXy5EM1NUICovCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhvZCAoX09OLCAwLCBO b3RTZXJpYWxpemVkKSAgLy8gX09OXzogUG93ZXIgT24KICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgRDNTVCA9IE9uZQogICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9PRkYs IDAsIE5vdFNlcmlhbGl6ZWQpICAvLyBfT0ZGOiBQb3dlciBPZmYKICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgRDNTVCA9IFplcm8KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAg ICBTY29wZSAoX1NCLlBDSTAuR1AxOC5TQVRBKQogICAgewogICAgICAgIE5hbWUgKF9QUjAsIFBh Y2thZ2UgKDB4MDEpICAvLyBfUFIwOiBQb3dlciBSZXNvdXJjZXMgZm9yIEQwCiAgICAgICAgewog ICAgICAgICAgICBQMFNUCiAgICAgICAgfSkKICAgICAgICBOYW1lIChfUFIzLCBQYWNrYWdlICgw eDAxKSAgLy8gX1BSMzogUG93ZXIgUmVzb3VyY2VzIGZvciBEM2hvdAogICAgICAgIHsKICAgICAg ICAgICAgUDNTVAogICAgICAgIH0pCiAgICAgICAgTWV0aG9kIChfUzBXLCAwLCBOb3RTZXJpYWxp emVkKSAgLy8gX1MwVzogUzAgRGV2aWNlIFdha2UgU3RhdGUKICAgICAgICB7CiAgICAgICAgICAg IElmICgoU1RfRCA9PSBPbmUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBSZXR1cm4g KDB4MDQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgRWxzZQogICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAg IE1ldGhvZCAoX1BTMCwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9QUzA6IFBvd2VyIFN0YXRlIDAK ICAgICAgICB7CiAgICAgICAgICAgIElmICgoU1RfRCA9PSBPbmUpKQogICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICBJTzgwID0gMHg4OAogICAgICAgICAgICAgICAgU01JVyA9IDB4RDYKICAg ICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgTWV0aG9kIChfUFMzLCAwLCBOb3RTZXJpYWxp emVkKSAgLy8gX1BTMzogUG93ZXIgU3RhdGUgMwogICAgICAgIHsKICAgICAgICAgICAgSWYgKChT VF9EID09IE9uZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElPODAgPSAweDc3CiAg ICAgICAgICAgICAgICBTTUlXID0gMHhENQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoK ICAgIFNjb3BlIChfU0IuSTJDQSkKICAgIHsKICAgICAgICBEZXZpY2UgKFRQTkwpCiAgICAgICAg ewogICAgICAgICAgICBOYW1lIChfSElELCAiTVNGVDAwMDIiKSAgLy8gX0hJRDogSGFyZHdhcmUg SUQKICAgICAgICAgICAgTmFtZSAoX0NJRCwgIlBOUDBDNTAiIC8qIEhJRCBQcm90b2NvbCBEZXZp Y2UgKEkyQyBidXMpICovKSAgLy8gX0NJRDogQ29tcGF0aWJsZSBJRAogICAgICAgICAgICBOYW1l IChfVUlELCAweDA0KSAgLy8gX1VJRDogVW5pcXVlIElECiAgICAgICAgICAgIE1ldGhvZCAoX0lO SSwgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9JTkk6IEluaXRpYWxpemUKICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgSWYgKChUUE5QID09IDB4NTE3QSkpCiAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgX0hJRCA9ICJXQ09NNTE3QSIKICAgICAgICAgICAgICAgICAgICBS ZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgSWYgKChUUE5Q ID09IDB4NTE3QikpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgX0hJRCA9 ICJXQ09NNTE3QiIKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgSWYgKChUUE5QID09IDB4NTE3QykpCiAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgX0hJRCA9ICJXQ09NNTE3QyIKICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg SWYgKChUUE5QID09IDB4NTE3RCkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgX0hJRCA9ICJXQ09NNTE3RCIKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgSWYgKChUUE5QID09IDB4NTE3RSkpCiAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgX0hJRCA9ICJXQ09NNTE3RSIKICAg ICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAgICAgICAgICAgICAgICB9CgogICAgICAg ICAgICAgICAgSWYgKChUUE5QID09IDB4NTE3RikpCiAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgX0hJRCA9ICJXQ09NNTE3RiIKICAgICAgICAgICAgICAgICAgICBSZXR1cm4g KFplcm8pCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgUmV0dXJuIChaZXJvKQog ICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9DUlMsIDAsIE5vdFNlcmlhbGl6ZWQp ICAvLyBfQ1JTOiBDdXJyZW50IFJlc291cmNlIFNldHRpbmdzCiAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgIE5hbWUgKFJCVUYsIFJlc291cmNlVGVtcGxhdGUgKCkKICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICBJMmNTZXJpYWxCdXNWMiAoMHgwMDBBLCBDb250cm9sbGVy SW5pdGlhdGVkLCAweDAwMDYxQTgwLAogICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzaW5n TW9kZTdCaXQsICJcXF9TQi5JMkNBIiwKICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgUmVz b3VyY2VDb25zdW1lciwgLCBFeGNsdXNpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAg ICAgICAgICAgICAgICAgICBHcGlvSW50IChMZXZlbCwgQWN0aXZlTG93LCBTaGFyZWQsIFB1bGxV cCwgMHgwMDAwLAogICAgICAgICAgICAgICAgICAgICAgICAiXFxfU0IuR1BJTyIsIDB4MDAsIFJl c291cmNlQ29uc3VtZXIsICwKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAg ICAgICAgICAgICB7ICAgLy8gUGluIGxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDA1QQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAg ICAgICAgICAgUmV0dXJuIChSQlVGKSAvKiBcX1NCXy5JMkNBLlRQTkwuX0NSUy5SQlVGICovCiAg ICAgICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkg IC8vIF9TVEE6IFN0YXR1cwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZiAoKFRQTlYg PT0gWmVybykpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgUmV0dXJuICha ZXJvKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIFJldHVybiAoMHgwRikKICAg ICAgICAgICAgfQoKICAgICAgICAgICAgTWV0aG9kIChfRFNXLCAzLCBOb3RTZXJpYWxpemVkKSAg Ly8gX0RTVzogRGV2aWNlIFNsZWVwIFdha2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg SWYgKEFyZzApe30KICAgICAgICAgICAgICAgIEVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgTWV0aG9kIChfUFMwLCAwLCBO b3RTZXJpYWxpemVkKSAgLy8gX1BTMDogUG93ZXIgU3RhdGUgMAogICAgICAgICAgICB7CiAgICAg ICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhvZCAoX1BTMywgMCwgTm90U2VyaWFsaXplZCkgIC8v IF9QUzM6IFBvd2VyIFN0YXRlIDMKICAgICAgICAgICAgewogICAgICAgICAgICB9CgogICAgICAg ICAgICBNZXRob2QgKF9EU00sIDQsIFNlcmlhbGl6ZWQpICAvLyBfRFNNOiBEZXZpY2UtU3BlY2lm aWMgTWV0aG9kCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmICgoQXJnMCA9PSBUb1VV SUQgKCIzY2RmZjZmNy00MjY3LTQ1NTUtYWQwNS1iMzBhM2Q4OTM4ZGUiKSAvKiBISUQgSTJDIERl dmljZSAqLykpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgU3dpdGNoIChU b0ludGVnZXIgKEFyZzIpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgQ2FzZSAoWmVybykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgU3dpdGNoIChUb0ludGVnZXIgKEFyZzEpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhc2UgKE9uZSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJldHVybiAoQnVmZmVyIChPbmUpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXR1cm4gKEJ1ZmZlciAoT25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIENhc2UgKE9uZSkKICAgICAgICAgICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChPbmUpCiAgICAg ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdAogICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4g KFplcm8pCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgIFJldHVybiAoQnVmZmVyIChPbmUpCiAgICAgICAgICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIC4KICAgICAgICAgICAgICAgICAgICB9KQogICAgICAg ICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIFNjb3BlIChfU0Iu STJDRCkKICAgIHsKICAgICAgICBEZXZpY2UgKEVDU1MpCiAgICAgICAgewogICAgICAgICAgICBP cGVyYXRpb25SZWdpb24gKEJPSUQsIFN5c3RlbU1lbW9yeSwgMHhGRUQ4MTUzOCwgMHgwNCkKICAg ICAgICAgICAgRmllbGQgKEJPSUQsIEJ5dGVBY2MsIE5vTG9jaywgUHJlc2VydmUpCiAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgIE9mZnNldCAoMHgwMiksIAogICAgICAgICAgICAgICAgSUQ1 ViwgICAxCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE5hbWUgKF9ISUQsIEVpc2FJZCAoIklU RTgzOTYiKSkgIC8vIF9ISUQ6IEhhcmR3YXJlIElECiAgICAgICAgICAgIE5hbWUgKF9DSUQsICJQ TlAwQzUwIiAvKiBISUQgUHJvdG9jb2wgRGV2aWNlIChJMkMgYnVzKSAqLykgIC8vIF9DSUQ6IENv bXBhdGlibGUgSUQKICAgICAgICAgICAgTmFtZSAoX1VJRCwgT25lKSAgLy8gX1VJRDogVW5pcXVl IElECiAgICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgIC8vIF9DUlM6 IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg TmFtZSAoUkJVRiwgUmVzb3VyY2VUZW1wbGF0ZSAoKQogICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgIEkyY1NlcmlhbEJ1c1YyICgweDAwNTAsIENvbnRyb2xsZXJJbml0aWF0ZWQs IDB4MDAwNjFBODAsCiAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3NpbmdNb2RlN0JpdCwg IlxcX1NCLkkyQ0QiLAogICAgICAgICAgICAgICAgICAgICAgICAweDAwLCBSZXNvdXJjZUNvbnN1 bWVyLCAsIEV4Y2x1c2l2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAg ICAgICAgIEdwaW9JbnQgKExldmVsLCBBY3RpdmVIaWdoLCBTaGFyZWQsIFB1bGxOb25lLCAweDAw MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJcXF9TQi5HUElPIiwgMHgwMCwgUmVzb3VyY2VD b25zdW1lciwgLAogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAg ICAgIHsgICAvLyBQaW4gbGlzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDU1CiAg ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAg ICBSZXR1cm4gKFJCVUYpIC8qIFxfU0JfLkkyQ0QuRUNTUy5fQ1JTLlJCVUYgKi8KICAgICAgICAg ICAgfQoKICAgICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1NU QTogU3RhdHVzCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmICgoSUQ1ViA9PSBaZXJv KSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFplcm8pCiAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgUmV0dXJuICgweDBGKQogICAgICAgICAg ICB9CgogICAgICAgICAgICBNZXRob2QgKF9EU1csIDMsIE5vdFNlcmlhbGl6ZWQpICAvLyBfRFNX OiBEZXZpY2UgU2xlZXAgV2FrZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZiAoQXJn MCl7fQogICAgICAgICAgICAgICAgRWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9QUzAsIDAsIE5vdFNlcmlh bGl6ZWQpICAvLyBfUFMwOiBQb3dlciBTdGF0ZSAwCiAgICAgICAgICAgIHsKICAgICAgICAgICAg fQoKICAgICAgICAgICAgTWV0aG9kIChfUFMzLCAwLCBOb3RTZXJpYWxpemVkKSAgLy8gX1BTMzog UG93ZXIgU3RhdGUgMwogICAgICAgICAgICB7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE1l dGhvZCAoX0RTTSwgNCwgU2VyaWFsaXplZCkgIC8vIF9EU006IERldmljZS1TcGVjaWZpYyBNZXRo b2QKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWYgKChBcmcwID09IFRvVVVJRCAoIjNj ZGZmNmY3LTQyNjctNDU1NS1hZDA1LWIzMGEzZDg5MzhkZSIpIC8qIEhJRCBJMkMgRGV2aWNlICov KSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBTd2l0Y2ggKFRvSW50ZWdl ciAoQXJnMikpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBD YXNlIChaZXJvKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTd2l0Y2ggKFRvSW50ZWdlciAoQXJnMSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZSAoT25lKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUmV0dXJuIChCdWZmZXIgKE9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJldHVybiAoQnVmZmVyIChPbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZSAoT25lKQogICAgICAgICAgICAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKE9uZSkKICAgICAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0CiAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybiAoWmVybykK ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICBFbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgUmV0dXJuIChCdWZmZXIgKE9uZSkKICAgICAgICAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAweDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gLgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgU2NvcGUgKF9TQi5JMkNCKQog ICAgewogICAgICAgIERldmljZSAoVFBEMCkKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgKF9I SUQsICJNU0ZUMDAwMSIpICAvLyBfSElEOiBIYXJkd2FyZSBJRAogICAgICAgICAgICBOYW1lIChf Q0lELCAiUE5QMEM1MCIgLyogSElEIFByb3RvY29sIERldmljZSAoSTJDIGJ1cykgKi8pICAvLyBf Q0lEOiBDb21wYXRpYmxlIElECiAgICAgICAgICAgIE1ldGhvZCAoX0RTTSwgNCwgU2VyaWFsaXpl ZCkgIC8vIF9EU006IERldmljZS1TcGVjaWZpYyBNZXRob2QKICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgSWYgKChBcmcwID09IFRvVVVJRCAoIjNjZGZmNmY3LTQyNjctNDU1NS1hZDA1LWIz MGEzZDg5MzhkZSIpIC8qIEhJRCBJMkMgRGV2aWNlICovKSkKICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICBJZiAoKEFyZzIgPT0gWmVybykpCiAgICAgICAgICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgICAgICAgICBJZiAoKEFyZzEgPT0gT25lKSkKICAgICAgICAgICAg ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuIChCdWZmZXIg KE9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIElmICgo QXJnMiA9PSBPbmUpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgSWYgKChUUFRZID09IE9uZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJldHVybiAoT25lKQogICAgICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgICAgICBJZiAoKChUUFRZID09IDB4MDIpIHx8IChUUFRZID09 IDB4MDMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgUmV0dXJuICgweDIwKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIFJldHVybiAoQnVm ZmVyIChPbmUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIDB4MDAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAuCiAgICAgICAgICAg ICAgICB9KQogICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5vdFNl cmlhbGl6ZWQpICAvLyBfU1RBOiBTdGF0dXMKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg SWYgKChUUFRZID09IFplcm8pKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg IFJldHVybiAoWmVybykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEVsc2UKICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKDB4MEYpCiAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90 U2VyaWFsaXplZCkgIC8vIF9DUlM6IEN1cnJlbnQgUmVzb3VyY2UgU2V0dGluZ3MKICAgICAgICAg ICAgewogICAgICAgICAgICAgICAgSWYgKChUUFRZID09IE9uZSkpCiAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoU0JGQiwgUmVzb3VyY2VUZW1wbGF0ZSAoKQogICAg ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSTJjU2VyaWFsQnVzVjIg KDB4MDAxNSwgQ29udHJvbGxlckluaXRpYXRlZCwgMHgwMDA2MUE4MCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEFkZHJlc3NpbmdNb2RlN0JpdCwgIlxcX1NCLkkyQ0IiLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHgwMCwgUmVzb3VyY2VDb25zdW1lciwgLCBFeGNsdXNpdmUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAg ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBJZiAoKFRQVFkgPT0gMHgwMykpCiAgICAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoU0JGQSwgUmVzb3VyY2VUZW1wbGF0 ZSAoKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgSTJjU2Vy aWFsQnVzVjIgKDB4MDAyQSwgQ29udHJvbGxlckluaXRpYXRlZCwgMHgwMDA2MUE4MCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3NpbmdNb2RlN0JpdCwgIlxcX1NCLkkyQ0IiLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgUmVzb3VyY2VDb25zdW1lciwgLCBFeGNs dXNpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAg fSkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBJZiAoKFRQVFkgPT0gMHgwMikp CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAoU0JGUywgUmVzb3Vy Y2VUZW1wbGF0ZSAoKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgSTJjU2VyaWFsQnVzVjIgKDB4MDAyQywgQ29udHJvbGxlckluaXRpYXRlZCwgMHgwMDA2MUE4 MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3NpbmdNb2RlN0JpdCwgIlxcX1NC LkkyQ0IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgUmVzb3VyY2VDb25zdW1l ciwgLCBFeGNsdXNpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAg ICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBOYW1lIChTQkZJ LCBSZXNvdXJjZVRlbXBsYXRlICgpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgR3Bpb0ludCAoTGV2ZWwsIEFjdGl2ZUxvdywgRXhjbHVzaXZlQW5kV2FrZSwgUHVsbFVwLCAw eDAwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJcXF9TQi5HUElPIiwgMHgwMCwgUmVzb3Vy Y2VDb25zdW1lciwgLAogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAg ICAgICAgIHsgICAvLyBQaW4gbGlzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDU5 CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAg ICAgICBJZiAoKFRQVFkgPT0gT25lKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg ICAgICBSZXR1cm4gKENvbmNhdGVuYXRlUmVzVGVtcGxhdGUgKFNCRkIsIFNCRkkpKQogICAgICAg ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIElmICgoVFBUWSA9PSAweDAzKSkKICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKENvbmNhdGVuYXRlUmVzVGVtcGxh dGUgKFNCRkEsIFNCRkkpKQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIElmICgo VFBUWSA9PSAweDAyKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBSZXR1 cm4gKENvbmNhdGVuYXRlUmVzVGVtcGxhdGUgKFNCRlMsIFNCRkkpKQogICAgICAgICAgICAgICAg fQogICAgICAgICAgICB9CgogICAgICAgICAgICBNZXRob2QgKFRQUkQsIDAsIFNlcmlhbGl6ZWQp CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFJldHVybiAoXl5eUENJMC5MUEMwLkVDMC5F Q1RQKSAvKiBcX1NCXy5QQ0kwLkxQQzAuRUMwXy5FQ1RQICovCiAgICAgICAgICAgIH0KCiAgICAg ICAgICAgIE1ldGhvZCAoVFBXUiwgMSwgU2VyaWFsaXplZCkKICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgXl5eUENJMC5MUEMwLkVDMC5FQ1RQID0gQXJnMAogICAgICAgICAgICB9CiAgICAg ICAgfQogICAgfQp9Cgo= --000000000000f88f530579d9785c--