<?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>217427</bug_id>
          
          <creation_ts>2020-10-07 05:24:32 -0700</creation_ts>
          <short_desc>[LFC][Integration] Add line iterator</short_desc>
          <delta_ts>2020-10-07 08:51:09 -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>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1695509</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-07 05:24:32 -0700</bug_when>
    <thetext>Iterate lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695519</commentid>
    <comment_count>1</comment_count>
      <attachid>410747</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-07 06:38:48 -0700</bug_when>
    <thetext>Created attachment 410747
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695543</commentid>
    <comment_count>2</comment_count>
      <attachid>410747</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-07 08:22:49 -0700</bug_when>
    <thetext>Comment on attachment 410747
patch

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

&gt; Source/WebCore/layout/integration/LayoutIntegrationRunIterator.h:65
&gt; +    float logicalLeft() const { return isHorizontal() ? rect().x() : rect().y(); }
&gt; +    float logicalRight() const { return isHorizontal() ? rect().maxX() : rect().maxY(); }
&gt; +    float logicalWidth() const { return isHorizontal() ? rect().width() : rect().height(); }
&gt; +    float logicalHeight() const { return isHorizontal() ? rect().height() : rect().width(); }

Assuming that the display items are all flipped from logical to physical during the layout -&gt; display transition, is this the case when the caller really expects logical coordinates here and we need to flip them back from physical to logical (curious about the use case)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695551</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-07 08:47:21 -0700</bug_when>
    <thetext>Committed r268124: &lt;https://trac.webkit.org/changeset/268124&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410747.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695552</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-07 08:48:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/70049577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695555</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-07 08:51:09 -0700</bug_when>
    <thetext>&gt; Assuming that the display items are all flipped from logical to physical
&gt; during the layout -&gt; display transition, is this the case when the caller
&gt; really expects logical coordinates here and we need to flip them back from
&gt; physical to logical (curious about the use case)?

These are here just to make porting the existing InlineBox based code easier. It sometimes uses logical coordinates. It should be pretty easy to systematically convert such code later by eliminating these APIs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410747</attachid>
            <date>2020-10-07 06:38:48 -0700</date>
            <delta_ts>2020-10-07 08:47:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>line-iterator.patch</filename>
            <type>text/plain</type>
            <size>32421</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNjdkZTRmMGJmYjcuLmIxMTAxODA3ZjM5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDcyIEBACisyMDIwLTEwLTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQWRkIGxpbmUgaXRlcmF0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzQyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsaW5lIGl0ZXJh
