<?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>133708</bug_id>
          
          <creation_ts>2014-06-10 16:57:56 -0700</creation_ts>
          <short_desc>Make it possible for waitForAndDispatchImmediately to bail if a sync message comes in from the other direction</short_desc>
          <delta_ts>2014-06-11 13:38:44 -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>ap</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1014587</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-10 16:57:56 -0700</bug_when>
    <thetext>We should have a flag on waitForAndDispatchImmediately that makes it bail immediately if a sync message comes in from the other direction. For example:

1. UI process is waitForAndDispatchImmediatelying, waiting for message X from the Web process
2. Web process timer fires, sends sync message Y to the UI process. Y won&apos;t return until the UI process main thread gets a chance to run, but it&apos;s currently waiting.
&lt;a long time goes by with both processes doing nothing useful&gt;
3. *Eventually* we hit the waitForAndDispatchImmediately timeout, and everything proceeds normally from there.

Instead:

1. UI process is waitForAndDispatchImmediatelying, waiting for message X from the Web process
2. Web process timer fires, sends sync message Y to the UI process.
3. The waitForAndDispatchImmediately on message X bails immediately.
4. Message Y is handled.
&lt;a long time didn&apos;t have to go by&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014599</commentid>
    <comment_count>1</comment_count>
      <attachid>232833</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-10 17:38:59 -0700</bug_when>
    <thetext>Created attachment 232833
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014600</commentid>
    <comment_count>2</comment_count>
      <attachid>232834</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-10 17:40:48 -0700</bug_when>
    <thetext>Created attachment 232834
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014844</commentid>
    <comment_count>3</comment_count>
      <attachid>232834</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-06-11 12:19:22 -0700</bug_when>
    <thetext>Comment on attachment 232834
patch

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

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:392
&gt; +    WaitForMessageInfo waitingForMessage(messageReceiverName, messageName, destinationID, flags);

There&apos;s still no run loop assertion here!

&gt; Source/WebKit2/Platform/IPC/Connection.h:172
&gt; +    template&lt;typename T&gt; bool waitForAndDispatchImmediately(uint64_t destinationID, std::chrono::milliseconds timeout, WaitForMessageFlags = (WaitForMessageFlags)0);

Please use an unsigned instead of the cast.

&gt; Source/WebKit2/Platform/IPC/Connection.h:280
&gt; +    struct WaitForMessageInfo {
&gt; +        WaitForMessageInfo(StringReference messageReceiverName, StringReference messageName, uint64_t destinationID, WaitForMessageFlags flags)
&gt; +            : messageReceiverName(messageReceiverName)
&gt; +            , messageName(messageName)
&gt; +            , destinationID(destinationID)
&gt; +            , waitForMessageFlags(flags)
&gt; +        { }
&gt; +
&gt; +        StringReference messageReceiverName;
&gt; +        StringReference messageName;
&gt; +        uint64_t destinationID;
&gt; +
&gt; +        WaitForMessageFlags waitForMessageFlags;
&gt; +        bool messageWaitingInterrupted = false;
&gt; +
&gt; +        std::unique_ptr&lt;MessageDecoder&gt; decoder;
&gt; +    };
&gt; +
&gt; +    WaitForMessageInfo* m_waitingForMessage;

I think you can forward declare this and just stick it in the .cpp file. Maybe call it WaitForMessageState?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014863</commentid>
    <comment_count>4</comment_count>
      <attachid>232891</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-11 12:57:43 -0700</bug_when>
    <thetext>Created attachment 232891
anders changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014881</commentid>
    <comment_count>5</comment_count>
      <attachid>232891</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-06-11 13:35:45 -0700</bug_when>
    <thetext>Comment on attachment 232891
anders changes

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

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:45
&gt; +    { }

