From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-3.7 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,SPF_PASS, UNPARSEABLE_RELAY shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from nue.mailmanlists.eu (nue.mailmanlists.eu [IPv6:2a01:4f8:1c0c:6b10::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 73ECA1F601 for ; Thu, 1 Dec 2022 13:00:20 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.b="dFmNeYPD"; dkim-atps=neutral Received: from nue.mailmanlists.eu (localhost [127.0.0.1]) by nue.mailmanlists.eu (Postfix) with ESMTP id 34C217E655; Thu, 1 Dec 2022 13:00:11 +0000 (UTC) Authentication-Results: nue.mailmanlists.eu; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=dFmNeYPD; dkim-atps=neutral Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by nue.mailmanlists.eu (Postfix) with ESMTPS id 4D2177E64A for ; Thu, 1 Dec 2022 13:00:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=s1; bh=0Yc5uJ7vIxbYGcHQwBaIueqWN3tj7ybFCR+VjrXjy3U=; b=dFmNeYPD1FHQVx1ggynET10rJWMa0YAAGuSjSC6wHsbLLd8Gcesp8VybXtVCGaYKY/rN FNJvbUrgx5OPhJDCqHHUqsC2bJVE6+qRmSdlBLQ7D31+iEWFpbt8FfrwzixZ225tHzc5r8 XWVuSikrkUviKoiHtD5Us89e/aw4Ao43MAHlIybEC0T6AtfBNr6ZAnuZlz9HJc4oQEx+7L b7WLYs9BDkNUZ1YtUGX8u8/aKZ0ElF3LLnLWkdlGRGa9EquqgOn4qI6PloMXne7zj17Zdc njHcxHLlo8DetrnhYO2oJFa6STlIRwNZFiBS3qHiGP+kpwN0aABj39M0eijy0uow== Received: by filterdrecv-557d69979-2t4hj with SMTP id filterdrecv-557d69979-2t4hj-1-6388A555-5 2022-12-01 13:00:05.136653722 +0000 UTC m=+1173272.286857065 Received: from herokuapp.com (unknown) by geopod-ismtpd-6-0 (SG) with ESMTP id v4rI4iKKRSevca9gr8j4ww for ; Thu, 01 Dec 2022 13:00:04.983 +0000 (UTC) Date: Thu, 01 Dec 2022 13:00:05 +0000 (UTC) From: "alanpowel47 (Alan Powel)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Bug X-Redmine-Issue-Id: 19154 X-Redmine-Issue-Author: fxn X-Redmine-Sender: alanpowel47 X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 87480 X-SG-EID: =?us-ascii?Q?R+vG3Y6dbobdpMAMmLs5YzY6ezb3762zuMTnaZ2ic4zIGkkSupladkPsl5AFh0?= =?us-ascii?Q?GgC89btCLhHHW5oUCmA6iTtCH5NR2zQ1FoOlm3r?= =?us-ascii?Q?vMQexx+LdD8zzae142I5qAD3LPdOZjP798LmK11?= =?us-ascii?Q?Ol+tCoq2=2FxGHnr3mQGo8OlZUoOjGlRAjPoLFyz0?= =?us-ascii?Q?ITY2L9DGuFbumW6x65ljOGLIhrWuRKck+fTJPFV?= =?us-ascii?Q?VZHp64hEkUc5RvMJRL53qd=2FwYyYMewyVpnaUacr?= =?us-ascii?Q?=2FFQULvj7rGtFEvxxjKjag=3D=3D?= To: ruby-core@ml.ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== Message-ID-Hash: CE4B3N6AIHVN2CO5ZEF6OEHKYYNS2LNK X-Message-ID-Hash: CE4B3N6AIHVN2CO5ZEF6OEHKYYNS2LNK X-MailFrom: bounces+313651-b711-ruby-core=ml.ruby-lang.org@em5188.ruby-lang.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.3 Precedence: list Reply-To: Ruby developers Subject: [ruby-core:111128] [Ruby master Bug#19154] Specify require and autoload guarantees in ractors List-Id: Ruby developers Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SXNzdWUgIzE5MTU0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYWxhbnBvd2VsNDcgKEFsYW4gUG93ZWwp Lg0NCg0NCg0NClRoZSBhZGQoRSBlKSBtZXRob2Qgb2YgUXVldWUgSW50ZXJmYWNlIGluc2VydHMg dGhlIGVsZW1lbnQgcGFzc2VkIGluIHRoZSBwYXJhbWV0ZXIgdG8gdGhlIGVuZCBvZiB0aGUgcXVl dWUgaWYgdGhlcmUgaXMgc3BhY2UuIElmIHRoZSBRdWV1ZSBpcyBjYXBhY2l0eSByZXN0cmljdGVk IGFuZCBubyBzcGFjZSBpcyBsZWZ0IGZvciBpbnNlcnRpb24sIGl0IHJldHVybnMgYW4gSWxsZWdh bFN0YXRlRXhjZXB0aW9uLiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3NmdWwg aW5zZXJ0aW9uLiBTeW50YXg6DQ0KDQ0KYm9vbGVhbiBhZGQoRSBlKQ0NClBhcmFtZXRlcnM6IFRo aXMgbWV0aG9kIGFjY2VwdHMgYSBtYW5kYXRvcnkgcGFyYW1ldGVyIGUgd2hpY2ggaXMgdGhlIGVs ZW1lbnQgdG8gYmUgaW5zZXJ0ZWQgaW4gdGhlIGVuZCBvZiB0aGUgUXVldWUuIFJldHVybnM6IFRo aXMgbWV0aG9kIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzZnVsIGluc2VydGlvbi4gRXhjZXB0aW9u czogVGhlIGZ1bmN0aW9uIHRocm93cyBmb3VyIGV4Y2VwdGlvbnMgd2hpY2ggYXJlIGRlc2NyaWJl ZCBhcyBiZWxvdzoNDQoNDQpDbGFzc0Nhc3RFeGNlcHRpb246IHdoZW4gdGhlIGNsYXNzIG9mIHRo ZSBlbGVtZW50IHRvIGJlIGVudGVyZWQgcHJldmVudHMgaXQgZnJvbSBiZWluZyBhZGRlZCB0byB0 aGlzIGNvbnRhaW5lci4NDQpJbGxlZ2FsU3RhdGVFeGNlcHRpb246IHdoZW4gdGhlIGNhcGFjaXR5 IG9mIHRoZSBjb250YWluZXIgaXMgZnVsbCBhbmQgaW5zZXJ0aW9uIGlzIGRvbmUuDQ0KSWxsZWdh bEFyZ3VtZW50RXhjZXB0aW9uOiB3aGVuIHNvbWUgcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQgcHJl dmVudHMgaXQgdG8gYmUgYWRkZWQgdG8gdGhlIHF1ZXVlLg0NCk51bGxQb2ludGVyRXhjZXB0aW9u OiB3aGVuIHRoZSBlbGVtZW50IHRvIGJlIGluc2VydGVkIGlzIHBhc3NlZCBhcyBudWxsIGFuZCB0 aGUgUXVldWXigJlzIGludGVyZmFjZSBkb2VzIG5vdCBhbGxvdyBudWxsIGVsZW1lbnRzLg0NCkJl bG93IHByb2dyYW1zIGlsbHVzdHJhdGUgYWRkKCkgbWV0aG9kIG9mIFF1ZXVlOiBQcm9ncmFtIDE6 IFdpdGggdGhlIGhlbHAgb2YgTGlua2VkTGlzdC4gDQ0KDQ0KDQ0KLy8gSmF2YSBQcm9ncmFtIERl bW9uc3RyYXRlIGFkZCgpDQ0KLy8gbWV0aG9kIG9mIFF1ZXVlDQ0KIA0NCmltcG9ydCBqYXZhLnV0 aWwuKjsNDQogDQ0KcHVibGljIGNsYXNzIEdGRyB7DQ0KICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBt YWluKFN0cmluZ1tdIGFyZ3MpDQ0KICAgICAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9u DQ0KICAgIHsNDQogDQ0KICAgICAgICAvLyBjcmVhdGUgb2JqZWN0IG9mIFF1ZXVlDQ0KICAgICAg ICBRdWV1ZTxJbnRlZ2VyPiBRDQ0KICAgICAgICAgICAgPSBuZXcgTGlua2VkTGlzdDxJbnRlZ2Vy PigpOw0NCiANDQogICAgICAgIC8vIEFkZCBudW1iZXJzIHRvIGVuZCBvZiBRdWV1ZQ0NCiAgICAg ICAgUS5hZGQoNzg1NTY0Mik7DQ0KICAgICAgICBRLmFkZCgzNTY1ODc4Nik7DQ0KICAgICAgICBR LmFkZCg1Mjc4MzY3KTsNDQogICAgICAgIFEuYWRkKDc0MzgxNzkzKTsNDQogDQ0KICAgICAgICAv LyBiZWZvcmUgcmVtb3ZpbmcgcHJpbnQgcXVldWUNDQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRs bigiUXVldWU6ICIgKyBRKTsNDQogICAgfQ0NCn0NDQpPdXRwdXQ6DQ0KUHJvZ3JhbSAyOiBXaXRo IHRoZSBoZWxwIG9mIEFycmF5RGVxdWUuIA0NCg0NCg0NCi8vIEphdmEgUHJvZ3JhbSBEZW1vbnN0 cmF0ZSBhZGQoKQ0NCi8vIG1ldGhvZCBvZiBRdWV1ZQ0NCiANDQppbXBvcnQgamF2YS51dGlsLio7 DQ0KIA0NCnB1YmxpYyBjbGFzcyBHRkcgew0NCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihT dHJpbmdbXSBhcmdzKQ0NCiAgICAgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbg0NCiAg ICB7DQ0KIA0NCiAgICAgICAgLy8gY3JlYXRlIG9iamVjdCBvZiBRdWV1ZQ0NCiAgICAgICAgUXVl dWU8SW50ZWdlcj4gUQ0NCiAgICAgICAgICAgID0gbmV3IEFycmF5RGVxdWU8SW50ZWdlcj4oKTsN DQogDQ0KICAgICAgICAvLyBBZGQgbnVtYmVycyB0byBlbmQgb2YgUXVldWUNDQogICAgICAgIFEu YWRkKDc4NTU2NDIpOw0NCiAgICAgICAgUS5hZGQoMzU2NTg3ODYpOw0NCiAgICAgICAgUS5hZGQo NTI3ODM2Nyk7DQ0KICAgICAgICBRLmFkZCg3NDM4MTc5Myk7DQ0KIA0NCiAgICAgICAgLy8gYmVm b3JlIHJlbW92aW5nIHByaW50IHF1ZXVlDQ0KICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlF1 ZXVlOiAiICsgUSk7DQ0KICAgIH0NDQp9DQ0KT3V0cHV0Og0NClF1ZXVlOiBbNzg1NTY0MiwgMzU2 NTg3ODYsIDUyNzgzNjcsIDc0MzgxNzkzXQ0NClByb2dyYW0gMzogV2l0aCB0aGUgaGVscCBvZiBM aW5rZWRCbG9ja2luZ0RlcXVlLiANDQoNDQoNDQovLyBKYXZhIFByb2dyYW0gRGVtb25zdHJhdGUg YWRkKCkNDQovLyBtZXRob2Qgb2YgUXVldWUNDQogDQ0KaW1wb3J0IGphdmEudXRpbC4qOw0NCmlt cG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ0RlcXVlOw0NCiANDQpwdWJs aWMgY2xhc3MgR0ZHIHsNDQogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJn cykNDQogICAgICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24NDQogICAgew0NCiANDQog ICAgICAgIC8vIGNyZWF0ZSBvYmplY3Qgb2YgUXVldWUNDQogICAgICAgIFF1ZXVlPEludGVnZXI+ IFENDQogICAgICAgICAgICA9IG5ldyBMaW5rZWRCbG9ja2luZ0RlcXVlPEludGVnZXI+KCk7DQ0K IA0NCiAgICAgICAgLy8gQWRkIG51bWJlcnMgdG8gZW5kIG9mIFF1ZXVlDQ0KICAgICAgICBRLmFk ZCg3ODU1NjQyKTsNDQogICAgICAgIFEuYWRkKDM1NjU4Nzg2KTsNDQogICAgICAgIFEuYWRkKDUy NzgzNjcpOw0NCiAgICAgICAgUS5hZGQoNzQzODE3OTMpOw0NCiANDQogICAgICAgIC8vIGJlZm9y ZSByZW1vdmluZyBwcmludCBxdWV1ZQ0NCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJRdWV1 ZTogIiArIFEpOw0NCiAgICB9DQ0KfQ0NCk91dHB1dDoNDQpRdWV1ZTogWzc4NTU2NDIsIDM1NjU4 Nzg2LCA1Mjc4MzY3LCA3NDM4MTc5M10NDQpQcm9ncmFtIDQ6IFdpdGggdGhlIGhlbHAgb2YgQ29u Y3VycmVudExpbmtlZERlcXVlLiANDQoNDQoNDQovLyBKYXZhIFByb2dyYW0gRGVtb25zdHJhdGUg YWRkKCkNDQovLyBtZXRob2Qgb2YgUXVldWUNDQogDQ0KaW1wb3J0IGphdmEudXRpbC4qOw0NCmlt cG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50TGlua2VkRGVxdWU7DQ0KIA0NCnB1 YmxpYyBjbGFzcyBHRkcgew0NCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBh cmdzKQ0NCiAgICAgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbg0NCiAgICB7DQ0KIA0N CiAgICAgICAgLy8gY3JlYXRlIG9iamVjdCBvZiBRdWV1ZQ0NCiAgICAgICAgUXVldWU8SW50ZWdl cj4gUQ0NCiAgICAgICAgICAgID0gbmV3IENvbmN1cnJlbnRMaW5rZWREZXF1ZTxJbnRlZ2VyPigp Ow0NCiANDQogICAgICAgIC8vIEFkZCBudW1iZXJzIHRvIGVuZCBvZiBRdWV1ZQ0NCiAgICAgICAg US5hZGQoNzg1NTY0Mik7DQ0KICAgICAgICBRLmFkZCgzNTY1ODc4Nik7DQ0KICAgICAgICBRLmFk ZCg1Mjc4MzY3KTsNDQogICAgICAgIFEuYWRkKDc0MzgxNzkzKTsNDQogDQ0KICAgICAgICAvLyBi ZWZvcmUgcmVtb3ZpbmcgcHJpbnQgcXVldWUNDQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigi UXVldWU6ICIgKyBRKTsNDQogICAgfQ0NCn0NDQpPdXRwdXQ6DQ0KUXVldWU6IFs3ODU1NjQyLCAz NTY1ODc4NiwgNTI3ODM2NywgNzQzODE3OTNdDQ0KQmVsb3cgcHJvZ3JhbXMgaWxsdXN0cmF0ZSBl eGNlcHRpb25zIHRocm93biBieSB0aGlzIG1ldGhvZDogUHJvZ3JhbSA1OiBUbyBzaG93IE51bGxQ b2ludGVyRXhjZXB0aW9uLiANDQoNDQoNDQovLyBKYXZhIFByb2dyYW0gRGVtb25zdHJhdGUgYWRk KCkNDQovLyBtZXRob2Qgb2YgUXVldWUgd2hlbiBOdWxsIGlzIHBhc3NlZA0NCiANDQppbXBvcnQg amF2YS51dGlsLio7DQ0KaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkxpbmtlZEJsb2NraW5n UXVldWU7DQ0KIA0NCnB1YmxpYyBjbGFzcyBHRkcgew0NCiAgICBwdWJsaWMgc3RhdGljIHZvaWQg bWFpbihTdHJpbmdbXSBhcmdzKQ0NCiAgICAgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlv bg0NCiAgICB7DQ0KIA0NCiAgICAgICAgLy8gY3JlYXRlIG9iamVjdCBvZiBRdWV1ZQ0NCiAgICAg ICAgUXVldWU8SW50ZWdlcj4gUQ0NCiAgICAgICAgICAgID0gbmV3IExpbmtlZEJsb2NraW5nUXVl dWU8SW50ZWdlcj4oKTsNDQogDQ0KICAgICAgICAvLyBBZGQgbnVtYmVycyB0byBlbmQgb2YgUXVl dWUNDQogICAgICAgIFEuYWRkKDc4NTU2NDIpOw0NCiAgICAgICAgUS5hZGQoMzU2NTg3ODYpOw0N CiAgICAgICAgUS5hZGQoNTI3ODM2Nyk7DQ0KIA0NCiAgICAgICAgdHJ5IHsNDQogICAgICAgICAg ICAvLyB3aGVuIG51bGwgaXMgaW5zZXJ0ZWQNDQogICAgICAgICAgICBRLmFkZChudWxsKTsNDQog ICAgICAgIH0NDQogICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgew0NCiAgICAgICAgICAgIFN5 c3RlbS5vdXQucHJpbnRsbigiRXhjZXB0aW9uOiAiICsgZSk7DQ0KICAgICAgICB9DQ0KICAgIH0N DQp9DQ0KT3V0cHV0Og0NCkV4Y2VwdGlvbjogamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9u DQ0KUHJvZ3JhbSA2OiBUbyBzaG93IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbi4gDQ0KDQ0KDQ0KLy8g SmF2YSBQcm9ncmFtIERlbW9uc3RyYXRlIGFkZCgpDQ0KLy8gbWV0aG9kIG9mIFF1ZXVlIHdoZW4g Y2FwYWNpdHkgaXMgZnVsbA0NCmltcG9ydCBqYXZhLnV0aWwuKjsNDQppbXBvcnQgamF2YS51dGls LmNvbmN1cnJlbnQuTGlua2VkQmxvY2tpbmdRdWV1ZTsNDQogDQ0KcHVibGljIGNsYXNzIEdGRyB7 DQ0KICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpDQ0KICAgICAgICB0 aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uDQ0KICAgIHsNDQogDQ0KICAgICAgICAvLyBjcmVh dGUgb2JqZWN0IG9mIFF1ZXVlDQ0KICAgICAgICBRdWV1ZTxJbnRlZ2VyPiBRDQ0KICAgICAgICAg ICAgPSBuZXcgTGlua2VkQmxvY2tpbmdRdWV1ZTxJbnRlZ2VyPigzKTsNDQogDQ0KICAgICAgICAv LyBBZGQgbnVtYmVycyB0byBlbmQgb2YgUXVldWUNDQogICAgICAgIFEuYWRkKDc4NTU2NDIpOw0N CiAgICAgICAgUS5hZGQoMzU2NTg3ODYpOw0NCiAgICAgICAgUS5hZGQoNTI3ODM2Nyk7DQ0KIA0N CiAgICAgICAgdHJ5IHsNDQogICAgICAgICAgICAvLyB3aGVuIGNhcGFjaXR5IGlzIGZ1bGwNDQog ICAgICAgICAgICBRLmFkZCgxMCk7DQ0KICAgICAgICB9DQ0KICAgICAgICBjYXRjaCAoRXhjZXB0 aW9uIGUpIHsNDQogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkV4Y2VwdGlvbjogIiAr IGUpOw0NCiAgICAgICAgfQ0NCiAgICB9DQ0KfQ0NCk91dHB1dDoNDQpFeGNlcHRpb246IGphdmEu bGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb246IFF1ZXVlIGZ1bGwNDQoNDQpGb3IgdGhlIFVpUGF0 aC5Db3JlLkFjdGl2aXRpZXMuQWRkUXVldWVJdGVtIGFjdGl2aXR5IHRvIHdvcmsgaW4gYSBwcm9j ZXNzLCB0aGUgUm9ib3QgbXVzdCBiZSBjb25uZWN0ZWQgdG8gT3JjaGVzdHJhdG9yLiBUaGlzIGlz IG5lZWRlZCBpbiBvcmRlciB0byBzZW5kIGFuZCByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBx dWV1ZXMsIGl0ZW1zIGFuZCBzdGF0dXNlcy4NDQpTY2hlbWEgZGVmaW5pdGlvbiB2YWx1ZXMgYWRk ZWQgdG8gcXVldWVzIGluIE9yY2hlc3RyYXRvciBhbmQgbWFya2VkIGFzIHJlcXVpcmVkIGFyZSBh dXRvbWF0aWNhbGx5IGltcG9ydGVkIGluIHRoZSBEaWN0aW9uYXJ5IEJ1aWxkZXIgb2YgdGhlIGFj dGl2aXR5Lg0NClZhbHVlcyBtYXJrZWQgYXMgbm90IHJlcXVpcmVkIGNhbiBiZSBhZGRlZCB0byBx dWV1ZSBpdGVtcyBhbmQgbm90IGJlIGVuZm9yY2VkLg0NClByb2plY3QgY29tcGF0aWJpbGl0eQ0N CldpbmRvd3MgLSBMZWdhY3kgfCBXaW5kb3dzIHwgQ3Jvc3MtcGxhdGZvcm0NDQoNDQpXaW5kb3dz LCBDcm9zcy1wbGF0Zm9ybSBjb25maWd1cmF0aW9uDQ0KT3JjaGVzdHJhdG9yIGZvbGRlciBwYXRo IC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB3aGVyZSB0aGUgc3BlY2lmaWVkIHF1ZXVlIGlzIGxv Y2F0ZWQsIGlmIGRpZmZlcmVudCBmcm9tIHRoZSBmb2xkZXIgd2hlcmUgdGhlIHByb2Nlc3MgaXMg cnVubmluZy4gVGhpcyBmaWVsZCBvbmx5IHN1cHBvcnRzIHN0cmluZyB2YWx1ZXMsIHdpdGggLyBh cyB0aGUgc2VwYXJhdG9yIHRvIGluZGljYXRlIHN1YmZvbGRlcnMuIEZvciBleGFtcGxlICJGaW5h bmNlL0FjY291bnRzIFBheWFibGUiLg0NCvCfk5gNDQpOb3RlOg0NCg0NClRoZSBPcmNoZXN0cmF0 b3IgZm9sZGVyIHBhdGggcGFyYW1ldGVyIGRvZXMgbm90IHdvcmsgZm9yIHByb2Nlc3NlcyBleGVj dXRlZCBieSByb2JvdHMgaW4gY2xhc3NpYyBmb2xkZXJzLiBPbmx5IHJvYm90cyBpbiBtb2Rlcm4g Zm9sZGVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHBhc3MgZGF0YSBvdXRzaWRlIG9mIHRoZWlyIGZv bGRlci4NDQoNDQpSZWxhdGl2ZSBmb2xkZXIgcGF0aHMgYXJlIHN1cHBvcnRlZCBpbiBhbiBYLVVJ UEFUSC1Gb2xkZXJQYXRoLUVuY29kZWQgaGVhZGVyLCBhcyBmb2xsb3dzOg0NCiBQYXRoIHN0YXJ0 aW5nIHdpdGggLyAtIHN0YXJ0cyBmcm9tIHRoZSByb290IGZvbGRlciBvZiB0aGUgdHJlZSB0aGUg YW1iaWVudCBmb2xkZXIgaXMgcGFydCBvZi4NDQogUGF0aCBzdGFydGluZyB3aXRoIC4gLSBzdGFy dHMgZnJvbSB0aGUgYW1iaWVudCBmb2xkZXIuDQ0KIFBhdGggc3RhcnRpbmcgd2l0aCAuLiAtIHN0 YXJ0cyBvbmUgbGV2ZWwgdXAgaW4gdGhlIGhpZXJhcmNoeSBvZiB0aGUgYW1iaWVudCBmb2xkZXIg Zm9yIGVhY2ggLi4gaW4gdGhlIHBhdGggKGUuZy4gLi4vIGZvciBvbmUgbGV2ZWwgdXAsIC4uLy4u LyBmb3IgdHdvIGxldmVscyB1cCBpbiB0aGUgaGllcmFyY2h5KS4NDQoNDQpOb3RlIHRoYXQgdHJh aWxpbmcgc2xhc2hlcyBhcmUgbm90IGFjY2VwdGVkLg0NCg0NClF1ZXVlIE5hbWUgLSBUaGUgcXVl dWUgd2hlcmUgdGhlIFF1ZXVlSXRlbSBvYmplY3QgaXMgdG8gYmUgYWRkZWQuIFRoZSBuYW1lIGlz IGNhc2UgaW5zZW5zaXRpdmUsIG1lYW5pbmcgdGhhdCBpZiBpbiBPcmNoZXN0cmF0b3IgaXQgd2Fz IGRlZmluZWQgYXMgIk15Rmlyc3RRdWV1ZSIsIGl0IG1hdGNoZXMgIm15Zmlyc3RxdWV1ZSIuIFRo ZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGlzIDUwLg0NCkl0ZW0gSW5mb3JtYXRpb24g LSBBIGNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lm aWMgUXVldWVJdGVtIHRoYXQgaXMgdG8gYmUgYWRkZWQuIFRoZSBpbmZvcm1hdGlvbiBpcyBzdG9y ZWQgaW4gdGhlIGl0ZW0gYW5kIGlzIHVzZWQgZHVyaW5nIGEgdHJhbnNhY3Rpb24gcHJvY2Vzc2lu Zy4gSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIG9ubHkgcHJpbWl0aXZlIHZhbHVlcyBvZiB0aGUg Zm9sbG93aW5nIHR5cGVzOiBOdW1iZXIsIEJvb2xlYW4sIFN0cmluZyBhbmQgRGF0ZVRpbWUuIFRo ZSB2YWx1ZSBvZiBzdHJpbmcgYXJndW1lbnRzIGNhbm5vdCBjb250YWluIHRoZSBmb2xsb3dpbmcg Y2hhcmFjdGVyczogWyBhbmQgIiAiLiBBcmd1bWVudCBuYW1lcyBjYW5ub3QgY29udGFpbiB0aGUg Zm9sbG93aW5nIGNoYXJhY3RlcnM6IDosIC4sICwsIEAsICIuDQ0KQWR2YW5jZWQgb3B0aW9ucy4g QmFzaWNhbGx5IEkgaGF2ZSB0byBhZGQgdGhlIFVJUEFUSCB3aGlsZSB3b3JraW5nIG9uIHRoZSBy ZWFjdCBuYXRpdmUgZGV2ZWxvcG1lbnQgYWdlbmN5KGh0dHBzOi8vZW50ZXJwcmlzZS5hZmZsZS5j b20vcmVhY3QtbmF0aXZlLWFwcC1kZXZlbG9wbWVudCkgLCB0aGVuIEkgaGF2ZSB0byBsZWFybmVk IHRoZSBzYW1lLg0NCklucHV0DQ0KRGVhZGxpbmUgLSBUaGUgZGF0ZSBiZWZvcmUgd2hpY2ggdGhl IHF1ZXVlIGl0ZW0gc2hvdWxkIGJlIHByb2Nlc3NlZC4gVGhpcyBwcm9wZXJ0eSBpcyBhIGNyaXRl cmlvbiBmb3IgdGhlIHByaW9yaXRpemF0aW9uIG9mIHF1ZXVlIGl0ZW1zLCBhbG9uZ3NpZGUgUHJp b3JpdHkgYW5kIFBvc3Rwb25lLiBUaGlzIHByb3BlcnR5IGNhbiBiZSBmaWxsZWQgaW4gd2l0aCBy ZWxhdGl2ZSBkYXRlcyBzdWNoIGFzIERhdGVUaW1lLk5vdy5BZGRIb3VycygyKSwgRGF0ZVRpbWUu Tm93LkFkZERheXMoMTApIGFuZCBEYXRlVGltZS5Ob3cuQWRkKE5ldyBTeXN0ZW0uVGltZVNwYW4o NSwgMCwgMCwgMCkpLiBBZGRpdGlvbmFsbHksIHlvdSBjYW4gdXNlIHRoZSBVUyBub3RhdGlvbiB0 byBhZGQgYW4gZXhhY3QgdGltZSwgc3VjaCBhcyAxMi8xMC8yMDE3IDA3OjQwOjAwLiBBdXRvbWF0 aWNhbGx5IGNvcnJlY3RpbmcgdGhpcyBkYXRlIGlzIGF2YWlsYWJsZS4gRm9yIGV4YW1wbGUsIGlm IHlvdSB3cml0ZSA4IDkgMjAxOCA5OjAsIGl0IGlzIGF1dG9tYXRpY2FsbHkgdHJhbnNmb3JtZWQg dG8gMDgvMDkvMjAxOCAwOTowMDowMC4NDQpJdGVtIENvbGxlY3Rpb24gLSBFbmFibGVzIGltcG9y dGluZyBhbiBlbnRpcmUgZGljdGlvbmFyeSBvZiBpbmZvcm1hdGlvbiBmb3IgYSBxdWV1ZSBpdGVt LiBUaGlzIGZpZWxkIG9ubHkgYWNjZXB0cyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiB2YXJp YWJsZXMuDQ0KUG9zdHBvbmUgLSBUaGUgZGF0ZSBhZnRlciB3aGljaCB0aGUgcXVldWUgaXRlbSBt YXkgYmUgcHJvY2Vzc2VkLiBUaGlzIHByb3BlcnR5IGlzIGEgY3JpdGVyaW9uIGZvciB0aGUgcHJp b3JpdGl6YXRpb24gb2YgcXVldWUgaXRlbXMsIGFsb25nc2lkZSBQcmlvcml0eSBhbmQgRGVhZGxp bmUuIFRoaXMgcHJvcGVydHkgY2FuIGJlIGZpbGxlZCBpbiB3aXRoIHJlbGF0aXZlIGRhdGVzIHN1 Y2ggYXMgRGF0ZVRpbWUuTm93LkFkZEhvdXJzKDIpLCBEYXRlVGltZS5Ob3cuQWRkRGF5cygxMCkg YW5kIERhdGVUaW1lLk5vdy5BZGQoTmV3IFN5c3RlbS5UaW1lU3Bhbig1LCAwLCAwLCAwKSkuIEFk ZGl0aW9uYWxseSwgeW91IGNhbiB1c2UgdGhlIFVTIG5vdGF0aW9uIHRvIGFkZCBhbiBleGFjdCB0 aW1lLCBzdWNoIGFzIDEyLzEwLzIwMTcgMDc6NDA6MDAuIEF1dG9tYXRpY2FsbHkgY29ycmVjdGlu ZyB0aGlzIGRhdGUgaXMgYXZhaWxhYmxlLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdyaXRlIDggOSAy MDE4IDk6MCwgaXQgaXMgYXV0b21hdGljYWxseSB0cmFuc2Zvcm1lZCB0byAwOC8wOS8yMDE4IDA5 OjAwOjAwLg0NClByaW9yaXR5IC0gVGhlIHByaW9yaXR5IGxldmVsIG9mIHRoZSBxdWV1ZSBpdGVt IHRvIGJlIGFkZGVkLiBUaGlzIHByb3BlcnR5IGlzIGEgY3JpdGVyaW9uIGZvciB0aGUgcHJpb3Jp dGl6YXRpb24gb2YgcXVldWUgaXRlbXMsIGFsb25nc2lkZSBEZWFkbGluZSBhbmQgUG9zdHBvbmUu DQ0KUmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSBvZiB0aGUgYWRkZWQgUXVldWVJdGVtLiBUaGUg cmVmZXJlbmNlIGNhbiBiZSB1c2VkIHRvIGxpbmsgeW91ciB0cmFuc2FjdGlvbnMgdG8gb3RoZXIg YXBwbGljYXRpb25zIHVzZWQgd2l0aGluIGFuIGF1dG9tYXRpb24gcHJvamVjdC4gQWRkaXRpb25h bGx5LCB0aGlzIGZlYXR1cmUgZW5hYmxlcyB5b3UgdG8gc2VhcmNoIGZvciBjZXJ0YWluIHRyYW5z YWN0aW9ucywgaW4gT3JjaGVzdHJhdG9yLCBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkIHN0cmlu Zy4NDQrwn5OYDQ0KTm90ZToNDQoNDQpEdWVEYXRlIGlzIGEgcmVzZXJ2ZWQga2V5d29yZC4gSXQg Y2Fubm90IGJlIHVzZWQgaW5zaWRlIGFueSBwcm9wZXJ0eSB3aGVuIGNvbmZpZ3VyaW5nIHRoaXMg YWN0aXZpdHkuDQ0KDQ0KTWlzYw0NClRpbWVvdXQgKG1pbGxpc2Vjb25kcykgLSBTcGVjaWZpZXMg dGhlIGFtb3VudCBvZiB0aW1lIChpbiBtaWxsaXNlY29uZHMpIHRvIHdhaXQgZm9yIHRoZSBhY3Rp dml0eSB0byBydW4gYmVmb3JlIGFuIGVycm9yIGlzIHRocm93bi4gVGhlIGRlZmF1bHQgdmFsdWUg aXMgMzAwMDAgbWlsbGlzZWNvbmRzICgzMCBzZWNvbmRzKS4NDQpDb250aW51ZSBvbiBlcnJvciAt IFNwZWNpZmllcyBpZiB0aGUgYXV0b21hdGlvbiBzaG91bGQgY29udGludWUgZXZlbiB3aGVuIHRo ZSBhY3Rpdml0eSB0aHJvd3MgYW4gZXJyb3IuIFRoaXMgZmllbGQgb25seSBzdXBwb3J0cyBCb29s ZWFuIHZhbHVlcyAoVHJ1ZSwgRmFsc2UpLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBGYWxzZS4gQXMg YSByZXN1bHQsIGlmIHRoZSBmaWVsZCBpcyBibGFuayBhbmQgYW4gZXJyb3IgaXMgdGhyb3duLCB0 aGUgZXhlY3V0aW9uIG9mIHRoZSBwcm9qZWN0IHN0b3BzLiBJZiB0aGUgdmFsdWUgaXMgc2V0IHRv IFRydWUsIHRoZSBleGVjdXRpb24gb2YgdGhlIHByb2plY3QgY29udGludWVzIHJlZ2FyZGxlc3Mg b2YgYW55IGVycm9yLg0NCvCfk5gNDQpOb3RlOg0NCg0NCklmIHRoaXMgYWN0aXZpdHkgaXMgaW5j bHVkZWQgaW4gVHJ5IENhdGNoIGFuZCB0aGUgdmFsdWUgb2YgdGhlIENvbnRpbnVlIE9uIEVycm9y IHByb3BlcnR5IGlzIFRydWUsIG5vIGVycm9yIGlzIGNhdWdodCB3aGVuIHRoZSBwcm9qZWN0IGlz IGV4ZWN1dGVkLg0NCg0NCldpbmRvd3MgLSBMZWdhY3kgY29uZmlndXJhdGlvbg0NClByb3BlcnRp ZXMgcGFuZWwNDQpDb21tb24NDQpDb250aW51ZSBPbiBFcnJvciAtIFNwZWNpZmllcyBpZiB0aGUg YXV0b21hdGlvbiBzaG91bGQgY29udGludWUgZXZlbiB3aGVuIHRoZSBhY3Rpdml0eSB0aHJvd3Mg YW4gZXJyb3IuIFRoaXMgZmllbGQgb25seSBzdXBwb3J0cyBCb29sZWFuIHZhbHVlcyAoVHJ1ZSwg RmFsc2UpLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBGYWxzZS4gQXMgYSByZXN1bHQsIGlmIHRoZSBm aWVsZCBpcyBibGFuayBhbmQgYW4gZXJyb3IgaXMgdGhyb3duLCB0aGUgZXhlY3V0aW9uIG9mIHRo ZSBwcm9qZWN0IHN0b3BzLiBJZiB0aGUgdmFsdWUgaXMgc2V0IHRvIFRydWUsIHRoZSBleGVjdXRp b24gb2YgdGhlIHByb2plY3QgY29udGludWVzIHJlZ2FyZGxlc3Mgb2YgYW55IGVycm9yLg0NCvCf k5gNDQpOb3RlOg0NCg0NCklmIHRoaXMgYWN0aXZpdHkgaXMgaW5jbHVkZWQgaW4gVHJ5IENhdGNo IGFuZCB0aGUgdmFsdWUgb2YgdGhlIENvbnRpbnVlIE9uIEVycm9yIHByb3BlcnR5IGlzIFRydWUs IG5vIGVycm9yIGlzIGNhdWdodCB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4ZWN1dGVkLg0NCg0NCkRp c3BsYXlOYW1lIC0gVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgYWN0aXZpdHkuDQ0KVGltZW91dCAo bWlsbGlzZWNvbmRzKSAtIFNwZWNpZmllcyB0aGUgYW1vdW50IG9mIHRpbWUgKGluIG1pbGxpc2Vj b25kcykgdG8gd2FpdCBmb3IgdGhlIGFjdGl2aXR5IHRvIHJ1biBiZWZvcmUgYW4gZXJyb3IgaXMg dGhyb3duLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAzMDAwMCBtaWxsaXNlY29uZHMgKDMwIHNlY29u ZHMpLg0NCklucHV0DQ0KRGVhZGxpbmUgLSBUaGUgZGF0ZSBiZWZvcmUgd2hpY2ggdGhlIHF1ZXVl IGl0ZW0gc2hvdWxkIGJlIHByb2Nlc3NlZC4gVGhpcyBwcm9wZXJ0eSBpcyBhIGNyaXRlcmlvbiBm b3IgdGhlIHByaW9yaXRpemF0aW9uIG9mIHF1ZXVlIGl0ZW1zLCBhbG9uZ3NpZGUgUHJpb3JpdHkg YW5kIFBvc3Rwb25lLiBUaGlzIHByb3BlcnR5IGNhbiBiZSBmaWxsZWQgaW4gd2l0aCByZWxhdGl2 ZSBkYXRlcyBzdWNoIGFzIERhdGVUaW1lLk5vdy5BZGRIb3VycygyKSwgRGF0ZVRpbWUuTm93LkFk ZERheXMoMTApIGFuZCBEYXRlVGltZS5Ob3cuQWRkKE5ldyBTeXN0ZW0uVGltZVNwYW4oNSwgMCwg MCwgMCkpLiBBZGRpdGlvbmFsbHksIHlvdSBjYW4gdXNlIHRoZSBVUyBub3RhdGlvbiB0byBhZGQg YW4gZXhhY3QgdGltZSwgc3VjaCBhcyAxMi8xMC8yMDE3IDA3OjQwOjAwLiBBdXRvbWF0aWNhbGx5 IGNvcnJlY3RpbmcgdGhpcyBkYXRlIGlzIGF2YWlsYWJsZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3 cml0ZSA4IDkgMjAxOCA5OjAsIGl0IGlzIGF1dG9tYXRpY2FsbHkgdHJhbnNmb3JtZWQgdG8gMDgv MDkvMjAxOCAwOTowMDowMC4NDQpJdGVtIENvbGxlY3Rpb24gLSBFbmFibGVzIGltcG9ydGluZyBh biBlbnRpcmUgZGljdGlvbmFyeSBvZiBpbmZvcm1hdGlvbiBmb3IgYSBxdWV1ZSBpdGVtLiBUaGlz IGZpZWxkIG9ubHkgYWNjZXB0cyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiB2YXJpYWJsZXMu DQ0KDQ0KSXRlbSBJbmZvcm1hdGlvbiAtIEEgY29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIGluZm9y bWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpYyBRdWV1ZUl0ZW0gdGhhdCBpcyB0byBiZSBhZGRlZC4g VGhlIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiB0aGUgaXRlbSBhbmQgaXMgdXNlZCBkdXJpbmcg YSB0cmFuc2FjdGlvbiBwcm9jZXNzaW5nLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2Ugb25seSBw cmltaXRpdmUgdmFsdWVzIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXM6IE51bWJlciwgQm9vbGVhbiwg U3RyaW5nIGFuZCBEYXRlVGltZS4gVGhlIHZhbHVlIG9mIHN0cmluZyBhcmd1bWVudHMgY2Fubm90 IGNvbnRhaW4gdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiBbIGFuZCAiICIuIEFyZ3VtZW50IG5h bWVzIGNhbm5vdCBjb250YWluIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogOiwgLiwgLCwgQCwg Ii4NDQpQb3N0cG9uZSAtIFRoZSBkYXRlIGFmdGVyIHdoaWNoIHRoZSBxdWV1ZSBpdGVtIG1heSBi ZSBwcm9jZXNzZWQuIFRoaXMgcHJvcGVydHkgaXMgYSBjcml0ZXJpb24gZm9yIHRoZSBwcmlvcml0 aXphdGlvbiBvZiBxdWV1ZSBpdGVtcywgYWxvbmdzaWRlIFByaW9yaXR5IGFuZCBEZWFkbGluZS4g VGhpcyBwcm9wZXJ0eSBjYW4gYmUgZmlsbGVkIGluIHdpdGggcmVsYXRpdmUgZGF0ZXMgc3VjaCBh cyBEYXRlVGltZS5Ob3cuQWRkSG91cnMoMiksIERhdGVUaW1lLk5vdy5BZGREYXlzKDEwKSBhbmQg RGF0ZVRpbWUuTm93LkFkZChOZXcgU3lzdGVtLlRpbWVTcGFuKDUsIDAsIDAsIDApKS4gQWRkaXRp b25hbGx5LCB5b3UgY2FuIHVzZSB0aGUgVVMgbm90YXRpb24gdG8gYWRkIGFuIGV4YWN0IHRpbWUs IHN1Y2ggYXMgMTIvMTAvMjAxNyAwNzo0MDowMC4gQXV0b21hdGljYWxseSBjb3JyZWN0aW5nIHRo aXMgZGF0ZSBpcyBhdmFpbGFibGUuIEZvciBleGFtcGxlLCBpZiB5b3Ugd3JpdGUgOCA5IDIwMTgg OTowLCBpdCBpcyBhdXRvbWF0aWNhbGx5IHRyYW5zZm9ybWVkIHRvIDA4LzA5LzIwMTggMDk6MDA6 MDAuDQ0KUHJpb3JpdHkgLSBUaGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhlIHF1ZXVlIGl0ZW0gdG8g YmUgYWRkZWQuIFRoaXMgcHJvcGVydHkgaXMgYSBjcml0ZXJpb24gZm9yIHRoZSBwcmlvcml0aXph dGlvbiBvZiBxdWV1ZSBpdGVtcywgYWxvbmdzaWRlIERlYWRsaW5lIGFuZCBQb3N0cG9uZS4NDQpR dWV1ZSBOYW1lIC0gVGhlIHF1ZXVlIHdoZXJlIHRoZSBRdWV1ZUl0ZW0gb2JqZWN0IGlzIHRvIGJl IGFkZGVkLiBUaGUgbmFtZSBpcyBjYXNlIGluc2Vuc2l0aXZlLCBtZWFuaW5nIHRoYXQgaWYgaW4g T3JjaGVzdHJhdG9yIGl0IHdhcyBkZWZpbmVkIGFzICJNeUZpcnN0UXVldWUiLCBpdCBtYXRjaGVz ICJteWZpcnN0cXVldWUiLiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBpcyA1MC4N DQpSZWZlcmVuY2UgLSBUaGUgcmVmZXJlbmNlIG9mIHRoZSBhZGRlZCBRdWV1ZUl0ZW0uIFRoZSBy ZWZlcmVuY2UgY2FuIGJlIHVzZWQgdG8gbGluayB5b3VyIHRyYW5zYWN0aW9ucyB0byBvdGhlciBh cHBsaWNhdGlvbnMgdXNlZCB3aXRoaW4gYW4gYXV0b21hdGlvbiBwcm9qZWN0LiBBZGRpdGlvbmFs bHksIHRoaXMgZmVhdHVyZSBlbmFibGVzIHlvdSB0byBzZWFyY2ggZm9yIGNlcnRhaW4gdHJhbnNh Y3Rpb25zLCBpbiBPcmNoZXN0cmF0b3IsIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgc3RyaW5n Lg0NCvCfk5gNDQpOb3RlDQ0KDQ0KRHVlRGF0ZSBpcyBhIHJlc2VydmVkIGtleXdvcmQuIEl0IGNh bm5vdCBiZSB1c2VkIGluc2lkZSBhbnkgcHJvcGVydHkgd2hlbiBjb25maWd1cmluZyB0aGlzIGFj dGl2aXR5Lg0NCg0NCk1pc2MNDQpGb2xkZXIgUGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIg d2hlcmUgdGhlIHNwZWNpZmllZCBxdWV1ZSBpcyBsb2NhdGVkLCBpZiBkaWZmZXJlbnQgZnJvbSB0 aGUgZm9sZGVyIHdoZXJlIHRoZSBwcm9jZXNzIGlzIHJ1bm5pbmcuIFRoaXMgZmllbGQgb25seSBz dXBwb3J0cyBzdHJpbmcgdmFsdWVzLCB3aXRoIC8gYXMgdGhlIHNlcGFyYXRvciB0byBpbmRpY2F0 ZSBzdWJmb2xkZXJzLiBGb3IgZXhhbXBsZSAiRmluYW5jZS9BY2NvdW50cyBQYXlhYmxlIi4NDQrw n5OYDQ0KTm90ZToNDQoNDQpUaGUgRm9sZGVyIFBhdGggcGFyYW1ldGVyIGRvZXMgbm90IHdvcmsg Zm9yIHByb2Nlc3NlcyBleGVjdXRlZCBieSByb2JvdHMgaW4gY2xhc3NpYyBmb2xkZXJzLiBPbmx5 IHJvYm90cyBpbiBtb2Rlcm4gZm9sZGVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHBhc3MgZGF0YSBv dXRzaWRlIG9mIHRoZWlyIGZvbGRlci4NDQoNDQpSZWxhdGl2ZSBmb2xkZXIgcGF0aHMgYXJlIHN1 cHBvcnRlZCBpbiBhbiBYLVVJUEFUSC1Gb2xkZXJQYXRoLUVuY29kZWQgaGVhZGVyLCBhcyBmb2xs b3dzOg0NCiBQYXRoIHN0YXJ0aW5nIHdpdGggLyAtIHN0YXJ0cyBmcm9tIHRoZSByb290IGZvbGRl ciBvZiB0aGUgdHJlZSB0aGUgYW1iaWVudCBmb2xkZXIgaXMgcGFydCBvZi4NDQogUGF0aCBzdGFy dGluZyB3aXRoIC4gLSBzdGFydHMgZnJvbSB0aGUgYW1iaWVudCBmb2xkZXIuDQ0KIFBhdGggc3Rh cnRpbmcgd2l0aCAuLiAtIHN0YXJ0cyBvbmUgbGV2ZWwgdXAgaW4gdGhlIGhpZXJhcmNoeSBvZiB0 aGUgYW1iaWVudCBmb2xkZXIgZm9yIGVhY2ggLi4gaW4gdGhlIHBhdGggKGUuZy4gLi4vIGZvciBv bmUgbGV2ZWwgdXAsIC4uLy4uLyBmb3IgdHdvIGxldmVscyB1cCBpbiB0aGUgaGllcmFyY2h5KS4N DQoNDQpOb3RlIHRoYXQgdHJhaWxpbmcgc2xhc2hlcyBhcmUgbm90IGFjY2VwdGVkLg0NCg0NClBy aXZhdGUgLSBJZiBzZWxlY3RlZCwgdGhlIHZhbHVlcyBvZiB2YXJpYWJsZXMgYW5kIGFyZ3VtZW50 cyBhcmUgbm8gbG9uZ2VyIGxvZ2dlZCBhdCBWZXJib3NlIGxldmVsLg0NCg0NCkhvcGUgdGhpcyB3 aWxsIGhlbHAgZXZlcnlvbmUuIA0NCg0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NDQpCdWcgIzE5MTU0OiBTcGVjaWZ5IHJlcXVpcmUgYW5kIGF1dG9sb2FkIGd1YXJh bnRlZXMgaW4gcmFjdG9ycw0NCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xOTE1 NCNjaGFuZ2UtMTAwNDA2DQ0KDQ0KKiBBdXRob3I6IGZ4biAoWGF2aWVyIE5vcmlhKQ0NCiogU3Rh dHVzOiBPcGVuDQ0KKiBQcmlvcml0eTogTm9ybWFsDQ0KKiBydWJ5IC12OiBydWJ5IDMuMi4wcHJl dmlldzMgKDIwMjItMTEtMjcpIFt4ODZfNjQtZGFyd2luMjJdDQ0KKiBCYWNrcG9ydDogMi43OiBV TktOT1dOLCAzLjA6IFVOS05PV04sIDMuMTogVU5LTk9XTg0NCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NDQpHaXZlbiBhIGZpbGUgYGMucmJgOg0NCg0NCmBgYHJ1YnkN DQpjbGFzcyBDDQ0KZW5kDQ0KYGBgDQ0KDQ0KdGhlIGZvbGxvd2luZyBzY3JpcHQ6DQ0KDQ0KYGBg cnVieQ0NCnIxID0gUmFjdG9yLm5ldyBkbw0NCiAgcmVxdWlyZSAnLi9jLnJiJw0NCmVuZA0NCg0N CnIyID0gUmFjdG9yLm5ldyBkbw0NCiAgcmVxdWlyZSAnLi9jLnJiJw0NCmVuZA0NCg0NCnIxLnRh a2UNDQpyMi50YWtlDQ0KYGBgDQ0KDQ0KcmFpc2VzOg0NCg0NCmBgYA0NCiUgcnVieSAtdiBmb28u cmINDQpydWJ5IDMuMi4wcHJldmlldzMgKDIwMjItMTEtMjcpIFt4ODZfNjQtZGFyd2luMjJdDQ0K Zm9vLnJiOjE6IHdhcm5pbmc6IFJhY3RvciBpcyBleHBlcmltZW50YWwsIGFuZCB0aGUgYmVoYXZp b3IgbWF5IGNoYW5nZSBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUnVieSEgQWxzbyB0aGVyZSBhcmUg bWFueSBpbXBsZW1lbnRhdGlvbiBpc3N1ZXMuDQ0KIzxUaHJlYWQ6MHgwMDAwMDAwMTBmZWUyOTI4 IHJ1bj4gdGVybWluYXRlZCB3aXRoIGV4Y2VwdGlvbiAocmVwb3J0X29uX2V4Y2VwdGlvbiBpcyB0 cnVlKToNDQojPFRocmVhZDoweDAwMDAwMDAxMTAyYWNmZTAgcnVuPiB0ZXJtaW5hdGVkIHdpdGgg ZXhjZXB0aW9uIChyZXBvcnRfb25fZXhjZXB0aW9uIGlzIHRydWUpOg0NCjxpbnRlcm5hbDovVXNl cnMvZnhuLy5yYmVudi92ZXJzaW9ucy8zLjIuMC1wcmV2aWV3My9saWIvcnVieS8zLjIuMCszL3J1 YnlnZW1zL2NvcmVfZXh0L2tlcm5lbF9yZXF1aXJlLnJiPjoxNjQ6aW4gYGVuc3VyZSBpbiByZXF1 aXJlJzogY2FuIG5vdCBhY2Nlc3Mgbm9uLXNoYXJlYWJsZSBvYmplY3RzIGluIGNvbnN0YW50IEtl cm5lbDo6UlVCWUdFTVNfQUNUSVZBVElPTl9NT05JVE9SIGJ5IG5vbi1tYWluIHJhY3Rvci4gKFJh Y3Rvcjo6SXNvbGF0aW9uRXJyb3IpDQ0KICAgICAgICBmcm9tIDxpbnRlcm5hbDovVXNlcnMvZnhu Ly5yYmVudi92ZXJzaW9ucy8zLjIuMC1wcmV2aWV3My9saWIvcnVieS8zLjIuMCszL3J1YnlnZW1z L2NvcmVfZXh0L2tlcm5lbF9yZXF1aXJlLnJiPjoxNjc6aW4gYHJlcXVpcmUnDQ0KICAgICAgICBm cm9tIGZvby5yYjo2OmluIGBibG9jayBpbiA8bWFpbj4nDQ0KPGludGVybmFsOi9Vc2Vycy9meG4v LnJiZW52L3ZlcnNpb25zLzMuMi4wLXByZXZpZXczL2xpYi9ydWJ5LzMuMi4wKzMvcnVieWdlbXMv Y29yZV9leHQva2VybmVsX3JlcXVpcmUucmI+OjM3OmluIGByZXF1aXJlJzxpbnRlcm5hbDovVXNl cnMvZnhuLy5yYmVudi92ZXJzaW9ucy8zLjIuMC1wcmV2aWV3My9saWIvcnVieS8zLjIuMCszL3J1 YnlnZW1zL2NvcmVfZXh0L2tlcm5lbF9yZXF1aXJlLnJiPjoxNjQ6aW4gYGVuc3VyZSBpbiByZXF1 aXJlJzogOiBjYW4gbm90IGFjY2VzcyBub24tc2hhcmVhYmxlIG9iamVjdHMgaW4gY29uc3RhbnQg S2VybmVsOjpSVUJZR0VNU19BQ1RJVkFUSU9OX01PTklUT1IgYnkgbm9uLW1haW4gcmFjdG9yLiAo UmFjdG9yOjpJc29sYXRpb25FcnJvcikNDQogICAgICAgIGZyb20gPGludGVybmFsOi9Vc2Vycy9m eG4vLnJiZW52L3ZlcnNpb25zLzMuMi4wLXByZXZpZXczL2xpYi9ydWJ5LzMuMi4wKzMvcnVieWdl bXMvY29yZV9leHQva2VybmVsX3JlcXVpcmUucmI+OjE2NzppbiBgcmVxdWlyZScNDQpjYW4gbm90 IGFjY2VzcyBub24tc2hhcmVhYmxlIG9iamVjdHMgaW4gY29uc3RhbnQgS2VybmVsOjpSVUJZR0VN U19BQ1RJVkFUSU9OX01PTklUT1IgYnkgbm9uLW1haW4gcmFjdG9yLiAoUmFjdG9yOjpJc29sYXRp b25FcnJvcikgICAgICAgZnJvbSBmb28ucmI6MjppbiBgYmxvY2sgaW4gPG1haW4+Jw0NCg0NCjxp bnRlcm5hbDovVXNlcnMvZnhuLy5yYmVudi92ZXJzaW9ucy8zLjIuMC1wcmV2aWV3My9saWIvcnVi eS8zLjIuMCszL3J1YnlnZW1zL2NvcmVfZXh0L2tlcm5lbF9yZXF1aXJlLnJiPjozNzppbiBgcmVx dWlyZSc6IGNhbiBub3QgYWNjZXNzIG5vbi1zaGFyZWFibGUgb2JqZWN0cyBpbiBjb25zdGFudCBL ZXJuZWw6OlJVQllHRU1TX0FDVElWQVRJT05fTU9OSVRPUiBieSBub24tbWFpbiByYWN0b3IuIChS YWN0b3I6Oklzb2xhdGlvbkVycm9yKQ0NCiAgICAgICAgZnJvbSBmb28ucmI6MjppbiBgYmxvY2sg aW4gPG1haW4+Jw0NCiAgICAgICAgZnJvbSBmb28ucmI6NjppbiBgYmxvY2sgaW4gPG1haW4+Jw0N CjxpbnRlcm5hbDpyYWN0b3I+OjY5ODppbiBgdGFrZSc6IHRocm93biBieSByZW1vdGUgUmFjdG9y LiAoUmFjdG9yOjpSZW1vdGVFcnJvcikNDQogICAgICAgIGZyb20gZm9vLnJiOjk6aW4gYDxtYWlu PicNDQo8aW50ZXJuYWw6L1VzZXJzL2Z4bi8ucmJlbnYvdmVyc2lvbnMvMy4yLjAtcHJldmlldzMv bGliL3J1YnkvMy4yLjArMy9ydWJ5Z2Vtcy9jb3JlX2V4dC9rZXJuZWxfcmVxdWlyZS5yYj46MTY0 OmluIGBlbnN1cmUgaW4gcmVxdWlyZSc6IGNhbiBub3QgYWNjZXNzIG5vbi1zaGFyZWFibGUgb2Jq ZWN0cyBpbiBjb25zdGFudCBLZXJuZWw6OlJVQllHRU1TX0FDVElWQVRJT05fTU9OSVRPUiBieSBu b24tbWFpbiByYWN0b3IuIChSYWN0b3I6Oklzb2xhdGlvbkVycm9yKQ0NCiAgICAgICAgZnJvbSA8 aW50ZXJuYWw6L1VzZXJzL2Z4bi8ucmJlbnYvdmVyc2lvbnMvMy4yLjAtcHJldmlldzMvbGliL3J1 YnkvMy4yLjArMy9ydWJ5Z2Vtcy9jb3JlX2V4dC9rZXJuZWxfcmVxdWlyZS5yYj46MTY3OmluIGBy ZXF1aXJlJw0NCiAgICAgICAgZnJvbSBmb28ucmI6MjppbiBgYmxvY2sgaW4gPG1haW4+Jw0NCjxp bnRlcm5hbDovVXNlcnMvZnhuLy5yYmVudi92ZXJzaW9ucy8zLjIuMC1wcmV2aWV3My9saWIvcnVi eS8zLjIuMCszL3J1YnlnZW1zL2NvcmVfZXh0L2tlcm5lbF9yZXF1aXJlLnJiPjozNzppbiBgcmVx dWlyZSc6IGNhbiBub3QgYWNjZXNzIG5vbi1zaGFyZWFibGUgb2JqZWN0cyBpbiBjb25zdGFudCBL ZXJuZWw6OlJVQllHRU1TX0FDVElWQVRJT05fTU9OSVRPUiBieSBub24tbWFpbiByYWN0b3IuIChS YWN0b3I6Oklzb2xhdGlvbkVycm9yKQ0NCiAgICAgICAgZnJvbSBmb28ucmI6MjppbiBgYmxvY2sg aW4gPG1haW4+Jw0NCmBgYA0NCg0NCldvdWxkIGl0IGJlIHBvc3NpYmxlIHRvIGhhdmUgZG9jdW1l bnRhdGlvbiBhYm91dCB0aGVpciBpbnRlcmFjdGlvbj8NDQoNDQpUaGlzIGlzIGltcG9ydGFudCBh bHNvIHRvIHVuZGVyc3RhbmQgYXV0b2xvYWRpbmcgd2l0aGluIHJhY3RvcnMsIHNpbmNlIGNvbnN0 YW50IHJlZmVyZW5jZXMgbWF5IHRyaWdnZXIgYHJlcXVpcmVgIGNhbGxzLg0NCg0NCg0NCg0NCi0t IA0NCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0NCiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1Ynkt Y29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1 YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczov L21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvcG9zdG9yaXVzL2xpc3RzL3J1YnktY29yZS5tbC5y dWJ5LWxhbmcub3JnLw==