<?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>133690</bug_id>
          
          <creation_ts>2014-06-10 12:44:10 -0700</creation_ts>
          <short_desc>Factor repeated CFRunLoopObserver code out</short_desc>
          <delta_ts>2014-06-10 15:31:08 -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>Platform</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>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1014473</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-10 12:44:10 -0700</bug_when>
    <thetext>I keep copying around CFRunLoopObserver code, including fun constants like the CA commit run loop order.

Let&apos;s put this code in one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014477</commentid>
    <comment_count>1</comment_count>
      <attachid>232805</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-10 12:48:51 -0700</bug_when>
    <thetext>Created attachment 232805
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014478</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-10 12:49:05 -0700</bug_when>
    <thetext>I&apos;m going to add another use of this soon, that&apos;s why I wanted to do this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014481</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-10 12:50:45 -0700</bug_when>
    <thetext>Attachment 232805 did not pass style-queue:


ERROR: Source/WebCore/platform/cf/RunLoopObserver.h:41:  The parameter name &quot;callback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014549</commentid>
    <comment_count>4</comment_count>
      <attachid>232805</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-06-10 14:51:10 -0700</bug_when>
    <thetext>Comment on attachment 232805
patch

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

&gt; Source/WebCore/platform/cf/RunLoopObserver.h:39
&gt; +    typedef std::function&lt;void ()&gt; RunLoopObserverCallback;

Maybe the callback should take a RunLoopObserver&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014554</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-06-10 15:16:50 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Maybe the callback should take a RunLoopObserver&amp;?

No need - you can just capture RunLoopObserver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014555</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-10 15:31:08 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/169775</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232805</attachid>
            <date>2014-06-10 12:48:51 -0700</date>
            <delta_ts>2014-06-10 14:51:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>rlo.diff</filename>
            <type>text/plain</type>
            <size>25151</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNjBjNGEyLi5mYjI3YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTQtMDYtMTAgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgorCisgICAgICAgIEZhY3RvciByZXBlYXRlZCBDRlJ1bkxvb3BPYnNlcnZlciBjb2RlIG91dAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNjkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
