← Back to team overview

kicad-developers team mailing list archive

Font support in KiCAD

 

Hello! 
Has outlined support of cyrillics in KiCAD, it is possible also other languages if to add the description of symbols in a file of fonts (share/grfonte.kifnt). A format of a file of fonts look in kiFont.h. I send you patch to the version trunk revision 1229.

Pavlyukov Alexey
mailto: lexaficus@... 



 ------S5ZD953c-10HL68C0MMm03kNU:1220358215 Content-Type: text/x-diff; name="lfKiCAD.patch"
Content-Disposition: attachment; filename="lfKiCAD.patch"
Content-Transfer-Encoding: base64

SW5kZXg6IENNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxMjI5KQorKysgQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsx
NjIsOSBAQAogaW5zdGFsbChGSUxFUyBmcmVlcm91dGUuam5scCAKICAgICAgICAgREVTVElOQVRJ
T04gJHtLSUNBRF9CSU59CiAgICAgICAgIENPTVBPTkVOVCByZXNvdXJjZXMpCi0KKyAgICAgICAg
CitpbnN0YWxsKEZJTEVTIHNoYXJlL2dyZm9udGUua2lmbnQgREVTVElOQVRJT04gJHtLSUNBRF9E
QVRBfQorICAgIENPTVBPTkVOVCByZXNvdXJjZXMpCiAKIGlmKFVOSVgpCiAKSW5kZXg6IGNvbW1v
bi9iYXNlX3N0cnVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY29tbW9uL2Jhc2Vfc3RydWN0LmNwcAko
cmV2aXNpb24gMTIyOSkKKysrIGNvbW1vbi9iYXNlX3N0cnVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxMCw3ICs0MTAsNyBAQAogICogIGFmZmljaGFnZXMgYSB0cm9wIHBldGl0ZSBlY2hlbGxl
CiAgKi8KIHsKLSAgICBpbnQgICAgICAgICAgICBpaSwgamosIGtrLCBuYmNoYXIsIG5icG9pbnRz
LCBBc2NpaUNvZGUsIGVuZGNhcjsKKyAgICBpbnQgICAgICAgICAgICBpaSwgamosIGtrLCBuYmNo
YXIsIG5icG9pbnRzLCBlbmRjYXI7CiAgICAgaW50ICAgICAgICAgICAgazEsIGsyLCB4MCwgeTA7
CiAgICAgaW50ICAgICAgICAgICAgc2l6ZV9oLCBzaXplX3YsIGVzcGFjZW1lbnQ7CiAgICAgY2hh
ciAgICAgICAgICAgZl9jb2QsIHBsdW1lID0gJ1UnOwpAQCAtNDE1LDcgKzQxNSw2IEBACiAgICAg
aW50ICAgICAgICAgICAgc2l6ZV9oLCBzaXplX3YsIGVzcGFjZW1lbnQ7CiAgICAgY2hhciAgICAg
ICAgICAgZl9jb2QsIHBsdW1lID0gJ1UnOwogICAgIGNvbnN0IHd4Q2hhciogIHB0cjsKLSAgICBj
b25zdCBTSF9DT0RFKiBwdGNhcjsKICAgICBpbnQgICAgICAgICAgICB1eDAsIHV5MCwgZHgsIGR5
OyAgICAvLyBDb29yZCBkZSB0cmFjZSBkZXMgc2VnbWVudHMgZGUgdGV4dGUgJiB2YXJpYWJsZXMg
ZGUgY2FsY3VsICovCiAgICAgaW50ICAgICAgICAgICAgY1gsIGNZOyAgICAgICAgICAgICAgLy8g
Q2VudHJlIGR1IHRleHRlCiAgICAgaW50ICAgICAgICAgICAgb3gsIG95OyAgICAgICAgICAgICAg
Ly8gY29vcmQgZGUgdHJhY2UgZHUgY2FyYWN0ZXJlIGNvdXJhbnQKQEAgLTUzOCwxMCArNTM3LDkg
QEAKICAgICB3aGlsZSgga2srKyA8IG5iY2hhciApCiAgICAgewogICAgICAgICB4MCA9IDA7IHkw
ID0gMDsKLSAgICAgICAgQXNjaWlDb2RlID0gKCpwdHIpICYgMjU1OwotICAgICAgICBwdGNhciA9
IGdyYXBoaWNfZm9udGVfc2hhcGVbQXNjaWlDb2RlXTsgIC8qIHB0Y2FyIHBvaW50ZSBsYSBkZXNj
cmlwdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqICBkdSBjYXJhY3RlcmUgYSBkZXNzaW5lciAqLwotCisgICAgICAgIGtpY2FkOjpGb250OjpC
eXRlQXJyYXlfdCBwYXRoID0gZ2V0S2lDYWRGb250KCkuZ2V0Q2hhclBhdGgoKnB0cik7CisgICAg
ICAgIGtpY2FkOjpGb250OjpCeXRlQXJyYXlfdDo6Y29uc3RfaXRlcmF0b3IgcHRjYXIgPSBwYXRo
LmJlZ2luKCk7ICAKKyAgICAgICAgCiAgICAgICAgIGZvciggZW5kY2FyID0gRkFMU0U7ICFlbmRj
YXI7IHB0Y2FyKysgKQogICAgICAgICB7CiAgICAgICAgICAgICBmX2NvZCA9ICpwdGNhcjsKSW5k
ZXg6IGNvbW1vbi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb21tb24vQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDEyMjkpCisrKyBjb21tb24vQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICAgICB0b29sYmFycy5jcHAKICAgICB0cmlnby5jcHAK
ICAgICB3b3Jrc2hlZXQuY3BwCi0gICAgd3h3aW5lZGEuY3BwKQorICAgIHd4d2luZWRhLmNwcAor
ICAgIGtpRm9udC5jcHApCiAKIGFkZF9saWJyYXJ5KGNvbW1vbiAke0NPTU1PTl9TUkNTfSkKSW5k
ZXg6IGNvbW1vbi9kcmF3dHh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb21tb24vZHJhd3R4dC5jcHAJ
KHJldmlzaW9uIDEyMjkpCisrKyBjb21tb24vZHJhd3R4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDcgQEAKICAqICAgICAgaWYgd2lkdGggPCAwIDogZHJhdyBzZWdtZW50cyBpbiBz
a2V0Y2ggbW9kZSwgd2lkdGggPSBhYnMod2lkdGgpCiAgKi8KIHsKLSAgICBpbnQgICAgICAgICAg
ICBpaSwga2ssIG5iY2hhciwgQXNjaWlDb2RlLCBlbmRjYXI7CisgICAgaW50ICAgICAgICAgICAg
aWksIGtrLCBuYmNoYXIsIGVuZGNhcjsKICAgICBpbnQgICAgICAgICAgICBrMSwgazIsIHgwLCB5
MDsKICAgICBpbnQgICAgICAgICAgICB6b29tOwogICAgIGludCAgICAgICAgICAgIHNpemVfaCwg
c2l6ZV92LCBlc3BhY2VtZW50OwpAQCAtNDQsNyArNDQsNiBAQAogICAgIGludCAgICAgICAgICAg
IHpvb207CiAgICAgaW50ICAgICAgICAgICAgc2l6ZV9oLCBzaXplX3YsIGVzcGFjZW1lbnQ7CiAg
ICAgU0hfQ09ERSAgICAgICAgZl9jb2QsIHBsdW1lID0gJ1UnOwotICAgIGNvbnN0IFNIX0NPREUq
IHB0Y2FyOwogICAgIGludCAgICAgICAgICAgIHB0cjsKICAgICBpbnQgICAgICAgICAgICB1eDAs
IHV5MCwgZHgsIGR5OyAgICAvLyBEcmF3IGNvb3JkaW5hdGUgZm9yIHNlZ21lbnRzIHRvIGRyYXcu
IGFsc28gdXNlZCBpbiBzb21lIG90aGVyIGNhbGN1bGF0aW9uCiAgICAgaW50ICAgICAgICAgICAg
Y1gsIGNZOyAgICAgICAgICAgICAgLy8gVGV4dGUgY2VudGVyCkBAIC0yMTksMTAgKzIxOCwxMCBA
QAogICAgIHdoaWxlKCBraysrIDwgbmJjaGFyICkKICAgICB7CiAgICAgICAgIHgwID0gMDsgeTAg
PSAwOwotICAgICAgICBBc2NpaUNvZGUgPSBUZXh0LkdldENoYXIoIHB0ciApICYgMjU1OwotICAg
ICAgICBwdGNhciA9IGdyYXBoaWNfZm9udGVfc2hhcGVbQXNjaWlDb2RlXTsgIC8qIHB0Y2FyIHBv
aW50ZSBsYSBkZXNjcmlwdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqICBkdSBjYXJhY3RlcmUgYSBkZXNzaW5lciAqLwogCisgICAgICAgIGtp
Y2FkOjpGb250OjpCeXRlQXJyYXlfdCBwYXRoID0gZ2V0S2lDYWRGb250KCkuZ2V0Q2hhclBhdGgo
VGV4dC5HZXRDaGFyKHB0cikpOworICAgICAgICBraWNhZDo6Rm9udDo6Qnl0ZUFycmF5X3Q6OmNv
bnN0X2l0ZXJhdG9yIHB0Y2FyID0gcGF0aC5iZWdpbigpOyAgCisgICAgICAgIAogICAgICAgICBm
b3IoIGlpID0gMCwgZW5kY2FyID0gRkFMU0U7ICFlbmRjYXI7IHB0Y2FyKysgKQogICAgICAgICB7
CiAgICAgICAgICAgICBmX2NvZCA9ICpwdGNhcjsKQEAgLTMwMCwxMSArMjk5LDEwIEBACiAgKiAg
aWQgRHJhd0dyYXBoaWNUZXh0LCBmb3IgcGxvdCBncmFwaGljIHRleHQKICAqLwogewotICAgIGlu
dCAgICAgICAgICAgIGtrLCBuYmNoYXIsIGVuZCwgQXNjaWlDb2RlOworICAgIGludCAgICAgICAg
ICAgIGtrLCBuYmNoYXIsIGVuZDsKICAgICBpbnQgICAgICAgICAgICBrMSwgazIsIHgwLCB5MCwg
b3gsIG95OwogICAgIGludCAgICAgICAgICAgIHNpemVfaCwgc2l6ZV92LCBlc3BhY2VtZW50Owog
ICAgIFNIX0NPREUgICAgICAgIGZfY29kLCBwbHVtZSA9ICdVJzsKLSAgICBjb25zdCBTSF9DT0RF
KiBwdGNhcjsKICAgICBpbnQgICAgICAgICAgICBwdHI7CiAgICAgaW50ICAgICAgICAgICAgdXgw
LCB1eTAsIGR4LCBkeTsgICAgLy8gQ29vcmQgZGUgdHJhY2UgZGVzIHNlZ21lbnRzIGRlIHRleHRl
ICYgdmFyaWFibGVzIGRlIGNhbGN1bCAqLwogICAgIGludCAgICAgICAgICAgIGNYLCBjWTsgICAg
ICAgICAgICAgIC8vIENlbnRyZSBkdSB0ZXh0ZQpAQCAtNDIzLDEwICs0MjEsOSBAQAogCiAgICAg
d2hpbGUoIGtrKysgPCBuYmNoYXIgKQogICAgIHsKLSAgICAgICAgQXNjaWlDb2RlID0gVGV4dC5H
ZXRDaGFyKCBwdHIgKSAmIDI1NTsKLSAgICAgICAgcHRjYXIgPSBncmFwaGljX2ZvbnRlX3NoYXBl
W0FzY2lpQ29kZV07ICAvKiBwdGNhciBwb2ludGUgbGEgZGVzY3JpcHRpb24KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgZHUgY2FyYWN0ZXJlIGEg
ZGVzc2luZXIgKi8KLQorICAgICAgICBraWNhZDo6Rm9udDo6Qnl0ZUFycmF5X3QgcGF0aCA9IGdl
dEtpQ2FkRm9udCgpLmdldENoYXJQYXRoKFRleHQuR2V0Q2hhcihwdHIpKTsKKyAgICAgICAga2lj
YWQ6OkZvbnQ6OkJ5dGVBcnJheV90Ojpjb25zdF9pdGVyYXRvciBwdGNhciA9IHBhdGguYmVnaW4o
KTsgIAorICAgICAgICAKICAgICAgICAgZm9yKCBlbmQgPSAwOyBlbmQgPT0gMDsgcHRjYXIrKyAp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGZfY29kID0gKnB0Y2FyOwpJbmRleDogY29tbW9uL2tp
Rm9udC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gY29tbW9uL2tpRm9udC5jcHAJKHJldmlzaW9uIDApCisr
KyBjb21tb24va2lGb250LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDkgQEAKKyNpbmNs
dWRlICJraUZvbnQuaCIKKyNpbmNsdWRlIDx3eC9zc3RyZWFtLmg+CisjaW5jbHVkZSA8d3gvd2Zz
dHJlYW0uaD4KKyNpbmNsdWRlIDx3eC90eHRzdHJtLmg+CisjaW5jbHVkZSAiZmN0c3lzLmgiCisj
aW5jbHVkZSAiY29tbW9uLmgiCisjaW5jbHVkZSA8d3gvZW5jY29udi5oPgorCit1c2luZyBuYW1l
c3BhY2Uga2ljYWQ7CisKK2NvbnN0IGtpY2FkOjpGb250JiBnZXRLaUNhZEZvbnQoKQoreworCXN0
YXRpYyBraWNhZDo6Rm9udCBmb250IChSZXR1cm5LaWNhZERhdGFzUGF0aCgpICsgd3hUKCJncmZv
bnRlLmtpZm50IikpOworCXJldHVybiBmb250OworfQorCisKK0ZvbnQ6OkZvbnQoY29uc3Qgd3hT
dHJpbmcmIGZpbGVuYW1lKQoreworCWxvYWQoZmlsZW5hbWUpOworfQorCit2b2lkIEZvbnQ6Omxv
YWQoY29uc3Qgd3hTdHJpbmcmIGZpbGVuYW1lKQoreworCXd4RmlsZUlucHV0U3RyZWFtIGZpbGUo
ZmlsZW5hbWUpOworCWxvYWQoZmlsZSk7Cit9CisKK3ZvaWQgRm9udDo6bG9hZCh3eElucHV0U3Ry
ZWFtJiBzdHJlYW0pCit7CisJc3ltYm9sTWFwLmNsZWFyKCk7CisJYWRkKHN0cmVhbSk7Cit9CisK
K3ZvaWQgRm9udDo6YWRkKHd4SW5wdXRTdHJlYW0mIHN0cmVhbSkKK3sKKwkvL3d4VGV4dElucHV0
U3RyZWFtIGlzdHJlYW0oc3RyZWFtLCB3eFQoJ1xuJykpOworCXN0ZDo6dmVjdG9yPGNoYXI+IGJ1
ZmZlcjsKKwl3aGlsZSAoIXN0cmVhbS5Fb2YoKSkKKwl7CisJCWNoYXIgYnVmID0gMDsKKwkJc3Ry
ZWFtLlJlYWQoJmJ1ZiwgMSk7CisJCWJ1ZmZlci5wdXNoX2JhY2soYnVmKTsKKwkJaWYgKGJ1ZiA9
PSAnXG4nKQorCQl7CisJCQlidWZmZXIucHVzaF9iYWNrKDApOworCQkJd3hTdHJpbmcgc3RyID0g
d3hTdHJpbmc6OkZyb21VVEY4KCZidWZmZXJbMF0pOworCQkJYnVmZmVyLmNsZWFyKCk7CisJCQl3
eENoYXIgc3ltYm9sID0gc3RyWzBdOworCQkJQnl0ZUFycmF5X3QgZGF0YSA9IHBhcnNlU3RyaW5n
KHN0cik7CisJCQlzeW1ib2xNYXAuaW5zZXJ0KFN5bWJvbE1hcF90Ojp2YWx1ZV90eXBlKHN5bWJv
bCwgZGF0YSkgKTsKKwkJfQorCX0KKworfQorCitGb250OjpCeXRlQXJyYXlfdCBGb250OjpwYXJz
ZVN0cmluZyhjb25zdCB3eFN0cmluZyYgc3RyKSBjb25zdAoreworCXd4U3RyaW5nIGJ1ZjsKKwor
CUJ5dGVBcnJheV90IHJlc3VsdDsKKwkKKwlmb3IgKGludCBpPTI7IGk8c3RyLnNpemUoKS0xOyAr
K2kpCisJeworCQlpZiAoc3RyW2ldID09IHd4VCgnLCcpKQorCQl7CQkJCisJCQlpZiAoYnVmID09
IHd4VCgiWCIpKQorCQkJCWJyZWFrOworCisJCQlpZiAoYnVmID09IHd4VCgiVSIpKQorCQkJewor
CQkJCXJlc3VsdC5wdXNoX2JhY2soJ1UnKTsKKwkJCQlidWYuQ2xlYXIoKTsKKwkJCQljb250aW51
ZTsKKwkJCX0KKworCQkJaWYgKGJ1ZiA9PSB3eFQoIkQiKSkKKwkJCXsKKwkJCQlyZXN1bHQucHVz
aF9iYWNrKCdEJyk7CisJCQkJYnVmLkNsZWFyKCk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJ
CWxvbmcgeiA9IDA7CisJCQlidWYuVG9Mb25nKCZ6KTsKKwkJCXJlc3VsdC5wdXNoX2JhY2soeik7
CisJCQlidWYuQ2xlYXIoKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWJ1ZiArPSBzdHJbaV07CisJ
CX0KKwl9CisKKwlyZXN1bHQucHVzaF9iYWNrKCdYJyk7CisJcmV0dXJuIHJlc3VsdDsKK30KKwor
Rm9udDo6Qnl0ZUFycmF5X3QgRm9udDo6Z2V0Q2hhclBhdGgod3hDaGFyIHN5bWJvbCkgY29uc3QK
K3sKKwlTeW1ib2xNYXBfdDo6Y29uc3RfaXRlcmF0b3IgaW5kZXggPSBzeW1ib2xNYXAuZmluZChz
eW1ib2wpOworCWlmIChpbmRleCAhPSBzeW1ib2xNYXAuZW5kKCkpCisJCXJldHVybiBpbmRleC0+
c2Vjb25kOworCQorCUJ5dGVBcnJheV90IHJlc3VsdDsKKwlyZXN1bHQucHVzaF9iYWNrKCdYJyk7
CisJcmV0dXJuIHJlc3VsdDsKK30KKwpJbmRleDogaW5jbHVkZS9ncmZvbnRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gaW5jbHVkZS9ncmZvbnRlLmgJKHJldmlzaW9uIDEyMjkpCisrKyBpbmNsdWRlL2dyZm9u
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsMTIgQEAKICNpZm5kZWYgX0dSRk9OVEVf
SF8KICNkZWZpbmUgX0dSRk9OVEVfSF8KIAorI2luY2x1ZGUgImtpRm9udC5oIgorCitjb25zdCBr
aWNhZDo6Rm9udCYgZ2V0S2lDYWRGb250KCk7CisKICNkZWZpbmUgU0hfQ09ERSBzaWduZWQgY2hh
cgotZXh0ZXJuIGNvbnN0IFNIX0NPREUgKmdyYXBoaWNfZm9udGVfc2hhcGVbMjU2XTsKK2V4dGVy
biBjb25zdCBTSF9DT0RFICpub19ncmFwaGljX2ZvbnRlX3NoYXBlWzI1Nl07CiAKICNpZmRlZiBF
REFfRFJBV0JBU0UKIApAQCAtMTc0LDcgKzE3OCw3IEBACiBjb25zdCBTSF9DT0RFIGNoYXJfc2hh
cGVfdV9jaXJjW10gPSB7VXAsNiwxLERuLDIsMSwwLDMsMCw2LDIsOCw2LDgsVXAsNywxLERuLDks
NCw3LDcsVXAsWH07CiBjb25zdCBTSF9DT0RFIGNoYXJfc2hhcGVfdV90cmVtYVtdID0ge1VwLDYs
MSxEbiwyLDEsMCwzLDAsNiwyLDgsNiw4LFVwLDksMixEbiw5LDMsVXAsOSw1LERuLDksNixVcCxY
fTsKIAotY29uc3QgU0hfQ09ERSAqZ3JhcGhpY19mb250ZV9zaGFwZVsyNTZdID0KK2NvbnN0IFNI
X0NPREUgKm5vX2dyYXBoaWNfZm9udGVfc2hhcGVbMjU2XSA9CiAJewogCS8vIGNvZGVzIDAuLjMx
OgogCW5vc2hhcGUsIG5vc2hhcGUsIG5vc2hhcGUsIG5vc2hhcGUsIG5vc2hhcGUsIG5vc2hhcGUs
IG5vc2hhcGUsIG5vc2hhcGUsCkBAIC0yNjYsNSArMjcwLDYgQEAKIAogCX0gOwogI2VuZGlmCisK
ICNlbmRpZgkvLyBpZm5kZWYgX0dSRk9OVEVfSF8KIApJbmRleDogaW5jbHVkZS9raUZvbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBpbmNsdWRlL2tpRm9udC5oCShyZXZpc2lvbiAwKQorKysgaW5jbHVkZS9r
aUZvbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorI2lmbmRlZiBLSUZPTlRfSF8K
KyNkZWZpbmUgS0lGT05UX0hfCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8dmVjdG9yPgor
I2luY2x1ZGUgPHd4L3N0cmluZy5oPgorI2luY2x1ZGUgPHd4L3N0cmVhbS5oPgorCituYW1lc3Bh
Y2Uga2ljYWQKK3sKKy8qKgorICogRm9udCBLaUNBRCAKKyAqIHRoZSBGb3JtYXQgb2YgYSBmaWxl
IG9mIGZvbnRzLiA8YnIvPiAKKyAqIHRoZSBmaWxlIGlzIHdyaXR0ZW4gZG93biBpbiBjb2Rpbmcg
VVRGLTguIDxici8+IAorICogRm9ybWF0IGxpbmVzIG9mIHJlcHJlc2VudGF0aW9uIG9mIGEgc3lt
Ym9sOiA8YnIvPgorICogdGhlIFNZTUJPTCB0aGUgU1BBQ0UgW1tDT01NQU5EXSBbQ09PUkRJTkFU
RV9ZIENPTU1BIENPT1JESU5BVEVfWF1dIFggPGJyLz4KKyAqIHRoZSBFeGFtcGxlOiAiKyBVLCA0
LDEsIEQsIDQsNywgVSwgMSw0LCBELCA3LDQsIFUsIFggIi4gPGJyLz4KKyAqIFNlZSBhbHNvIGEg
ZmlsZSBncmZvbnRlLmtpZm50IDxici8+CisgKiB0aGUgRm9ybWF0IG9mIGNvbW1hbmRzIHN1Y2gg
YXMgaW4gS2lDQUQgZ3Jmb250ZS5oLiA8YnIvPgorICogdGhlIENPTU1BTkQgJyBVICcgLSBUbyBs
aWZ0IGEgZmVhdGhlci4gPGJyLz4KKyAqIHRoZSBDT01NQU5EICcgRCAnIC0gVG8gbG93ZXIgYSBm
ZWF0aGVyLiA8YnIvPgorICogdGhlIENPTU1BTkQgJyBYICcgLSB0aGUgRW5kIG9mIHRoZSBkZXNj
cmlwdGlvbi4gPGJyLz4KKyAqIENPT1JESU5BVEVfWCBjYW4gaGF2ZSB2YWx1ZXMgZnJvbSAwIHVw
IHRvIDkuIDxici8+IAorICogQ09PUkRJTkFURV9ZIGNhbiBoYXZlIHZhbHVlcyBmcm9tLTMgdXAg
dG8gOS4gPGJyLz4gCisgKi8KK2NsYXNzIEZvbnQKK3sKK3B1YmxpYzoKKwkvKgorCSAqIFxwYXJh
bSBmaWxlbmFtZSBmb250IGZpbGUgbmFtZSB0byBsb2FkCisJICovCisJRm9udChjb25zdCB3eFN0
cmluZyYgZmlsZW5hbWUpOworCS8qKgorCSAqIExvYWQgZm9udCBmcm9tIGZpbGUKKwkgKiBccGFy
YW0gZmlsZW5hbWUgZm9udCBmaWxlIG5hbWUKKwkgKi8KKwl2b2lkIGxvYWQoY29uc3Qgd3hTdHJp
bmcmIGZpbGVuYW1lKTsKKworCS8qKgorCSAqIExvYWQgZm9udCBmcm9tIHN0cmVhbQorCSAqIFxw
YXJhbSBzdHJlYW0gZm9udCBzb3VyY2UKKwkgKi8KKwl2b2lkIGxvYWQod3hJbnB1dFN0cmVhbSYg
c3RyZWFtKTsKKworCS8qKgorCSAqIEFkZCBzeW1ib2wgcGF0aHMgZnJvbSBzdHJlYW0KKwkgKiBc
cGFyYW0gZGV2aWNlIGZvbnQgc291cmNlCisJICovCisJdm9pZCBhZGQod3hJbnB1dFN0cmVhbSYg
c3RyZWFtKTsKKworCXR5cGVkZWYgc3RkOjp2ZWN0b3I8c2lnbmVkIGNoYXI+IEJ5dGVBcnJheV90
OworCisJLyoqCisJICogTWFwIG9mIHN5bWJvbCBwYXRoCisJICovCisJdHlwZWRlZiBzdGQ6Om1h
cDx3eENoYXIsIEJ5dGVBcnJheV90PiBTeW1ib2xNYXBfdDsKKworCS8qKgorCSAqIEdldCBzeW1i
b2wgcGF0aAorCSAqIFxwYXJhbSBzeW1ib2wgc3ltYm9sCisJICogXHJldHVybiBzeW1ib2wgcGF0
aAorCSAqLworCUJ5dGVBcnJheV90IGdldENoYXJQYXRoKHd4Q2hhciBzeW1ib2wpIGNvbnN0Owor
cHJpdmF0ZToKKwlCeXRlQXJyYXlfdCBwYXJzZVN0cmluZyhjb25zdCB3eFN0cmluZyYgc3RyKSBj
b25zdDsKK3ByaXZhdGU6CisJU3ltYm9sTWFwX3Qgc3ltYm9sTWFwOworfTsKKworfQorOworCisj
ZW5kaWYgLypLSUZPTlRfSF8qLwpJbmRleDogaW5jbHVkZS9tYWNyb3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBpbmNsdWRlL21hY3Jvcy5oCShyZXZpc2lvbiAxMjI5KQorKysgaW5jbHVkZS9tYWNyb3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICNpZm5kZWYgTUFDUk9TX0gKICNkZWZpbmUg
TUFDUk9TX0gKIAorLyoKICNpZiB3eFVTRV9VTklDT0RFCiAjZGVmaW5lIENPTlZfVE9fVVRGOCgg
d3hzdHJpbmcgKSAgICAgKCAoY29uc3QgY2hhciopIHd4Q29udkN1cnJlbnQtPmNXWDJNQiggd3hz
dHJpbmcgKSApCiAjZGVmaW5lIENPTlZfRlJPTV9VVEY4KCB1dGY4c3RyaW5nICkgKCB3eENvbnZD
dXJyZW50LT5jTUIyV0MoIHV0ZjhzdHJpbmcgKSApCkBAIC0xMCw2ICsxMSwxNSBAQAogI2RlZmlu
ZSBDT05WX1RPX1VURjgoIHd4c3RyaW5nICkgICAgICggKGNvbnN0IGNoYXIqKSAoIHd4c3RyaW5n
LmNfc3RyKCkgKSApCiAjZGVmaW5lIENPTlZfRlJPTV9VVEY4KCB1dGY4c3RyaW5nICkgKHV0Zjhz
dHJpbmcpCiAjZW5kaWYKKyovCisKKyNpZiB3eFVTRV9VTklDT0RFCisjZGVmaW5lIENPTlZfVE9f
VVRGOCggd3hzdHJpbmcgKSAgICAgKCB3eHN0cmluZy5Ub1VURjgoKS5yZWxlYXNlKCkgKQorI2Rl
ZmluZSBDT05WX0ZST01fVVRGOCggdXRmOHN0cmluZyApICggd3hTdHJpbmc6OkZyb21VVEY4KHV0
ZjhzdHJpbmcpICkKKyNlbHNlCisjZGVmaW5lIENPTlZfVE9fVVRGOCggd3hzdHJpbmcgKSAgICAg
KCB3eHN0cmluZy5Ub1VURjgoKS5yZWxlYXNlKCkgKQorI2RlZmluZSBDT05WX0ZST01fVVRGOCgg
dXRmOHN0cmluZyApICh3eFN0cmluZzo6RnJvbVVURjgodXRmOHN0cmluZykpCisjZW5kaWYKIAog
LyogdmlvbGF0aW9uIG9mIEMrKyBzdGFuZGFyZCwgY2Fubm90IHVzZSBtaW4oKSBhbmQgbWF4KCks
IGkuZS4gaW4gbG93ZXJjYXNlCiAgI2lmbmRlZiBtaW4KSW5kZXg6IHBjYm5ldy9wbG90X3J0bi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcGNibmV3L3Bsb3RfcnRuLmNwcAkocmV2aXNpb24gMTIyOSkKKysr
IHBjYm5ldy9wbG90X3J0bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw3ICs2MDQsNiBAQAog
ICAgIGludCAgICAgICAgICAgIGtrID0gMCwgazEsIGsyLCBlbmQ7CiAgICAgaW50ICAgICAgICAg
ICAgZXNwYWNlbWVudDsKICAgICBjaGFyICAgICAgICAgICBmX2NvZCwgcGx1bWU7Ci0gICAgY29u
c3QgU0hfQ09ERSogcHRjYXI7CiAgICAgaW50ICAgICAgICAgICAgb3gsIG95LCBmeCwgZnk7ICAv
KiBDb29yZCBkZSBkZWJ1dCBldCBmaW4gZGVzIHNlZ21lbnRzIGEgdHJhY2VyICovCiAgICAgaW50
ICAgICAgICAgICAgc3gsIHN5OyAgICAgICAgICAvKiBjb29yZCBkdSBkZWJ1dCBkdSBjYXJhY3Rl
cmUgY291cmFudCAqLwogICAgIGludCAgICAgICAgICAgIG5iY29kZXMgPSBUZXh0LkxlbigpOwpA
QCAtNjI0LDkgKzYyMywxMSBAQAogICAgIC8qIHRyYWNlIGR1IHRleHRlICovCiAgICAgZm9yKCA7
IGtrIDwgbmJjb2Rlczsga2srKyApCiAgICAgewotICAgICAgICBpbnQgY29kZSA9IFRleHQuR2V0
Q2hhcigga2sgKSAmIDB4RkY7Ci0gICAgICAgIHB0Y2FyID0gZ3JhcGhpY19mb250ZV9zaGFwZVtj
b2RlXTsgIC8qIHB0Y2FyIHBvaW50ZSBsYSBkZXNjcmlwdGlvbgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgZHUgY2FyYWN0ZXJlIGEgZGVzc2luZXIgKi8K
KyAgICAgICAgaW50IGNvZGUgPSBUZXh0LkdldENoYXIoIGtrICk7CisgICAgICAgIC8vcHRjYXIg
PSBncmFwaGljX2ZvbnRlX3NoYXBlW2NvZGVdOyAgLyogcHRjYXIgcG9pbnRlIGxhIGRlc2NyaXB0
aW9uCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogIGR1
IGNhcmFjdGVyZSBhIGRlc3NpbmVyICovCisgICAgICAgIGtpY2FkOjpGb250OjpCeXRlQXJyYXlf
dCBwYXRoID0gZ2V0S2lDYWRGb250KCkuZ2V0Q2hhclBhdGgoY29kZSk7CisgICAgICAgIGtpY2Fk
OjpGb250OjpCeXRlQXJyYXlfdDo6Y29uc3RfaXRlcmF0b3IgcHRjYXIgPSBwYXRoLmJlZ2luKCk7
ICAKIAogICAgICAgICBwbHVtZSA9ICdVJzsKICAgICAgICAgb3ggPSBzeDsKSW5kZXg6IHNoYXJl
L2dyZm9udGUua2lmbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc2hhcmUvZ3Jmb250ZS5raWZudAkocmV2aXNp
b24gMCkKKysrIHNoYXJlL2dyZm9udGUua2lmbnQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTY2
IEBACishIFUsMCw0LEQsMSw0LFUsNCw0LEQsOSw0LFUsWAkvKiEqLworeyBVLDgsMyxELDksNCxV
LDgsNSxELDksNixVLFgJLyp7Ki8KKyMgVSwzLDEsRCwzLDcsVSw1LDIsRCw1LDgsVSwxLDMsRCw3
LDQsVSwxLDUsRCw3LDYsVSxYCS8qIyovCiskIFUsMCw0LEQsOSw0LFUsMCw1LEQsOSw1LFUsMCwy
LEQsMCw3LDEsOCwzLDgsNCw3LDQsMiw1LDEsNywxLDgsMiw4LDcsVSxYCS8qJCovCislIFUsMCwx
LEQsOSw4LFUsOSwxLEQsNywxLDcsMyw5LDMsOSwxLFUsMCw2LEQsMCw4LDIsOCwyLDYsMCw2LFUs
WAkvKiUqLworJiBVLDAsNyxELDcsMiw4LDIsOSw0LDgsNiw3LDYsMiwxLDEsMSwwLDMsMCw0LDEs
NiwyLDcsVSxYCS8qJiovCisnIFUsOSw0LEQsNywzLFUsWAkvKicqLworKCBVLDAsNCxELDIsMyw3
LDMsOSw0LFUsWAkvKigqLworKSBVLDAsNCxELDIsNSw3LDUsOSw0LFUsWAkvKikqLworKiBVLDEs
NCxELDcsNCxVLDQsMSxELDQsNyxVLDIsMixELDYsNixVLDYsMixELDIsNixVLFgJLyoqKi8KKysg
VSw0LDEsRCw0LDcsVSwxLDQsRCw3LDQsVSxYCS8qKyovCissIFUsMSw0LEQsMCw0LC0zLDMsVSxY
CS8qLCovCistIFUsNCwyLEQsNCw3LFUsWAkvKi0qLworLiBVLDAsNCxELDEsNCxVLFgJLyouKi8K
Ky8gVSwwLDIsRCw5LDYsVSxYCS8qIC8gKi8KKzAgVSwwLDEsRCw5LDgsVSwxLDEsRCw4LDEsOSwy
LDksNyw4LDgsMSw4LDAsNywwLDIsMSwxLFUsWAkvKjAqLworMSBVLDAsMyxELDAsNyxVLDAsNSxE
LDksNSxVLDgsNSxELDYsMyxVLFgJCS8qMSovCisyIFUsMCw4LEQsMCwxLDMsMSw0LDIsNCw3LDUs
OCw4LDgsOSw3LDksMiw4LDEsVSxYCS8qMiovCiszIFUsOSwxLEQsOSw4LDgsOCw1LDQsNSw3LDQs
OCwxLDgsMCw3LDAsMiwxLDEsVSxYCS8qMyovCis0IFUsMCw2LEQsOSw2LDIsMSwyLDgsVSxYCS8q
NCovCis1IFUsMiwxLEQsMSwxLDAsMiwwLDcsMSw4LDQsOCw2LDYsNiwxLDksMSw5LDgsVSxYCS8q
NSovCis2IFUsOCw4LEQsOSw3LDksMiw4LDEsMSwxLDAsMiwwLDcsMSw4LDQsOCw1LDcsNSwyLDQs
MSxVLFgJLyo2Ki8KKzcgVSw5LDEsRCw5LDgsMCwxLFUsWAkvKjcqLworOCBVLDAsMixELDEsMSw0
LDEsNSwyLDUsNyw2LDgsOCw4LDksNyw5LDIsOCwxLDYsMSw1LDIsVSw1LDcsRCw0LDgsMSw4LDAs
NywwLDIsVSxYCS8qOCovCis5IFUsMCwyLEQsMCw3LDEsOCw4LDgsOSw3LDksMiw4LDEsNSwxLDQs
Miw0LDcsNSw4LFUsWAkvKjkqLworOiBVLDYsNCxELDUsNCxVLDMsNCxELDIsNCxVLFgJLyo6Ki8K
KzsgVSw1LDQsRCw0LDQsVSwyLDQsRCwxLDQsLTIsMyxVLFgJLyo7Ki8KKzwgVSwwLDcsRCw0LDIs
OSw3LFUsWAkvKjwqLworPSBVLDIsMixELDIsNyxVLDUsMixELDUsNyxVLFgJLyo9Ki8KKz4gVSww
LDIsRCw0LDcsOSwyLFUsWAkvKj4qLworPyBVLDAsNCxELDEsNCxVLDMsNCxELDQsNCw1LDYsNiw3
LDgsNyw5LDYsOSwyLDgsMSxVLFgJLyo/Ki8KK0AgVSwwLDgsRCwwLDMsMiwxLDYsMSw4LDMsOCw2
LDYsOCwzLDgsMyw1LDQsNCw1LDUsNSw4LFUsWAkvKkAqLworQSBVLDAsMSxELDcsMSw5LDMsOSw2
LDcsOCwwLDgsVSw1LDEsRCw1LDgsVSxYCS8qQSovCitCIFUsMCwxLEQsOSwxLDksNyw4LDgsNiw4
LDUsNyw1LDEsVSw1LDcsRCwzLDgsMSw4LDAsNywwLDEsVSxYCS8qQiovCitDIFUsMSw4LEQsMCw3
LDAsMiwxLDEsOCwxLDksMiw5LDcsOCw4LFUsWAkvKkMqLworRCBVLDAsMixELDksMixVLDksMSxE
LDksNyw4LDgsMSw4LDAsNywwLDEsVSxYCS8qRCovCitFIFUsMCw4LEQsMCwxLDksMSw5LDgsVSw1
LDEsRCw1LDUsVSxYCS8qRSovCitGIFUsMCwxLEQsOSwxLDksOCxVLDUsMSxELDUsNSxVLFgJLypG
Ki8KK0cgVSw4LDcsRCw5LDcsOSwyLDgsMSwxLDEsMCwyLDAsNywxLDgsNCw4LDQsNSxVLFgJLypH
Ki8KK0ggVSwwLDEsRCw5LDEsVSwwLDgsRCw5LDgsVSw0LDEsRCw0LDgsVSxYCS8qSCovCitJIFUs
MCwyLEQsMCw2LFUsMCw0LEQsOSw0LFUsOSwyLEQsOSw2LFUsWAkvKkkqLworSiBVLDIsMSxELDAs
MiwwLDQsMSw1LDksNSxVLDksMyxELDksNyxVLFgJLypKKi8KK0sgVSwwLDEsRCw5LDEsVSw5LDcs
RCw1LDEsMCw4LFUsWAkvKksqLworTCBVLDksMSxELDAsMSwwLDksVSxYCS8qTCovCitNIFUsMCwx
LEQsOSwxLDUsNSw5LDksMCw5LFUsWAkvKk0qLworTiBVLDAsMSxELDksMSwwLDgsOSw4LFUsWAkv
Kk4qLworTyBVLDAsMixELDEsMSw4LDEsOSwyLDksNyw4LDgsMSw4LDAsNywwLDIsVSxYCS8qTyov
CitQIFUsMCwxLEQsOSwxLDksNyw4LDgsNSw4LDQsNyw0LDEsVSxYCS8qUCovCitRIFUsMSwxLEQs
OCwxLDksMiw5LDcsOCw4LDEsOCwwLDcsMCwyLDEsMSxVLDQsNixELDAsOCxVLFgJLypRKi8KK1Ig
VSwwLDEsRCw5LDEsOSw3LDgsOCw1LDgsNCw3LDQsMSxVLDQsNCxELDAsOCxVLFgJLypSKi8KK1Mg
VSwxLDEsRCwwLDIsMCw3LDEsOCw0LDgsNSw3LDUsMiw2LDEsOCwxLDksMiw5LDcsOCw4LFUsWAkv
KlMqLworVCBVLDksMSxELDksOSxVLDksNSxELDAsNSxVLFgJLypUKi8KK1UgVSw5LDEsRCwxLDEs
MCwyLDAsNywxLDgsOSw4LFUsWAkvKlUqLworViBVLDksMSxELDAsNSw5LDksVSxYCS8qViovCitX
IFUsOSwxLEQsMCwzLDMsNSwwLDcsOSw5LFUsWAkvKlcqLworWCBVLDAsMSxELDksOCxVLDksMSxE
LDAsOCxVLFgJLypYKi8KK1kgVSw5LDEsRCw0LDUsOSw5LFUsNCw1LEQsMCw1LFUsWAkvKlkqLwor
WiBVLDksMSxELDksOCwwLDEsMCw4LFUsWAkvKloqLworWyBVLDAsNSxELDAsMyw5LDMsOSw1LFUs
WAkvKlsqLworXCBVLDksMSxELDAsNyxVLFgJLypcKi8KK10gVSwwLDMsRCwwLDUsOSw1LDksMyxV
LFgJLypdKi8KK14gVSw3LDEsRCw5LDUsNyw4LFUsWAkvKl4qLworXyBVLDAsMSxELDAsOCxVLFgJ
LypfKi8KK2AgVSw5LDQsRCw3LDUsVSxYCS8qYCovCithIFUsNiwxLEQsNiw3LDUsOCwwLDgsMCwy
LDEsMSwyLDEsMywyLDMsOCxVLFgJLyphKi8KK2IgVSw5LDEsRCwwLDEsMCw4LDQsOCw1LDcsNSwx
LFUsWAkvKmIqLworYyBVLDEsOCxELDAsNywwLDIsMSwxLDUsMSw2LDIsNiw3LDUsOCxVLFgJLypj
Ki8KK2QgVSw5LDgsRCwwLDgsMCwyLDEsMSw1LDEsNiwyLDYsOCxVLFgJLypkKi8KK2UgVSwzLDEs
RCwzLDgsNSw4LDYsNyw2LDIsNSwxLDEsMSwwLDIsMCw3LDEsOCxVLFgJLyplKi8KK2YgVSwwLDIs
RCw4LDIsOSwzLDksNyw4LDgsVSw1LDEsRCw1LDQsVSxYCS8qZiovCitnIFUsLTIsMSxELC0zLDIs
LTMsNywtMiw4LDUsOCw2LDcsNiwyLDUsMSwxLDEsMCwyLDAsNywxLDgsVSxYCS8qZyovCitoIFUs
MCwxLEQsOSwxLFUsNSwxLEQsNiwyLDYsNyw1LDgsMCw4LFUsWAkvKmgqLworaSBVLDksNCxELDgs
NCxVLDUsNCxELDEsNCwwLDUsMCw2LFUsWAkvKmkqLworaiBVLDksNCxELDgsNCxVLDUsNCxELC0y
LDQsLTMsMywtMiwyLFUsWAkvKmoqLworayBVLDAsMixELDksMixVLDMsMixELDMsMyw2LDgsVSwz
LDMsRCwwLDgsVSxYCS8qayovCitsIFUsOSwzLEQsOSw0LDAsNCxVLDAsMyxELDAsNSxVLFgJLyps
Ki8KK20gVSwwLDEsRCw2LDEsVSw1LDEsRCw2LDIsNiw0LDUsNSwwLDUsVSw1LDUsRCw2LDYsNiw4
LDUsOSwwLDksVSxYCS8qbSovCituIFUsMCwxLEQsNiwxLFUsNSwxLEQsNiwyLDYsNiw1LDcsMCw3
LFUsWAkvKm4qLworbyBVLDAsMixELDEsMSw1LDEsNiwyLDYsNyw1LDgsMSw4LDAsNywwLDIsVSxY
CS8qbyovCitwIFUsLTMsMSxELDYsMSxVLDUsMSxELDYsMiw2LDcsNSw4LDEsOCwwLDcsMCwyLDEs
MSxVLFgJLypwKi8KK3EgVSwtMyw4LEQsNiw4LFUsNSw4LEQsNiw3LDYsMiw1LDEsMSwxLDAsMiww
LDcsMSw4LFUsWAkvKnEqLworciBVLDAsMSxELDYsMSxVLDQsMSxELDYsMyw2LDYsNCw4LFUsWAkv
KnIqLworcyBVLDEsMSxELDAsMiwwLDcsMSw4LDIsOCwzLDcsMywyLDQsMSw1LDEsNiwyLDYsNyw1
LDgsVSxYCS8qcyovCit0IFUsMSw3LEQsMCw2LDAsMywxLDIsOSwyLFUsNiwyLEQsNiw1LFUsWAkv
KnQqLwordSBVLDYsMSxELDIsMSwwLDMsMCw2LDIsOCw2LDgsVSxYCS8qdSovCit2IFUsNiwxLEQs
MywxLDAsNCwzLDcsNiw3LFUsWAkvKnYqLwordyBVLDYsMSxELDIsMSwwLDMsMiw1LDAsNywyLDks
Niw5LFUsWAkvKncqLworeCBVLDAsMSxELDYsOCxVLDYsMSxELDAsOCxVLFgJLyp4Ki8KK3kgVSw2
LDEsRCwyLDEsMCwzLDAsNiwyLDgsVSw2LDgsRCwtMiw4LC0zLDcsLTMsMiwtMiwxLFUsWH0JLyp5
Ki8KK3ogVSw2LDEsRCw2LDgsMCwxLDAsOCxVLFgJLyp6Ki8KK3sgVSw5LDUsRCw4LDQsNiw0LDUs
Myw0LDMsMyw0LDEsNCwwLDUsVSxYCS8qeyovCit8IFUsOSw0LEQsMCw0LFUsWAkvKnwqLworfSBV
LDksMyxELDgsNCw2LDQsNSw1LDQsNSwzLDQsMSw0LDAsMyxVLFgJLyp9Ki8KK34gVSw4LDEsRCw5
LDIsOSwzLDcsNSw3LDYsOCw3LFUsWAkvKn4qLworCisKKwor0LAgVSw2LDEsRCw2LDcsNSw4LDAs
OCwwLDIsMSwxLDIsMSwzLDIsMyw4LFUsWAkvKtCwKi8KK9CQIFUsMCwxLEQsNywxLDksMyw5LDYs
Nyw4LDAsOCxVLDUsMSxELDUsOCxVLFgJLyrQkCovCivQsSBVLDYsNyxELDYsMiw1LDEsMSwxLDAs
MiwwLDcsMSw4LDUsOCw2LDcsOSwxLDksOCxVLFggLy8g0LEKK9CRIFUsOSw4LEQsOSwxLDAsMSww
LDcsMSw4LDQsOCw1LDcsNSwxLFUsWAkvLyDQkQor0LIgVSw1LDEsRCw2LDIsNiw3LDUsOCwxLDgs
MCw3LDAsMiwxLDEsOCwxLDksMiw5LDQsOCw1LDcsNSw2LDQsVSxYCS8vINCyCivQkiBVLDUsMSxE
LDUsNyw0LDgsMSw4LDAsNywwLDEsOSwxLDksNyw4LDgsNiw4LDUsNyxVLFgJLy8g0JIKK9CzIFUs
NSwxLEQsNiwyLDYsNyw1LDgsNCw4LDMsNywzLDIsMiwxLDEsMSwwLDIsMCw3LDEsOCxVLFgJLy8g
0LMKK9CTIFUsMCwxLEQsOSwxLDksOCxVLFgJLy8g0JMKK9C0IFUsOSwzLEQsOSw3LDgsOCwxLDgs
MCw3LDAsMiwxLDEsNSwxLDYsMiw2LDgsVSxYCS8vINC0CivQlCBVLDAsMixELDksMyw5LDcsMCw3
LFUsLTEsMSxELDAsMSwwLDgsLTEsOCxVLFgJLy8g0JQKK9C1IFUsMywxLEQsMyw4LDUsOCw2LDcs
NiwyLDUsMSwxLDEsMCwyLDAsOCxVLFgJLy9lCivQlSBVLDksOCxELDksMSwwLDEsMCw4LFUsNSwx
LEQsNSw3LFUsWAkvL0UKK9GRIFUsMywxLEQsMyw4LDUsOCw2LDcsNiwyLDUsMSwxLDEsMCwyLDAs
OCxVLFgJLy9lCivQgSBVLDksOCxELDksMSwwLDEsMCw4LFUsNSwxLEQsNSw3LFUsWAkvL0UKK9C2
IFUsMCwwLEQsNiw4LFUsNiwwLEQsMCw4LFUsNiw0LEQsMCw0LFUsWAkvLyDQtgor0JYgVSwwLDAs
RCw5LDgsVSw5LDAsRCwwLDgsVSw5LDQsRCwwLDQsVSxYCS8vINCWCivQtyBVLDUsMSxELDYsMiw2
LDcsNSw4LDQsOCwzLDcsMyw1LFUsMyw3LEQsMiw4LDEsOCwwLDcsMCwyLDEsMSxVLFgJLy8g0LcK
K9CXIFUsOCwxLEQsOSwyLDksNyw4LDgsNiw4LDUsNyw1LDQsVSw1LDcsRCw0LDgsMSw4LDAsNyww
LDIsMSwxLFUsWAkvLyDQlwor0LggVSw2LDEsRCwxLDEsMCwyLDAsMywxLDgsVSwwLDgsRCw2LDgs
VSxYCS8vINC4CivQmCBVLDAsMSxELDksMSxVLDEsMSxELDgsOCxVLDksOCxELDAsOCxVLFgJLy8g
0JgKK9C5IFUsNiwxLEQsMSwxLDAsMiwwLDMsMSw4LFUsMCw4LEQsNiw4LFUsOCwzLEQsOCw2LFUs
WAkvLyDQuQor0JkgVSw5LDEsRCwwLDEsVSwxLDEsRCw4LDgsVSw5LDgsRCwwLDgsVSw5LDMsRCw5
LDYsVSxYIC8vINCZCivQuiBVLDYsMSxELDAsMSxVLDMsMSxELDYsOCxVLDQsMyxELDAsOCxVLFgJ
Ly/Qugor0JogVSw5LDEsRCwwLDEsVSw0LDEsRCw5LDgsVSw1LDMsRCwwLDgsVSxYCS8vSwor0Lsg
VSwwLDEsRCw2LDUsNiw4LDAsOCxVLFgJLy8g0LsKK9CbIFUsMCwxLEQsOSw1LDksOCwwLDgsVSxY
CS8vINCbCivQvCBVLDAsMCxELDYsMCwzLDQsNiw4LDAsOCxVLFgJLy8g0LwKK9CcIFUsMCwxLEQs
OSwxLDUsNSw5LDksMCw5LFUsWAkvKk0qLwor0L0gVSw2LDEsRCwwLDEsVSw2LDgsRCwwLDgsVSwz
LDEsRCwzLDgsVSxYCS8vINC9CivQnSBVLDksMSxELDAsMSxVLDksOCxELDAsOCxVLDUsMSxELDUs
OCxVLFgJLy8gSAor0L4gVSwwLDIsRCwxLDEsNSwxLDYsMiw2LDcsNSw4LDEsOCwwLDcsMCwyLFUs
WAkvKm8qLwor0J4gVSwwLDIsRCwxLDEsOCwxLDksMiw5LDcsOCw4LDEsOCwwLDcsMCwyLFUsWAkv
KtCeKi8KK9C/IFUsMCwxLEQsNiwxLDYsNyw1LDgsMCw4LFUsWAkvLyDQvwor0J8gVSwwLDEsRCw5
LDEsOSw4LDAsOCxVLFgJLy8g0J8KK9GAIFUsLTMsMSxELDYsMSxVLDUsMSxELDYsMiw2LDcsNSw4
LDEsOCwwLDcsMCwyLDEsMSxVLFgJLyrRgCovCivQoCBVLDAsMSxELDksMSw5LDcsOCw4LDUsOCw0
LDcsNCwxLFUsWAkvKtCgKi8KK9GBIFUsMSw4LEQsMCw3LDAsMiwxLDEsNSwxLDYsMiw2LDcsNSw4
LFUsWAkvKtGBKi8KK9ChIFUsMSw4LEQsMCw3LDAsMiwxLDEsOCwxLDksMiw5LDcsOCw4LFUsWAkv
KtChKi8KK9GCIFUsMCwxLEQsNiwxLDYsNiw1LDcsMCw3LFUsNiw0LEQsMCw0LFUsWAkvLyDRggor
0KIgVSwwLDQsRCw5LDQsVSw5LDEsRCw5LDcsVSxYCS8vINCiCivRgyBVLDYsMSxELDEsMSwwLDIs
MCw4LDYsOCxVLDAsOCxELC0yLDgsLTMsNywtMywxLFUsWAkvLyDRgwor0KMgVSw5LDEsRCw1LDEs
NCwyLDQsOCxVLDksOCxELDEsOCwwLDcsMCwxLFUsWAkvLyDQowor0YQgVSw3LDQsRCwtMyw0LFUs
NSwxLEQsNiwyLDYsNiw1LDcsMSw3LDAsNiwwLDIsMSwxLDUsMSxVLFgJLy8g0YQKK9CkIFUsOSw0
LEQsMCw0LFUsNywwLEQsOCwxLDgsNyw3LDgsMyw4LDIsNywyLDEsMywwLDcsMCxVLFgJLy8g0KQK
K9GFIFUsMCwxLEQsNiw4LFUsNiwxLEQsMCw4LFUsWAkvLyB4CivQpSBVLDAsMSxELDksOCxVLDks
MSxELDAsOCxVLFgJLy8gWAor0YYgVSw2LDEsRCwxLDEsMCwyLDAsOCw2LDgsVSwwLDgsRCwwLDks
LTIsOSxVLFgJLy8g0YYKK9CmIFUsOSwxLEQsMCwxLDAsOSwtMiw5LFUsOSw4LEQsMCw4LFUsWAkv
LyDQpgor0YcgVSw2LDEsRCw0LDEsMywyLDMsOCxVLDYsOCxELDAsOCxVLFgJLy8g0YcKK9CnIFUs
OSwxLEQsNSwxLDQsMiw0LDgsVSw5LDgsRCwwLDgsVSxYCS8vINCnCivRiCBVLDYsMCxELDEsMCww
LDEsMCw4LDYsOCxVLDYsNCxELDAsNCxVLFgJLy8g0YgKK9CoIFUsOSwwLEQsMCwwLDAsOCw5LDgs
VSw5LDQsRCwwLDQsVSxYCS8vINCoCivRiSBVLDYsMCxELDEsMCwwLDEsMCw4LDYsOCxVLDYsNCxE
LDAsNCxVLDAsOCxELDAsOSwtMiw5LFUsWAkvLyDRiQor0KkgVSw5LDAsRCwwLDAsMCw4LDksOCxV
LDksNCxELDAsNCxVLDAsOCxELDAsOSwtMiw5LFUsWAkvLyDQqQor0YogVSw2LDAsRCw2LDEsMCwx
LDAsNywxLDgsMiw4LDMsNywzLDEsVSxYCS8vINGKCivQqiBVLDksMCxELDksMSwwLDEsMCw3LDEs
OCw0LDgsNSw3LDUsMSxVLFgJLy8g0KoKK9GLIFUsNiwxLEQsMCwxLDAsNiwxLDcsMiw3LDMsNiwz
LDEsVSw2LDgsRCwwLDgsVSxYCS8vINGLCivQqyBVLDksMSxELDAsMSwwLDYsMSw3LDMsNyw0LDYs
NCwxLFUsOSw4LEQsMCw4LFUsWAkvLyDQqwor0YwgVSw2LDEsRCwwLDEsMCw3LDEsOCwyLDgsMyw3
LDMsMSxVLFgJLy8g0YwKK9CsIFUsOSwxLEQsMCwxLDAsNywxLDgsNCw4LDUsNyw1LDEsVSxYCS8v
INCsCivRjSBVLDAsMSxELDAsNywxLDgsNSw4LDYsNyw2LDEsVSwzLDQsRCwzLDgsVSxYCS8vINGN
CivQrSBVLDAsMSxELDAsNywxLDgsOCw4LDksNyw5LDEsVSw1LDQsRCw1LDgsVSxYCS8vINCtCivR
jiBVLDYsMCxELDAsMCxVLDMsMCxELDMsMixVLDAsMyxELDEsMiw1LDIsNiwzLDYsNyw1LDgsMSw4
LDAsNywwLDMsVSxYIC8vINGOCivQriBVLDksMCxELDAsMCxVLDQsMCxELDQsMixVLDAsMyxELDEs
Miw4LDIsOSwzLDksNyw4LDgsMSw4LDAsNywwLDMsVSxYIC8vINCuCivRjyBVLDAsOCxELDYsOCw2
LDIsNSwxLDQsMSwzLDIsMyw4LFUsMywzLEQsMCwxLFUsWAkvLyDRjwor0K8gVSwwLDgsRCw5LDgs
OSwyLDgsMSw1LDEsNCwyLDQsOCxVLDQsMyxELDAsMSxVLFgJLy8g0K8KKyAgWCAvL3NwYXNlCiss
IFUsMSw0LEQsMCw0LC0zLDMsVSxYCS8qLCovCisuIFUsMCw0LEQsMSw0LFUsWAkvKi4qLwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
 ------S5ZD953c-10HL68C0MMm03kNU:1220358215--