From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750887AbWGPKdu (ORCPT ); Sun, 16 Jul 2006 06:33:50 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750890AbWGPKdu (ORCPT ); Sun, 16 Jul 2006 06:33:50 -0400 Received: from smtp5-g19.free.fr ([212.27.42.35]:35989 "EHLO smtp5-g19.free.fr") by vger.kernel.org with ESMTP id S1750853AbWGPKdt (ORCPT ); Sun, 16 Jul 2006 06:33:49 -0400 Message-ID: <44BA1609.9050305@free.fr> Date: Sun, 16 Jul 2006 12:33:45 +0200 From: Laurent Riffard User-Agent: Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.0.4) Gecko/20060405 SeaMonkey/1.0.2 MIME-Version: 1.0 To: Peter Osterlund CC: Arjan van de Ven , mingo@elte.hu, akpm@osdl.org, Kernel development list , axboe@suse.de Subject: Re: [patch] lockdep: annotate pktcdvd natural device hierarchy References: <448875D1.5080905@free.fr> <448D84C0.1070400@linux.intel.com> <1151000451.3120.56.camel@laptopd505.fenrus.org> <1152884770.3159.37.camel@laptopd505.fenrus.org> <1152947098.3114.9.camel@laptopd505.fenrus.org> <44B8C506.1000009@free.fr> In-Reply-To: X-Enigmail-Version: 0.94.0.0 Content-Type: multipart/mixed; boundary="------------030603050001060002070307" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------030603050001060002070307 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le 15.07.2006 12:57, Peter Osterlund a écrit : > Laurent Riffard writes: > >> Le 15.07.2006 09:04, Arjan van de Ven a écrit : >> >> Thanks Arjan, this seems to solve the initial issue of this thread, >> which was "possible circular locking deadlock detected!" while >> doing "pktsetup dvd /dev/dvd". >> >> So here is the next step :-(. I'm now running 2.6.18-rc1-mm2 and I was able >> to successfully run: >> - modprobe ptkcdvd >> - pktsetup dvd /dev/dvd >> >> Then I inserted a UDF-formatted CD-RW in the CD/DVD burner and I typed >> this command : >> - mount -oro -tauto /dev/pktcdvd/dvd /mnt/cdrom >> The following happened : >> >> pktcdvd: writer pktcdvd0 mapped to hdc >> >> ============================================= >> [ INFO: possible recursive locking detected ] >> --------------------------------------------- > > I got the same problem. This patch fixes it in my case. I'm not sure > if using the *_partition() functions is the right thing to do, but the > device mapper code is using those functions in similar situations. > > drivers/block/pktcdvd.c | 12 ++++++------ > fs/block_dev.c | 7 +++---- > include/linux/fs.h | 1 + > 3 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c > index f87d1a8..ccded00 100644 > --- a/drivers/block/pktcdvd.c > +++ b/drivers/block/pktcdvd.c > @@ -1922,7 +1922,7 @@ static int pkt_open_dev(struct pktcdvd_d > * so bdget() can't fail. > */ > bdget(pd->bdev->bd_dev); > - if ((ret = blkdev_get(pd->bdev, FMODE_READ, O_RDONLY))) > + if ((ret = blkdev_get_partition(pd->bdev, FMODE_READ, O_RDONLY))) > goto out; > > if ((ret = bd_claim(pd->bdev, pd))) > @@ -1971,7 +1971,7 @@ static int pkt_open_dev(struct pktcdvd_d > out_unclaim: > bd_release(pd->bdev); > out_putdev: > - blkdev_put(pd->bdev); > + blkdev_put_partition(pd->bdev); > out: > return ret; > } > @@ -1989,7 +1989,7 @@ static void pkt_release_dev(struct pktcd > > pkt_set_speed(pd, MAX_SPEED, MAX_SPEED); > bd_release(pd->bdev); > - blkdev_put(pd->bdev); > + blkdev_put_partition(pd->bdev); > > pkt_shrink_pktlist(pd); > } > @@ -2339,7 +2339,7 @@ static int pkt_new_dev(struct pktcdvd_de > bdev = bdget(dev); > if (!bdev) > return -ENOMEM; > - ret = blkdev_get(bdev, FMODE_READ, O_RDONLY | O_NONBLOCK); > + ret = blkdev_get_partition(bdev, FMODE_READ, O_RDONLY | O_NONBLOCK); > if (ret) > return ret; > > @@ -2368,7 +2368,7 @@ static int pkt_new_dev(struct pktcdvd_de > return 0; > > out_mem: > - blkdev_put(bdev); > + blkdev_put_partition(bdev); > /* This is safe: open() is still holding a reference. */ > module_put(THIS_MODULE); > return ret; > @@ -2530,7 +2530,7 @@ static int pkt_remove_dev(struct pkt_ctr > if (!IS_ERR(pd->cdrw.thread)) > kthread_stop(pd->cdrw.thread); > > - blkdev_put(pd->bdev); > + blkdev_put_partition(pd->bdev); > > remove_proc_entry(pd->name, pkt_proc); > DPRINTK("pktcdvd: writer %s unmapped\n", pd->name); > diff --git a/fs/block_dev.c b/fs/block_dev.c > index b721bb6..642e9b2 100644 > --- a/fs/block_dev.c > +++ b/fs/block_dev.c > @@ -822,9 +822,6 @@ struct block_device *open_by_devnum(dev_ > > EXPORT_SYMBOL(open_by_devnum); > > -static int > -blkdev_get_partition(struct block_device *bdev, mode_t mode, unsigned flags); > - > struct block_device *open_partition_by_devnum(dev_t dev, unsigned mode) > { > struct block_device *bdev = bdget(dev); > @@ -1031,7 +1028,7 @@ blkdev_get_whole(struct block_device *bd > return do_open(bdev, &fake_file, BD_MUTEX_WHOLE); > } > > -static int > +int > blkdev_get_partition(struct block_device *bdev, mode_t mode, unsigned flags) > { > /* > @@ -1050,6 +1047,8 @@ blkdev_get_partition(struct block_device > return do_open(bdev, &fake_file, BD_MUTEX_PARTITION); > } > > +EXPORT_SYMBOL(blkdev_get_partition); > + > static int blkdev_open(struct inode * inode, struct file * filp) > { > struct block_device *bdev; > diff --git a/include/linux/fs.h b/include/linux/fs.h > index b9f1c18..10f8c56 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -1455,6 +1455,7 @@ extern int ioctl_by_bdev(struct block_de > extern int blkdev_ioctl(struct block_device *, struct file *, unsigned, unsigned long); > extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); > extern int blkdev_get(struct block_device *, mode_t, unsigned); > +extern int blkdev_get_partition(struct block_device *, mode_t, unsigned); > extern int blkdev_put(struct block_device *); > extern int blkdev_put_partition(struct block_device *); > extern int bd_claim(struct block_device *, void *); Thank you Peter, the above patch removed the "possible recursive locking detected" message. Now, I've got a new one (will this thread never end ?): pktcdvd: writer pktcdvd0 mapped to hdc INFO: trying to register non-static key. the code is fine but needs lockdep annotation. turning off the locking correctness validator. [] show_trace+0xd/0x10 [] dump_stack+0x19/0x1c [] __lock_acquire+0x10f/0x9a5 [] lock_acquire+0x60/0x80 [] _spin_lock_irq+0x1f/0x2e [] wait_for_completion+0x29/0xe5 [] pkt_generic_packet+0x1bb/0x1e8 [pktcdvd] [] pkt_get_disc_info+0x3d/0x77 [pktcdvd] [] pkt_open+0xc3/0xbf4 [pktcdvd] [] do_open+0xa1/0x3bd [] blkdev_open+0x1f/0x48 [] __dentry_open+0xb8/0x186 [] nameidata_to_filp+0x1c/0x2e [] do_filp_open+0x2e/0x35 [] do_sys_open+0x40/0xbb [] sys_open+0x16/0x18 [] sysenter_past_esp+0x56/0x8d UDF-fs INFO UDF 0.9.8.1 (2004/29/09) Mounting volume 'flexbackup', timestamp 2006/03/17 15:29 (1078) (full dmesg attached) -- laurent --------------030603050001060002070307 Content-Type: text/plain; name="dmesg-2.6.18-rc1-mm2-a" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="dmesg-2.6.18-rc1-mm2-a" TGludXggdmVyc2lvbiAyLjYuMTgtcmMxLW1tMiAobGF1cmVudEBhbnRhcmVzLmxvY2FsZG9t YWluKSAoZ2NjIHZlcnNpb24gNC4xLjEgMjAwNjAzMzAgKHByZXJlbGVhc2UpKSAjNzIgU2F0 IEp1bCAxNSAxNToxMDoxOSBDRVNUIDIwMDYKQklPUy1wcm92aWRlZCBwaHlzaWNhbCBSQU0g bWFwOgpzYW5pdGl6ZSBzdGFydApzYW5pdGl6ZSBlbmQKY29weV9lODIwX21hcCgpIHN0YXJ0 OiAwMDAwMDAwMDAwMDAwMDAwIHNpemU6IDAwMDAwMDAwMDAwOWZjMDAgZW5kOiAwMDAwMDAw MDAwMDlmYzAwIHR5cGU6IDEKY29weV9lODIwX21hcCgpIHR5cGUgaXMgRTgyMF9SQU0KYWRk X21lbW9yeV9yZWdpb24oMDAwMDAwMDAwMDAwMDAwMCwgMDAwMDAwMDAwMDA5ZmMwMCwgMSkK Y29weV9lODIwX21hcCgpIHN0YXJ0OiAwMDAwMDAwMDAwMDlmYzAwIHNpemU6IDAwMDAwMDAw MDAwMDA0MDAgZW5kOiAwMDAwMDAwMDAwMGEwMDAwIHR5cGU6IDIKYWRkX21lbW9yeV9yZWdp b24oMDAwMDAwMDAwMDA5ZmMwMCwgMDAwMDAwMDAwMDAwMDQwMCwgMikKY29weV9lODIwX21h cCgpIHN0YXJ0OiAwMDAwMDAwMDAwMGYwMDAwIHNpemU6IDAwMDAwMDAwMDAwMTAwMDAgZW5k OiAwMDAwMDAwMDAwMTAwMDAwIHR5cGU6IDIKYWRkX21lbW9yeV9yZWdpb24oMDAwMDAwMDAw MDBmMDAwMCwgMDAwMDAwMDAwMDAxMDAwMCwgMikKY29weV9lODIwX21hcCgpIHN0YXJ0OiAw MDAwMDAwMDAwMTAwMDAwIHNpemU6IDAwMDAwMDAwMWZlZWMwMDAgZW5kOiAwMDAwMDAwMDFm ZmVjMDAwIHR5cGU6IDEKY29weV9lODIwX21hcCgpIHR5cGUgaXMgRTgyMF9SQU0KYWRkX21l bW9yeV9yZWdpb24oMDAwMDAwMDAwMDEwMDAwMCwgMDAwMDAwMDAxZmVlYzAwMCwgMSkKY29w eV9lODIwX21hcCgpIHN0YXJ0OiAwMDAwMDAwMDFmZmVjMDAwIHNpemU6IDAwMDAwMDAwMDAw MDMwMDAgZW5kOiAwMDAwMDAwMDFmZmVmMDAwIHR5cGU6IDMKYWRkX21lbW9yeV9yZWdpb24o MDAwMDAwMDAxZmZlYzAwMCwgMDAwMDAwMDAwMDAwMzAwMCwgMykKY29weV9lODIwX21hcCgp IHN0YXJ0OiAwMDAwMDAwMDFmZmVmMDAwIHNpemU6IDAwMDAwMDAwMDAwMTAwMDAgZW5kOiAw MDAwMDAwMDFmZmZmMDAwIHR5cGU6IDIKYWRkX21lbW9yeV9yZWdpb24oMDAwMDAwMDAxZmZl ZjAwMCwgMDAwMDAwMDAwMDAxMDAwMCwgMikKY29weV9lODIwX21hcCgpIHN0YXJ0OiAwMDAw MDAwMDFmZmZmMDAwIHNpemU6IDAwMDAwMDAwMDAwMDEwMDAgZW5kOiAwMDAwMDAwMDIwMDAw MDAwIHR5cGU6IDQKYWRkX21lbW9yeV9yZWdpb24oMDAwMDAwMDAxZmZmZjAwMCwgMDAwMDAw MDAwMDAwMTAwMCwgNCkKY29weV9lODIwX21hcCgpIHN0YXJ0OiAwMDAwMDAwMGZmZmYwMDAw IHNpemU6IDAwMDAwMDAwMDAwMTAwMDAgZW5kOiAwMDAwMDAwMTAwMDAwMDAwIHR5cGU6IDIK YWRkX21lbW9yeV9yZWdpb24oMDAwMDAwMDBmZmZmMDAwMCwgMDAwMDAwMDAwMDAxMDAwMCwg MikKIEJJT1MtZTgyMDogMDAwMDAwMDAwMDAwMDAwMCAtIDAwMDAwMDAwMDAwOWZjMDAgKHVz YWJsZSkKIEJJT1MtZTgyMDogMDAwMDAwMDAwMDA5ZmMwMCAtIDAwMDAwMDAwMDAwYTAwMDAg KHJlc2VydmVkKQogQklPUy1lODIwOiAwMDAwMDAwMDAwMGYwMDAwIC0gMDAwMDAwMDAwMDEw MDAwMCAocmVzZXJ2ZWQpCiBCSU9TLWU4MjA6IDAwMDAwMDAwMDAxMDAwMDAgLSAwMDAwMDAw MDFmZmVjMDAwICh1c2FibGUpCiBCSU9TLWU4MjA6IDAwMDAwMDAwMWZmZWMwMDAgLSAwMDAw MDAwMDFmZmVmMDAwIChBQ1BJIGRhdGEpCiBCSU9TLWU4MjA6IDAwMDAwMDAwMWZmZWYwMDAg LSAwMDAwMDAwMDFmZmZmMDAwIChyZXNlcnZlZCkKIEJJT1MtZTgyMDogMDAwMDAwMDAxZmZm ZjAwMCAtIDAwMDAwMDAwMjAwMDAwMDAgKEFDUEkgTlZTKQogQklPUy1lODIwOiAwMDAwMDAw MGZmZmYwMDAwIC0gMDAwMDAwMDEwMDAwMDAwMCAocmVzZXJ2ZWQpCjUxMU1CIExPV01FTSBh dmFpbGFibGUuCk9uIG5vZGUgMCB0b3RhbHBhZ2VzOiAxMzEwNTIKICBETUEgem9uZTogNDA5 NiBwYWdlcywgTElGTyBiYXRjaDowCiAgTm9ybWFsIHpvbmU6IDEyNjk1NiBwYWdlcywgTElG TyBiYXRjaDozMQpETUkgMi4zIHByZXNlbnQuCkFDUEk6IFJTRFAgKHYwMDAgQVNVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIEAgMHgwMDBmNmE4MApBQ1BJOiBSU0RU ICh2MDAxIEFTVVMgICBBN1YxMzMtQyAweDMwMzAzMDMxIE1TRlQgMHgzMTMxMzAzMSkgQCAw eDFmZmVjMDAwCkFDUEk6IEZBRFQgKHYwMDEgQVNVUyAgIEE3VjEzMy1DIDB4MzAzMDMwMzEg TVNGVCAweDMxMzEzMDMxKSBAIDB4MWZmZWMwODAKQUNQSTogQk9PVCAodjAwMSBBU1VTICAg QTdWMTMzLUMgMHgzMDMwMzAzMSBNU0ZUIDB4MzEzMTMwMzEpIEAgMHgxZmZlYzA0MApBQ1BJ OiBEU0RUICh2MDAxICAgQVNVUyBBN1YxMzMtQyAweDAwMDAxMDAwIE1TRlQgMHgwMTAwMDAw YikgQCAweDAwMDAwMDAwCkFDUEk6IFBNLVRpbWVyIElPIFBvcnQ6IDB4ZTQwOApBbGxvY2F0 aW5nIFBDSSByZXNvdXJjZXMgc3RhcnRpbmcgYXQgMzAwMDAwMDAgKGdhcDogMjAwMDAwMDA6 ZGZmZjAwMDApCkRldGVjdGVkIDE0MTAuMjE1IE1IeiBwcm9jZXNzb3IuCkJ1aWx0IDEgem9u ZWxpc3RzLiAgVG90YWwgcGFnZXM6IDEzMTA1MgpLZXJuZWwgY29tbWFuZCBsaW5lOiByb290 PS9kZXYvdmdsaW51eDEvbHZyb290IHZpZGVvPXZlc2FmYjp5d3JhcCxtdHJyIHNwbGFzaD1z aWxlbnQgcmVzdW1lPS9kZXYvaGRiNiB2Z2E9NzkxIGluaXQgMQpMb2NhbCBBUElDIGRpc2Fi bGVkIGJ5IEJJT1MgLS0geW91IGNhbiBlbmFibGUgaXQgd2l0aCAibGFwaWMiCm1hcHBlZCBB UElDIHRvIGZmZmZkMDAwICgwMTQwNzAwMCkKRW5hYmxpbmcgZmFzdCBGUFUgc2F2ZSBhbmQg cmVzdG9yZS4uLiBkb25lLgpFbmFibGluZyB1bm1hc2tlZCBTSU1EIEZQVSBleGNlcHRpb24g c3VwcG9ydC4uLiBkb25lLgpJbml0aWFsaXppbmcgQ1BVIzAKUElEIGhhc2ggdGFibGUgZW50 cmllczogMjA0OCAob3JkZXI6IDExLCA4MTkyIGJ5dGVzKQpDb25zb2xlOiBjb2xvdXIgZHVt bXkgZGV2aWNlIDgweDI1CkxvY2sgZGVwZW5kZW5jeSB2YWxpZGF0b3I6IENvcHlyaWdodCAo YykgMjAwNiBSZWQgSGF0LCBJbmMuLCBJbmdvIE1vbG5hcgouLi4gTUFYX0xPQ0tERVBfU1VC Q0xBU1NFUzogICAgOAouLi4gTUFYX0xPQ0tfREVQVEg6ICAgICAgICAgIDMwCi4uLiBNQVhf TE9DS0RFUF9LRVlTOiAgICAgICAgMjA0OAouLi4gQ0xBU1NIQVNIX1NJWkU6ICAgICAgICAg ICAxMDI0Ci4uLiBNQVhfTE9DS0RFUF9FTlRSSUVTOiAgICAgODE5MgouLi4gTUFYX0xPQ0tE RVBfQ0hBSU5TOiAgICAgIDgxOTIKLi4uIENIQUlOSEFTSF9TSVpFOiAgICAgICAgICA0MDk2 CiBtZW1vcnkgdXNlZCBieSBsb2NrIGRlcGVuZGVuY3kgaW5mbzogNjk2IGtCCiBwZXIgdGFz ay1zdHJ1Y3QgbWVtb3J5IGZvb3RwcmludDogMTIwMCBieXRlcwotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KfCBMb2NraW5nIEFQSSB0ZXN0c3VpdGU6Ci0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzcGluIHx3bG9jayB8cmxv Y2sgfG11dGV4IHwgd3NlbSB8IHJzZW0gfAogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAg ICAgICAgICAgICAgICAgIEEtQSBkZWFkbG9jazogIG9rICB8ICBvayAgfCAgb2sgIHwgIG9r ICB8ICBvayAgfCAgb2sgIHwKICAgICAgICAgICAgICAgICBBLUItQi1BIGRlYWRsb2NrOiAg b2sgIHwgIG9rICB8ICBvayAgfCAgb2sgIHwgIG9rICB8ICBvayAgfAogICAgICAgICAgICAg QS1CLUItQy1DLUEgZGVhZGxvY2s6ICBvayAgfCAgb2sgIHwgIG9rICB8ICBvayAgfCAgb2sg IHwgIG9rICB8CiAgICAgICAgICAgICBBLUItQy1BLUItQyBkZWFkbG9jazogIG9rICB8ICBv ayAgfCAgb2sgIHwgIG9rICB8ICBvayAgfCAgb2sgIHwKICAgICAgICAgQS1CLUItQy1DLUQt RC1BIGRlYWRsb2NrOiAgb2sgIHwgIG9rICB8ICBvayAgfCAgb2sgIHwgIG9rICB8ICBvayAg fAogICAgICAgICBBLUItQy1ELUItRC1ELUEgZGVhZGxvY2s6ICBvayAgfCAgb2sgIHwgIG9r ICB8ICBvayAgfCAgb2sgIHwgIG9rICB8CiAgICAgICAgIEEtQi1DLUQtQi1DLUQtQSBkZWFk bG9jazogIG9rICB8ICBvayAgfCAgb2sgIHwgIG9rICB8ICBvayAgfCAgb2sgIHwKICAgICAg ICAgICAgICAgICAgICBkb3VibGUgdW5sb2NrOiAgb2sgIHwgIG9rICB8ICBvayAgfCAgb2sg IHwgIG9rICB8ICBvayAgfAogICAgICAgICAgICAgICAgICBpbml0aWFsaXplIGhlbGQ6ICBv ayAgfCAgb2sgIHwgIG9rICB8ICBvayAgfCAgb2sgIHwgIG9rICB8CiAgICAgICAgICAgICAg ICAgYmFkIHVubG9jayBvcmRlcjogIG9rICB8ICBvayAgfCAgb2sgIHwgIG9rICB8ICBvayAg fCAgb2sgIHwKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgIHJlY3Vyc2l2 ZSByZWFkLWxvY2s6ICAgICAgICAgICAgIHwgIG9rICB8ICAgICAgICAgICAgIHwgIG9rICB8 CiAgICAgICAgICAgcmVjdXJzaXZlIHJlYWQtbG9jayAjMjogICAgICAgICAgICAgfCAgb2sg IHwgICAgICAgICAgICAgfCAgb2sgIHwKICAgICAgICAgICAgbWl4ZWQgcmVhZC13cml0ZS1s b2NrOiAgICAgICAgICAgICB8ICBvayAgfCAgICAgICAgICAgICB8ICBvayAgfAogICAgICAg ICAgICBtaXhlZCB3cml0ZS1yZWFkLWxvY2s6ICAgICAgICAgICAgIHwgIG9rICB8ICAgICAg ICAgICAgIHwgIG9rICB8CiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBoYXJkLWlycXMt b24gKyBpcnEtc2FmZS1BLzEyOiAgb2sgIHwgIG9rICB8ICBvayAgfAogICAgIHNvZnQtaXJx cy1vbiArIGlycS1zYWZlLUEvMTI6ICBvayAgfCAgb2sgIHwgIG9rICB8CiAgICAgaGFyZC1p cnFzLW9uICsgaXJxLXNhZmUtQS8yMTogIG9rICB8ICBvayAgfCAgb2sgIHwKICAgICBzb2Z0 LWlycXMtb24gKyBpcnEtc2FmZS1BLzIxOiAgb2sgIHwgIG9rICB8ICBvayAgfAogICAgICAg c2lycS1zYWZlLUEgPT4gaGlycXMtb24vMTI6ICBvayAgfCAgb2sgIHwgIG9rICB8CiAgICAg ICBzaXJxLXNhZmUtQSA9PiBoaXJxcy1vbi8yMTogIG9rICB8ICBvayAgfCAgb2sgIHwKICAg ICAgICAgaGFyZC1zYWZlLUEgKyBpcnFzLW9uLzEyOiAgb2sgIHwgIG9rICB8ICBvayAgfAog ICAgICAgICBzb2Z0LXNhZmUtQSArIGlycXMtb24vMTI6ICBvayAgfCAgb2sgIHwgIG9rICB8 CiAgICAgICAgIGhhcmQtc2FmZS1BICsgaXJxcy1vbi8yMTogIG9rICB8ICBvayAgfCAgb2sg IHwKICAgICAgICAgc29mdC1zYWZlLUEgKyBpcnFzLW9uLzIxOiAgb2sgIHwgIG9rICB8ICBv ayAgfAogICAgaGFyZC1zYWZlLUEgKyB1bnNhZmUtQiAjMS8xMjM6ICBvayAgfCAgb2sgIHwg IG9rICB8CiAgICBzb2Z0LXNhZmUtQSArIHVuc2FmZS1CICMxLzEyMzogIG9rICB8ICBvayAg fCAgb2sgIHwKICAgIGhhcmQtc2FmZS1BICsgdW5zYWZlLUIgIzEvMTMyOiAgb2sgIHwgIG9r ICB8ICBvayAgfAogICAgc29mdC1zYWZlLUEgKyB1bnNhZmUtQiAjMS8xMzI6ICBvayAgfCAg b2sgIHwgIG9rICB8CiAgICBoYXJkLXNhZmUtQSArIHVuc2FmZS1CICMxLzIxMzogIG9rICB8 ICBvayAgfCAgb2sgIHwKICAgIHNvZnQtc2FmZS1BICsgdW5zYWZlLUIgIzEvMjEzOiAgb2sg IHwgIG9rICB8ICBvayAgfAogICAgaGFyZC1zYWZlLUEgKyB1bnNhZmUtQiAjMS8yMzE6ICBv ayAgfCAgb2sgIHwgIG9rICB8CiAgICBzb2Z0LXNhZmUtQSArIHVuc2FmZS1CICMxLzIzMTog IG9rICB8ICBvayAgfCAgb2sgIHwKICAgIGhhcmQtc2FmZS1BICsgdW5zYWZlLUIgIzEvMzEy OiAgb2sgIHwgIG9rICB8ICBvayAgfAogICAgc29mdC1zYWZlLUEgKyB1bnNhZmUtQiAjMS8z MTI6ICBvayAgfCAgb2sgIHwgIG9rICB8CiAgICBoYXJkLXNhZmUtQSArIHVuc2FmZS1CICMx LzMyMTogIG9rICB8ICBvayAgfCAgb2sgIHwKICAgIHNvZnQtc2FmZS1BICsgdW5zYWZlLUIg IzEvMzIxOiAgb2sgIHwgIG9rICB8ICBvayAgfAogICAgaGFyZC1zYWZlLUEgKyB1bnNhZmUt QiAjMi8xMjM6ICBvayAgfCAgb2sgIHwgIG9rICB8CiAgICBzb2Z0LXNhZmUtQSArIHVuc2Fm ZS1CICMyLzEyMzogIG9rICB8ICBvayAgfCAgb2sgIHwKICAgIGhhcmQtc2FmZS1BICsgdW5z YWZlLUIgIzIvMTMyOiAgb2sgIHwgIG9rICB8ICBvayAgfAogICAgc29mdC1zYWZlLUEgKyB1 bnNhZmUtQiAjMi8xMzI6ICBvayAgfCAgb2sgIHwgIG9rICB8CiAgICBoYXJkLXNhZmUtQSAr IHVuc2FmZS1CICMyLzIxMzogIG9rICB8ICBvayAgfCAgb2sgIHwKICAgIHNvZnQtc2FmZS1B ICsgdW5zYWZlLUIgIzIvMjEzOiAgb2sgIHwgIG9rICB8ICBvayAgfAogICAgaGFyZC1zYWZl LUEgKyB1bnNhZmUtQiAjMi8yMzE6ICBvayAgfCAgb2sgIHwgIG9rICB8CiAgICBzb2Z0LXNh ZmUtQSArIHVuc2FmZS1CICMyLzIzMTogIG9rICB8ICBvayAgfCAgb2sgIHwKICAgIGhhcmQt c2FmZS1BICsgdW5zYWZlLUIgIzIvMzEyOiAgb2sgIHwgIG9rICB8ICBvayAgfAogICAgc29m dC1zYWZlLUEgKyB1bnNhZmUtQiAjMi8zMTI6ICBvayAgfCAgb2sgIHwgIG9rICB8CiAgICBo YXJkLXNhZmUtQSArIHVuc2FmZS1CICMyLzMyMTogIG9rICB8ICBvayAgfCAgb2sgIHwKICAg IHNvZnQtc2FmZS1BICsgdW5zYWZlLUIgIzIvMzIxOiAgb2sgIHwgIG9rICB8ICBvayAgfAog ICAgICBoYXJkLWlycSBsb2NrLWludmVyc2lvbi8xMjM6ICBvayAgfCAgb2sgIHwgIG9rICB8 CiAgICAgIHNvZnQtaXJxIGxvY2staW52ZXJzaW9uLzEyMzogIG9rICB8ICBvayAgfCAgb2sg IHwKICAgICAgaGFyZC1pcnEgbG9jay1pbnZlcnNpb24vMTMyOiAgb2sgIHwgIG9rICB8ICBv ayAgfAogICAgICBzb2Z0LWlycSBsb2NrLWludmVyc2lvbi8xMzI6ICBvayAgfCAgb2sgIHwg IG9rICB8CiAgICAgIGhhcmQtaXJxIGxvY2staW52ZXJzaW9uLzIxMzogIG9rICB8ICBvayAg fCAgb2sgIHwKICAgICAgc29mdC1pcnEgbG9jay1pbnZlcnNpb24vMjEzOiAgb2sgIHwgIG9r ICB8ICBvayAgfAogICAgICBoYXJkLWlycSBsb2NrLWludmVyc2lvbi8yMzE6ICBvayAgfCAg b2sgIHwgIG9rICB8CiAgICAgIHNvZnQtaXJxIGxvY2staW52ZXJzaW9uLzIzMTogIG9rICB8 ICBvayAgfCAgb2sgIHwKICAgICAgaGFyZC1pcnEgbG9jay1pbnZlcnNpb24vMzEyOiAgb2sg IHwgIG9rICB8ICBvayAgfAogICAgICBzb2Z0LWlycSBsb2NrLWludmVyc2lvbi8zMTI6ICBv ayAgfCAgb2sgIHwgIG9rICB8CiAgICAgIGhhcmQtaXJxIGxvY2staW52ZXJzaW9uLzMyMTog IG9rICB8ICBvayAgfCAgb2sgIHwKICAgICAgc29mdC1pcnEgbG9jay1pbnZlcnNpb24vMzIx OiAgb2sgIHwgIG9rICB8ICBvayAgfAogICAgICBoYXJkLWlycSByZWFkLXJlY3Vyc2lvbi8x MjM6ICBvayAgfAogICAgICBzb2Z0LWlycSByZWFkLXJlY3Vyc2lvbi8xMjM6ICBvayAgfAog ICAgICBoYXJkLWlycSByZWFkLXJlY3Vyc2lvbi8xMzI6ICBvayAgfAogICAgICBzb2Z0LWly cSByZWFkLXJlY3Vyc2lvbi8xMzI6ICBvayAgfAogICAgICBoYXJkLWlycSByZWFkLXJlY3Vy c2lvbi8yMTM6ICBvayAgfAogICAgICBzb2Z0LWlycSByZWFkLXJlY3Vyc2lvbi8yMTM6ICBv ayAgfAogICAgICBoYXJkLWlycSByZWFkLXJlY3Vyc2lvbi8yMzE6ICBvayAgfAogICAgICBz b2Z0LWlycSByZWFkLXJlY3Vyc2lvbi8yMzE6ICBvayAgfAogICAgICBoYXJkLWlycSByZWFk LXJlY3Vyc2lvbi8zMTI6ICBvayAgfAogICAgICBzb2Z0LWlycSByZWFkLXJlY3Vyc2lvbi8z MTI6ICBvayAgfAogICAgICBoYXJkLWlycSByZWFkLXJlY3Vyc2lvbi8zMjE6ICBvayAgfAog ICAgICBzb2Z0LWlycSByZWFkLXJlY3Vyc2lvbi8zMjE6ICBvayAgfAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkdvb2QsIGFsbCAy MTggdGVzdGNhc2VzIHBhc3NlZCEgfAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KRGVudHJ5IGNhY2hlIGhhc2ggdGFibGUgZW50cmllczogNjU1MzYgKG9yZGVyOiA2LCAy NjIxNDQgYnl0ZXMpCklub2RlLWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogMzI3NjggKG9y ZGVyOiA1LCAxMzEwNzIgYnl0ZXMpCk1lbW9yeTogNTE0NDkyay81MjQyMDhrIGF2YWlsYWJs ZSAoMTYxMWsga2VybmVsIGNvZGUsIDkxNzZrIHJlc2VydmVkLCAxMTc2ayBkYXRhLCAxODBr IGluaXQsIDBrIGhpZ2htZW0pCkNoZWNraW5nIGlmIHRoaXMgcHJvY2Vzc29yIGhvbm91cnMg dGhlIFdQIGJpdCBldmVuIGluIHN1cGVydmlzb3IgbW9kZS4uLiBPay4KQ2FsaWJyYXRpbmcg ZGVsYXkgdXNpbmcgdGltZXIgc3BlY2lmaWMgcm91dGluZS4uIDI4MjQuNDAgQm9nb01JUFMg KGxwaj01NjQ4ODA3KQpNb3VudC1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDUxMgpDUFU6 IEFmdGVyIGdlbmVyaWMgaWRlbnRpZnksIGNhcHM6IDAzODNmOWZmIGMxY2JmOWZmIDAwMDAw MDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwCkNQVTogQWZ0ZXIgdmVu ZG9yIGlkZW50aWZ5LCBjYXBzOiAwMzgzZjlmZiBjMWNiZjlmZiAwMDAwMDAwMCAwMDAwMDAw MCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMApDUFU6IEwxIEkgQ2FjaGU6IDY0SyAoNjQg Ynl0ZXMvbGluZSksIEQgY2FjaGUgNjRLICg2NCBieXRlcy9saW5lKQpDUFU6IEwyIENhY2hl OiAyNTZLICg2NCBieXRlcy9saW5lKQpDUFU6IEFmdGVyIGFsbCBpbml0cywgY2FwczogMDM4 M2Y5ZmYgYzFjYmY5ZmYgMDAwMDAwMDAgMDAwMDA0MjAgMDAwMDAwMDAgMDAwMDAwMDAgMDAw MDAwMDAKSW50ZWwgbWFjaGluZSBjaGVjayBhcmNoaXRlY3R1cmUgc3VwcG9ydGVkLgpJbnRl bCBtYWNoaW5lIGNoZWNrIHJlcG9ydGluZyBlbmFibGVkIG9uIENQVSMwLgpDUFU6IEFNRCBB dGhsb24oVE0pIFhQIDE2MDArIHN0ZXBwaW5nIDAyCkNoZWNraW5nICdobHQnIGluc3RydWN0 aW9uLi4uIE9LLgpBQ1BJOiBDb3JlIHJldmlzaW9uIDIwMDYwNzA3CiB0YnhmYWNlLTAxMDcg WzAxXSBsb2FkX3RhYmxlcyAgICAgICAgICAgOiBBQ1BJIFRhYmxlcyBzdWNjZXNzZnVsbHkg YWNxdWlyZWQKUGFyc2luZyBhbGwgQ29udHJvbCBNZXRob2RzOgpUYWJsZSBbRFNEVF0oaWQg MDAwNSkgLSAzNTYgT2JqZWN0cyB3aXRoIDM4IERldmljZXMgMTE1IE1ldGhvZHMgMjQgUmVn aW9ucwpBQ1BJIE5hbWVzcGFjZSBzdWNjZXNzZnVsbHkgbG9hZGVkIGF0IHJvb3QgYzA1M2M2 MzAKQUNQSTogc2V0dGluZyBFTENSIHRvIDAyMDAgKGZyb20gMGMyMCkKZXZ4ZmV2bnQtMDA4 OSBbMDJdIGVuYWJsZSAgICAgICAgICAgICAgICA6IFRyYW5zaXRpb24gdG8gQUNQSSBtb2Rl IHN1Y2Nlc3NmdWwKY2hlY2tpbmcgaWYgaW1hZ2UgaXMgaW5pdHJhbWZzLi4uIGl0IGlzCkZy ZWVpbmcgaW5pdHJkIG1lbW9yeTogMjI0ayBmcmVlZApORVQ6IFJlZ2lzdGVyZWQgcHJvdG9j b2wgZmFtaWx5IDE2CkFDUEk6IGJ1cyB0eXBlIHBjaSByZWdpc3RlcmVkClBDSTogUENJIEJJ T1MgcmV2aXNpb24gMi4xMCBlbnRyeSBhdCAweGYxMTgwLCBsYXN0IGJ1cz0xClNldHRpbmcg dXAgc3RhbmRhcmQgUENJIHJlc291cmNlcwpldmdwZWJsay0wOTUxIFswNF0gZXZfY3JlYXRl X2dwZV9ibG9jayAgIDogR1BFIDAwIHRvIDBGIFtfR1BFXSAyIHJlZ3Mgb24gaW50IDB4OQpl dmdwZWJsay0xMDQ4IFswM10gZXZfaW5pdGlhbGl6ZV9ncGVfYmxvYzogRm91bmQgNCBXYWtl LCBFbmFibGVkIDAgUnVudGltZSBHUEVzIGluIHRoaXMgYmxvY2sKQ29tcGxldGluZyBSZWdp b24vRmllbGQvQnVmZmVyL1BhY2thZ2UgaW5pdGlhbGl6YXRpb246Li4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpJbml0aWFsaXplZCAy My8yNCBSZWdpb25zIDIvMiBGaWVsZHMgMTkvMTkgQnVmZmVycyAxMS8xNCBQYWNrYWdlcyAo MzY1IG5vZGVzKQpJbml0aWFsaXppbmcgRGV2aWNlL1Byb2Nlc3Nvci9UaGVybWFsIG9iamVj dHMgYnkgZXhlY3V0aW5nIF9JTkkgbWV0aG9kczoKRXhlY3V0ZWQgMCBfSU5JIG1ldGhvZHMg cmVxdWlyaW5nIDAgX1NUQSBleGVjdXRpb25zIChleGFtaW5lZCA0MSBvYmplY3RzKQpBQ1BJ OiBJbnRlcnByZXRlciBlbmFibGVkCkFDUEk6IFVzaW5nIFBJQyBmb3IgaW50ZXJydXB0IHJv dXRpbmcKQUNQSTogUENJIEludGVycnVwdCBMaW5rIFtMTktBXSAoSVJRcyAzIDQgNSA2IDcg OSAxMCAqMTEgMTIgMTQgMTUpCkFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LQl0gKElS UXMgMyA0IDUgNiA3IDkgKjEwIDExIDEyIDE0IDE1KQpBQ1BJOiBQQ0kgSW50ZXJydXB0IExp bmsgW0xOS0NdIChJUlFzIDMgNCA1IDYgNyA5IDEwIDExIDEyIDE0IDE1KSAqMCwgZGlzYWJs ZWQuCkFDUEk6IFBDSSBJbnRlcnJ1cHQgTGluayBbTE5LRF0gKElSUXMgMyA0ICo1IDYgNyA5 IDEwIDExIDEyIDE0IDE1KQpBQ1BJOiBQQ0kgUm9vdCBCcmlkZ2UgW1BDSTBdICgwMDAwOjAw KQpQQ0k6IFByb2JpbmcgUENJIGhhcmR3YXJlIChidXMgMDApCkFDUEk6IEFzc3VtZSByb290 IGJyaWRnZSBbXF9TQl8uUENJMF0gYnVzIGlzIDAKUENJIHF1aXJrOiByZWdpb24gZTIwMC1l MjdmIGNsYWltZWQgYnkgdnQ4MmM2ODYgSFctbW9uClBDSSBxdWlyazogcmVnaW9uIGU4MDAt ZTgwZiBjbGFpbWVkIGJ5IHZ0ODJjNjg2IFNNQgpCb290IHZpZGVvIGRldmljZSBpcyAwMDAw OjAxOjAwLjAKQUNQSTogUENJIEludGVycnVwdCBSb3V0aW5nIFRhYmxlIFtcX1NCXy5QQ0kw Ll9QUlRdClBDSTogVXNpbmcgQUNQSSBmb3IgSVJRIHJvdXRpbmcKUENJOiBJZiBhIGRldmlj ZSBkb2Vzbid0IHdvcmssIHRyeSAicGNpPXJvdXRlaXJxIi4gIElmIGl0IGhlbHBzLCBwb3N0 IGEgcmVwb3J0ClBDSTogQnJpZGdlOiAwMDAwOjAwOjAxLjAKICBJTyB3aW5kb3c6IGRpc2Fi bGVkLgogIE1FTSB3aW5kb3c6IGM2MDAwMDAwLWM3ZWZmZmZmCiAgUFJFRkVUQ0ggd2luZG93 OiBjN2YwMDAwMC1jZmZmZmZmZgpQQ0k6IFNldHRpbmcgbGF0ZW5jeSB0aW1lciBvZiBkZXZp Y2UgMDAwMDowMDowMS4wIHRvIDY0Ck5FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkg MgpJUCByb3V0ZSBjYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDQwOTYgKG9yZGVyOiAyLCAx NjM4NCBieXRlcykKVENQIGVzdGFibGlzaGVkIGhhc2ggdGFibGUgZW50cmllczogMTYzODQg KG9yZGVyOiA3LCA2NTUzNjAgYnl0ZXMpClRDUCBiaW5kIGhhc2ggdGFibGUgZW50cmllczog ODE5MiAob3JkZXI6IDYsIDM2MDQ0OCBieXRlcykKVENQOiBIYXNoIHRhYmxlcyBjb25maWd1 cmVkIChlc3RhYmxpc2hlZCAxNjM4NCBiaW5kIDgxOTIpClRDUCByZW5vIHJlZ2lzdGVyZWQK U2ltcGxlIEJvb3QgRmxhZyBhdCAweDNhIHNldCB0byAweDEKSW5pdGlhbGl6aW5nIENyeXB0 b2dyYXBoaWMgQVBJCmlvIHNjaGVkdWxlciBub29wIHJlZ2lzdGVyZWQKaW8gc2NoZWR1bGVy IGFudGljaXBhdG9yeSByZWdpc3RlcmVkCmlvIHNjaGVkdWxlciBkZWFkbGluZSByZWdpc3Rl cmVkCmlvIHNjaGVkdWxlciBjZnEgcmVnaXN0ZXJlZCAoZGVmYXVsdCkKQXBwbHlpbmcgVklB IHNvdXRoYnJpZGdlIHdvcmthcm91bmQuClBDSTogRGlzYWJsaW5nIFZpYSBleHRlcm5hbCBB UElDIHJvdXRpbmcKdmVzYWZiOiBmcmFtZWJ1ZmZlciBhdCAweGM4MDAwMDAwLCBtYXBwZWQg dG8gMHhlMDg4MDAwMCwgdXNpbmcgMzA3MmssIHRvdGFsIDY1NTM2awp2ZXNhZmI6IG1vZGUg aXMgMTAyNHg3Njh4MTYsIGxpbmVsZW5ndGg9MjA0OCwgcGFnZXM9MAp2ZXNhZmI6IHByb3Rl Y3RlZCBtb2RlIGludGVyZmFjZSBpbmZvIGF0IGMwMDA6MGViOQp2ZXNhZmI6IHBtaTogc2V0 IGRpc3BsYXkgc3RhcnQgPSBjMDBjMGVmMiwgc2V0IHBhbGV0dGUgPSBjMDBjMGY2OAp2ZXNh ZmI6IHBtaTogcG9ydHMgPSAzYjQgM2I1IDNiYSAzYzAgM2MxIDNjNCAzYzUgM2M2IDNjNyAz YzggM2M5IDNjYyAzY2UgM2NmIDNkMCAzZDEgM2QyIDNkMyAzZDQgM2Q1IDNkYSAKdmVzYWZi OiBzY3JvbGxpbmc6IHl3cmFwIHVzaW5nIHByb3RlY3RlZCBtb2RlIGludGVyZmFjZSwgeXJl c192aXJ0dWFsPTE1MzYKdmVzYWZiOiBUcnVlY29sb3I6IHNpemU9MDo1OjY6NSwgc2hpZnQ9 MDoxMTo1OjAKQ29uc29sZTogc3dpdGNoaW5nIHRvIGNvbG91ciBmcmFtZSBidWZmZXIgZGV2 aWNlIDEyOHg0OApmYjA6IFZFU0EgVkdBIGZyYW1lIGJ1ZmZlciBkZXZpY2UKQUNQSTogUG93 ZXIgQnV0dG9uIChGRikgW1BXUkZdCkFDUEk6IFBvd2VyIEJ1dHRvbiAoQ00pIFtQV1JCXQpB Q1BJOiBDUFUwIChwb3dlciBzdGF0ZXM6IEMxW0MxXSBDMltDMl0pCkFDUEk6IFByb2Nlc3Nv ciBbQ1BVMF0gKHN1cHBvcnRzIDE2IHRocm90dGxpbmcgc3RhdGVzKQpSQU1ESVNLIGRyaXZl ciBpbml0aWFsaXplZDogMTYgUkFNIGRpc2tzIG9mIDQwOTZLIHNpemUgMTAyNCBibG9ja3Np emUKbmUyay1wY2kuYzp2MS4wMyA5LzIyLzIwMDMgRC4gQmVja2VyL1AuIEdvcnRtYWtlcgog IGh0dHA6Ly93d3cuc2N5bGQuY29tL25ldHdvcmsvbmUyay1wY2kuaHRtbApBQ1BJOiBQQ0kg SW50ZXJydXB0IExpbmsgW0xOS0JdIGVuYWJsZWQgYXQgSVJRIDEwClBDSTogc2V0dGluZyBJ UlEgMTAgYXMgbGV2ZWwtdHJpZ2dlcmVkCkFDUEk6IFBDSSBJbnRlcnJ1cHQgMDAwMDowMDow Yi4wW0FdIC0+IExpbmsgW0xOS0JdIC0+IEdTSSAxMCAobGV2ZWwsIGxvdykgLT4gSVJRIDEw CmV0aDA6IFJlYWxUZWsgUlRMLTgwMjkgZm91bmQgYXQgMHhhNDAwLCBJUlEgMTAsIDAwOjQw Ojk1OjQ2OjZFOjJELgpuZXRjb25zb2xlOiBub3QgY29uZmlndXJlZCwgYWJvcnRpbmcKVW5p Zm9ybSBNdWx0aS1QbGF0Zm9ybSBFLUlERSBkcml2ZXIgUmV2aXNpb246IDcuMDBhbHBoYTIK aWRlOiBBc3N1bWluZyAzM01IeiBzeXN0ZW0gYnVzIHNwZWVkIGZvciBQSU8gbW9kZXM7IG92 ZXJyaWRlIHdpdGggaWRlYnVzPXh4CnNlcmlvOiBpODA0MiBBVVggcG9ydCBhdCAweDYwLDB4 NjQgaXJxIDEyCnNlcmlvOiBpODA0MiBLQkQgcG9ydCBhdCAweDYwLDB4NjQgaXJxIDEKbWlj ZTogUFMvMiBtb3VzZSBkZXZpY2UgY29tbW9uIGZvciBhbGwgbWljZQpUQ1AgYmljIHJlZ2lz dGVyZWQKTkVUOiBSZWdpc3RlcmVkIHByb3RvY29sIGZhbWlseSAxClVzaW5nIElQSSBTaG9y dGN1dCBtb2RlClRpbWU6IHRzYyBjbG9ja3NvdXJjZSBoYXMgYmVlbiBpbnN0YWxsZWQuCkFD UEk6IChzdXBwb3J0cyBTMCBTMSBTMyBTNCBTNSkKQklPUyBFREQgZmFjaWxpdHkgdjAuMTYg MjAwNC1KdW4tMjUsIDIgZGV2aWNlcyBmb3VuZApGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVt b3J5OiAxODBrIGZyZWVkCldyaXRlIHByb3RlY3RpbmcgdGhlIGtlcm5lbCByZWFkLW9ubHkg ZGF0YTogNzAyawppbnB1dDogQVQgVHJhbnNsYXRlZCBTZXQgMiBrZXlib2FyZCBhcyAvY2xh c3MvaW5wdXQvaW5wdXQwClZQX0lERTogSURFIGNvbnRyb2xsZXIgYXQgUENJIHNsb3QgMDAw MDowMDowNC4xClZQX0lERTogY2hpcHNldCByZXZpc2lvbiA2ClZQX0lERTogbm90IDEwMCUg bmF0aXZlIG1vZGU6IHdpbGwgcHJvYmUgaXJxcyBsYXRlcgpWUF9JREU6IFZJQSB2dDgyYzY4 NmIgKHJldiA0MCkgSURFIFVETUExMDAgY29udHJvbGxlciBvbiBwY2kwMDAwOjAwOjA0LjEK ICAgIGlkZTA6IEJNLURNQSBhdCAweGQ4MDAtMHhkODA3LCBCSU9TIHNldHRpbmdzOiBoZGE6 RE1BLCBoZGI6RE1BCiAgICBpZGUxOiBCTS1ETUEgYXQgMHhkODA4LTB4ZDgwZiwgQklPUyBz ZXR0aW5nczogaGRjOkRNQSwgaGRkOkRNQQpQcm9iaW5nIElERSBpbnRlcmZhY2UgaWRlMC4u LgpUaW1lOiBhY3BpX3BtIGNsb2Nrc291cmNlIGhhcyBiZWVuIGluc3RhbGxlZC4KaW5wdXQ6 IEltRXhQUy8yIEdlbmVyaWMgRXhwbG9yZXIgTW91c2UgYXMgL2NsYXNzL2lucHV0L2lucHV0 MQpoZGE6IFNUMzQwMDE2QSwgQVRBIERJU0sgZHJpdmUKaGRiOiBNYXh0b3IgNlkwODBMMCwg QVRBIERJU0sgZHJpdmUKaWRlMCBhdCAweDFmMC0weDFmNywweDNmNiBvbiBpcnEgMTQKaGRh OiBtYXggcmVxdWVzdCBzaXplOiAxMjhLaUIKaGRhOiA3ODE2NTM2MCBzZWN0b3JzICg0MDAy MCBNQikgdy8yMDQ4S2lCIENhY2hlLCBDSFM9NjU1MzUvMTYvNjMsIFVETUEoMTAwKQpoZGE6 IGNhY2hlIGZsdXNoZXMgbm90IHN1cHBvcnRlZAogaGRhOiBoZGExIGhkYTIgaGRhMyA8IGhk YTUgaGRhNiBoZGE3ID4gaGRhNApoZGI6IG1heCByZXF1ZXN0IHNpemU6IDEyOEtpQgpoZGI6 IDE2MDA4NjUyOCBzZWN0b3JzICg4MTk2NCBNQikgdy8yMDQ4S2lCIENhY2hlLCBDSFM9NjU1 MzUvMTYvNjMsIFVETUEoMTAwKQpoZGI6IGNhY2hlIGZsdXNoZXMgc3VwcG9ydGVkCiBoZGI6 IGhkYjEgaGRiMiA8IGhkYjUgaGRiNiBoZGI3IGhkYjggaGRiOSA+ClByb2JpbmcgSURFIGlu dGVyZmFjZSBpZGUxLi4uCmhkYzogSEwtRFQtU1QgRFZEUkFNIEdTQS00MTY1QiwgQVRBUEkg Q0QvRFZELVJPTSBkcml2ZQpoZGQ6IENELTk1MEUvQUtVLCBBVEFQSSBDRC9EVkQtUk9NIGRy aXZlCmlkZTEgYXQgMHgxNzAtMHgxNzcsMHgzNzYgb24gaXJxIDE1CmRldmljZS1tYXBwZXI6 IGlvY3RsOiA0LjguMC1pb2N0bCAoMjAwNi0wNi0yNCkgaW5pdGlhbGlzZWQ6IGRtLWRldmVs QHJlZGhhdC5jb20Ka2pvdXJuYWxkIHN0YXJ0aW5nLiAgQ29tbWl0IGludGVydmFsIDUgc2Vj b25kcwpFWFQzLWZzOiBtb3VudGVkIGZpbGVzeXN0ZW0gd2l0aCBvcmRlcmVkIGRhdGEgbW9k ZS4KdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2Jmcwp1c2Jj b3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIGh1Ygp1c2Jjb3JlOiByZWdp c3RlcmVkIG5ldyBkZXZpY2UgZHJpdmVyIHVzYgpVU0IgVW5pdmVyc2FsIEhvc3QgQ29udHJv bGxlciBJbnRlcmZhY2UgZHJpdmVyIHYzLjAKQUNQSTogUENJIEludGVycnVwdCBMaW5rIFtM TktEXSBlbmFibGVkIGF0IElSUSA1ClBDSTogc2V0dGluZyBJUlEgNSBhcyBsZXZlbC10cmln Z2VyZWQKQUNQSTogUENJIEludGVycnVwdCAwMDAwOjAwOjA0LjJbRF0gLT4gTGluayBbTE5L RF0gLT4gR1NJIDUgKGxldmVsLCBsb3cpIC0+IElSUSA1CnVoY2lfaGNkIDAwMDA6MDA6MDQu MjogVUhDSSBIb3N0IENvbnRyb2xsZXIKdWhjaV9oY2QgMDAwMDowMDowNC4yOiBuZXcgVVNC IGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDEKdWhjaV9oY2QgMDAwMDow MDowNC4yOiBpcnEgNSwgaW8gYmFzZSAweDAwMDBkNDAwCnVzYiB1c2IxOiBuZXcgZGV2aWNl IGZvdW5kLCBpZFZlbmRvcj0wMDAwLCBpZFByb2R1Y3Q9MDAwMAp1c2IgdXNiMTogbmV3IGRl dmljZSBzdHJpbmdzOiBNZnI9MywgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9MQp1c2IgdXNi MTogUHJvZHVjdDogVUhDSSBIb3N0IENvbnRyb2xsZXIKdXNiIHVzYjE6IE1hbnVmYWN0dXJl cjogTGludXggMi42LjE4LXJjMS1tbTIgdWhjaV9oY2QKdXNiIHVzYjE6IFNlcmlhbE51bWJl cjogMDAwMDowMDowNC4yCnVzYiB1c2IxOiBjb25maWd1cmF0aW9uICMxIGNob3NlbiBmcm9t IDEgY2hvaWNlCmh1YiAxLTA6MS4wOiBVU0IgaHViIGZvdW5kCmh1YiAxLTA6MS4wOiAyIHBv cnRzIGRldGVjdGVkCndhcm5pbmc6IHByb2Nlc3MgYHNsZWVwJyB1c2VkIHRoZSByZW1vdmVk IHN5c2N0bCBzeXN0ZW0gY2FsbApBQ1BJOiBQQ0kgSW50ZXJydXB0IDAwMDA6MDA6MDQuM1tE XSAtPiBMaW5rIFtMTktEXSAtPiBHU0kgNSAobGV2ZWwsIGxvdykgLT4gSVJRIDUKdWhjaV9o Y2QgMDAwMDowMDowNC4zOiBVSENJIEhvc3QgQ29udHJvbGxlcgp1aGNpX2hjZCAwMDAwOjAw OjA0LjM6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIgMgp1 aGNpX2hjZCAwMDAwOjAwOjA0LjM6IGlycSA1LCBpbyBiYXNlIDB4MDAwMGQwMDAKdXNiIHVz YjI6IG5ldyBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTAwMDAsIGlkUHJvZHVjdD0wMDAwCnVz YiB1c2IyOiBuZXcgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51 bWJlcj0xCnVzYiB1c2IyOiBQcm9kdWN0OiBVSENJIEhvc3QgQ29udHJvbGxlcgp1c2IgdXNi MjogTWFudWZhY3R1cmVyOiBMaW51eCAyLjYuMTgtcmMxLW1tMiB1aGNpX2hjZAp1c2IgdXNi MjogU2VyaWFsTnVtYmVyOiAwMDAwOjAwOjA0LjMKdXNiIHVzYjI6IGNvbmZpZ3VyYXRpb24g IzEgY2hvc2VuIGZyb20gMSBjaG9pY2UKaHViIDItMDoxLjA6IFVTQiBodWIgZm91bmQKaHVi IDItMDoxLjA6IDIgcG9ydHMgZGV0ZWN0ZWQKdXNiIDEtMjogbmV3IGxvdyBzcGVlZCBVU0Ig ZGV2aWNlIHVzaW5nIHVoY2lfaGNkIGFuZCBhZGRyZXNzIDIKQUNQSTogUENJIEludGVycnVw dCAwMDAwOjAwOjA5LjBbQV0gLT4gTGluayBbTE5LRF0gLT4gR1NJIDUgKGxldmVsLCBsb3cp IC0+IElSUSA1Cm9oY2kxMzk0OiBmdy1ob3N0MDogT0hDSS0xMzk0IDEuMCAoUENJKTogSVJR PVs1XSAgTU1JTz1bYzU4MDAwMDAtYzU4MDA3ZmZdICBNYXggUGFja2V0PVsyMDQ4XSAgSVIv SVQgY29udGV4dHM9WzgvOF0KdXNiIDEtMjogbmV3IGRldmljZSBmb3VuZCwgaWRWZW5kb3I9 MDQ0ZiwgaWRQcm9kdWN0PWIzMDMKdXNiIDEtMjogbmV3IGRldmljZSBzdHJpbmdzOiBNZnI9 NCwgUHJvZHVjdD0zMCwgU2VyaWFsTnVtYmVyPTAKdXNiIDEtMjogUHJvZHVjdDogRmlyZVN0 b3JtIER1YWwgQW5hbG9nIDIKdXNiIDEtMjogTWFudWZhY3R1cmVyOiBUSFJVU1RNQVNURVIK dXNiIDEtMjogY29uZmlndXJhdGlvbiAjMSBjaG9zZW4gZnJvbSAxIGNob2ljZQpvaGNpMTM5 NDogZnctaG9zdDA6IFJ1bm5pbmcgZG1hIGZhaWxlZCBiZWNhdXNlIE5vZGUgSUQgaXMgbm90 IHZhbGlkCmlucHV0OiBUSFJVU1RNQVNURVIgRmlyZVN0b3JtIER1YWwgQW5hbG9nIDIgYXMg L2NsYXNzL2lucHV0L2lucHV0MgppbnB1dDogVVNCIEhJRCB2MS4xMCBHYW1lcGFkIFtUSFJV U1RNQVNURVIgRmlyZVN0b3JtIER1YWwgQW5hbG9nIDJdIG9uIHVzYi0wMDAwOjAwOjA0LjIt Mgp1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHVzYmhpZApkcml2 ZXJzL3VzYi9pbnB1dC9oaWQtY29yZS5jOiB2Mi42OlVTQiBISUQgY29yZSBkcml2ZXIKd2Fy bmluZzogcHJvY2VzcyBgZGF0ZScgdXNlZCB0aGUgcmVtb3ZlZCBzeXNjdGwgc3lzdGVtIGNh bGwKb2hjaTEzOTQ6IGZ3LWhvc3QwOiBBVCBkbWEgcmVzZXQgY3R4PTAsIGFib3J0aW5nIHRy YW5zbWlzc2lvbgppZWVlMTM5NDogQ3VycmVudCByZW1vdGUgSVJNIGlzIG5vdCAxMzk0YS0y MDAwIGNvbXBsaWFudCwgcmVzZXR0aW5nLi4uCkxpbnV4IGFncGdhcnQgaW50ZXJmYWNlIHYw LjEwMSAoYykgRGF2ZSBKb25lcwphZ3BnYXJ0OiBEZXRlY3RlZCBWSUEgVHdpc3Rlci1LL0tU MTMzeC9LTTEzMyBjaGlwc2V0CmFncGdhcnQ6IEFHUCBhcGVydHVyZSBpcyAyNTZNIEAgMHhk MDAwMDAwMAppbnB1dDogUEMgU3BlYWtlciBhcyAvY2xhc3MvaW5wdXQvaW5wdXQzCmllZWUx Mzk0OiBIb3N0IGFkZGVkOiBJRDpCVVNbMC0wMDoxMDIzXSAgR1VJRFswMDMwOGQwMTIwZTA4 NWNhXQpVc2luZyBzcGVjaWZpYyBob3RrZXkgZHJpdmVyCkVYVDMgRlMgb24gZG0tNCwgaW50 ZXJuYWwgam91cm5hbApBZGRpbmcgMjU3MDAwayBzd2FwIG9uIC9kZXYvaGRiNi4gIFByaW9y aXR5OjEgZXh0ZW50czoxIGFjcm9zczoyNTcwMDBrCkFkZGluZyA2NDIyMGsgc3dhcCBvbiAv ZGV2L2hkYTUuICBQcmlvcml0eToyIGV4dGVudHM6MSBhY3Jvc3M6NjQyMjBrCkFkZGluZyA3 OTUyMDhrIHN3YXAgb24gL2Rldi9oZGI3LiAgUHJpb3JpdHk6MiBleHRlbnRzOjEgYWNyb3Nz Ojc5NTIwOGsKUmVpc2VyRlM6IGRtLTE6IGZvdW5kIHJlaXNlcmZzIGZvcm1hdCAiMy42IiB3 aXRoIHN0YW5kYXJkIGpvdXJuYWwKUmVpc2VyRlM6IGRtLTE6IHVzaW5nIG9yZGVyZWQgZGF0 YSBtb2RlClJlaXNlckZTOiBkbS0xOiBqb3VybmFsIHBhcmFtczogZGV2aWNlIGRtLTEsIHNp emUgODE5Miwgam91cm5hbCBmaXJzdCBibG9jayAxOCwgbWF4IHRyYW5zIGxlbiAxMDI0LCBt YXggYmF0Y2ggOTAwLCBtYXggY29tbWl0IGFnZSAzMCwgbWF4IHRyYW5zIGFnZSAzMApSZWlz ZXJGUzogZG0tMTogY2hlY2tpbmcgdHJhbnNhY3Rpb24gbG9nIChkbS0xKQpSZWlzZXJGUzog ZG0tMTogVXNpbmcgcjUgaGFzaCB0byBzb3J0IG5hbWVzCkxvYWRpbmcgUmVpc2VyNC4gU2Vl IHd3dy5uYW1lc3lzLmNvbSBmb3IgYSBkZXNjcmlwdGlvbiBvZiBSZWlzZXI0Lgpwc19oYXNo X3RhYmxlOiAzMiBidWNrZXRzCmRfY3Vyc29yX2hhc2hfdGFibGU6IDI1NiBidWNrZXRzCnpf aGFzaF90YWJsZTogODE5MiBidWNrZXRzCnpfaGFzaF90YWJsZTogODE5MiBidWNrZXRzCmpf aGFzaF90YWJsZTogMTYzODQgYnVja2V0cwpsb2FkaW5nIHJlaXNlcjQgYml0bWFwLi4uLi4u ZG9uZSAoMzMgamlmZmllcykKUmVpc2VyRlM6IGhkYTc6IGZvdW5kIHJlaXNlcmZzIGZvcm1h dCAiMy42IiB3aXRoIHN0YW5kYXJkIGpvdXJuYWwKUmVpc2VyRlM6IGhkYTc6IHVzaW5nIG9y ZGVyZWQgZGF0YSBtb2RlClJlaXNlckZTOiBoZGE3OiBqb3VybmFsIHBhcmFtczogZGV2aWNl IGhkYTcsIHNpemUgODE5Miwgam91cm5hbCBmaXJzdCBibG9jayAxOCwgbWF4IHRyYW5zIGxl biAxMDI0LCBtYXggYmF0Y2ggOTAwLCBtYXggY29tbWl0IGFnZSAzMCwgbWF4IHRyYW5zIGFn ZSAzMApSZWlzZXJGUzogaGRhNzogY2hlY2tpbmcgdHJhbnNhY3Rpb24gbG9nIChoZGE3KQpS ZWlzZXJGUzogaGRhNzogVXNpbmcgcjUgaGFzaCB0byBzb3J0IG5hbWVzClJlaXNlckZTOiBk bS0wOiBmb3VuZCByZWlzZXJmcyBmb3JtYXQgIjMuNiIgd2l0aCBzdGFuZGFyZCBqb3VybmFs ClJlaXNlckZTOiBkbS0wOiB1c2luZyBvcmRlcmVkIGRhdGEgbW9kZQpSZWlzZXJGUzogZG0t MDogam91cm5hbCBwYXJhbXM6IGRldmljZSBkbS0wLCBzaXplIDgxOTIsIGpvdXJuYWwgZmly c3QgYmxvY2sgMTgsIG1heCB0cmFucyBsZW4gMTAyNCwgbWF4IGJhdGNoIDkwMCwgbWF4IGNv bW1pdCBhZ2UgMzAsIG1heCB0cmFucyBhZ2UgMzAKUmVpc2VyRlM6IGRtLTA6IGNoZWNraW5n IHRyYW5zYWN0aW9uIGxvZyAoZG0tMCkKUmVpc2VyRlM6IGRtLTA6IFVzaW5nIHI1IGhhc2gg dG8gc29ydCBuYW1lcwpram91cm5hbGQgc3RhcnRpbmcuICBDb21taXQgaW50ZXJ2YWwgNSBz ZWNvbmRzCkVYVDMgRlMgb24gZG0tMiwgaW50ZXJuYWwgam91cm5hbApFWFQzLWZzOiBtb3Vu dGVkIGZpbGVzeXN0ZW0gd2l0aCBvcmRlcmVkIGRhdGEgbW9kZS4KUmVpc2VyRlM6IGRtLTY6 IGZvdW5kIHJlaXNlcmZzIGZvcm1hdCAiMy42IiB3aXRoIHN0YW5kYXJkIGpvdXJuYWwKUmVp c2VyRlM6IGRtLTY6IHVzaW5nIG9yZGVyZWQgZGF0YSBtb2RlClJlaXNlckZTOiBkbS02OiBq b3VybmFsIHBhcmFtczogZGV2aWNlIGRtLTYsIHNpemUgODE5Miwgam91cm5hbCBmaXJzdCBi bG9jayAxOCwgbWF4IHRyYW5zIGxlbiAxMDI0LCBtYXggYmF0Y2ggOTAwLCBtYXggY29tbWl0 IGFnZSAzMCwgbWF4IHRyYW5zIGFnZSAzMApSZWlzZXJGUzogZG0tNjogY2hlY2tpbmcgdHJh bnNhY3Rpb24gbG9nIChkbS02KQpSZWlzZXJGUzogZG0tNjogVXNpbmcgcjUgaGFzaCB0byBz b3J0IG5hbWVzCmxvb3A6IGxvYWRlZCAobWF4IDggZGV2aWNlcykKaGRjOiBBVEFQSSA0MFgg RFZELVJPTSBEVkQtUi1SQU0gQ0QtUi9SVyBkcml2ZSwgMjA0OGtCIENhY2hlLCBVRE1BKDMz KQpVbmlmb3JtIENELVJPTSBkcml2ZXIgUmV2aXNpb246IDMuMjAKaGRkOiBBVEFQSSA0OFgg Q0QtUk9NIGRyaXZlLCAxMjhrQiBDYWNoZSwgRE1BCmhkYTogY2FjaGUgZmx1c2hlcyBub3Qg c3VwcG9ydGVkCndhcm5pbmc6IHByb2Nlc3MgYGxzJyB1c2VkIHRoZSByZW1vdmVkIHN5c2N0 bCBzeXN0ZW0gY2FsbAp3YXJuaW5nOiBwcm9jZXNzIGBwcmNzeXMnIHVzZWQgdGhlIHJlbW92 ZWQgc3lzY3RsIHN5c3RlbSBjYWxsCndhcm5pbmc6IHByb2Nlc3MgYHNsZWVwJyB1c2VkIHRo ZSByZW1vdmVkIHN5c2N0bCBzeXN0ZW0gY2FsbApwa3RjZHZkOiB3cml0ZXIgcGt0Y2R2ZDAg bWFwcGVkIHRvIGhkYwpJTkZPOiB0cnlpbmcgdG8gcmVnaXN0ZXIgbm9uLXN0YXRpYyBrZXku CnRoZSBjb2RlIGlzIGZpbmUgYnV0IG5lZWRzIGxvY2tkZXAgYW5ub3RhdGlvbi4KdHVybmlu ZyBvZmYgdGhlIGxvY2tpbmcgY29ycmVjdG5lc3MgdmFsaWRhdG9yLgogWzxjMDEwNGRiNT5d IHNob3dfdHJhY2UrMHhkLzB4MTAKIFs8YzAxMDRkZDE+XSBkdW1wX3N0YWNrKzB4MTkvMHgx YwogWzxjMDEyYzJlMT5dIF9fbG9ja19hY3F1aXJlKzB4MTBmLzB4OWE1CiBbPGMwMTJjYmQ3 Pl0gbG9ja19hY3F1aXJlKzB4NjAvMHg4MAogWzxjMDI5MjEzMT5dIF9zcGluX2xvY2tfaXJx KzB4MWYvMHgyZQogWzxjMDI4ZmU4Nj5dIHdhaXRfZm9yX2NvbXBsZXRpb24rMHgyOS8weGU1 CiBbPGUxMTM2Mjk5Pl0gcGt0X2dlbmVyaWNfcGFja2V0KzB4MWJiLzB4MWU4IFtwa3RjZHZk XQogWzxlMTEzNjcxYT5dIHBrdF9nZXRfZGlzY19pbmZvKzB4M2QvMHg3NyBbcGt0Y2R2ZF0K IFs8ZTExMzgzNmY+XSBwa3Rfb3BlbisweGMzLzB4YmY0IFtwa3RjZHZkXQogWzxjMDE1OWMz Nj5dIGRvX29wZW4rMHhhMS8weDNiZAogWzxjMDE1YTE3OT5dIGJsa2Rldl9vcGVuKzB4MWYv MHg0OAogWzxjMDE1MWM4Nz5dIF9fZGVudHJ5X29wZW4rMHhiOC8weDE4NgogWzxjMDE1MWRj Mz5dIG5hbWVpZGF0YV90b19maWxwKzB4MWMvMHgyZQogWzxjMDE1MWUwMz5dIGRvX2ZpbHBf b3BlbisweDJlLzB4MzUKIFs8YzAxNTJjZTE+XSBkb19zeXNfb3BlbisweDQwLzB4YmIKIFs8 YzAxNTJkODg+XSBzeXNfb3BlbisweDE2LzB4MTgKIFs8YzAxMDJjMmQ+XSBzeXNlbnRlcl9w YXN0X2VzcCsweDU2LzB4OGQKVURGLWZzIElORk8gVURGIDAuOS44LjEgKDIwMDQvMjkvMDkp IE1vdW50aW5nIHZvbHVtZSAnZmxleGJhY2t1cCcsIHRpbWVzdGFtcCAyMDA2LzAzLzE3IDE1 OjI5ICgxMDc4KQo= --------------030603050001060002070307--