dG9yLiBJbiB0aGlzIHBhdGNoIGl0IGlzIG9ubHkgdXNlZCB0byByZXBsYWNlIG9uU2FtZUxpbmUg
ZnVuY3Rpb24uCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpyZW5kZXJzSW5EaWZmZXJlbnRQb3NpdGlvbiBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0
ZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
TGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvcjo6bmV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpwcmV2aW91cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjp0cmF2
ZXJzZU5leHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVy
YXRvcjo6dHJhdmVyc2VQcmV2aW91cyk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OlBhdGhMaW5lOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpvcGVy
YXRvcisrKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0
b3I6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OkxpbmVJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpvcGVyYXRvciE9IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6Om9wZXJhdG9y
KiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJh
dG9yOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpQYXRoTGluZTo6UGF0aExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OlBhdGhMaW5lOjpyZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpQYXRoTGluZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMZWdhY3lMaW5lUGF0
aDo6TGVnYWN5TGluZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxlZ2FjeUxpbmVQYXRoOjpyZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjpMZWdhY3lMaW5lUGF0aDo6dHJhdmVyc2VOZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpMZWdhY3lMaW5lUGF0aDo6dHJhdmVyc2VQcmV2aW91cyk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGVnYWN5TGluZVBhdGg6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxl
Z2FjeUxpbmVQYXRoOjphdEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TGVnYWN5TGluZVBhdGg6OnNldEF0RW5kKToKKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Ok1vZGVybkxpbmVQYXRoOjpN
b2Rlcm5MaW5lUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9k
ZXJuTGluZVBhdGg6OnJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246Ok1vZGVybkxpbmVQYXRoOjp0cmF2ZXJzZU5leHQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246Ok1vZGVybkxpbmVQYXRoOjp0cmF2ZXJzZVByZXZpb3VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpNb2Rlcm5MaW5lUGF0aDo6b3BlcmF0
b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJu
TGluZVBhdGg6OmF0RW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpNb2Rlcm5MaW5lUGF0aDo6c2V0QXRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
SW50ZWdyYXRpb246Ok1vZGVybkxpbmVQYXRoOjpsaW5lcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuTGluZVBhdGg6OmxpbmUgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvcjo6bGlu
ZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpQYXRo
UnVuOjpsb2dpY2FsTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6UGF0aFJ1bjo6bG9naWNhbFJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpQYXRoUnVuOjpsb2dpY2FsV2lkdGggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhSdW46OmxvZ2ljYWxIZWlnaHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhSdW46Om9uU2FtZUxp
bmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6OnJvb3RJbmxpbmVCb3ggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6Om9u
U2FtZUxpbmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OnZlcnRpY2FsbHlSb3VuZGVkUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aDo6cmVjdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aDo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6bGluZVBvc2l0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpNb2Rlcm5Q
YXRoOjpvblNhbWVMaW5lIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMC0xMC0wNiAgTHVtaW5nIFlp
biAgPGx1bWluZ195aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQnVtcCByZXBvcnRl
ZCBjdXJyZW50IHNoaXBwaW5nIHJlbGVhc2UgVUEgdG8gMTBfMTVfNwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggMWZiOTVjN2QwMGRjLi45MjUyNjk4MTIzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAt
NzA5LDExICs3MDksMTMgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
CiAgICAgbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5o
CiAgICAgbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZS5oCisgICAgbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgKKyAgICBsYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmgK
KyAgICBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rl
cm5QYXRoLmgKICAgICBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaAog
ICAgIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKICAg
ICBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBh
dGguaAogICAgIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
TW9kZXJuUGF0aC5oCi0KICAgICBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAogCiAgICAg
bG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDQwOGZiYTE2MTky
Yy4uMDhlMjAzMjJhYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTQ3NCw2ICsxNDc0LDcgQEAgbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5jcHAKIGxheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbklubGluZUNvbnRlbnQuY3BwCitsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lSXRlcmF0b3IuY3BwCiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5h
dGlvbi5jcHAKIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGJkYjRhOTBhNjY3Zi4uY2VhNWNhN2UyNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MDgwLDYgKzUwODAs
OSBAQAogCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzkxQTBEMTgwMjM0
MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oICovOyB9OwogCQlFNEM5MUExNjE4MDk5OUYx
MDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRl
clRleHRMaW5lQm94ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFNEQzM0YzQjI1MkFFRUNEMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0Yz
OTI1MkFFRUNDMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggKi87IH07CisJCUU0RDMz
RjQxMjUyQzRCODMwMDgzN0QwNSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREMzNGM0YyNTJD
NEI4MjAwODM3RDA1IC8qIExheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmggKi87IH07CisJ
CUU0RDMzRjQ0MjUyQzUwRTIwMDgzN0QwNSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRv
ckxlZ2FjeVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0RDMzRjQzMjUyQzUwRTIwMDgzN0QwNSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVy
YXRvckxlZ2FjeVBhdGguaCAqLzsgfTsKKwkJRTREMzNGNDYyNTJDNTBGQzAwODM3RDA1IC8qIExh
eW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREMzNGNDUyNTJDNTBGQjAwODM3RDA1IC8q
IExheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oICovOyB9OwogCQlFNEQ1
OEVCNTE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDU4RUIzMTdCNERCREMw
MENCRENBOCAvKiBTdHlsZVJlc29sdmVGb3JEb2N1bWVudC5oICovOyB9OwogCQlFNEQ1OEVCOTE3
QjRFRDg5MDBDQkRDQTggLyogU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRENThFQjcxN0I0RUQ4OTAwQ0JEQ0E4
IC8qIFN0eWxlRm9udFNpemVGdW5jdGlvbnMuaCAqLzsgfTsKIAkJRTRENThFQkIxN0I4RjEyODAw
Q0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDU4RUJBMTdCOEYxMjgwMENCRENBOCAvKiBFbGVtZW50VHJh
dmVyc2FsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE2MDcyLDYgKzE2MDc1LDEwIEBACiAJCUU0QzkxQTE1MTgwOTk5RjEwMEExN0Y2RCAvKiBS
ZW5kZXJUZXh0TGluZUJveGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlclRleHRMaW5lQm94ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFB
MTcxODA5OTlGQjAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyVGV4dExpbmVCb3hlcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RDMzRjM5MjUyQUVFQ0MwMDgzN0QwNSAvKiBJbmxp
bmVSdW5BbmRPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5l
UnVuQW5kT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0RDMzRjNGMjUy
QzRCODIwMDgzN0QwNSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEQzM0Y0MjI1MkM1MEE4MDA4MzdEMDUg
LyogTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogTGF5b3V0SW50ZWdyYXRpb25MaW5l
SXRlcmF0b3JMZWdhY3lQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExh
eW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFNEQzM0Y0NTI1MkM1MEZCMDA4MzdEMDUgLyogTGF5b3V0SW50ZWdyYXRp
b25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNEQ1OEVCMjE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNv
bHZlRm9yRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNEQ1OEVCMzE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRENThFQjYxN0I0RUQ4OTAwQ0JEQ0E4
IC8qIFN0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yODU1NCw2ICsyODU2MSw4IEBACiAJCQkJRTRGQjRCMzUyMzlCRUIxMDAw
M0MzMzZBIC8qIExheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5jcHAgKi8sCiAJCQkJRTQ1
MUM2MzMyMzk0MDU4RTAwOTkzMTkwIC8qIExheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5o
ICovLAogCQkJCTZGQjQ3RTYxMjI3NzQyNUEwMEM3QkNCMCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxp
bmUuaCAqLywKKwkJCQlFNEQzM0Y0MjI1MkM1MEE4MDA4MzdEMDUgLyogTGF5b3V0SW50ZWdyYXRp
b25MaW5lSXRlcmF0b3IuY3BwICovLAorCQkJCUU0RDMzRjNGMjUyQzRCODIwMDgzN0QwNSAvKiBM
YXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oICovLAogCQkJCUU0QUJBQkRFMjM2MDg5M0Qw
MEZBNDM0NSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwICovLAogCQkJCUU0QUJB
QkRCMjM2MDg4RkQwMEZBNDM0NSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCAqLywK
IAkJCQlFNDMxMkFCNTI0QjMyNjU2MDA2NzgzNDkgLyogTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0
aW9uLmNwcCAqLywKQEAgLTI4NTYxLDYgKzI4NTcwLDggQEAKIAkJCQk2RkNFMUExODIyNjE4QUIz
MDA0RjAzNDMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW4uaCAqLywKIAkJCQlFNEE2NjRDNzI1MjFC
Nzc5MDA3MDgxREMgLyogTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAgKi8sCiAJCQkJ
RTRBNjY0QzYyNTIxQjc3ODAwNzA4MURDIC8qIExheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3Iu
aCAqLywKKwkJCQlFNEQzM0Y0MzI1MkM1MEUyMDA4MzdEMDUgLyogTGF5b3V0SW50ZWdyYXRpb25M
aW5lSXRlcmF0b3JMZWdhY3lQYXRoLmggKi8sCisJCQkJRTREMzNGNDUyNTJDNTBGQjAwODM3RDA1
IC8qIExheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oICovLAogCQkJCUU0
QTY2NEM1MjUyMUI3NzgwMDcwODFEQyAvKiBMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVn
YWN5UGF0aC5oICovLAogCQkJCUU0QTY2NEM0MjUyMUI3NzcwMDcwODFEQyAvKiBMYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oICovLAogCQkJKTsKQEAgLTMxNTE4LDYgKzMx
NTI5LDcgQEAKIAkJCQkzNzFGNEZGQzBEMjVFN0YzMDBFQ0UwRDUgLyogRm9udFJhbmdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzJBQjBBRjcxRTZCM0M2QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rp
b25BbGdvcml0aG0uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTZCMEQwMDZDRDYwMEVGNkYy
NiAvKiBGb250U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RDMzRjQ2MjUyQzUwRkMw
MDgzN0QwNSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0MTkwNDFGMUNDNjQ4NkIwMEMzNUY1RCAvKiBGb250U2VsZWN0b3JD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0OEQyQTZDMjE1NjIzQjQwMEM2NzUyQiAvKiBG
b250U2hhZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTZFOUZDODEzQzE3RDU3MDA0NkE3Rjgg
LyogRm9udFRhZ2dlZFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKQEAgLTMzMDA5LDYgKzMzMDIx
LDcgQEAKIAkJCQk0OUQ1REMyQzBGNDIzQTczMDA4RjIwRkQgLyogTWF0cml4M0RUcmFuc2Zvcm1P
cGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUM3MEVGODZENDcwMDlEMENBRiAv
KiBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQkM4REFE
MUFBQTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTREMzNGNDEyNTJDNEI4MzAwODM3RDA1IC8qIExheW91dEludGVncmF0aW9u
TGluZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFCQ0M2MTExMjRERkNCMDBCRTcw
REQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRENDOUJD
RjIyMzg3RTlBMDBGRkI1MUMgLyogTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQ0M5QkQxMjIzODdFQUEwMEZGQjUxQyAvKiBNZWRpYUNhcGFiaWxp
dGllc0VuY29kaW5nSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ4OSw2ICszNDUwMiw3IEBA
CiAJCQkJMEYxQTBDMzgyMjlBNDgxODAwRDM3QURCIC8qIFZlbG9jaXR5RGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJREY0RTM4RTAyNTI3OTU5NTAwMkE3NDgxIC8qIFZlcnNpb25DaGVja3MuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQTI1NzE1MTI5M0MwMTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBv
c2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RDMzRjQ0MjUyQzUwRTIwMDgzN0Qw
NSAvKiBMYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxlZ2FjeVBhdGguaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyQjBENEMwMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZCQzRBRjQxODk4ODE1NjAwNDZFRTM4
IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkIwRDRDMjFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IDBlMDVhYTkwYTg2Ni4u
ZTg0MzhhZDlhOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNl
dC5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgpA
QCAtMTA4Niw3ICsxMDg3LDcgQEAgYm9vbCBQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9z
aXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAogICAgIGlmICghcnVuMSB8fCAh
cnVuMikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFydW4xLT5vblNhbWVMaW5l
KCpydW4yKSkKKyAgICBpZiAocnVuMS5saW5lKCkgIT0gcnVuMi5saW5lKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgaWYgKG5leHRSZW5kZXJlZEVkaXRhYmxlKGRlcHJlY2F0ZWROb2Rl
KCkpID09IHBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
SXRlcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmYx
NDc2YTRmYjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcApAQCAtMCwwICsxLDc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uTGluZUl0ZXJhdG9yLmgiCisKKyNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dEludGVncmF0
aW9uIHsKKworTGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3IoUGF0aExpbmU6OlBhdGhWYXJpYW50
JiYgcGF0aFZhcmlhbnQpCisgICAgOiBtX2xpbmUoV1RGTW92ZShwYXRoVmFyaWFudCkpCit7Cit9
CisKK2Jvb2wgTGluZUl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9saW5lLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICAgICAg
cmV0dXJuIHBhdGguYXRFbmQoKTsKKyAgICB9KTsKK30KKworTGluZUl0ZXJhdG9yIExpbmVJdGVy
YXRvcjo6bmV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExpbmVJdGVyYXRvcigqdGhpcykudHJh
dmVyc2VOZXh0KCk7Cit9CisKK0xpbmVJdGVyYXRvciBMaW5lSXRlcmF0b3I6OnByZXZpb3VzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gTGluZUl0ZXJhdG9yKCp0aGlzKS50cmF2ZXJzZVByZXZpb3Vz
KCk7Cit9CisKK0xpbmVJdGVyYXRvciYgTGluZUl0ZXJhdG9yOjp0cmF2ZXJzZU5leHQoKQorewor
ICAgIFdURjo6c3dpdGNoT24obV9saW5lLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsK
KyAgICAgICAgcmV0dXJuIHBhdGgudHJhdmVyc2VOZXh0KCk7CisgICAgfSk7CisgICAgcmV0dXJu
ICp0aGlzOworfQorCitMaW5lSXRlcmF0b3ImIExpbmVJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91
cygpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX2xpbmUubV9wYXRoVmFyaWFudCwgW10oYXV0byYg
cGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC50cmF2ZXJzZVByZXZpb3VzKCk7CisgICAgfSk7
CisgICAgcmV0dXJuICp0aGlzOworfQorCit9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0
ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wOTcwOWI4
ZDAwZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuaApAQCAtMCwwICsxLDEyMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5l
SXRlcmF0b3JMZWdhY3lQYXRoLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRl
cmF0b3JNb2Rlcm5QYXRoLmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24geworCitjbGFzcyBMaW5l
SXRlcmF0b3I7CitjbGFzcyBQYXRoSXRlcmF0b3I7CisKK3N0cnVjdCBFbmRMaW5lSXRlcmF0b3Ig
eyB9OworCitjbGFzcyBQYXRoTGluZSB7CitwdWJsaWM6CisgICAgdXNpbmcgUGF0aFZhcmlhbnQg
PSBWYXJpYW50PAorI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorICAgICAg
ICBNb2Rlcm5MaW5lUGF0aCwKKyNlbmRpZgorICAgICAgICBMZWdhY3lMaW5lUGF0aAorICAgID47
CisKKyAgICBQYXRoTGluZShQYXRoVmFyaWFudCYmKTsKKworICAgIEZsb2F0UmVjdCByZWN0KCkg
Y29uc3Q7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGF0aExpbmUmKSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgUGF0aExpbmUmIG90aGVyKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIExpbmVJ
dGVyYXRvcjsKKworICAgIFBhdGhWYXJpYW50IG1fcGF0aFZhcmlhbnQ7Cit9OworCitjbGFzcyBM
aW5lSXRlcmF0b3IgeworcHVibGljOgorICAgIExpbmVJdGVyYXRvcigpIDogbV9saW5lKExlZ2Fj
eUxpbmVQYXRoIHsgbnVsbHB0ciB9KSB7IH07CisgICAgTGluZUl0ZXJhdG9yKFBhdGhMaW5lOjpQ
YXRoVmFyaWFudCYmKTsKKworICAgIExpbmVJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJu
IHRyYXZlcnNlTmV4dCgpOyB9CisgICAgTGluZUl0ZXJhdG9yJiB0cmF2ZXJzZU5leHQoKTsKKyAg
ICBMaW5lSXRlcmF0b3ImIHRyYXZlcnNlUHJldmlvdXMoKTsKKworICAgIExpbmVJdGVyYXRvciBu
ZXh0KCkgY29uc3Q7CisgICAgTGluZUl0ZXJhdG9yIHByZXZpb3VzKCkgY29uc3Q7CisKKyAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KKworICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2xpbmUgPT0gb3RoZXIubV9saW5lOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExp
bmVJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbGluZSAhPSBvdGhlci5tX2xpbmU7
IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShFbmRMaW5lSXRlcmF0b3IpIGNvbnN0IHsgcmV0dXJu
IGF0RW5kKCk7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oRW5kTGluZUl0ZXJhdG9yKSBjb25zdCB7
IHJldHVybiAhYXRFbmQoKTsgfQorCisgICAgY29uc3QgUGF0aExpbmUmIG9wZXJhdG9yKigpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZTsgfQorICAgIGNvbnN0IFBhdGhMaW5lKiBvcGVyYXRvci0+KCkg
Y29uc3QgeyByZXR1cm4gJm1fbGluZTsgfQorCisgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworCitw
cml2YXRlOgorICAgIFBhdGhMaW5lIG1fbGluZTsKK307CisKK0xpbmVJdGVyYXRvciBsaW5lRm9y
KGNvbnN0IFBhdGhJdGVyYXRvciYpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbmxpbmUgUGF0aExpbmU6OlBhdGhMaW5lKFBhdGhWYXJp
YW50JiYgcGF0aCkKKyAgICA6IG1fcGF0aFZhcmlhbnQoV1RGTW92ZShwYXRoKSkKK3sKK30KKwor
aW5saW5lIEZsb2F0UmVjdCBQYXRoTGluZTo6cmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgICAgICByZXR1
cm4gcGF0aC5yZWN0KCk7CisgICAgfSk7Cit9CisKK2lubGluZSBib29sIFBhdGhMaW5lOjpvcGVy
YXRvcj09KGNvbnN0IFBhdGhMaW5lJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9wYXRoVmFy
aWFudC5pbmRleCgpICE9IG90aGVyLm1fcGF0aFZhcmlhbnQuaW5kZXgoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgWyZd
KGNvbnN0IGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGggPT0gV1RGOjpnZXQ8c3Rk
OjpkZWNheV90PGRlY2x0eXBlKHBhdGgpPj4ob3RoZXIubV9wYXRoVmFyaWFudCk7CisgICAgfSk7
Cit9CisKK30KK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVn
YWN5UGF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmE3Yzgx
YWI4ZmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTGVnYWN5UGF0aC5oCkBAIC0wLDAgKzEs
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxheW91dEludGVn
cmF0aW9uSW5saW5lQ29udGVudC5oIgorI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24geworCitjbGFz
cyBMZWdhY3lMaW5lUGF0aCB7CitwdWJsaWM6CisgICAgTGVnYWN5TGluZVBhdGgoY29uc3QgUm9v
dElubGluZUJveCogcm9vdElubGluZUJveCkKKyAgICAgICAgOiBtX3Jvb3RJbmxpbmVCb3gocm9v
dElubGluZUJveCkKKyAgICB7CisgICAgfQorICAgIExlZ2FjeUxpbmVQYXRoKExlZ2FjeUxpbmVQ
YXRoJiYpID0gZGVmYXVsdDsKKyAgICBMZWdhY3lMaW5lUGF0aChjb25zdCBMZWdhY3lMaW5lUGF0
aCYpID0gZGVmYXVsdDsKKyAgICBMZWdhY3lMaW5lUGF0aCYgb3BlcmF0b3I9KGNvbnN0IExlZ2Fj
eUxpbmVQYXRoJikgPSBkZWZhdWx0OworICAgIExlZ2FjeUxpbmVQYXRoJiBvcGVyYXRvcj0oTGVn
YWN5TGluZVBhdGgmJikgPSBkZWZhdWx0OworCisgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPmZyYW1lUmVjdCgpOyB9CisKKyAgICB2b2lkIHRyYXZl
cnNlTmV4dCgpCisgICAgeworICAgICAgICBtX3Jvb3RJbmxpbmVCb3ggPSBtX3Jvb3RJbmxpbmVC
b3gtPm5leHRSb290Qm94KCk7CisgICAgfQorCisgICAgdm9pZCB0cmF2ZXJzZVByZXZpb3VzKCkK
KyAgICB7CisgICAgICAgIG1fcm9vdElubGluZUJveCA9IG1fcm9vdElubGluZUJveC0+cHJldlJv
b3RCb3goKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVnYWN5TGluZVBh
dGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3ggPT0gb3RoZXIubV9yb290
SW5saW5lQm94OyB9CisKKyAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fcm9vdElu
bGluZUJveDsgfQorICAgIHZvaWQgc2V0QXRFbmQoKSB7IG1fcm9vdElubGluZUJveCA9IG51bGxw
dHI7IH0KKworcHJpdmF0ZToKKworICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG1fcm9vdElubGlu
ZUJveDsKK307CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRv
ck1vZGVyblBhdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBi
YWU3OTRkOGY0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaApAQCAtMCww
ICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uSW5saW5l
Q29udGVudC5oIgorI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5Q
YXRoLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIExheW91dEludGVncmF0
aW9uIHsKKworY2xhc3MgTW9kZXJuTGluZVBhdGggeworcHVibGljOgorICAgIE1vZGVybkxpbmVQ
YXRoKGNvbnN0IElubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIHNpemVfdCBsaW5lSW5kZXgp
CisgICAgICAgIDogbV9pbmxpbmVDb250ZW50KCZpbmxpbmVDb250ZW50KQorICAgICAgICAsIG1f
bGluZUluZGV4KGxpbmVJbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChsaW5lSW5kZXggPD0g
bGluZXMoKS5zaXplKCkpOworICAgIH0KKyAgICBNb2Rlcm5MaW5lUGF0aChNb2Rlcm5MaW5lUGF0
aCYmKSA9IGRlZmF1bHQ7CisgICAgTW9kZXJuTGluZVBhdGgoY29uc3QgTW9kZXJuTGluZVBhdGgm
KSA9IGRlZmF1bHQ7CisgICAgTW9kZXJuTGluZVBhdGgmIG9wZXJhdG9yPShjb25zdCBNb2Rlcm5M
aW5lUGF0aCYpID0gZGVmYXVsdDsKKyAgICBNb2Rlcm5MaW5lUGF0aCYgb3BlcmF0b3I9KE1vZGVy
bkxpbmVQYXRoJiYpID0gZGVmYXVsdDsKKworICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyBy
ZXR1cm4gdmVydGljYWxseVJvdW5kZWRSZWN0KGxpbmUoKS5yZWN0KCkpOyB9CisKKyAgICB2b2lk
IHRyYXZlcnNlTmV4dCgpCisgICAgeworICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOworCisgICAg
ICAgICsrbV9saW5lSW5kZXg7CisgICAgfQorCisgICAgdm9pZCB0cmF2ZXJzZVByZXZpb3VzKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgICAgIEFTU0VSVChtX2xpbmVJ
bmRleCk7CisKKyAgICAgICAgLS1tX2xpbmVJbmRleDsKKyAgICB9CisKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTW9kZXJuTGluZVBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGlu
ZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50ICYmIG1fbGluZUluZGV4ID09IG90aGVy
Lm1fbGluZUluZGV4OyB9CisKKyAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9saW5l
SW5kZXggPT0gbGluZXMoKS5zaXplKCk7IH0KKyAgICB2b2lkIHNldEF0RW5kKCkgeyBtX2xpbmVJ
bmRleCA9IGxpbmVzKCkuc2l6ZSgpOyB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgSW5saW5lQ29u
dGVudDo6TGluZXMmIGxpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5saW5l
czsgfQorICAgIGNvbnN0IExpbmUmIGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lcygpW21fbGlu
ZUluZGV4XTsgfQorCisgICAgUmVmUHRyPGNvbnN0IElubGluZUNvbnRlbnQ+IG1faW5saW5lQ29u
dGVudDsKKyAgICBzaXplX3QgbV9saW5lSW5kZXggeyAwIH07Cit9OworCit9Cit9CisKKyNlbmRp
ZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKaW5kZXggYWJhNGU1MWU4ZmUw
Li5lZGRkMDQ5NjY4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKQEAg
LTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yLmgiCiAKKworI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uTGlu
ZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgi
CkBAIC04Miw2ICs4NCwxOSBAQCBMaW5lUnVuSXRlcmF0b3IgUnVuSXRlcmF0b3I6OnByZXZpb3Vz
T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSBjb25zdAogICAgIHJldHVybiBMaW5lUnVuSXRlcmF0
b3IoKnRoaXMpLnRyYXZlcnNlUHJldmlvdXNPbkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpOwogfQog
CitMaW5lSXRlcmF0b3IgUnVuSXRlcmF0b3I6OmxpbmUoKSBjb25zdAoreworICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IExlZ2FjeVBhdGgmIHBh
dGgpIHsKKyAgICAgICAgcmV0dXJuIExpbmVJdGVyYXRvcihMZWdhY3lMaW5lUGF0aCgmcGF0aC5y
b290SW5saW5lQm94KCkpKTsKKyAgICB9CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NP
TlRFWFQpCisgICAgLCBbXShjb25zdCBNb2Rlcm5QYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVy
biBMaW5lSXRlcmF0b3IoTW9kZXJuTGluZVBhdGgoKnBhdGgubV9pbmxpbmVDb250ZW50LCBwYXRo
LnJ1bigpLmxpbmVJbmRleCgpKSk7CisgICAgfQorI2VuZGlmCisgICAgKTsKK30KKwogVGV4dFJ1
bkl0ZXJhdG9yOjpUZXh0UnVuSXRlcmF0b3IoUGF0aFJ1bjo6UGF0aFZhcmlhbnQmJiBwYXRoVmFy
aWFudCkKICAgICA6IFJ1bkl0ZXJhdG9yKFdURk1vdmUocGF0aFZhcmlhbnQpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKaW5kZXggZDBmMTIwZmZhYTk4Li5iMDdkZTA0ZjA4OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFz
cyBSZW5kZXJUZXh0OwogCiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCitjbGFzcyBM
aW5lSXRlcmF0b3I7CiBjbGFzcyBMaW5lUnVuSXRlcmF0b3I7CiBjbGFzcyBUZXh0UnVuSXRlcmF0
b3I7CiAKQEAgLTU4LDYgKzU5LDExIEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UmVjdCByZWN0KCkg
Y29uc3Q7CiAKKyAgICBmbG9hdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpv
bnRhbCgpID8gcmVjdCgpLngoKSA6IHJlY3QoKS55KCk7IH0KKyAgICBmbG9hdCBsb2dpY2FsUmln
aHQoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWwoKSA/IHJlY3QoKS5tYXhYKCkgOiByZWN0
KCkubWF4WSgpOyB9CisgICAgZmxvYXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gaXNI
b3Jpem9udGFsKCkgPyByZWN0KCkud2lkdGgoKSA6IHJlY3QoKS5oZWlnaHQoKTsgfQorICAgIGZs
b2F0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWwoKSA/IHJlY3Qo
KS5oZWlnaHQoKSA6IHJlY3QoKS53aWR0aCgpOyB9CisKICAgICBmbG9hdCBiYXNlbGluZSgpIGNv
bnN0OwogCiAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdDsKQEAgLTc0LDggKzgwLDYgQEAg
cHVibGljOgogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gYmlk
aUxldmVsKCkgJSAyID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlvbjo6TFRSOyB9
CiAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0
aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSOyB9CiAKLSAgICBib29sIG9uU2FtZUxpbmUoY29u
c3QgUGF0aFJ1biYpIGNvbnN0OwotCiAgICAgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcigp
IGNvbnN0OwogCiAgICAgLy8gRm9yIGludGVybWVkaWF0ZSBwb3J0aW5nIHN0ZXBzIG9ubHkuCkBA
IC0xMzYsNiArMTQwLDggQEAgcHVibGljOgogICAgIExpbmVSdW5JdGVyYXRvciBuZXh0T25MaW5l
SWdub3JpbmdMaW5lQnJlYWsoKSBjb25zdDsKICAgICBMaW5lUnVuSXRlcmF0b3IgcHJldmlvdXNP
bkxpbmVJZ25vcmluZ0xpbmVCcmVhaygpIGNvbnN0OwogCisgICAgTGluZUl0ZXJhdG9yIGxpbmUo
KSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0QXRFbmQoKTsKIApAQCAtMjc0LDE2
ICsyODAsNiBAQCBpbmxpbmUgdW5zaWduZWQgY2hhciBQYXRoUnVuOjpiaWRpTGV2ZWwoKSBjb25z
dAogICAgIH0pOwogfQogCi1pbmxpbmUgYm9vbCBQYXRoUnVuOjpvblNhbWVMaW5lKGNvbnN0IFBh
dGhSdW4mIG90aGVyKSBjb25zdAotewotICAgIGlmIChtX3BhdGhWYXJpYW50LmluZGV4KCkgIT0g
b3RoZXIubV9wYXRoVmFyaWFudC5pbmRleCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbJl0oY29uc3QgYXV0byYgcGF0
aCkgewotICAgICAgICByZXR1cm4gcGF0aC5vblNhbWVMaW5lKFdURjo6Z2V0PHN0ZDo6ZGVjYXlf
dDxkZWNsdHlwZShwYXRoKT4+KG90aGVyLm1fcGF0aFZhcmlhbnQpKTsKLSAgICB9KTsKLX0KLQog
aW5saW5lIGNvbnN0IFJlbmRlck9iamVjdCYgUGF0aFJ1bjo6cmVuZGVyZXIoKSBjb25zdAogewog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+
IGNvbnN0IFJlbmRlck9iamVjdCYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvckxlZ2FjeVBhdGguaAppbmRleCA1Mzk4MDc1YWJhZjMuLmMzOWY2ZDAzMTBlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKQEAgLTk2LDEy
ICs5NiwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExl
Z2FjeVBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveCA9PSBvdGhlci5tX2lu
bGluZUJveDsgfQotICAgIGJvb2wgb25TYW1lTGluZShjb25zdCBMZWdhY3lQYXRoJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gJm1faW5saW5lQm94LT5yb290KCkgPT0gJm90aGVyLm1faW5saW5lQm94
LT5yb290KCk7IH0KIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9pbmxpbmVC
b3g7IH0KICAgICB2b2lkIHNldEF0RW5kKCkgeyBtX2lubGluZUJveCA9IG51bGxwdHI7IH0KIAog
ICAgIElubGluZUJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxJbmxpbmVCb3gqPihtX2lubGluZUJveCk7IH0KKyAgICBjb25zdCBSb290SW5saW5lQm94JiBy
b290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPnJvb3QoKTsgfQogCiBw
cml2YXRlOgogICAgIGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3goKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihtX2lubGluZUJveCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggOTAxNDI5Nzhj
OTlkLi4yYjc2Y2UxZDg1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yTW9kZXJuUGF0aC5oCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIAotc3RhdGljIEZsb2F0UG9pbnQgbGluZVBv
c2l0aW9uKGZsb2F0IGxlZnQsIGZsb2F0IHRvcCkKK2lubGluZSBGbG9hdFJlY3QgdmVydGljYWxs
eVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4gRmxvYXRQ
b2ludChsZWZ0LCByb3VuZGYodG9wKSk7CisgICAgcmV0dXJuIHsgRmxvYXRQb2ludChyZWN0Lngo
KSwgcm91bmRmKHJlY3QueSgpKSksIHJlY3Quc2l6ZSgpIH07CiB9CiAKIGNsYXNzIE1vZGVyblBh
dGggewpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVGV4dCgpIGNvbnN0
IHsgcmV0dXJuICEhcnVuKCkudGV4dENvbnRlbnQoKTsgfQogCi0gICAgRmxvYXRSZWN0IHJlY3Qo
KSBjb25zdDsKKyAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIHZlcnRpY2FsbHlS
b3VuZGVkUmVjdChydW4oKS5yZWN0KCkpOyB9CiAKICAgICBmbG9hdCBiYXNlbGluZSgpIGNvbnN0
IHsgcmV0dXJuIGxpbmUoKS5iYXNlbGluZSgpOyB9CiAKQEAgLTE0OSw3ICsxNDksNiBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1vZGVyblBhdGgmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50
ICYmIG1fcnVuSW5kZXggPT0gb3RoZXIubV9ydW5JbmRleDsgfQotICAgIGJvb2wgb25TYW1lTGlu
ZShjb25zdCBNb2Rlcm5QYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gcnVuKCkubGluZUluZGV4
KCkgPT0gb3RoZXIucnVuKCkubGluZUluZGV4KCk7IH0KIAogICAgIGJvb2wgYXRFbmQoKSBjb25z
dCB7IHJldHVybiBtX3J1bkluZGV4ID09IHJ1bnMoKS5zaXplKCkgfHwgIXJ1bigpLmhhc1VuZGVy
bHlpbmdMYXlvdXQoKTsgfQogICAgIHZvaWQgc2V0QXRFbmQoKSB7IG1fcnVuSW5kZXggPSBydW5z
KCkuc2l6ZSgpOyB9CkBAIC0xNjEsNiArMTYwLDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgUnVuSXRlcmF0b3I7CisKICAgICBjb25zdCBJbmxpbmVDb250
ZW50OjpSdW5zJiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5ydW5zOyB9
CiAgICAgY29uc3QgUnVuJiBydW4oKSBjb25zdCB7IHJldHVybiBydW5zKClbbV9ydW5JbmRleF07
IH0KICAgICBjb25zdCBMaW5lJiBsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50
LT5saW5lRm9yUnVuKHJ1bigpKTsgfQpAQCAtMTY5LDEzICsxNzAsNiBAQCBwcml2YXRlOgogICAg
IHNpemVfdCBtX3J1bkluZGV4IHsgMCB9OwogfTsKIAotaW5saW5lIEZsb2F0UmVjdCBNb2Rlcm5Q
YXRoOjpyZWN0KCkgY29uc3QKLXsKLSAgICBhdXRvIHJlY3QgPSBydW4oKS5yZWN0KCk7Ci0gICAg
YXV0byBwb3NpdGlvbiA9IGxpbmVQb3NpdGlvbihyZWN0LngoKSwgcmVjdC55KCkpOwotICAgIHJl
dHVybiB7IHBvc2l0aW9uLCByZWN0LnNpemUoKSB9OwotfQotCiB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>