From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19703 invoked by alias); 5 Jun 2002 21:56:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 19663 invoked by uid 71); 5 Jun 2002 21:56:01 -0000 Resent-Date: 5 Jun 2002 21:56:00 -0000 Resent-Message-ID: <20020605215600.19662.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, dominique.canazzi@wanadoo.fr Received:(qmail 11778 invoked by uid 61); 5 Jun 2002 21:47:25 -0000 Message-Id:<20020605214725.11777.qmail@sources.redhat.com> Date: Wed, 05 Jun 2002 14:56:00 -0000 From: dominique.canazzi@wanadoo.fr Reply-To: dominique.canazzi@wanadoo.fr To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: ada/6941: GNAT BUG DETECTED X-SW-Source: 2002-06/txt/msg00126.txt.bz2 List-Id: >Number: 6941 >Category: ada >Synopsis: GNAT BUG DETECTED >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Wed Jun 05 14:56:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Dominique Canazzi >Release: gcc-3.1 >Organization: >Environment: AMD Athlon 500, Linux redhat-7.2, gcc-3.1 >Description: GNAT BUG box below: +===========================GNAT BUG DETECTED==============================+ | 3.1 (20020501) (i686-pc-linux-gnu) Gigi abort, Code=507 | | Error detected at portable-debug.ads:161:24 | | Please submit a bug report, see http://gcc.gnu.org/bugs.html. | | Include the entire contents of this bug box in the report. | | Include the exact gcc or gnatmake command that you entered. | | Also include sources listed below in gnatchop format | | (concatenated together with no headers between files). | +==========================================================================+ >How-To-Repeat: gnatchop the attached file type: $ gnatmake -c portable-debug.adb >Fix: sorry, no workaround found, no skill enough to try a fix. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="report-source" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="report-source" d2l0aCBTeXN0ZW07DQp3aXRoIEFkYS5UYWdzOw0Kd2l0aCBBZGEuVGV4dF9JbzsNCi0tPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PS0tDQpwYWNrYWdlIFBvcnRhYmxlIGlzDQogICBwcmFnbWEgRWxhYm9yYXRl X0JvZHk7DQoNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUGF0dGVybiBtYXRj aGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgIFN0cmluZ19Kb2tlciAgOiBj b25zdGFudCBDaGFyYWN0ZXI6PSAnKic7IC0tIENhcmFjdGVyZSBqb2tlciBwb3VyIHVuZSBjaGFp bmUNCiAgIENoYXJfSm9rZXIgICAgOiBjb25zdGFudCBDaGFyYWN0ZXI6PSAnPyc7IC0tIENhcmFj dGVyZSBqb2tlciBwb3VyIHVuIGNhcmFjdGVyZQ0KICAgVm1zX0NoYXJfSm9rZXI6IGNvbnN0YW50 IENoYXJhY3Rlcjo9ICclJzsgLS0gQ2FyYWN0ZXJlIGpva2VyIFZtcyBwb3VyIHVuIGNhcmFjdGVy ZQ0KDQogICBmdW5jdGlvbiBNYXRjaCAoICAgICAgICAgICAgICAgICAgICAtLSBpbmRpcXVlIHNp DQogICAgICBWYWx1ZSAgOiBTdHJpbmc7ICAgICAgICAgICAgICAgICAtLSBjZXR0ZSBjaGFpbmUg ZXN0IGNvbmZvcm1lIGF1IG1vZGVsZQ0KICAgICAgUGF0dGVybjogU3RyaW5nKSAgICAgICAgICAg ICAgICAgLS0gZGVmaW5pIHBhciBjZXR0ZSBjaGFpbmUgcG91ciBsZXMgam9rZXJzDQogICAgICBy ZXR1cm4gQm9vbGVhbjsgICAgICAgICAgICAgICAgICAtLSAnKicsICc/JyBldCAnJScgc3VyIHRv dXMgc3lzdGVtZXMNCg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdlbmVyYXRldXIgYWxl YXRvaXJlIHBvcnRhYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIC0tIENldHRlIHByb2Nl ZHVyZSBwcm9wb3NlIHVuIGdlbmVyYXRldXIgYWxlYXRvaXJlIGRlIHR5cGUgbWl4dGUNCiAgIC0t IFNlZWQgPSA2OTA2OSAqIFNlZWQgKyAxIHByb2R1aXNhbnQgdW4gZmxvYXQgc3VyIDAuMC4uMS4w DQogICAtLSBmb3Vybmlzc2FudCwgcG91ciB1biBtZW1lIGdlcm1lLCBsYSBtZW1lIHN1aXRlIHN1 ciB0b3V0ZXMgcGxhdGVzIGZvcm1lcw0KDQogICB0eXBlIE1hY2hpbmVfU2VlZCBpcyBtb2QgMioq MzI7DQoNCiAgIHByb2NlZHVyZSBSYW5kb20gKA0KICAgICAgUmFuZCA6ICAgIG91dCBGbG9hdCA7 ICAgICAgICAgICAgLS0gY2Ugbm9tYnJlIGFsZWF0b2lyZSB1bmlmb3JtZSBkYW5zIDAuLjENCiAg ICAgIFNlZWQgOiBpbiBvdXQgTWFjaGluZV9TZWVkKTsgICAgIC0tIGEgcGFydGlyIGRlIGNlIGdl cm1lDQoNCiAgIGZ1bmN0aW9uIFJhbmRvbV9TZWVkICAgICAgICAgICAgICAgIC0tIFByb3Bvc2Ug dW4gZ2VybWUgYWxlYXRvaXJlDQogICAgICByZXR1cm4gTWFjaGluZV9TZWVkOw0KDQogICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN5c3RlbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KDQogICBmdW5jdGlvbiAgQWRkcmVzc19JbWFnZSAoICAgICAgICAg ICAtLSByZXRvdXJuZSBsJ2ltYWdlDQogICAgICBWYWx1ZTogU3lzdGVtLkFkZHJlc3MpICAgICAg ICAgICAtLSBjZXR0ZSBhZHJlc3NlDQogICAgICByZXR1cm4gU3RyaW5nOw0KDQogICBmdW5jdGlv biAgQWRkcmVzc19WYWx1ZSAoICAgICAgICAgICAtLSByZXRvdXJuZSBsJ2FkcmVzc2UNCiAgICAg IEltYWdlOiBTdHJpbmcpICAgICAgICAgICAgICAgICAgIC0tIGF5YW50IGNldCBpbWFnZQ0KICAg ICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOyAgICAgICAgICAgLS0gKHVzYWdlIGNvbnRyb2xlKQ0K DQogICBmdW5jdGlvbiBTdG9yYWdlX1NpemUgKCAgICAgICAgICAgICAtLSBSZXRvdXJuZSBsZSBu b21icmUgZCdlbGVtZW50IGRlIHN0b2NrYWdlDQogICAgICBTaXplIDogTmF0dXJhbCkgICAgICAg ICAgICAgICAgICAtLSBuZWNlc3NhaXJlIHBvdXIgdW5lIGRvbm5lZSBkZSBjZXR0ZSB0YWlsbGUN CiAgICAgIHJldHVybiBOYXR1cmFsOw0KDQogICBmdW5jdGlvbiAiPCIoICAgICAgICAgICAgICAg ICAgICAgICAtLSByZWxhdGlvbiBkJ29yZHJlDQogICAgICBMLFI6IEFkYS5UYWdzLlRhZykgICAg ICAgICAgICAgICAtLSBzYW5zIGltcG9ydGFuY2UNCiAgICAgIHJldHVybiBCb29sZWFuOyAgICAg ICAgICAgICAgICAgIC0tIHBvdXIgbGUgY2xhc3NlbWVuciBkZXMgVGFnDQoNCiAgIC0tLS0tLS0t LS0tLS0tLS0gUHJvdGVjdGlvbiBMZWN0dXJlIGRlIGZpY2hpZXJzIE5UIHNvdXMgVU5JWCAtLS0t LS0tLS0tLS0tLS0tDQogICBwcm9jZWR1cmUgU2FmZV9HZXRfTGluZSAoDQogICAgICBGaWxlOiBp biAgQWRhLlRleHRfSW8uRmlsZV9UeXBlOyAtLSBmaWNoaWVyIGEgbGlyZQ0KICAgICAgSXRlbTog b3V0IFN0cmluZzsgICAgICAgICAgICAgICAgLS0gY2hhaW5lIGRlIGNhcmFjdGVyZXMgbHVlcw0K ICAgICAgTGFzdDogb3V0IE5hdHVyYWwpOyAgICAgICAgICAgICAgLS0gbm9tYnJlIGRlIGNhcmFj dGVyZXMgbHVzDQoNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGl2ZXJzIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgIGZ1bmN0aW9uIFVwcGVy X0JvdW5kICggICAgICAgICAgICAgIC0tIHJldG91cm5lIGxhIHB1aXNzYW5jZSBlbnRpZXJlIGRl IEJhc2UNCiAgICAgIE46IE5hdHVyYWw7ICAgICAgICAgICAgICAgICAgICAgIC0tIGltbWVkaWF0 ZW1lbnQgc3VwZXJpZXVyIG91IGVnYWxlIGEgTg0KICAgICAgQmFzZTogUG9zaXRpdmU6PSAyKSAg ICAgICAgICAgICAgLS0gYWZpbiBkZSBmYWlyZSBkZXMgYWxsb2NjYXRpb24gbWVtb2lyZQ0KICAg ICAgcmV0dXJuIE5hdHVyYWw7ICAgICAgICAgICAgICAgICAgLS0gZCd1biBub21icmUgcmVzdHJl aW50IGRlIHRhaWxsZXMNCg0KICAgZnVuY3Rpb24gIisiKFM6U3RyaW5nKXJldHVybiAgICAgICAg LS0gcmV0b3VybmUgbGEgY2hhaW5lIG91DQogICAgICBTdHJpbmc7ICAgICAgICAgICAgICAgICAg ICAgICAgICAtLSBvdSAiIiBzaSBlbGxlIGVzdCB2aWRlDQoNCiAgIGZ1bmN0aW9uICIrIihTMSwg UzI6IFN0cmluZykgICAgICAgIC0tIHJldG91cm5lIGxhIGNvbmNhdGVuYXRpb24gZGVzIGNoYWlu ZXMNCiAgICAgIHJldHVybiBTdHJpbmc7ICAgICAgICAgICAgICAgICAgIC0tIGF2ZWMgIiIgcG91 ciBsZXMgY2hhaW5lcyB2aWRlDQoNCnByaXZhdGUNCg0KICAgZnVuY3Rpb24gUHJvZ3JhbV9EaXIg ICAgICAgICAgICAgICAgLS0gcmV0b3VybmUgbGUgcmVwZXJ0b2lyZSBkdQ0KICAgICAgcmV0dXJu IFN0cmluZzsgICAgICAgICAgICAgICAgICAgLS0gcHJvZ3JhbW1lIGV4ZWN1dGUNCg0KICAgZnVu Y3Rpb24gUHJvZ3JhbV9OYW1lICAgICAgICAgICAgICAgLS0gcmV0b3VybmUgbGUgbm9tIGR1IHBy b2dyYW1tZQ0KICAgICAgcmV0dXJuIFN0cmluZzsgICAgICAgICAgICAgICAgICAgLS0gZXhlY3V0 ZSAoc2FucyBleHRlbnNpb24gIC5leGUpDQoNCmVuZCBQb3J0YWJsZTsNCg0Kd2l0aCBBZGEuVGV4 dF9JbzsNCndpdGggQWRhLlN0cmluZ3MuRml4ZWQgICAgICA7IHVzZSBBZGEuU3RyaW5ncywgQWRh LlN0cmluZ3MuRml4ZWQ7DQp3aXRoIEFkYS5DaGFyYWN0ZXJzLkhhbmRsaW5nOyB1c2UgQWRhLkNo YXJhY3RlcnMuSGFuZGxpbmc7DQp3aXRoIEFkYS5Db21tYW5kX0xpbmU7DQp3aXRoIFBvcnRhYmxl LkdldGVudjsgcHJhZ21hIEVsYWJvcmF0ZShQb3J0YWJsZS5HZXRlbnYpOw0KLS09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09LS0NCnBhY2thZ2UgYm9keSBQb3J0YWJsZS5EZWJ1ZyBpcw0KICAgTXlfTmFtZTog Y29uc3RhbnQgU3RyaW5nOj0gInBvcnRhYmxlLmRlYnVnIjsNCg0KICAgRGVidWdfTG9jYXRpb25z X0VudmlyIDogY29uc3RhbnQgU3RyaW5nICAgOj0gIkRFQlVHX1RIUkVTSE9MRFMiOw0KICAgRGVi dWdfTG9jYXRpb25zX09wdGlvbjogY29uc3RhbnQgU3RyaW5nICAgOj0gIi1UIjsNCiAgIERlYnVn X0xvZ19GaWxlICAgICAgICA6IGNvbnN0YW50IFN0cmluZyAgIDo9ICJERUJVR19MT0dfRklMRSI7 DQogICBMb2NhdGlvbl9TaXplICAgICAgICAgOiBjb25zdGFudCBOYXR1cmFsICA6PSA0MDsNCiAg IFBhdHRlcm5fU2VwYXJhdG9yICAgICA6IGNvbnN0YW50IENoYXJhY3Rlcjo9ICcsJzsNCiAgIFNl cnZpY2VfU2VwYXJhdG9yICAgICA6IGNvbnN0YW50IENoYXJhY3Rlcjo9ICc6JzsNCiAgIExldmVs X1NlcGFyYXRvciAgICAgICA6IGNvbnN0YW50IENoYXJhY3Rlcjo9ICc9JzsNCiAgIEF0X0ZpbGVf UHJlZml4ICAgICAgICA6IGNvbnN0YW50IENoYXJhY3Rlcjo9ICdAJzsNCg0KICAgTG9uZ19JbWFn ZSA6IGFycmF5IChMZXZlbCkgb2YgUmVmX1N0cmluZzo9IChuZXcgU3RyaW5nJygibmV2ZXIiKSwg bmV3IFN0cmluZycoImNhbGwiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmlu ZycoImJhY2siKSwgbmV3IFN0cmluZycoIm1vcmUiKSwgbmV3IFN0cmluZycoImFsd2F5cyIpKTsN CiAgIFNob3J0X0ltYWdlOiBhcnJheSAoTGV2ZWwpIG9mIENoYXJhY3RlciA6PSAoJyAnLCAnPics JzwnLCcrJywnKicpOw0KICAgQW55X1N0cmluZyA6IGNvbnN0YW50IFJlZl9TdHJpbmc6PSBuZXcg U3RyaW5nJygoMT0+UG9ydGFibGUuU3RyaW5nX0pva2VyKSk7DQoNCiAgIHR5cGUgTG9jYXRpb25z Ow0KICAgdHlwZSBSZWZfTG9jYXRpb25zIGlzIGFjY2VzcyBMb2NhdGlvbnM7DQogICB0eXBlIExv Y2F0aW9ucyBpcyByZWNvcmQNCiAgICAgIE5leHQ6IFJlZl9Mb2NhdGlvbnM7DQogICAgICBMb2Mg OiBSZWZfU3RyaW5nOw0KICAgICAgUGFpcjogU2VydmljZV9MZXZlbF9QYWlyOw0KICAgZW5kIHJl Y29yZDsNCg0KICAgUGF0dGVybl9MaXN0IDogUmVmX0xvY2F0aW9uczsNCiAgIFBhdHRlcm5fTGFz dCA6IE5hdHVyYWwgOj0gMDsNCg0KICAgVW5pdF9UaHJlc2hvbGQ6IFRocmVzaG9sZDsNCiAgIC0t IGRlZmluZT1DYWxsOiBUcmFjZSBsZXMgZGVmaW5pdGlvbnMgZGVzIHNldWlscyBzZWxlY3Rpb25u ZXMNCiAgIC0tIGRlZmluZT1CYWNrOiBUcmFjZSB0b3V0ZXMgbGVzIGRlZmluaXRpb25zIGRlIHNl dWlscw0KICAgLS0gaW5pdGlhbGlzZT1jYWxsOiBUcmFjZSBsYSB0YWJsZSBjb25zdHJ1aXRlIGEg bCdpbml0aWFsaXNhdGlvbg0KDQogICBMb2dfRmlsZTogQWRhLlRleHRfSW8uRmlsZV9UeXBlOw0K ICAgTG9nX09uICA6IEJvb2xlYW46PSBGYWxzZTsNCg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQogICBmdW5jdGlvbiBDbGVhbiAoUzogU3RyaW5nKSByZXR1cm4gU3Ry aW5nIGlzDQogICBiZWdpbg0KICAgICAgcmV0dXJuIFRvX0xvd2VyKFRyaW0oUywgQm90aCkpOw0K ICAgZW5kIENsZWFuOw0KDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CiAgIHByb2NlZHVyZSBUcmFjZV9QdXQgKFM6IFN0cmluZykgaXMNCiAgIGJlZ2luDQogICAgICBB ZGEuVGV4dF9Jby5QdXQoQWRhLlRleHRfSW8uU3RhbmRhcmRfT3V0cHV0LCBTKTsNCiAgICAgIGlm IExvZ19PbiB0aGVuDQogICAgICAgICBBZGEuVGV4dF9Jby5QdXQoTG9nX0ZpbGUsIFMpOw0KICAg ICAgZW5kIGlmOw0KICAgZW5kIFRyYWNlX1B1dDsNCg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQogICBwcm9jZWR1cmUgVHJhY2VfTmV3X0xpbmUgaXMNCiAgIGJlZ2lu DQogICAgICBBZGEuVGV4dF9Jby5OZXdfTGluZShBZGEuVGV4dF9Jby5TdGFuZGFyZF9PdXRwdXQp Ow0KICAgICAgaWYgTG9nX09uIHRoZW4NCiAgICAgICAgIEFkYS5UZXh0X0lvLk5ld19MaW5lKExv Z19GaWxlKTsNCiAgICAgIGVuZCBpZjsNCiAgIGVuZCBUcmFjZV9OZXdfTGluZTsNCg0KICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCiAgIGZ1bmN0aW9uIExldmVsX1BvcyAoICAgICAgICAgICAgICAg IC0tIHJldG91cm5lIGxhIHBvc2l0aW9uDQogICAgICBMZXY6IExldmVsKSAgICAgICAgICAgICAg ICAgICAgICAtLSBkZSBjZSBuaXZlYXUNCiAgICAgIHJldHVybiBOYXR1cmFsIGlzDQogICBiZWdp bg0KICAgICAgcmV0dXJuIE5hdHVyYWwoTGV2KTsNCiAgIGVuZCBMZXZlbF9Qb3M7DQoNCiAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgZnVuY3Rpb24gTGV2ZWxfVmFs dWUgKEltYWdlOiBTdHJpbmcpIHJldHVybiBMZXZlbCBpcw0KICAgICAgUmVzdWx0OiBMZXZlbDo9 IExldmVsJ0ZpcnN0Ow0KICAgYmVnaW4NCiAgICAgIGZvciBJIGluIExldmVsIHJhbmdlIExldmVs J0ZpcnN0KzEuLkxldmVsJ0xhc3QgbG9vcA0KICAgICAgICAgaWYgSW1hZ2U9TG9uZ19JbWFnZShJ KS5hbGwgb3IgZWxzZQ0KICAgICAgICAgICAgSW1hZ2UoSW1hZ2UnRmlyc3QpPVNob3J0X0ltYWdl KEkpDQogICAgICAgICB0aGVuDQogICAgICAgICAgICBSZXN1bHQ6PSBJOw0KICAgICAgICAgICAg ZXhpdDsNCiAgICAgICAgIGVuZCBpZjsNCiAgICAgIGVuZCBsb29wOw0KICAgICAgcmV0dXJuIFJl c3VsdDsNCiAgIGVuZCBMZXZlbF9WYWx1ZTsNCg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQogICBmdW5jdGlvbiBGdWxsX0ltYWdlIChMZXY6IExldmVsKSByZXR1cm4g U3RyaW5nIGlzDQogICAgICB1c2UgQWRhLkNoYXJhY3RlcnMuSGFuZGxpbmc7DQogICAgICBSZXN1 bHQ6IFN0cmluZzo9IExvbmdfSW1hZ2UoTGV2KS5hbGw7DQogICBiZWdpbg0KICAgICAgUmVzdWx0 KFJlc3VsdCdGaXJzdCk6PSBUb19VcHBlcihSZXN1bHQoUmVzdWx0J0ZpcnN0KSk7DQogICAgICBy ZXR1cm4gUmVzdWx0Ow0KICAgZW5kIEZ1bGxfSW1hZ2U7DQoNCiAgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gU2V1aWwgZGUgaW5zdHJ1bWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQoNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgZnVuY3Rp b24gQ29tcG9zZSAoTG9jOiBTdHJpbmcpIHJldHVybiBUaHJlc2hvbGQgaXMNCiAgIGJlZ2luDQog ICAgICByZXR1cm4gKG5ldyBTdHJpbmcnKENsZWFuKExvYykpLCBudWxsKTsNCiAgIGVuZCBDb21w b3NlOw0KDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIHByb2Nl ZHVyZSBUcmFjZV9EZWZpbmUgKExldjogaW4gTGV2ZWw7IFRocmVzOiBpbiBUaHJlc2hvbGQpIGlz DQogICBiZWdpbg0KICAgICAgaWYgSXNfVHJhY2VfU2VsZWN0ZWQoTGV2LCAiZGVmaW5lIiwgVW5p dF9UaHJlc2hvbGQpIHRoZW4NCiAgICAgICAgIFRyYWNlX1B1dCAoIiAgIiAmIFRocmVzLkxvYy5h bGwpOw0KICAgICAgICAgaWYgVGhyZXMuUGFpcnMvPW51bGwgdGhlbg0KICAgICAgICAgICAgZm9y IEkgaW4gVGhyZXMuUGFpcnMncmFuZ2UgbG9vcA0KICAgICAgICAgICAgICAgaWYgST0xIHRoZW4N CiAgICAgICAgICAgICAgICAgIFRyYWNlX1B1dChTZXJ2aWNlX1NlcGFyYXRvciAmICIgIik7DQog ICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICBUcmFjZV9QdXQoUGF0dGVybl9T ZXBhcmF0b3IgJiAiICIpOw0KICAgICAgICAgICAgICAgZW5kIGlmOw0KICAgICAgICAgICAgICAg VHJhY2VfUHV0IChUaHJlcy5QYWlycyhJKS5TZXJ2LmFsbCAmIExldmVsX1NlcGFyYXRvciAmDQog ICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bGxfSW1hZ2UoVGhyZXMuUGFpcnMoSSkuTGV2KSk7 DQogICAgICAgICAgICBlbmQgbG9vcDsNCiAgICAgICAgIGVuZCBpZjsNCiAgICAgICAgIFRyYWNl X05ld19MaW5lOw0KICAgICAgZW5kIGlmOw0KICAgZW5kIFRyYWNlX0RlZmluZTsNCg0KICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCiAgIGZ1bmN0aW9uIERlZmluZSAoICAgICAgICAgICAgICAgICAg IC0tIHJldG91cm5lIGxlIHNldWlsIGQnaW5zdHJ1bWVudGF0aW9uDQogICAgICBMb2MgOiBTdHJp bmc7ICAgICAgICAgICAgICAgICAgICAtLSBwb3VyIGNldCBlbXBsYWNlbWVudCAodW5pdGUgb3Ug cm91dGluZSkNCiAgICAgIExldiA6IExldmVsOyAgICAgICAgICAgICAgICAgICAgIC0tIGEgY2Ug bml2ZWF1IChzZXVpbCBkZWZpbmkgcGFyIHByb2dyYW1tZSkNCiAgICAgIFNlcnY6IFN0cmluZzo9 ICIiKSAgICAgICAgICAgICAgIC0tIHBvdXIgY2Ugc2VydmljZSAoIiI6IHRvdXMpDQogICAgICBy ZXR1cm4gVGhyZXNob2xkDQogICBpcw0KICAgICAgVGhyZXM6IFRocmVzaG9sZDo9IENvbXBvc2Ug KExvYyk7DQogICAgICBQYWlyIDogU2VydmljZV9MZXZlbF9QYWlyOj0gKEFueV9TdHJpbmcsIExl dik7DQogICBiZWdpbg0KICAgICAgaWYgU2Vydi89IiIgdGhlbg0KICAgICAgICAgUGFpci5TZXJ2 Oj0gbmV3IFN0cmluZycoQ2xlYW4oU2VydikpOw0KICAgICAgZW5kIGlmOw0KICAgICAgVGhyZXMu UGFpcnM6PSBuZXcgUGFpcl9MaXN0JygoMT0+IFBhaXIpKTsNCiAgICAgIFRyYWNlX0RlZmluZShD YWxsLCBUaHJlcyk7DQogICAgICByZXR1cm4gVGhyZXM7DQogICBlbmQgRGVmaW5lOw0KDQogICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgZnVuY3Rpb24gRGVmaW5lICggICAgICAgICAgICAgICAg ICAtLSByZXRvdXJuZSBsZSBzZXVpbCBkJ2luc3RydW1lbnRhdGlvbg0KICAgICAgTG9jICA6IFN0 cmluZykgICAgICAgICAgICAgICAtLSBleGlnZSBwb3VyIGNldCBlbXBsYWNlbWVudCAodW5pdGUg b3UNCiAgICAgIHJldHVybiBUaHJlc2hvbGQgICAgICAgICAgICAgICAgLS0gcm91dGluZSkNCiAg IGlzDQogICAgICBUaHJlczogVGhyZXNob2xkOj0gQ29tcG9zZShMb2MpOw0KICAgYmVnaW4NCiAg ICAgIFNldF9QYWlyX0xpc3Q6IGRlY2xhcmUNCiAgICAgICAgIFBhaXJzOiBQYWlyX0xpc3QoMS4u UGF0dGVybl9MYXN0KTsNCiAgICAgICAgIExhc3QgOiBOYXR1cmFsOj0gMDsNCiAgICAgICAgIFBv cyAgOiBQb3NpdGl2ZTsNCiAgICAgICAgIENlbGwgOiBSZWZfTG9jYXRpb25zOj0gUGF0dGVybl9M aXN0Ow0KICAgICAgYmVnaW4NCiAgICAgICAgIHdoaWxlIENlbGwvPW51bGwgbG9vcA0KICAgICAg ICAgICAgaWYgUG9ydGFibGUuTWF0Y2goVGhyZXMuTG9jLmFsbCwgQ2VsbC5Mb2MuYWxsKSB0aGVu DQogICAgICAgICAgICAgICAtLSBpbnNlcmVyIGxhIHBhaXIgY29ycmVzcG9uZGFudGUgYSBzYSBw bGFjZQ0KICAgICAgICAgICAgICAgUG9zOj0gTGFzdCArIDE7DQogICAgICAgICAgICAgICBmb3Ig SSBpbiAxLi5MYXN0IGxvb3ANCiAgICAgICAgICAgICAgICAgIGlmIENlbGwuUGFpci5MZXY8UGFp cnMoSSkuTGV2IHRoZW4NCiAgICAgICAgICAgICAgICAgICAgIFBvczo9IEk7DQogICAgICAgICAg ICAgICAgICAgICBleGl0Ow0KICAgICAgICAgICAgICAgICAgZW5kIGlmOw0KICAgICAgICAgICAg ICAgZW5kIGxvb3A7DQogICAgICAgICAgICAgICBQYWlycyhQb3MrMS4uTGFzdCsxKTo9IFBhaXJz KFBvcy4uTGFzdCk7DQogICAgICAgICAgICAgICBQYWlycyhQb3MpOj0gQ2VsbC5QYWlyOw0KICAg ICAgICAgICAgICAgTGFzdDo9IExhc3QgKyAxOw0KICAgICAgICAgICAgZW5kIGlmOw0KICAgICAg ICAgICAgQ2VsbDo9IENlbGwuTmV4dDsNCiAgICAgICAgIGVuZCBsb29wOw0KICAgICAgICAgaWYg TGFzdD4wIHRoZW4NCiAgICAgICAgICAgIFRocmVzLlBhaXJzOj0gbmV3IFBhaXJfTGlzdCcoUGFp cnMoMS4uTGFzdCkpOw0KICAgICAgICAgZW5kIGlmOw0KICAgICAgZW5kIFNldF9QYWlyX0xpc3Q7 DQoNCiAgICAgIGRlY2xhcmUNCiAgICAgICAgIExldjogTGV2ZWw6PSBCYWNrOw0KICAgICAgYmVn aW4NCiAgICAgICAgIGlmIFRocmVzLlBhaXJzPW51bGwgdGhlbg0KICAgICAgICAgICAgTGV2Oj0g Q2FsbDsNCiAgICAgICAgIGVuZCBpZjsNCiAgICAgICAgIFRyYWNlX0RlZmluZShMZXYsVGhyZXMp Ow0KICAgICAgZW5kOw0KICAgICAgcmV0dXJuIFRocmVzOw0KICAgZW5kIERlZmluZTsNCg0KICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIGZ1bmN0aW9uIExvY2F0aW9uX09mICggICAgICAgICAg ICAgLS0gcmV0b3VybmUgbCdlbXBsYWNlbWVudA0KICAgICAgVGhyZXM6IFRocmVzaG9sZCkgICAg ICAgICAgICAgICAtLSBhc3NvY2llIGEgY2Ugc2V1aWwNCiAgICAgIHJldHVybiBTdHJpbmcgaXMN CiAgIGJlZ2luDQogICAgICByZXR1cm4gVGhyZXMuTG9jLmFsbDsNCiAgIGVuZCBMb2NhdGlvbl9P ZjsNCg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIGZ1bmN0aW9uIERlZmluZSAoICAgICAg ICAgICAgICAgICAgLS0gcmV0b3VybmUgbGUgc2V1aWwgZCdpbnN0cnVtZW50YXRpb24NCiAgICAg IFRocmVzOiBUaHJlc2hvbGQ7ICAgICAgICAgICAgICAgLS0gZXhpZ2UgcG91ciBsZSBzb3VzIGVt cGxhY2VtZW50IGRlZHVpdA0KICAgICAgVGFpbCA6IFN0cmluZykgICAgICAgICAgICAgICAgICAt LSBkJ3VuIGVtcGxhY2VtZW50IGV0IGQndW4gbm9tIHJlbGF0aWYNCiAgICAgIHJldHVybiBUaHJl c2hvbGQgaXMgICAgICAgICAgICAgLS0gKHJvdXRpbmUpDQogICBiZWdpbg0KICAgICAgcmV0dXJu IERlZmluZSAoVGhyZXMuTG9jLmFsbCAmICcuJyAmIFRhaWwpOw0KICAgZW5kIERlZmluZTsNCg0K ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTml2ZWF1IGRlIGluc3RydW1lbnRhdGlv biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAgZnVuY3Rpb24gTGV2ZWxfT2YgKCAgICAgICAg ICAgICAgICAgLS0gcmV0b3VybmUgbGUgc2V1aWwgYXNzb2NpZQ0KICAgICAgU2VydiA6IFN0cmlu ZzsgICAgICAgICAgICAgICAgICAgLS0gcG91ciBjZSBzZXJ2aWNlDQogICAgICBUaHJlczogVGhy ZXNob2xkKSAgICAgICAgICAgICAgICAtLSBldCBwb3VyIGNlIHNldWlsDQogICAgICByZXR1cm4g TGV2ZWwgaXMNCiAgIGJlZ2luDQogICAgICBpZiBUaHJlcy5QYWlycy89bnVsbCB0aGVuDQogICAg ICAgICBmb3IgSSBpbiByZXZlcnNlIFRocmVzLlBhaXJzJ3JhbmdlIGxvb3ANCiAgICAgICAgICAg ICBpZiBNYXRjaCAoU2VydiwgVGhyZXMuUGFpcnMoSSkuU2Vydi5hbGwpIHRoZW4NCiAgICAgICAg ICAgICAgICByZXR1cm4gVGhyZXMuUGFpcnMoSSkuTGV2Ow0KICAgICAgICAgICAgIGVuZCBpZjsN CiAgICAgICAgIGVuZCBsb29wOw0KICAgICAgZW5kIGlmOw0KICAgICAgcmV0dXJuIE5ldmVyOw0K ICAgZW5kIExldmVsX09mOw0KDQogICBwcm9jZWR1cmUgVHJhY2VfSGVhZGVyKCBMZXYgIDogTGV2 ZWw7IFNlcnYgOiBTdHJpbmc7IFRocmVzOiBUaHJlc2hvbGQpIGlzDQogICBiZWdpbg0KICAgICAg VHJhY2VfUHV0KEhlYWQoVGhyZXMuTG9jLmFsbCZTZXJ2aWNlX1NlcGFyYXRvciZTZXJ2LA0KICAg ICAgICAgICAgICAgIExvY2F0aW9uX1NpemUpICYgIFNob3J0X0ltYWdlKExldikpOw0KICAgZW5k IFRyYWNlX0hlYWRlcjsNCg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIGZ1bmN0aW9uIElz X1NlbGVjdGVkICggICAgICAgICAgICAgIC0tIEluZGlxdWUgc2kgdW4gcG9pbnQgZCdpbnN0cnVt ZW50YXRpb24NCiAgICAgIExldiAgOiBMZXZlbDsgICAgICAgICAgICAgICAgICAgIC0tIGRlIGNl IG5pdmVhdSBlc3Qgc2VsZWN0aW9ubmUNCiAgICAgIFNlcnYgOiBTdHJpbmc7ICAgICAgICAgICAg ICAgICAgIC0tIHBvdXIgY2Ugc2VydmljZQ0KICAgICAgVGhyZXM6IFRocmVzaG9sZDsgICAgICAg ICAgICAgICAgLS0gZXQgcG91ciBjZSBzZXVpbA0KICAgICAgVHJhY2U6IEJvb2xlYW46PSBGYWxz ZSkgICAgICAgICAgLS0gZXQgbmUgdHJhY2UgcGFzIGxhIGxvY2FsaXNhdGlvbg0KICAgICAgcmV0 dXJuIEJvb2xlYW4gaXMNCiAgIGJlZ2luDQogICAgICBpZiBUaHJlcy5QYWlycz1udWxsIHRoZW4N CiAgICAgICAgIHJldHVybiBGYWxzZTsNCiAgICAgIGVsc2UNCiAgICAgICAgIGRlY2xhcmUNCiAg ICAgICAgICAgIFNlcnZpY2UgOiBjb25zdGFudCBTdHJpbmc6PSBDbGVhbihTZXJ2KTsNCiAgICAg ICAgICAgIFNlcnZfTGV2OiBMZXZlbDo9IE5ldmVyOw0KICAgICAgICAgICAgUmVzdWx0ICA6IEJv b2xlYW47DQogICAgICAgICAgICB1c2UgQWRhLlN0cmluZ3MuRml4ZWQ7DQogICAgICAgICBiZWdp bg0KICAgICAgICAgICAgZm9yIEkgaW4gcmV2ZXJzZSBUaHJlcy5QYWlycydyYW5nZSBsb29wDQog ICAgICAgICAgICAgICAgZXhpdCB3aGVuIFRocmVzLlBhaXJzKEkpLkxldjxMZXY7DQogICAgICAg ICAgICAgICAgaWYgTWF0Y2ggKFNlcnZpY2UsIFRocmVzLlBhaXJzKEkpLlNlcnYuYWxsKSB0aGVu DQogICAgICAgICAgICAgICAgICAgU2Vydl9MZXY6PSBUaHJlcy5QYWlycyhJKS5MZXY7DQogICAg ICAgICAgICAgICAgICAgZXhpdDsNCiAgICAgICAgICAgICAgICBlbmQgaWY7DQogICAgICAgICAg ICBlbmQgbG9vcDsNCiAgICAgICAgICAgIFJlc3VsdDo9IExldjw9U2Vydl9MZXY7DQogICAgICAg ICAgICBpZiBSZXN1bHQgYW5kIHRoZW4gVHJhY2UgdGhlbg0KICAgICAgICAgICAgICAgVHJhY2Vf SGVhZGVyKExldiwgU2VydmljZSwgVGhyZXMpOw0KICAgICAgICAgICAgZW5kIGlmOw0KICAgICAg ICAgICAgcmV0dXJuIFJlc3VsdDsNCiAgICAgICAgIGVuZDsNCiAgICAgIGVuZCBpZjsNCiAgIGVu ZCBJc19TZWxlY3RlZDsNCg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIHByb2NlZHVyZSBU cmFjZSggICAgICAgICAgICAgICAgICAgICAtLSBDb252ZXJzZSBjZXR0ZSB0cmFjZQ0KICAgICAg SW5mbyA6IFN0cmluZykgICAgICAgICAgICAgICAgICAgIC0tIGQnaW5zdHJ1bWVudGF0aW9uIGF2 ZWMgY2UgbWVzc2FnZQ0KICAgaXMNCiAgICAgIEZyb206IFBvc2l0aXZlOw0KICAgICAgVG8gIDog TmF0dXJhbDo9IEluZm8nRmlyc3QtMTsNCiAgIGJlZ2luDQogICAgICB3aGlsZSBUbzw9SW5mbydM YXN0IGxvb3ANCiAgICAgICAgIEZyb206PSBUbyArIDE7DQogICAgICAgICBUbzo9IEluZGV4KElu Zm8oRnJvbS4uSW5mbydMYXN0KSwgKDE9PiBBc2NpaS5MZikpOw0KICAgICAgICAgaWYgVG89MCB0 aGVuDQogICAgICAgICAgICBUbzo9IEluZm8nTGFzdCsxOw0KICAgICAgICAgZW5kIGlmOw0KICAg ICAgICAgVHJhY2VfUHV0ICgiICAiKTsNCiAgICAgICAgIFRyYWNlX1B1dChJbmZvKEZyb20uLlRv LTEpKTsNCiAgICAgICAgIFRyYWNlX05ld19MaW5lOw0KICAgICAgZW5kIGxvb3A7DQotLSAgICAg ICBUcmFjZV9QdXQgKCIgICIgJiBJbmZvKTsNCi0tICAgICAgIFRyYWNlX05ld19MaW5lOw0KICAg ZW5kIFRyYWNlOw0KDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgcHJvY2VkdXJlIFNlbGVj dF9BbmRfVHJhY2UgKCAgICAgICAgLS0gVHJhY2UsIHNpIHVuIHBvaW50IGQnaW5zdHJ1bWVudGF0 aW9uDQogICAgICBMZXYgICA6IExldmVsOyAgICAgICAgICAgICAgICAgICAtLSBkZSBjZSBuaXZl YXUgZXN0IHNlbGVjdGlvbm5lLA0KICAgICAgSW5mbyAgOiBTdHJpbmc7ICAgICAgICAgICAgICAg ICAgLS0gYXZlYyBjZSBtZXNzYWdlDQogICAgICBTZXJ2ICA6IFN0cmluZzsgICAgICAgICAgICAg ICAgICAtLSBwb3VyIGNlIHNlcnZpY2UNCiAgICAgIFRocmVzIDogVGhyZXNob2xkKSAgICAgICAg ICAgICAgIC0tIGV0IHBvdXIgY2Ugc2V1aWwNCiAgIGlzDQogICAgICBSZXN1bHQ6IEJvb2xlYW46 PSBJc19UcmFjZV9TZWxlY3RlZChMZXYsIFNlcnYsIFRocmVzKTsNCiAgIGJlZ2luDQogICAgICBp ZiBSZXN1bHQgdGhlbg0KICAgICAgICAgVHJhY2UgKEluZm8pOw0KICAgICAgZW5kIGlmOw0KICAg ZW5kIFNlbGVjdF9BbmRfVHJhY2U7DQoNCiAgIHByb2NlZHVyZSBJbml0aWFsaXplIGlzDQogICAg ICBOb19FbnY6IGNvbnN0YW50IFN0cmluZzo9ICgxPT4gQXNjaWkuTnVsKTsNCiAgICAgIGZ1bmN0 aW9uIE9wdGlvbl9Mb2NhdGlvbiByZXR1cm4gU3RyaW5nIGlzDQogICAgICAgICB1c2UgQWRhLkNv bW1hbmRfTGluZTsNCiAgICAgIGJlZ2luDQogICAgICAgICBmb3IgSSBpbiAxLi5Bcmd1bWVudF9D b3VudCBsb29wDQogICAgICAgICAgICBkZWNsYXJlDQogICAgICAgICAgICAgICBBcmc6IGNvbnN0 YW50IFN0cmluZyA6PSBBcmd1bWVudChJKTsNCiAgICAgICAgICAgIGJlZ2luDQogICAgICAgICAg ICAgICBpZiBBcmcnTGVuZ3RoPTIgYW5kIHRoZW4gVG9fVXBwZXIoQXJnKDEuLjIpKT1EZWJ1Z19M b2NhdGlvbnNfT3B0aW9uIHRoZW4NCiAgICAgICAgICAgICAgICAgIHJldHVybiBOb19FbnY7DQog ICAgICAgICAgICAgICBlbHNpZiBBcmcnTGVuZ3RoPjIgYW5kIHRoZW4gVG9fVXBwZXIoQXJnKDEu LjMpKT1EZWJ1Z19Mb2NhdGlvbnNfT3B0aW9uJic9JyB0aGVuDQogICAgICAgICAgICAgICAgICBy ZXR1cm4gQXJnKDQuLkFyZydMYXN0KTsNCiAgICAgICAgICAgICAgIGVuZCBpZjsNCiAgICAgICAg ICAgIGVuZDsNCiAgICAgICAgIGVuZCBsb29wOw0KICAgICAgICAgcmV0dXJuICIiOw0KICAgICAg ZW5kIE9wdGlvbl9Mb2NhdGlvbjsNCg0KICAgICAgIHByb2NlZHVyZSBEZWZpbmVfTG9jYXRpb25z IChWYWw6IFN0cmluZykgaXMNCiAgICAgICAgIEZyb20gOiBQb3NpdGl2ZTsgICAgICAgICAgICAg ICAgIC0tIGRlYnV0IGRlIFBhdHRlcm4NCiAgICAgICAgIFN1YiAgOiBQb3NpdGl2ZTsgICAgICAg ICAgICAgICAgIC0tIHNlcGFyYXRldXIgbG9jYXRpb24vc2VydmljZQ0KICAgICAgICAgU2VwICA6 IFBvc2l0aXZlOyAgICAgICAgICAgICAgICAgLS0gc2VwYXJhdGV1ciBzZXJ2aWNlL25pdmVhdQ0K ICAgICAgICAgVG8gICA6IE5hdHVyYWw6PSBWYWwnRmlyc3QtMTsgICAgLS0gZmluIGRlIHBhdHRl cm4NCiAgICAgICAgIExldiAgOiBMZXZlbDsNCiAgICAgICAgIENlbGwgOiBSZWZfTG9jYXRpb25z Ow0KICAgICAgYmVnaW4NCi0tICAgICBBZGEuVGV4dF9Jby5QdXRfTGluZSAoIlZhbDogIiAmIFZh bCk7DQogICAgICAgICBsb29wDQogICAgICAgICAgICBGcm9tIDo9IFRvICsgMTsNCiAgICAgICAg ICAgIGV4aXQgd2hlbiBGcm9tPlZhbCdMYXN0Ow0KICAgICAgICAgICAgLS0gcmVjaGVyY2hlIGR1 IHNlcGFyYXRldXIgZGUgcGF0dGVybg0KICAgICAgICAgICAgVG8gOj0gRnJvbTsNCiAgICAgICAg ICAgIHdoaWxlIFRvPD1WYWwnTGFzdCBhbmQgdGhlbiBWYWwoVG8pLz1QYXR0ZXJuX1NlcGFyYXRv ciBsb29wDQogICAgICAgICAgICAgICBUbzo9IFRvICsgMTsNCiAgICAgICAgICAgIGVuZCBsb29w Ow0KICAgICAgICAgICAgLS0gcmVjaGVyY2hlIGR1IHNlcGFyYXRldXIgZGUgbml2ZWF1DQogICAg ICAgICAgICBTZXA6PSBGcm9tOw0KICAgICAgICAgICAgd2hpbGUgU2VwPFRvIGFuZCB0aGVuIFZh bChTZXApLz1MZXZlbF9TZXBhcmF0b3IgbG9vcA0KICAgICAgICAgICAgICAgU2VwOj0gU2VwICsg MTsNCiAgICAgICAgICAgIGVuZCBsb29wOw0KICAgICAgICAgICAgLS0gZGVjb2RhZ2UgZHUgbml2 ZWF1DQogICAgICAgICAgICBpZiBTZXA9VG8gdGhlbiAgICAgICAgLS0gcGFzIGRlIG5pdmVhdSAt PiBtYXhpDQogICAgICAgICAgICAgICBMZXY6PSBMZXZlbCdMYXN0Ow0KICAgICAgICAgICAgZWxz ZQ0KICAgICAgICAgICAgICAgTGV2Oj0gTGV2ZWxfVmFsdWUoQ2xlYW4oVmFsKFNlcCsxLi5Uby0x KSkpOw0KICAgICAgICAgICAgZW5kIGlmOw0KICAgICAgICAgICAgaWYgTGV2Lz1OZXZlciB0aGVu DQogICAgICAgICAgICAgICBDZWxsOj0gbmV3IExvY2F0aW9uczsNCiAgICAgICAgICAgICAgIENl bGwuUGFpci5MZXY6PSBMZXY7DQogICAgICAgICAgICAgICAtLSBzZXBhcmF0aW9uIGVudHJlIGxv Y2F0aW9uIGV0IHNlcnZpY2UNCiAgICAgICAgICAgICAgIFN1Yjo9IEZyb207DQogICAgICAgICAg ICAgICB3aGlsZSBTdWI8U2VwIGFuZCB0aGVuIFZhbChTdWIpLz1TZXJ2aWNlX1NlcGFyYXRvciBs b29wDQogICAgICAgICAgICAgICAgICBTdWI6PSBTdWIgKyAxOw0KICAgICAgICAgICAgICAgZW5k IGxvb3A7DQogICAgICAgICAgICAgICBDZWxsLkxvYzo9IG5ldyBTdHJpbmcnKENsZWFuKFZhbChG cm9tLi5TdWItMSkpKTsNCiAgICAgICAgICAgICAgIGlmIFNlcC1TdWI+MSB0aGVuDQogICAgICAg ICAgICAgICAgICBDZWxsLlBhaXIuU2Vydjo9IG5ldyBTdHJpbmcnKENsZWFuKFZhbChTdWIrMS4u U2VwLTEpKSk7DQogICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICBDZWxsLlBh aXIuU2Vydjo9IEFueV9TdHJpbmc7DQogICAgICAgICAgICAgICBlbmQgaWY7DQogICAgICAgICAg ICAgICBQYXR0ZXJuX0xhc3QgOj0gUGF0dGVybl9MYXN0ICsgMTsNCiAgICAgICAgICAgICAgIENl bGwuTmV4dDo9IFBhdHRlcm5fTGlzdDsNCiAgICAgICAgICAgICAgIFBhdHRlcm5fTGlzdDo9IENl bGw7DQotLSAgICAgICAgICAgICBBZGEuVGV4dF9Jby5QdXRfTGluZSAoImxvYzogIiAmIENlbGwu TG9jLmFsbCAmICIgIHNlcnY6ICIgJiBDZWxsLlBhaXIuU2Vydi5hbGwpOw0KICAgICAgICAgICAg ZW5kIGlmOw0KICAgICAgICAgZW5kIGxvb3A7DQogICAgICBlbmQgRGVmaW5lX0xvY2F0aW9uczsN Cg0KICAgICAgcHJvY2VkdXJlIExvYWRfTG9jYXRpb25zIChGaWxlX05hbWU6IFN0cmluZykgaXMN CiAgICAgICAgIGZ1bmN0aW9uIElzX0xldHRlcl9Pcl9Kb2tlciAoQzogQ2hhcmFjdGVyKSByZXR1 cm4gQm9vbGVhbiBpcw0KICAgICAgICAgYmVnaW4NCiAgICAgICAgICAgICByZXR1cm4gSXNfTGV0 dGVyKEMpIG9yIGVsc2UgQz1TdHJpbmdfSm9rZXIgb3IgZWxzZQ0KICAgICAgICAgICAgICAgICAg ICBDPUNoYXJfSm9rZXIgb3IgZWxzZSBDPSBWbXNfQ2hhcl9Kb2tlcjsNCiAgICAgICAgIGVuZCBJ c19MZXR0ZXJfT3JfSm9rZXI7DQoNCiAgICAgICAgIExpbmU6IFN0cmluZygxLi4xMDI0KTsNCiAg ICAgICAgIExhc3Q6IE5hdHVyYWw7DQogICAgICAgICAtLSB1c2UgQWRhLlRleHRfSW87DQogICAg ICAgICBGaWxlOiBBZGEuVGV4dF9Jby5GaWxlX1R5cGU7DQogICAgIGJlZ2luDQogICAgICAgICBB ZGEuVGV4dF9Jby5PcGVuIChGaWxlLCBBZGEuVGV4dF9Jby5Jbl9GaWxlLCBGaWxlX05hbWUpOw0K ICAgICAgICAgd2hpbGUgbm90IEFkYS5UZXh0X0lvLkVuZF9PZl9GaWxlKEZpbGUpIGxvb3ANCiAg ICAgICAgICAgIFBvcnRhYmxlLlNhZmVfR2V0X0xpbmUoRmlsZSwgTGluZSwgTGFzdCk7IC0tIFBv dXIgbGEgbGVjdHVyZSBkZXMgZmljaGllcnMgV2luTlQgc291cyBVbml4DQogICAgICAgICAgICAt LSBHZXRfTGluZShGaWxlLCBMaW5lLCBMYXN0KTsNCiAgICAgICAgICAgIHdoaWxlIExhc3Q+MCBh bmQgdGhlbiBMaW5lKExhc3QpPCcgJyBsb29wIExhc3Q6PSBMYXN0LTE7IGVuZCBsb29wOw0KICAg ICAgICAgICAgaWYgTGFzdD4wIGFuZCB0aGVuIElzX0xldHRlcl9Pcl9Kb2tlcihMaW5lKDEpKSB0 aGVuDQogICAgICAgICAgICAgICBEZWZpbmVfTG9jYXRpb25zKExpbmUoMS4uTGFzdCkpOw0KICAg ICAgICAgICAgZW5kIGlmOw0KICAgICAgICAgZW5kIGxvb3A7DQogICAgICAgICBBZGEuVGV4dF9J by5DbG9zZShGaWxlKTsNCiAgICAgIGV4Y2VwdGlvbg0KICAgICAgICAgd2hlbiBvdGhlcnM9Pg0K ICAgICAgICAgICAgaWYgQWRhLlRleHRfSW8uSXNfT3BlbihGaWxlKSB0aGVuDQogICAgICAgICAg ICAgICBBZGEuVGV4dF9Jby5DbG9zZShGaWxlKTsNCiAgICAgICAgICAgIGVuZCBpZjsNCiAgICAg IGVuZCBMb2FkX0xvY2F0aW9uczsNCg0KICAgICAgQ2VsbCAgOiBSZWZfTG9jYXRpb25zOw0KICAg ICAgT3B0aW9uOiBjb25zdGFudCBTdHJpbmc6PSBPcHRpb25fTG9jYXRpb247DQogICAgICBFbnZp ciA6IGNvbnN0YW50IFN0cmluZzo9IFBvcnRhYmxlLkdldGVudihEZWJ1Z19Mb2NhdGlvbnNfRW52 aXIpOw0KICAgYmVnaW4NCiAgICAgIGlmIE9wdGlvbi89Tm9fRW52IHRoZW4NCiAgICAgICAgIC0t IG91dnJpciBsZSBmaWNoaWVyIGRlIGxvZw0KICAgICAgICAgZGVjbGFyZQ0KICAgICAgICAgICAg TmFtZTogY29uc3RhbnQgU3RyaW5nOj1Qb3J0YWJsZS5HZXRlbnYoRGVidWdfTG9nX0ZpbGUpOw0K ICAgICAgICAgYmVnaW4NCiAgICAgICAgICAgIGlmIE5hbWUgLz0gIiIgdGhlbiAtLSBwcm90ZWN0 aW9uIGNvbnRyZSBsYSBub24gZGVmaW5pdGlvbiBkZSBERUJVR19MT0dfRklMRQ0KICAgICAgICAg ICAgICAgQWRhLlRleHRfSW8uQ3JlYXRlIChMb2dfRmlsZSwgQWRhLlRleHRfSW8uT3V0X0ZpbGUs IE5hbWUpOw0KICAgICAgICAgICAgICAgTG9nX09uOj0gVHJ1ZTsNCiAgICAgICAgICAgIGVuZCBp ZjsNCiAgICAgICAgIGV4Y2VwdGlvbg0KICAgICAgICAgICAgd2hlbiBvdGhlcnM9Pg0KICAgICAg ICAgICAgICAgQWRhLlRleHRfSW8uUHV0X0xpbmUgKEFkYS5UZXh0X0lvLlN0YW5kYXJkX0Vycm9y LCAiIyMjRmlsZTogIiAmIE5hbWUgJiAiIG5vdCBjcmVhdGVkIik7DQogICAgICAgICBlbmQ7DQog ICAgICAgICAtLSBjaGFyZ2VyIGxlcyBzZXVpbHMgZGUgdHJhY2UNCiAgICAgICAgIGlmIE9wdGlv bi89IiIgdGhlbg0KICAgICAgICAgICAgTG9hZF9Mb2NhdGlvbnMgKE9wdGlvbik7DQogICAgICAg ICBlbHNpZiBFbnZpci89IiIgdGhlbg0KICAgICAgICAgICAgTG9hZF9Mb2NhdGlvbnMgKEVudmly KTsNCiAgICAgICAgIGVuZCBpZjsNCiAgICAgIGVuZCBpZjsNCiAgICAgIFVuaXRfVGhyZXNob2xk Oj0gRGVmaW5lIChNeV9OYW1lKTsNCiAgICAgIENlbGw6PSBQYXR0ZXJuX0xpc3Q7DQogICAgICB3 aGlsZSBDZWxsLz1udWxsIGxvb3ANCiAgICAgICAgIFNlbGVjdF9BbmRfVHJhY2UoQ2FsbCwNCiAg ICAgICAgICAgIENlbGwuTG9jLmFsbCAmIFNlcnZpY2VfU2VwYXJhdG9yICYNCiAgICAgICAgICAg IENlbGwuUGFpci5TZXJ2LmFsbCAmIExldmVsX1NlcGFyYXRvciAmIEZ1bGxfSW1hZ2UoQ2VsbC5Q YWlyLkxldiksDQogICAgICAgICAgICAiaW5pdGlhbGlzZSIsIFVuaXRfVGhyZXNob2xkKTsNCiAg ICAgICAgIENlbGw6PUNlbGwuTmV4dDsNCiAgICAgIGVuZCBsb29wOw0KICAgZW5kIEluaXRpYWxp emU7DQoNCmJlZ2luDQogICBJbml0aWFsaXplOw0KZW5kIFBvcnRhYmxlLkRlYnVnOw0KDQpwYWNr YWdlIFBvcnRhYmxlLkRlYnVnIGlzDQogICBwcmFnbWEgRWxhYm9yYXRlX0JvZHk7DQoNCiAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2V1aWwgZGUgaW5zdHJ1bWVudGF0aW9uIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQogICB0eXBlIExldmVsIGlzIHByaXZhdGU7ICAgICAgICAgICAg ICAtLSBuaXZlYXUgZCdpbXBvcnRhbmNlIGRlIGxhIHRyYWNlDQogICBDYWxsICA6IGNvbnN0YW50 IExldmVsOyAgICAgICAgICAgICAtLSBlbnRyZWUgZGFucyB1bmUgcm91dGluZSwgZGVmaW5pdGlv biwgLi4uDQogICBCYWNrICA6IGNvbnN0YW50IExldmVsOyAgICAgICAgICAgICAtLSBzb3J0aWUg ZCd1bmUgcm91dGluZSwgc2VydmljZSBkJ3VuZSB1bml0ZQ0KICAgTW9yZSAgOiBjb25zdGFudCBM ZXZlbDsgICAgICAgICAgICAgLS0gcHJlbWllciBuaXZlYXUgYWxnb3JpdGhtaXF1ZQ0KICAgQWx3 YXlzOiBjb25zdGFudCBMZXZlbDsgICAgICAgICAgICAgLS0gc2Vjb25kIGV0IGRlcm5pZXIgbml2 ZWF1IGFsZ29yaXRobWlxdWUNCg0KICAgZnVuY3Rpb24gTGV2ZWxfUG9zICggICAgICAgICAgICAg ICAgLS0gcmV0b3VybmUgbGEgcG9zaXRpb24NCiAgICAgIExldjogTGV2ZWwpICAgICAgICAgICAg ICAgICAgICAgIC0tIGRlIGNlIG5pdmVhdQ0KICAgICAgcmV0dXJuIE5hdHVyYWw7DQoNCiAgIHR5 cGUgVGhyZXNob2xkIGlzIHByaXZhdGU7ICAgICAgICAgIC0tIFNldWlsIGQnaW5zdHJ1bWVudGF0 aW9uIG5vbW1lDQogICBOZXZlcl9UaHJlc2hvbGQ6IGNvbnN0YW50IFRocmVzaG9sZDstLSBTZXVp bCBuZSBwcm9kdWlzYW50IGphbWFpcyBkZSB0cmFjZQ0KDQogICBmdW5jdGlvbiBEZWZpbmUgKCAg ICAgICAgICAgICAgICAgICAtLSByZXRvdXJuZSBsZSBzZXVpbCBkJ2luc3RydW1lbnRhdGlvbg0K ICAgICAgTG9jIDogU3RyaW5nOyAgICAgICAgICAgICAgICAgICAgLS0gcG91ciBjZXQgZW1wbGFj ZW1lbnQgKHVuaXRlIG91IHJvdXRpbmUpDQogICAgICBMZXYgOiBMZXZlbDsgICAgICAgICAgICAg ICAgICAgICAtLSBhIGNlIG5pdmVhdSAoc2V1aWwgZGVmaW5pIHBhciBwcm9ncmFtbWUpDQogICAg ICBTZXJ2OiBTdHJpbmc6PSAiIikgICAgICAgICAgICAgICAtLSBwb3VyIGNlIHNlcnZpY2UgKCIi OiB0b3VzKQ0KICAgICAgcmV0dXJuIFRocmVzaG9sZDsNCg0KICAgZnVuY3Rpb24gRGVmaW5lICgg ICAgICAgICAgICAgICAgICAgLS0gcmV0b3VybmUgbGUgc2V1aWwgZCdpbnN0cnVtZW50YXRpb24N CiAgICAgIExvYyA6IFN0cmluZykgICAgICAgICAgICAgICAgICAgIC0tIHBvdXIgY2V0IGVtcGxh Y2VtZW50ICh1bml0ZSBvdSByb3V0aW5lKQ0KICAgICAgcmV0dXJuIFRocmVzaG9sZDsgICAgICAg ICAgICAgICAgLS0gKGRlZmluaSBwYXIgbGEgdmFyaWFibGUgREVCVUdfTE9DQVRJT05TICkNCg0K ICAgZnVuY3Rpb24gRGVmaW5lICggICAgICAgICAgICAgICAgICAgLS0gcmV0b3VybmUgbGUgc2V1 aWwgZCdpbnN0cnVtZW50YXRpb24NCiAgICAgIFRocmVzOiBUaHJlc2hvbGQ7ICAgICAgICAgICAg ICAgIC0tIGV4aWdlIHBvdXIgbGUgc291cyBlbXBsYWNlbWVudCBkZWR1aXQNCiAgICAgIFRhaWwg OiBTdHJpbmcpICAgICAgICAgICAgICAgICAgIC0tIGQndW4gZW1wbGFjZW1lbnQgZXQgZCd1biBu b20gcmVsYXRpZg0KICAgICAgcmV0dXJuIFRocmVzaG9sZDsgICAgICAgICAgICAgICAgLS0gKHJv dXRpbmUpDQoNCiAgIGZ1bmN0aW9uIExvY2F0aW9uX09mICggICAgICAgICAgICAgIC0tIHJldG91 cm5lIGwnZW1wbGFjZW1lbnQNCiAgICAgIFRocmVzOiBUaHJlc2hvbGQpICAgICAgICAgICAgICAg IC0tIGFzc29jaWUgYSBjZSBzZXVpbA0KICAgICAgcmV0dXJuIFN0cmluZzsNCg0KICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQWZmaWNoYWdlIGNvbmRpdGlvbmVsICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCg0KICAgZnVuY3Rpb24gSXNfU2VsZWN0ZWQgKCAgICAgICAgICAgICAg LS0gSW5kaXF1ZSBzaSB1biBwb2ludCBkJ2luc3RydW1lbnRhdGlvbg0KICAgICAgTGV2ICA6IExl dmVsOyAgICAgICAgICAgICAgICAgICAgLS0gZGUgY2Ugbml2ZWF1IGVzdCBzZWxlY3Rpb25uZQ0K ICAgICAgU2VydiA6IFN0cmluZzsgICAgICAgICAgICAgICAgICAgLS0gcG91ciBjZSBzZXJ2aWNl DQogICAgICBUaHJlczogVGhyZXNob2xkOyAgICAgICAgICAgICAgICAtLSBldCBwb3VyIGNlIHNl dWlsDQogICAgICBUcmFjZTogQm9vbGVhbjo9IEZhbHNlKSAgICAgICAgICAtLSBldCBuZSB0cmFj ZSBwYXMgbGEgbG9jYWxpc2F0aW9uDQogICAgICByZXR1cm4gQm9vbGVhbjsNCg0KICAgZnVuY3Rp b24gSXNfVHJhY2VfU2VsZWN0ZWQgKCAgICAgICAgLS0gSW5kaXF1ZSBzaSB1biBwb2ludCBkJ2lu c3RydW1lbnRhdGlvbg0KICAgICAgTGV2ICA6IExldmVsOyAgICAgICAgICAgICAgICAgICAgLS0g ZGUgY2Ugbml2ZWF1IGVzdCBzZWxlY3Rpb25uZQ0KICAgICAgU2VydiA6IFN0cmluZzsgICAgICAg ICAgICAgICAgICAgLS0gcG91ciBjZSBzZXJ2aWNlDQogICAgICBUaHJlczogVGhyZXNob2xkOyAg ICAgICAgICAgICAgICAtLSBldCBwb3VyIGNlIHNldWlsDQogICAgICBUcmFjZTogQm9vbGVhbjo9 IFRydWUpICAgICAgICAgICAtLSBldCB0cmFjZSBsYSBsb2NhbGlzYXRpb24NCiAgICAgIHJldHVy biBCb29sZWFuIHJlbmFtZXMgSXNfU2VsZWN0ZWQ7DQoNCiAgIHByb2NlZHVyZSBTZWxlY3RfQW5k X1RyYWNlICggICAgICAgIC0tIFRyYWNlLCBzaSB1biBwb2ludCBkJ2luc3RydW1lbnRhdGlvbg0K ICAgICAgTGV2ICA6IExldmVsOyAgICAgICAgICAgICAgICAgICAgLS0gZGUgY2Ugbml2ZWF1IGVz dCBzZWxlY3Rpb25uZSwNCiAgICAgIEluZm8gOiBTdHJpbmc7ICAgICAgICAgICAgICAgICAgIC0t IGF2ZWMgY2UgbWVzc2FnZQ0KICAgICAgU2VydiA6IFN0cmluZzsgICAgICAgICAgICAgICAgICAg LS0gcG91ciBjZSBzZXJ2aWNlDQogICAgICBUaHJlczogVGhyZXNob2xkKTsgICAgICAgICAgICAg ICAtLSBldCBwb3VyIGNlIHNldWlsDQoNCiAgIHByb2NlZHVyZSBUcmFjZSggICAgICAgICAgICAg ICAgICAgIC0tIENvbXBsZXRlIHVuZSB0cmFjZSBnYXJkZSBwYXINCiAgICAgIEluZm8gOiBTdHJp bmcpOyAgICAgICAgICAgICAgICAgIC0tIElzX1RyYWNlX1NlbGVjdGVkIGF2ZWMgY2UgbWVzc2Fn ZQ0KDQpwcml2YXRlIC0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0tLQ0KDQogICB0eXBlIExldmVsIGlzIHJhbmdlIDAu LjQ7DQogICBOZXZlciA6IGNvbnN0YW50IExldmVsOj0gMDsNCiAgIENhbGwgIDogY29uc3RhbnQg TGV2ZWw6PSAxOw0KICAgQmFjayAgOiBjb25zdGFudCBMZXZlbDo9IDI7DQogICBNb3JlICA6IGNv bnN0YW50IExldmVsOj0gMzsNCiAgIEFsd2F5czogY29uc3RhbnQgTGV2ZWw6PSA0Ow0KDQogICB0 eXBlIFJlZl9TdHJpbmcgaXMgYWNjZXNzIFN0cmluZzsNCiAgIHR5cGUgU2VydmljZV9MZXZlbF9Q YWlyIGlzIHJlY29yZA0KICAgICAgU2VydjogUmVmX1N0cmluZzsNCiAgICAgIExldiA6IExldmVs Ow0KICAgZW5kIHJlY29yZDsNCiAgIHR5cGUgUGFpcl9MaXN0IGlzIGFycmF5IChQb3NpdGl2ZSBy YW5nZSA8Pikgb2YgU2VydmljZV9MZXZlbF9QYWlyOw0KICAgdHlwZSBSZWZfUGFpcl9MaXN0IGlz IGFjY2VzcyBQYWlyX0xpc3Q7DQoNCiAgIHR5cGUgVGhyZXNob2xkIGlzIHJlY29yZA0KICAgICAg TG9jICA6IFJlZl9TdHJpbmc7DQogICAgICBQYWlyczogUmVmX1BhaXJfTGlzdDsNCiAgIGVuZCBy ZWNvcmQ7DQogICBOZXZlcl9UaHJlc2hvbGQ6IGNvbnN0YW50IFRocmVzaG9sZDo9IChudWxsLCBu dWxsKTsNCg0KICAgZnVuY3Rpb24gQ2xlYW4gKFM6IFN0cmluZykgICAgICAgICAgLS0gc3RhbmRh cmRpc2F0aW9uIGRlcyBub21zIChtaW51c2N1bGUgc2FucyAnICcpDQogICAgICByZXR1cm4gU3Ry aW5nOw0KDQogICBwcm9jZWR1cmUgVHJhY2VfSGVhZGVyKCAgICAgICAgICAgICAtLSBUcmFjZSBs J2VudGV0ZSAocGFydGllIGdhdWNoZSkgcG91cg0KICAgICAgTGV2ICA6IExldmVsOyAgICAgICAg ICAgICAgICAgICAgLS0gY2Ugbml2ZWF1DQogICAgICBTZXJ2IDogU3RyaW5nOyAgICAgICAgICAg ICAgICAgICAtLSBjZSBzZXJ2aWNlDQogICAgICBUaHJlczogVGhyZXNob2xkKTsgICAgICAgICAg ICAgICAtLSBjZSBjb21wb3NhbnQNCg0KICAgZnVuY3Rpb24gTGV2ZWxfT2YgKCAgICAgICAgICAg ICAgICAgLS0gcmV0b3VybmUgbGUgc2V1aWwgYXNzb2NpZQ0KICAgICAgU2VydiA6IFN0cmluZzsg ICAgICAgICAgICAgICAgICAgLS0gcG91ciBjZSBzZXJ2aWNlDQogICAgICBUaHJlczogVGhyZXNo b2xkKSAgICAgICAgICAgICAgICAtLSBldCBwb3VyIGNlIHNldWlsDQogICAgICByZXR1cm4gTGV2 ZWw7DQplbmQgUG9ydGFibGUuRGVidWc7DQoNCnByaXZhdGUgZnVuY3Rpb24gUG9ydGFibGUuR2V0 ZW52ICggICAgIC0tIFJldG91cm5lIGxhIHZhbGV1ciBkZSBsYQ0KICAgTmFtZSA6IFN0cmluZykg ICAgICAgICAgICAgICAgICAgICAgLS0gdmFyaWFibGUgZCdlbnZpcm9ubmVtZW50IGRlIGNlIG5v bQ0KICAgcmV0dXJuIFN0cmluZzsgICAgICAgICAgICAgICAgICAgICAgLS0gb3UgIiIgc2kgZWxs ZSBuJ2VzdCBwYXMgZGVmaW5pZQ0KDQoNCg==