Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nFcBx-0006Rc-73 for pgsql-www@arkaria.postgresql.org; Thu, 03 Feb 2022 13:30:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nFcBw-0005Uc-1B for pgsql-www@arkaria.postgresql.org; Thu, 03 Feb 2022 13:30:28 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nFcBv-0005UT-NK for pgsql-www@lists.postgresql.org; Thu, 03 Feb 2022 13:30:27 +0000 Received: from host-213-189-163-85.dynamic.voo.be ([213.189.163.85] helo=ploudseeker.com) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nFcBs-0001zo-Cp for pgsql-www@lists.postgresql.org; Thu, 03 Feb 2022 13:30:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cmatte.me; s=myselector; t=1643895022; bh=9Lct7DqzFkiY/HzGbHg9GEpCy4M8xDwX/bnlZzbdac8=; h=Date:From:To:Subject; b=D30g8eo1mfyEl6m29bK65A5zbJv6Zg/SumzL94i9v5E/XCSFR1OM5Ii+8QoKtp/tH FgzcdOy6pkl6OoFiIRVMviBha+RxLfcLjDdeEmzgXcmABrzsrHeKa+TafxXeF5P3pj yya3CVFRkzMpEViPW1Ozrncs0RNukyqsR/1YlDPQ4fNvmAvZk0DORtW7D2eklU9fP1 Npo7+UOOderQv35bYE+hsJN5Keghzkgj1PU01kNfvVeF3kRoDoKFe3t/52sW7TjfA7 qXpJG4IncUfrZFxrPPNL59EtLAEbRAWrAzn2TWFyFetKJfnF8DI2wO7z0Lxy1B7y/t G16KxxDei/Mqw== Content-Type: multipart/mixed; boundary="------------3v4INncDhpMj8DZyIkBAsSZX" Message-ID: <12eb75f0-3fc2-14f3-0931-4f29e145f182@cmatte.me> Date: Thu, 3 Feb 2022 14:30:22 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US From: =?UTF-8?Q?C=c3=a9lestin_Matte?= To: PostgreSQL WWW Subject: [PATCHES] pgarchives: merge schema.sql into Django's model List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------3v4INncDhpMj8DZyIkBAsSZX Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As discussed in previous threads before [1, 2], database creations file are currently split between the Django model and a SQL file. Discrepancy in the database's definition exists between them. As a consequence, the database cannot be created easily. This series of patches merge schema.sql into Django's model, and adds specific postgres components that cannot be handled by Django's ORM using RunSQL() in a migration file. Please also note that I integrated several other patches to avoid multiple migration files: - I allowed message.parentid to be null, as discussed in [1]. This can cause Internal Server Errors in views.py, which are fixed by the second patch. - I used BinaryFields for bytea columns (message.rawtxt and attachments.attachment), which seems to be the way to integrate bytea into Django It may be a good opportunity to remove all mentions of pg_dict, pg_stop and associated file. I'm not sure of the consequences of this. According to [2], these are the remains of an aborted idea. Also, what does tsparer bring? Can the installation of pgarchives be simplified by replacing it with pg_catalog.english? [1]: https://www.postgresql.org/message-id/CABUevEyFpYPEHh0AAyTAsgymRKOOVA1SY_pDHPCbBQQ9BawfTA%40mail.gmail.com [2]: https://www.postgresql.org/message-id/CABUevEy_i1xAKscMv4KZ0%3DbE8050bBcQfWaNyjwZZBofZx7JgQ%40mail.gmail.com -- Célestin Matte --------------3v4INncDhpMj8DZyIkBAsSZX Content-Type: text/x-patch; charset=UTF-8; name="0001-Merge-schema.sql-into-Django-s-model.patch" Content-Disposition: attachment; filename="0001-Merge-schema.sql-into-Django-s-model.patch" Content-Transfer-Encoding: base64 RnJvbSBkMzBmODQ5N2U0ZmY4NGIxZjRhYzQ4YTUyNGU4OThiMDg1Y2ZmZjE3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Qz1DMz1BOWxlc3Rpbj0yME1hdHRl Pz0gPGdpdGxhYkBjbWF0dGUubWU+CkRhdGU6IFRodSwgMyBGZWIgMjAyMiAxNDoyMjozNSAr MDEwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSBNZXJnZSBzY2hlbWEuc3FsIGludG8gRGphbmdv J3MgbW9kZWwKCk1vdmUgc2NoZW1hLnNxbCBjb250ZW50IGludG8gbW9kZWxzLnB5LiBEZWxl dGUgc2NoZW1hLnNxbC4KQWRkcyBzcGVjaWZpYyBwb3N0Z3JlcyBjb21wb25lbnRzIHRoYXQg Y2Fubm90IGJlIGhhbmRsZWQgYnkgRGphbmdvJ3MgT1JNCnVzaW5nIFJ1blNRTCgpIGluIGEg bWlncmF0aW9uIGZpbGUuCkluIHRoZSBwcm9jZXNzLCBhbGxvdyBtZXNzYWdlLnBhcmVudGlk IHRvIGJlIG51bGwuCi0tLQogLi4uL21pZ3JhdGlvbnMvMDAwNV9tZXJnZV9zY2hlbWEucHkg ICAgICAgICAgIHwgMTYyICsrKysrKysrKysrKysrKysrKwogZGphbmdvL2FyY2hpdmVzL21h aWxhcmNoaXZlcy9tb2RlbHMucHkgICAgICAgIHwgIDU5ICsrKysrKy0KIGxvYWRlci9zcWwv c2NoZW1hLnNxbCAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2MCAtLS0tLS0tLS0tLS0t LS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyMTggaW5zZXJ0aW9ucygrKSwgMTYzIGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRqYW5nby9hcmNoaXZlcy9tYWlsYXJjaGl2ZXMv bWlncmF0aW9ucy8wMDA1X21lcmdlX3NjaGVtYS5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IGxv YWRlci9zcWwvc2NoZW1hLnNxbAoKZGlmZiAtLWdpdCBhL2RqYW5nby9hcmNoaXZlcy9tYWls YXJjaGl2ZXMvbWlncmF0aW9ucy8wMDA1X21lcmdlX3NjaGVtYS5weSBiL2RqYW5nby9hcmNo aXZlcy9tYWlsYXJjaGl2ZXMvbWlncmF0aW9ucy8wMDA1X21lcmdlX3NjaGVtYS5weQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWNlMzFmCi0tLSAvZGV2L251bGwK KysrIGIvZGphbmdvL2FyY2hpdmVzL21haWxhcmNoaXZlcy9taWdyYXRpb25zLzAwMDVfbWVy Z2Vfc2NoZW1hLnB5CkBAIC0wLDAgKzEsMTYyIEBACitmcm9tIGRqYW5nby5kYiBpbXBvcnQg bWlncmF0aW9ucywgbW9kZWxzCitpbXBvcnQgZGphbmdvLmRiLm1vZGVscy5kZWxldGlvbgor CisKK2NsYXNzIE1pZ3JhdGlvbihtaWdyYXRpb25zLk1pZ3JhdGlvbik6CisKKyAgICBkZXBl bmRlbmNpZXMgPSBbCisgICAgICAgICgnbWFpbGFyY2hpdmVzJywgJzAwMDRfcmVzZW5kX3Jh dGVfbGltaXQnKSwKKyAgICBdCisKKyAgICBvcGVyYXRpb25zID0gWworICAgICAgICBtaWdy YXRpb25zLkFsdGVyRmllbGQoCisgICAgICAgICAgICBtb2RlbF9uYW1lPSdtZXNzYWdlJywK KyAgICAgICAgICAgIG5hbWU9J3BhcmVudGlkJywKKyAgICAgICAgICAgIGZpZWxkPW1vZGVs cy5Gb3JlaWduS2V5KGRiX2NvbHVtbj0ncGFyZW50aWQnLCBvbl9kZWxldGU9ZGphbmdvLmRi Lm1vZGVscy5kZWxldGlvbi5DQVNDQURFLCB0bz0nbWFpbGFyY2hpdmVzLk1lc3NhZ2UnLCBu dWxsPVRydWUpLAorICAgICAgICApLAorICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAor ICAgICAgICAgICAgbW9kZWxfbmFtZT0nbWVzc2FnZScsCisgICAgICAgICAgICBuYW1lPSdy YXd0eHQnLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkJpbmFyeUZpZWxkKGJsYW5rPVRy dWUsIG51bGw9RmFsc2UpLAorICAgICAgICApLAorICAgICAgICBtaWdyYXRpb25zLkFkZEZp ZWxkKAorICAgICAgICAgICAgbW9kZWxfbmFtZT0nYXR0YWNobWVudCcsCisgICAgICAgICAg ICBuYW1lPSdhdHRhY2htZW50JywKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5CaW5hcnlG aWVsZChibGFuaz1UcnVlLCBudWxsPUZhbHNlKSwKKyAgICAgICAgKSwKKyAgICAgICAgbWln cmF0aW9ucy5DcmVhdGVNb2RlbCgKKyAgICAgICAgICAgIG5hbWU9J0xvYWRlcnJvcnMnLAor ICAgICAgICAgICAgZmllbGRzPVsKKyAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1 dG9GaWVsZChhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXpl PUZhbHNlLCB2ZXJib3NlX25hbWU9J0lEJykpLAorICAgICAgICAgICAgICAgICgnZGF0Jywg bW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3dfYWRkPVRydWUpKSwKKyAgICAgICAgICAg ICAgICAoJ21zZ2lkJywgbW9kZWxzLlRleHRGaWVsZCgpKSwKKyAgICAgICAgICAgICAgICAo J3NyY3R5cGUnLCBtb2RlbHMuVGV4dEZpZWxkKCkpLAorICAgICAgICAgICAgICAgICgnc3Jj JywgbW9kZWxzLlRleHRGaWVsZCgpKSwKKyAgICAgICAgICAgICAgICAoJ2VycicsIG1vZGVs cy5UZXh0RmllbGQoKSksCisgICAgICAgICAgICAgICAgKCdsaXN0aWQnLCBtb2RlbHMuRm9y ZWlnbktleShkYl9jb2x1bW49J2xpc3RpZCcsIG9uX2RlbGV0ZT1kamFuZ28uZGIubW9kZWxz LmRlbGV0aW9uLkNBU0NBREUsIHRvPSdtYWlsYXJjaGl2ZXMuTGlzdCcpKSwKKyAgICAgICAg ICAgIF0sCisgICAgICAgICAgICBvcHRpb25zPXsKKyAgICAgICAgICAgICAgICAnZGJfdGFi bGUnOiAnbG9hZGVycm9ycycsCisgICAgICAgICAgICB9LAorICAgICAgICApLAorICAgICAg ICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKAorICAgICAgICAgICAgbmFtZT0nVW5yZXNvbHZl ZE1lc3NhZ2VzJywKKyAgICAgICAgICAgIGZpZWxkcz1bCisgICAgICAgICAgICAgICAgKCdp ZCcsIG1vZGVscy5BdXRvRmllbGQoYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRy dWUsIHNlcmlhbGl6ZT1GYWxzZSwgdmVyYm9zZV9uYW1lPSdJRCcpKSwKKyAgICAgICAgICAg ICAgICAoJ3ByaW9yaXR5JywgbW9kZWxzLkludGVnZXJGaWVsZCgpKSwKKyAgICAgICAgICAg ICAgICAoJ21zZ2lkJywgbW9kZWxzLlRleHRGaWVsZCgpKSwKKyAgICAgICAgICAgICAgICAo J21lc3NhZ2UnLCBtb2RlbHMuRm9yZWlnbktleShkYl9jb2x1bW49J21lc3NhZ2UnLCBvbl9k ZWxldGU9ZGphbmdvLmRiLm1vZGVscy5kZWxldGlvbi5DQVNDQURFLCB0bz0nbWFpbGFyY2hp dmVzLk1lc3NhZ2UnKSksCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgb3B0aW9ucz17 CisgICAgICAgICAgICAgICAgJ2RiX3RhYmxlJzogJ3VucmVzb2x2ZWRfbWVzc2FnZXMnLAor ICAgICAgICAgICAgICAgICd1bmlxdWVfdG9nZXRoZXInOiB7KCdtZXNzYWdlJywgJ3ByaW9y aXR5JywgJ21zZ2lkJyl9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgKSwKKyAgICAgICAg bWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKKyAgICAgICAgICAgIG5hbWU9J0xpc3RUaHJlYWRz JywKKyAgICAgICAgICAgIGZpZWxkcz1bCisgICAgICAgICAgICAgICAgKCd0aHJlYWRpZCcs IG1vZGVscy5JbnRlZ2VyRmllbGQocHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXplPUZhbHNl KSksCisgICAgICAgICAgICAgICAgKCdsaXN0aWQnLCBtb2RlbHMuRm9yZWlnbktleShkYl9j b2x1bW49J2xpc3RpZCcsIG9uX2RlbGV0ZT1kamFuZ28uZGIubW9kZWxzLmRlbGV0aW9uLkNB U0NBREUsIHRvPSdtYWlsYXJjaGl2ZXMuTGlzdCcpKSwKKyAgICAgICAgICAgIF0sCisgICAg ICAgICAgICBvcHRpb25zPXsKKyAgICAgICAgICAgICAgICAnZGJfdGFibGUnOiAnbGlzdF90 aHJlYWRzJywKKyAgICAgICAgICAgICAgICAndW5pcXVlX3RvZ2V0aGVyJzogeygndGhyZWFk aWQnLCAnbGlzdGlkJyl9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgKSwKKyAgICAgICAg bWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKKyAgICAgICAgICAgIG5hbWU9J0xpc3RNb250aHMn LAorICAgICAgICAgICAgZmllbGRzPVsKKyAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxz LkF1dG9GaWVsZChhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFs aXplPUZhbHNlLCB2ZXJib3NlX25hbWU9J0lEJykpLAorICAgICAgICAgICAgICAgICgneWVh cicsIG1vZGVscy5JbnRlZ2VyRmllbGQoKSksCisgICAgICAgICAgICAgICAgKCdtb250aCcs IG1vZGVscy5JbnRlZ2VyRmllbGQoKSksCisgICAgICAgICAgICAgICAgKCdsaXN0aWQnLCBt b2RlbHMuRm9yZWlnbktleShkYl9jb2x1bW49J2xpc3RpZCcsIG9uX2RlbGV0ZT1kamFuZ28u ZGIubW9kZWxzLmRlbGV0aW9uLkNBU0NBREUsIHRvPSdtYWlsYXJjaGl2ZXMuTGlzdCcpKSwK KyAgICAgICAgICAgIF0sCisgICAgICAgICAgICBvcHRpb25zPXsKKyAgICAgICAgICAgICAg ICAnZGJfdGFibGUnOiAnbGlzdF9tb250aHMnLAorICAgICAgICAgICAgICAgICd1bmlxdWVf dG9nZXRoZXInOiB7KCdsaXN0aWQnLCAneWVhcicsICdtb250aCcpfSwKKyAgICAgICAgICAg IH0sCisgICAgICAgICksCisgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCisgICAg ICAgICAgICBuYW1lPSdMZWdhY3ltYXAnLAorICAgICAgICAgICAgZmllbGRzPVsKKyAgICAg ICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZChhdXRvX2NyZWF0ZWQ9VHJ1ZSwg cHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXplPUZhbHNlLCB2ZXJib3NlX25hbWU9J0lEJykp LAorICAgICAgICAgICAgICAgICgneWVhcicsIG1vZGVscy5JbnRlZ2VyRmllbGQoKSksCisg ICAgICAgICAgICAgICAgKCdtb250aCcsIG1vZGVscy5JbnRlZ2VyRmllbGQoKSksCisgICAg ICAgICAgICAgICAgKCdtc2dudW0nLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAorICAgICAg ICAgICAgICAgICgnbXNnaWQnLCBtb2RlbHMuVGV4dEZpZWxkKCkpLAorICAgICAgICAgICAg ICAgICgnbGlzdGlkJywgbW9kZWxzLkZvcmVpZ25LZXkoZGJfY29sdW1uPSdsaXN0aWQnLCBv bl9kZWxldGU9ZGphbmdvLmRiLm1vZGVscy5kZWxldGlvbi5DQVNDQURFLCB0bz0nbWFpbGFy Y2hpdmVzLkxpc3QnKSksCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgb3B0aW9ucz17 CisgICAgICAgICAgICAgICAgJ2RiX3RhYmxlJzogJ2xlZ2FjeW1hcCcsCisgICAgICAgICAg ICAgICAgJ3VuaXF1ZV90b2dldGhlcic6IHsoJ2xpc3RpZCcsICd5ZWFyJywgJ21vbnRoJywg J21zZ251bScpfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICksCisgICAgICAgIG1pZ3Jh dGlvbnMuUnVuU1FMKCJBTFRFUiBUQUJMRSBtZXNzYWdlcyBBREQgQ09MVU1OIGZ0aSB0c3Zl Y3RvciBOT1QgTlVMTCIpLAorICAgICAgICBtaWdyYXRpb25zLlJ1blNRTCgiQ1JFQVRFIElO REVYIGlkeF9tZXNzYWdlc190aHJlYWRpZCBPTiBtZXNzYWdlcyh0aHJlYWRpZCk7IiksCisg ICAgICAgIG1pZ3JhdGlvbnMuUnVuU1FMKCJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF9tZXNz YWdlc19tc2dpZCBPTiBtZXNzYWdlcyhtZXNzYWdlaWQpOyIpLAorICAgICAgICBtaWdyYXRp b25zLlJ1blNRTCgiQ1JFQVRFIElOREVYIGlkeF9tZXNzYWdlc19kYXRlIE9OIG1lc3NhZ2Vz KGRhdGUpOyIpLAorICAgICAgICBtaWdyYXRpb25zLlJ1blNRTCgiQ1JFQVRFIElOREVYIGlk eF9tZXNzYWdlc19wYXJlbnRpZCBPTiBtZXNzYWdlcyhwYXJlbnRpZCk7IiksCisgICAgICAg IG1pZ3JhdGlvbnMuUnVuU1FMKCJDUkVBVEUgU0VRVUVOQ0UgdGhyZWFkaWRfc2VxOyIpLAor ICAgICAgICBtaWdyYXRpb25zLlJ1blNRTCgiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdW5y ZXNvbHZlZF9tc2dpZF9tZXNzYWdlIE9OIHVucmVzb2x2ZWRfbWVzc2FnZXMobXNnaWQsIG1l c3NhZ2UpOyIpLAorICAgICAgICBtaWdyYXRpb25zLlJ1blNRTCgiQ1JFQVRFIElOREVYIGxp c3RfdGhyZWFkc19saXN0aWRfaWR4IE9OIGxpc3RfdGhyZWFkcyhsaXN0aWQpOyIpLAorICAg ICAgICBtaWdyYXRpb25zLlJ1blNRTCgiQ1JFQVRFIElOREVYIGlkeF9hdHRhY2htZW50c19t c2cgT04gYXR0YWNobWVudHMobWVzc2FnZSk7IiksCisgICAgICAgIG1pZ3JhdGlvbnMuUnVu U1FMKCIiIgorQ1JFQVRFIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gcGcgKFBBUlNFUj10 c3BhcnNlcik7CisKK0NSRUFURSBURVhUIFNFQVJDSCBESUNUSU9OQVJZIGVuZ2xpc2hfaXNw ZWxsICgKKyAgIFRFTVBMQVRFID0gaXNwZWxsLAorICAgRGljdEZpbGUgPSBlbl91cywKKyAg IEFmZkZpbGUgPSBlbl91cywKKyAgIFN0b3BXb3JkcyA9IGVuZ2xpc2gKKyk7CitDUkVBVEUg VEVYVCBTRUFSQ0ggRElDVElPTkFSWSBwZ19kaWN0ICgKKyAgIFRFTVBMQVRFID0gc3lub255 bSwKKyAgIFNZTk9OWU1TID0gcGdfZGljdAorKTsKK0NSRUFURSBURVhUIFNFQVJDSCBESUNU SU9OQVJZIHBnX3N0b3AgKAorICAgVEVNUExBVEUgPSBzaW1wbGUsCisgICBTdG9wV29yZHMg PSBwZ19kaWN0CispOworQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiBwZworICAg QUxURVIgTUFQUElORyBGT1IgYXNjaWl3b3JkLCBhc2NpaWh3b3JkLCBod29yZF9hc2NpaXBh cnQsCisgICAgICAgICAgICAgICAgICAgICB3b3JkLCBod29yZCwgaHdvcmRfcGFydAorICAg IFdJVEggcGdfc3RvcCwgcGdfZGljdCwgZW5nbGlzaF9pc3BlbGwsIGVuZ2xpc2hfc3RlbTsK K0FMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gcGcKKyAgIERST1AgTUFQUElORyBG T1IgZW1haWwsIHVybCwgdXJsX3BhdGgsIHNmbG9hdCwgZmxvYXQ7CisKK0NSRUFURSBGVU5D VElPTiBtZXNzYWdlc19mdGlfdHJpZ2dlcl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQk CitCRUdJTgorICAgTkVXLmZ0aSA9IHNldHdlaWdodCh0b190c3ZlY3RvcigncHVibGljLnBn JywgY29hbGVzY2UobmV3LnN1YmplY3QsICcnKSksICdBJykgfHwKKyAgICAgICAgICAgICBz ZXR3ZWlnaHQodG9fdHN2ZWN0b3IoJ3B1YmxpYy5wZycsIGNvYWxlc2NlKG5ldy5ib2R5dHh0 LCAnJykpLCAnRCcpOworICAgUkVUVVJOIE5FVzsKK0VORAorCiskJCBMQU5HVUFHRSAncGxw Z3NxbCc7CisKK0NSRUFURSBUUklHR0VSIG1lc3NhZ2VzX2Z0aV90cmlnZ2VyCisgQkVGT1JF IElOU0VSVCBPUiBVUERBVEUgT0Ygc3ViamVjdCwgYm9keXR4dCBPTiAgbWVzc2FnZXMKKyBG T1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgbWVzc2FnZXNfZnRpX3RyaWdnZXJfZnVu YygpOworQ1JFQVRFIElOREVYIG1lc3NhZ2VzX2Z0aV9pZHggT04gbWVzc2FnZXMgVVNJTkcg Z2luKGZ0aSk7CisKKy8qIFNpbXBsZSBBUEkgZm9yIGhpZGluZyBtZXNzYWdlcyAqLworQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaGlkZV9tZXNzYWdlKG1zZ2lkX3R4dCB0ZXh0LCBy ZWFzb25fY29kZSBpbnRlZ2VyLCB1c2VyX3R4dCB0ZXh0LCByZWFzb25fdHh0IHRleHQpCisg IFJFVFVSTlMgaW50ZWdlciBBUworJEJPRFkkCitERUNMQVJFCisgICAgcmV0dXJuZWRfaWQg aW50ZWdlcjsKK0JFR0lOCisgICAgVVBEQVRFIG1lc3NhZ2VzIFNFVCBoaWRkZW5zdGF0dXMg PSByZWFzb25fY29kZSBXSEVSRSBtZXNzYWdlaWQgPSBtc2dpZF90eHQgUkVUVVJOSU5HIGlk IElOVE8gcmV0dXJuZWRfaWQ7CisKKyAgICBJRiBOT1QgRk9VTkQgVEhFTgorICAgICAgICBS QUlTRSBFWENFUFRJT04gJ1RoZSBzcGVjaWZpZWQgbWVzc2FnZSAoJSkgY291bGQgbm90IGJl IGZvdW5kLicsIG1zZ2lkX3R4dDsKKyAgICBFTkQgSUY7CisKKyAgICBJTlNFUlQgSU5UTyBt ZXNzYWdlX2hpZGVfcmVhc29ucyAobWVzc2FnZSwgZHQsIHJlYXNvbiwgYnkpIFZBTFVFUyAo cmV0dXJuZWRfaWQsIG5vdygpLCByZWFzb25fdHh0LCB1c2VyX3R4dCk7CisKKyAgICBSRVRV Uk4gcmV0dXJuZWRfaWQ7CitFTkQ7CiskQk9EWSQKKyAgTEFOR1VBR0UgcGxwZ3NxbCBWT0xB VElMRQorICBDT1NUIDEwMDsKKyIiIikKKyAgICBdCmRpZmYgLS1naXQgYS9kamFuZ28vYXJj aGl2ZXMvbWFpbGFyY2hpdmVzL21vZGVscy5weSBiL2RqYW5nby9hcmNoaXZlcy9tYWlsYXJj aGl2ZXMvbW9kZWxzLnB5CmluZGV4IDQ0YzQ0NjkuLjZjN2VkNDEgMTAwNjQ0Ci0tLSBhL2Rq YW5nby9hcmNoaXZlcy9tYWlsYXJjaGl2ZXMvbW9kZWxzLnB5CisrKyBiL2RqYW5nby9hcmNo aXZlcy9tYWlsYXJjaGl2ZXMvbW9kZWxzLnB5CkBAIC0yNCw4ICsyNCw4IEBAIGNsYXNzIE1l c3NhZ2UobW9kZWxzLk1vZGVsKToKICAgICBkYXRlID0gbW9kZWxzLkRhdGVUaW1lRmllbGQo bnVsbD1GYWxzZSkKICAgICBtZXNzYWdlaWQgPSBtb2RlbHMuVGV4dEZpZWxkKG51bGw9RmFs c2UpCiAgICAgYm9keXR4dCA9IG1vZGVscy5UZXh0RmllbGQobnVsbD1GYWxzZSkKLSAgICAj IHJhd3R4dCBpcyBhIGJ5dGVhIGZpZWxkLCB3aGljaCBkamFuZ28gZG9lc24ndCBzdXBwb3J0 IChlYXNpbHkpCi0gICAgcGFyZW50aWQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9RmFs c2UsIGJsYW5rPUZhbHNlKQorICAgIHJhd3R4dCA9IG1vZGVscy5CaW5hcnlGaWVsZChudWxs PVRydWUpCisgICAgcGFyZW50aWQgPSBtb2RlbHMuRm9yZWlnbktleSgic2VsZiIsIG9uX2Rl bGV0ZT1tb2RlbHMuQ0FTQ0FERSwgZGJfY29sdW1uPSdwYXJlbnRpZCcsIG51bGw9VHJ1ZSkK ICAgICBoYXNfYXR0YWNobWVudCA9IG1vZGVscy5Cb29sZWFuRmllbGQobnVsbD1GYWxzZSwg ZGVmYXVsdD1GYWxzZSkKICAgICBoaWRkZW5zdGF0dXMgPSBtb2RlbHMuSW50ZWdlckZpZWxk KG51bGw9VHJ1ZSkKICAgICAjIGZ0aSBpcyBhIHRzdmVjdG9yIGZpZWxkLCB3aGljaCBkamFu Z28gZG9lc24ndCBzdXBwb3J0IChlYXNpbHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgY2xhc3Mg QXR0YWNobWVudChtb2RlbHMuTW9kZWwpOgogICAgIG1lc3NhZ2UgPSBtb2RlbHMuRm9yZWln bktleShNZXNzYWdlLCBudWxsPUZhbHNlLCBibGFuaz1GYWxzZSwgZGJfY29sdW1uPSdtZXNz YWdlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIGZpbGVuYW1lID0gbW9kZWxz LkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMDAsIG51bGw9RmFsc2UsIGJsYW5rPUZhbHNlKQog ICAgIGNvbnRlbnR0eXBlID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMDAsIG51 bGw9RmFsc2UsIGJsYW5rPUZhbHNlKQotICAgICMgYXR0YWNobWVudCA9IGJ5dGVhLCBub3Qg c3VwcG9ydGVkIGJ5IGRqYW5nbyBhdCB0aGlzIHBvaW50CisgICAgYXR0YWNobWVudCA9IG1v ZGVscy5CaW5hcnlGaWVsZChudWxsPVRydWUpCiAKICAgICBjbGFzcyBNZXRhOgogICAgICAg ICBkYl90YWJsZSA9ICdhdHRhY2htZW50cycKQEAgLTE0MSwzICsxNDEsNTYgQEAgY2xhc3Mg UmVzZW5kTWVzc2FnZShtb2RlbHMuTW9kZWwpOgogY2xhc3MgTGFzdFJlc2VudE1lc3NhZ2Uo bW9kZWxzLk1vZGVsKToKICAgICBzZW50dG8gPSBtb2RlbHMuT25lVG9PbmVGaWVsZChVc2Vy LCBudWxsPUZhbHNlLCBibGFuaz1GYWxzZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgb25fZGVsZXRl PW1vZGVscy5DQVNDQURFKQogICAgIHNlbnRhdCA9IG1vZGVscy5EYXRlVGltZUZpZWxkKG51 bGw9RmFsc2UsIGJsYW5rPUZhbHNlKQorCisKK2NsYXNzIFVucmVzb2x2ZWRNZXNzYWdlcyht b2RlbHMuTW9kZWwpOgorICAgIG1lc3NhZ2UgPSBtb2RlbHMuRm9yZWlnbktleShNZXNzYWdl LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCisgICAgcHJpb3JpdHkgPSBtb2RlbHMuSW50 ZWdlckZpZWxkKG51bGw9RmFsc2UsIGJsYW5rPUZhbHNlKQorICAgIG1zZ2lkID0gbW9kZWxz LlRleHRGaWVsZChudWxsPUZhbHNlKQorCisgICAgY2xhc3MgTWV0YToKKyAgICAgICAgZGJf dGFibGUgPSAndW5yZXNvbHZlZF9tZXNzYWdlcycKKyAgICAgICAgdW5pcXVlX3RvZ2V0aGVy ID0gKCgnbWVzc2FnZScsICdwcmlvcml0eScsICdtc2dpZCcpLCkKKworCitjbGFzcyBMaXN0 TW9udGhzKG1vZGVscy5Nb2RlbCk6CisgICAgbGlzdGlkID0gbW9kZWxzLkZvcmVpZ25LZXko J0xpc3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIGRiX2NvbHVtbj0nbGlzdGlkJykK KyAgICB5ZWFyID0gbW9kZWxzLkludGVnZXJGaWVsZChudWxsPUZhbHNlKQorICAgIG1vbnRo ID0gbW9kZWxzLkludGVnZXJGaWVsZChudWxsPUZhbHNlKQorCisgICAgY2xhc3MgTWV0YToK KyAgICAgICAgZGJfdGFibGUgPSAnbGlzdF9tb250aHMnCisgICAgICAgIHVuaXF1ZV90b2dl dGhlciA9ICgoJ2xpc3RpZCcsICd5ZWFyJywgJ21vbnRoJyksKQorCisKK2NsYXNzIExpc3RU aHJlYWRzKG1vZGVscy5Nb2RlbCk6CisgICAgdGhyZWFkaWQgPSBtb2RlbHMuSW50ZWdlckZp ZWxkKHByaW1hcnlfa2V5PVRydWUpCisgICAgbGlzdGlkID0gbW9kZWxzLkZvcmVpZ25LZXko J0xpc3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIGRiX2NvbHVtbj0nbGlzdGlkJykK KworICAgIGNsYXNzIE1ldGE6CisgICAgICAgIGRiX3RhYmxlID0gJ2xpc3RfdGhyZWFkcycK KyAgICAgICAgdW5pcXVlX3RvZ2V0aGVyID0gKCgndGhyZWFkaWQnLCAnbGlzdGlkJyksKQor CisKK2NsYXNzIExvYWRlcnJvcnMobW9kZWxzLk1vZGVsKToKKyAgICBsaXN0aWQgPSBtb2Rl bHMuRm9yZWlnbktleShMaXN0LCBudWxsPUZhbHNlLCBibGFuaz1GYWxzZSwgb25fZGVsZXRl PW1vZGVscy5DQVNDQURFLCBkYl9jb2x1bW49J2xpc3RpZCcpCisgICAgZGF0ID0gbW9kZWxz LkRhdGVUaW1lRmllbGQobnVsbD1GYWxzZSwgYXV0b19ub3dfYWRkPVRydWUpCisgICAgbXNn aWQgPSBtb2RlbHMuVGV4dEZpZWxkKG51bGw9RmFsc2UpCisgICAgc3JjdHlwZSA9IG1vZGVs cy5UZXh0RmllbGQobnVsbD1GYWxzZSkKKyAgICBzcmMgPSBtb2RlbHMuVGV4dEZpZWxkKG51 bGw9RmFsc2UpCisgICAgZXJyID0gbW9kZWxzLlRleHRGaWVsZChudWxsPUZhbHNlKQorCisg ICAgY2xhc3MgTWV0YToKKyAgICAgICAgZGJfdGFibGUgPSAnbG9hZGVycm9ycycKKworCitj bGFzcyBMZWdhY3ltYXAobW9kZWxzLk1vZGVsKToKKyAgICBsaXN0aWQgPSBtb2RlbHMuRm9y ZWlnbktleShMaXN0LCBudWxsPUZhbHNlLCBibGFuaz1GYWxzZSwgb25fZGVsZXRlPW1vZGVs cy5DQVNDQURFLCBkYl9jb2x1bW49J2xpc3RpZCcpCisgICAgeWVhciA9IG1vZGVscy5JbnRl Z2VyRmllbGQobnVsbD1GYWxzZSkKKyAgICBtb250aCA9IG1vZGVscy5JbnRlZ2VyRmllbGQo bnVsbD1GYWxzZSkKKyAgICBtc2dudW0gPSBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9RmFs c2UpCisgICAgbXNnaWQgPSBtb2RlbHMuVGV4dEZpZWxkKG51bGw9RmFsc2UpCisKKyAgICBj bGFzcyBNZXRhOgorICAgICAgICBkYl90YWJsZSA9ICdsZWdhY3ltYXAnCisgICAgICAgIHVu aXF1ZV90b2dldGhlciA9ICgoJ2xpc3RpZCcsICd5ZWFyJywgJ21vbnRoJywgJ21zZ251bScp LCkKZGlmZiAtLWdpdCBhL2xvYWRlci9zcWwvc2NoZW1hLnNxbCBiL2xvYWRlci9zcWwvc2No ZW1hLnNxbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU3MzVkOS4uMDAwMDAw MAotLS0gYS9sb2FkZXIvc3FsL3NjaGVtYS5zcWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAg KzAsMCBAQAotXHNldCBPTl9FUlJPUl9TVE9QIG9uCi0KLUJFR0lOOwotCi1DUkVBVEUgVEFC TEUgbWVzc2FnZXMgKAotICAgaWQgU0VSSUFMIE5PVCBOVUxMIFBSSU1BUlkgS0VZLAotICAg cGFyZW50aWQgaW50IFJFRkVSRU5DRVMgbWVzc2FnZXMsCi0gICB0aHJlYWRpZCBpbnQgTk9U IE5VTEwsCi0gICBfZnJvbSB0ZXh0IE5PVCBOVUxMLAotICAgX3RvIHRleHQgTk9UIE5VTEws Ci0gICBjYyB0ZXh0IE5PVCBOVUxMLAotICAgc3ViamVjdCB0ZXh0IE5PVCBOVUxMLAotICAg ZGF0ZSB0aW1lc3RhbXB0eiBOT1QgTlVMTCwKLSAgIGxvYWRkYXRlIHRpbWVzdGFtcHR6IE5P VCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsCi0gICBoYXNfYXR0YWNobWVudCBi b29sZWFuIE5PVCBOVUxMLAotICAgaGlkZGVuc3RhdHVzIGludCBOVUxMLAotICAgbWVzc2Fn ZWlkIHRleHQgTk9UIE5VTEwsCi0gICBib2R5dHh0IHRleHQgTk9UIE5VTEwsCi0gICByYXd0 eHQgYnl0ZWEgTk9UIE5VTEwsCi0gICBmdGkgdHN2ZWN0b3IgTk9UIE5VTEwKLSk7Ci1DUkVB VEUgSU5ERVggaWR4X21lc3NhZ2VzX3RocmVhZGlkIE9OIG1lc3NhZ2VzKHRocmVhZGlkKTsK LUNSRUFURSBVTklRVUUgSU5ERVggaWR4X21lc3NhZ2VzX21zZ2lkIE9OIG1lc3NhZ2VzKG1l c3NhZ2VpZCk7Ci1DUkVBVEUgSU5ERVggaWR4X21lc3NhZ2VzX2RhdGUgT04gbWVzc2FnZXMo ZGF0ZSk7Ci1DUkVBVEUgSU5ERVggaWR4X21lc3NhZ2VzX3BhcmVudGlkIE9OIG1lc3NhZ2Vz KHBhcmVudGlkKTsKLQotQ1JFQVRFIFRBQkxFIG1lc3NhZ2VfaGlkZV9yZWFzb25zICgKLSAg IG1lc3NhZ2UgaW50IE5PVCBOVUxMIFBSSU1BUlkgS0VZIFJFRkVSRU5DRVMgbWVzc2FnZXMs Ci0gICBkdCB0aW1lc3RhbXB0eiwKLSAgIHJlYXNvbiB0ZXh0LAotICAgYnkgdGV4dAotKTsK LQotQ1JFQVRFIFNFUVVFTkNFIHRocmVhZGlkX3NlcTsKLQotQ1JFQVRFIFRBQkxFIHVucmVz b2x2ZWRfbWVzc2FnZXMoCi0gICBtZXNzYWdlIGludCBOT1QgTlVMTCBSRUZFUkVOQ0VTIG1l c3NhZ2VzLAotICAgcHJpb3JpdHkgaW50IE5PVCBOVUxMLAotICAgbXNnaWQgdGV4dCBOT1Qg TlVMTCwKLSAgIENPTlNUUkFJTlQgdW5yZXNvbHZlZF9tZXNzYWdlc19wa2V5IFBSSU1BUlkg S0VZIChtZXNzYWdlLCBwcmlvcml0eSkKLSk7Ci0KLUNSRUFURSBVTklRVUUgSU5ERVggaWR4 X3VucmVzb2x2ZWRfbXNnaWRfbWVzc2FnZSBPTiB1bnJlc29sdmVkX21lc3NhZ2VzKG1zZ2lk LCBtZXNzYWdlKTsKLQotQ1JFQVRFIFRBQkxFIGxpc3Rncm91cHMoCi0gICBncm91cGlkIGlu dCBOT1QgTlVMTCBQUklNQVJZIEtFWSwKLSAgIGdyb3VwbmFtZSB0ZXh0IE5PVCBOVUxMIFVO SVFVRSwKLSAgIHNvcnRrZXkgaW50IE5PVCBOVUxMCi0pOwotCi1DUkVBVEUgVEFCTEUgbGlz dHMoCi0gICBsaXN0aWQgaW50IE5PVCBOVUxMIFBSSU1BUlkgS0VZLAotICAgbGlzdG5hbWUg dGV4dCBOT1QgTlVMTCBVTklRVUUsCi0gICBzaG9ydGRlc2MgdGV4dCBOT1QgTlVMTCwKLSAg IGRlc2NyaXB0aW9uIHRleHQgTk9UIE5VTEwsCi0gICBhY3RpdmUgYm9vbGVhbiBOT1QgTlVM TCwKLSAgIGdyb3VwaWQgaW50IE5PVCBOVUxMIFJFRkVSRU5DRVMgbGlzdGdyb3Vwcyhncm91 cGlkKQotKTsKLQotQ1JFQVRFIFRBQkxFIGxpc3RfbW9udGhzKAotICAgbGlzdGlkIGludCBO T1QgTlVMTCBSRUZFUkVOQ0VTIGxpc3RzKGxpc3RpZCksCi0gICB5ZWFyIGludCBOT1QgTlVM TCwKLSAgIG1vbnRoIGludCBOT1QgTlVMTCwKLSAgIENPTlNUUkFJTlQgbGlzdF9tb250aHNf cGsgUFJJTUFSWSBLRVkgKGxpc3RpZCwgeWVhciwgbW9udGgpCi0pOwotCi1DUkVBVEUgVEFC TEUgbGlzdF90aHJlYWRzKAotICAgdGhyZWFkaWQgaW50IE5PVCBOVUxMLCAvKiBjb21lcyBm cm9tIHRocmVhZGlkX3NlcSAqLwotICAgbGlzdGlkIGludCBOT1QgTlVMTCBSRUZFUkVOQ0VT IGxpc3RzKGxpc3RpZCksCi0gICBDT05TVFJBSU5UIHBnX2xpc3RfdGhyZWFkcyBQUklNQVJZ IEtFWSAodGhyZWFkaWQsIGxpc3RpZCkKLSk7Ci1DUkVBVEUgSU5ERVggbGlzdF90aHJlYWRz X2xpc3RpZF9pZHggT04gbGlzdF90aHJlYWRzKGxpc3RpZCk7Ci0KLUNSRUFURSBUQUJMRSBh dHRhY2htZW50cygKLSAgIGlkIHNlcmlhbCBub3QgbnVsbCBwcmltYXJ5IGtleSwKLSAgIG1l c3NhZ2UgaW50IG5vdCBudWxsIHJlZmVyZW5jZXMgbWVzc2FnZXMoaWQpLAotICAgZmlsZW5h bWUgdGV4dCBub3QgbnVsbCwKLSAgIGNvbnRlbnR0eXBlIHRleHQgbm90IG51bGwsCi0gICBh dHRhY2htZW50IGJ5dGVhIG5vdCBudWxsCi0pOwotQ1JFQVRFIElOREVYIGlkeF9hdHRhY2ht ZW50c19tc2cgT04gYXR0YWNobWVudHMobWVzc2FnZSk7Ci0KLUNSRUFURSBUQUJMRSBsb2Fk ZXJyb3JzKAotICAgaWQgU0VSSUFMIE5PVCBOVUxMIFBSSU1BUlkgS0VZLAotICAgbGlzdGlk IGludCBOT1QgTlVMTCwKLSAgIGRhdCB0aW1lc3RhbXB0eiBOT1QgTlVMTCBERUZBVUxUIENV UlJFTlRfVElNRVNUQU1QLAotICAgbXNnaWQgdGV4dCBOT1QgTlVMTCwKLSAgIHNyY3R5cGUg dGV4dCBOT1QgTlVMTCwKLSAgIHNyYyB0ZXh0IE5PVCBOVUxMLAotICAgZXJyIHRleHQgTk9U IE5VTEwKLSk7Ci0KLS8qIHRleHRzZWFyY2ggY29uZmlncyAqLwotQ1JFQVRFIFRFWFQgU0VB UkNIIENPTkZJR1VSQVRJT04gcGcgKFBBUlNFUj10c3BhcnNlcik7Ci0KLUNSRUFURSBURVhU IFNFQVJDSCBESUNUSU9OQVJZIGVuZ2xpc2hfaXNwZWxsICgKLSAgIFRFTVBMQVRFID0gaXNw ZWxsLAotICAgRGljdEZpbGUgPSBlbl91cywKLSAgIEFmZkZpbGUgPSBlbl91cywKLSAgIFN0 b3BXb3JkcyA9IGVuZ2xpc2gKLSk7Ci1DUkVBVEUgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSBw Z19kaWN0ICgKLSAgIFRFTVBMQVRFID0gc3lub255bSwKLSAgIFNZTk9OWU1TID0gcGdfZGlj dAotKTsKLUNSRUFURSBURVhUIFNFQVJDSCBESUNUSU9OQVJZIHBnX3N0b3AgKAotICAgVEVN UExBVEUgPSBzaW1wbGUsCi0gICBTdG9wV29yZHMgPSBwZ19kaWN0Ci0pOwotQUxURVIgVEVY VCBTRUFSQ0ggQ09ORklHVVJBVElPTiBwZwotICAgQUxURVIgTUFQUElORyBGT1IgYXNjaWl3 b3JkLCBhc2NpaWh3b3JkLCBod29yZF9hc2NpaXBhcnQsCi0gICAgICAgICAgICAgICAgICAg ICB3b3JkLCBod29yZCwgaHdvcmRfcGFydAotICAgIFdJVEggcGdfc3RvcCwgcGdfZGljdCwg ZW5nbGlzaF9pc3BlbGwsIGVuZ2xpc2hfc3RlbTsKLUFMVEVSIFRFWFQgU0VBUkNIIENPTkZJ R1VSQVRJT04gcGcKLSAgIERST1AgTUFQUElORyBGT1IgZW1haWwsIHVybCwgdXJsX3BhdGgs IHNmbG9hdCwgZmxvYXQ7Ci0KLUNSRUFURSBGVU5DVElPTiBtZXNzYWdlc19mdGlfdHJpZ2dl cl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCi1CRUdJTgotICAgTkVXLmZ0aSA9IHNl dHdlaWdodCh0b190c3ZlY3RvcigncHVibGljLnBnJywgY29hbGVzY2UobmV3LnN1YmplY3Qs ICcnKSksICdBJykgfHwKLSAgICAgICAgICAgICBzZXR3ZWlnaHQodG9fdHN2ZWN0b3IoJ3B1 YmxpYy5wZycsIGNvYWxlc2NlKG5ldy5ib2R5dHh0LCAnJykpLCAnRCcpOwotICAgUkVUVVJO IE5FVzsKLUVORAotJCQgTEFOR1VBR0UgJ3BscGdzcWwnOwotCi1DUkVBVEUgVFJJR0dFUiBt ZXNzYWdlc19mdGlfdHJpZ2dlcgotIEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9GIHN1Ympl Y3QsIGJvZHl0eHQgT04gIG1lc3NhZ2VzCi0gRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VE VVJFIG1lc3NhZ2VzX2Z0aV90cmlnZ2VyX2Z1bmMoKTsKLUNSRUFURSBJTkRFWCBtZXNzYWdl c19mdGlfaWR4IE9OIG1lc3NhZ2VzIFVTSU5HIGdpbihmdGkpOwotCi1DUkVBVEUgVEFCTEUg bGVnYWN5bWFwKAotICAgICAgIGxpc3RpZCBpbnQgbm90IG51bGwsCi0gICAgICAgeWVhciBp bnQgbm90IG51bGwsCi0gICAgICAgbW9udGggaW50IG5vdCBudWxsLAotICAgICAgIG1zZ251 bSBpbnQgbm90IG51bGwsCi0gICAgICAgbXNnaWQgdGV4dCBub3QgbnVsbCwKLUNPTlNUUkFJ TlQgbGVnYWN5bWFwX3BrIFBSSU1BUlkgS0VZIChsaXN0aWQsIHllYXIsIG1vbnRoLCBtc2du dW0pCi0pOwotCi0vKiBTaW1wbGUgQVBJIGZvciBoaWRpbmcgbWVzc2FnZXMgKi8KLUNSRUFU RSBPUiBSRVBMQUNFIEZVTkNUSU9OIGhpZGVfbWVzc2FnZShtc2dpZF90eHQgdGV4dCwgcmVh c29uX2NvZGUgaW50ZWdlciwgdXNlcl90eHQgdGV4dCwgcmVhc29uX3R4dCB0ZXh0KQotICBS RVRVUk5TIGludGVnZXIgQVMKLSRCT0RZJAotREVDTEFSRQotICAgIHJldHVybmVkX2lkIGlu dGVnZXI7Ci1CRUdJTgotICAgIFVQREFURSBtZXNzYWdlcyBTRVQgaGlkZGVuc3RhdHVzID0g cmVhc29uX2NvZGUgV0hFUkUgbWVzc2FnZWlkID0gbXNnaWRfdHh0IFJFVFVSTklORyBpZCBJ TlRPIHJldHVybmVkX2lkOwotCi0gICAgSUYgTk9UIEZPVU5EIFRIRU4KLQlSQUlTRSBFWENF UFRJT04gJ1RoZSBzcGVjaWZpZWQgbWVzc2FnZSAoJSkgY291bGQgbm90IGJlIGZvdW5kLics IG1zZ2lkX3R4dDsKLSAgICBFTkQgSUY7Ci0KLSAgICBJTlNFUlQgSU5UTyBtZXNzYWdlX2hp ZGVfcmVhc29ucyAobWVzc2FnZSwgZHQsIHJlYXNvbiwgYnkpIFZBTFVFUyAocmV0dXJuZWRf aWQsIG5vdygpLCByZWFzb25fdHh0LCB1c2VyX3R4dCk7Ci0KLSAgICBSRVRVUk4gcmV0dXJu ZWRfaWQ7Ci1FTkQ7Ci0kQk9EWSQKLSAgTEFOR1VBR0UgcGxwZ3NxbCBWT0xBVElMRQotICBD T1NUIDEwMDsKLQotXGVjaG8gRG9udCBmb3JnZXQgdG8gY29tbWl0IQotLSAKMi4zNC4xCgo= --------------3v4INncDhpMj8DZyIkBAsSZX Content-Type: text/x-patch; charset=UTF-8; name="0002-Avoid-possible-crash-in-views.py-when-parentid-is-nu.patch" Content-Disposition: attachment; filename*0="0002-Avoid-possible-crash-in-views.py-when-parentid-is-nu.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxOTRlOTY2NWUyOWU3OTFlZGVkNTVlNDhmOGFmYTI5YzYxZGE5MDUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Qz1DMz1BOWxlc3Rpbj0yME1hdHRl Pz0gPGdpdGxhYkBjbWF0dGUubWU+CkRhdGU6IFRodSwgMyBGZWIgMjAyMiAwOToxODoyMSAr MDEwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBBdm9pZCBwb3NzaWJsZSBjcmFzaCBpbiB2aWV3 cy5weSB3aGVuIHBhcmVudGlkIGlzIG51bGwKCi0tLQogZGphbmdvL2FyY2hpdmVzL21haWxh cmNoaXZlcy92aWV3cy5weSB8IDMgKy0tCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZGphbmdvL2FyY2hpdmVzL21haWxh cmNoaXZlcy92aWV3cy5weSBiL2RqYW5nby9hcmNoaXZlcy9tYWlsYXJjaGl2ZXMvdmlld3Mu cHkKaW5kZXggZTViYmU1MS4uY2EzNTQzOSAxMDA2NDQKLS0tIGEvZGphbmdvL2FyY2hpdmVz L21haWxhcmNoaXZlcy92aWV3cy5weQorKysgYi9kamFuZ28vYXJjaGl2ZXMvbWFpbGFyY2hp dmVzL3ZpZXdzLnB5CkBAIC00NzcsMTMgKzQ3NywxMiBAQCBkZWYgbWVzc2FnZShyZXF1ZXN0 LCBtc2dpZCk6CiAKICAgICByZXNwb25zZXMgPSBbdCBmb3IgdCBpbiB0aHJlYWRzdHJ1Y3Qg aWYgdFsncGFyZW50aWQnXSA9PSBtLmlkXQogCisgICAgcGFyZW50ID0gTm9uZQogICAgIGlm IG0ucGFyZW50aWQ6CiAgICAgICAgIGZvciB0IGluIHRocmVhZHN0cnVjdDoKICAgICAgICAg ICAgIGlmIHRbJ2lkJ10gPT0gbS5wYXJlbnRpZDoKICAgICAgICAgICAgICAgICBwYXJlbnQg PSB0CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICBlbHNlOgotICAgICAgICBwYXJlbnQg PSBOb25lCiAgICAgbmV4dHByZXYgPSBfZ2V0X25leHRwcmV2aW91cyhsaXN0bWFwLCBtLmRh dGUpCiAKICAgICByID0gcmVuZGVyX25hdihOYXZDb250ZXh0KHJlcXVlc3QsIGxpc3RzWzBd Lmxpc3RpZCwgbGlzdHNbMF0ubGlzdG5hbWUpLCAnbWVzc2FnZS5odG1sJywgewotLSAKMi4z NC4xCgo= --------------3v4INncDhpMj8DZyIkBAsSZX--