Newline after {

&gt; Source/WebKit2/Platform/IPC/Connection.cpp:428
&gt; +            std::unique_ptr&lt;MessageDecoder&gt; decoder = std::move(m_waitingForMessage-&gt;decoder);

auto decoder =</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014882</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-11 13:38:44 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/169825</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232833</attachid>
            <date>2014-06-10 17:38:59 -0700</date>
            <delta_ts>2014-06-10 17:40:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>waitfor.diff</filename>
            <type>text/plain</type>
            <size>10968</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4YmQyOGU2Li43OWMxMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTQtMDYtMTAgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIHdhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5IHRvIGJhaWwgaWYgYSBzeW5jIG1lc3NhZ2UgY29tZXMgaW4gZnJvbSB0aGUgb3RoZXIg
ZGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzM3MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6Q29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdl
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6V2Fp
dEZvck1lc3NhZ2VJbmZvOjpXYWl0Rm9yTWVzc2FnZUluZm8pOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSk6CisgICAgICAgIFJlbW92ZSB0
aGUgd2FpdEZvck1lc3NhZ2VNYXAsIGFuZCBhc3NlcnQgdGhhdCB3ZSdyZSBvbmx5IGV2ZXIgd2Fp
dGluZyBmb3Igb25lIG1lc3NhZ2UgYXQgYSB0aW1lLgorICAgICAgICBUaGlzIHNpbXBsaWZpZXMg
dGhpcyBjb2RlIGEgYml0LCBhbmQgd2UgbmV2ZXIgd2FpdCBvbiBtb3JlIHRoYW4gb25lIG1lc3Nh
Z2UgYXQgYSB0aW1lLCBzbyBpdCB3YXMgdW5uZWNlc3NhcnkuCisKKyAgICAgICAgQWRkIGEgZmxh
ZyB0byB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSwgSW50ZXJydXB0V2FpdGluZ0lmU3lu
Y01lc3NhZ2VBcnJpdmVzLCB3aGljaCB3aWxsIGNhdXNlCisgICAgICAgIHdhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5IHRvIGJhaWwgaWYgYSBzeW5jIG1lc3NhZ2UgYXJyaXZlcywgdG8gYXZv
aWQgcG9pbnRsZXNzbHkgYmxvY2tpbmcgYm90aCBwcm9jZXNzZXMKKyAgICAgICAgZm9yIHRoZSBl
bnRpcmUgdGltZW91dC4KKworMjAxNC0wNi0xMCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgRmFjdG9yIHJlcGVhdGVkIENGUnVuTG9vcE9ic2Vy
dmVyIGNvZGUgb3V0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzM2OTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IGYyNDBkMDcuLjZhNjJlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCBDb25uZWN0aW9uOjpDb25uZWN0aW9u
KElkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50KiBjbGllbnQsIFJ1
bgogICAgICwgbV9pbkRpc3BhdGNoTWVzc2FnZUNvdW50KDApCiAgICAgLCBtX2luRGlzcGF0Y2hN
ZXNzYWdlTWFya2VkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseUNvdW50KDApCiAgICAg
LCBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShmYWxzZSkKLSAgICAsIG1fbWVzc2FnZVdhaXRp
bmdJbnRlcnJ1cHRlZEJ5Q2xvc2VkQ29ubmVjdGlvbihmYWxzZSkKKyAgICAsIG1fd2FpdGluZ0Zv
ck1lc3NhZ2UobnVsbHB0cikKICAgICAsIG1fc3luY01lc3NhZ2VTdGF0ZShTeW5jTWVzc2FnZVN0
YXRlOjpnZXRPckNyZWF0ZShjbGllbnRSdW5Mb29wKSkKICAgICAsIG1fc2hvdWxkV2FpdEZvclN5
bmNSZXBsaWVzKHRydWUpCiB7CkBAIC0zNzEsNyArMzcxLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpz
ZW5kU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKICAg
ICByZXR1cm4gc2VuZE1lc3NhZ2Uoc3RkOjptb3ZlKGVuY29kZXIpKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVv
dXQpCitzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JN
ZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHMgdGltZW91dCwgV2FpdEZvck1lc3NhZ2VGbGFncyBmbGFncykKIHsKICAgICAvLyBG
aXJzdCwgY2hlY2sgaWYgdGhpcyBtZXNzYWdlIGlzIGFscmVhZHkgaW4gdGhlIGluY29taW5nIG1l
c3NhZ2VzIHF1ZXVlLgogICAgIHsKQEAgLTM4OSw0NSArMzg5LDM2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJl
bmNlIG1lc3NhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGQ6OnBhaXI8c3RkOjpwYWlyPFN0
cmluZ1JlZmVyZW5jZSwgU3RyaW5nUmVmZXJlbmNlPiwgdWludDY0X3Q+IG1lc3NhZ2VBbmREZXN0
aW5hdGlvbihzdGQ6Om1ha2VfcGFpcihzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBtZXNzYWdlTmFtZSksIGRlc3RpbmF0aW9uSUQpKTsKLSAgICAKKyAgICBXYWl0Rm9yTWVzc2Fn
ZUluZm8gd2FpdGluZ0Zvck1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUs
IGRlc3RpbmF0aW9uSUQsIGZsYWdzKTsKKwogICAgIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6bXV0ZXg+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAotICAgICAgICAvLyBX
ZSBkb24ndCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRzIHdhaXQgZm9yIHRoZSBzYW1l
IG1lc3NhZ2UuCi0gICAgICAgIEFTU0VSVCghbV93YWl0Rm9yTWVzc2FnZU1hcC5jb250YWlucyht
ZXNzYWdlQW5kRGVzdGluYXRpb24pKTsKLSAgICAKLSAgICAgICAgLy8gSW5zZXJ0IG91ciBwZW5k
aW5nIHdhaXQuCi0gICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAuc2V0KG1lc3NhZ2VBbmREZXN0
aW5hdGlvbiwgbnVsbHB0cik7CisgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgaGF2aW5nIG11
bHRpcGxlIGNsaWVudHMgd2FpdGluZyBmb3IgbWVzc2FnZXMuCisgICAgICAgIEFTU0VSVCghbV93
YWl0aW5nRm9yTWVzc2FnZSk7CisKKyAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZSA9ICZ3YWl0
aW5nRm9yTWVzc2FnZTsKICAgICB9CiAgICAgCiAgICAgLy8gTm93IHdhaXQgZm9yIGl0IHRvIGJl
IHNldC4KICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAotICAgICAgICBhdXRvIGl0ID0g
bV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKG1lc3NhZ2VBbmREZXN0aW5hdGlvbik7Ci0gICAgICAg
IGlmIChpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVj
b2Rlcj4gZGVjb2RlciA9IHN0ZDo6bW92ZShpdC0+dmFsdWUpOwotICAgICAgICAgICAgbV93YWl0
Rm9yTWVzc2FnZU1hcC5yZW1vdmUoaXQpOwotCisgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNz
YWdlLT5kZWNvZGVyKSB7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29k
ZXI+IGRlY29kZXIgPSBzdGQ6Om1vdmUobV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcik7Cisg
ICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJl
dHVybiBkZWNvZGVyOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTm93IHdlIHdhaXQuCiAgICAg
ICAgIHN0ZDo6Y3Zfc3RhdHVzIHN0YXR1cyA9IG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24ud2Fp
dF9mb3IobG9jaywgdGltZW91dCk7Ci0gICAgICAgIGlmIChzdGF0dXMgPT0gc3RkOjpjdl9zdGF0
dXM6OnRpbWVvdXQgfHwgbV9tZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkQnlDbG9zZWRDb25uZWN0
aW9uKSB7Ci0gICAgICAgICAgICAvLyBXZSB0aW1lZCBvdXQgb3IgbG9zdCBvdXIgY29ubmVjdGlv
biwgbm93IHJlbW92ZSB0aGUgcGVuZGluZyB3YWl0LgotICAgICAgICAgICAgbV93YWl0Rm9yTWVz
c2FnZU1hcC5yZW1vdmUobWVzc2FnZUFuZERlc3RpbmF0aW9uKTsKLQotICAgICAgICAgICAgLy8g
SWYgdGhlcmUgYXJlIG5vIG1vcmUgd2FpdGVycywgcmVzZXQgbV9tZXNzYWdlV2FpdGluZ0ludGVy
cnVwdGVkQnlDbG9zZWRDb25uZWN0aW9uIHdoaWxlIHdlIGFscmVhZHkgaG9sZAotICAgICAgICAg
ICAgLy8gdGhlIG5lY2Vzc2FyeSBsb2NrIGluIGNhc2UgdGhlIGNvbm5lY3Rpb24gaXMgbGF0ZXIg
cmVvcGVuZWQuCi0gICAgICAgICAgICBpZiAobV93YWl0Rm9yTWVzc2FnZU1hcC5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgbV9tZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkQnlDbG9zZWRDb25u
ZWN0aW9uID0gZmFsc2U7Ci0KKyAgICAgICAgLy8gV2UgdGltZWQgb3V0LCBsb3N0IG91ciBjb25u
ZWN0aW9uLCBvciBhIHN5bmMgbWVzc2FnZSBjYW1lIGluIHdpdGggSW50ZXJydXB0V2FpdGluZ0lm
U3luY01lc3NhZ2VBcnJpdmVzLCBzbyBzdG9wIHdhaXRpbmcuCisgICAgICAgIGlmIChzdGF0dXMg
PT0gc3RkOjpjdl9zdGF0dXM6OnRpbWVvdXQgfHwgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2Fn
ZVdhaXRpbmdJbnRlcnJ1cHRlZCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAg
fQogCisgICAgbV93YWl0aW5nRm9yTWVzc2FnZSA9IG51bGxwdHI7CisKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApAQCAtNjQ3LDE0ICs2MzgsMTcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNz
SW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkK
ICAgICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fd2FpdEZv
ck1lc3NhZ2VNdXRleCk7CiAKLSAgICAgICAgYXV0byBpdCA9IG1fd2FpdEZvck1lc3NhZ2VNYXAu
ZmluZChzdGQ6Om1ha2VfcGFpcihzdGQ6Om1ha2VfcGFpcihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlvbklE
KCkpKTsKLSAgICAgICAgaWYgKGl0ICE9IG1fd2FpdEZvck1lc3NhZ2VNYXAuZW5kKCkpIHsKLSAg
ICAgICAgICAgIGl0LT52YWx1ZSA9IHN0ZDo6bW92ZShtZXNzYWdlKTsKLSAgICAgICAgICAgIEFT
U0VSVChpdC0+dmFsdWUpOwotICAgICAgICAKKyAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3Nh
Z2UgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSA9PSBtZXNzYWdl
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5h
bWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0
aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgeworICAgICAgICAgICAgbV93
YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlciA9IHN0ZDo6bW92ZShtZXNzYWdlKTsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAgICAgIG1f
d2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90aWZ5X29uZSgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgKG1fd2Fp
dGluZ0Zvck1lc3NhZ2UtPndhaXRGb3JNZXNzYWdlRmxhZ3MgJiBJbnRlcnJ1cHRXYWl0aW5nSWZT
eW5jTWVzc2FnZUFycml2ZXMpICYmIG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgeworICAgICAg
ICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IHRy
dWU7CisgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeV9vbmUoKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjptb3Zl
KG1lc3NhZ2UpKTsKQEAgLTY4NSw3ICs2NzksOCBAQCB2b2lkIENvbm5lY3Rpb246OmNvbm5lY3Rp
b25EaWRDbG9zZSgpCiAKICAgICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4
PiBsb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7Ci0gICAgICAgIG1fbWVzc2FnZVdhaXRpbmdJ
bnRlcnJ1cHRlZEJ5Q2xvc2VkQ29ubmVjdGlvbiA9IHRydWU7CisgICAgICAgIGlmIChtX3dhaXRp
bmdGb3JNZXNzYWdlKQorICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVdh
aXRpbmdJbnRlcnJ1cHRlZCA9IHRydWU7CiAgICAgfQogICAgIG1fd2FpdEZvck1lc3NhZ2VDb25k
aXRpb24ubm90aWZ5X2FsbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAppbmRleCBhNTE2YzFmLi4xMzNkMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKQEAgLTY4LDYgKzY4LDExIEBAIGVudW0gU3luY01lc3NhZ2VTZW5kRmxh
Z3MgewogICAgIC8vIEZJWE1FICgxMjYwMjEpOiBSZW1vdmUgd2hlbiBubyBwbGF0Zm9ybXMgbmVl
ZCB0byBzdXBwb3J0IHRoaXMuCiAgICAgU3BpblJ1bkxvb3BXaGlsZVdhaXRpbmdGb3JSZXBseSA9
IDEgPDwgMSwKIH07CisKK2VudW0gV2FpdEZvck1lc3NhZ2VGbGFncyB7CisgICAgLy8gVXNlIHRo
aXMgdG8gbWFrZSB3YWl0Rm9yTWVzc2FnZSBiZSBpbnRlcnJ1cHRlZCBpbW1lZGlhdGVseSBieSBh
bnkgaW5jb21pbmcgc3luYyBtZXNzYWdlcy4KKyAgICBJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVz
c2FnZUFycml2ZXMgPSAxIDw8IDAsCit9OwogICAgIAogI2RlZmluZSBNRVNTQUdFX0NIRUNLX0JB
U0UoYXNzZXJ0aW9uLCBjb25uZWN0aW9uKSBkbyBcCiAgICAgaWYgKCEoYXNzZXJ0aW9uKSkgeyBc
CkBAIC0xNjQsNyArMTY5LDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBt
ZXNzYWdlU2VuZEZsYWdzID0gMCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0ID0gc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kczo6bWF4KCksIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91
dCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IHRpbWVvdXQsIFdhaXRGb3JNZXNzYWdlRmxhZ3MgPSAoV2FpdEZvck1lc3NhZ2VGbGFncykwKTsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VF
bmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVx
dWVzdElEKTsKICAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5j
b2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKQEAgLTE5Myw3ICsxOTgsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50OyB9CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiB3YWl0Rm9y
TWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWls
bGlzZWNvbmRzIHRpbWVvdXQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4g
d2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBXYWl0Rm9yTWVzc2FnZUZsYWdzKTsKICAgICAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0
X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCB1bnNp
Z25lZCBzeW5jU2VuZEZsYWdzKTsKIApAQCAtMjUzLDggKzI1OCwyNiBAQCBwcml2YXRlOgogICAg
IAogICAgIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb247
CiAgICAgc3RkOjptdXRleCBtX3dhaXRGb3JNZXNzYWdlTXV0ZXg7Ci0gICAgYm9vbCBtX21lc3Nh
Z2VXYWl0aW5nSW50ZXJydXB0ZWRCeUNsb3NlZENvbm5lY3Rpb247Ci0gICAgSGFzaE1hcDxzdGQ6
OnBhaXI8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgU3RyaW5nUmVmZXJlbmNlPiwgdWludDY0
X3Q+LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+PiBtX3dhaXRGb3JNZXNzYWdlTWFw
OworCisgICAgc3RydWN0IFdhaXRGb3JNZXNzYWdlSW5mbyB7CisgICAgICAgIFdhaXRGb3JNZXNz
YWdlSW5mbyhTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBXYWl0Rm9yTWVzc2FnZUZs
YWdzIGZsYWdzID0gc3RhdGljX2Nhc3Q8V2FpdEZvck1lc3NhZ2VGbGFncz4oMCkpCisgICAgICAg
ICAgICA6IG1lc3NhZ2VSZWNlaXZlck5hbWUobWVzc2FnZVJlY2VpdmVyTmFtZSkKKyAgICAgICAg
ICAgICwgbWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpCisgICAgICAgICAgICAsIGRlc3RpbmF0aW9u
SUQoZGVzdGluYXRpb25JRCkKKyAgICAgICAgICAgICwgd2FpdEZvck1lc3NhZ2VGbGFncyhmbGFn
cykKKyAgICAgICAgeyB9CisKKyAgICAgICAgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWU7CisgICAgICAgIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZTsKKyAgICAgICAgdWlu
dDY0X3QgZGVzdGluYXRpb25JRDsKKworICAgICAgICBXYWl0Rm9yTWVzc2FnZUZsYWdzIHdhaXRG
b3JNZXNzYWdlRmxhZ3M7CisgICAgICAgIGJvb2wgbWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9
IGZhbHNlOworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2Rl
cjsKKyAgICB9OworCisgICAgV2FpdEZvck1lc3NhZ2VJbmZvKiBtX3dhaXRpbmdGb3JNZXNzYWdl
OwogCiAgICAgLy8gUmVwcmVzZW50cyBhIHN5bmMgcmVxdWVzdCBmb3Igd2hpY2ggd2UncmUgd2Fp
dGluZyBvbiBhIHJlcGx5LgogICAgIHN0cnVjdCBQZW5kaW5nU3luY1JlcGx5IHsKQEAgLTM1Nyw5
ICszODAsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmCiAgICAgcmV0dXJuIHJlcGx5RGVjb2Rl
ci0+ZGVjb2RlKHJlcGx5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0
aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBib29sIENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91dCwgV2FpdEZv
ck1lc3NhZ2VGbGFncyBmbGFncykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29k
ZXI+IGRlY29kZXIgPSB3YWl0Rm9yTWVzc2FnZShUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgp
LCBkZXN0aW5hdGlvbklELCB0aW1lb3V0KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURl
Y29kZXI+IGRlY29kZXIgPSB3YWl0Rm9yTWVzc2FnZShUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFt
ZSgpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBmbGFncyk7CiAgICAgaWYgKCFkZWNvZGVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232834</attachid>
            <date>2014-06-10 17:40:48 -0700</date>
            <delta_ts>2014-06-11 12:57:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>waitfor.diff</filename>
            <type>text/plain</type>
            <size>10930</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4YmQyOGU2Li43OWMxMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTQtMDYtMTAgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIHdhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5IHRvIGJhaWwgaWYgYSBzeW5jIG1lc3NhZ2UgY29tZXMgaW4gZnJvbSB0aGUgb3RoZXIg
ZGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzM3MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6Q29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdl
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6V2Fp
dEZvck1lc3NhZ2VJbmZvOjpXYWl0Rm9yTWVzc2FnZUluZm8pOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSk6CisgICAgICAgIFJlbW92ZSB0
aGUgd2FpdEZvck1lc3NhZ2VNYXAsIGFuZCBhc3NlcnQgdGhhdCB3ZSdyZSBvbmx5IGV2ZXIgd2Fp
dGluZyBmb3Igb25lIG1lc3NhZ2UgYXQgYSB0aW1lLgorICAgICAgICBUaGlzIHNpbXBsaWZpZXMg
dGhpcyBjb2RlIGEgYml0LCBhbmQgd2UgbmV2ZXIgd2FpdCBvbiBtb3JlIHRoYW4gb25lIG1lc3Nh
Z2UgYXQgYSB0aW1lLCBzbyBpdCB3YXMgdW5uZWNlc3NhcnkuCisKKyAgICAgICAgQWRkIGEgZmxh
ZyB0byB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSwgSW50ZXJydXB0V2FpdGluZ0lmU3lu
Y01lc3NhZ2VBcnJpdmVzLCB3aGljaCB3aWxsIGNhdXNlCisgICAgICAgIHdhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5IHRvIGJhaWwgaWYgYSBzeW5jIG1lc3NhZ2UgYXJyaXZlcywgdG8gYXZv
aWQgcG9pbnRsZXNzbHkgYmxvY2tpbmcgYm90aCBwcm9jZXNzZXMKKyAgICAgICAgZm9yIHRoZSBl
bnRpcmUgdGltZW91dC4KKworMjAxNC0wNi0xMCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgRmFjdG9yIHJlcGVhdGVkIENGUnVuTG9vcE9ic2Vy
dmVyIGNvZGUgb3V0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzM2OTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IGYyNDBkMDcuLjZhNjJlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCBDb25uZWN0aW9uOjpDb25uZWN0aW9u
KElkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50KiBjbGllbnQsIFJ1
bgogICAgICwgbV9pbkRpc3BhdGNoTWVzc2FnZUNvdW50KDApCiAgICAgLCBtX2luRGlzcGF0Y2hN
ZXNzYWdlTWFya2VkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseUNvdW50KDApCiAgICAg
LCBtX2RpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShmYWxzZSkKLSAgICAsIG1fbWVzc2FnZVdhaXRp
bmdJbnRlcnJ1cHRlZEJ5Q2xvc2VkQ29ubmVjdGlvbihmYWxzZSkKKyAgICAsIG1fd2FpdGluZ0Zv
ck1lc3NhZ2UobnVsbHB0cikKICAgICAsIG1fc3luY01lc3NhZ2VTdGF0ZShTeW5jTWVzc2FnZVN0
YXRlOjpnZXRPckNyZWF0ZShjbGllbnRSdW5Mb29wKSkKICAgICAsIG1fc2hvdWxkV2FpdEZvclN5
bmNSZXBsaWVzKHRydWUpCiB7CkBAIC0zNzEsNyArMzcxLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpz
ZW5kU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKICAg
ICByZXR1cm4gc2VuZE1lc3NhZ2Uoc3RkOjptb3ZlKGVuY29kZXIpKTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVv
dXQpCitzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JN
ZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHMgdGltZW91dCwgV2FpdEZvck1lc3NhZ2VGbGFncyBmbGFncykKIHsKICAgICAvLyBG
aXJzdCwgY2hlY2sgaWYgdGhpcyBtZXNzYWdlIGlzIGFscmVhZHkgaW4gdGhlIGluY29taW5nIG1l
c3NhZ2VzIHF1ZXVlLgogICAgIHsKQEAgLTM4OSw0NSArMzg5LDM2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJl
bmNlIG1lc3NhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGQ6OnBhaXI8c3RkOjpwYWlyPFN0
cmluZ1JlZmVyZW5jZSwgU3RyaW5nUmVmZXJlbmNlPiwgdWludDY0X3Q+IG1lc3NhZ2VBbmREZXN0
aW5hdGlvbihzdGQ6Om1ha2VfcGFpcihzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBtZXNzYWdlTmFtZSksIGRlc3RpbmF0aW9uSUQpKTsKLSAgICAKKyAgICBXYWl0Rm9yTWVzc2Fn
ZUluZm8gd2FpdGluZ0Zvck1lc3NhZ2UobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUs
IGRlc3RpbmF0aW9uSUQsIGZsYWdzKTsKKwogICAgIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6bXV0ZXg+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAotICAgICAgICAvLyBX
ZSBkb24ndCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRzIHdhaXQgZm9yIHRoZSBzYW1l
IG1lc3NhZ2UuCi0gICAgICAgIEFTU0VSVCghbV93YWl0Rm9yTWVzc2FnZU1hcC5jb250YWlucyht
ZXNzYWdlQW5kRGVzdGluYXRpb24pKTsKLSAgICAKLSAgICAgICAgLy8gSW5zZXJ0IG91ciBwZW5k
aW5nIHdhaXQuCi0gICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAuc2V0KG1lc3NhZ2VBbmREZXN0
aW5hdGlvbiwgbnVsbHB0cik7CisgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgaGF2aW5nIG11
bHRpcGxlIGNsaWVudHMgd2FpdGluZyBmb3IgbWVzc2FnZXMuCisgICAgICAgIEFTU0VSVCghbV93
YWl0aW5nRm9yTWVzc2FnZSk7CisKKyAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZSA9ICZ3YWl0
aW5nRm9yTWVzc2FnZTsKICAgICB9CiAgICAgCiAgICAgLy8gTm93IHdhaXQgZm9yIGl0IHRvIGJl
IHNldC4KICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAotICAgICAgICBhdXRvIGl0ID0g
bV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKG1lc3NhZ2VBbmREZXN0aW5hdGlvbik7Ci0gICAgICAg
IGlmIChpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVj
b2Rlcj4gZGVjb2RlciA9IHN0ZDo6bW92ZShpdC0+dmFsdWUpOwotICAgICAgICAgICAgbV93YWl0
Rm9yTWVzc2FnZU1hcC5yZW1vdmUoaXQpOwotCisgICAgICAgIGlmIChtX3dhaXRpbmdGb3JNZXNz
YWdlLT5kZWNvZGVyKSB7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29k
ZXI+IGRlY29kZXIgPSBzdGQ6Om1vdmUobV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcik7Cisg
ICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJl
dHVybiBkZWNvZGVyOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTm93IHdlIHdhaXQuCiAgICAg
ICAgIHN0ZDo6Y3Zfc3RhdHVzIHN0YXR1cyA9IG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24ud2Fp
dF9mb3IobG9jaywgdGltZW91dCk7Ci0gICAgICAgIGlmIChzdGF0dXMgPT0gc3RkOjpjdl9zdGF0
dXM6OnRpbWVvdXQgfHwgbV9tZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkQnlDbG9zZWRDb25uZWN0
aW9uKSB7Ci0gICAgICAgICAgICAvLyBXZSB0aW1lZCBvdXQgb3IgbG9zdCBvdXIgY29ubmVjdGlv
biwgbm93IHJlbW92ZSB0aGUgcGVuZGluZyB3YWl0LgotICAgICAgICAgICAgbV93YWl0Rm9yTWVz
c2FnZU1hcC5yZW1vdmUobWVzc2FnZUFuZERlc3RpbmF0aW9uKTsKLQotICAgICAgICAgICAgLy8g
SWYgdGhlcmUgYXJlIG5vIG1vcmUgd2FpdGVycywgcmVzZXQgbV9tZXNzYWdlV2FpdGluZ0ludGVy
cnVwdGVkQnlDbG9zZWRDb25uZWN0aW9uIHdoaWxlIHdlIGFscmVhZHkgaG9sZAotICAgICAgICAg
ICAgLy8gdGhlIG5lY2Vzc2FyeSBsb2NrIGluIGNhc2UgdGhlIGNvbm5lY3Rpb24gaXMgbGF0ZXIg
cmVvcGVuZWQuCi0gICAgICAgICAgICBpZiAobV93YWl0Rm9yTWVzc2FnZU1hcC5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgbV9tZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkQnlDbG9zZWRDb25u
ZWN0aW9uID0gZmFsc2U7Ci0KKyAgICAgICAgLy8gV2UgdGltZWQgb3V0LCBsb3N0IG91ciBjb25u
ZWN0aW9uLCBvciBhIHN5bmMgbWVzc2FnZSBjYW1lIGluIHdpdGggSW50ZXJydXB0V2FpdGluZ0lm
U3luY01lc3NhZ2VBcnJpdmVzLCBzbyBzdG9wIHdhaXRpbmcuCisgICAgICAgIGlmIChzdGF0dXMg
PT0gc3RkOjpjdl9zdGF0dXM6OnRpbWVvdXQgfHwgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2Fn
ZVdhaXRpbmdJbnRlcnJ1cHRlZCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAg
fQogCisgICAgbV93YWl0aW5nRm9yTWVzc2FnZSA9IG51bGxwdHI7CisKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApAQCAtNjQ3LDE0ICs2MzgsMTcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNz
SW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2FnZSkK
ICAgICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fd2FpdEZv
ck1lc3NhZ2VNdXRleCk7CiAKLSAgICAgICAgYXV0byBpdCA9IG1fd2FpdEZvck1lc3NhZ2VNYXAu
ZmluZChzdGQ6Om1ha2VfcGFpcihzdGQ6Om1ha2VfcGFpcihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlvbklE
KCkpKTsKLSAgICAgICAgaWYgKGl0ICE9IG1fd2FpdEZvck1lc3NhZ2VNYXAuZW5kKCkpIHsKLSAg
ICAgICAgICAgIGl0LT52YWx1ZSA9IHN0ZDo6bW92ZShtZXNzYWdlKTsKLSAgICAgICAgICAgIEFT
U0VSVChpdC0+dmFsdWUpOwotICAgICAgICAKKyAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3Nh
Z2UgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSA9PSBtZXNzYWdl
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZU5h
bWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZXN0
aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgeworICAgICAgICAgICAgbV93
YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlciA9IHN0ZDo6bW92ZShtZXNzYWdlKTsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAgICAgIG1f
d2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90aWZ5X29uZSgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgKG1fd2Fp
dGluZ0Zvck1lc3NhZ2UtPndhaXRGb3JNZXNzYWdlRmxhZ3MgJiBJbnRlcnJ1cHRXYWl0aW5nSWZT
eW5jTWVzc2FnZUFycml2ZXMpICYmIG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgeworICAgICAg
ICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IHRy
dWU7CisgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeV9vbmUoKTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjptb3Zl
KG1lc3NhZ2UpKTsKQEAgLTY4NSw3ICs2NzksOCBAQCB2b2lkIENvbm5lY3Rpb246OmNvbm5lY3Rp
b25EaWRDbG9zZSgpCiAKICAgICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4
PiBsb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7Ci0gICAgICAgIG1fbWVzc2FnZVdhaXRpbmdJ
bnRlcnJ1cHRlZEJ5Q2xvc2VkQ29ubmVjdGlvbiA9IHRydWU7CisgICAgICAgIGlmIChtX3dhaXRp
bmdGb3JNZXNzYWdlKQorICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVdh
aXRpbmdJbnRlcnJ1cHRlZCA9IHRydWU7CiAgICAgfQogICAgIG1fd2FpdEZvck1lc3NhZ2VDb25k
aXRpb24ubm90aWZ5X2FsbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAppbmRleCBhNTE2YzFmLi4wMGIzYzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKQEAgLTY4LDYgKzY4LDExIEBAIGVudW0gU3luY01lc3NhZ2VTZW5kRmxh
Z3MgewogICAgIC8vIEZJWE1FICgxMjYwMjEpOiBSZW1vdmUgd2hlbiBubyBwbGF0Zm9ybXMgbmVl
ZCB0byBzdXBwb3J0IHRoaXMuCiAgICAgU3BpblJ1bkxvb3BXaGlsZVdhaXRpbmdGb3JSZXBseSA9
IDEgPDwgMSwKIH07CisKK2VudW0gV2FpdEZvck1lc3NhZ2VGbGFncyB7CisgICAgLy8gVXNlIHRo
aXMgdG8gbWFrZSB3YWl0Rm9yTWVzc2FnZSBiZSBpbnRlcnJ1cHRlZCBpbW1lZGlhdGVseSBieSBh
bnkgaW5jb21pbmcgc3luYyBtZXNzYWdlcy4KKyAgICBJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVz
c2FnZUFycml2ZXMgPSAxIDw8IDAsCit9OwogICAgIAogI2RlZmluZSBNRVNTQUdFX0NIRUNLX0JB
U0UoYXNzZXJ0aW9uLCBjb25uZWN0aW9uKSBkbyBcCiAgICAgaWYgKCEoYXNzZXJ0aW9uKSkgeyBc
CkBAIC0xNjQsNyArMTY5LDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Ym9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1bnNpZ25lZCBt
ZXNzYWdlU2VuZEZsYWdzID0gMCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0ID0gc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kczo6bWF4KCksIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MgPSAwKTsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91
dCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IHRpbWVvdXQsIFdhaXRGb3JNZXNzYWdlRmxhZ3MgPSAoV2FpdEZvck1lc3NhZ2VGbGFncykwKTsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VF
bmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVx
dWVzdElEKTsKICAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5j
b2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKQEAgLTE5Myw3ICsxOTgsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50OyB9CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiB3YWl0Rm9y
TWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWls
bGlzZWNvbmRzIHRpbWVvdXQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4g
d2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBXYWl0Rm9yTWVzc2FnZUZsYWdzKTsKICAgICAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IHdhaXRGb3JTeW5jUmVwbHkodWludDY0
X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCB1bnNp
Z25lZCBzeW5jU2VuZEZsYWdzKTsKIApAQCAtMjUzLDggKzI1OCwyNiBAQCBwcml2YXRlOgogICAg
IAogICAgIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlIG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb247
CiAgICAgc3RkOjptdXRleCBtX3dhaXRGb3JNZXNzYWdlTXV0ZXg7Ci0gICAgYm9vbCBtX21lc3Nh
Z2VXYWl0aW5nSW50ZXJydXB0ZWRCeUNsb3NlZENvbm5lY3Rpb247Ci0gICAgSGFzaE1hcDxzdGQ6
OnBhaXI8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5jZSwgU3RyaW5nUmVmZXJlbmNlPiwgdWludDY0
X3Q+LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+PiBtX3dhaXRGb3JNZXNzYWdlTWFw
OworCisgICAgc3RydWN0IFdhaXRGb3JNZXNzYWdlSW5mbyB7CisgICAgICAgIFdhaXRGb3JNZXNz
YWdlSW5mbyhTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBXYWl0Rm9yTWVzc2FnZUZs
YWdzIGZsYWdzKQorICAgICAgICAgICAgOiBtZXNzYWdlUmVjZWl2ZXJOYW1lKG1lc3NhZ2VSZWNl
aXZlck5hbWUpCisgICAgICAgICAgICAsIG1lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorICAgICAg
ICAgICAgLCBkZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCisgICAgICAgICAgICAsIHdhaXRG
b3JNZXNzYWdlRmxhZ3MoZmxhZ3MpCisgICAgICAgIHsgfQorCisgICAgICAgIFN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lOworICAgICAgICBTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZU5hbWU7CisgICAgICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQ7CisKKyAgICAgICAgV2FpdEZv
ck1lc3NhZ2VGbGFncyB3YWl0Rm9yTWVzc2FnZUZsYWdzOworICAgICAgICBib29sIG1lc3NhZ2VX
YWl0aW5nSW50ZXJydXB0ZWQgPSBmYWxzZTsKKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZURlY29kZXI+IGRlY29kZXI7CisgICAgfTsKKworICAgIFdhaXRGb3JNZXNzYWdlSW5mbyog
bV93YWl0aW5nRm9yTWVzc2FnZTsKIAogICAgIC8vIFJlcHJlc2VudHMgYSBzeW5jIHJlcXVlc3Qg
Zm9yIHdoaWNoIHdlJ3JlIHdhaXRpbmcgb24gYSByZXBseS4KICAgICBzdHJ1Y3QgUGVuZGluZ1N5
bmNSZXBseSB7CkBAIC0zNTcsOSArMzgwLDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBD
b25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJgogICAg
IHJldHVybiByZXBseURlY29kZXItPmRlY29kZShyZXBseSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0KQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjp3YWl0Rm9yQW5kRGlzcGF0Y2hJ
bW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzIHRpbWVvdXQsIFdhaXRGb3JNZXNzYWdlRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6cmVjZWl2
ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCwgdGltZW91dCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBkZWNvZGVyID0gd2FpdEZvck1lc3NhZ2UoVDo6cmVj
ZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgZmxhZ3MpOwog
ICAgIGlmICghZGVjb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232891</attachid>
            <date>2014-06-11 12:57:43 -0700</date>
            <delta_ts>2014-06-11 13:35:44 -0700</delta_ts>
            <desc>anders changes</desc>
            <filename>waitfor.diff</filename>
            <type>text/plain</type>
            <size>11449</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4YmQyOGU2Li43OWMxMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTQtMDYtMTAgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIHdhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5IHRvIGJhaWwgaWYgYSBzeW5jIG1lc3NhZ2UgY29tZXMgaW4gZnJvbSB0aGUgb3RoZXIg
ZGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzM3MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6V2FpdEZvck1l
c3NhZ2VTdGF0ZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24pOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5KToKKyAgICAgICAgUmVtb3ZlIHRoZSB3YWl0Rm9yTWVzc2FnZU1hcCwgYW5kIGFzc2Vy
dCB0aGF0IHdlJ3JlIG9ubHkgZXZlciB3YWl0aW5nIGZvciBvbmUgbWVzc2FnZSBhdCBhIHRpbWUu
CisgICAgICAgIFRoaXMgc2ltcGxpZmllcyB0aGlzIGNvZGUgYSBiaXQsIGFuZCB3ZSBuZXZlciB3
YWl0IG9uIG1vcmUgdGhhbiBvbmUgbWVzc2FnZSBhdCBhIHRpbWUsIHNvIGl0IHdhcyB1bm5lY2Vz
c2FyeS4KKworICAgICAgICBBZGQgYSBmbGFnIHRvIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5LCBJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMsIHdoaWNoIHdpbGwgY2F1
c2UKKyAgICAgICAgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkgdG8gYmFpbCBpZiBhIHN5
bmMgbWVzc2FnZSBhcnJpdmVzLCB0byBhdm9pZCBwb2ludGxlc3NseSBibG9ja2luZyBib3RoIHBy
b2Nlc3NlcworICAgICAgICBmb3IgdGhlIGVudGlyZSB0aW1lb3V0LgorCisyMDE0LTA2LTEwICBU
aW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwogICAgICAgICBGYWN0
b3IgcmVwZWF0ZWQgQ0ZSdW5Mb29wT2JzZXJ2ZXIgY29kZSBvdXQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzY5MAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggZjI0MGQwNy4uM2E4OTI1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzYsNiArMzYsMjQg
QEAKIAogbmFtZXNwYWNlIElQQyB7CiAKK3N0cnVjdCBXYWl0Rm9yTWVzc2FnZVN0YXRlIHsKKyAg
ICBXYWl0Rm9yTWVzc2FnZVN0YXRlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVu
c2lnbmVkIHdhaXRGb3JNZXNzYWdlRmxhZ3MpCisgICAgICAgIDogbWVzc2FnZVJlY2VpdmVyTmFt
ZShtZXNzYWdlUmVjZWl2ZXJOYW1lKQorICAgICAgICAsIG1lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1l
KQorICAgICAgICAsIGRlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkKKyAgICAgICAgLCB3YWl0
Rm9yTWVzc2FnZUZsYWdzKHdhaXRGb3JNZXNzYWdlRmxhZ3MpCisgICAgeyB9CisKKyAgICBTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZTsKKyAgICBTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZU5hbWU7CisgICAgdWludDY0X3QgZGVzdGluYXRpb25JRDsKKworICAgIHVuc2lnbmVkIHdh
aXRGb3JNZXNzYWdlRmxhZ3M7CisgICAgYm9vbCBtZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkID0g
ZmFsc2U7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZXI7Cit9
OworCiBjbGFzcyBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPENvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTeW5jTWVzc2FnZVN0YXRlPiBnZXRPckNyZWF0ZShSdW5Mb29w
Jik7CkBAIC0yMjUsNyArMjQzLDcgQEAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCogY2xpZW50LCBSdW4KICAgICAsIG1f
aW5EaXNwYXRjaE1lc3NhZ2VDb3VudCgwKQogICAgICwgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtl
ZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlDb3VudCgwKQogICAgICwgbV9kaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoZmFsc2UpCi0gICAgLCBtX21lc3NhZ2VXYWl0aW5nSW50ZXJydXB0
ZWRCeUNsb3NlZENvbm5lY3Rpb24oZmFsc2UpCisgICAgLCBtX3dhaXRpbmdGb3JNZXNzYWdlKG51
bGxwdHIpCiAgICAgLCBtX3N5bmNNZXNzYWdlU3RhdGUoU3luY01lc3NhZ2VTdGF0ZTo6Z2V0T3JD
cmVhdGUoY2xpZW50UnVuTG9vcCkpCiAgICAgLCBtX3Nob3VsZFdhaXRGb3JTeW5jUmVwbGllcyh0
cnVlKQogewpAQCAtMzcxLDggKzM4OSwxMCBAQCBib29sIENvbm5lY3Rpb246OnNlbmRTeW5jUmVw
bHkoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQogICAgIHJldHVybiBz
ZW5kTWVzc2FnZShzdGQ6Om1vdmUoZW5jb2RlcikpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZURlY29kZXI+IENvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91dCkKK3N0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0
aW1lb3V0LCB1bnNpZ25lZCB3YWl0Rm9yTWVzc2FnZUZsYWdzKQogeworICAgIEFTU0VSVCgmbV9j
bGllbnRSdW5Mb29wID09ICZSdW5Mb29wOjpjdXJyZW50KCkpOworCiAgICAgLy8gRmlyc3QsIGNo
ZWNrIGlmIHRoaXMgbWVzc2FnZSBpcyBhbHJlYWR5IGluIHRoZSBpbmNvbWluZyBtZXNzYWdlcyBx
dWV1ZS4KICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2luY29taW5nTWVzc2Fn
ZXNMb2NrKTsKQEAgLTM4OSw0NSArNDA5LDM2IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVj
b2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBzdGQ6OnBhaXI8c3RkOjpwYWlyPFN0cmluZ1JlZmVyZW5j
ZSwgU3RyaW5nUmVmZXJlbmNlPiwgdWludDY0X3Q+IG1lc3NhZ2VBbmREZXN0aW5hdGlvbihzdGQ6
Om1ha2VfcGFpcihzdGQ6Om1ha2VfcGFpcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFt
ZSksIGRlc3RpbmF0aW9uSUQpKTsKLSAgICAKKyAgICBXYWl0Rm9yTWVzc2FnZVN0YXRlIHdhaXRp
bmdGb3JNZXNzYWdlKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlv
bklELCB3YWl0Rm9yTWVzc2FnZUZsYWdzKTsKKwogICAgIHsKICAgICAgICAgc3RkOjpsb2NrX2d1
YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAotICAgICAgICAv
LyBXZSBkb24ndCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRzIHdhaXQgZm9yIHRoZSBz
YW1lIG1lc3NhZ2UuCi0gICAgICAgIEFTU0VSVCghbV93YWl0Rm9yTWVzc2FnZU1hcC5jb250YWlu
cyhtZXNzYWdlQW5kRGVzdGluYXRpb24pKTsKLSAgICAKLSAgICAgICAgLy8gSW5zZXJ0IG91ciBw
ZW5kaW5nIHdhaXQuCi0gICAgICAgIG1fd2FpdEZvck1lc3NhZ2VNYXAuc2V0KG1lc3NhZ2VBbmRE
ZXN0aW5hdGlvbiwgbnVsbHB0cik7CisgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgaGF2aW5n
IG11bHRpcGxlIGNsaWVudHMgd2FpdGluZyBmb3IgbWVzc2FnZXMuCisgICAgICAgIEFTU0VSVCgh
bV93YWl0aW5nRm9yTWVzc2FnZSk7CisKKyAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZSA9ICZ3
YWl0aW5nRm9yTWVzc2FnZTsKICAgICB9CiAgICAgCiAgICAgLy8gTm93IHdhaXQgZm9yIGl0IHRv
IGJlIHNldC4KICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IGxvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAotICAgICAgICBhdXRvIGl0
ID0gbV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKG1lc3NhZ2VBbmREZXN0aW5hdGlvbik7Ci0gICAg
ICAgIGlmIChpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdl
RGVjb2Rlcj4gZGVjb2RlciA9IHN0ZDo6bW92ZShpdC0+dmFsdWUpOwotICAgICAgICAgICAgbV93
YWl0Rm9yTWVzc2FnZU1hcC5yZW1vdmUoaXQpOwotCisgICAgICAgIGlmIChtX3dhaXRpbmdGb3JN
ZXNzYWdlLT5kZWNvZGVyKSB7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURl
Y29kZXI+IGRlY29kZXIgPSBzdGQ6Om1vdmUobV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2Rlcik7
CisgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlID0gbnVsbHB0cjsKICAgICAgICAgICAg
IHJldHVybiBkZWNvZGVyOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTm93IHdlIHdhaXQuCiAg
ICAgICAgIHN0ZDo6Y3Zfc3RhdHVzIHN0YXR1cyA9IG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24u
d2FpdF9mb3IobG9jaywgdGltZW91dCk7Ci0gICAgICAgIGlmIChzdGF0dXMgPT0gc3RkOjpjdl9z
dGF0dXM6OnRpbWVvdXQgfHwgbV9tZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkQnlDbG9zZWRDb25u
ZWN0aW9uKSB7Ci0gICAgICAgICAgICAvLyBXZSB0aW1lZCBvdXQgb3IgbG9zdCBvdXIgY29ubmVj
dGlvbiwgbm93IHJlbW92ZSB0aGUgcGVuZGluZyB3YWl0LgotICAgICAgICAgICAgbV93YWl0Rm9y
TWVzc2FnZU1hcC5yZW1vdmUobWVzc2FnZUFuZERlc3RpbmF0aW9uKTsKLQotICAgICAgICAgICAg
Ly8gSWYgdGhlcmUgYXJlIG5vIG1vcmUgd2FpdGVycywgcmVzZXQgbV9tZXNzYWdlV2FpdGluZ0lu
dGVycnVwdGVkQnlDbG9zZWRDb25uZWN0aW9uIHdoaWxlIHdlIGFscmVhZHkgaG9sZAotICAgICAg
ICAgICAgLy8gdGhlIG5lY2Vzc2FyeSBsb2NrIGluIGNhc2UgdGhlIGNvbm5lY3Rpb24gaXMgbGF0
ZXIgcmVvcGVuZWQuCi0gICAgICAgICAgICBpZiAobV93YWl0Rm9yTWVzc2FnZU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgbV9tZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkQnlDbG9zZWRD
b25uZWN0aW9uID0gZmFsc2U7Ci0KKyAgICAgICAgLy8gV2UgdGltZWQgb3V0LCBsb3N0IG91ciBj
b25uZWN0aW9uLCBvciBhIHN5bmMgbWVzc2FnZSBjYW1lIGluIHdpdGggSW50ZXJydXB0V2FpdGlu
Z0lmU3luY01lc3NhZ2VBcnJpdmVzLCBzbyBzdG9wIHdhaXRpbmcuCisgICAgICAgIGlmIChzdGF0
dXMgPT0gc3RkOjpjdl9zdGF0dXM6OnRpbWVvdXQgfHwgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVz
c2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAg
ICAgfQogCisgICAgbV93YWl0aW5nRm9yTWVzc2FnZSA9IG51bGxwdHI7CisKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApAQCAtNjQ3LDE0ICs2NTgsMTcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9j
ZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2Fn
ZSkKICAgICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKG1fd2Fp
dEZvck1lc3NhZ2VNdXRleCk7CiAKLSAgICAgICAgYXV0byBpdCA9IG1fd2FpdEZvck1lc3NhZ2VN
YXAuZmluZChzdGQ6Om1ha2VfcGFpcihzdGQ6Om1ha2VfcGFpcihtZXNzYWdlLT5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlv
bklEKCkpKTsKLSAgICAgICAgaWYgKGl0ICE9IG1fd2FpdEZvck1lc3NhZ2VNYXAuZW5kKCkpIHsK
LSAgICAgICAgICAgIGl0LT52YWx1ZSA9IHN0ZDo6bW92ZShtZXNzYWdlKTsKLSAgICAgICAgICAg
IEFTU0VSVChpdC0+dmFsdWUpOwotICAgICAgICAKKyAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1l
c3NhZ2UgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSA9PSBtZXNz
YWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgJiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2Fn
ZU5hbWUgPT0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSAmJiBtX3dhaXRpbmdGb3JNZXNzYWdlLT5k
ZXN0aW5hdGlvbklEID09IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSkgeworICAgICAgICAgICAg
bV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVjb2RlciA9IHN0ZDo6bW92ZShtZXNzYWdlKTsKKyAgICAg
ICAgICAgIEFTU0VSVChtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAgICAg
IG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24ubm90aWZ5X29uZSgpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UgJiYgKG1f
d2FpdGluZ0Zvck1lc3NhZ2UtPndhaXRGb3JNZXNzYWdlRmxhZ3MgJiBJbnRlcnJ1cHRXYWl0aW5n
SWZTeW5jTWVzc2FnZUFycml2ZXMpICYmIG1lc3NhZ2UtPmlzU3luY01lc3NhZ2UoKSkgeworICAg
ICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2FnZVdhaXRpbmdJbnRlcnJ1cHRlZCA9
IHRydWU7CisgICAgICAgICAgICBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uLm5vdGlmeV9vbmUo
KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGVucXVldWVJbmNvbWluZ01lc3NhZ2Uoc3RkOjpt
b3ZlKG1lc3NhZ2UpKTsKQEAgLTY4NSw3ICs2OTksOCBAQCB2b2lkIENvbm5lY3Rpb246OmNvbm5l
Y3Rpb25EaWRDbG9zZSgpCiAKICAgICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11
dGV4PiBsb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7Ci0gICAgICAgIG1fbWVzc2FnZVdhaXRp
bmdJbnRlcnJ1cHRlZEJ5Q2xvc2VkQ29ubmVjdGlvbiA9IHRydWU7CisgICAgICAgIGlmIChtX3dh
aXRpbmdGb3JNZXNzYWdlKQorICAgICAgICAgICAgbV93YWl0aW5nRm9yTWVzc2FnZS0+bWVzc2Fn
ZVdhaXRpbmdJbnRlcnJ1cHRlZCA9IHRydWU7CiAgICAgfQogICAgIG1fd2FpdEZvck1lc3NhZ2VD
b25kaXRpb24ubm90aWZ5X2FsbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uaAppbmRleCBhNTE2YzFmLi5hOWFjZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKQEAgLTU1LDYgKzU1LDggQEAgY2xhc3MgUnVuTG9vcDsKIAogbmFt
ZXNwYWNlIElQQyB7CiAKK3N0cnVjdCBXYWl0Rm9yTWVzc2FnZVN0YXRlOworCiBlbnVtIE1lc3Nh
Z2VTZW5kRmxhZ3MgewogICAgIC8vIFdoZXRoZXIgdGhpcyBtZXNzYWdlIHNob3VsZCBiZSBkaXNw
YXRjaGVkIHdoZW4gd2FpdGluZyBmb3IgYSBzeW5jIHJlcGx5LgogICAgIC8vIFRoaXMgaXMgdGhl
IGRlZmF1bHQgZm9yIHN5bmNocm9ub3VzIG1lc3NhZ2VzLgpAQCAtNjgsNiArNzAsMTEgQEAgZW51
bSBTeW5jTWVzc2FnZVNlbmRGbGFncyB7CiAgICAgLy8gRklYTUUgKDEyNjAyMSk6IFJlbW92ZSB3
aGVuIG5vIHBsYXRmb3JtcyBuZWVkIHRvIHN1cHBvcnQgdGhpcy4KICAgICBTcGluUnVuTG9vcFdo
aWxlV2FpdGluZ0ZvclJlcGx5ID0gMSA8PCAxLAogfTsKKworZW51bSBXYWl0Rm9yTWVzc2FnZUZs
YWdzIHsKKyAgICAvLyBVc2UgdGhpcyB0byBtYWtlIHdhaXRGb3JNZXNzYWdlIGJlIGludGVycnVw
dGVkIGltbWVkaWF0ZWx5IGJ5IGFueSBpbmNvbWluZyBzeW5jIG1lc3NhZ2VzLgorICAgIEludGVy
cnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyA9IDEgPDwgMCwKK307CiAgICAgCiAjZGVm
aW5lIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIGNvbm5lY3Rpb24pIGRvIFwKICAgICBp
ZiAoIShhc3NlcnRpb24pKSB7IFwKQEAgLTE2NCw3ICsxNzEsNyBAQCBwdWJsaWM6CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIHVuc2lnbmVkIG1lc3NhZ2VTZW5kRmxhZ3MgPSAwKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IHRpbWVvdXQgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjptYXgoKSwgdW5zaWduZWQgc3lu
Y1NlbmRGbGFncyA9IDApOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFu
ZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgc3RkOjpjaHJvbm86
Om1pbGxpc2Vjb25kcyB0aW1lb3V0KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHdh
aXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91dCwgdW5zaWduZWQgd2FpdEZvck1lc3NhZ2VGbGFn
cyA9IDApOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBjcmVhdGVTeW5j
TWVzc2FnZUVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3Qm
IHN5bmNSZXF1ZXN0SUQpOwogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1l
c3NhZ2VFbmNvZGVyPiwgdW5zaWduZWQgbWVzc2FnZVNlbmRGbGFncyA9IDApOwpAQCAtMTkzLDcg
KzIwMCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9jbGllbnQ7IH0KICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+
IHdhaXRGb3JNZXNzYWdlKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHN0ZDo6Y2hy
b25vOjptaWxsaXNlY29uZHMgdGltZW91dCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VE
ZWNvZGVyPiB3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQsIHVuc2lnbmVkIHdhaXRGb3JNZXNzYWdl
RmxhZ3MpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gd2FpdEZv
clN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MpOwogCkBAIC0yNTMsOCArMjYwLDgg
QEAgcHJpdmF0ZToKICAgICAKICAgICBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZSBtX3dhaXRGb3JN
ZXNzYWdlQ29uZGl0aW9uOwogICAgIHN0ZDo6bXV0ZXggbV93YWl0Rm9yTWVzc2FnZU11dGV4Owot
ICAgIGJvb2wgbV9tZXNzYWdlV2FpdGluZ0ludGVycnVwdGVkQnlDbG9zZWRDb25uZWN0aW9uOwot
ICAgIEhhc2hNYXA8c3RkOjpwYWlyPHN0ZDo6cGFpcjxTdHJpbmdSZWZlcmVuY2UsIFN0cmluZ1Jl
ZmVyZW5jZT4sIHVpbnQ2NF90Piwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPj4gbV93
YWl0Rm9yTWVzc2FnZU1hcDsKKworICAgIFdhaXRGb3JNZXNzYWdlU3RhdGUqIG1fd2FpdGluZ0Zv
ck1lc3NhZ2U7CiAKICAgICAvLyBSZXByZXNlbnRzIGEgc3luYyByZXF1ZXN0IGZvciB3aGljaCB3
ZSdyZSB3YWl0aW5nIG9uIGEgcmVwbHkuCiAgICAgc3RydWN0IFBlbmRpbmdTeW5jUmVwbHkgewpA
QCAtMzU3LDkgKzM2NCw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6
c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICByZXR1cm4gcmVw
bHlEZWNvZGVyLT5kZWNvZGUocmVwbHkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29s
IENvbm5lY3Rpb246OndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91dCkKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGJvb2wgQ29ubmVjdGlvbjo6d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHko
dWludDY0X3QgZGVzdGluYXRpb25JRCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0
LCB1bnNpZ25lZCB3YWl0Rm9yTWVzc2FnZUZsYWdzKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IHdhaXRGb3JNZXNzYWdlKFQ6OnJlY2VpdmVyTmFtZSgp
LCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRGVjb2Rlcj4gZGVjb2RlciA9IHdhaXRGb3JNZXNzYWdlKFQ6OnJlY2VpdmVyTmFt
ZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHdhaXRGb3JNZXNzYWdlRmxh
Z3MpOwogICAgIGlmICghZGVjb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCg==
</data>
<flag name="review"
          id="257388"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>