From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E48BCC76195 for ; Fri, 24 Mar 2023 19:43:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231852AbjCXTnB (ORCPT ); Fri, 24 Mar 2023 15:43:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231845AbjCXTnA (ORCPT ); Fri, 24 Mar 2023 15:43:00 -0400 Received: from mail-pl1-x64a.google.com (mail-pl1-x64a.google.com [IPv6:2607:f8b0:4864:20::64a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0CB864200 for ; Fri, 24 Mar 2023 12:42:58 -0700 (PDT) Received: by mail-pl1-x64a.google.com with SMTP id z16-20020a170902d55000b001a06f9b5e31so1745198plf.21 for ; Fri, 24 Mar 2023 12:42:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1679686977; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=qgFdG7xcB2inBEIWaKHpn8aCGut5DlNDs3vUw9kXulI=; b=O/hGO3xw04+JevdhFytrnVv2RKm6FyWxCdxVx25YEds2qS7rrwpQO7DDmGP/iSqlVU mgVy8AsQERexjgjzPNELPwgcdOeBL7o1Z0TRz1DEpS8LMMi1rYBXG6bQq/4xfcDC+7jS ttlo3vVA3iAFQyAy7+EY6jLw0uAhnoFtFxzJZKrJWXOZxU5o7R2DROuMSUQyX9PgjOpO /h3pwaHRQ6YsrX7WPgKnSjF5CjMaDeMhn/oI1XwD8o0KmFA0SvQ3EWZ/6JkXjj3DcLTA yNQxISJZWCxfcGKjpPnEworVF1raVokYjEeSVxxc9uqxyrLLBTZOdak1oUGv6lpgJb2G DR0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679686977; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=qgFdG7xcB2inBEIWaKHpn8aCGut5DlNDs3vUw9kXulI=; b=hFt8UOZ22HaZI5WkDqea4Ro69fnBGkbXZUqHIW+xM2wTXqPThlfKjOWAh0shuBTy8K 6bRpprOUtQJmY88MrZqJVQ6xxP74fGHj2TT1aAJFwiWt22wXBaeL5KPfSfDJN+Ev5PIU srEl6w5hf/80XoF2wpIRH2r2l8YiFS0YCz8dvXssiQnaGnFKYWkeYaVrEgwrMFHLDI4J Mk0m0B8WZ0SOEVZXL77ecehfCDkJir5RhzZsDrOMdE3R1WL9AYmns62iZkyoU7xLvTIt YNJhnFTnB4e4S+YpHqZjhWKoVI40ndX6Izh6nDCoLo9MGYgUuQ0XSYlnSkRlwrag4djK JNRQ== X-Gm-Message-State: AAQBX9fmjFiyMxnfuxbhUhUj2lcjlZNevIPqDf58ACiuwCPMrN0sJhyQ YhwnSFjMUB0Ok1yKEIIWAYm7bmI= X-Google-Smtp-Source: AKy350a++AL12hOJ/bcKIfmh6az/S4gScgXbGa7uw4ppnIkdHcckZzw6AKRrazBev9JA/8BLyniT1mI= X-Received: from sdf.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5935]) (user=sdf job=sendgmr) by 2002:a63:d958:0:b0:513:3030:10be with SMTP id e24-20020a63d958000000b00513303010bemr455980pgj.3.1679686977566; Fri, 24 Mar 2023 12:42:57 -0700 (PDT) Date: Fri, 24 Mar 2023 12:42:55 -0700 In-Reply-To: Mime-Version: 1.0 References: Message-ID: Subject: Re: Kernel panic on bpf_skb_pull_data From: Stanislav Fomichev To: Farbod Shahinfar Cc: "bpf@vger.kernel.org" , "netdev@vger.kernel.org" , John Fastabend Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=yes Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org T24gMDMvMjQsIEZhcmJvZCBTaGFoaW5mYXIgd3JvdGU6DQo+IEhlbGxvIGV2ZXJ5b25lLA0KDQo+ IEkgYW0gcGVyZm9ybWluZyBzb21lIHRlc3Qgd2l0aCBCUEYgU0tfU0tCIGFuZCBJIGhhdmUgZW5j b3VudGVyZWQgYQ0KPiBzY2VuYXJpbyByZXN1bHRpbmcgaW4ga2VybmVsIHBhbmljLiBJIHVzZSBh IEJQRl9TS19TS0JfU1RSRUFNX1BBUlNFUg0KPiBwcm9ncmFtIHRvIHBhcnNlIGEgcmVxdWVzdCB3 aGljaCBtaWdodCBiZSBzcGFubmluZyBtdWx0aXBsZSBUQ1ANCj4gc2VnbWVudHMuIElmIHRoZSBl bmQgb2YgcmVxdWVzdCBpcyBkZXRlY3RlZCBpbiB0aGUgcGFyc2VyIHByb2dyYW0gaXQNCj4gcmV0 dXJucyBza2ItPmxlbiwgcGFzc2luZyB0aGUgcmVxdWVzdCB0byB0aGUNCj4gQlBGX1NLX1NLQl9T VFJFQU1fVkVSRElDVCBwcm9ncmFtLCBhbmQgb3RoZXJ3aXNlIGl0IHJldHVybnMgMCwgd2FpdGlu Zw0KPiBmb3IgbW9yZSBkYXRhIHRvIGJlIHJlY2VpdmVkLiBZb3UgY2FuIGZpbmQgdGhlIEJQRiBw cm9ncmFtIGF0dGFjaGVkDQo+IChicGZfdGVzdC5jKS4gSXMgdGhlcmUgYW4gYXNzdW1wdGlvbiB0 aGF0IHRoZSBwcm9ncmFtIHZpb2xhdGVzPw0KDQo+IFRvIHJlcHJvZHVjZSB0aGUgY3Jhc2hpbmcg c2NlbmFyaW8sIEkgdXNlIHRoZSBweXRob24gc2NyaXB0IGF0dGFjaGVkDQo+IChjbGllbnQucHkp IHdoaWNoIHNlbmRzIGRhdGEgaW4gY2h1bmtzIHRvd2FyZCB0aGUgYnBmIHByb2dyYW0uIFVzdWFs bHksDQo+IHRoZSBrZXJuZWwgY3Jhc2hlcyBvbiB0aGUgM3JkIHNlZ21lbnQuDQo+IO+/vQ0KPiBU byBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24sIEkgaGF2ZSBhdHRhY2hlZCBzb21lIGNyYXNoIGxv Z3MuIEkgaGF2ZQ0KPiB0ZXN0ZWQgdGhpcyBvbiBrZXJuZWwgdmVyc2lvbiA2LjEuMCAoc2xpZ2h0 bHkgbW9kaWZpZWQpIGFuZCB2ZXJzaW9uDQo+IDYuMi44ICh1bm1vZGlmaWVkLCBvYnRhaW5lZCBm cm9tIGtlcm5lbC5vcmcpLiBJdCBzZWVtcyB0aGF0IHRoZSBwYW5pYw0KPiBoYXBwZW5zIHdoZW4g aW52b2tpbmcgdGhlIGJwZl9za2JfcHVsbF9kYXRhLg0KDQo+IElzIHRoaXMgYSBrbm93biBpc3N1 ZSBvciBpcyB0aGVyZSBhbnkgaW5mb3JtYXRpb24gdGhhdCBJIGNhbiBwcm92aWRlIHRvICANCj4g aGVscCByZXNvbHZlIGl0Pw0KDQpKb2huLCBpcyBpdCBzb21ldGhpbmcgYWxyZWFkeSBjb3ZlcmVk IGJ5IHlvdXIgcmVjZW50IFswXT8NCg0KMDogIA0KaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYnBm LzIwMjMwMzIxMjE1MjEyLjUyNTYzMC0xLWpvaG4uZmFzdGFiZW5kQGdtYWlsLmNvbS8NCg0KPiBT aW5jZXJlbHksDQo+IEZhcmJvZCBTaGFoaW5mYXINCg0KPiBQaEQgc3R1ZGVudCBhdCBQb2xpdGVj bmljbyBkaSBNaWxhbm8NCj4gaHR0cHM6Ly9mc2hhaGluZmFyMS5naXRodWIuaW8vDQoNCj4ga2Vy bmVsIEJVRyBhdCBuZXQvY29yZS9za2J1ZmYuYzoyNDQ2IQ0KPiBbIDE1NDkuODQ3OTE0XSBpbnZh bGlkIG9wY29kZTogMDAwMCBbIzFdIFBSRUVNUFQgU01QIE5PUFRJDQo+IFsgMTU0OS44NTMxMzld IENQVTogMTAgUElEOiAyMDA4IENvbW06IHB5dGhvbjMgVGFpbnRlZDogRyAgICAgICAgICAgIA0K PiBPICAgICAgIDYuMi44ICM0DQo+IFsgMTU0OS44NjA2MTVdIEhhcmR3YXJlIG5hbWU6IERlbGwg SW5jLiBQb3dlckVkZ2UgQzY1MjUvMDRESzQ3LCBCSU9TICANCj4gMi4wLjMgMDEvMTUvMjAyMQ0K PiBbIDE1NDkuODY4MTgxXSBSSVA6IDAwMTA6X19wc2tiX3B1bGxfdGFpbCsweDQ1Yy8weDRiMA0K PiBbIDE1NDkuODcyOTczXSBDb2RlOiAyNCAwOCBiZSAwMiAwMCAwMCAwMCBlOCA0MiBjYiBmZiBm ZiA0OCA4MyBjNCAxMCAzMSAgDQo+IGMwIDViIDQxIDVjIDQxIDVkIDQxIDVlIDQxIDVmIDVkIGU5 IDQxIGEwIDI2IDAwIDQ4IDhkIDc4IGZmIGU5IDQyIGZkIGZmICANCj4gZmYgPDBmPiAwYiA0OCBj NyA0NCAyNCAwOCAwMCAwMCAwMCAwMCBlOSA5ZiBmZSBmZiBmZiA0OCBjNyA0NCAyNCAwOCAwMA0K PiBbIDE1NDkuODkxNzExXSBSU1A6IDAwMTg6ZmZmZmFkMWZjMDVmODk5OCBFRkxBR1M6IDAwMDEw MjgyDQo+IFsgMTU0OS44OTY5MzldIFJBWDogMDAwMDAwMDBmZmZmZmZmMiBSQlg6IDAwMDAwMDAw MDAwMDAwMDEgUkNYOiAgDQo+IDAwMDAwMDAwMDAwMDAyYzANCj4gWyAxNTQ5LjkwNDA3MF0gUkRY OiBmZmZmOTkyZjAwZmZlMTViIFJTSTogZmZmZjk5MmYwMGZmZTAwMCBSREk6ICANCj4gZmZmZjk5 MmYxNjhhZGYwMA0KPiBbIDE1NDkuOTExMTk2XSBSQlA6IGZmZmZhZDFmYzA1Zjg5ZDAgUjA4OiAw MDAwMDAwMGZmZmZmZjFjIFIwOTogIA0KPiBmZmZmOTkyZjE2OGFkMzAwDQo+IFsgMTU0OS45MTgz MjldIFIxMDogMDAwMDAwMDAwMDAwMDAwMSBSMTE6IDAwMDAwMDAwMDAwMDAwMDEgUjEyOiAgDQo+ IDAwMDAwMDAwMDAwMDAwMDENCj4gWyAxNTQ5LjkyNTQ2MF0gUjEzOiBmZmZmOTkyZjE2OGFkZjAw IFIxNDogZmZmZjk5MmYwMGZmZjA0OCBSMTU6ICANCj4gZmZmZjk5MmYxNjhhZGYwMA0KPiBbIDE1 NDkuOTMyNTg1XSBGUzogIDAwMDA3ZmQ0YTVlNTU3NDAoMDAwMCkgR1M6ZmZmZjk5NGRmZWU4MDAw MCgwMDAwKSAgDQo+IGtubEdTOjAwMDAwMDAwMDAwMDAwMDANCj4gWyAxNTQ5Ljk0MDY3MF0gQ1M6 ICAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAwMDA4MDA1MDAzMw0KPiBbIDE1NDku OTQ2NDA5XSBDUjI6IDAwMDAwMDAwMDA0NTM1MzEgQ1IzOiAwMDAwMDAwMTBhNjg4MDAwIENSNDog IA0KPiAwMDAwMDAwMDAwMzUwZWUwDQo+IFsgMTU0OS45NTM1NDJdIENhbGwgVHJhY2U6DQo+IFsg MTU0OS45NTU5OTddICA8SVJRPg0KPiBbIDE1NDkuOTU4MDE3XSAgc2tiX2Vuc3VyZV93cml0YWJs ZSsweDhmLzB4YTANCj4gWyAxNTQ5Ljk2MjExNF0gIHNrX3NrYl9wdWxsX2RhdGErMHgyNC8weDMw DQo+IFsgMTU0OS45NjU5NTNdICBicGZfcHJvZ181YzRmMzI3YTFlMTQyNDE5X3BhcnNlcisweDFm LzB4ZDgNCj4gWyAxNTQ5Ljk3MTE3OV0gIHNrX3Bzb2NrX3N0cnBfcGFyc2UrMHg1MC8weGMwDQo+ IFsgMTU0OS45NzUyNzldICBfX3N0cnBfcmVjdisweDFmYi8weDYzMA0KPiBbIDE1NDkuOTc4ODU5 XSAgc3RycF9yZWN2KzB4MjcvMHgzMA0KPiBbIDE1NDkuOTgyMDkyXSAgdGNwX3JlYWRfc29jaysw eDkxLzB4MWMwDQo+IFsgMTU0OS45ODU3NTddICA/IF9fcGZ4X3N0cnBfcmVjdisweDEwLzB4MTAN Cj4gWyAxNTQ5Ljk4OTY4M10gIHN0cnBfcmVhZF9zb2NrKzB4NjgvMHhiMA0KPiBbIDE1NDkuOTkz MzQ4XSAgc3RycF9kYXRhX3JlYWR5KzB4NjEvMHhhMA0KPiBbIDE1NDkuOTk3MTAxXSAgc2tfcHNv Y2tfc3RycF9kYXRhX3JlYWR5KzB4ODYvMHhhMA0KPiBbIDE1NTAuMDAxNjM1XSAgdGNwX2RhdGFf cmVhZHkrMHgzMy8weGUwDQo+IFsgMTU1MC4wMDUzMDFdICB0Y3BfZGF0YV9xdWV1ZSsweDQ2OS8w eGQ0MA0KPiBbIDE1NTAuMDA5MTQyXSAgdGNwX3Jjdl9lc3RhYmxpc2hlZCsweDI2NC8weDczMA0K PiBbIDE1NTAuMDEzNDExXSAgPyBza19maWx0ZXJfdHJpbV9jYXArMHgxMTQvMHgyNTANCj4gWyAx NTUwLjAxNzc3Ml0gIHRjcF92NF9kb19yY3YrMHgxNWQvMHgyYjANCj4gWyAxNTUwLjAyMTUyNF0g IHRjcF92NF9yY3YrMHgxMWYxLzB4MTI2MA0KPiBbIDE1NTAuMDI1MTkyXSAgaXBfcHJvdG9jb2xf ZGVsaXZlcl9yY3UrMHgzYi8weDMzMA0KPiBbIDE1NTAuMDI5NzI0XSAgaXBfbG9jYWxfZGVsaXZl cl9maW5pc2grMHg4YS8weGIwDQo+IFsgMTU1MC4wMzQxNzFdICBpcF9sb2NhbF9kZWxpdmVyKzB4 NzMvMHgxMjANCj4gWyAxNTUwLjAzODA5NV0gID8gX19wZnhfaXBfbG9jYWxfZGVsaXZlcl9maW5p c2grMHgxMC8weDEwDQo+IFsgMTU1MC4wNDMyMzRdICBpcF9yY3ZfZmluaXNoKzB4YzIvMHhkMA0K PiBbIDE1NTAuMDQ2ODE2XSAgaXBfcmN2KzB4NTcvMHhmMA0KPiBbIDE1NTAuMDQ5Nzg3XSAgPyBw cm9iZV9zY2hlZF93YWtldXArMHgzOS8weDQwDQo+IFsgMTU1MC4wNTM5NzVdICBfX25ldGlmX3Jl Y2VpdmVfc2tiX29uZV9jb3JlKzB4OGMvMHhhMA0KPiBbIDE1NTAuMDU4ODU0XSAgX19uZXRpZl9y ZWNlaXZlX3NrYisweDE1LzB4NjANCj4gWyAxNTUwLjA2Mjk1M10gIHByb2Nlc3NfYmFja2xvZysw eGE4LzB4MTQwDQo+IFsgMTU1MC4wNjY3OTNdICBfX25hcGlfcG9sbCsweDMxLzB4MWQwDQo+IFsg MTU1MC4wNzAyODZdICBuZXRfcnhfYWN0aW9uKzB4MjkwLzB4MmUwDQo+IFsgMTU1MC4wNzQwMzdd ICBfX2RvX3NvZnRpcnErMHhmNS8weDJkNw0KPiBbIDE1NTAuMDc3NjE4XSAgZG9fc29mdGlycSsw eDlhLzB4YzANCj4gWyAxNTUwLjA4MDkzNV0gIDwvSVJRPg0KPiBbIDE1NTAuMDgzMDMyXSAgPFRB U0s+DQo+IFsgMTU1MC4wODUxMjldICBfX2xvY2FsX2JoX2VuYWJsZV9pcCsweDdkLzB4ODANCj4g WyAxNTUwLjA4OTMxOF0gIGlwX2ZpbmlzaF9vdXRwdXQyKzB4MTljLzB4NTcwDQo+IFsgMTU1MC4w OTM0MTddICBfX2lwX2ZpbmlzaF9vdXRwdXQrMHgxZmUvMHgyZjANCj4gWyAxNTUwLjA5NzYwMV0g ID8gYWRkX3dhaXRfcXVldWUrMHg2Zi8weDgwDQo+IFsgMTU1MC4xMDE0NDNdICBpcF9maW5pc2hf b3V0cHV0KzB4MmUvMHhkMA0KPiBbIDE1NTAuMTA1MjgyXSAgaXBfb3V0cHV0KzB4N2UvMHgxMTAN Cj4gWyAxNTUwLjEwODYwMV0gID8gZG9fcmVuYW1lYXQyKzB4MjQ0LzB4NWIwDQo+IFsgMTU1MC4x MTI0NDFdICA/IF9fcGZ4X2lwX2ZpbmlzaF9vdXRwdXQrMHgxMC8weDEwDQo+IFsgMTU1MC4xMTY5 NzRdICBpcF9sb2NhbF9vdXQrMHg2Mi8weDcwDQo+IFsgMTU1MC4xMjA0NjZdICBfX2lwX3F1ZXVl X3htaXQrMHgxOTIvMHg0NTANCj4gWyAxNTUwLjEyNDM5Ml0gIGlwX3F1ZXVlX3htaXQrMHgxOS8w eDIwDQo+IFsgMTU1MC4xMjc5NzFdICBfX3RjcF90cmFuc21pdF9za2IrMHhhNTYvMHhiOTANCj4g WyAxNTUwLjEzMjE1N10gIHRjcF93cml0ZV94bWl0KzB4NTRkLzB4MTJhMA0KPiBbIDE1NTAuMTM2 MDgyXSAgPyBfY29weV9mcm9tX2l0ZXIrMHgxMmEvMHg1YjANCj4gWyAxNTUwLjE0MDE4NF0gIF9f dGNwX3B1c2hfcGVuZGluZ19mcmFtZXMrMHgzYi8weDExMA0KPiBbIDE1NTAuMTQ0ODkwXSAgdGNw X3B1c2grMHgxMGMvMHgxMjANCj4gWyAxNTUwLjE0ODIwN10gIHRjcF9zZW5kbXNnX2xvY2tlZCsw eDQ5MS8weGMzMA0KPiBbIDE1NTAuMTUyMzk3XSAgdGNwX3NlbmRtc2crMHgzMS8weDUwDQo+IFsg MTU1MC4xNTU4MDBdICBpbmV0X3NlbmRtc2crMHg0Ny8weDgwDQo+IFsgMTU1MC4xNTkyOTRdICBz b2NrX3NlbmRtc2crMHg2Ni8weDcwDQo+IFsgMTU1MC4xNjI3ODZdICBfX3N5c19zZW5kdG8rMHgx MjIvMHgxYjANCj4gWyAxNTUwLjE2NjQ1NF0gID8gZGVidWdfc21wX3Byb2Nlc3Nvcl9pZCsweDFi LzB4MzANCj4gWyAxNTUwLjE3MDk4NF0gID8gZnByZWdzX2Fzc2VydF9zdGF0ZV9jb25zaXN0ZW50 KzB4MmIvMHg2MA0KPiBbIDE1NTAuMTc2MjA5XSAgPyBleGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJl KzB4NDkvMHgxYjANCj4gWyAxNTUwLjE4MTA5MF0gIF9feDY0X3N5c19zZW5kdG8rMHgyZC8weDQw DQo+IFsgMTU1MC4xODQ5MjhdICBkb19zeXNjYWxsXzY0KzB4M2YvMHg5MA0KPiBbIDE1NTAuMTg4 NTA5XSAgZW50cnlfU1lTQ0FMTF82NF9hZnRlcl9od2ZyYW1lKzB4NzIvMHhkYw0KPiBbIDE1NTAu MTkzNTYxXSBSSVA6IDAwMzM6MHg3ZmQ0YTYxNDE1MzANCj4gWyAxNTUwLjE5NzE0MF0gQ29kZTog ZmYgZWIgYmMgMGYgMWYgODAgMDAgMDAgMDAgMDAgZjMgMGYgMWUgZmEgNDEgODkgY2EgIA0KPiA2 NCA4YiAwNCAyNSAxOCAwMCAwMCAwMCA4NSBjMCA3NSAxZCA0NSAzMSBjOSA0NSAzMSBjMCBiOCAy YyAwMCAwMCAwMCAwZiAgDQo+IDA1IDw0OD4gM2QgMDAgZjAgZmYgZmYgNzcgNjggYzMgMGYgMWYg ODAgMDAgMDAgMDAgMDAgNTUgNDggODMgZWMgMjAgNDgNCj4gWyAxNTUwLjIxNTg3OV0gUlNQOiAw MDJiOjAwMDA3ZmZlNzQ2MzFlZTggRUZMQUdTOiAwMDAwMDI0NiBPUklHX1JBWDogIA0KPiAwMDAw MDAwMDAwMDAwMDJjDQo+IFsgMTU1MC4yMjM0NDNdIFJBWDogZmZmZmZmZmZmZmZmZmZkYSBSQlg6 IDAwMDA3ZmZlNzQ2MzFmODAgUkNYOiAgDQo+IDAwMDA3ZmQ0YTYxNDE1MzANCj4gWyAxNTUwLjIz MDU3MF0gUkRYOiAwMDAwMDAwMDAwMDAwMDAxIFJTSTogMDAwMDdmZDRhNTY3MWFkMCBSREk6ICAN Cj4gMDAwMDAwMDAwMDAwMDAwMw0KPiBbIDE1NTAuMjM3NzAyXSBSQlA6IDAwMDAwMDAwMDExM2Nm ZTAgUjA4OiAwMDAwMDAwMDAwMDAwMDAwIFIwOTogIA0KPiAwMDAwMDAwMDAwMDAwMDAwDQo+IFsg MTU1MC4yNDQ4MzVdIFIxMDogMDAwMDAwMDAwMDAwMDAwMCBSMTE6IDAwMDAwMDAwMDAwMDAyNDYg UjEyOiAgDQo+IDAwMDAwMDAwMDAwMDAwMDENCj4gWyAxNTUwLjI1MTk2N10gUjEzOiAwMDAwMDAw MDAwMDAwMDAwIFIxNDogMDAwMDdmZmU3NDYzMWY4MCBSMTU6ICANCj4gMDAwMDAwMDAwMDYyNDI0 MA0KPiBbIDE1NTAuMjU5MTAyXSAgPC9UQVNLPg0KPiBbIDE1NTAuMjYxMjkzXSBNb2R1bGVzIGxp bmtlZCBpbjogbmZzdjMgbmZzX2FjbCBuZnMgbG9ja2QgZ3JhY2UgZnNjYWNoZSAgDQo+IG5ldGZz IGlwb2QoTykgaXBtaV9zc2lmIGludGVsX3JhcGxfbXNyIGludGVsX3JhcGxfY29tbW9uIGFtZDY0 X2VkYWMgIA0KPiBlZGFjX21jZV9hbWQga3ZtX2FtZCBiaW5mbXRfbWlzYyBrdm0gY3JjdDEwZGlm X3BjbG11bCBnaGFzaF9jbG11bG5pX2ludGVsICANCj4gc2hhNTEyX3Nzc2UzIGFlc25pX2ludGVs IGNyeXB0b19zaW1kIGNyeXB0ZCBtZ2FnMjAwIGFjcGlfaXBtaSAgDQo+IGRybV9zaG1lbV9oZWxw ZXIgcmFwbCB3bWlfYm1vZiBkcm1fa21zX2hlbHBlciBpMmNfYWxnb19iaXQgc3lzY29weWFyZWEg IA0KPiBpcG1pX3NpIGlwbWlfZGV2aW50ZiBzeXNmaWxscmVjdCBzeXNpbWdibHQgY2NwIGsxMHRl bXAgaXBtaV9tc2doYW5kbGVyICANCj4gYWNwaV9wb3dlcl9tZXRlciBtYWNfaGlkIHNjaF9mcV9j b2RlbCBkcm0gc3VucnBjIGlwX3RhYmxlcyB4X3RhYmxlcyAgDQo+IGF1dG9mczQgbWx4NV9pYiBp Yl91dmVyYnMgaWJfY29yZSBtbHg1X2NvcmUgcGNpX2h5cGVydl9pbnRmIGFoY2kgbWx4ZncgIA0K PiBjcmMzMl9wY2xtdWwgbGliYWhjaSBwc2FtcGxlIGkyY19waWl4NCB0bHMgd21pDQo+IFsgMTU1 MC4zMTM3OTldIC0tLVsgZW5kIHRyYWNlIDAwMDAwMDAwMDAwMDAwMDAgXS0tLQ0KPiBbIDE1NTAu MzE4NDIzXSBSSVA6IDAwMTA6X19wc2tiX3B1bGxfdGFpbCsweDQ1Yy8weDRiMA0KPiBbIDE1NTAu MzIzMjIzXSBDb2RlOiAyNCAwOCBiZSAwMiAwMCAwMCAwMCBlOCA0MiBjYiBmZiBmZiA0OCA4MyBj NCAxMCAzMSAgDQo+IGMwIDViIDQxIDVjIDQxIDVkIDQxIDVlIDQxIDVmIDVkIGU5IDQxIGEwIDI2 IDAwIDQ4IDhkIDc4IGZmIGU5IDQyIGZkIGZmICANCj4gZmYgPDBmPiAwYiA0OCBjNyA0NCAyNCAw OCAwMCAwMCAwMCAwMCBlOSA5ZiBmZSBmZiBmZiA0OCBjNyA0NCAyNCAwOCAwMA0KPiBbIDE1NTAu MzQxOTcyXSBSU1A6IDAwMTg6ZmZmZmFkMWZjMDVmODk5OCBFRkxBR1M6IDAwMDEwMjgyDQo+IFsg MTU1MC4zNDcyMDVdIFJBWDogMDAwMDAwMDBmZmZmZmZmMiBSQlg6IDAwMDAwMDAwMDAwMDAwMDEg UkNYOiAgDQo+IDAwMDAwMDAwMDAwMDAyYzANCj4gWyAxNTUwLjM1NDMzOV0gUkRYOiBmZmZmOTky ZjAwZmZlMTViIFJTSTogZmZmZjk5MmYwMGZmZTAwMCBSREk6ICANCj4gZmZmZjk5MmYxNjhhZGYw MA0KPiBbIDE1NTAuMzYxNDc4XSBSQlA6IGZmZmZhZDFmYzA1Zjg5ZDAgUjA4OiAwMDAwMDAwMGZm ZmZmZjFjIFIwOTogIA0KPiBmZmZmOTkyZjE2OGFkMzAwDQo+IFsgMTU1MC4zNjg2MTFdIFIxMDog MDAwMDAwMDAwMDAwMDAwMSBSMTE6IDAwMDAwMDAwMDAwMDAwMDEgUjEyOiAgDQo+IDAwMDAwMDAw MDAwMDAwMDENCj4gWyAxNTUwLjM3NTc0Nl0gUjEzOiBmZmZmOTkyZjE2OGFkZjAwIFIxNDogZmZm Zjk5MmYwMGZmZjA0OCBSMTU6ICANCj4gZmZmZjk5MmYxNjhhZGYwMA0KPiBbIDE1NTAuMzgyODg2 XSBGUzogIDAwMDA3ZmQ0YTVlNTU3NDAoMDAwMCkgR1M6ZmZmZjk5NGRmZWU4MDAwMCgwMDAwKSAg DQo+IGtubEdTOjAwMDAwMDAwMDAwMDAwMDANCj4gWyAxNTUwLjM5MDk3Ml0gQ1M6ICAwMDEwIERT OiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAwMDA4MDA1MDAzMw0KPiBbIDE1NTAuMzk2NzE5XSBD UjI6IDAwMDAwMDAwMDA0NTM1MzEgQ1IzOiAwMDAwMDAwMTBhNjg4MDAwIENSNDogIA0KPiAwMDAw MDAwMDAwMzUwZWUwDQo+IFsgMTU1MC40MDM4NjFdIEtlcm5lbCBwYW5pYyAtIG5vdCBzeW5jaW5n OiBGYXRhbCBleGNlcHRpb24gaW4gaW50ZXJydXB0DQo+IFsgMTU1MC40MTA3NjNdIEtlcm5lbCBP ZmZzZXQ6IDB4MCBmcm9tIDB4ZmZmZmZmZmY4MTAwMDAwMCAocmVsb2NhdGlvbiAgDQo+IHJhbmdl OiAweGZmZmZmZmZmODAwMDAwMDAtMHhmZmZmZmZmZmJmZmZmZmZmKQ0KPiBbIDE1NTAuNDIwOTQw XSAtLS1bIGVuZCBLZXJuZWwgcGFuaWMgLSBub3Qgc3luY2luZzogRmF0YWwgZXhjZXB0aW9uIGlu ICANCj4gaW50ZXJydXB0IF0tLS0NCg0KDQo+IFsgIDQwNC44NDAyNDVdIGtlcm5lbCBCVUcgYXQg bmV0L2NvcmUvc2tidWZmLmM6MjM4MCENCj4gWyAgNDA0Ljg0NTA3MF0gaW52YWxpZCBvcGNvZGU6 IDAwMDAgWyMxXSBQUkVFTVBUIFNNUCBQVEkNCj4gWyAgNDA0Ljg0NjgzOF0gQ1BVOiAyIFBJRDog MTE2NiBDb21tOiBuYyBOb3QgdGFpbnRlZCAgDQo+IDYuMS4wLXJjNy1nODNkZTEwOGUzNzIzLWRp cnR5ICM3Mw0KPiBbICA0MDQuODQ4OTIzXSBIYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJkIFBD IChRMzUgKyBJQ0g5LCAyMDA5KSwgQklPUyAgDQo+IDEuMTUuMC0xIDA0LzAxLzIwMTQNCj4gWyAg NDA0Ljg1MDc5Nl0gUklQOiAwMDEwOl9fcHNrYl9wdWxsX3RhaWwrMHgzZmMvMHg0NTANCj4gWyAg NDA0Ljg1MjE3MV0gQ29kZTogMjQgMDggYmUgMDEgMDAgMDAgMDAgZTggZTIgZDAgZmYgZmYgNDgg ODMgYzQgMTAgMzEgIA0KPiBjMCA1YiA0MSA1YyA0MSA1ZCA0MSA1ZSA0MSA1ZiA1ZCBjMyBjYyBj YyBjYyBjYyA0OCA4ZCA3OCBmZiBlOSA5NiBmZCBmZiAgDQo+IGZmIDwwZj4gMGIgNDggYzcgNDQg MjQgMDggMDAgMDAgMDAgMDAgZTkgOWYgZmUgZmYgZmYgNDggYzcgNDQgMjQgMDggMDANCj4gWyAg NDA0Ljg1NjM4MF0gUlNQOiAwMDE4OmZmZmZhN2FhODAwZmNhNTAgRUZMQUdTOiAwMDAxMDI4Mg0K PiBbICA0MDQuODU3NTYzXSBSQVg6IDAwMDAwMDAwZmZmZmZmZjIgUkJYOiAwMDAwMDAwMDAwMDAw MDA4IFJDWDogIA0KPiAwMDAwMDAwMDAwMDAwMDA4DQo+IFsgIDQwNC44NTkyMDhdIFJEWDogZmZm ZmEwOWY0NjRiODE1ZCBSU0k6IDAwMDAwMDAwMDAwMDAyYzAgUkRJOiAgDQo+IDAwMDAwMDAwMDAw MDAwMDANCj4gWyAgNDA0Ljg2MDc5MF0gUkJQOiBmZmZmYTdhYTgwMGZjYTg4IFIwODogMDAwMDAw MDBmZmZmZmYyNSBSMDk6ICANCj4gN2ZmZmZmZmZmZmZmZmZmZg0KPiBbICA0MDQuODYyMzc5XSBS MTA6IDAwMDAwMDAwMDAwMDAwMDggUjExOiBmZmZmYTA5ZjQ0ZDlmYzQwIFIxMjogIA0KPiAwMDAw MDAwMDAwMDAwMDA4DQo+IFsgIDQwNC44NjM5NjNdIFIxMzogZmZmZmEwOWY0NGQ5ZmMwMCBSMTQ6 IGZmZmZhMDlmNDRkOWZjMDAgUjE1OiAgDQo+IGZmZmZhMDlmNDRkOWY3MDANCj4gWyAgNDA0Ljg2 NTUzNF0gRlM6ICAwMDAwN2Y5ODg3M2MzNzQwKDAwMDApIEdTOmZmZmZhMGEwYjdkMDAwMDAoMDAw MCkgIA0KPiBrbmxHUzowMDAwMDAwMDAwMDAwMDAwDQo+IFsgIDQwNC44NjczNjddIENTOiAgMDAx MCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMNCj4gWyAgNDA0Ljg2ODc3 MV0gQ1IyOiAwMDAwN2ZmZTFmMmRiMDkwIENSMzogMDAwMDAwMDEwMzNjODAwMiBDUjQ6ICANCj4g MDAwMDAwMDAwMDM3MGVlMA0KPiBbICA0MDQuODcwNDQ4XSBDYWxsIFRyYWNlOg0KPiBbICA0MDQu ODcxMDYzXSAgPElSUT4NCj4gWyAgNDA0Ljg3MTY2M10gIHNrYl9lbnN1cmVfd3JpdGFibGUrMHg4 NC8weGEwDQo+IFsgIDQwNC44NzI2NzhdICBza19za2JfcHVsbF9kYXRhKzB4MTcvMHgyMA0KPiBb ICA0MDQuODczNjUwXSAgYnBmX3Byb2dfZmRkYWRkZjQzZjY3NDFhNV9wYXJzZXIrMHgyNC8weDFl OQ0KPiBbICA0MDQuODc0OTQyXSAgPyBzZWxpbnV4X25ldGxibF9zb2NrX3Jjdl9za2IrMHgyZS8w eDFiMA0KPiBbICA0MDQuODc2MTYwXSAgPyBrbWVtX2NhY2hlX2FsbG9jKzB4MzMvMHgxYjANCj4g WyAgNDA0Ljg3NzE3NV0gIHNrX3Bzb2NrX3N0cnBfcGFyc2UrMHgzZi8weGMwDQo+IFsgIDQwNC44 NzgyMjJdICBfX3N0cnBfcmVjdisweDFmMi8weDYyMA0KPiBbICA0MDQuODc5MTQzXSAgPyBzdHJw X3Byb2Nlc3MrMHg0MC8weDQwDQo+IFsgIDQwNC44ODAwODFdICB0Y3BfcmVhZF9zb2NrKzB4N2Yv MHgxYjANCj4gWyAgNDA0Ljg4MTAxOV0gIHN0cnBfcmVhZF9zb2NrKzB4NWUvMHhhMA0KPiBbICA0 MDQuODgyNzE5XSAgc3RycF9kYXRhX3JlYWR5KzB4NTQvMHg4MA0KPiBbICA0MDQuODgzNjc1XSAg c2tfcHNvY2tfc3RycF9kYXRhX3JlYWR5KzB4NjgvMHg4MA0KPiBbICA0MDQuODg0ODkwXSAgdGNw X2RhdGFfcXVldWUrMHg0M2EvMHhjZTANCj4gWyAgNDA0Ljg4NTk1MF0gIHRjcF9yY3ZfZXN0YWJs aXNoZWQrMHgyNDgvMHg2ZTANCj4gWyAgNDA0Ljg4NzAyNl0gIHRjcF92NF9kb19yY3YrMHgxNDcv MHgyOTANCj4gWyAgNDA0Ljg4Nzk2OV0gIHRjcF92NF9yY3YrMHhlNTkvMHhmMDANCj4gWyAgNDA0 Ljg4ODg2NV0gIGlwX3Byb3RvY29sX2RlbGl2ZXJfcmN1KzB4MmQvMHgxZjANCj4gWyAgNDA0Ljg4 OTk4NV0gIGlwX2xvY2FsX2RlbGl2ZXJfZmluaXNoKzB4NmUvMHg5MA0KPiBbICA0MDQuODkxMTI1 XSAgaXBfbG9jYWxfZGVsaXZlcisweDY2LzB4MTEwDQo+IFsgIDQwNC44OTIxMTZdICBpcF9yY3Yr MHg0YS8weGYwDQo+IFsgIDQwNC44OTMwOTFdICBfX25ldGlmX3JlY2VpdmVfc2tiX29uZV9jb3Jl KzB4ODYvMHhhMA0KPiBbICA0MDQuODk0MzAwXSAgcHJvY2Vzc19iYWNrbG9nKzB4YTMvMHgxNTAN Cj4gWyAgNDA0Ljg5NTI4N10gIF9fbmFwaV9wb2xsKzB4MjQvMHgxNjANCj4gWyAgNDA0Ljg5NjI0 OV0gIG5ldF9yeF9hY3Rpb24rMHgyOTEvMHgzNTANCj4gWyAgNDA0Ljg5NzE5OF0gIF9fZG9fc29m dGlycSsweGIzLzB4MjhjDQo+IFsgIDQwNC44OTgxODNdICBkb19zb2Z0aXJxKzB4NTIvMHg3MA0K PiBbICA0MDQuODk5MDY0XSAgPC9JUlE+DQo+IFsgIDQwNC44OTk2NzhdICA8VEFTSz4NCj4gWyAg NDA0LjkwMDMxMF0gIF9fbG9jYWxfYmhfZW5hYmxlX2lwKzB4NWYvMHg3MA0KPiBbICA0MDQuOTAx NDU3XSAgaXBfZmluaXNoX291dHB1dDIrMHgxNzkvMHg1MDANCj4gWyAgNDA0LjkwMjU3Ml0gIGlw X291dHB1dCsweDcxLzB4MTEwDQo+IFsgIDQwNC45MDM0ODFdICA/IF9faXBfZmluaXNoX291dHB1 dCsweDJhMC8weDJhMA0KPiBbICA0MDQuOTA0NjQzXSAgX19pcF9xdWV1ZV94bWl0KzB4MTc0LzB4 M2QwDQo+IFsgIDQwNC45MDU2OTNdICBfX3RjcF90cmFuc21pdF9za2IrMHhhMzgvMHhiNTANCj4g WyAgNDA0LjkwNjc2NF0gID8gX19hbGxvY19za2IrMHg4OS8weDFiMA0KPiBbICA0MDQuOTA3NzA0 XSAgdGNwX3dyaXRlX3htaXQrMHg0ZGMvMHgxMTYwDQo+IFsgIDQwNC45MDg2ODldICBfX3RjcF9w dXNoX3BlbmRpbmdfZnJhbWVzKzB4MmQvMHhjMA0KPiBbICA0MDQuOTA5ODMwXSAgdGNwX3NlbmRt c2dfbG9ja2VkKzB4MjkxLzB4YmYwDQo+IFsgIDQwNC45MTA4NzJdICB0Y3Bfc2VuZG1zZysweDIz LzB4NDANCj4gWyAgNDA0LjkxMTczOV0gIHNvY2tfc2VuZG1zZysweDU2LzB4NjANCj4gWyAgNDA0 LjkxMzM3OF0gIHNvY2tfd3JpdGVfaXRlcisweDkyLzB4ZjANCj4gWyAgNDA0LjkxNDM1Ml0gIHZm c193cml0ZSsweDM1Ni8weDNjMA0KPiBbICA0MDQuOTE1MjYzXSAga3N5c193cml0ZSsweGE2LzB4 ZTANCj4gWyAgNDA0LjkxNjI5OF0gIGRvX3N5c2NhbGxfNjQrMHgzOC8weDkwDQo+IFsgIDQwNC45 MTcyNDVdICBlbnRyeV9TWVNDQUxMXzY0X2FmdGVyX2h3ZnJhbWUrMHg2My8weGNkDQo+IFsgIDQw NC45MTg1NjBdIFJJUDogMDAzMzoweDdmOTg4NzRkNDA3Nw0KPiBbICA0MDQuOTE5NTI0XSBDb2Rl OiA2NCA4OSAwMiA0OCBjNyBjMCBmZiBmZiBmZiBmZiBlYiBiYiAwZiAxZiA4MCAwMCAwMCAgDQo+ IDAwIDAwIGYzIDBmIDFlIGZhIDY0IDhiIDA0IDI1IDE4IDAwIDAwIDAwIDg1IGMwIDc1IDEwIGI4 IDAxIDAwIDAwIDAwIDBmICANCj4gMDUgPDQ4PiAzZCAwMCBmMCBmZiBmZiA3NyA1MSBjMyA0OCA4 MyBlYyAyOCA0OCA4OSA1NCAyNCAxOCA0OCA4OSA3NCAyNA0KPiBbICA0MDQuOTIzODA3XSBSU1A6 IDAwMmI6MDAwMDdmZmUxZjJkYjAxOCBFRkxBR1M6IDAwMDAwMjQ2IE9SSUdfUkFYOiAgDQo+IDAw MDAwMDAwMDAwMDAwMDENCj4gWyAgNDA0LjkyNTgxN10gUkFYOiBmZmZmZmZmZmZmZmZmZmRhIFJC WDogMDAwMDAwMDAwMDAwMDAwMCBSQ1g6ICANCj4gMDAwMDdmOTg4NzRkNDA3Nw0KPiBbICA0MDQu OTI3NzA2XSBSRFg6IDAwMDAwMDAwMDAwMDAwMDggUlNJOiAwMDAwN2ZmZTFmMmRmMDgwIFJESTog IA0KPiAwMDAwMDAwMDAwMDAwMDAzDQo+IFsgIDQwNC45MjkzNjldIFJCUDogMDAwMDdmZmUxZjJk YjA1OCBSMDg6IDAwMDAwMDAwMDAwMDAwMDQgUjA5OiAgDQo+IDAwMDAwMDAwMDAwMDAwMDENCj4g WyAgNDA0LjkzMTAzOV0gUjEwOiAwMDAwMDAwMDAwMDAwMDAwIFIxMTogMDAwMDAwMDAwMDAwMDI0 NiBSMTI6ICANCj4gMDAwMDAwMDAwMDAwMDAwOA0KPiBbICA0MDQuOTMyNzE3XSBSMTM6IDAwMDA3 ZmZlMWYyZGYwODAgUjE0OiAwMDAwMDAwMDAwMDAwMDAzIFIxNTogIA0KPiAwMDAwMDAwMDAwMDAw MDA1DQo+IFsgIDQwNC45MzQ0NDhdICA8L1RBU0s+DQo+IFsgIDQwNC45MzUxNDFdIE1vZHVsZXMg bGlua2VkIGluOg0KPiBbICA0MDQuOTM2MDA1XSAtLS1bIGVuZCB0cmFjZSAwMDAwMDAwMDAwMDAw MDAwIF0tLS0NCj4gWyAgNDA0LjkzNzIwNl0gUklQOiAwMDEwOl9fcHNrYl9wdWxsX3RhaWwrMHgz ZmMvMHg0NTANCj4gWyAgNDA0LjkzODQ3NV0gQ29kZTogMjQgMDggYmUgMDEgMDAgMDAgMDAgZTgg ZTIgZDAgZmYgZmYgNDggODMgYzQgMTAgMzEgIA0KPiBjMCA1YiA0MSA1YyA0MSA1ZCA0MSA1ZSA0 MSA1ZiA1ZCBjMyBjYyBjYyBjYyBjYyA0OCA4ZCA3OCBmZiBlOSA5NiBmZCBmZiAgDQo+IGZmIDww Zj4gMGIgNDggYzcgNDQgMjQgMDggMDAgMDAgMDAgMDAgZTkgOWYgZmUgZmYgZmYgNDggYzcgNDQg MjQgMDggMDANCj4gWyAgNDA0Ljk0MzMzOV0gUlNQOiAwMDE4OmZmZmZhN2FhODAwZmNhNTAgRUZM QUdTOiAwMDAxMDI4Mg0KPiBbICA0MDQuOTQ0NjgxXSBSQVg6IDAwMDAwMDAwZmZmZmZmZjIgUkJY OiAwMDAwMDAwMDAwMDAwMDA4IFJDWDogIA0KPiAwMDAwMDAwMDAwMDAwMDA4DQo+IFsgIDQwNC45 NDY1MThdIFJEWDogZmZmZmEwOWY0NjRiODE1ZCBSU0k6IDAwMDAwMDAwMDAwMDAyYzAgUkRJOiAg DQo+IDAwMDAwMDAwMDAwMDAwMDANCj4gWyAgNDA0Ljk0ODMwMl0gUkJQOiBmZmZmYTdhYTgwMGZj YTg4IFIwODogMDAwMDAwMDBmZmZmZmYyNSBSMDk6ICANCj4gN2ZmZmZmZmZmZmZmZmZmZg0KPiBb ICA0MDQuOTUwMjY5XSBSMTA6IDAwMDAwMDAwMDAwMDAwMDggUjExOiBmZmZmYTA5ZjQ0ZDlmYzQw IFIxMjogIA0KPiAwMDAwMDAwMDAwMDAwMDA4DQo+IFsgIDQwNC45NTE2OTFdIFIxMzogZmZmZmEw OWY0NGQ5ZmMwMCBSMTQ6IGZmZmZhMDlmNDRkOWZjMDAgUjE1OiAgDQo+IGZmZmZhMDlmNDRkOWY3 MDANCj4gWyAgNDA0Ljk1MzI5Ml0gRlM6ICAwMDAwN2Y5ODg3M2MzNzQwKDAwMDApIEdTOmZmZmZh MGEwYjdkMDAwMDAoMDAwMCkgIA0KPiBrbmxHUzowMDAwMDAwMDAwMDAwMDAwDQo+IFsgIDQwNC45 NTUwODRdIENTOiAgMDAxMCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMN Cj4gWyAgNDA0Ljk1NjQyNV0gQ1IyOiAwMDAwN2ZmZTFmMmRiMDkwIENSMzogMDAwMDAwMDEwMzNj ODAwMiBDUjQ6ICANCj4gMDAwMDAwMDAwMDM3MGVlMA0KPiBbICA0MDQuOTU4MDEwXSBLZXJuZWwg cGFuaWMgLSBub3Qgc3luY2luZzogRmF0YWwgZXhjZXB0aW9uIGluIGludGVycnVwdA0KPiBbICA0 MDQuOTU5NjM2XSBLZXJuZWwgT2Zmc2V0OiAweDI5MjAwMDAwIGZyb20gMHhmZmZmZmZmZjgxMDAw MDAwICANCj4gKHJlbG9jYXRpb24gcmFuZ2U6IDB4ZmZmZmZmZmY4MDAwMDAwMC0weGZmZmZmZmZm YmZmZmZmZmYpDQo+IFsgIDQwNC45NjE5NzJdIC0tLVsgZW5kIEtlcm5lbCBwYW5pYyAtIG5vdCBz eW5jaW5nOiBGYXRhbCBleGNlcHRpb24gaW4gIA0KPiBpbnRlcnJ1cHQgXS0tLQ0KDQo+IGltcG9y dCBzb2NrZXQNCj4gaW1wb3J0IHRpbWUNCj4gaW1wb3J0IGFyZ3BhcnNlDQoNCj4gZGVmIF9zZW5k KHNvY2ssIGRhdGEpOg0KPiAgICAgIHByaW50KGYnW1NlbmRpbmcgIntkYXRhfSJdJykNCj4gICAg ICBzb2NrLnNlbmQoZGF0YS5lbmNvZGUoKSkNCg0KPiBkZWYgX3JlY3Yoc29jayk6DQo+ICAgICAg dHJ5Og0KPiAgICAgICAgICByZXNwID0gc29jay5yZWN2KDIwNDgpDQo+ICAgICAgICAgIHJldHVy biByZXNwLmRlY29kZSgpDQo+ICAgICAgZXhjZXB0Og0KPiAgICAgICAgICBwcmludCgnW05vIGRh dGEgcmVjZWl2ZWRdJykNCj4gICAgICAgICAgcmV0dXJuIE5vbmUNCg0KDQo+IGRlZiBwYXJzZV9h cmdzKCk6DQo+ICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQ0KPiAgICAg IHBhcnNlci5hZGRfYXJndW1lbnQoJy1rJywgaGVscD0nS2VybmVsIGNyYXNoIHNjZW5hcmlvJywg IA0KPiBhY3Rpb249J3N0b3JlX3RydWUnKQ0KPiAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0t aXAnLCBkZWZhdWx0PSdsb2NhbGhvc3QnKQ0KPiAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0t cG9ydCcsIGRlZmF1bHQ9ODA4MCwgdHlwZT1pbnQpDQo+ICAgICAgYXJncyA9IHBhcnNlci5wYXJz ZV9hcmdzKCkNCj4gICAgICByZXR1cm4gYXJncw0KDQoNCj4gZGVmIG1haW4oKToNCj4gICAgICBh cmdzID0gcGFyc2VfYXJncygpDQoNCj4gICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZf SU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQ0KPiAgICAgIHMuY29ubmVjdCgoYXJncy5pcCwgYXJn cy5wb3J0KSkNCj4gICAgICBzLnNldHRpbWVvdXQoMSkNCg0KPiAgICAgICMgV2hhdCByZXF1ZXN0 IHRvIHNlbmQ/DQo+ICAgICAgcmVxID0gWydoZWxsbyB3b3JsZCAxJywgJ2hlbGxvIHdvcmxkIDIg RU5EJ10NCj4gICAgICBpZiBhcmdzLms6DQo+ICAgICAgICAgIHJlcSA9IFsnaGVsbG8gd29ybGQg MScsICdoZWxsbyB3b3JsZCAyJywgJ2hlbGxvIHdvcmxkIDMnLA0KPiAgICAgICAgICAgICAgICAg ICdoZWxsbyB3b3JsZCA0JywgJ2hlbGxvIHdvcmxkIDUgRU5EJ10NCg0KPiAgICAgIGZvciByIGlu IHJlcToNCj4gICAgICAgICAgX3NlbmQocywgcikNCj4gICAgICAgICAgcmVzcCA9IF9yZWN2KHMp DQo+ICAgICAgICAgIGlmIHJlc3A6DQo+ICAgICAgICAgICAgICBwcmludChyZXNwKQ0KDQoNCj4g ICAgICBzLmNsb3NlKCkNCg0KDQo+IGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6DQo+ICAgICAg bWFpbigpDQoNCg0KPiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQo+ICNpbmNsdWRlIDxzeXMvc29j a2V0Lmg+DQo+ICNpbmNsdWRlIDxsaW51eC90Y3AuaD4NCj4gI2luY2x1ZGUgPGxpbnV4L2JwZi5o Pg0KPiAjaW5jbHVkZSA8YnBmL2JwZl9oZWxwZXJzLmg+DQo+ICNpbmNsdWRlIDxicGYvYnBmX2Vu ZGlhbi5oPg0KDQo+IC8qIFB1dCBzdGF0ZSBvZiBlYWNoIHNvY2tldCBpbiB0aGlzIHN0cnVjdCAo VGhpcyB3aWxsIGJlIHVzZWQgaW4gIA0KPiBzb2Nrb3BzLmggYXMNCj4gICAqIHBhcnQgb2YgcGVy IHNvY2tldCBtZXRhZGF0YSkgKi8NCj4gc3RydWN0IGNvbm5lY3Rpb25fc3RhdGUgeyB9Ow0KDQo+ ICNpbmNsdWRlICJteV9icGYvc29ja29wcy5oIg0KDQo+ICNkZWZpbmUgT0ZGU0VUX01BU0sgMHgw ZmZmDQoNCj4gLyogc3RydWN0IGFyZyB7ICovDQo+IC8qIAlpbnQgdGVzdDsgKi8NCj4gLyogfTsg Ki8NCg0KPiAvKiBzdHJ1Y3QgeyAqLw0KPiAvKiAJX191aW50KHR5cGUsICBCUEZfTUFQX1RZUEVf QVJSQVkpOyAqLw0KPiAvKiAJLzEqIF9fdWludChtYXBfZmxhZ3MsIEJQRl9GX01NQVBBQkxFKTsg KjEvICovDQo+IC8qIAlfX3R5cGUoa2V5LCAgIF9fdTMyKTsgKi8NCj4gLyogCV9fdHlwZSh2YWx1 ZSwgc3RydWN0IGFyZyk7ICovDQo+IC8qIAlfX3VpbnQobWF4X2VudHJpZXMsIDEpOyAqLw0KPiAv KiB9IGFyZ19tYXAgU0VDKCIubWFwcyIpOyAqLw0KDQo+IFNFQygic2tfc2tiL3N0cmVhbV9wYXJz ZXIiKQ0KPiBpbnQgcGFyc2VyKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikNCj4gew0KDQo+IAl2b2lk ICpkYXRhOw0KPiAJdm9pZCAqZGF0YV9lbmQ7DQo+IAlfX3UxNiBsZW47DQoNCj4gCS8qIFB1bGwg bWVzc2FnZSBkYXRhIHNvIHRoYXQgd2UgY2FuIGFjY2VzcyBpdCAqLw0KPiAJaWYgKGJwZl9za2Jf cHVsbF9kYXRhKHNrYiwgc2tiLT5sZW4pICE9IDApIHsNCj4gCQlicGZfcHJpbnRrKCJQYXJzZXI6 IEZhaWxlZCB0byBsb2FkIG1lc3NhZ2UgZGF0YVxuIik7DQo+IAkJcmV0dXJuIDA7DQo+IAl9DQoN Cj4gCWRhdGEgPSAodm9pZCAqKShsb25nKXNrYi0+ZGF0YTsNCj4gCWRhdGFfZW5kID0gKHZvaWQg KikobG9uZylza2ItPmRhdGFfZW5kOw0KPiAJbGVuID0gc2tiLT5sZW47DQoNCj4gCWNoYXIgKnB0 ciA9IGRhdGEgKyAoKGxlbiAtIDMpICYgMHg3ZmZmKTsNCj4gCWlmICgodm9pZCAqKXB0ciA8IGRh dGEgfHwgKCh2b2lkICopcHRyICsgMyA+IGRhdGFfZW5kKSkgew0KPiAJCWJwZl9wcmludGsoIlBh cnNlcjogTm90IGVub3VnaCBkYXRhISIpOw0KPiAJCXJldHVybiAwOw0KPiAJfQ0KDQo+IAlpZiAo cHRyWzBdID09ICdFJyAmJiBwdHJbMV0gPT0gJ04nICYmIHB0clsyXSA9PSAnRCcpIHsNCj4gCQkv KiBGb3VuZCB0aGUgZW5kIG9mIHJlcXVlc3QgKi8NCj4gCQlyZXR1cm4gc2tiLT5sZW47DQo+IAl9 DQo+IAlicGZfcHJpbnRrKCJAJWRcbiVzIiwgKGxvbmcpcHRyIC0gKGxvbmcpZGF0YSwgcHRyKTsN Cg0KPiAJcmV0dXJuIDA7DQo+IH0NCg0KPiBTRUMoInNrX3NrYi9zdHJlYW1fdmVyZGljdCIpDQo+ IGludCB2ZXJkaWN0KHN0cnVjdCBfX3NrX2J1ZmYgKnNrYikNCj4gew0KPiAJcmV0dXJuIFNLX1BB U1M7DQo+IH0NCg0KPiBjaGFyIF9saWNlbnNlW10gU0VDKCJsaWNlbnNlIikgPSAiR1BMIjsNCg0K