dW5Mb29wT2JzZXJ2ZXI6On5SdW5Mb29wT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
TG9vcE9ic2VydmVyOjpydW5Mb29wT2JzZXJ2ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW5Mb29wT2JzZXJ2ZXI6OnNjaGVkdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3BPYnNl
cnZlcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVy
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjppc1NjaGVkdWxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OlJ1bkxvb3BPYnNlcnZlcik6
CisgICAgICAgIEZhY3RvciBDRlJ1bkxvb3BPYnNlcnZlciBtYW5hZ2VtZW50IGNvZGUgb3V0IG9m
IExheWVyRmx1c2hTY2hlZHVsZXIgYW5kIFdlYktpdDIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9MYXllckZsdXNoU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL0xheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJGbHVzaFNjaGVkdWxlcjo6TGF5ZXJGbHVzaFNjaGVkdWxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllckZsdXNoU2NoZWR1bGVyOjp+TGF5ZXJGbHVzaFNjaGVkdWxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllckZsdXNoU2NoZWR1bGVyOjpsYXllckZsdXNoQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJGbHVzaFNjaGVkdWxlcjo6c2NoZWR1bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJGbHVzaFNjaGVkdWxlcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllckZsdXNoU2NoZWR1bGVyOjpydW5Mb29wT2JzZXJ2ZXJDYWxsYmFjayk6IERl
bGV0ZWQuCisgICAgICAgIE1ha2UgdXNlIG9mIFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlci4KKwog
MjAxNC0wNi0wOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIEdhcHMgYmVsb3cgYW5kIHRvIHRoZSByaWdodCBvZiB0aGUgdmlkZW8gY29udHJvbHMgb24g
ZGV2b3VyLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBhZjczMTVlLi4yNDVlYjE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtNjA2LDYgKzYwNiwxMCBAQCBfX1pON1dlYkNvcmUxNVByb3Rl
Y3Rpb25TcGFjZUMxRVJLTjNXVEY2U3RyaW5nRWlOU18yNVByb3RlY3Rpb25TcGFjZVNlcnZlclR5
cGVFUwogX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2VDMUV2CiBfX1pON1dlYkNvcmUxNVJl
c291cmNlUmVxdWVzdDIxaHR0cFBpcGVsaW5pbmdFbmFibGVkRXYKIF9fWk43V2ViQ29yZTE1UmVz
b3VyY2VSZXF1ZXN0MjRzZXRIVFRQUGlwZWxpbmluZ0VuYWJsZWRFYgorX19aTjdXZWJDb3JlMTVS
dW5Mb29wT2JzZXJ2ZXIxMGludmFsaWRhdGVFdgorX19aTjdXZWJDb3JlMTVSdW5Mb29wT2JzZXJ2
ZXI2Y3JlYXRlRWxOU3QzX18xOGZ1bmN0aW9uSUZ2dkVFRQorX19aTjdXZWJDb3JlMTVSdW5Mb29w
T2JzZXJ2ZXI4c2NoZWR1bGVFUDExX19DRlJ1bkxvb3AKK19fWk43V2ViQ29yZTE1UnVuTG9vcE9i
c2VydmVyRDFFdgogX19aTjdXZWJDb3JlMTVTUUxpdGVTdGF0ZW1lbnQxMmdldENvbHVtbkludEVp
CiBfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVudDEyaXNDb2x1bW5OdWxsRWkKIF9fWk43V2Vi
Q29yZTE1U1FMaXRlU3RhdGVtZW50MTNnZXRDb2x1bW5UZXh0RWkKQEAgLTc5NCw3ICs3OTgsNyBA
QCBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMXBhdXNlVHJhbnNpdGlvbkF0VGlt
ZUVQTlNfMTNSZW5kZXJFbGVtZW50RVJLTgogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9s
bGVyMzZzZXRBbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWRFYgogX19aTjdXZWJDb3Jl
MTlIVE1MVGV4dEFyZWFFbGVtZW50OHNldFZhbHVlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMTlMYXllckZsdXNoU2NoZWR1bGVyMTBpbnZhbGlkYXRlRXYKLV9fWk43V2ViQ29yZTE5TGF5
ZXJGbHVzaFNjaGVkdWxlcjIzcnVuTG9vcE9ic2VydmVyQ2FsbGJhY2tFdgorX19aTjdXZWJDb3Jl
MTlMYXllckZsdXNoU2NoZWR1bGVyMThsYXllckZsdXNoQ2FsbGJhY2tFdgogX19aTjdXZWJDb3Jl
MTlMYXllckZsdXNoU2NoZWR1bGVyNnJlc3VtZUV2CiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hT
Y2hlZHVsZXI3c3VzcGVuZEV2CiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXI4c2No
ZWR1bGVFdgpAQCAtMjE4Niw2ICsyMTkwLDcgQEAgX19aTjdXZWJDb3JlMzZpbml0aWFsaXplTG9n
Z2luZ0NoYW5uZWxzSWZOZWNlc3NhcnlFdgogLm9iamNfY2xhc3NfbmFtZV9XZWJGb250Q2FjaGUK
IC5vYmpjX2NsYXNzX25hbWVfV2ViV2luZG93RmFkZUFuaW1hdGlvbgogLm9iamNfY2xhc3NfbmFt
ZV9XZWJXaW5kb3dTY2FsZUFuaW1hdGlvbgorX19aTjdXZWJDb3JlMTBDcmVkZW50aWFsQzFFUDIw
T3BhcXVlU2VjSWRlbnRpdHlSZWZQSzlfX0NGQXJyYXlOU18yMUNyZWRlbnRpYWxQZXJzaXN0ZW5j
ZUUKIF9fWk43V2ViQ29yZTEwRmxvYXRQb2ludEMxRVJLOF9OU1BvaW50CiBfX1pON1dlYkNvcmUx
MGhhbmRDdXJzb3JFdgogX19aTjdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CkBAIC0yNDg3
LDYgKzI0OTIsNyBAQCBfV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsCiBfV2ViVUlBcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbgogX1dlYlVJQXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uCiBfV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3Rp
dmVOb3RpZmljYXRpb24KK19fWk43V2ViQ29yZTEwQ3JlZGVudGlhbEMxRVAxM19fU2VjSWRlbnRp
dHlQSzlfX0NGQXJyYXlOU18yMUNyZWRlbnRpYWxQZXJzaXN0ZW5jZUUKIF9fWk43V2ViQ29yZTEw
UmVuZGVyVmlldzM1cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWRFdgogX19aTjdX
ZWJDb3JlMTBTY3JvbGxWaWV3MTVzZXRTY3JvbGxPZmZzZXRFUktOU184SW50UG9pbnRFCiBfX1pO
N1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNldEV4cG9zZWRDb250ZW50UmVjdEVSS05TXzdJbnRSZWN0
RQpAQCAtMzQxOCw5ICszNDI0LDMgQEAgX19aTjdXZWJDb3JlNFBhZ2UxMXNldFZpZXdNb2RlRU5T
MF84Vmlld01vZGVFCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiBfX1pOSzdXZWJDb3JlMjBSZXNv
dXJjZVJlc3BvbnNlQmFzZTE4cmVzb3VyY2VMb2FkVGltaW5nRXYKICNlbmRpZgotCi0jaWYgUExB
VEZPUk0oSU9TKQotX19aTjdXZWJDb3JlMTBDcmVkZW50aWFsQzFFUDEzX19TZWNJZGVudGl0eVBL
OV9fQ0ZBcnJheU5TXzIxQ3JlZGVudGlhbFBlcnNpc3RlbmNlRQotI2Vsc2UKLV9fWk43V2ViQ29y
ZTEwQ3JlZGVudGlhbEMxRVAyME9wYXF1ZVNlY0lkZW50aXR5UmVmUEs5X19DRkFycmF5TlNfMjFD
cmVkZW50aWFsUGVyc2lzdGVuY2VFCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwYjk1YTZmLi4zZTU0MDAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMDkyLDYgKzEwOTIsOCBAQAogCQkyRDZFNDY4NDE3RDY2MEY1MDBFQ0Y4QkIgLyogUERGRG9j
dW1lbnRJbWFnZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVudEltYWdlTWFjLm1t
ICovOyB9OwogCQkyRDcwQkExMzE4MDc0RERGMDAwMTkwOEEgLyogUGxhdGZvcm1DQUxheWVyTWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDcwQkEx
MjE4MDc0RERGMDAwMTkwOEEgLyogUGxhdGZvcm1DQUxheWVyTWFjLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ3MEJBMTUxODA3NEY4NjAwMDE5
MDhBIC8qIFBsYXRmb3JtQ0FMYXllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDcwQkExNDE4MDc0Rjg1MDAwMTkwOEEgLyogUGxhdGZvcm1DQUxh
eWVyLmNwcCAqLzsgfTsKKwkJMkQ3NkJCODIxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3
NkJCODAxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJENzZCQjg0MTk0NTZGODEwMENG
RDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQ3NkJCODMxOTQ1NkY4MTAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNl
cnZlci5jcHAgKi87IH07CiAJCTJEODI4N0Y2MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9j
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ4Mjg3RjQxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5jcHAgKi87IH07CiAJ
CTJEODI4N0Y3MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODI4N0Y1MTZFNEEwMzgwMDg2
QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyRDhGRUJEQzE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3Nm
YWRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ4RkVCREExNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVlLmNwcCAqLzsg
fTsKQEAgLTgwNDksNiArODA1MSw4IEBACiAJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQ
REZEb2N1bWVudEltYWdlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUERGRG9jdW1lbnRJbWFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQ3MEJBMTIxODA3NERERjAwMDE5MDhBIC8qIFBsYXRmb3JtQ0FMYXllck1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF0Zm9ybUNBTGF5ZXJNYWMuaDsgcGF0aCA9
IGNhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQ3MEJBMTQxODA3NEY4NTAwMDE5MDhBIC8qIFBsYXRmb3JtQ0FMYXllci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQbGF0Zm9ybUNBTGF5ZXIuY3BwOyBwYXRo
ID0gY2EvUGxhdGZvcm1DQUxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkQ3NkJCODAxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5Mb29wT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkQ3NkJCODMxOTQ1NkY4MTAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSdW5Mb29wT2JzZXJ2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDgyODdGNDE2RTRBMDM4MDA4
NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhpdFRlc3RMb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEODI4N0Y1MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGl0VGVzdExvY2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEOEZFQkRBMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9zc2Zh
ZGVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NDcm9z
c2ZhZGVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDk2NSw2ICsx
NDk2OSw4IEBACiAJCQkJRTFBOEU1NjQxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNw
cCAqLywKIAkJCQlFMUE4RTU2NTE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuaCAqLywK
IAkJCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAqLywKKwkJ
CQkyRDc2QkI4MzE5NDU2RjgxMDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmNwcCAqLywKKwkJ
CQkyRDc2QkI4MDE5NDU2MzI0MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggKi8sCiAJCQkJ
NTEyREQ4RTIwRDkxRTJCNDAwMEY4OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCAqLywKIAkJCQkx
QTk4OTU2QTBBQTc4RjgwMDA1RUY1RUYgLyogVVJMQ0YuY3BwICovLAogCQkJKTsKQEAgLTI2MjQ1
LDYgKzI2MjUxLDcgQEAKIAkJCQlBNzdFMUZGMDE0QUFDQjZFMDA1QjdDQjYgLyogVHJlZVNjb3Bl
QWRvcHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxOUQyQzUwQ0VBNkY2MTAwRkY1MDdBIC8q
IFRyZWVTaGFyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NEZFNzM5MEEyMjk3QkUwMDU4RDdB
RCAvKiBUcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDc2QkI4MjE5NDU2MzI0MDBD
RkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzc1RDdGRTE2
NjM5NTE5MDA2MTg0QUIgLyogVHlwZUFoZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0MyOEE2
ODEwRjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTMzMDlFMUEwOTlFNjQ5MjAwNTZFNTgxIC8qIFR5cGluZ0NvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjgyMTEsNiArMjgyMTgsNyBAQAogCQkJCUM2RjA5MTdGMTQzQTJCQjkwMDY4
NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzZGMDhGQzkxNDMxMDAwRDAwNjg1ODQ5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNEOUMyQzAwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTJENzZCQjg0MTk0NTZGODEwMENGRDI5QSAvKiBSdW5Mb29w
T2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEOUMyNjMwQzE3QUE2NzAwNUM5MEEy
IC8qIEpTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5RDI0N0Y3
MEQ3NTdFMzQwMEZERjk1OSAvKiBKU05hdmlnYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
NzNCRTM0MDE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29w
T2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWVhNGViCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvUnVuTG9vcE9ic2VydmVyLmNw
cApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wT2Jz
ZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8UnVuTG9v
cE9ic2VydmVyPiBSdW5Mb29wT2JzZXJ2ZXI6OmNyZWF0ZShDRkluZGV4IG9yZGVyLCBSdW5Mb29w
T2JzZXJ2ZXI6OlJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcE9ic2VydmVyPihuZXcgUnVuTG9vcE9ic2VydmVyKG9y
ZGVyLCBjYWxsYmFjaykpOworfQorCitSdW5Mb29wT2JzZXJ2ZXI6On5SdW5Mb29wT2JzZXJ2ZXIo
KQoreworICAgIGludmFsaWRhdGUoKTsKK30KKwordm9pZCBSdW5Mb29wT2JzZXJ2ZXI6OnJ1bkxv
b3BPYnNlcnZlckZpcmVkKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eSwg
dm9pZCogY29udGV4dCkKK3sKKyAgICBzdGF0aWNfY2FzdDxSdW5Mb29wT2JzZXJ2ZXIqPihjb250
ZXh0KS0+cnVuTG9vcE9ic2VydmVyRmlyZWQoKTsKK30KKwordm9pZCBSdW5Mb29wT2JzZXJ2ZXI6
OnJ1bkxvb3BPYnNlcnZlckZpcmVkKCkKK3sKKyAgICBBU1NFUlQobV9ydW5Mb29wT2JzZXJ2ZXIp
OworICAgIG1fY2FsbGJhY2soKTsKK30KKwordm9pZCBSdW5Mb29wT2JzZXJ2ZXI6OnNjaGVkdWxl
KENGUnVuTG9vcFJlZiBydW5Mb29wKQoreworICAgIGlmICghcnVuTG9vcCkKKyAgICAgICAgcnVu
TG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSB3YWtl
IHVwIHRoZSBsb29wIG9yIHRoZSBvYnNlcnZlciBjb3VsZCBiZSBkZWxheWVkIHVudGlsIHNvbWUg
b3RoZXIgc291cmNlIGZpcmVzLgorICAgIENGUnVuTG9vcFdha2VVcChydW5Mb29wKTsKKworICAg
IGlmIChtX3J1bkxvb3BPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0ZSdW5Mb29w
T2JzZXJ2ZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAsIDAsIDAgfTsKKyAgICBtX3J1
bkxvb3BPYnNlcnZlciA9IGFkb3B0Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUoMCwga0NGUnVu
TG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgdHJ1ZSwgbV9vcmRlciwgcnVuTG9v
cE9ic2VydmVyRmlyZWQsICZjb250ZXh0KSk7CisKKyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihy
dW5Mb29wLCBtX3J1bkxvb3BPYnNlcnZlci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsK
K30KKwordm9pZCBSdW5Mb29wT2JzZXJ2ZXI6OmludmFsaWRhdGUoKQoreworICAgIGlmIChtX3J1
bkxvb3BPYnNlcnZlcikgeworICAgICAgICBDRlJ1bkxvb3BPYnNlcnZlckludmFsaWRhdGUobV9y
dW5Mb29wT2JzZXJ2ZXIuZ2V0KCkpOworICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG51bGxw
dHI7ICAgCisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmZjODgzZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUnVuTG9v
cE9ic2VydmVyX2gKKyNkZWZpbmUgUnVuTG9vcE9ic2VydmVyX2gKKworI2luY2x1ZGUgPENvcmVG
b3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUnVuTG9vcE9ic2VydmVyIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShSdW5Mb29wT2JzZXJ2ZXIpOworcHVibGljOgorICAgIHR5cGVkZWYgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjazsKKworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcE9ic2VydmVyPiBjcmVhdGUoQ0ZJbmRleCBvcmRlciwg
UnVuTG9vcE9ic2VydmVyQ2FsbGJhY2sgY2FsbGJhY2spOworCisgICAgflJ1bkxvb3BPYnNlcnZl
cigpOworCisgICAgdm9pZCBzY2hlZHVsZShDRlJ1bkxvb3BSZWYgPSBudWxscHRyKTsKKyAgICB2
b2lkIGludmFsaWRhdGUoKTsKKworICAgIGJvb2wgaXNTY2hlZHVsZWQoKSBjb25zdCB7IHJldHVy
biBtX3J1bkxvb3BPYnNlcnZlcjsgfQorCisgICAgZW51bSBjbGFzcyBXZWxsS25vd25SdW5Mb29w
T3JkZXJzIDogQ0ZJbmRleCB7CisgICAgICAgIENvcmVBbmltYXRpb25Db21taXQgPSAyMDAwMDAw
CisgICAgfTsKKworcHJvdGVjdGVkOgorICAgIFJ1bkxvb3BPYnNlcnZlcihDRkluZGV4IG9yZGVy
LCBSdW5Mb29wT2JzZXJ2ZXJDYWxsYmFjayBjYWxsYmFjaykKKyAgICAgICAgOiBtX29yZGVyKG9y
ZGVyKQorICAgICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgeyB9CisKKyAgICB2b2lk
IHJ1bkxvb3BPYnNlcnZlckZpcmVkKCk7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgcnVu
TG9vcE9ic2VydmVyRmlyZWQoQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5
LCB2b2lkKiBjb250ZXh0KTsKKworICAgIENGSW5kZXggbV9vcmRlcjsKKyAgICBSdW5Mb29wT2Jz
ZXJ2ZXJDYWxsYmFjayBtX2NhbGxiYWNrOworICAgIFJldGFpblB0cjxDRlJ1bkxvb3BPYnNlcnZl
clJlZj4gbV9ydW5Mb29wT2JzZXJ2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBSdW5Mb29wT2JzZXJ2ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvTGF5ZXJGbHVzaFNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvTGF5ZXJGbHVzaFNjaGVkdWxlci5oCmluZGV4IGMzYTRm
YTIuLjcyYjY3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0xheWVyRmx1c2hTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9MYXllckZsdXNoU2NoZWR1bGVyLmgKQEAgLTI3LDggKzI3LDggQEAKICNkZWZp
bmUgTGF5ZXJGbHVzaFNjaGVkdWxlcl9oCiAKICNpbmNsdWRlICJMYXllckZsdXNoU2NoZWR1bGVy
Q2xpZW50LmgiCisjaW5jbHVkZSAiUnVuTG9vcE9ic2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCkBAIC00NiwxNiArNDYsMTYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1N1
c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNwZW5kZWQ7IH0KIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIHZpcnR1YWwgdm9pZCBsYXllckZsdXNoQ2FsbGJhY2soKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N1c3BlbmRlZDsKICAgICBMYXllckZsdXNoU2NoZWR1
bGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRh
aW5QdHI8Q0ZSdW5Mb29wT2JzZXJ2ZXJSZWY+IG1fcnVuTG9vcE9ic2VydmVyOwotICAgIHN0YXRp
YyB2b2lkIHJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1
bkxvb3BBY3Rpdml0eSwgdm9pZCogY29udGV4dCk7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IHZvaWQgcnVuTG9vcE9ic2VydmVyQ2FsbGJhY2soKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVu
TG9vcE9ic2VydmVyPiBtX3J1bkxvb3BPYnNlcnZlcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xheWVyRmx1c2hTY2hl
ZHVsZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xh
eWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwCmluZGV4IGZiNWZhNmUuLjA0MTUzNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9MYXllckZsdXNoU2No
ZWR1bGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvTGF5ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAKQEAgLTM3LDggKzM3LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgQ0ZJbmRleCBDb3JlQW5pbWF0aW9uUnVuTG9v
cE9yZGVyID0gMjAwMDAwMDsKLXN0YXRpYyBjb25zdCBDRkluZGV4IExheWVyRmx1c2hSdW5Mb29w
T3JkZXIgPSBDb3JlQW5pbWF0aW9uUnVuTG9vcE9yZGVyIC0gMTsKK3N0YXRpYyBjb25zdCBDRklu
ZGV4IGxheWVyRmx1c2hSdW5Mb29wT3JkZXIgPSAoQ0ZJbmRleClSdW5Mb29wT2JzZXJ2ZXI6Oldl
bGxLbm93blJ1bkxvb3BPcmRlcnM6OkNvcmVBbmltYXRpb25Db21taXQgLSAxOwogCiBzdGF0aWMg
Q0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKIHsKQEAgLTU5LDIxICs1OCwyMCBAQCBMYXll
ckZsdXNoU2NoZWR1bGVyOjpMYXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1c2hTY2hlZHVsZXJD
bGllbnQqIGNsaWVudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKICAgICBBU1NFUlRfQVJH
KGNsaWVudCwgY2xpZW50KTsKLX0KIAotTGF5ZXJGbHVzaFNjaGVkdWxlcjo6fkxheWVyRmx1c2hT
Y2hlZHVsZXIoKQotewotICAgIEFTU0VSVCghbV9ydW5Mb29wT2JzZXJ2ZXIpOworICAgIG1fcnVu
TG9vcE9ic2VydmVyID0gUnVuTG9vcE9ic2VydmVyOjpjcmVhdGUobGF5ZXJGbHVzaFJ1bkxvb3BP
cmRlciwgW3RoaXNdKCkgeworICAgICAgICBpZiAodGhpcy0+aXNTdXNwZW5kZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaENhbGxiYWNrKCk7CisgICAg
fSk7CiB9CiAKLXZvaWQgTGF5ZXJGbHVzaFNjaGVkdWxlcjo6cnVuTG9vcE9ic2VydmVyQ2FsbGJh
Y2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKiBjb250ZXh0
KQorTGF5ZXJGbHVzaFNjaGVkdWxlcjo6fkxheWVyRmx1c2hTY2hlZHVsZXIoKQogewotICAgIHN0
YXRpY19jYXN0PExheWVyRmx1c2hTY2hlZHVsZXIqPihjb250ZXh0KS0+cnVuTG9vcE9ic2VydmVy
Q2FsbGJhY2soKTsKIH0KIAotdm9pZCBMYXllckZsdXNoU2NoZWR1bGVyOjpydW5Mb29wT2JzZXJ2
ZXJDYWxsYmFjaygpCit2b2lkIExheWVyRmx1c2hTY2hlZHVsZXI6OmxheWVyRmx1c2hDYWxsYmFj
aygpCiB7Ci0gICAgQVNTRVJUKG1fcnVuTG9vcE9ic2VydmVyKTsKICAgICBBU1NFUlQoIW1faXNT
dXNwZW5kZWQpOwogCiAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CkBAIC04NiwyNiArODQsMTIg
QEAgdm9pZCBMYXllckZsdXNoU2NoZWR1bGVyOjpzY2hlZHVsZSgpCiAgICAgaWYgKG1faXNTdXNw
ZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gY3Vy
cmVudFJ1bkxvb3AoKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB3ZSB3YWtlIHVwIHRoZSBsb29wIG9y
IHRoZSBvYnNlcnZlciBjb3VsZCBiZSBkZWxheWVkIHVudGlsIHNvbWUgb3RoZXIgc291cmNlIGZp
cmVzLgotICAgIENGUnVuTG9vcFdha2VVcChydW5Mb29wKTsKLQotICAgIGlmIChtX3J1bkxvb3BP
YnNlcnZlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJDb250ZXh0
IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAsIDAsIDAgfTsKLSAgICBtX3J1bkxvb3BPYnNlcnZlciA9
IGFkb3B0Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUoMCwga0NGUnVuTG9vcEJlZm9yZVdhaXRp
bmcgfCBrQ0ZSdW5Mb29wRXhpdCwgdHJ1ZSwgTGF5ZXJGbHVzaFJ1bkxvb3BPcmRlciwgcnVuTG9v
cE9ic2VydmVyQ2FsbGJhY2ssICZjb250ZXh0KSk7Ci0KLSAgICBDRlJ1bkxvb3BBZGRPYnNlcnZl
cihydW5Mb29wLCBtX3J1bkxvb3BPYnNlcnZlci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVz
KTsKKyAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUoY3VycmVudFJ1bkxvb3AoKSk7CiB9
CiAKIHZvaWQgTGF5ZXJGbHVzaFNjaGVkdWxlcjo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgaWYgKG1f
cnVuTG9vcE9ic2VydmVyKSB7Ci0gICAgICAgIENGUnVuTG9vcE9ic2VydmVySW52YWxpZGF0ZSht
X3J1bkxvb3BPYnNlcnZlci5nZXQoKSk7Ci0gICAgICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbnVs
bHB0cjsgICAKLSAgICB9CisgICAgbV9ydW5Mb29wT2JzZXJ2ZXItPmludmFsaWRhdGUoKTsKIH0K
ICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAyMDA0NDY2
Li45NTJlM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDYtMTAg
IFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEZh
Y3RvciByZXBlYXRlZCBDRlJ1bkxvb3BPYnNlcnZlciBjb2RlIG91dAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNjkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6
CisKIDIwMTQtMDYtMDUgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1bnN1c2VkIG1ldGhvZCBfc2V0QWNjZWxlcmF0ZWRJbWFnZURlY29kaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggZDU4ZGQ4My4uYTBi
ZTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtODksMTAg
Kzg5LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxl
cigpIHsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBydW5Mb29wT2JzZXJ2ZXJDYWxs
YmFjaygpIG92ZXJyaWRlCisgICAgdmlydHVhbCB2b2lkIGxheWVyRmx1c2hDYWxsYmFjaygpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBSZWZQdHI8TGF5ZXJGbHVzaENvbnRyb2xsZXI+IHByb3Rl
Y3RvciA9IG1fZmx1c2hDb250cm9sbGVyOwotICAgICAgICBXZWJDb3JlOjpMYXllckZsdXNoU2No
ZWR1bGVyOjpydW5Mb29wT2JzZXJ2ZXJDYWxsYmFjaygpOworICAgICAgICBXZWJDb3JlOjpMYXll
ckZsdXNoU2NoZWR1bGVyOjpsYXllckZsdXNoQ2FsbGJhY2soKTsKICAgICB9CiAgICAgCiAgICAg
TGF5ZXJGbHVzaENvbnRyb2xsZXIqIG1fZmx1c2hDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFm
OGI0NzAuLjhiZDI4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNC0wNi0xMCAg
VGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmFj
dG9yIHJlcGVhdGVkIENGUnVuTG9vcE9ic2VydmVyIGNvZGUgb3V0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM2OTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6On5SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Y29tbWl0TGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6c2hvd0RlYnVnSW5kaWNhdG9yKToK
KyAgICAgICAgKFdlYktpdDo6Y29yZUFuaW1hdGlvbkRpZENvbW1pdExheWVyc0NhbGxiYWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eTo6c2NoZWR1bGVDb3JlQW5pbWF0aW9uTGF5ZXJDb21taXRPYnNlcnZlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvcmVBbmlt
YXRpb25EaWRDb21taXRMYXllcnMpOiBEZWxldGVkLgorICAgICAgICBNYWtlIHVzZSBvZiBXZWJD
b3JlOjpSdW5Mb29wT2JzZXJ2ZXIuCisKIDIwMTQtMDYtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG1vcmUgbGF0Y2hlZCBzY3JvbGxpbmcg
dGVzdCBmbGFraW5lc3MgYW5kIHNsb3duZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCmlu
ZGV4IGU4N2I5ZTkuLmE4MWJmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUnVuTG9vcE9ic2VydmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC03NSw4ICs3Niw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzZW5kVXBkYXRlR2VvbWV0
cnkoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVDb3JlQW5pbWF0aW9uTGF5ZXJDb21taXRPYnNlcnZl
cigpOwotCiAgICAgUmVtb3RlTGF5ZXJUcmVlSG9zdCBtX3JlbW90ZUxheWVyVHJlZUhvc3Q7CiAg
ICAgYm9vbCBtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZUdlb21ldHJ5OwogCkBAIC04Nyw3ICs4Niw3
IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fdGlsZU1hcEhvc3RMYXllcjsK
ICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9leHBvc2VkUmVjdEluZGljYXRvckxheWVyOwogCi0g
ICAgUmV0YWluUHRyPENGUnVuTG9vcE9ic2VydmVyUmVmPiBtX2xheWVyQ29tbWl0T2JzZXJ2ZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4gbV9sYXllckNv
bW1pdE9ic2VydmVyOwogfTsKIAogRFJBV0lOR19BUkVBX1BST1hZX1RZUEVfQ0FTVFMoUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSwgdHlwZSgpID09IERyYXdpbmdBcmVhVHlwZVJlbW90
ZUxheWVyVHJlZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggODliMjAwZC4u
MmNjN2ZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMzcsMTEgKzM3LDEw
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZVBvb2wuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmg+CiAKLXN0YXRpYyBjb25zdCBDRklu
ZGV4IENvcmVBbmltYXRpb25Db21taXRSdW5Mb29wT3JkZXIgPSAyMDAwMDAwOwotc3RhdGljIGNv
bnN0IENGSW5kZXggRGlkQ29tbWl0TGF5ZXJzUnVuTG9vcE9yZGVyID0gQ29yZUFuaW1hdGlvbkNv
bW1pdFJ1bkxvb3BPcmRlciArIDE7Ci0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0
aWMgY29uc3QgQ0ZJbmRleCBkaWRDb21taXRMYXllcnNSdW5Mb29wT3JkZXIgPSAoQ0ZJbmRleClS
dW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkNvcmVBbmltYXRpb25Db21t
aXQgKyAxOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkqIHdl
YlBhZ2VQcm94eSkKQEAgLTU2LDE2ICs1NSwxNSBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSogdwog
I2VuZGlmCiAKICAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS0+cGFnZUlEKCksICp0aGlzKTsKKworICAgIG1fbGF5
ZXJDb21taXRPYnNlcnZlciA9IFJ1bkxvb3BPYnNlcnZlcjo6Y3JlYXRlKGRpZENvbW1pdExheWVy
c1J1bkxvb3BPcmRlciwgW3RoaXNdKCkgeworICAgICAgICB0aGlzLT5jb3JlQW5pbWF0aW9uRGlk
Q29tbWl0TGF5ZXJzKCk7CisgICAgfSk7CiB9CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KCkKIHsKICAgICBtX3dlYlBh
Z2VQcm94eS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBh
Z2VQcm94eS0+cGFnZUlEKCkpOwotCi0gICAgaWYgKG1fbGF5ZXJDb21taXRPYnNlcnZlcikgewot
ICAgICAgICBDRlJ1bkxvb3BPYnNlcnZlckludmFsaWRhdGUobV9sYXllckNvbW1pdE9ic2VydmVy
LmdldCgpKTsKLSAgICAgICAgbV9sYXllckNvbW1pdE9ic2VydmVyID0gbnVsbHB0cjsKLSAgICB9
CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6c2l6ZURpZENoYW5n
ZSgpCkBAIC0xNTAsNyArMTQ4LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Ojpjb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnMKICAgICAgICAg
YXNMYXllcihtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCkpLm5hbWUg
PSBAIkluZGljYXRvciBob3N0IHJvb3QiOwogICAgIH0KIAotICAgIHNjaGVkdWxlQ29yZUFuaW1h
dGlvbkxheWVyQ29tbWl0T2JzZXJ2ZXIoKTsKKyAgICBtX2xheWVyQ29tbWl0T2JzZXJ2ZXItPnNj
aGVkdWxlKCk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6YWNj
ZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRfdCBsYXllcklELCBjb25zdCBTdHJpbmcm
IGtleSwgZG91YmxlIHN0YXJ0VGltZSkKQEAgLTI5NiwzMyArMjk0LDkgQEAgdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpzaG93RGVidWdJbmRpY2F0b3IoYm9vbCBzaG93KQog
ICAgIH0KIH0KIAotc3RhdGljIHZvaWQgY29yZUFuaW1hdGlvbkRpZENvbW1pdExheWVyc0NhbGxi
YWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eSwgdm9pZCogY29udGV4
dCkKLXsKLSAgICBzdGF0aWNfY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Kj4o
Y29udGV4dCktPmNvcmVBbmltYXRpb25EaWRDb21taXRMYXllcnMoKTsKLX0KLQotdm9pZCBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpzY2hlZHVsZUNvcmVBbmltYXRpb25MYXllckNv
bW1pdE9ic2VydmVyKCkKLXsKLSAgICBpZiAobV9sYXllckNvbW1pdE9ic2VydmVyKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJl
bnQoKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB3ZSB3YWtlIHVwIHRoZSBsb29wIG9yIHRoZSBvYnNl
cnZlciBjb3VsZCBiZSBkZWxheWVkIHVudGlsIHNvbWUgb3RoZXIgc291cmNlIGZpcmVzLgotICAg
IENGUnVuTG9vcFdha2VVcChydW5Mb29wKTsKLQotICAgIENGUnVuTG9vcE9ic2VydmVyQ29udGV4
dCBjb250ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwIH07Ci0gICAgbV9sYXllckNvbW1pdE9ic2Vy
dmVyID0gYWRvcHRDRihDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZSgwLCBrQ0ZSdW5Mb29wQmVmb3Jl
V2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCB0cnVlLCBEaWRDb21taXRMYXllcnNSdW5Mb29wT3Jk
ZXIsIGNvcmVBbmltYXRpb25EaWRDb21taXRMYXllcnNDYWxsYmFjaywgJmNvbnRleHQpKTsKLQot
ICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKHJ1bkxvb3AsIG1fbGF5ZXJDb21taXRPYnNlcnZlci5n
ZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLX0KLQogdm9pZCBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Ojpjb3JlQW5pbWF0aW9uRGlkQ29tbWl0TGF5ZXJzKCkKIHsKLSAgICBp
ZiAobV9sYXllckNvbW1pdE9ic2VydmVyKSB7Ci0gICAgICAgIENGUnVuTG9vcE9ic2VydmVySW52
YWxpZGF0ZShtX2xheWVyQ29tbWl0T2JzZXJ2ZXIuZ2V0KCkpOwotICAgICAgICBtX2xheWVyQ29t
bWl0T2JzZXJ2ZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBtX2xheWVyQ29tbWl0T2JzZXJ2ZXIt
PmludmFsaWRhdGUoKTsKIAogICAgIGlmICghbV93ZWJQYWdlUHJveHktPmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuOwo=
</data>
<flag name="review"
          id="257300"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>