From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D77A3454F5 for ; Wed, 29 Nov 2023 19:36:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1F2B168D03D; Wed, 29 Nov 2023 21:36:09 +0200 (EET) Received: from mail-ot1-f50.google.com (mail-ot1-f50.google.com [209.85.210.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 00A8868CBF7 for ; Wed, 29 Nov 2023 21:36:02 +0200 (EET) Received: by mail-ot1-f50.google.com with SMTP id 46e09a7af769-6d856210057so118202a34.1 for ; Wed, 29 Nov 2023 11:36:02 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701286561; x=1701891361; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GkMQL5qcAwSeeqwlatIFoA+u8P7k7K1to6tJ0UpJV1M=; b=ewd8NckdYyTF4qqoAum4JeRCGVjxlflwAgc9PljO/VrVQWsZwY2gq7h1n1RGFaw/5u YaMCvsZzP+qJsx0/ZUOc2NE4thR0hVfhz9AQdecJ58uEYqIsUvEwQ6qm2Eegnwp/Jxy6 rSszJN1tzbhpyJCnza96ntZ1fwN/VYLQ2l1TQuD+uAA63nHT4ewpFCHFnlO1NOsJX3oJ gcl2ZHVOsmnsWf0wiQPR3JwejLcyEGeBICYj+UYF/WHnd9ZG7wDBVIxfn7RpTDZZeV3k GTlodgb3Xy6+sEMEU0gfvYkWwfJthbXzNg5Xu56IHGOjyhK0+b/zzL1SSXR1j9860S/e JO7A== X-Gm-Message-State: AOJu0YxXBilfmWNk7V+TCf+8FZhN4FXKoNSGEeE/FH1hWF1RjeokFp5I ixf3T/NLMz3wdqnQQbk3f9/fojfoof6lW1y/QLnA4v53IjZai/Lfe7L1hw== X-Google-Smtp-Source: AGHT+IFATWN+6lpIB+u8M4Y192hcLJCoEvWEXtKH45DYnu+P04KHqtL9C7HyvP2rxkfbminT4feOeCk5zjA7L0Kl15s= X-Received: by 2002:a05:6830:34a8:b0:6d8:18b3:2c62 with SMTP id c40-20020a05683034a800b006d818b32c62mr17220216otu.17.1701286560498; Wed, 29 Nov 2023 11:36:00 -0800 (PST) MIME-Version: 1.0 References: <20230330200714.36221-1-tom@jwplayer.com> In-Reply-To: <20230330200714.36221-1-tom@jwplayer.com> Date: Wed, 29 Nov 2023 14:35:49 -0500 Message-ID: To: ffmpeg-devel@ffmpeg.org Subject: Re: [FFmpeg-devel] [PATCH] avformat/matroskadec: Prevent expensive get_cue_desc lookups X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Tom Boshoven via ffmpeg-devel Reply-To: FFmpeg development discussions and patches Cc: Tom Boshoven Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gVGh1LCBNYXIgMzAsIDIwMjMgYXQgNDowN+KAr1BNIFRvbSBCb3Nob3ZlbiA8dG9tQGp3cGxh eWVyLmNvbT4gd3JvdGU6Cj4KPiBEdWUgdG8gdGhlIHdheSB0aGUgYmFuZHdpZHRoIGVzdGltYXRp b24gY29kZSB3b3JrcywgdGhlIGdldF9jdWVfZGVzYwo+IGZ1bmN0aW9uIHdhcyBjYWxsZWQgbWFu eSB0aW1lcyBvdmVyLgo+IFRoaXMgZnVuY3Rpb24gZGlkIGEgZnJvbS1zY3JhdGNoIGxvb2t1cCB1 c2luZyBhIHRpbWVzdGFtcC4KPiBUaGlzIGxvb2t1cCB3YXMgZG9uZSB1c2luZyBsaW5lYXIgaXRl cmF0aW9uIChPKG4pKSwgcmVzdWx0aW5nIGluCj4gc2lnbmlmaWNhbnQgb3ZlcmhlYWQgd2hlbiBt YW55IGN1ZXMgZXhpc3QuCj4KPiBUaGlzIGNoYW5nZSB1c2VzIGZmX2luZGV4X3NlYXJjaF90aW1l c3RhbXAgKGJpbmFyeSBzZWFyY2gsIE8obG9nIG4pKQo+IGZvciB0aGUgbG9va3VwLgo+IEFkZGl0 aW9uYWxseSwgdGhlIGxvb2t1cCBpcyBwcmV2ZW50ZWQgZW50aXJlbHkgaW4gbW9zdCBjYXNlcyBi eQo+IG1haW50YWluaW5nIHRoZSBpbmRleGVzIG9mIHRoZSBjdWVzIChPKDEpKS4KPgo+IFNpZ25l ZC1vZmYtYnk6IFRvbSBCb3Nob3ZlbiA8dG9tQGp3cGxheWVyLmNvbT4KPiAtLS0KPiAgbGliYXZm b3JtYXQvbWF0cm9za2FkZWMuYyB8IDY0ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25z KC0pCj4KPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbWF0cm9za2FkZWMuYyBiL2xpYmF2Zm9y bWF0L21hdHJvc2thZGVjLmMKPiBpbmRleCAzYTg4OGUzYWRhLi5kOTc0OTQ0OTQ1IDEwMDY0NAo+ IC0tLSBhL2xpYmF2Zm9ybWF0L21hdHJvc2thZGVjLmMKPiArKysgYi9saWJhdmZvcm1hdC9tYXRy b3NrYWRlYy5jCj4gQEAgLTQwMzgsMzUgKzQwMzgsNDUgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+ICAg ICAgaW50NjRfdCBlbmRfb2Zmc2V0Owo+ICB9IEN1ZURlc2M7Cj4KPiAtLyogVGhpcyBmdW5jdGlv biBzZWFyY2hlcyBhbGwgdGhlIEN1ZXMgYW5kIHJldHVybnMgdGhlIEN1ZURlc2MgY29ycmVzcG9u ZGluZyB0bwo+IC0gKiB0aGUgdGltZXN0YW1wIHRzLiBSZXR1cm5lZCBDdWVEZXNjIHdpbGwgYmUg c3VjaCB0aGF0IHN0YXJ0X3RpbWVfbnMgPD0gdHMgPAo+IC0gKiBlbmRfdGltZV9ucy4gQWxsIDQg ZmllbGRzIHdpbGwgYmUgc2V0IHRvIC0xIGlmIHRzID49IGZpbGUncyBkdXJhdGlvbiBvcgo+IC0g KiBpZiBhbiBlcnJvciBvY2N1cnJlZC4KPiArLyoqCj4gKyAqIEZpbmQgdGhlIGluZGV4IG9mIHRo ZSBjdWUgY29ycmVzcG9uZGluZyB0byB0aGUgdGltZXN0YW1wIHRzLgo+ICAgKi8KPiAtc3RhdGlj IEN1ZURlc2MgZ2V0X2N1ZV9kZXNjKEFWRm9ybWF0Q29udGV4dCAqcywgaW50NjRfdCB0cywgaW50 NjRfdCBjdWVzX3N0YXJ0KSB7Cj4gK3N0YXRpYyBpbnQgZ2V0X2N1ZV9pbmRleChBVkZvcm1hdENv bnRleHQgKnMsIGludDY0X3QgdHMpIHsKPiArICAgIE1hdHJvc2thRGVtdXhDb250ZXh0ICptYXRy b3NrYSA9IHMtPnByaXZfZGF0YTsKPiArICAgIEZGU3RyZWFtICpjb25zdCBzdGkgPSBmZnN0cmVh bShzLT5zdHJlYW1zWzBdKTsKPiArCj4gKyAgICBpZiAodHMgPj0gKGludDY0X3QpKG1hdHJvc2th LT5kdXJhdGlvbiAqIG1hdHJvc2thLT50aW1lX3NjYWxlKSkKPiArICAgICAgICByZXR1cm4gLTE7 Cj4gKwo+ICsgICAgLy8gTG9vayB1cCB0aGUgaW5kZXggZW50cnkgY29ycmVzcG9uZGluZyB0byB0 aGUgdGltZXN0YW1wIChkaXZpZGluZyBieSB0aW1lc2NhbGUpCj4gKyAgICByZXR1cm4gZmZfaW5k ZXhfc2VhcmNoX3RpbWVzdGFtcCgKPiArICAgICAgICBzdGktPmluZGV4X2VudHJpZXMsCj4gKyAg ICAgICAgc3RpLT5uYl9pbmRleF9lbnRyaWVzLAo+ICsgICAgICAgIHRzIC8gbWF0cm9za2EtPnRp bWVfc2NhbGUsCj4gKyAgICAgICAgQVZTRUVLX0ZMQUdfQU5ZIHwgQVZTRUVLX0ZMQUdfQkFDS1dB UkQKPiArICAgICk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBHZXQgdGhlIEN1ZURlc2MgZm9yIGEg c3BlY2lmaWMgaW5kZXguCj4gKyAqIEZvciBhIGdpdmVuIHRpbWVzdGFtcCwgdGhlIGluZGV4IGNh biBiZSBvYnRhaW5lZCB1c2luZyBnZXRfY3VlX2luZGV4Lgo+ICsgKi8KPiArc3RhdGljIEN1ZURl c2MgZ2V0X2N1ZV9kZXNjX2Zyb21faW5kZXgoQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQgaWR4LCBp bnQ2NF90IGN1ZXNfc3RhcnQpIHsKPiAgICAgIE1hdHJvc2thRGVtdXhDb250ZXh0ICptYXRyb3Nr YSA9IHMtPnByaXZfZGF0YTsKPiAgICAgIEZGU3RyZWFtICpjb25zdCBzdGkgPSBmZnN0cmVhbShz LT5zdHJlYW1zWzBdKTsKPiAgICAgIEFWSW5kZXhFbnRyeSAqY29uc3QgaW5kZXhfZW50cmllcyA9 IHN0aS0+aW5kZXhfZW50cmllczsKPiAgICAgIGludCBuYl9pbmRleF9lbnRyaWVzID0gc3RpLT5u Yl9pbmRleF9lbnRyaWVzOwo+ICAgICAgQ3VlRGVzYyBjdWVfZGVzYzsKPiAtICAgIGludCBpOwo+ Cj4gLSAgICBpZiAodHMgPj0gKGludDY0X3QpKG1hdHJvc2thLT5kdXJhdGlvbiAqIG1hdHJvc2th LT50aW1lX3NjYWxlKSkKPiArICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBuYl9pbmRleF9lbnRy aWVzKSB7Cj4gICAgICAgICAgcmV0dXJuIChDdWVEZXNjKSB7LTEsIC0xLCAtMSwgLTF9Owo+IC0g ICAgZm9yIChpID0gMTsgaSA8IG5iX2luZGV4X2VudHJpZXM7IGkrKykgewo+IC0gICAgICAgIGlm IChpbmRleF9lbnRyaWVzW2kgLSAxXS50aW1lc3RhbXAgKiBtYXRyb3NrYS0+dGltZV9zY2FsZSA8 PSB0cyAmJgo+IC0gICAgICAgICAgICBpbmRleF9lbnRyaWVzW2ldLnRpbWVzdGFtcCAqIG1hdHJv c2thLT50aW1lX3NjYWxlID4gdHMpIHsKPiAtICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICAg fQo+ICAgICAgfQo+IC0gICAgLS1pOwo+IC0gICAgaWYgKGluZGV4X2VudHJpZXNbaV0udGltZXN0 YW1wID4gbWF0cm9za2EtPmR1cmF0aW9uKQo+IC0gICAgICAgIHJldHVybiAoQ3VlRGVzYykgey0x LCAtMSwgLTEsIC0xfTsKPiAtICAgIGN1ZV9kZXNjLnN0YXJ0X3RpbWVfbnMgPSBpbmRleF9lbnRy aWVzW2ldLnRpbWVzdGFtcCAqIG1hdHJvc2thLT50aW1lX3NjYWxlOwo+IC0gICAgY3VlX2Rlc2Mu c3RhcnRfb2Zmc2V0ID0gaW5kZXhfZW50cmllc1tpXS5wb3MgLSBtYXRyb3NrYS0+c2VnbWVudF9z dGFydDsKPiAtICAgIGlmIChpICE9IG5iX2luZGV4X2VudHJpZXMgLSAxKSB7Cj4gLSAgICAgICAg Y3VlX2Rlc2MuZW5kX3RpbWVfbnMgPSBpbmRleF9lbnRyaWVzW2kgKyAxXS50aW1lc3RhbXAgKiBt YXRyb3NrYS0+dGltZV9zY2FsZTsKPiAtICAgICAgICBjdWVfZGVzYy5lbmRfb2Zmc2V0ID0gaW5k ZXhfZW50cmllc1tpICsgMV0ucG9zIC0gbWF0cm9za2EtPnNlZ21lbnRfc3RhcnQ7Cj4gKwo+ICsg ICAgY3VlX2Rlc2Muc3RhcnRfdGltZV9ucyA9IGluZGV4X2VudHJpZXNbaWR4XS50aW1lc3RhbXAg KiBtYXRyb3NrYS0+dGltZV9zY2FsZTsKPiArICAgIGN1ZV9kZXNjLnN0YXJ0X29mZnNldCA9IGlu ZGV4X2VudHJpZXNbaWR4XS5wb3MgLSBtYXRyb3NrYS0+c2VnbWVudF9zdGFydDsKPiArICAgIGlm IChpZHggIT0gbmJfaW5kZXhfZW50cmllcyAtIDEpIHsKPiArICAgICAgICBjdWVfZGVzYy5lbmRf dGltZV9ucyA9IGluZGV4X2VudHJpZXNbaWR4ICsgMV0udGltZXN0YW1wICogbWF0cm9za2EtPnRp bWVfc2NhbGU7Cj4gKyAgICAgICAgY3VlX2Rlc2MuZW5kX29mZnNldCA9IGluZGV4X2VudHJpZXNb aWR4ICsgMV0ucG9zIC0gbWF0cm9za2EtPnNlZ21lbnRfc3RhcnQ7Cj4gICAgICB9IGVsc2Ugewo+ ICAgICAgICAgIGN1ZV9kZXNjLmVuZF90aW1lX25zID0gbWF0cm9za2EtPmR1cmF0aW9uICogbWF0 cm9za2EtPnRpbWVfc2NhbGU7Cj4gICAgICAgICAgLy8gRklYTUU6IHRoaXMgbmVlZHMgc3BlY2lh bCBoYW5kbGluZyBmb3IgZmlsZXMgd2hlcmUgQ3VlcyBhcHBlYXIKPiBAQCAtNDE0MCw3ICs0MTUw LDggQEAgc3RhdGljIGludCBidWZmZXJfc2l6ZV9hZnRlcl90aW1lX2Rvd25sb2FkZWQoaW50NjRf dCB0aW1lX25zLCBkb3VibGUgc2VhcmNoX3NlYywKPiAgICAgIGludDY0X3QgdGltZV90b19zZWFy Y2hfbnMgPSAoaW50NjRfdCkoc2VhcmNoX3NlYyAqIG5hbm9fc2Vjb25kc19wZXJfc2Vjb25kKTsK PiAgICAgIGludDY0X3QgZW5kX3RpbWVfbnMgPSB0aW1lX25zICsgdGltZV90b19zZWFyY2hfbnM7 Cj4gICAgICBkb3VibGUgc2VjX2Rvd25sb2FkZWQgPSAwLjA7Cj4gLSAgICBDdWVEZXNjIGRlc2Nf Y3VyciA9IGdldF9jdWVfZGVzYyhzLCB0aW1lX25zLCBjdWVzX3N0YXJ0KTsKPiArICAgIGludCBj dWVfaWR4ID0gZ2V0X2N1ZV9pbmRleChzLCB0aW1lX25zKTsKPiArICAgIEN1ZURlc2MgZGVzY19j dXJyID0gZ2V0X2N1ZV9kZXNjX2Zyb21faW5kZXgocywgY3VlX2lkeCwgY3Vlc19zdGFydCk7Cj4g ICAgICBpZiAoZGVzY19jdXJyLnN0YXJ0X3RpbWVfbnMgPT0gLTEpCj4gICAgICAgIHJldHVybiAt MTsKPiAgICAgICpzZWNfdG9fZG93bmxvYWQgPSAwLjA7Cj4gQEAgLTQxNjgsNyArNDE3OSw3IEBA IHN0YXRpYyBpbnQgYnVmZmVyX3NpemVfYWZ0ZXJfdGltZV9kb3dubG9hZGVkKGludDY0X3QgdGlt ZV9ucywgZG91YmxlIHNlYXJjaF9zZWMsCj4gICAgICAgIH0KPgo+ICAgICAgICAvLyBHZXQgdGhl IG5leHQgQ3VlLgo+IC0gICAgICBkZXNjX2N1cnIgPSBnZXRfY3VlX2Rlc2MocywgZGVzY19jdXJy LmVuZF90aW1lX25zLCBjdWVzX3N0YXJ0KTsKPiArICAgICAgZGVzY19jdXJyID0gZ2V0X2N1ZV9k ZXNjX2Zyb21faW5kZXgocywgKytjdWVfaWR4LCBjdWVzX3N0YXJ0KTsKPiAgICAgIH0KPgo+ICAg ICAgd2hpbGUgKGRlc2NfY3Vyci5zdGFydF90aW1lX25zICE9IC0xKSB7Cj4gQEAgLTQxOTcsNyAr NDIwOCw3IEBAIHN0YXRpYyBpbnQgYnVmZmVyX3NpemVfYWZ0ZXJfdGltZV9kb3dubG9hZGVkKGlu dDY0X3QgdGltZV9ucywgZG91YmxlIHNlYXJjaF9zZWMsCj4gICAgICAgICAgICAgIGJyZWFrOwo+ ICAgICAgICAgIH0KPgo+IC0gICAgICAgIGRlc2NfY3VyciA9IGdldF9jdWVfZGVzYyhzLCBkZXNj X2N1cnIuZW5kX3RpbWVfbnMsIGN1ZXNfc3RhcnQpOwo+ICsgICAgICAgIGRlc2NfY3VyciA9IGdl dF9jdWVfZGVzY19mcm9tX2luZGV4KHMsICsrY3VlX2lkeCwgY3Vlc19zdGFydCk7Cj4gICAgICB9 Cj4gICAgICAqYnVmZmVyID0gKmJ1ZmZlciArIHNlY19kb3dubG9hZGVkOwo+ICAgICAgcmV0dXJu IHJ2Owo+IEBAIC00MjI2LDcgKzQyMzcsOCBAQCBzdGF0aWMgaW50NjRfdCB3ZWJtX2Rhc2hfbWFu aWZlc3RfY29tcHV0ZV9iYW5kd2lkdGgoQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQ2NF90Cj4gICAg ICAgICAgaW50NjRfdCB0ZW1wX3ByZWJ1ZmZlcl9ucyA9IHByZWJ1ZmZlcl9uczsKPiAgICAgICAg ICBpbnQ2NF90IHByZV9ieXRlcywgcHJlX25zOwo+ICAgICAgICAgIGRvdWJsZSBwcmVfc2VjLCBw cmVidWZmZXIsIGJpdHNfcGVyX3NlY29uZDsKPiAtICAgICAgICBDdWVEZXNjIGRlc2NfYmVnID0g Z2V0X2N1ZV9kZXNjKHMsIHRpbWVfbnMsIGN1ZXNfc3RhcnQpOwo+ICsgICAgICAgIGludCBjdWVf aWR4ID0gZ2V0X2N1ZV9pbmRleChzLCB0aW1lX25zKTsKPiArICAgICAgICBDdWVEZXNjIGRlc2Nf YmVnID0gZ2V0X2N1ZV9kZXNjX2Zyb21faW5kZXgocywgY3VlX2lkeCwgY3Vlc19zdGFydCk7Cj4K PiAgICAgICAgICAvLyBTdGFydCB3aXRoIHRoZSBmaXJzdCBDdWUuCj4gICAgICAgICAgQ3VlRGVz YyBkZXNjX2VuZCA9IGRlc2NfYmVnOwo+IEBAIC00MjM3LDcgKzQyNDksNyBAQCBzdGF0aWMgaW50 NjRfdCB3ZWJtX2Rhc2hfbWFuaWZlc3RfY29tcHV0ZV9iYW5kd2lkdGgoQVZGb3JtYXRDb250ZXh0 ICpzLCBpbnQ2NF90Cj4gICAgICAgICAgICAgIC8vIFByZWJ1ZmZlcmVkIHRoZSBlbnRpcmUgQ3Vl Lgo+ICAgICAgICAgICAgICBwcmVidWZmZXJfYnl0ZXMgKz0gZGVzY19lbmQuZW5kX29mZnNldCAt IGRlc2NfZW5kLnN0YXJ0X29mZnNldDsKPiAgICAgICAgICAgICAgdGVtcF9wcmVidWZmZXJfbnMg LT0gZGVzY19lbmQuZW5kX3RpbWVfbnMgLSBkZXNjX2VuZC5zdGFydF90aW1lX25zOwo+IC0gICAg ICAgICAgICBkZXNjX2VuZCA9IGdldF9jdWVfZGVzYyhzLCBkZXNjX2VuZC5lbmRfdGltZV9ucywg Y3Vlc19zdGFydCk7Cj4gKyAgICAgICAgICAgIGRlc2NfZW5kID0gZ2V0X2N1ZV9kZXNjX2Zyb21f aW5kZXgocywgKytjdWVfaWR4LCBjdWVzX3N0YXJ0KTsKPiAgICAgICAgICB9Cj4gICAgICAgICAg aWYgKGRlc2NfZW5kLnN0YXJ0X3RpbWVfbnMgPT0gLTEpIHsKPiAgICAgICAgICAgICAgLy8gVGhl IHByZWJ1ZmZlciBpcyBsYXJnZXIgdGhhbiB0aGUgZHVyYXRpb24uCj4gQEAgLTQyOTUsNyArNDMw Nyw3IEBAIHN0YXRpYyBpbnQ2NF90IHdlYm1fZGFzaF9tYW5pZmVzdF9jb21wdXRlX2JhbmR3aWR0 aChBVkZvcm1hdENvbnRleHQgKnMsIGludDY0X3QKPiAgICAgICAgICAgICAgICAgICAgICB9Cj4g ICAgICAgICAgICAgICAgICB9Cj4KPiAtICAgICAgICAgICAgICAgIGRlc2NfZW5kID0gZ2V0X2N1 ZV9kZXNjKHMsIGRlc2NfZW5kLmVuZF90aW1lX25zLCBjdWVzX3N0YXJ0KTsKPiArICAgICAgICAg ICAgICAgIGRlc2NfZW5kID0gZ2V0X2N1ZV9kZXNjX2Zyb21faW5kZXgocywgKytjdWVfaWR4LCBj dWVzX3N0YXJ0KTsKPiAgICAgICAgICAgICAgfSB3aGlsZSAoZGVzY19lbmQuc3RhcnRfdGltZV9u cyAhPSAtMSk7Cj4gICAgICAgICAgfQo+ICAgICAgICAgIGlmIChiYW5kd2lkdGggPCBiaXRzX3Bl cl9zZWNvbmQpIGJhbmR3aWR0aCA9IGJpdHNfcGVyX3NlY29uZDsKPiAtLQo+IDIuNDAuMAo+CgpJ cyB0aGVyZSBhbnkgaW50ZXJlc3QgaW4gdGhpcyBtYXRyb3NrYWRlYyBwZXJmb3JtYW5jZSBwYXRj aCBJIHByb3Bvc2VkCmVhcmxpZXIgdGhpcyB5ZWFyPwpIYXBweSB0byBicmluZyBpdCB1cCB0byBk YXRlLgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1w ZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZt cGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZp c2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcg d2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==