PATCH: Save/Load of multiple image and layer

Toshitaka Fujioka kimageshop@mail.kde.org
Sun, 19 Aug 2001 19:34:15 +0900


--------------Boundary-00=_3D9BCCQG6ZBYUAYOTB9D
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Hello,

This patch can save/load of multiple image and layer. But, this patch is not
compatible with former file.
Is compatibility with former file necessary ?

Please review.
-- 
Toshitaka Fujioka
http://www.kde.org                The K Desktop Environment Project
                                                    fujioka@kde.org
http://www.kde.gr.jp               Japan KDE User's Group
                                                    toshitaka@kde.gr.jp

-- We offer the best Desktop Environment to you.  (This is my goal. ;-)) --   
  


--------------Boundary-00=_3D9BCCQG6ZBYUAYOTB9D
Content-Type: text/x-diff;
  charset="iso-8859-1";
  name="koffice-krayon-filesave-fix-20010819.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="koffice-krayon-filesave-fix-20010819.diff"

SW5kZXg6IGtpc19kb2MuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tvZmZpY2Uv
a3JheW9uL2NvcmUva2lzX2RvYy5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41OApkaWZmIC11
IC0zIC1kIC1wIC1yMS41OCBraXNfZG9jLmNjCi0tLSBraXNfZG9jLmNjCTIwMDEvMDgvMTggMTE6
MjI6MDUJMS41OAorKysga2lzX2RvYy5jYwkyMDAxLzA4LzE5IDEwOjI3OjE1CkBAIC0xNjAsMTE1
ICsxNjAsMTM5IEBAIEtpc1RpbWVyOjpzdG9wKCJpbml0RG9jKCkiKTsKIAogCiAvKgotICAgIFNh
dmUgY3VycmVudCBkb2N1bWVudCAoaW1hZ2UpIHRvIHhtbCBmb3JtYXQgdXNpbmcgUURvbURvY3Vt
ZW50CisgICAgU2F2ZSBkb2N1bWVudCAoaW1hZ2UpIHRvIHhtbCBmb3JtYXQgdXNpbmcgUURvbURv
Y3VtZW50CiAgICAga28gdmlydHVhbCBtZXRob2QgaW1wbGVtZW50ZWQKICovCiAKIFFEb21Eb2N1
bWVudCBLaXNEb2M6OnNhdmVYTUwoICkKIHsKLSAgICBjb3V0IDw8ICJLaXNEb2M6OnNhdmVYTUwi
IDw8IGVuZGw7Ci0gICAgS2lzSW1hZ2UgKmltZyA9IG1fcEN1cnJlbnQ7CisgICAga2REZWJ1Zygw
KSA8PCAiS2lzRG9jOjpzYXZlWE1MIiA8PCBlbmRsOwogCiAgICAgLy8gRklYTUU6IGltcGxlbWVu
dCBzYXZpbmcgb2Ygbm9uLVJHQiBtb2Rlcy4KIAogICAgIFFEb21Eb2N1bWVudCBkb2MoICJpbWFn
ZSIgKTsKICAgICBkb2MuYXBwZW5kQ2hpbGQoIGRvYy5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24oICJ4bWwiLCAidmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIiIgKSApOwotCi0g
ICAgLy8gaW1hZ2UgZWxlbWVudCAtIG9ubHkgb25lIHBlciBkb2N1bWVudAotICAgIFFEb21FbGVt
ZW50IGltYWdlID0gZG9jLmNyZWF0ZUVsZW1lbnQoICJpbWFnZSIgKTsKKyAgICBkb2MuYXBwZW5k
Q2hpbGQoIHNhdmVJbWFnZSggZG9jICkgKTsKIAotICAgIGltYWdlLnNldEF0dHJpYnV0ZSggIm5h
bWUiLCBpbWctPm5hbWUoKSApOwotICAgIGltYWdlLnNldEF0dHJpYnV0ZSggImF1dGhvciIsIGlt
Zy0+YXV0aG9yKCkgKTsKLSAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoICJlbWFpbCIsIGltZy0+ZW1h
aWwoKSApOwotICAgIGltYWdlLnNldEF0dHJpYnV0ZSggImVkaXRvciIsICJLcmF5b24iICk7Ci0g
ICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCAibWltZSIsICJhcHBsaWNhdGlvbi94LWtyYXlvbiIgKTsK
LSAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoICJ3aWR0aCIsIGltZy0+d2lkdGgoKSApOwotICAgIGlt
YWdlLnNldEF0dHJpYnV0ZSggImhlaWdodCIsIGltZy0+aGVpZ2h0KCkgKTsKLSAgICBpbWFnZS5z
ZXRBdHRyaWJ1dGUoICJiaXREZXB0aCIsIHN0YXRpY19jYXN0PGludD4oaW1nLT5iaXREZXB0aCgp
KSApOwotICAgIGltYWdlLnNldEF0dHJpYnV0ZSggImNNb2RlIiwgc3RhdGljX2Nhc3Q8aW50Pihp
bWctPmNvbG9yTW9kZSgpKSApOworICAgIHNldE1vZGlmaWVkKCBmYWxzZSApOworICAgIHJldHVy
biBkb2M7Cit9CiAKLWtkRGVidWcoMCkgPDwgIm5hbWU6ICIgPDwgIGltZy0+bmFtZSgpIDw8IGVu
ZGw7Ci1rZERlYnVnKDApIDw8ICJhdXRob3I6ICIgPDwgIGltZy0+YXV0aG9yKCkgPDwgZW5kbDsK
LWtkRGVidWcoMCkgPDwgImVtYWlsOiAiIDw8ICBpbWctPmVtYWlsKCkgPDwgZW5kbDsKLWtkRGVi
dWcoMCkgPDwgImVkaXRvcjogIiA8PCAgIktyYXlvbiIgPDwgZW5kbDsKLWtkRGVidWcoMCkgPDwg
Im1pbWU6ICIgPDwgImFwcGxpY2F0aW9uL3gta3JheW9uIiAgPDwgZW5kbDsKLWtkRGVidWcoMCkg
PDwgImltZy0+d2lkdGgoKTogIiA8PCAgaW1nLT53aWR0aCgpIDw8IGVuZGw7Ci1rZERlYnVnKDAp
IDw8ICJpbWctPmhlaWdodCgpOiAiIDw8ICBpbWctPmhlaWdodCgpIDw8IGVuZGw7Ci1rZERlYnVn
KDApIDw8ICJiaXREZXB0aCAiIDw8ICBzdGF0aWNfY2FzdDxpbnQ+KGltZy0+Yml0RGVwdGgoKSkg
PDwgZW5kbDsKLWtkRGVidWcoMCkgPDwgImNNb2RlOiAiIDw8ICBzdGF0aWNfY2FzdDxpbnQ+KGlt
Zy0+Y29sb3JNb2RlKCkpIDw8IGVuZGw7CisvKgorICBzYXZlIGltYWdlcworKi8KIAotICAgIGRv
Yy5hcHBlbmRDaGlsZCggaW1hZ2UgKTsKK1FEb21FbGVtZW50IEtpc0RvYzo6c2F2ZUltYWdlKCBR
RG9tRG9jdW1lbnQgJmRvYyApCit7CisgICAgUVN0cmluZ0xpc3QgaW1hZ2VOYW1lcyA9IGltYWdl
cygpOworICAgIFFTdHJpbmcgdG1wX2N1cnJlbnRJbWFnZU5hbWUgPSBjdXJyZW50SW1hZ2UoKTsK
IAotICAgIC8vIGxheWVycyBlbGVtZW50IC0gdmFyaWFibGUKLSAgICBRRG9tRWxlbWVudCBsYXll
cnMgPSBkb2MuY3JlYXRlRWxlbWVudCggImxheWVycyIgKTsKLSAgICBpbWFnZS5hcHBlbmRDaGls
ZCggbGF5ZXJzICk7CisgICAgUURvbUVsZW1lbnQgaW1hZ2VzID0gZG9jLmNyZWF0ZUVsZW1lbnQo
ICJpbWFnZXMiICk7CisgICAgaW1hZ2VzLnNldEF0dHJpYnV0ZSggImVkaXRvciIsICJLcmF5b24i
ICk7CisgICAgaW1hZ2VzLnNldEF0dHJpYnV0ZSggIm1pbWUiLCAiYXBwbGljYXRpb24veC1rcmF5
b24iICk7CisgICAgaW1hZ2VzLnNldEF0dHJpYnV0ZSggInZlcnNpb24iLCAiMS4yIiApOwogCi0g
ICAgLy8gbGF5ZXIgZWxlbWVudHMKLWtkRGVidWcoMCkgPDwgImxheWVyIGVsZW1lbnRzIiA8PCBl
bmRsOworICAgIGtkRGVidWcoMCkgPDwgImVkaXRvcjogIiA8PCAgIktyYXlvbiIgPDwgZW5kbDsK
KyAgICBrZERlYnVnKDApIDw8ICJtaW1lOiAiIDw8ICJhcHBsaWNhdGlvbi94LWtyYXlvbiIgIDw8
IGVuZGw7CiAKLSAgICBRTGlzdDxLaXNMYXllcj4gbF9sc3QgPSBpbWctPmxheWVyTGlzdCgpOwot
ICAgIGZvciAoS2lzTGF5ZXIgKmxheSA9IGxfbHN0LmZpcnN0KCk7IGxheSAhPSAwOyBsYXkgPSBs
X2xzdC5uZXh0KCkpCisgICAgZm9yICggUVN0cmluZ0xpc3Q6Okl0ZXJhdG9yIGl0ID0gaW1hZ2VO
YW1lcy5iZWdpbigpOyBpdCAhPSBpbWFnZU5hbWVzLmVuZCgpOyArK2l0ICkKICAgICB7Ci0gICAg
ICAgIFFEb21FbGVtZW50IGxheWVyID0gZG9jLmNyZWF0ZUVsZW1lbnQoICJsYXllciIgKTsKKyAg
ICAgICAgc2V0SW1hZ2UoICppdCApOworICAgICAgICBLaXNJbWFnZSAqaW1nID0gbV9wQ3VycmVu
dDsKIAotCSAgICBsYXllci5zZXRBdHRyaWJ1dGUoICJuYW1lIiwgbGF5LT5uYW1lKCkgKTsKLQkg
ICAgbGF5ZXIuc2V0QXR0cmlidXRlKCAieCIsIGxheS0+aW1hZ2VFeHRlbnRzKCkueCgpICk7Ci0J
ICAgIGxheWVyLnNldEF0dHJpYnV0ZSggInkiLCBsYXktPmltYWdlRXh0ZW50cygpLnkoKSApOwot
CSAgICBsYXllci5zZXRBdHRyaWJ1dGUoICJ3aWR0aCIsIGxheS0+aW1hZ2VFeHRlbnRzKCkud2lk
dGgoKSApOwotICAgICAgICBsYXllci5zZXRBdHRyaWJ1dGUoICJoZWlnaHQiLCBsYXktPmltYWdl
RXh0ZW50cygpLmhlaWdodCgpICk7Ci0JICAgIGxheWVyLnNldEF0dHJpYnV0ZSggIm9wYWNpdHki
LCBzdGF0aWNfY2FzdDxpbnQ+KGxheS0+b3BhY2l0eSgpKSApOworICAgICAgICAvLyBpbWFnZSBl
bGVtZW50CisgICAgICAgIFFEb21FbGVtZW50IGltYWdlID0gZG9jLmNyZWF0ZUVsZW1lbnQoICJp
bWFnZSIgKTsKKyAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCAibmFtZSIsIGltZy0+bmFtZSgp
ICk7CisgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZSggImF1dGhvciIsIGltZy0+YXV0aG9yKCkg
KTsKKyAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCAiZW1haWwiLCBpbWctPmVtYWlsKCkgKTsK
KyAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCAid2lkdGgiLCBpbWctPndpZHRoKCkgKTsKKyAg
ICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCAiaGVpZ2h0IiwgaW1nLT5oZWlnaHQoKSApOworICAg
ICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoICJiaXREZXB0aCIsIHN0YXRpY19jYXN0PGludD4oaW1n
LT5iaXREZXB0aCgpKSApOworICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoICJjTW9kZSIsIHN0
YXRpY19jYXN0PGludD4oaW1nLT5jb2xvck1vZGUoKSkgKTsKIAota2REZWJ1ZygwKSA8PCAibmFt
ZTogIiA8PCAgbGF5LT5uYW1lKCkgPDwgZW5kbDsKLWtkRGVidWcoMCkgPDwgIng6ICIgPDwgbGF5
LT5pbWFnZUV4dGVudHMoKS54KCkgICA8PCBlbmRsOwota2REZWJ1ZygwKSA8PCAieTogIiA8PCBs
YXktPmltYWdlRXh0ZW50cygpLnkoKSAgIDw8IGVuZGw7Ci1rZERlYnVnKDApIDw8ICJ3aWR0aDog
IiA8PCBsYXktPmltYWdlRXh0ZW50cygpLndpZHRoKCkgICA8PCBlbmRsOwota2REZWJ1ZygwKSA8
PCAiaGVpZ2h0OiAiIDw8IGxheS0+aW1hZ2VFeHRlbnRzKCkuaGVpZ2h0KCkgICA8PCBlbmRsOwot
a2REZWJ1ZygwKSA8PCAib3BhY2l0eTogIiA8PCAgc3RhdGljX2Nhc3Q8aW50PihsYXktPm9wYWNp
dHkoKSkgIDw8IGVuZGw7CisgICAgICAgIGtkRGVidWcoMCkgPDwgIm5hbWU6ICIgPDwgIGltZy0+
bmFtZSgpIDw8IGVuZGw7CisgICAgICAgIGtkRGVidWcoMCkgPDwgImF1dGhvcjogIiA8PCAgaW1n
LT5hdXRob3IoKSA8PCBlbmRsOworICAgICAgICBrZERlYnVnKDApIDw8ICJlbWFpbDogIiA8PCAg
aW1nLT5lbWFpbCgpIDw8IGVuZGw7CisgICAgICAgIGtkRGVidWcoMCkgPDwgImltZy0+d2lkdGgo
KTogIiA8PCAgaW1nLT53aWR0aCgpIDw8IGVuZGw7CisgICAgICAgIGtkRGVidWcoMCkgPDwgImlt
Zy0+aGVpZ2h0KCk6ICIgPDwgIGltZy0+aGVpZ2h0KCkgPDwgZW5kbDsKKyAgICAgICAga2REZWJ1
ZygwKSA8PCAiYml0RGVwdGggIiA8PCAgc3RhdGljX2Nhc3Q8aW50PihpbWctPmJpdERlcHRoKCkp
IDw8IGVuZGw7CisgICAgICAgIGtkRGVidWcoMCkgPDwgImNNb2RlOiAiIDw8ICBzdGF0aWNfY2Fz
dDxpbnQ+KGltZy0+Y29sb3JNb2RlKCkpIDw8IGVuZGw7CiAKLQkgICAgaWYgKGxheS0+dmlzaWJs
ZSgpKQotCQkgICAgbGF5ZXIuc2V0QXR0cmlidXRlKCAidmlzaWJsZSIsICJ0cnVlIiApOwotCSAg
ICBlbHNlCi0JCSAgICBsYXllci5zZXRBdHRyaWJ1dGUoICJ2aXNpYmxlIiwgImZhbHNlIiApOwor
ICAgICAgICBpbWFnZXMuYXBwZW5kQ2hpbGQoIGltYWdlICk7CiAKLQkgICAgaWYgKGxheS0+bGlu
a2VkKCkpCi0JCSAgICBsYXllci5zZXRBdHRyaWJ1dGUoICJsaW5rZWQiLCAidHJ1ZSIgKTsKLQkg
ICAgZWxzZQotCQkgICAgbGF5ZXIuc2V0QXR0cmlidXRlKCAibGlua2VkIiwgImZhbHNlIiApOwor
ICAgICAgICAvLyBsYXllcnMgZWxlbWVudCAtIHZhcmlhYmxlCisgICAgICAgIFFEb21FbGVtZW50
IGxheWVycyA9IGRvYy5jcmVhdGVFbGVtZW50KCAibGF5ZXJzIiApOworICAgICAgICBpbWFnZS5h
cHBlbmRDaGlsZCggbGF5ZXJzICk7CiAKLQkgICAgbGF5ZXIuc2V0QXR0cmlidXRlKCAiYml0RGVw
dGgiLCBzdGF0aWNfY2FzdDxpbnQ+KGxheS0+Yml0RGVwdGgoKSkgKTsKLQkgICAgbGF5ZXIuc2V0
QXR0cmlidXRlKCAiY01vZGUiLCBzdGF0aWNfY2FzdDxpbnQ+KGxheS0+Y29sb3JNb2RlKCkpICk7
CisgICAgICAgIC8vIGxheWVyIGVsZW1lbnRzCisgICAgICAgIGtkRGVidWcoMCkgPDwgImxheWVy
IGVsZW1lbnRzIiA8PCBlbmRsOwogCi1rZERlYnVnKDApIDw8ICJiaXREZXB0aDogIiA8PCAgc3Rh
dGljX2Nhc3Q8aW50PihsYXktPmJpdERlcHRoKCkpICA8PCBlbmRsOwota2REZWJ1ZygwKSA8PCAi
Y29sb3JNb2RlOiAiIDw8ICBzdGF0aWNfY2FzdDxpbnQ+KGxheS0+Y29sb3JNb2RlKCkpICA8PCBl
bmRsOworICAgICAgICBRTGlzdDxLaXNMYXllcj4gbF9sc3QgPSBpbWctPmxheWVyTGlzdCgpOwor
ICAgICAgICBmb3IgKCBLaXNMYXllciAqbGF5ID0gbF9sc3QuZmlyc3QoKTsgbGF5ICE9IDA7IGxh
eSA9IGxfbHN0Lm5leHQoKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIFFEb21FbGVtZW50IGxh
eWVyID0gZG9jLmNyZWF0ZUVsZW1lbnQoICJsYXllciIgKTsKIAotCSAgICBsYXllcnMuYXBwZW5k
Q2hpbGQoIGxheWVyICk7CisgICAgICAgICAgICBsYXllci5zZXRBdHRyaWJ1dGUoICJuYW1lIiwg
bGF5LT5uYW1lKCkgKTsKKyAgICAgICAgICAgIGxheWVyLnNldEF0dHJpYnV0ZSggIngiLCBsYXkt
PmltYWdlRXh0ZW50cygpLngoKSApOworICAgICAgICAgICAgbGF5ZXIuc2V0QXR0cmlidXRlKCAi
eSIsIGxheS0+aW1hZ2VFeHRlbnRzKCkueSgpICk7CisgICAgICAgICAgICBsYXllci5zZXRBdHRy
aWJ1dGUoICJ3aWR0aCIsIGxheS0+aW1hZ2VFeHRlbnRzKCkud2lkdGgoKSApOworICAgICAgICAg
ICAgbGF5ZXIuc2V0QXR0cmlidXRlKCAiaGVpZ2h0IiwgbGF5LT5pbWFnZUV4dGVudHMoKS5oZWln
aHQoKSApOworICAgICAgICAgICAgbGF5ZXIuc2V0QXR0cmlidXRlKCAib3BhY2l0eSIsIHN0YXRp
Y19jYXN0PGludD4obGF5LT5vcGFjaXR5KCkpICk7CiAKLQkgICAgLy8gY2hhbm5lbHMgZWxlbWVu
dCAtIHZhcmlhYmxlLCBub3JtYWxseSBtYXhpbXVtIG9mIDQgY2hhbm5lbHMKLQkgICAgUURvbUVs
ZW1lbnQgY2hhbm5lbHMgPSBkb2MuY3JlYXRlRWxlbWVudCggImNoYW5uZWxzIiApOwotCSAgICBs
YXllci5hcHBlbmRDaGlsZCggY2hhbm5lbHMgKTsKKyAgICAgICAgICAgIGtkRGVidWcoMCkgPDwg
Im5hbWU6ICIgPDwgIGxheS0+bmFtZSgpIDw8IGVuZGw7CisgICAgICAgICAgICBrZERlYnVnKDAp
IDw8ICJ4OiAiIDw8IGxheS0+aW1hZ2VFeHRlbnRzKCkueCgpICAgPDwgZW5kbDsKKyAgICAgICAg
ICAgIGtkRGVidWcoMCkgPDwgInk6ICIgPDwgbGF5LT5pbWFnZUV4dGVudHMoKS55KCkgICA8PCBl
bmRsOworICAgICAgICAgICAga2REZWJ1ZygwKSA8PCAid2lkdGg6ICIgPDwgbGF5LT5pbWFnZUV4
dGVudHMoKS53aWR0aCgpICAgPDwgZW5kbDsKKyAgICAgICAgICAgIGtkRGVidWcoMCkgPDwgImhl
aWdodDogIiA8PCBsYXktPmltYWdlRXh0ZW50cygpLmhlaWdodCgpICAgPDwgZW5kbDsKKyAgICAg
ICAgICAgIGtkRGVidWcoMCkgPDwgIm9wYWNpdHk6ICIgPDwgIHN0YXRpY19jYXN0PGludD4obGF5
LT5vcGFjaXR5KCkpICA8PCBlbmRsOwogCi1rZERlYnVnKDApIDw8ICJjaGFubmVsIGVsZW1lbnRz
IiA8PCBlbmRsOworICAgICAgICAgICAgaWYgKCBsYXktPnZpc2libGUoKSApCisgICAgICAgICAg
ICAgICAgbGF5ZXIuc2V0QXR0cmlidXRlKCAidmlzaWJsZSIsICJ0cnVlIiApOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGxheWVyLnNldEF0dHJpYnV0ZSggInZpc2libGUiLCAi
ZmFsc2UiICk7CiAKLQkgICAgLy8gY2hhbm5lbCBlbGVtZW50cwotCSAgICBmb3IgKCBLaXNDaGFu
bmVsKiBjaCA9IGxheS0+Zmlyc3RDaGFubmVsKCk7IGNoICE9IDA7IGNoID0gbGF5LT5uZXh0Q2hh
bm5lbCgpKQotCSAgICB7Ci0JICAgICAgICBRRG9tRWxlbWVudCBjaGFubmVsID0gZG9jLmNyZWF0
ZUVsZW1lbnQoICJjaGFubmVsIiApOworICAgICAgICAgICAgaWYgKCBsYXktPmxpbmtlZCgpICkK
KyAgICAgICAgICAgICAgICBsYXllci5zZXRBdHRyaWJ1dGUoICJsaW5rZWQiLCAidHJ1ZSIgKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsYXllci5zZXRBdHRyaWJ1dGUoICJs
aW5rZWQiLCAiZmFsc2UiICk7CiAKLQkgICAgICAgIGNoYW5uZWwuc2V0QXR0cmlidXRlKCAiY0lk
Iiwgc3RhdGljX2Nhc3Q8aW50PihjaC0+Y2hhbm5lbElkKCkpICk7Ci0JICAgICAgICBjaGFubmVs
LnNldEF0dHJpYnV0ZSggImJpdERlcHRoIiwgc3RhdGljX2Nhc3Q8aW50PihjaC0+Yml0RGVwdGgo
KSkgKTsKKyAgICAgICAgICAgIGxheWVyLnNldEF0dHJpYnV0ZSggImJpdERlcHRoIiwgc3RhdGlj
X2Nhc3Q8aW50PihsYXktPmJpdERlcHRoKCkpICk7CisgICAgICAgICAgICBsYXllci5zZXRBdHRy
aWJ1dGUoICJjTW9kZSIsIHN0YXRpY19jYXN0PGludD4obGF5LT5jb2xvck1vZGUoKSkgKTsKIAot
a2REZWJ1ZygwKSA8PCAiY0lkOiAiIDw8ICBzdGF0aWNfY2FzdDxpbnQ+KGNoLT5jaGFubmVsSWQo
KSkgIDw8IGVuZGw7Ci1rZERlYnVnKDApIDw8ICJiaXREZXB0aDogIiA8PCAgc3RhdGljX2Nhc3Q8
aW50PihjaC0+Yml0RGVwdGgoKSkgIDw8IGVuZGw7CisgICAgICAgICAgICBrZERlYnVnKDApIDw8
ICJiaXREZXB0aDogIiA8PCAgc3RhdGljX2Nhc3Q8aW50PihsYXktPmJpdERlcHRoKCkpICA8PCBl
bmRsOworICAgICAgICAgICAga2REZWJ1ZygwKSA8PCAiY29sb3JNb2RlOiAiIDw8ICBzdGF0aWNf
Y2FzdDxpbnQ+KGxheS0+Y29sb3JNb2RlKCkpICA8PCBlbmRsOwogCi0JICAgICAgICBjaGFubmVs
cy5hcHBlbmRDaGlsZCggY2hhbm5lbCApOworICAgICAgICAgICAgbGF5ZXJzLmFwcGVuZENoaWxk
KCBsYXllciApOwogCi0JICAgIH0gLy8gZW5kIG9mIGNoYW5uZWxzIGxvb3AKLSAgICB9IC8vIGVu
ZCBvZiBsYXllcnMgbG9vcAorICAgICAgICAgICAgLy8gY2hhbm5lbHMgZWxlbWVudCAtIHZhcmlh
YmxlLCBub3JtYWxseSBtYXhpbXVtIG9mIDQgY2hhbm5lbHMKKyAgICAgICAgICAgIFFEb21FbGVt
ZW50IGNoYW5uZWxzID0gZG9jLmNyZWF0ZUVsZW1lbnQoICJjaGFubmVscyIgKTsKKyAgICAgICAg
ICAgIGxheWVyLmFwcGVuZENoaWxkKCBjaGFubmVscyApOwogCi0gICAgc2V0TW9kaWZpZWQoIGZh
bHNlICk7Ci0gICAgcmV0dXJuIGRvYzsKKyAgICAgICAgICAgIGtkRGVidWcoMCkgPDwgImNoYW5u
ZWwgZWxlbWVudHMiIDw8IGVuZGw7CisKKyAgICAgICAgICAgIC8vIGNoYW5uZWwgZWxlbWVudHMK
KyAgICAgICAgICAgIGZvciAoIEtpc0NoYW5uZWwqIGNoID0gbGF5LT5maXJzdENoYW5uZWwoKTsg
Y2ggIT0gMDsgY2ggPSBsYXktPm5leHRDaGFubmVsKCkgKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIFFEb21FbGVtZW50IGNoYW5uZWwgPSBkb2MuY3JlYXRlRWxlbWVudCggImNoYW5u
ZWwiICk7CisKKyAgICAgICAgICAgICAgICBjaGFubmVsLnNldEF0dHJpYnV0ZSggImNJZCIsIHN0
YXRpY19jYXN0PGludD4oY2gtPmNoYW5uZWxJZCgpKSApOworICAgICAgICAgICAgICAgIGNoYW5u
ZWwuc2V0QXR0cmlidXRlKCAiYml0RGVwdGgiLCBzdGF0aWNfY2FzdDxpbnQ+KGNoLT5iaXREZXB0
aCgpKSApOworCisgICAgICAgICAgICAgICAga2REZWJ1ZygwKSA8PCAiY0lkOiAiIDw8ICBzdGF0
aWNfY2FzdDxpbnQ+KGNoLT5jaGFubmVsSWQoKSkgIDw8IGVuZGw7CisgICAgICAgICAgICAgICAg
a2REZWJ1ZygwKSA8PCAiYml0RGVwdGg6ICIgPDwgIHN0YXRpY19jYXN0PGludD4oY2gtPmJpdERl
cHRoKCkpICA8PCBlbmRsOworCisgICAgICAgICAgICAgICAgY2hhbm5lbHMuYXBwZW5kQ2hpbGQo
IGNoYW5uZWwgKTsKKworICAgICAgICAgICAgfSAvLyBlbmQgb2YgY2hhbm5lbHMgbG9vcAorICAg
ICAgICB9IC8vIGVuZCBvZiBsYXllcnMgbG9vcAorICAgIH0gLy8gZW5kIG9mIGltYWdlcyBsb29w
CisKKyAgICBzZXRJbWFnZSggdG1wX2N1cnJlbnRJbWFnZU5hbWUgKTsKKworICAgIHJldHVybiBp
bWFnZXM7CiB9CiAKKwogLyoKICAgICBTYXZlIGV4dHJhLCBkb2N1bWVudC1zcGVjaWZpYyBkYXRh
IG91dHNpZGUgeG1sIGZvcm1hdCBhcyBkZWZpbmVkIGJ5CiAgICAgRFREIGZvciB0aGlzIGRvY3Vt
ZW50IHR5cGUuICBJdCBpcyBhcHBlbmRlZCB0byB0aGUgc2F2ZWQKQEAgLTI4NSwzMCArMzA5LDUw
IEBAIGtkRGVidWcoMCkgPDwgImJpdERlcHRoOiAiIDw8ICBzdGF0aWNfY2EKIAogYm9vbCBLaXNE
b2M6OmNvbXBsZXRlU2F2aW5nKCBLb1N0b3JlKiBzdG9yZSApCiB7Ci1rZERlYnVnKDApIDw8ICJL
aXNEb2M6OmNvbXBsZXRlU2F2aW5nKCkgZW50ZXJpbmciIDw8IGVuZGw7CisgICAga2REZWJ1Zygw
KSA8PCAiS2lzRG9jOjpjb21wbGV0ZVNhdmluZygpIGVudGVyaW5nIiA8PCBlbmRsOwogCiAgICAg
aWYgKCFzdG9yZSkgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFtX3BDdXJyZW50KSAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBRTGlzdDxLaXNMYXllcj4gbGF5ZXJzID0gbV9wQ3VycmVu
dC0+bGF5ZXJMaXN0KCk7CisgICAgUVN0cmluZ0xpc3QgaW1hZ2VOYW1lcyA9IGltYWdlcygpOwor
ICAgIFFTdHJpbmcgdG1wX2N1cnJlbnRJbWFnZU5hbWUgPSBjdXJyZW50SW1hZ2UoKTsKKyAgICB1
aW50IGltYWdlTnVtYmVycyA9IDE7CiAKLSAgICBmb3IgKCBLaXNMYXllciAqbGF5ID0gbGF5ZXJz
LmZpcnN0KCk7IGxheSAhPSAwOyBsYXkgPSBsYXllcnMubmV4dCgpKQorICAgIGZvciAoIFFTdHJp
bmdMaXN0OjpJdGVyYXRvciBpdCA9IGltYWdlTmFtZXMuYmVnaW4oKTsgaXQgIT0gaW1hZ2VOYW1l
cy5lbmQoKTsgKytpdCApCiAgICAgewotICAgICAgICBmb3IgKCBLaXNDaGFubmVsKiBjaCA9IGxh
eS0+Zmlyc3RDaGFubmVsKCk7IGNoICE9IDA7IGNoID0gbGF5LT5uZXh0Q2hhbm5lbCgpKQotCSAg
ICB7Ci0JICAgICAgICBRU3RyaW5nIHVybCA9IFFTdHJpbmcoICJsYXllcnMvJTEvY2hhbm5lbHMv
Y2glMi5iaW4iICkuYXJnKCBsYXktPm5hbWUoKSApCi0JCQkgICAgLmFyZyggc3RhdGljX2Nhc3Q8
aW50PihjaC0+Y2hhbm5lbElkKCkpICk7CisgICAgICAgIHNldEltYWdlKCAqaXQgKTsKKyAgICAg
ICAgUUxpc3Q8S2lzTGF5ZXI+IGxheWVycyA9IG1fcEN1cnJlbnQtPmxheWVyTGlzdCgpOworICAg
ICAgICB1aW50IGxheWVyTnVtYmVycyA9IDA7CiAKLSAgICAgICAgICAgIGlmICggc3RvcmUtPm9w
ZW4oIHVybCApICkKLQkgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjaC0+d3JpdGVUb1N0b3Jl
KHN0b3JlKTsKLQkJICAgICAgICBzdG9yZS0+Y2xvc2UoKTsKLQkgICAgICAgIH0KLQkgICAgfQot
ICAgIH0KKyAgICAgICAgZm9yICggS2lzTGF5ZXIgKmxheSA9IGxheWVycy5maXJzdCgpOyBsYXkg
IT0gMDsgbGF5ID0gbGF5ZXJzLm5leHQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICgg
S2lzQ2hhbm5lbCogY2ggPSBsYXktPmZpcnN0Q2hhbm5lbCgpOyBjaCAhPSAwOyBjaCA9IGxheS0+
bmV4dENoYW5uZWwoKSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUVN0cmluZyBp
bWFnZSA9IFFTdHJpbmcoICJpbWFnZSUxIiApLmFyZyggaW1hZ2VOdW1iZXJzICk7CisgICAgICAg
ICAgICAgICAgUVN0cmluZyBsYXllcjsKKyAgICAgICAgICAgICAgICBpZiAoIGxheWVyTnVtYmVy
cyA9PSAwICkKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIgPSBRU3RyaW5nOjpmcm9tTGF0aW4x
KCAiYmFja2dyb3VuZCIgKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGxheWVyID0gUVN0cmluZyggImxheWVyJTEiICkuYXJnKCBsYXllck51bWJlcnMgKTsKIAot
a2REZWJ1ZygwKSA8PCAiS2lzRG9jOjpjb21wbGV0ZVNhdmluZygpIGxlYXZpbmciIDw8IGVuZGw7
CisgICAgICAgICAgICAgICAgUVN0cmluZyB1cmwgPSBRU3RyaW5nKCAiaW1hZ2VzLyUxL2xheWVy
cy8lMi9jaGFubmVscy9jaCUzLmJpbiIgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LmFyZyggaW1hZ2UgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFyZyggbGF5ZXIg
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFyZyggc3RhdGljX2Nhc3Q8aW50Pihj
aC0+Y2hhbm5lbElkKCkpICk7CiAKKyAgICAgICAgICAgICAgICBpZiAoIHN0b3JlLT5vcGVuKCB1
cmwgKSApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjaC0+d3JpdGVU
b1N0b3JlKHN0b3JlKTsKKyAgICAgICAgICAgICAgICAgICAgc3RvcmUtPmNsb3NlKCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgKytsYXllck51bWJlcnM7
CisgICAgICAgIH0KKyAgICAgICAgKytpbWFnZU51bWJlcnM7CisgICAgfQorICAgIGtkRGVidWco
MCkgPDwgIktpc0RvYzo6Y29tcGxldGVTYXZpbmcoKSBsZWF2aW5nIiA8PCBlbmRsOworICAgIHNl
dEltYWdlKCB0bXBfY3VycmVudEltYWdlTmFtZSApOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTMxOSwxMjEgKzM2MywxNDggQEAga2REZWJ1ZygwKSA8PCAiS2lzRG9jOjpjb21wbGV0ZVNh
dmluZygpIAogCiBib29sIEtpc0RvYzo6bG9hZFhNTCggUUlPRGV2aWNlICosIGNvbnN0IFFEb21E
b2N1bWVudCYgZG9jICkKIHsKLWtkRGVidWcoMCkgPDwgIktpc0RvYzo6bG9hZFhNTCgpIGVudGVy
aW5nIiA8PCBlbmRsOworICAgIGtkRGVidWcoMCkgPDwgIktpc0RvYzo6bG9hZFhNTCgpIGVudGVy
aW5nIiA8PCBlbmRsOwogCiAgICAgaWYgKCBkb2MuZG9jdHlwZSgpLm5hbWUoKSAhPSAiaW1hZ2Ui
ICkKICAgICB7CiAgICAgICAgIGtkRGVidWcoMCkgPDwgIktpc0RvYzo6bG9hZFhNTCgpIG5vIGRv
Y3R5cGUgbmFtZSBlcnJvciIgPDwgZW5kbDsKLQkgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUURvbUVsZW1lbnQgaW1hZ2UgPSBkb2MuZG9jdW1l
bnRFbGVtZW50KCk7CisgICAgUURvbUVsZW1lbnQgaW1hZ2VzID0gZG9jLmRvY3VtZW50RWxlbWVu
dCgpOwogCi0gICAgaWYgKGltYWdlLmF0dHJpYnV0ZSggIm1pbWUiICkgIT0gImFwcGxpY2F0aW9u
L3gta3JheW9uIikKKyAgICBpZiAoIGltYWdlcy5hdHRyaWJ1dGUoICJtaW1lIiApICE9ICJhcHBs
aWNhdGlvbi94LWtyYXlvbiIgKQogICAgIHsKICAgICAgICAga2REZWJ1ZygwKSA8PCAiS2lzRG9j
Ojpsb2FkWE1MKCkgbm8gbWltZSBuYW1lIGVycm9yIiA8PCBlbmRsOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgLy8gdGhpcyBhc3N1bWVzIHRoYXQgd2UgYXJlIGxvYWRpbmcg
YW4gZXhpc3RpbmcgaW1hZ2UKLSAgICAvLyB3aXRoIGNlcnRhaW4gYXR0cmlidXRlcyBzZXQKKyAg
ICBRRG9tRWxlbWVudCBlbGVtID0gaW1hZ2VzLmZpcnN0Q2hpbGQoKS50b0VsZW1lbnQoKTsKKyAg
ICB3aGlsZSAoICFlbGVtLmlzTnVsbCgpICkKKyAgICB7CisgICAgICAgIGlmICggZWxlbS50YWdO
YW1lKCkgPT0gImltYWdlIiApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHRoaXMgYXNzdW1l
cyB0aGF0IHdlIGFyZSBsb2FkaW5nIGFuIGV4aXN0aW5nIGltYWdlCisgICAgICAgICAgICAvLyB3
aXRoIGNlcnRhaW4gYXR0cmlidXRlcyBzZXQKIAotICAgIFFTdHJpbmcgbmFtZSA9IGltYWdlLmF0
dHJpYnV0ZSggIm5hbWUiICk7Ci0gICAgaW50IHcgPSBpbWFnZS5hdHRyaWJ1dGUoICJ3aWR0aCIg
KS50b0ludCgpOwotICAgIGludCBoID0gaW1hZ2UuYXR0cmlidXRlKCAiaGVpZ2h0IiApLnRvSW50
KCk7Ci0gICAgaW50IGNtID0gaW1hZ2UuYXR0cmlidXRlKCAiY01vZGUiICkudG9JbnQoKTsKLSAg
ICBpbnQgYmQgPSBpbWFnZS5hdHRyaWJ1dGUoICJiaXREZXB0aCIgKS50b0ludCgpOworICAgICAg
ICAgICAgUVN0cmluZyBuYW1lID0gZWxlbS5hdHRyaWJ1dGUoICJuYW1lIiApOworICAgICAgICAg
ICAgaW50IHcgPSBlbGVtLmF0dHJpYnV0ZSggIndpZHRoIiApLnRvSW50KCk7CisgICAgICAgICAg
ICBpbnQgaCA9IGVsZW0uYXR0cmlidXRlKCAiaGVpZ2h0IiApLnRvSW50KCk7CisgICAgICAgICAg
ICBpbnQgY20gPSBlbGVtLmF0dHJpYnV0ZSggImNNb2RlIiApLnRvSW50KCk7CisgICAgICAgICAg
ICBpbnQgYmQgPSBlbGVtLmF0dHJpYnV0ZSggImJpdERlcHRoIiApLnRvSW50KCk7CiAKLWtkRGVi
dWcoMCkgPDwgIm5hbWU6ICIgPDwgbmFtZSA8PCBlbmRsOwota2REZWJ1ZygwKSA8PCAid2lkdGg6
ICIgPDwgdyA8PCBlbmRsOwota2REZWJ1ZygwKSA8PCAiaGVpZ2h0OiAiIDw8IHcgPDwgZW5kbDsK
LWtkRGVidWcoMCkgPDwgImNNb2RlOiAiIDw8IGNtIDw8IGVuZGw7Ci1rZERlYnVnKDApIDw8ICJi
aXREZXB0aDogIiA8PCBiZCA8PCBlbmRsOworICAgICAgICAgICAga2REZWJ1ZygwKSA8PCAibmFt
ZTogIiA8PCBuYW1lIDw8IGVuZGw7CisgICAgICAgICAgICBrZERlYnVnKDApIDw8ICJ3aWR0aDog
IiA8PCB3IDw8IGVuZGw7CisgICAgICAgICAgICBrZERlYnVnKDApIDw8ICJoZWlnaHQ6ICIgPDwg
dyA8PCBlbmRsOworICAgICAgICAgICAga2REZWJ1ZygwKSA8PCAiY01vZGU6ICIgPDwgY20gPDwg
ZW5kbDsKKyAgICAgICAgICAgIGtkRGVidWcoMCkgPDwgImJpdERlcHRoOiAiIDw8IGJkIDw8IGVu
ZGw7CiAKLSAgICBjTW9kZSBjb2xvck1vZGU7CisgICAgICAgICAgICBjTW9kZSBjb2xvck1vZGU7
CiAKLSAgICBzd2l0Y2ggKGNtKQotICAgIHsKLSAgICAgIGNhc2UgMDoKLQkgICAgY29sb3JNb2Rl
ID0gY21fSW5kZXhlZDsKLQkgICAgYnJlYWs7Ci0JICBjYXNlIDE6Ci0JICAgIGNvbG9yTW9kZSA9
IGNtX0dyZXlzY2FsZTsKLQkgICAgYnJlYWs7Ci0JICBjYXNlIDI6Ci0JICAgIGNvbG9yTW9kZSA9
IGNtX1JHQjsKLQkgICAgYnJlYWs7Ci0JICBjYXNlIDM6Ci0JICAgIGNvbG9yTW9kZSA9IGNtX1JH
QkE7Ci0JICAgIGJyZWFrOwotCSAgY2FzZSA0OgotCSAgICBjb2xvck1vZGUgPSBjbV9DTVlLOwot
CSAgICBicmVhazsKLQkgIGNhc2UgNToKLQkgICAgY29sb3JNb2RlID0gY21fQ01ZS0E7Ci0JICAg
IGJyZWFrOwotCSAgY2FzZSA2OgotCSAgICBjb2xvck1vZGUgPSBjbV9MYWI7Ci0JICAgIGJyZWFr
OwotCSAgY2FzZSA3OgotCSAgICBjb2xvck1vZGUgPSBjbV9MYWJBOwotCSAgICBicmVhazsKLQkg
IGRlZmF1bHQ6Ci0JICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgICAgICAgICBzd2l0Y2gg
KCBjbSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAg
ICAgICAgICAgICBjb2xvck1vZGUgPSBjbV9JbmRleGVkOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIGNvbG9y
TW9kZSA9IGNtX0dyZXlzY2FsZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICBjb2xvck1vZGUgPSBjbV9SR0I7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAg
ICAgICAgICAgICAgICAgICAgY29sb3JNb2RlID0gY21fUkdCQTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICBj
b2xvck1vZGUgPSBjbV9DTVlLOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAgICAgICAgIGNvbG9yTW9kZSA9IGNtX0NNWUtB
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDY6Cisg
ICAgICAgICAgICAgICAgICAgIGNvbG9yTW9kZSA9IGNtX0xhYjsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSA3OgorICAgICAgICAgICAgICAgICAgICBj
b2xvck1vZGUgPSBjbV9MYWJBOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9CiAKLSAgICBLaXNJbWFnZSAqaW1nID0gbmV3SW1hZ2UobmFtZSwgdywgaCwgY29s
b3JNb2RlLCBiZCk7Ci0gICAgaWYgKCFpbWcpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIEtp
c0ltYWdlICppbWcgPSBuZXdJbWFnZSggbmFtZSwgdywgaCwgY29sb3JNb2RlLCBiZCApOworICAg
ICAgICAgICAgaWYgKCAhaW1nICkgcmV0dXJuIGZhbHNlOwogCi0gICAgaW1nLT5zZXRBdXRob3Io
IGltYWdlLmF0dHJpYnV0ZSggImF1dGhvciIgKSk7Ci0gICAgaW1nLT5zZXRFbWFpbCggaW1hZ2Uu
YXR0cmlidXRlKCAiZW1haWwiICkpOworICAgICAgICAgICAgaW1nLT5zZXRBdXRob3IoIGVsZW0u
YXR0cmlidXRlKCAiYXV0aG9yIiApICk7CisgICAgICAgICAgICBpbWctPnNldEVtYWlsKCBlbGVt
LmF0dHJpYnV0ZSggImVtYWlsIiApICk7CiAKLSAgICAvLyBsYXllcnMgZWxlbWVudAotICAgIFFE
b21FbGVtZW50IGxheWVycyA9IGltYWdlLm5hbWVkSXRlbSggImxheWVycyIgKS50b0VsZW1lbnQo
KTsKLSAgICBpZiAobGF5ZXJzLmlzTnVsbCgpKQotICAgIHsKLSAgICAgICAga2REZWJ1ZygwKSA8
PCAiS2lzRG9jOjpsb2FkWE1MKCk6IGxheWVycy5pc051bGwoKSBlcnJvciEiIDw8IGVuZGw7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgICAgICAgICAvLyBsYXllcnMgZWxlbWVu
dAorICAgICAgICAgICAgUURvbUVsZW1lbnQgbGF5ZXJzID0gZWxlbS5uYW1lZEl0ZW0oICJsYXll
cnMiICkudG9FbGVtZW50KCk7CisgICAgICAgICAgICBpZiAoIGxheWVycy5pc051bGwoKSApCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAga2REZWJ1ZygwKSA8PCAiS2lzRG9jOjpsb2Fk
WE1MKCk6IGxheWVycy5pc051bGwoKSBlcnJvciEiIDw8IGVuZGw7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQogCi0gICAgLy8gbGF5ZXIgZWxlbWVudHMKLSAg
ICBRRG9tTm9kZSBsID0gbGF5ZXJzLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgIC8vIGxheWVy
IGVsZW1lbnRzCisgICAgICAgICAgICBRRG9tTm9kZSBsID0gbGF5ZXJzLmZpcnN0Q2hpbGQoKTsK
IAotICAgIHdoaWxlICghbC5pc051bGwoKSkKLSAgICB7Ci0gICAgICAgIFFEb21FbGVtZW50IGxh
eWVyID0gbC50b0VsZW1lbnQoKTsKLSAgICAgICAgaWYgKGxheWVyLnRhZ05hbWUoKSAhPSAibGF5
ZXIiICkgY29udGludWU7CisgICAgICAgICAgICB3aGlsZSAoICFsLmlzTnVsbCgpICkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBRRG9tRWxlbWVudCBsYXllciA9IGwudG9FbGVtZW50
KCk7CisgICAgICAgICAgICAgICAgaWYgKCBsYXllci50YWdOYW1lKCkgIT0gImxheWVyIiApIGNv
bnRpbnVlOwogCi0JICAgIGNvdXQgPDwgImxheWVyIiA8PCBlbmRsOworICAgICAgICAgICAgICAg
IGtkRGVidWcoMCkgPDwgImxheWVyIiA8PCBlbmRsOwogCi0JICAgIC8vIGNoYW5uZWxzIGVsZW1l
bnQKLQkgICAgUURvbUVsZW1lbnQgY2hhbm5lbHMgPSBsYXllci5uYW1lZEl0ZW0oICJjaGFubmVs
cyIgKS50b0VsZW1lbnQoKTsKLQkgICAgaWYgKGNoYW5uZWxzLmlzTnVsbCgpKSBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICBRU3RyaW5nIGxheWVyTmFtZSA9IGxheWVyLmF0dHJpYnV0ZSggIm5h
bWUiICk7CisgICAgICAgICAgICAgICAgaW50IHcgPSBsYXllci5hdHRyaWJ1dGUoICJ3aWR0aCIg
KS50b0ludCgpOworICAgICAgICAgICAgICAgIGludCBoID0gbGF5ZXIuYXR0cmlidXRlKCAiaGVp
Z2h0IiApLnRvSW50KCk7CisgICAgICAgICAgICAgICAgaW50IHggPSBsYXllci5hdHRyaWJ1dGUo
ICJ4IiApLnRvSW50KCk7CisgICAgICAgICAgICAgICAgaW50IHkgPSBsYXllci5hdHRyaWJ1dGUo
ICJ5IiApLnRvSW50KCk7CiAKLQkgICAgLy8gY2hhbm5lbCBlbGVtZW50cwotCSAgICBRRG9tTm9k
ZSBjID0gY2hhbm5lbHMuZmlyc3RDaGlsZCgpOworICAgICAgICAgICAgICAgIGltZy0+YWRkTGF5
ZXIoIFFSZWN0KCB4LCB5LCB3LCBoICksIEtpc0NvbG9yOjp3aGl0ZSgpLCB0cnVlLCBsYXllck5h
bWUgKTsKKyAgICAgICAgICAgICAgICBpbWctPm1hcmtEaXJ0eSggUVJlY3QoIHgsIHksIHcsIGgg
KSApOwogCi0JICAgIHdoaWxlICghYy5pc051bGwoKSkKLQkgICAgewotCSAgICAgICAgUURvbUVs
ZW1lbnQgY2hhbm5lbCA9IGMudG9FbGVtZW50KCk7Ci0JICAgICAgICBpZiAoY2hhbm5lbC50YWdO
YW1lKCkgIT0gImNoYW5uZWwiICkgY29udGludWU7CisgICAgICAgICAgICAgICAgS2lzTGF5ZXIg
KmxheSA9IGltZy0+Z2V0Q3VycmVudExheWVyKCk7CisgICAgICAgICAgICAgICAgbGF5LT5zZXRP
cGFjaXR5KCBsYXllci5hdHRyaWJ1dGUoICJvcGFjaXR5IiApLnRvSW50KCkgKTsKIAotICAgICAg
ICAgICAgY291dCA8PCAiY2hhbm5lbCIgPDwgZW5kbDsKLQkgICAgICAgIGMgPSBjLm5leHRTaWJs
aW5nKCk7Ci0JICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIGxheWVyLmF0dHJpYnV0ZSggInZp
c2libGUiICkgPT0gInRydWUiICkKKyAgICAgICAgICAgICAgICAgICAgbGF5LT5zZXRWaXNpYmxl
KCB0cnVlICk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsYXkt
PnNldFZpc2libGUoIGZhbHNlICk7CiAKLQkgICAgbCA9IGwubmV4dFNpYmxpbmcoKTsKLSAgICB9
CisgICAgICAgICAgICAgICAgaWYgKCBsYXllci5hdHRyaWJ1dGUoICJsaW5rZWQiICkgPT0gInRy
dWUiICkKKyAgICAgICAgICAgICAgICAgICAgbGF5LT5zZXRMaW5rZWQoIHRydWUgKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxheS0+c2V0TGlua2VkKCBmYWxz
ZSApOwogCi0gICAgLyogYWRkIGJhY2tncm91bmQgbGF5ZXIgOiBzaG91bGQgb25seSBkbyB0aGlz
IGZvciBhIG5ldyBkb2N1bWVudCwgbm90Ci0gICAgd2hlbiBsb2FkaW5nIGFuIGV4aXN0aW5nIGlt
YWdlIC0gZm9yIGV4aXN0aW5nIGRvY3VtZW50LAotICAgIGJ1dCB3aWxsIGRvIGZvciBub3cgKi8K
IAotICAgIGltZy0+YWRkTGF5ZXIoIFFSZWN0KDAsIDAsIHcsIGgpLCBLaXNDb2xvcjo6d2hpdGUo
KSwgZmFsc2UsIGkxOG4oImJhY2tncm91bmQiKSk7Ci0gICAgaW1nLT5tYXJrRGlydHkoIFFSZWN0
KDAsIDAsIHcsIGgpICk7Ci0gICAgc2V0Q3VycmVudEltYWdlKGltZyk7CiAKLWtkRGVidWcoMCkg
PDwgIktpc0RvYzo6bG9hZFhNTCgpIGxlYXZpbmcgc3VjY2VzZnVsbHkiIDw8IGVuZGw7CisgICAg
ICAgICAgICAgICAgLy8gY2hhbm5lbHMgZWxlbWVudAorICAgICAgICAgICAgICAgIFFEb21FbGVt
ZW50IGNoYW5uZWxzID0gbGF5ZXIubmFtZWRJdGVtKCAiY2hhbm5lbHMiICkudG9FbGVtZW50KCk7
CisgICAgICAgICAgICAgICAgaWYgKCBjaGFubmVscy5pc051bGwoKSApIGNvbnRpbnVlOworCisg
ICAgICAgICAgICAgICAgLy8gY2hhbm5lbCBlbGVtZW50cworICAgICAgICAgICAgICAgIFFEb21O
b2RlIGMgPSBjaGFubmVscy5maXJzdENoaWxkKCk7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAo
ICFjLmlzTnVsbCgpICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFFE
b21FbGVtZW50IGNoYW5uZWwgPSBjLnRvRWxlbWVudCgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIGNoYW5uZWwudGFnTmFtZSgpICE9ICJjaGFubmVsIiApIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAgICAgICAgIGtkRGVidWcoMCkgPDwgImNoYW5uZWwiIDw8IGVuZGw7CisgICAgICAgICAg
ICAgICAgICAgIGMgPSBjLm5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgbCA9IGwubmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgc2V0Q3VycmVudEltYWdlKCBpbWcgKTsKKyAgICAgICAgfQorCisgICAgICAgIGVsZW0g
PSBlbGVtLm5leHRTaWJsaW5nKCkudG9FbGVtZW50KCk7CisgICAgfQorCisgICAga2REZWJ1Zygw
KSA8PCAiS2lzRG9jOjpsb2FkWE1MKCkgbGVhdmluZyBzdWNjZXNmdWxseSIgPDwgZW5kbDsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDQyLDM1ICs1MTMsNTQgQEAga2REZWJ1ZygwKSA8PCAi
S2lzRG9jOjpsb2FkWE1MKCkgbGVhdmluZwogCiBib29sIEtpc0RvYzo6Y29tcGxldGVMb2FkaW5n
KCBLb1N0b3JlKiBzdG9yZSkKIHsKLQota2REZWJ1ZygwKSA8PCAiS2lzRG9jOjpjb21wbGV0ZUxv
YWRpbmcoKSBlbnRlcmluZyIgPDwgZW5kbDsKKyAgICBrZERlYnVnKDApIDw8ICJLaXNEb2M6OmNv
bXBsZXRlTG9hZGluZygpIGVudGVyaW5nIiA8PCBlbmRsOwogCiAgICAgaWYgKCAhc3RvcmUgKSAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICggIW1fcEN1cnJlbnQpIHJldHVybiBmYWxzZTsKIAotICAg
IFFMaXN0PEtpc0xheWVyPiBsYXllcnMgPSBtX3BDdXJyZW50LT5sYXllckxpc3QoKTsKKyAgICBR
U3RyaW5nTGlzdCBpbWFnZU5hbWVzID0gaW1hZ2VzKCk7CisgICAgUVN0cmluZyB0bXBfY3VycmVu
dEltYWdlTmFtZSA9IGN1cnJlbnRJbWFnZSgpOworICAgIHVpbnQgaW1hZ2VOdW1iZXJzID0gMTsK
IAotICAgIGZvciAoS2lzTGF5ZXIgKmxheSA9IGxheWVycy5maXJzdCgpOyBsYXkgIT0gMDsgbGF5
ID0gbGF5ZXJzLm5leHQoKSkKKyAgICBmb3IgKCBRU3RyaW5nTGlzdDo6SXRlcmF0b3IgaXQgPSBp
bWFnZU5hbWVzLmJlZ2luKCk7IGl0ICE9IGltYWdlTmFtZXMuZW5kKCk7ICsraXQgKQogICAgIHsK
LSAgICAgICAgZm9yICggS2lzQ2hhbm5lbCogY2ggPSBsYXktPmZpcnN0Q2hhbm5lbCgpOyBjaCAh
PSAwOyBjaCA9IGxheS0+bmV4dENoYW5uZWwoKSkKLQkgICAgewotCSAgICAgICAgUVN0cmluZyB1
cmwgPSBRU3RyaW5nKCAibGF5ZXJzLyUxL2NoYW5uZWxzL2NoJTIuYmluIiApLmFyZyggbGF5LT5u
YW1lKCkgKQotCQkJICAgIC5hcmcoIHN0YXRpY19jYXN0PGludD4oY2gtPmNoYW5uZWxJZCgpKSAp
OworICAgICAgICBzZXRJbWFnZSggKml0ICk7CisgICAgICAgIFFMaXN0PEtpc0xheWVyPiBsYXll
cnMgPSBtX3BDdXJyZW50LT5sYXllckxpc3QoKTsKKyAgICAgICAgdWludCBsYXllck51bWJlcnMg
PSAwOwogCi0gICAgICAgICAgICBpZiAoIHN0b3JlLT5vcGVuKCB1cmwgKSApCi0JICAgICAgICB7
Ci0gICAgICAgICAgICAgICAga2REZWJ1ZygwKSA8PCAiS2lzRG9jOjpjb21wbGV0ZUxvYWRpbmco
KSBjaC0+bG9hZEZyb21TdG9yZSgpIiA8PCBlbmRsOwotICAgICAgICAgICAgICAgIGNoLT5sb2Fk
RnJvbVN0b3JlKHN0b3JlKTsKLQkJICAgICAgICBzdG9yZS0+Y2xvc2UoKTsKLQkgICAgICAgIH0K
LQkgICAgfQotICAgIH0KKyAgICAgICAgZm9yICggS2lzTGF5ZXIgKmxheSA9IGxheWVycy5maXJz
dCgpOyBsYXkgIT0gMDsgbGF5ID0gbGF5ZXJzLm5leHQoKSApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZvciAoIEtpc0NoYW5uZWwqIGNoID0gbGF5LT5maXJzdENoYW5uZWwoKTsgY2ggIT0gMDsg
Y2ggPSBsYXktPm5leHRDaGFubmVsKCkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IFFTdHJpbmcgaW1hZ2UgPSBRU3RyaW5nKCAiaW1hZ2UlMSIgKS5hcmcoIGltYWdlTnVtYmVycyAp
OworICAgICAgICAgICAgICAgIFFTdHJpbmcgbGF5ZXI7CisgICAgICAgICAgICAgICAgaWYgKCBs
YXllck51bWJlcnMgPT0gMCApCisgICAgICAgICAgICAgICAgICAgIGxheWVyID0gUVN0cmluZzo6
ZnJvbUxhdGluMSggImJhY2tncm91bmQiICk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICBsYXllciA9IFFTdHJpbmcoICJsYXllciUxIiApLmFyZyggbGF5ZXJOdW1i
ZXJzICk7CiAKLSAgICAvLyBuZWVkIHRoaXMgdG8gZm9yY2UgcmVkcmF3IG9mIGltYWdlIGRhdGEg
anVzdCBsb2FkZWQKLSAgICBjdXJyZW50KCktPm1hcmtEaXJ0eShRUmVjdCgwLCAwLCBjdXJyZW50
KCktPndpZHRoKCksIGN1cnJlbnQoKS0+aGVpZ2h0KCkpKTsKLSAgICBzZXRDdXJyZW50SW1hZ2Uo
Y3VycmVudCgpKTsKKyAgICAgICAgICAgICAgICBRU3RyaW5nIHVybCA9IFFTdHJpbmcoICJpbWFn
ZXMvJTEvbGF5ZXJzLyUyL2NoYW5uZWxzL2NoJTMuYmluIiApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuYXJnKCBpbWFnZSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu
YXJnKCBsYXllciApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXJnKCBzdGF0aWNf
Y2FzdDxpbnQ+KGNoLT5jaGFubmVsSWQoKSkgKTsKIAota2REZWJ1ZygwKSA8PCAiS2lzRG9jOjpj
b21wbGV0ZUxvYWRpbmcoKSBsZWF2aW5nIiA8PCBlbmRsOworICAgICAgICAgICAgICAgIGlmICgg
c3RvcmUtPm9wZW4oIHVybCApICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGtkRGVidWcoMCkgPDwgIktpc0RvYzo6Y29tcGxldGVMb2FkaW5nKCkgY2gtPmxvYWRGcm9t
U3RvcmUoKSIgPDwgZW5kbDsKKyAgICAgICAgICAgICAgICAgICAgY2gtPmxvYWRGcm9tU3RvcmUo
IHN0b3JlICk7CisgICAgICAgICAgICAgICAgICAgIHN0b3JlLT5jbG9zZSgpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsrbGF5ZXJOdW1iZXJzOworICAg
ICAgICB9CisgICAgICAgICsraW1hZ2VOdW1iZXJzOworCisgICAgICAgIC8vIG5lZWQgdGhpcyB0
byBmb3JjZSByZWRyYXcgb2YgaW1hZ2UgZGF0YSBqdXN0IGxvYWRlZAorICAgICAgICBjdXJyZW50
KCktPm1hcmtEaXJ0eSggUVJlY3QoIDAsIDAsIGN1cnJlbnQoKS0+d2lkdGgoKSwgY3VycmVudCgp
LT5oZWlnaHQoKSApICk7CisgICAgICAgIHNldEN1cnJlbnRJbWFnZSggY3VycmVudCgpICk7Cisg
ICAgfQorCisgICAga2REZWJ1ZygwKSA8PCAiS2lzRG9jOjpjb21wbGV0ZUxvYWRpbmcoKSBsZWF2
aW5nIiA8PCBlbmRsOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBraXNfZG9jLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tvZmZpY2Uva3JheW9uL2NvcmUva2lzX2RvYy5o
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM1CmRpZmYgLXUgLTMgLWQgLXAgLXIxLjM1IGtpc19k
b2MuaAotLS0ga2lzX2RvYy5oCTIwMDEvMDgvMTggMTE6MjI6MDUJMS4zNQorKysga2lzX2RvYy5o
CTIwMDEvMDgvMTkgMTA6Mjc6MTUKQEAgLTIyMyw2ICsyMjMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlld3Mgb2YgdGhlIHNhbWUgZGF0YSAqLwogICAgIHZpcnR1YWwgS29WaWV3KiBjcmVhdGVWaWV3
SW5zdGFuY2UoIFFXaWRnZXQqIHBhcmVudCwgY29uc3QgY2hhciogbmFtZSApOwogCisgICAgLyog
c2F2ZSBpbWFnZXMgKi8KKyAgICBRRG9tRWxlbWVudCBzYXZlSW1hZ2UoIFFEb21Eb2N1bWVudCAm
ZG9jICk7CisKICAgICAvKiB1bmRvL3JlZG8gKi8KICAgICBLb0NvbW1hbmRIaXN0b3J5IG1fY29t
bWFuZHM7CiAK

--------------Boundary-00=_3D9BCCQG6ZBYUAYOTB9D--