From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.free-electrons.com ([62.4.15.54]) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1e36WI-0000Lq-NL for linux-mtd@lists.infradead.org; Fri, 13 Oct 2017 20:25:25 +0000 Date: Fri, 13 Oct 2017 22:24:58 +0200 From: Boris Brezillon To: Roger Quadros Cc: Tony Lindgren , linux-omap , "linux-mtd@lists.infradead.org" , "Cooper Jr., Franklin" Subject: Re: gpmc-nand broken since v4.12 Message-ID: <20171013222458.3f4c103e@bbrezillon> In-Reply-To: <20171013145033.5d1d9647@bbrezillon> References: <7eae9266-558f-6578-66d7-7ab0eb659a81@ti.com> <20171013145033.5d1d9647@bbrezillon> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Fri, 13 Oct 2017 14:50:33 +0200 Boris Brezillon wrote: > On Fri, 13 Oct 2017 14:57:29 +0300 > Roger Quadros wrote: >=20 > > =EF=BB=BFHi Boris, > >=20 > > NAND on gpmc-omap breaks for me while doing a unmount of a ubi volume s= ince v4.12 > >=20 > > Behaviour follows through in v4.13 and v4.14-rc as well. > >=20 > > Do you have any idea about this? More info on what has changed in 4.12: we no longer allocate the nand_buffer struct + its internal buffer using a single big kmalloc call, which means the nand_buffer struct is now likely to be allocated in a small object slab (sizeof(nand_buffers) =3D 12). If you have a use-after-free bug somewhere in the kernel, it might corrupt the nand_buffers object, which might explain the bug you see here. >=20 > Can you try with this patch [1] applied and paste me the values printed > just before the crash? >=20 > [1]http://code.bulix.org/lc8xk0-209746 >=20 > >=20 > > =3D=3D unmounting volume > > [ 30.128584] Unable to handle kernel NULL pointer dereference at virt= ual address 00000000 > > [ 30.137234] pgd =3D ed3d0000 > > [ 30.140079] [00000000] *pgd=3Dfd67a835 > > [ 30.143843] Internal error: Oops: 17 [#1] SMP ARM > > [ 30.148781] Modules linked in: snd_soc_davinci_mcasp xhci_plat_hcd s= nd_soc_edma xhci_hcd snd_soc_tlv320aic3x snd_soc_simple_card snd_soc_omap s= nd_soc_simple_card_utils snd_soc_core usbcoe > > [ 30.193881] CPU: 1 PID: 2149 Comm: umount Not tainted 4.12.0-00001-g= 2c09531 #1440 > > [ 30.201734] Hardware name: Generic DRA74X (Flattened Device Tree) > > [ 30.208130] task: ec870140 task.stack: ed406000 > > [ 30.212889] PC is at memcpy+0xe8/0x330 > > [ 30.216833] LR is at mtd_ooblayout_set_bytes+0x7c/0xa4 > > [ 30.222231] pc : [] lr : [] psr: 60000013 > > [ 30.222231] sp : ed407b74 ip : 00000002 fp : 00000200 > > [ 30.234276] r10: ed082800 r9 : 00000000 r8 : ed079010 > > [ 30.239761] r7 : c05d76d8 r6 : 00000000 r5 : 00000038 r4 : 000000= 38 > > [ 30.246614] r3 : 00000038 r2 : 00000034 r1 : 00000000 r0 : ed0828= 02 > > [ 30.253468] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Seg= ment none > > [ 30.260957] Control: 10c5387d Table: ad3d006a DAC: 00000051 > > [ 30.266986] Process umount (pid: 2149, stack limit =3D 0xed406218) > > [ 30.273296] Stack: (0xed407b74 to 0xed408000) > > [ 30.277868] 7b60: ed082= 802 00000038 c05d7490 > > [ 30.286458] 7b80: c05d76d8 ed082600 0000ffff 00000000 00000002 00000= 038 00000004 ed082800 > > [ 30.295047] 7ba0: ed079010 00000000 00000000 ed082800 ed079010 c05d7= 4fc 00000038 c05d76d8 > > [ 30.303635] 7bc0: ed0e8f6a c05e8388 00000038 00000000 c0dc60f0 00000= 001 00000010 0000000e > > [ 30.312216] 7be0: 00000004 00000001 00000001 00000001 c05f2668 ed079= 010 00000200 00000200 > > [ 30.320806] 7c00: 000095c0 00000200 ed082000 ed312200 000095c0 c05e9= 658 ed082000 00000000 > > [ 30.329392] 7c20: 000095c0 00000002 00000200 00000000 ed082000 ed407= c80 00000000 00000000 > > [ 30.337975] 7c40: 00000000 00000001 00000040 00000000 00000000 04ae0= 200 00000000 ed079010 > > [ 30.346563] 7c60: ed407c80 ed407d30 00000200 ed312200 ed312200 c05e9= 994 ed407c80 c0191f70 > > [ 30.355150] 7c80: 00000000 00000200 00000000 00000000 00000000 00000= 000 ed312200 00000000 > > [ 30.363738] 7ca0: 00a00000 00000000 00000200 00000000 0f600000 00000= 000 ed407d30 c05d9fbc > > [ 30.372328] 7cc0: 00000200 ed407d30 ed312200 00000000 9188fed8 c05d9= f7c 00000000 c05d6c7c > > [ 30.380917] 7ce0: 00000200 ed407d30 ed312200 ed312200 040e0200 00000= 000 ed628000 00000200 > > [ 30.389509] 7d00: 00000200 00000207 00000000 c0604cd0 00000200 ed407= d30 ed312200 60000013 > > [ 30.398097] 7d20: 00000200 00000000 ed208040 c019269c 00000000 00000= 004 ed628dd8 ed312200 > > [ 30.406676] 7d40: ed628000 00000207 ed312200 00000800 00000207 00000= 000 ffffffff c060536c > > [ 30.415267] 7d60: 00000200 c0607fb8 ed18c800 ed628000 ed2a0800 00000= 008 00000000 c0601178 > > [ 30.423851] 7d80: ed312200 ed628550 00000000 ed628000 ed312200 ed18c= 800 ed2a0800 ed628000 > > [ 30.432437] 7da0: ed312200 00000008 00000004 ed18c800 ed2a0800 00001= 014 ed208040 c0601cf0 > > [ 30.441020] 7dc0: 00000000 00000800 00000000 ec870140 00000003 60000= 013 c1568e2c c060154c > > [ 30.449605] 7de0: ed18c800 c019269c 00000000 00000002 ed628000 00000= 800 ed628000 00000000 > > [ 30.458191] 7e00: 00000008 ed18c800 00000000 00000088 ed18c800 c0600= 538 00000000 00000800 > > [ 30.466779] 7e20: ed18c800 ed770000 00000000 00000008 ed770000 c0426= a90 00000800 00000000 > > [ 30.475366] 7e40: 00000088 00000000 00000800 000000a0 ed770000 c0430= 904 00000800 c08002e8 > > [ 30.483952] 7e60: 00000000 00000000 000000d8 00000000 00000000 00000= 000 00000000 00000000 > > [ 30.492545] 7e80: ed18c800 ed407eb4 00000001 ed770000 00000000 00000= 288 00000003 ed51b5d4 > > [ 30.501126] 7ea0: ed406000 00000000 00000000 c0431880 ed77014c 76ecb= 30e 5c265a59 ec870140 > > [ 30.509709] 7ec0: 00000003 60000013 c1568e2c c0431f38 00000000 c0192= 69c ed77014c 00000002 > > [ 30.518301] 7ee0: ed51b5d4 ed77014c ed77014c ed770104 ed51b5d4 ed770= 000 ed406000 00000000 > > [ 30.526886] 7f00: ed77014c c08039c8 00000000 00000288 00000003 ed51b= 5d4 ed770000 c042201c > > [ 30.535471] 7f20: ed1cb000 00000000 c0dcbbe0 00000534 ec870140 c02e6= 324 edf88a10 ed1cb000 > > [ 30.544056] 7f40: c0926528 c02afaf4 c0421714 00000015 c0d823cc c02af= c40 ed770000 c0421720 > > [ 30.552643] 7f60: ed1cb000 c02b0288 ec870140 ed61a600 00000000 c02d0= 950 ec870634 c0159b34 > > [ 30.561220] 7f80: ed61a61c 00000000 ed407fb0 c0107ae4 00000034 c0107= ae4 00000000 c010b09c > > [ 30.569803] 7fa0: 00021cb8 0001e320 00021cb8 c0107968 00000000 00000= 000 00000000 00000000 > > [ 30.578392] 7fc0: 00021cb8 0001e320 00021cb8 00000034 00021ca8 00000= 000 00000000 00000000 > > [ 30.586973] 7fe0: 00021ce8 bec06600 b6e11dbc b6e11ddc 60000010 00021= cb8 afffd861 afffdc61 > > [ 30.595558] [] (memcpy) from [] (mtd_ooblayout_s= et_bytes+0x7c/0xa4) > > [ 30.603968] [] (mtd_ooblayout_set_bytes) from []= (mtd_ooblayout_set_eccbytes+0x1c/0x28) > > [ 30.614207] [] (mtd_ooblayout_set_eccbytes) from [] (nand_write_subpage_hwecc+0x1a8/0x1d0) > > [ 30.624707] [] (nand_write_subpage_hwecc) from [= ] (nand_do_write_ops+0x22c/0x50c) > > [ 30.634397] [] (nand_do_write_ops) from [] (nand= _write+0x5c/0x7c) > > [ 30.642621] [] (nand_write) from [] (part_write+= 0x40/0x48) > > [ 30.650211] [] (part_write) from [] (mtd_write+0= x90/0xa8) > > [ 30.657718] [] (mtd_write) from [] (ubi_io_write= +0x114/0x6b8) > > [ 30.665573] [] (ubi_io_write) from [] (ubi_io_wr= ite_vid_hdr+0xf8/0x148) > > [ 30.674342] [] (ubi_io_write_vid_hdr) from [] (t= ry_write_vid_and_data+0x54/0x1a4) > > [ 30.684030] [] (try_write_vid_and_data) from [] = (ubi_eba_write_leb+0x1f8/0x7bc) > > [ 30.693525] [] (ubi_eba_write_leb) from [] (ubi_= leb_write+0xbc/0xdc) > > [ 30.702021] [] (ubi_leb_write) from [] (ubifs_le= b_write+0x9c/0x11c) > > [ 30.710426] [] (ubifs_leb_write) from [] (ubifs_= log_start_commit+0x27c/0x444) > > [ 30.719743] [] (ubifs_log_start_commit) from [] = (do_commit+0x1b8/0x7e8) > > [ 30.728521] [] (do_commit) from [] (ubifs_sync_f= s+0x8c/0xa0) > > [ 30.736292] [] (ubifs_sync_fs) from [] (sync_fil= esystem+0x88/0xac) > > [ 30.744616] [] (sync_filesystem) from [] (generi= c_shutdown_super+0x24/0xf8) > > [ 30.753754] [] (generic_shutdown_super) from [] = (kill_anon_super+0xc/0x18) > > [ 30.762807] [] (kill_anon_super) from [] (kill_u= bifs_super+0xc/0x18) > > [ 30.771308] [] (kill_ubifs_super) from [] (deact= ivate_locked_super+0x5c/0x80) > > [ 30.780627] [] (deactivate_locked_super) from []= (cleanup_mnt+0x38/0x78) > > [ 30.789492] [] (cleanup_mnt) from [] (task_work_= run+0xc0/0xe8) > > [ 30.797444] [] (task_work_run) from [] (do_work_= pending+0xd4/0xd8) > > [ 30.805759] [] (do_work_pending) from [] (slow_w= ork_pending+0xc/0x20) > > [ 30.814345] Code: e8bd8011 e26cc004 e35c0002 c4d13001 (a4d14001)=20 > > [ 30.820843] ---[ end trace bc240a5a583e6e02 ]--- > > =20 >=20 >=20 > ______________________________________________________ > Linux MTD discussion mailing list > http://lists.infradead.org/mailman/listinfo/linux-mtd/ From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: gpmc-nand broken since v4.12 Date: Fri, 13 Oct 2017 22:24:58 +0200 Message-ID: <20171013222458.3f4c103e@bbrezillon> References: <7eae9266-558f-6578-66d7-7ab0eb659a81@ti.com> <20171013145033.5d1d9647@bbrezillon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171013145033.5d1d9647@bbrezillon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+gldm-linux-mtd-36=gmane.org@lists.infradead.org To: Roger Quadros Cc: Tony Lindgren , linux-omap , "linux-mtd@lists.infradead.org" , "Cooper Jr., Franklin" List-Id: linux-omap@vger.kernel.org T24gRnJpLCAxMyBPY3QgMjAxNyAxNDo1MDozMyArMDIwMApCb3JpcyBCcmV6aWxsb24gPGJvcmlz LmJyZXppbGxvbkBmcmVlLWVsZWN0cm9ucy5jb20+IHdyb3RlOgoKPiBPbiBGcmksIDEzIE9jdCAy MDE3IDE0OjU3OjI5ICswMzAwCj4gUm9nZXIgUXVhZHJvcyA8cm9nZXJxQHRpLmNvbT4gd3JvdGU6 Cj4gCj4gPiDvu79IaSBCb3JpcywKPiA+IAo+ID4gTkFORCBvbiBncG1jLW9tYXAgYnJlYWtzIGZv ciBtZSB3aGlsZSBkb2luZyBhIHVubW91bnQgb2YgYSB1Ymkgdm9sdW1lIHNpbmNlIHY0LjEyCj4g PiAKPiA+IEJlaGF2aW91ciBmb2xsb3dzIHRocm91Z2ggaW4gdjQuMTMgYW5kIHY0LjE0LXJjIGFz IHdlbGwuCj4gPiAKPiA+IERvIHlvdSBoYXZlIGFueSBpZGVhIGFib3V0IHRoaXM/CgpNb3JlIGlu Zm8gb24gd2hhdCBoYXMgY2hhbmdlZCBpbiA0LjEyOiB3ZSBubyBsb25nZXIgYWxsb2NhdGUgdGhl Cm5hbmRfYnVmZmVyIHN0cnVjdCArIGl0cyBpbnRlcm5hbCBidWZmZXIgdXNpbmcgYSBzaW5nbGUg YmlnIGttYWxsb2MKY2FsbCwgd2hpY2ggbWVhbnMgdGhlIG5hbmRfYnVmZmVyIHN0cnVjdCBpcyBu b3cgbGlrZWx5IHRvIGJlIGFsbG9jYXRlZAppbiBhIHNtYWxsIG9iamVjdCBzbGFiIChzaXplb2Yo bmFuZF9idWZmZXJzKSA9IDEyKS4gSWYgeW91IGhhdmUgYQp1c2UtYWZ0ZXItZnJlZSBidWcgc29t ZXdoZXJlIGluIHRoZSBrZXJuZWwsIGl0IG1pZ2h0IGNvcnJ1cHQgdGhlCm5hbmRfYnVmZmVycyBv YmplY3QsIHdoaWNoIG1pZ2h0IGV4cGxhaW4gdGhlIGJ1ZyB5b3Ugc2VlIGhlcmUuCgo+IAo+IENh biB5b3UgdHJ5IHdpdGggdGhpcyBwYXRjaCBbMV0gYXBwbGllZCBhbmQgcGFzdGUgbWUgdGhlIHZh bHVlcyBwcmludGVkCj4ganVzdCBiZWZvcmUgdGhlIGNyYXNoPwo+IAo+IFsxXWh0dHA6Ly9jb2Rl LmJ1bGl4Lm9yZy9sYzh4azAtMjA5NzQ2Cj4gCj4gPiAKPiA+ID09IHVubW91bnRpbmcgdm9sdW1l Cj4gPiBbICAgMzAuMTI4NTg0XSBVbmFibGUgdG8gaGFuZGxlIGtlcm5lbCBOVUxMIHBvaW50ZXIg ZGVyZWZlcmVuY2UgYXQgdmlydHVhbCBhZGRyZXNzIDAwMDAwMDAwCj4gPiBbICAgMzAuMTM3MjM0 XSBwZ2QgPSBlZDNkMDAwMAo+ID4gWyAgIDMwLjE0MDA3OV0gWzAwMDAwMDAwXSAqcGdkPWZkNjdh ODM1Cj4gPiBbICAgMzAuMTQzODQzXSBJbnRlcm5hbCBlcnJvcjogT29wczogMTcgWyMxXSBTTVAg QVJNCj4gPiBbICAgMzAuMTQ4NzgxXSBNb2R1bGVzIGxpbmtlZCBpbjogc25kX3NvY19kYXZpbmNp X21jYXNwIHhoY2lfcGxhdF9oY2Qgc25kX3NvY19lZG1hIHhoY2lfaGNkIHNuZF9zb2NfdGx2MzIw YWljM3ggc25kX3NvY19zaW1wbGVfY2FyZCBzbmRfc29jX29tYXAgc25kX3NvY19zaW1wbGVfY2Fy ZF91dGlscyBzbmRfc29jX2NvcmUgdXNiY29lCj4gPiBbICAgMzAuMTkzODgxXSBDUFU6IDEgUElE OiAyMTQ5IENvbW06IHVtb3VudCBOb3QgdGFpbnRlZCA0LjEyLjAtMDAwMDEtZzJjMDk1MzEgIzE0 NDAKPiA+IFsgICAzMC4yMDE3MzRdIEhhcmR3YXJlIG5hbWU6IEdlbmVyaWMgRFJBNzRYIChGbGF0 dGVuZWQgRGV2aWNlIFRyZWUpCj4gPiBbICAgMzAuMjA4MTMwXSB0YXNrOiBlYzg3MDE0MCB0YXNr LnN0YWNrOiBlZDQwNjAwMAo+ID4gWyAgIDMwLjIxMjg4OV0gUEMgaXMgYXQgbWVtY3B5KzB4ZTgv MHgzMzAKPiA+IFsgICAzMC4yMTY4MzNdIExSIGlzIGF0IG10ZF9vb2JsYXlvdXRfc2V0X2J5dGVz KzB4N2MvMHhhNAo+ID4gWyAgIDMwLjIyMjIzMV0gcGMgOiBbPGMwNGFiZTY4Pl0gICAgbHIgOiBb PGMwNWQ3NDkwPl0gICAgcHNyOiA2MDAwMDAxMwo+ID4gWyAgIDMwLjIyMjIzMV0gc3AgOiBlZDQw N2I3NCAgaXAgOiAwMDAwMDAwMiAgZnAgOiAwMDAwMDIwMAo+ID4gWyAgIDMwLjIzNDI3Nl0gcjEw OiBlZDA4MjgwMCAgcjkgOiAwMDAwMDAwMCAgcjggOiBlZDA3OTAxMAo+ID4gWyAgIDMwLjIzOTc2 MV0gcjcgOiBjMDVkNzZkOCAgcjYgOiAwMDAwMDAwMCAgcjUgOiAwMDAwMDAzOCAgcjQgOiAwMDAw MDAzOAo+ID4gWyAgIDMwLjI0NjYxNF0gcjMgOiAwMDAwMDAzOCAgcjIgOiAwMDAwMDAzNCAgcjEg OiAwMDAwMDAwMCAgcjAgOiBlZDA4MjgwMgo+ID4gWyAgIDMwLjI1MzQ2OF0gRmxhZ3M6IG5aQ3Yg IElSUXMgb24gIEZJUXMgb24gIE1vZGUgU1ZDXzMyICBJU0EgQVJNICBTZWdtZW50IG5vbmUKPiA+ IFsgICAzMC4yNjA5NTddIENvbnRyb2w6IDEwYzUzODdkICBUYWJsZTogYWQzZDAwNmEgIERBQzog MDAwMDAwNTEKPiA+IFsgICAzMC4yNjY5ODZdIFByb2Nlc3MgdW1vdW50IChwaWQ6IDIxNDksIHN0 YWNrIGxpbWl0ID0gMHhlZDQwNjIxOCkKPiA+IFsgICAzMC4yNzMyOTZdIFN0YWNrOiAoMHhlZDQw N2I3NCB0byAweGVkNDA4MDAwKQo+ID4gWyAgIDMwLjI3Nzg2OF0gN2I2MDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWQwODI4MDIgMDAwMDAwMzggYzA1ZDc0 OTAKPiA+IFsgICAzMC4yODY0NThdIDdiODA6IGMwNWQ3NmQ4IGVkMDgyNjAwIDAwMDBmZmZmIDAw MDAwMDAwIDAwMDAwMDAyIDAwMDAwMDM4IDAwMDAwMDA0IGVkMDgyODAwCj4gPiBbICAgMzAuMjk1 MDQ3XSA3YmEwOiBlZDA3OTAxMCAwMDAwMDAwMCAwMDAwMDAwMCBlZDA4MjgwMCBlZDA3OTAxMCBj MDVkNzRmYyAwMDAwMDAzOCBjMDVkNzZkOAo+ID4gWyAgIDMwLjMwMzYzNV0gN2JjMDogZWQwZThm NmEgYzA1ZTgzODggMDAwMDAwMzggMDAwMDAwMDAgYzBkYzYwZjAgMDAwMDAwMDEgMDAwMDAwMTAg MDAwMDAwMGUKPiA+IFsgICAzMC4zMTIyMTZdIDdiZTA6IDAwMDAwMDA0IDAwMDAwMDAxIDAwMDAw MDAxIDAwMDAwMDAxIGMwNWYyNjY4IGVkMDc5MDEwIDAwMDAwMjAwIDAwMDAwMjAwCj4gPiBbICAg MzAuMzIwODA2XSA3YzAwOiAwMDAwOTVjMCAwMDAwMDIwMCBlZDA4MjAwMCBlZDMxMjIwMCAwMDAw OTVjMCBjMDVlOTY1OCBlZDA4MjAwMCAwMDAwMDAwMAo+ID4gWyAgIDMwLjMyOTM5Ml0gN2MyMDog MDAwMDk1YzAgMDAwMDAwMDIgMDAwMDAyMDAgMDAwMDAwMDAgZWQwODIwMDAgZWQ0MDdjODAgMDAw MDAwMDAgMDAwMDAwMDAKPiA+IFsgICAzMC4zMzc5NzVdIDdjNDA6IDAwMDAwMDAwIDAwMDAwMDAx IDAwMDAwMDQwIDAwMDAwMDAwIDAwMDAwMDAwIDA0YWUwMjAwIDAwMDAwMDAwIGVkMDc5MDEwCj4g PiBbICAgMzAuMzQ2NTYzXSA3YzYwOiBlZDQwN2M4MCBlZDQwN2QzMCAwMDAwMDIwMCBlZDMxMjIw MCBlZDMxMjIwMCBjMDVlOTk5NCBlZDQwN2M4MCBjMDE5MWY3MAo+ID4gWyAgIDMwLjM1NTE1MF0g N2M4MDogMDAwMDAwMDAgMDAwMDAyMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAw MDAgZWQzMTIyMDAgMDAwMDAwMDAKPiA+IFsgICAzMC4zNjM3MzhdIDdjYTA6IDAwYTAwMDAwIDAw MDAwMDAwIDAwMDAwMjAwIDAwMDAwMDAwIDBmNjAwMDAwIDAwMDAwMDAwIGVkNDA3ZDMwIGMwNWQ5 ZmJjCj4gPiBbICAgMzAuMzcyMzI4XSA3Y2MwOiAwMDAwMDIwMCBlZDQwN2QzMCBlZDMxMjIwMCAw MDAwMDAwMCA5MTg4ZmVkOCBjMDVkOWY3YyAwMDAwMDAwMCBjMDVkNmM3Ywo+ID4gWyAgIDMwLjM4 MDkxN10gN2NlMDogMDAwMDAyMDAgZWQ0MDdkMzAgZWQzMTIyMDAgZWQzMTIyMDAgMDQwZTAyMDAg MDAwMDAwMDAgZWQ2MjgwMDAgMDAwMDAyMDAKPiA+IFsgICAzMC4zODk1MDldIDdkMDA6IDAwMDAw MjAwIDAwMDAwMjA3IDAwMDAwMDAwIGMwNjA0Y2QwIDAwMDAwMjAwIGVkNDA3ZDMwIGVkMzEyMjAw IDYwMDAwMDEzCj4gPiBbICAgMzAuMzk4MDk3XSA3ZDIwOiAwMDAwMDIwMCAwMDAwMDAwMCBlZDIw ODA0MCBjMDE5MjY5YyAwMDAwMDAwMCAwMDAwMDAwNCBlZDYyOGRkOCBlZDMxMjIwMAo+ID4gWyAg IDMwLjQwNjY3Nl0gN2Q0MDogZWQ2MjgwMDAgMDAwMDAyMDcgZWQzMTIyMDAgMDAwMDA4MDAgMDAw MDAyMDcgMDAwMDAwMDAgZmZmZmZmZmYgYzA2MDUzNmMKPiA+IFsgICAzMC40MTUyNjddIDdkNjA6 IDAwMDAwMjAwIGMwNjA3ZmI4IGVkMThjODAwIGVkNjI4MDAwIGVkMmEwODAwIDAwMDAwMDA4IDAw MDAwMDAwIGMwNjAxMTc4Cj4gPiBbICAgMzAuNDIzODUxXSA3ZDgwOiBlZDMxMjIwMCBlZDYyODU1 MCAwMDAwMDAwMCBlZDYyODAwMCBlZDMxMjIwMCBlZDE4YzgwMCBlZDJhMDgwMCBlZDYyODAwMAo+ ID4gWyAgIDMwLjQzMjQzN10gN2RhMDogZWQzMTIyMDAgMDAwMDAwMDggMDAwMDAwMDQgZWQxOGM4 MDAgZWQyYTA4MDAgMDAwMDEwMTQgZWQyMDgwNDAgYzA2MDFjZjAKPiA+IFsgICAzMC40NDEwMjBd IDdkYzA6IDAwMDAwMDAwIDAwMDAwODAwIDAwMDAwMDAwIGVjODcwMTQwIDAwMDAwMDAzIDYwMDAw MDEzIGMxNTY4ZTJjIGMwNjAxNTRjCj4gPiBbICAgMzAuNDQ5NjA1XSA3ZGUwOiBlZDE4YzgwMCBj MDE5MjY5YyAwMDAwMDAwMCAwMDAwMDAwMiBlZDYyODAwMCAwMDAwMDgwMCBlZDYyODAwMCAwMDAw MDAwMAo+ID4gWyAgIDMwLjQ1ODE5MV0gN2UwMDogMDAwMDAwMDggZWQxOGM4MDAgMDAwMDAwMDAg MDAwMDAwODggZWQxOGM4MDAgYzA2MDA1MzggMDAwMDAwMDAgMDAwMDA4MDAKPiA+IFsgICAzMC40 NjY3NzldIDdlMjA6IGVkMThjODAwIGVkNzcwMDAwIDAwMDAwMDAwIDAwMDAwMDA4IGVkNzcwMDAw IGMwNDI2YTkwIDAwMDAwODAwIDAwMDAwMDAwCj4gPiBbICAgMzAuNDc1MzY2XSA3ZTQwOiAwMDAw MDA4OCAwMDAwMDAwMCAwMDAwMDgwMCAwMDAwMDBhMCBlZDc3MDAwMCBjMDQzMDkwNCAwMDAwMDgw MCBjMDgwMDJlOAo+ID4gWyAgIDMwLjQ4Mzk1Ml0gN2U2MDogMDAwMDAwMDAgMDAwMDAwMDAgMDAw MDAwZDggMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAKPiA+IFsg ICAzMC40OTI1NDVdIDdlODA6IGVkMThjODAwIGVkNDA3ZWI0IDAwMDAwMDAxIGVkNzcwMDAwIDAw MDAwMDAwIDAwMDAwMjg4IDAwMDAwMDAzIGVkNTFiNWQ0Cj4gPiBbICAgMzAuNTAxMTI2XSA3ZWEw OiBlZDQwNjAwMCAwMDAwMDAwMCAwMDAwMDAwMCBjMDQzMTg4MCBlZDc3MDE0YyA3NmVjYjMwZSA1 YzI2NWE1OSBlYzg3MDE0MAo+ID4gWyAgIDMwLjUwOTcwOV0gN2VjMDogMDAwMDAwMDMgNjAwMDAw MTMgYzE1NjhlMmMgYzA0MzFmMzggMDAwMDAwMDAgYzAxOTI2OWMgZWQ3NzAxNGMgMDAwMDAwMDIK PiA+IFsgICAzMC41MTgzMDFdIDdlZTA6IGVkNTFiNWQ0IGVkNzcwMTRjIGVkNzcwMTRjIGVkNzcw MTA0IGVkNTFiNWQ0IGVkNzcwMDAwIGVkNDA2MDAwIDAwMDAwMDAwCj4gPiBbICAgMzAuNTI2ODg2 XSA3ZjAwOiBlZDc3MDE0YyBjMDgwMzljOCAwMDAwMDAwMCAwMDAwMDI4OCAwMDAwMDAwMyBlZDUx YjVkNCBlZDc3MDAwMCBjMDQyMjAxYwo+ID4gWyAgIDMwLjUzNTQ3MV0gN2YyMDogZWQxY2IwMDAg MDAwMDAwMDAgYzBkY2JiZTAgMDAwMDA1MzQgZWM4NzAxNDAgYzAyZTYzMjQgZWRmODhhMTAgZWQx Y2IwMDAKPiA+IFsgICAzMC41NDQwNTZdIDdmNDA6IGMwOTI2NTI4IGMwMmFmYWY0IGMwNDIxNzE0 IDAwMDAwMDE1IGMwZDgyM2NjIGMwMmFmYzQwIGVkNzcwMDAwIGMwNDIxNzIwCj4gPiBbICAgMzAu NTUyNjQzXSA3ZjYwOiBlZDFjYjAwMCBjMDJiMDI4OCBlYzg3MDE0MCBlZDYxYTYwMCAwMDAwMDAw MCBjMDJkMDk1MCBlYzg3MDYzNCBjMDE1OWIzNAo+ID4gWyAgIDMwLjU2MTIyMF0gN2Y4MDogZWQ2 MWE2MWMgMDAwMDAwMDAgZWQ0MDdmYjAgYzAxMDdhZTQgMDAwMDAwMzQgYzAxMDdhZTQgMDAwMDAw MDAgYzAxMGIwOWMKPiA+IFsgICAzMC41Njk4MDNdIDdmYTA6IDAwMDIxY2I4IDAwMDFlMzIwIDAw MDIxY2I4IGMwMTA3OTY4IDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwCj4gPiBb ICAgMzAuNTc4MzkyXSA3ZmMwOiAwMDAyMWNiOCAwMDAxZTMyMCAwMDAyMWNiOCAwMDAwMDAzNCAw MDAyMWNhOCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMAo+ID4gWyAgIDMwLjU4Njk3M10gN2Zl MDogMDAwMjFjZTggYmVjMDY2MDAgYjZlMTFkYmMgYjZlMTFkZGMgNjAwMDAwMTAgMDAwMjFjYjgg YWZmZmQ4NjEgYWZmZmRjNjEKPiA+IFsgICAzMC41OTU1NThdIFs8YzA0YWJlNjg+XSAobWVtY3B5 KSBmcm9tIFs8YzA1ZDc0OTA+XSAobXRkX29vYmxheW91dF9zZXRfYnl0ZXMrMHg3Yy8weGE0KQo+ ID4gWyAgIDMwLjYwMzk2OF0gWzxjMDVkNzQ5MD5dIChtdGRfb29ibGF5b3V0X3NldF9ieXRlcykg ZnJvbSBbPGMwNWQ3NGZjPl0gKG10ZF9vb2JsYXlvdXRfc2V0X2VjY2J5dGVzKzB4MWMvMHgyOCkK PiA+IFsgICAzMC42MTQyMDddIFs8YzA1ZDc0ZmM+XSAobXRkX29vYmxheW91dF9zZXRfZWNjYnl0 ZXMpIGZyb20gWzxjMDVlODM4OD5dIChuYW5kX3dyaXRlX3N1YnBhZ2VfaHdlY2MrMHgxYTgvMHgx ZDApCj4gPiBbICAgMzAuNjI0NzA3XSBbPGMwNWU4Mzg4Pl0gKG5hbmRfd3JpdGVfc3VicGFnZV9o d2VjYykgZnJvbSBbPGMwNWU5NjU4Pl0gKG5hbmRfZG9fd3JpdGVfb3BzKzB4MjJjLzB4NTBjKQo+ ID4gWyAgIDMwLjYzNDM5N10gWzxjMDVlOTY1OD5dIChuYW5kX2RvX3dyaXRlX29wcykgZnJvbSBb PGMwNWU5OTk0Pl0gKG5hbmRfd3JpdGUrMHg1Yy8weDdjKQo+ID4gWyAgIDMwLjY0MjYyMV0gWzxj MDVlOTk5ND5dIChuYW5kX3dyaXRlKSBmcm9tIFs8YzA1ZDlmYmM+XSAocGFydF93cml0ZSsweDQw LzB4NDgpCj4gPiBbICAgMzAuNjUwMjExXSBbPGMwNWQ5ZmJjPl0gKHBhcnRfd3JpdGUpIGZyb20g WzxjMDVkNmM3Yz5dIChtdGRfd3JpdGUrMHg5MC8weGE4KQo+ID4gWyAgIDMwLjY1NzcxOF0gWzxj MDVkNmM3Yz5dIChtdGRfd3JpdGUpIGZyb20gWzxjMDYwNGNkMD5dICh1YmlfaW9fd3JpdGUrMHgx MTQvMHg2YjgpCj4gPiBbICAgMzAuNjY1NTczXSBbPGMwNjA0Y2QwPl0gKHViaV9pb193cml0ZSkg ZnJvbSBbPGMwNjA1MzZjPl0gKHViaV9pb193cml0ZV92aWRfaGRyKzB4ZjgvMHgxNDgpCj4gPiBb ICAgMzAuNjc0MzQyXSBbPGMwNjA1MzZjPl0gKHViaV9pb193cml0ZV92aWRfaGRyKSBmcm9tIFs8 YzA2MDExNzg+XSAodHJ5X3dyaXRlX3ZpZF9hbmRfZGF0YSsweDU0LzB4MWE0KQo+ID4gWyAgIDMw LjY4NDAzMF0gWzxjMDYwMTE3OD5dICh0cnlfd3JpdGVfdmlkX2FuZF9kYXRhKSBmcm9tIFs8YzA2 MDFjZjA+XSAodWJpX2ViYV93cml0ZV9sZWIrMHgxZjgvMHg3YmMpCj4gPiBbICAgMzAuNjkzNTI1 XSBbPGMwNjAxY2YwPl0gKHViaV9lYmFfd3JpdGVfbGViKSBmcm9tIFs8YzA2MDA1Mzg+XSAodWJp X2xlYl93cml0ZSsweGJjLzB4ZGMpCj4gPiBbICAgMzAuNzAyMDIxXSBbPGMwNjAwNTM4Pl0gKHVi aV9sZWJfd3JpdGUpIGZyb20gWzxjMDQyNmE5MD5dICh1Ymlmc19sZWJfd3JpdGUrMHg5Yy8weDEx YykKPiA+IFsgICAzMC43MTA0MjZdIFs8YzA0MjZhOTA+XSAodWJpZnNfbGViX3dyaXRlKSBmcm9t IFs8YzA0MzA5MDQ+XSAodWJpZnNfbG9nX3N0YXJ0X2NvbW1pdCsweDI3Yy8weDQ0NCkKPiA+IFsg ICAzMC43MTk3NDNdIFs8YzA0MzA5MDQ+XSAodWJpZnNfbG9nX3N0YXJ0X2NvbW1pdCkgZnJvbSBb PGMwNDMxODgwPl0gKGRvX2NvbW1pdCsweDFiOC8weDdlOCkKPiA+IFsgICAzMC43Mjg1MjFdIFs8 YzA0MzE4ODA+XSAoZG9fY29tbWl0KSBmcm9tIFs8YzA0MjIwMWM+XSAodWJpZnNfc3luY19mcysw eDhjLzB4YTApCj4gPiBbICAgMzAuNzM2MjkyXSBbPGMwNDIyMDFjPl0gKHViaWZzX3N5bmNfZnMp IGZyb20gWzxjMDJlNjMyND5dIChzeW5jX2ZpbGVzeXN0ZW0rMHg4OC8weGFjKQo+ID4gWyAgIDMw Ljc0NDYxNl0gWzxjMDJlNjMyND5dIChzeW5jX2ZpbGVzeXN0ZW0pIGZyb20gWzxjMDJhZmFmND5d IChnZW5lcmljX3NodXRkb3duX3N1cGVyKzB4MjQvMHhmOCkKPiA+IFsgICAzMC43NTM3NTRdIFs8 YzAyYWZhZjQ+XSAoZ2VuZXJpY19zaHV0ZG93bl9zdXBlcikgZnJvbSBbPGMwMmFmYzQwPl0gKGtp bGxfYW5vbl9zdXBlcisweGMvMHgxOCkKPiA+IFsgICAzMC43NjI4MDddIFs8YzAyYWZjNDA+XSAo a2lsbF9hbm9uX3N1cGVyKSBmcm9tIFs8YzA0MjE3MjA+XSAoa2lsbF91Ymlmc19zdXBlcisweGMv MHgxOCkKPiA+IFsgICAzMC43NzEzMDhdIFs8YzA0MjE3MjA+XSAoa2lsbF91Ymlmc19zdXBlcikg ZnJvbSBbPGMwMmIwMjg4Pl0gKGRlYWN0aXZhdGVfbG9ja2VkX3N1cGVyKzB4NWMvMHg4MCkKPiA+ IFsgICAzMC43ODA2MjddIFs8YzAyYjAyODg+XSAoZGVhY3RpdmF0ZV9sb2NrZWRfc3VwZXIpIGZy b20gWzxjMDJkMDk1MD5dIChjbGVhbnVwX21udCsweDM4LzB4NzgpCj4gPiBbICAgMzAuNzg5NDky XSBbPGMwMmQwOTUwPl0gKGNsZWFudXBfbW50KSBmcm9tIFs8YzAxNTliMzQ+XSAodGFza193b3Jr X3J1bisweGMwLzB4ZTgpCj4gPiBbICAgMzAuNzk3NDQ0XSBbPGMwMTU5YjM0Pl0gKHRhc2tfd29y a19ydW4pIGZyb20gWzxjMDEwYjA5Yz5dIChkb193b3JrX3BlbmRpbmcrMHhkNC8weGQ4KQo+ID4g WyAgIDMwLjgwNTc1OV0gWzxjMDEwYjA5Yz5dIChkb193b3JrX3BlbmRpbmcpIGZyb20gWzxjMDEw Nzk2OD5dIChzbG93X3dvcmtfcGVuZGluZysweGMvMHgyMCkKPiA+IFsgICAzMC44MTQzNDVdIENv ZGU6IGU4YmQ4MDExIGUyNmNjMDA0IGUzNWMwMDAyIGM0ZDEzMDAxIChhNGQxNDAwMSkgCj4gPiBb ICAgMzAuODIwODQzXSAtLS1bIGVuZCB0cmFjZSBiYzI0MGE1YTU4M2U2ZTAyIF0tLS0KPiA+ICAg Cj4gCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cj4gaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4IE1URCBkaXNj dXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LW10ZC8K