<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>123116</bug_id>
          
          <creation_ts>2013-10-21 13:15:53 -0700</creation_ts>
          <short_desc>Remote Layer Tree: Clean up transaction logging</short_desc>
          <delta_ts>2013-10-21 13:40:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>941995</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-21 13:15:53 -0700</bug_when>
    <thetext>Lots of duplicated code, lots of ugly things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941999</commentid>
    <comment_count>1</comment_count>
      <attachid>214770</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-21 13:20:26 -0700</bug_when>
    <thetext>Created attachment 214770
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942006</commentid>
    <comment_count>2</comment_count>
      <attachid>214770</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-21 13:36:05 -0700</bug_when>
    <thetext>Comment on attachment 214770
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=214770&amp;action=review

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm:426
&gt; +RemoteLayerTreeTextStream&amp; RemoteLayerTreeTextStream::operator&lt;&lt;(const FloatRect rect)

No need for const here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942009</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-21 13:40:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/157731</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214770</attachid>
            <date>2013-10-21 13:20:26 -0700</date>
            <delta_ts>2013-10-21 13:36:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>logging.diff</filename>
            <type>text/plain</type>
            <size>25818</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiOGNmZTA4Li5kMmI0Yzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUg
QEAKIDIwMTMtMTAtMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IENsZWFuIHVwIHRyYW5zYWN0aW9uIGxvZ2dpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzExNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46CisgICAgICAgIEV4cG9ydCBzb21lIFRleHRTdHJlYW0gZnVuY3Rpb25zLgorCisy
MDEzLTEwLTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAg
ICAgIFJlbW90ZSBMYXllciBUcmVlOiBCYWNraW5nIHN0b3JlIHNob3VsZCB0YWtlIGNvbnRlbnRz
U2NhbGUgaW50byBhY2NvdW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjMxMDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmYjEzNTEzLi5jNDEx
ZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTA0LDcgKzEwNCwxMyBAQCBfX1pON1dlYkNv
cmUxMHNldENvb2tpZXNFUE5TXzhEb2N1bWVudEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxMHRvRG9jdW1lbnRFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTEwVGV4
dFN0cmVhbWxzRVBLYwogX19aTjdXZWJDb3JlMTBUZXh0U3RyZWFtN3JlbGVhc2VFdgorX19aTjdX
ZWJDb3JlMTBUZXh0U3RyZWFtbHNFYgogX19aTjdXZWJDb3JlMTBUZXh0U3RyZWFtbHNFZAorX19a
TjdXZWJDb3JlMTBUZXh0U3RyZWFtbHNFZgorX19aTjdXZWJDb3JlMTBUZXh0U3RyZWFtbHNFaQor
X19aTjdXZWJDb3JlMTBUZXh0U3RyZWFtbHNFeQorX19aTjdXZWJDb3JlMTBUZXh0U3RyZWFtbHNF
UEt2CitfX1pON1dlYkNvcmUxMFRleHRTdHJlYW1sc0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTExQml0bWFwSW1hZ2UxM2dldENHSW1hZ2VSZWZFdgogX19aTjdXZWJDb3JlMTFCaXRtYXBJ
bWFnZUMxRVA3Q0dJbWFnZVBOU18xM0ltYWdlT2JzZXJ2ZXJFCiBfX1pON1dlYkNvcmUxMUJpdG1h
cEltYWdlQzFFUE5TXzEzSW1hZ2VPYnNlcnZlckUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMWQxNmRmLi5hNDZk
ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkgQEAKIDIwMTMtMTAtMjEgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6
IENsZWFuIHVwIHRyYW5zYWN0aW9uIGxvZ2dpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzExNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6UmVt
b3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZVRleHRTdHJlYW06OmluY3JlYXNlSW5kZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlVGV4dFN0cmVhbTo6ZGVjcmVhc2VJbmRlbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVUZXh0U3RyZWFtOjp3cml0ZUluZGVudCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwpOgorICAgICAgICBBZGQgc29tZSBz
dHJlYW0gb3BlcmF0b3Igb3ZlcnJpZGVzIGZvciB2YXJpb3VzIHR5cGVzIHdlIG5lZWQgdG8gZHVt
cC4KKyAgICAgICAgQWRkIGEgbm90aW9uIG9mIGN1cnJlbnQgaW5kZW50IHRvIG91ciBUZXh0U3Ry
ZWFtIHN1YmNsYXNzIHRvIG1ha2UgaXQKKyAgICAgICAgZWFzeSB0byBrZWVwIHRyYWNrIG9mIHdo
ZXJlIHdlIGFyZS4KKworICAgICAgICAoV2ViS2l0OjpkdW1wUHJvcGVydHkpOgorICAgICAgICBB
ZGRlZCwgaGFuZCBhbnkgYXJiaXRyYXJ5IHR5cGUgdG8gUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24uCisKKyAgICAgICAgKFdlYktpdDo6ZHVtcENoYW5nZWRMYXllcnMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZHVtcCk6CisgICAgICAgIE1ha2UgdXNl
IG9mIFRleHRTdHJlYW0uCisKKzIwMTMtMTAtMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CisKICAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IEJhY2tpbmcgc3RvcmUg
c2hvdWxkIHRha2UgY29udGVudHNTY2FsZSBpbnRvIGFjY291bnQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzEwNgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRl
eCA5YTJlMDc2Li43NTcyNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTMzOCw2NSArMzM4LDEzNiBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpzZXREZXN0cm95ZWRMYXllcklEcyhW
ZWN0b3I8TGF5ZXJJRD4gZGVzdHJveWVkTAogCiAjaWZuZGVmIE5ERUJVRwogCi1zdGF0aWMgdm9p
ZCB3cml0ZUluZGVudChTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50KQorY2xhc3Mg
UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSA6IHB1YmxpYyBUZXh0U3RyZWFtCiB7Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBpbmRlbnQ7ICsraSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAn
KTsKK3B1YmxpYzoKKyAgICB1c2luZyBUZXh0U3RyZWFtOjpvcGVyYXRvcjw8OworCisgICAgUmVt
b3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSgpCisgICAgICAgIDogbV9pbmRlbnQoMCkKKyAgICB7Cisg
ICAgfQorCisgICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoY29uc3QgUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKTsKKyAgICBSZW1vdGVM
YXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZsb2F0UG9pbnQzRCk7CisgICAg
UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBDb2xvcik7CisgICAg
UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBGbG9hdFNpemUpOwor
ICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgRmxvYXRSZWN0
KTsKKyAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFZlY3Rv
cjxSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJJRD4mIGxheWVycyk7CisKKyAgICB2
b2lkIGluY3JlYXNlSW5kZW50KCkgeyArK21faW5kZW50OyB9CisgICAgdm9pZCBkZWNyZWFzZUlu
ZGVudCgpIHsgLS1tX2luZGVudDsgQVNTRVJUKG1faW5kZW50ID49IDApOyB9CisKKyAgICB2b2lk
IHdyaXRlSW5kZW50KCk7CisKK3ByaXZhdGU6CisgICAgaW50IG1faW5kZW50OworfTsKKworUmVt
b3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0
b3I8PChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIFJlbW90
ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7CisgICAgdHMgPDwgIlxuIjsKKyAgICB0
cy5pbmNyZWFzZUluZGVudCgpOworICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwgIlsi
IDw8IHRyYW5zZm9ybS5tMTEoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0xMigpIDw8ICIgIiA8PCB0
cmFuc2Zvcm0ubTEzKCkgPDwgIiAiIDw8IHRyYW5zZm9ybS5tMTQoKSA8PCAiXVxuIjsKKyAgICB0
cy53cml0ZUluZGVudCgpOworICAgIHRzIDw8ICJbIiA8PCB0cmFuc2Zvcm0ubTIxKCkgPDwgIiAi
IDw8IHRyYW5zZm9ybS5tMjIoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0yMygpIDw8ICIgIiA8PCB0
cmFuc2Zvcm0ubTI0KCkgPDwgIl1cbiI7CisgICAgdHMud3JpdGVJbmRlbnQoKTsKKyAgICB0cyA8
PCAiWyIgPDwgdHJhbnNmb3JtLm0zMSgpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTMyKCkgPDwgIiAi
IDw8IHRyYW5zZm9ybS5tMzMoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0zNCgpIDw8ICJdXG4iOwor
ICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwgIlsiIDw8IHRyYW5zZm9ybS5tNDEoKSA8
PCAiICIgPDwgdHJhbnNmb3JtLm00MigpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTQzKCkgPDwgIiAi
IDw8IHRyYW5zZm9ybS5tNDQoKSA8PCAiXSI7CisgICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsKKyAg
ICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyB2b2lkIGR1bXBQcm9wZXJ0eShTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBTdHJpbmcgbmFtZSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSkKK1JlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW06Om9wZXJhdG9yPDwoY29uc3QgUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlIGZpbHRlclR5
cGUpCiB7Ci0gICAgaWYgKHRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAgIHJldHVybjsK
KyAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOworICAgIHN3aXRjaCAo
ZmlsdGVyVHlwZSkgeworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMaW5lYXI6CisgICAgICAg
IHRzIDw8ICJsaW5lYXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TmVhcmVzdDoKKyAgICAgICAgdHMgPDwgIm5lYXJlc3QiOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyOgorICAgICAgICB0cyA8PCAidHJpbGlu
ZWFyIjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CiAKLSAg
ICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB3cml0ZUluZGVudChidWlsZGVyLCAzKTsKLSAg
ICBidWlsZGVyLmFwcGVuZCgiKCIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKCJcbiIpOworUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5
ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGbG9hdFBvaW50M0QgcG9pbnQpCit7
CisgICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKKyAgICB0cyA8PCBw
b2ludC54KCkgPDwgIiAiIDw8IHBvaW50LnkoKSA8PCAiICIgPDwgcG9pbnQueigpOworICAgIHJl
dHVybiB0czsKK30KIAotICAgIFRleHRTdHJlYW0gdHM7Ci0gICAgdHMgPDwgIiAgICBbIiA8PCB0
cmFuc2Zvcm0ubTExKCkgPDwgIiAiIDw8IHRyYW5zZm9ybS5tMTIoKSA8PCAiICIgPDwgdHJhbnNm
b3JtLm0xMygpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTE0KCkgPDwgIl1cbiI7Ci0gICAgdHMgPDwg
IiAgICBbIiA8PCB0cmFuc2Zvcm0ubTIxKCkgPDwgIiAiIDw8IHRyYW5zZm9ybS5tMjIoKSA8PCAi
ICIgPDwgdHJhbnNmb3JtLm0yMygpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTI0KCkgPDwgIl1cbiI7
Ci0gICAgdHMgPDwgIiAgICBbIiA8PCB0cmFuc2Zvcm0ubTMxKCkgPDwgIiAiIDw8IHRyYW5zZm9y
bS5tMzIoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0zMygpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTM0
KCkgPDwgIl1cbiI7Ci0gICAgdHMgPDwgIiAgICBbIiA8PCB0cmFuc2Zvcm0ubTQxKCkgPDwgIiAi
IDw8IHRyYW5zZm9ybS5tNDIoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm00MygpIDw8ICIgIiA8PCB0
cmFuc2Zvcm0ubTQ0KCkgPDwgIl0pIjsKK1JlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90
ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgQ29sb3IgY29sb3IpCit7Cisg
ICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKKyAgICB0cyA8PCBjb2xv
ci5zZXJpYWxpemVkKCk7CisgICAgcmV0dXJuIHRzOworfQogCi0gICAgYnVpbGRlci5hcHBlbmQo
dHMucmVsZWFzZSgpKTsKK1JlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJl
ZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgRmxvYXRTaXplIHNpemUpCit7CisgICAgUmVt
b3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKKyAgICB0cyA8PCBzaXplLndpZHRo
KCkgPDwgIiAiIDw8IHNpemUuaGVpZ2h0KCk7CisgICAgcmV0dXJuIHRzOwogfQogCi1zdGF0aWMg
dm9pZCBkdW1wUHJvcGVydHkoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgU3RyaW5nIG5hbWUsIGNv
bnN0IFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSBmaWx0ZXJUeXBlKQorUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25z
dCBGbG9hdFJlY3QgcmVjdCkKIHsKLSAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICB3cml0
ZUluZGVudChidWlsZGVyLCAzKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGJ1aWxk
ZXIuYXBwZW5kKG5hbWUpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgUmVtb3RlTGF5
ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKKyAgICB0cyA8PCByZWN0LngoKSA8PCAiICIg
PDwgcmVjdC55KCkgPDwgIiAiIDw8IHJlY3Qud2lkdGgoKSA8PCAiICIgPDwgcmVjdC5oZWlnaHQo
KTsKKyAgICByZXR1cm4gdHM7Cit9CiAKLSAgICBzd2l0Y2ggKGZpbHRlclR5cGUpIHsKLSAgICAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxpbmVhcjoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJsaW5lYXIiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TmVhcmVzdDoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJuZWFyZXN0Iik7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OlRyaWxp
bmVhcjoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ0cmlsaW5lYXIiKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKK1JlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJl
bW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgVmVjdG9yPFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllcklEPiYgbGF5ZXJzKQoreworICAgIFJlbW90ZUxheWVy
VHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxheWVycy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaSkKKyAgICAgICAgICAgIHRzIDw8
ICIgIjsKKyAgICAgICAgdHMgPDwgbGF5ZXJzW2ldOwogICAgIH0KIAotICAgIGJ1aWxkZXIuYXBw
ZW5kKCIpIik7CisgICAgcmV0dXJuIHRzOworfQorCit2b2lkIFJlbW90ZUxheWVyVHJlZVRleHRT
dHJlYW06OndyaXRlSW5kZW50KCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faW5kZW50
OyArK2kpCisgICAgICAgICp0aGlzIDw8ICIgICI7CiB9CiAKLXN0YXRpYyB2b2lkIGR1bXBDaGFu
Z2VkTGF5ZXJzKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IEhhc2hNYXA8UmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVySUQsIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpM
YXllclByb3BlcnRpZXM+JiBjaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKQordGVtcGxhdGUgPGNsYXNz
IFQ+CitzdGF0aWMgdm9pZCBkdW1wUHJvcGVydHkoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYg
dHMsIFN0cmluZyBuYW1lLCBUIHZhbHVlKQoreworICAgIHRzIDw8ICJcbiI7CisgICAgdHMuaW5j
cmVhc2VJbmRlbnQoKTsKKyAgICB0cy53cml0ZUluZGVudCgpOworICAgIHRzIDw8ICIoIiA8PCBu
YW1lIDw8ICIgIjsKKyAgICB0cyA8PCB2YWx1ZSA8PCAiKSI7CisgICAgdHMuZGVjcmVhc2VJbmRl
bnQoKTsKK30KKworc3RhdGljIHZvaWQgZHVtcENoYW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVl
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IEhhc2hNYXA8UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkxheWVySUQsIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM+JiBj
aGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKQogewogICAgIGlmIChjaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd3JpdGVJbmRlbnQoYnVpbGRlciwg
MSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIihjaGFuZ2VkLWxheWVyc1xuIik7CisgICAgdHMgPDwg
IlxuIjsKKyAgICB0cy53cml0ZUluZGVudCgpOworICAgIHRzIDw8ICIoY2hhbmdlZC1sYXllcnMi
OwogCiAgICAgLy8gRHVtcCB0aGUgbGF5ZXIgcHJvcGVydGllcyBzb3J0ZWQgYnkgbGF5ZXIgSUQu
CiAgICAgVmVjdG9yPFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllcklEPiBsYXllcklE
czsKQEAgLTQwNiwyNzUgKzQ3NywxNDkgQEAgc3RhdGljIHZvaWQgZHVtcENoYW5nZWRMYXllcnMo
U3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgSGFzaE1hcDxSZW1vdGVMYXllclQKICAgICBm
b3IgKGF1dG8gbGF5ZXJJRCA6IGxheWVySURzKSB7CiAgICAgICAgIGNvbnN0IFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmIGxheWVyUHJvcGVydGllcyA9IGNoYW5n
ZWRMYXllclByb3BlcnRpZXMuZ2V0KGxheWVySUQpOwogCi0gICAgICAgIHdyaXRlSW5kZW50KGJ1
aWxkZXIsIDIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGxheWVyICIpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihsYXllcklEKTsKKyAgICAgICAgdHMgPDwgIlxuIjsKKyAgICAg
ICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKKyAgICAgICAgdHMud3JpdGVJbmRlbnQoKTsKKyAgICAg
ICAgdHMgPDwgIihsYXllciAiIDw8IGxheWVySUQ7CiAKLSAgICAgICAgaWYgKGxheWVyUHJvcGVy
dGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpOYW1l
Q2hhbmdlZCkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAg
ICB3cml0ZUluZGVudChidWlsZGVyLCAzKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIo
bmFtZSBcIiIpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGF5ZXJQcm9wZXJ0aWVzLm5h
bWUpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlwiKSIpOwotICAgICAgICB9CisgICAg
ICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TmFtZUNoYW5nZWQpCisgICAgICAgICAgICBkdW1wUHJvcGVydHk8U3Ry
aW5nPih0cywgIm5hbWUiLCBsYXllclByb3BlcnRpZXMubmFtZSk7CiAKLSAgICAgICAgaWYgKGxh
eWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpDaGlsZHJlbkNoYW5nZWQpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicp
OwotICAgICAgICAgICAgd3JpdGVJbmRlbnQoYnVpbGRlciwgMyk7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiKGNoaWxkcmVuICgiKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGF5ZXJQcm9wZXJ0aWVzLmNoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGkpCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0g
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobGF5ZXJQcm9wZXJ0aWVzLmNoaWxk
cmVuW2ldKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFu
Z2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDaGlsZHJlbkNoYW5n
ZWQpCisgICAgICAgICAgICBkdW1wUHJvcGVydHk8VmVjdG9yPFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllcklEPj4odHMsICJjaGlsZHJlbiIsIGxheWVyUHJvcGVydGllcy5jaGlsZHJl
bik7CiAKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIpIik7Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpQb3NpdGlvbkNoYW5nZWQpCisgICAgICAgICAgICBkdW1wUHJvcGVydHk8
RmxvYXRQb2ludDNEPih0cywgInBvc2l0aW9uIiwgbGF5ZXJQcm9wZXJ0aWVzLnBvc2l0aW9uKTsK
IAotICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OlBvc2l0aW9uQ2hhbmdlZCkgewotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICB3cml0ZUluZGVudChidWlsZGVyLCAzKTsK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIocG9zaXRpb24gIik7Ci0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihsYXllclByb3BlcnRpZXMucG9zaXRpb24ueCgpKTsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51
bWJlcihsYXllclByb3BlcnRpZXMucG9zaXRpb24ueSgpKTsKLSAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsYXllclByb3Bl
cnRpZXMucG9zaXRpb24ueigpKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAm
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTaXplQ2hhbmdlZCkKKyAgICAgICAgICAgIGR1
bXBQcm9wZXJ0eTxGbG9hdFNpemU+KHRzLCAic2l6ZSIsIGxheWVyUHJvcGVydGllcy5zaXplKTsK
IAotICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OlNpemVDaGFuZ2VkKSB7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnXG4nKTsKLSAgICAgICAgICAgIHdyaXRlSW5kZW50KGJ1aWxkZXIsIDMpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIihzaXplICIpOwotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmROdW1iZXIobGF5ZXJQcm9wZXJ0aWVzLnNpemUud2lkdGgoKSk7Ci0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobGF5
ZXJQcm9wZXJ0aWVzLnNpemUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyknKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9w
ZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkFuY2hvclBvaW50Q2hhbmdlZCkK
KyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxGbG9hdFBvaW50M0Q+KHRzLCAiYW5jaG9yUG9pbnQi
LCBsYXllclByb3BlcnRpZXMuYW5jaG9yUG9pbnQpOwogCi0gICAgICAgIGlmIChsYXllclByb3Bl
cnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QW5j
aG9yUG9pbnRDaGFuZ2VkKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAg
ICAgICAgICAgIHdyaXRlSW5kZW50KGJ1aWxkZXIsIDMpOwotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIihhbmNob3JQb2ludCAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KGxheWVyUHJvcGVydGllcy5hbmNob3JQb2ludC54KCkpOwotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxheWVyUHJvcGVy
dGllcy5hbmNob3JQb2ludC55KCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxheWVyUHJvcGVydGllcy5hbmNob3JQ
b2ludC56KCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tncm91bmRDb2xvckNoYW5nZWQpCisgICAgICAgICAgICBk
dW1wUHJvcGVydHk8Q29sb3I+KHRzLCAiYmFja2dyb3VuZENvbG9yIiwgbGF5ZXJQcm9wZXJ0aWVz
LmJhY2tncm91bmRDb2xvcik7CiAKLSAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2Vk
UHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNrZ3JvdW5kQ29sb3JD
aGFuZ2VkKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgICAg
IHdyaXRlSW5kZW50KGJ1aWxkZXIsIDMpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIihi
YWNrZ3JvdW5kQ29sb3IgIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsYXllclByb3Bl
cnRpZXMuYmFja2dyb3VuZENvbG9yLnNlcmlhbGl6ZWQoKSk7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnKScpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5j
aGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCb3JkZXJDb2xv
ckNoYW5nZWQpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICAg
ICAgd3JpdGVJbmRlbnQoYnVpbGRlciwgMyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
KGJvcmRlckNvbG9yICIpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGF5ZXJQcm9wZXJ0
aWVzLmJvcmRlckNvbG9yLnNlcmlhbGl6ZWQoKSk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnKScpOwotICAgICAgICB9CisgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFBy
b3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Qm9yZGVyQ29sb3JDaGFuZ2Vk
KQorICAgICAgICAgICAgZHVtcFByb3BlcnR5PENvbG9yPih0cywgImJvcmRlckNvbG9yIiwgbGF5
ZXJQcm9wZXJ0aWVzLmJvcmRlckNvbG9yKTsKIAotICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVz
LmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJvcmRlcldp
ZHRoQ2hhbmdlZCkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAg
ICAgICB3cml0ZUluZGVudChidWlsZGVyLCAzKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIoYm9yZGVyV2lkdGggIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsYXll
clByb3BlcnRpZXMuYm9yZGVyV2lkdGgpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJykn
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0
aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJvcmRlcldpZHRoQ2hhbmdlZCkKKyAg
ICAgICAgICAgIGR1bXBQcm9wZXJ0eTxmbG9hdD4odHMsICJib3JkZXJXaWR0aCIsIGxheWVyUHJv
cGVydGllcy5ib3JkZXJXaWR0aCk7CiAKLSAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFu
Z2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpPcGFjaXR5Q2hhbmdl
ZCkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICB3cml0
ZUluZGVudChidWlsZGVyLCAzKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIob3BhY2l0
eSAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxheWVyUHJvcGVydGllcy5v
cGFjaXR5KTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpPcGFjaXR5Q2hhbmdlZCkKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0
eTxmbG9hdD4odHMsICJvcGFjaXR5IiwgbGF5ZXJQcm9wZXJ0aWVzLm9wYWNpdHkpOwogCiAgICAg
ICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6VHJhbnNmb3JtQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0
eShidWlsZGVyLCAidHJhbnNmb3JtIiwgbGF5ZXJQcm9wZXJ0aWVzLnRyYW5zZm9ybSk7CisgICAg
ICAgICAgICBkdW1wUHJvcGVydHk8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRzLCAidHJhbnNmb3Jt
IiwgbGF5ZXJQcm9wZXJ0aWVzLnRyYW5zZm9ybSk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVy
dGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTdWJs
YXllclRyYW5zZm9ybUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkoYnVpbGRlciwg
InN1YmxheWVyVHJhbnNmb3JtIiwgbGF5ZXJQcm9wZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtKTsK
LQotICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkhpZGRlbkNoYW5nZWQpIHsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCdcbicpOwotICAgICAgICAgICAgd3JpdGVJbmRlbnQoYnVpbGRlciwgMyk7Ci0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGhpZGRlbiAiKTsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGxheWVyUHJvcGVydGllcy5oaWRkZW4gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGR1
bXBQcm9wZXJ0eTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHMsICJzdWJsYXllclRyYW5zZm9ybSIs
IGxheWVyUHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSk7CiAKLSAgICAgICAgaWYgKGxheWVy
UHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpHZW9tZXRyeUZsaXBwZWRDaGFuZ2VkKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKLSAgICAgICAgICAgIHdyaXRlSW5kZW50KGJ1aWxkZXIsIDMpOwotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIihnZW9tZXRyeUZsaXBwZWQgIik7Ci0gICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChsYXllclByb3BlcnRpZXMuZ2VvbWV0cnlGbGlwcGVkID8gInRydWUiIDogImZhbHNl
Iik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICB9CisgICAgICAg
IGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6SGlkZGVuQ2hhbmdlZCkKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxib29s
Pih0cywgImhpZGRlbiIsIGxheWVyUHJvcGVydGllcy5oaWRkZW4pOwogCi0gICAgICAgIGlmIChs
YXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6RG91YmxlU2lkZWRDaGFuZ2VkKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgn
XG4nKTsKLSAgICAgICAgICAgIHdyaXRlSW5kZW50KGJ1aWxkZXIsIDMpOwotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIihkb3VibGVTaWRlZCAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGxheWVyUHJvcGVydGllcy5kb3VibGVTaWRlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobGF5
ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246Okdlb21ldHJ5RmxpcHBlZENoYW5nZWQpCisgICAgICAgICAgICBkdW1wUHJvcGVydHk8Ym9v
bD4odHMsICJnZW9tZXRyeUZsaXBwZWQiLCBsYXllclByb3BlcnRpZXMuZ2VvbWV0cnlGbGlwcGVk
KTsKIAotICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1hc2tzVG9Cb3VuZHNDaGFuZ2VkKSB7Ci0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgICAgIHdyaXRlSW5kZW50KGJ1aWxk
ZXIsIDMpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIihtYXNrc1RvQm91bmRzICIpOwot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGF5ZXJQcm9wZXJ0aWVzLm1hc2tzVG9Cb3VuZHMg
PyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAm
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpEb3VibGVTaWRlZENoYW5nZWQpCisgICAgICAg
ICAgICBkdW1wUHJvcGVydHk8Ym9vbD4odHMsICJkb3VibGVTaWRlZCIsIGxheWVyUHJvcGVydGll
cy5kb3VibGVTaWRlZCk7CiAKLSAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJv
cGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpPcGFxdWVDaGFuZ2VkKSB7Ci0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgICAgIHdyaXRlSW5kZW50
KGJ1aWxkZXIsIDMpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIihvcGFxdWUgIik7Ci0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsYXllclByb3BlcnRpZXMub3BhcXVlID8gInRydWUi
IDogImZhbHNlIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICB9
CisgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6TWFza3NUb0JvdW5kc0NoYW5nZWQpCisgICAgICAgICAgICBk
dW1wUHJvcGVydHk8Ym9vbD4odHMsICJtYXNrc1RvQm91bmRzIiwgbGF5ZXJQcm9wZXJ0aWVzLm1h
c2tzVG9Cb3VuZHMpOwogCi0gICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3Bl
cnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TWFza0xheWVyQ2hhbmdlZCkgewot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICB3cml0ZUluZGVu
dChidWlsZGVyLCAzKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIobWFza0xheWVyICIp
OwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobGF5ZXJQcm9wZXJ0aWVzLm1hc2tM
YXllcik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICB9CisgICAg
ICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6T3BhcXVlQ2hhbmdlZCkKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxi
b29sPih0cywgIm9wYXF1ZSIsIGxheWVyUHJvcGVydGllcy5vcGFxdWUpOwogCi0gICAgICAgIGlm
IChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6Q29udGVudHNSZWN0Q2hhbmdlZCkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJ1xuJyk7Ci0gICAgICAgICAgICB3cml0ZUluZGVudChidWlsZGVyLCAzKTsKLSAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIoY29udGVudHNSZWN0ICIpOwotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIobGF5ZXJQcm9wZXJ0aWVzLmNvbnRlbnRzUmVjdC54KCkpOwotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGxheWVyUHJvcGVydGllcy5jb250ZW50c1JlY3QueSgpKTsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsYXllclBy
b3BlcnRpZXMuY29udGVudHNSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxheWVyUHJvcGVydGll
cy5jb250ZW50c1JlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJykn
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0
aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1hc2tMYXllckNoYW5nZWQpCisgICAg
ICAgICAgICBkdW1wUHJvcGVydHk8UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVySUQ+
KHRzLCAibWFza0xheWVyIiwgbGF5ZXJQcm9wZXJ0aWVzLm1hc2tMYXllcik7CiAKLSAgICAgICAg
aWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpDb250ZW50c1NjYWxlQ2hhbmdlZCkgewotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICB3cml0ZUluZGVudChidWlsZGVyLCAzKTsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoY29udGVudHNTY2FsZSAiKTsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kTnVtYmVyKGxheWVyUHJvcGVydGllcy5jb250ZW50c1NjYWxlKTsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGxheWVy
UHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpDb250ZW50c1JlY3RDaGFuZ2VkKQorICAgICAgICAgICAgZHVtcFByb3BlcnR5PEZsb2F0UmVj
dD4odHMsICJjb250ZW50c1JlY3QiLCBsYXllclByb3BlcnRpZXMuY29udGVudHNSZWN0KTsKKwor
ICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkNvbnRlbnRzU2NhbGVDaGFuZ2VkKQorICAgICAgICAgICAgZHVt
cFByb3BlcnR5PGZsb2F0Pih0cywgImNvbnRlbnRzU2NhbGUiLCBsYXllclByb3BlcnRpZXMuY29u
dGVudHNTY2FsZSk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVy
dGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpNaW5pZmljYXRpb25GaWx0ZXJDaGFu
Z2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KGJ1aWxkZXIsICJtaW5pZmljYXRpb25GaWx0
ZXIiLCBsYXllclByb3BlcnRpZXMubWluaWZpY2F0aW9uRmlsdGVyKTsKKyAgICAgICAgICAgIGR1
bXBQcm9wZXJ0eTxQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGU+KHRzLCAibWluaWZpY2F0aW9u
RmlsdGVyIiwgbGF5ZXJQcm9wZXJ0aWVzLm1pbmlmaWNhdGlvbkZpbHRlcik7CiAKICAgICAgICAg
aWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpNYWduaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQ
cm9wZXJ0eShidWlsZGVyLCAibWFnbmlmaWNhdGlvbkZpbHRlciIsIGxheWVyUHJvcGVydGllcy5t
YWduaWZpY2F0aW9uRmlsdGVyKTsKLQotICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5n
ZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlNwZWVkQ2hhbmdlZCkg
ewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgICAgICB3cml0ZUlu
ZGVudChidWlsZGVyLCAzKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoc3BlZWQgIik7
Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihsYXllclByb3BlcnRpZXMuc3BlZWQp
OwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgfQorICAgICAgICAg
ICAgZHVtcFByb3BlcnR5PFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZT4odHMsICJtYWduaWZp
Y2F0aW9uRmlsdGVyIiwgbGF5ZXJQcm9wZXJ0aWVzLm1hZ25pZmljYXRpb25GaWx0ZXIpOwogCi0g
ICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6VGltZU9mZnNldENoYW5nZWQpIHsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCdcbicpOwotICAgICAgICAgICAgd3JpdGVJbmRlbnQoYnVpbGRlciwgMyk7Ci0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKHRpbWVPZmZzZXQgIik7Ci0gICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZE51bWJlcihsYXllclByb3BlcnRpZXMudGltZU9mZnNldCk7Ci0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICB9CisgICAgICAgIGlmIChsYXllclBy
b3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
U3BlZWRDaGFuZ2VkKQorICAgICAgICAgICAgZHVtcFByb3BlcnR5PGZsb2F0Pih0cywgInNwZWVk
IiwgbGF5ZXJQcm9wZXJ0aWVzLnNwZWVkKTsKIAotICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVz
LmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdT
dG9yZUNoYW5nZWQpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAg
ICAgICAgd3JpdGVJbmRlbnQoYnVpbGRlciwgMyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiKGJhY2tpbmdTdG9yZSAiKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGxh
eWVyUHJvcGVydGllcy5iYWNraW5nU3RvcmUuYml0bWFwKCktPnNpemUoKS53aWR0aCgpKTsKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIik7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZE51bWJlcihsYXllclByb3BlcnRpZXMuYmFja2luZ1N0b3JlLmJpdG1hcCgpLT5zaXplKCkuaGVp
Z2h0KCkpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OlRpbWVPZmZzZXRDaGFuZ2VkKQorICAgICAgICAgICAgZHVtcFByb3Bl
cnR5PGRvdWJsZT4odHMsICJ0aW1lT2Zmc2V0IiwgbGF5ZXJQcm9wZXJ0aWVzLnRpbWVPZmZzZXQp
OwogCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIpXG4iKTsKKyAgICAgICAgaWYgKGxheWVyUHJv
cGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpC
YWNraW5nU3RvcmVDaGFuZ2VkKQorICAgICAgICAgICAgZHVtcFByb3BlcnR5PFNoYXJlYWJsZUJp
dG1hcCo+KHRzLCAiYmFja2luZ1N0b3JlIiwgbGF5ZXJQcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5i
aXRtYXAoKSk7CisKKyAgICAgICAgdHMgPDwgIikiOworCisgICAgICAgIHRzLmRlY3JlYXNlSW5k
ZW50KCk7CiAgICAgfQorCisgICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsKIH0KIAogdm9pZCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZHVtcCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwotCi0gICAgYnVpbGRlci5hcHBlbmQoIihcbiIpOworICAgIFJlbW90ZUxheWVy
VHJlZVRleHRTdHJlYW0gdHM7CiAKLSAgICB3cml0ZUluZGVudChidWlsZGVyLCAxKTsKLSAgICBi
dWlsZGVyLmFwcGVuZCgiKHJvb3QtbGF5ZXIgIik7Ci0gICAgYnVpbGRlci5hcHBlbmROdW1iZXIo
bV9yb290TGF5ZXJJRCk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIilcbiIpOworICAgIHRzIDw8ICIo
XG4iOworICAgIHRzLmluY3JlYXNlSW5kZW50KCk7CisgICAgdHMud3JpdGVJbmRlbnQoKTsKKyAg
ICB0cyA8PCAiKHJvb3QtbGF5ZXIgIiA8PCBtX3Jvb3RMYXllcklEIDw8ICIpIjsKIAogICAgIGlm
ICghbV9jcmVhdGVkTGF5ZXJzLmlzRW1wdHkoKSkgewotICAgICAgICB3cml0ZUluZGVudChidWls
ZGVyLCAxKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIihjcmVhdGVkLWxheWVyc1xuIik7Cisg
ICAgICAgIHRzIDw8ICJcbiI7CisgICAgICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgICAgIHRz
IDw8ICIoY3JlYXRlZC1sYXllcnNcbiI7CisgICAgICAgIHRzLmluY3JlYXNlSW5kZW50KCk7CiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgY3JlYXRlZExheWVyIDogbV9jcmVhdGVkTGF5ZXJzKSB7
Ci0gICAgICAgICAgICB3cml0ZUluZGVudChidWlsZGVyLCAyKTsKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCIoIik7CisgICAgICAgICAgICB0cy53cml0ZUluZGVudCgpOworICAgICAgICAg
ICAgdHMgPDwgIigiOwogICAgICAgICAgICAgc3dpdGNoIChjcmVhdGVkTGF5ZXIudHlwZSkgewog
ICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOgogICAgICAg
ICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxheWVyOgotICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJsYXllciIpOworICAgICAgICAgICAgICAgIHRzIDw8ICJs
YXllciI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6Ci0gICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoInRyYW5zZm9ybS1sYXllciIpOworICAgICAgICAgICAgICAgIHRzIDw8ICJ0cmFu
c2Zvcm0tbGF5ZXIiOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXI6Ci0gICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoInRpbGVkLWxheWVyIik7CisgICAgICAgICAgICAgICAgdHMgPDwgInRp
bGVkLWxheWVyIjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgidGlsZWQtYmFja2luZy1sYXllciIpOworICAgICAgICAgICAgICAg
IHRzIDw8ICJ0aWxlZC1iYWNraW5nLWxheWVyIjsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5n
TGF5ZXI6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoInBhZ2UtdGlsZWQtYmFja2lu
Zy1sYXllciIpOworICAgICAgICAgICAgICAgIHRzIDw8ICJwYWdlLXRpbGVkLWJhY2tpbmctbGF5
ZXIiOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZVJvb3RMYXllcjoKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgicm9vdC1sYXllciIpOworICAgICAgICAgICAgICAgIHRzIDw8ICJyb290LWxheWVyIjsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVBVlBsYXllckxheWVyOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJh
di1wbGF5ZXItbGF5ZXIiKTsKKyAgICAgICAgICAgICAgICB0cyA8PCAiYXYtcGxheWVyLWxheWVy
IjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVDdXN0b206Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoImN1
c3RvbS1sYXllciIpOworICAgICAgICAgICAgICAgIHRzIDw8ICJjdXN0b20tbGF5ZXIiOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGNyZWF0ZWRMYXll
ci5sYXllcklEKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIpXG4iKTsKKyAgICAgICAg
ICAgIHRzIDw8ICIgIiA8PCBjcmVhdGVkTGF5ZXIubGF5ZXJJRCA8PCAiKSI7CiAgICAgICAgIH0K
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoIilcbiIpOworICAgICAgICB0cyA8PCAiKSI7CisgICAg
ICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7CiAgICAgfQogCi0gICAgZHVtcENoYW5nZWRMYXllcnMo
YnVpbGRlciwgbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKTsKKyAgICBkdW1wQ2hhbmdlZExheWVy
cyh0cywgbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKTsKIAotICAgIGlmICghbV9kZXN0cm95ZWRM
YXllcklEcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgd3JpdGVJbmRlbnQoYnVpbGRlciwgMSk7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoZGVzdHJveWVkLWxheWVycyAiKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2Rlc3Ryb3llZExheWVySURzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBpZiAoaSkKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwot
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9kZXN0cm95ZWRMYXllcklEc1tpXSk7
Ci0gICAgICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIilcbiIpOwotICAgIH0KLSAgICBi
dWlsZGVyLmFwcGVuZCgiKVxuIik7CisgICAgaWYgKCFtX2Rlc3Ryb3llZExheWVySURzLmlzRW1w
dHkoKSkKKyAgICAgICAgZHVtcFByb3BlcnR5PFZlY3RvcjxSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6TGF5ZXJJRD4+KHRzLCAiZGVzdHJveWVkLWxheWVycyIsIG1fZGVzdHJveWVkTGF5ZXJJ
RHMpOworCisgICAgdHMgPDwgIilcbiI7CiAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgYnVp
bGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGZwcmludGYoc3RkZXJyLCAiJXMi
LCB0cy5yZWxlYXNlKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKICNlbmRpZiAvLyBOREVCVUcK
</data>
<flag name="review"
          id="237361"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>