#include <stdio.h>
#include <inttypes.h>
#include "stdint.h" /* Replace with <stdint.h> if appropriate */
#undef get16bits
#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \
|| defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
#define get16bits(d) (*((const uint16_t *) (d)))
#endif
#if !defined (get16bits)
#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
+(uint32_t)(((const uint8_t *)(d))[0]) )
#endif
uint32_t SuperFastHash (const char * data, int len) {
uint32_t hash = len, tmp;
int rem;
if (len <= 0 || data == NULL) return 0;
rem = len & 3;
len >>= 2;
/* Main loop */
for (;len > 0; len--) {
hash += get16bits (data);
tmp = (get16bits (data+2) << 11) ^ hash;
hash = (hash << 16) ^ tmp;
data += 2*sizeof (uint16_t);
hash += hash >> 11;
}
/* Handle end cases */
switch (rem) {
case 3: hash += get16bits (data);
hash ^= hash << 16;
hash ^= ((signed char)data[sizeof (uint16_t)]) << 18;
hash += hash >> 11;
break;
case 2: hash += get16bits (data);
hash ^= hash << 11;
hash += hash >> 17;
break;
case 1: hash += (signed char)*data;
hash ^= hash << 10;
hash += hash >> 1;
}
/* Force "avalanching" of final 127 bits */
hash ^= hash << 3;
hash += hash >> 5;
hash ^= hash << 4;
hash += hash >> 17;
hash ^= hash << 25;
hash += hash >> 6;
return hash;
}
int main(void) {
//char arr[3][100] = {"2cb2db96-3bd0-403e-abe2-9269b3761041.Bubble",
// "9ce3c9c2-462f-4cc9-bbd7-57d656445be0.Bubble", "9ce3c9c2-462f-4cc9-bbd7-57d656445be0.Dot"};
//char chunk[] = "Microsoft.Global.OnRamp_ImportUpsell";
//uint32_t hash = SuperFastHash(chunk, strlen(chunk));
//printf("%d\n", hash);
char ids[70][100]={"2cb2db96-3bd0-403e-abe2-9269b3761041.AutoOpen", "439642fc-998d-4a64-8bb6-940ecaf6b60b.AutoOpen", "64be4f9b-3b81-4b6e-b354-0ba00d6ba485.AutoOpen","8ac719c5-140b-4bf2-a0b7-c71617f1f377.AutoOpen","8ac719c5-140b-4bf2-a0b7-c71617f1f377.gaokao.Bubble","8ac719c5-140b-4bf2-a0b7-c71617f1f377.3662f1e2-66ae-464f-b690-e7e3dc4fc662.AutoOpen","96defd79-4015-4a32-bd09-794ff72183ef.AutoOpen","96defd79-4015-4a32-bd09-794ff72183ef.128c39c6-6f70-4ce5-9d01-78978e60d666.AutoOpen","96defd79-4015-4a32-bd09-794ff72183ef.0bdde3c3-7be8-49f1-971b-e6e2cfd62643.AutoOpen","96defd79-4015-4a32-bd09-794ff72183ef.5ac63306-e962-42e6-8313-7e5a5b707d65.AutoOpen","8ac719c5-140b-4bf2-a0b7-c71617f1f377.93e5b5cd-15fc-4253-9728-d80685da304e.AutoOpen","cd4688a9-e888-48ea-ad81-76193d56b1be.AutoOpen","cd4688a9-e888-48ea-ad81-76193d56b1be.8d3a928d-e911-40f0-9852-f63f6434dc7e.AutoOpen","cd4688a9-e888-48ea-ad81-76193d56b1be.e06e75c1-a59a-4ab6-8361-e8b038e00a8c.AutoOpen","cd4688a9-e888-48ea-ad81-76193d56b1be.5b853177-a0be-4237-bda0-4fce5cd165c2.AutoOpen","b7a8e9f2-6b0d-4c5b-ae7d-8a6e1f2c7a6f.AutoOpen","b7a8e9f2-6b0d-4c5b-ae7d-8a6e1f2c7a6f.c8ebbf64-e3b8-41d9-925f-4e3754151ff7.AutoOpen","b7a8e9f2-6b0d-4c5b-ae7d-8a6e1f2c7a6f.75a774c2-6075-ae4f-09f9-e5f5d9bef6e1.AutoOpen","b7a8e9f2-6b0d-4c5b-ae7d-8a6e1f2c7a6f.a5e9f5e1-fcee-c07b-2c44-b707ded020a3.AutoOpen","2cb2db96-3bd0-403e-abe2-9269b3761041.Bubble","9ce3c9c2-462f-4cc9-bbd7-57d656445be0.Bubble","96defd79-4015-4a32-bd09-794ff72183ef.Bubble","96defd79-4015-4a32-bd09-794ff72183ef.Is1PGameDomain.Bubble","96defd79-4015-4a32-bd09-794ff72183ef.Is3PGameDomain.Bubble","64be4f9b-3b81-4b6e-b354-0ba00d6ba485.Bubble","8682d0fa-50b3-4ece-aa5b-e0b33f9919e2.Bubble","523b5ef3-0b10-4154-8b62-10b2ebd00921.Bubble","21f3388b-c2a5-4791-8f6e-a4cad6d17f4f.Bubble","439642fc-998d-4a64-8bb6-940ecaf6b60b.Bubble",
"92f1b743-e26b-433b-a1ec-912d1f0ad1fa.Bubble","bc25fcef-8964-4e72-8287-23e2b496c128.Bubble","76b926d6-3738-46bf-82d7-2ab896ddf70b.MM2UpSellPopup.Bubble","e6723537-66ff-4f4e-ab56-a4cbaddf4e0f.MM2UpSellPopup.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.Travel.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.Jobs.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.Weather.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.KnowledgeCard.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.Recipe.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.Local.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.SearchPage.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.BingHomePage.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.NTP3PCLICK.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.Finance.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.Covid.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.Sports.Bubble","2354565a-f412-4654-b89c-f92eaa9dbd20.NotifySearchPage.Bubble","cd4688a9-e888-48ea-ad81-76193d56b1be.Bubble","cd4688a9-e888-48ea-ad81-76193d56b1be.IsKnowledgeCardQuery.Bubble","cd4688a9-e888-48ea-ad81-76193d56b1be.IsTwitchNonStreamPage.Bubble",
"cd4688a9-e888-48ea-ad81-76193d56b1be.IsTwitchSubPage.Bubble","cd4688a9-e888-48ea-ad81-76193d56b1be.IsTextPage.Bubble","cd4688a9-e888-48ea-ad81-76193d56b1be.IsVideoPage.Bubble","cd4688a9-e888-48ea-ad81-76193d56b1be.IsMsnArticleUrlFromNtpP1P2.Bubble","cd4688a9-e888-48ea-ad81-76193d56b1be.IsCompeteAISite.Bubble","c8ebd871-9f47-4a0d-abd3-c1c02b4f8f53.AutoOpen","c8ebd871-9f47-4a0d-abd3-c1c02b4f8f53.2cfab14c-ebd6-4548-9401-30ab5afe5061.AutoOpen","cd4688a9-e888-48ea-ad81-76193d56b1be.AutoOpen.PersistentChat","cd4688a9-e888-48ea-ad81-76193d56b1be.AutoOpen.PDF","SAN.Personalization.ConsentPrompt","PerformanceDetectorFeatureNotification","VPNFeatureNotification","EdgeDownloadChromeInterceptDialog","ShorelinePrivilegedExperienceID","8682d0fa-50b3-4ece-aa5b-e0b33f9919e2.f5b8c725-cb2e-4c12-accd-73e500d88d47.AutoOpen","bc25fcef-8964-4e72-8287-23e2b496c128.68b8a884-6e08-46e6-8a3b-7e06ffe48ecf.AutoOpen"};
for (int i = 0; i < 70; i++)
{
// printf("%d\n", strlen(ids[i]));
uint32_t hash
= SuperFastHash
(ids
[i
], strlen(ids
[i
])); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgoKI2luY2x1ZGUgInN0ZGludC5oIiAvKiBSZXBsYWNlIHdpdGggPHN0ZGludC5oPiBpZiBhcHByb3ByaWF0ZSAqLwojdW5kZWYgZ2V0MTZiaXRzCiNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2kzODZfXykpIHx8IGRlZmluZWQoX19XQVRDT01DX18pIFwKICB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkIChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQgKF9fVFVSQk9DX18pCiNkZWZpbmUgZ2V0MTZiaXRzKGQpICgqKChjb25zdCB1aW50MTZfdCAqKSAoZCkpKQojZW5kaWYKCiNpZiAhZGVmaW5lZCAoZ2V0MTZiaXRzKQojZGVmaW5lIGdldDE2Yml0cyhkKSAoKCgodWludDMyX3QpKCgoY29uc3QgdWludDhfdCAqKShkKSlbMV0pKSA8PCA4KVwKICAgICAgICAgICAgICAgICAgICAgICArKHVpbnQzMl90KSgoKGNvbnN0IHVpbnQ4X3QgKikoZCkpWzBdKSApCiNlbmRpZgoKdWludDMyX3QgU3VwZXJGYXN0SGFzaCAoY29uc3QgY2hhciAqIGRhdGEsIGludCBsZW4pIHsKdWludDMyX3QgaGFzaCA9IGxlbiwgdG1wOwppbnQgcmVtOwoKICAgIGlmIChsZW4gPD0gMCB8fCBkYXRhID09IE5VTEwpIHJldHVybiAwOwoKICAgIHJlbSA9IGxlbiAmIDM7CiAgICBsZW4gPj49IDI7CgogICAgLyogTWFpbiBsb29wICovCiAgICBmb3IgKDtsZW4gPiAwOyBsZW4tLSkgewogICAgICAgIGhhc2ggICs9IGdldDE2Yml0cyAoZGF0YSk7CiAgICAgICAgdG1wICAgID0gKGdldDE2Yml0cyAoZGF0YSsyKSA8PCAxMSkgXiBoYXNoOwogICAgICAgIGhhc2ggICA9IChoYXNoIDw8IDE2KSBeIHRtcDsKICAgICAgICBkYXRhICArPSAyKnNpemVvZiAodWludDE2X3QpOwogICAgICAgIGhhc2ggICs9IGhhc2ggPj4gMTE7CiAgICB9CgogICAgLyogSGFuZGxlIGVuZCBjYXNlcyAqLwogICAgc3dpdGNoIChyZW0pIHsKICAgICAgICBjYXNlIDM6IGhhc2ggKz0gZ2V0MTZiaXRzIChkYXRhKTsKICAgICAgICAgICAgICAgIGhhc2ggXj0gaGFzaCA8PCAxNjsKICAgICAgICAgICAgICAgIGhhc2ggXj0gKChzaWduZWQgY2hhcilkYXRhW3NpemVvZiAodWludDE2X3QpXSkgPDwgMTg7CiAgICAgICAgICAgICAgICBoYXNoICs9IGhhc2ggPj4gMTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IGhhc2ggKz0gZ2V0MTZiaXRzIChkYXRhKTsKICAgICAgICAgICAgICAgIGhhc2ggXj0gaGFzaCA8PCAxMTsKICAgICAgICAgICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxNzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMTogaGFzaCArPSAoc2lnbmVkIGNoYXIpKmRhdGE7CiAgICAgICAgICAgICAgICBoYXNoIF49IGhhc2ggPDwgMTA7CiAgICAgICAgICAgICAgICBoYXNoICs9IGhhc2ggPj4gMTsKICAgIH0KCiAgICAvKiBGb3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFsIDEyNyBiaXRzICovCiAgICBoYXNoIF49IGhhc2ggPDwgMzsKICAgIGhhc2ggKz0gaGFzaCA+PiA1OwogICAgaGFzaCBePSBoYXNoIDw8IDQ7CiAgICBoYXNoICs9IGhhc2ggPj4gMTc7CiAgICBoYXNoIF49IGhhc2ggPDwgMjU7CiAgICBoYXNoICs9IGhhc2ggPj4gNjsKCiAgICByZXR1cm4gaGFzaDsKfQoKaW50IG1haW4odm9pZCkgewoJLy9jaGFyIGFyclszXVsxMDBdID0geyIyY2IyZGI5Ni0zYmQwLTQwM2UtYWJlMi05MjY5YjM3NjEwNDEuQnViYmxlIiwgCgkvLyAgICAgICAgICAgICAgICAgICAgICI5Y2UzYzljMi00NjJmLTRjYzktYmJkNy01N2Q2NTY0NDViZTAuQnViYmxlIiwgIjljZTNjOWMyLTQ2MmYtNGNjOS1iYmQ3LTU3ZDY1NjQ0NWJlMC5Eb3QifTsKCS8vY2hhciBjaHVua1tdID0gIk1pY3Jvc29mdC5HbG9iYWwuT25SYW1wX0ltcG9ydFVwc2VsbCI7CgkvL3VpbnQzMl90IGhhc2ggPSBTdXBlckZhc3RIYXNoKGNodW5rLCBzdHJsZW4oY2h1bmspKTsKCS8vcHJpbnRmKCIlZFxuIiwgaGFzaCk7CgljaGFyIGlkc1s3MF1bMTAwXT17IjJjYjJkYjk2LTNiZDAtNDAzZS1hYmUyLTkyNjliMzc2MTA0MS5BdXRvT3BlbiIsICI0Mzk2NDJmYy05OThkLTRhNjQtOGJiNi05NDBlY2FmNmI2MGIuQXV0b09wZW4iLCAiNjRiZTRmOWItM2I4MS00YjZlLWIzNTQtMGJhMDBkNmJhNDg1LkF1dG9PcGVuIiwiOGFjNzE5YzUtMTQwYi00YmYyLWEwYjctYzcxNjE3ZjFmMzc3LkF1dG9PcGVuIiwiOGFjNzE5YzUtMTQwYi00YmYyLWEwYjctYzcxNjE3ZjFmMzc3Lmdhb2thby5CdWJibGUiLCI4YWM3MTljNS0xNDBiLTRiZjItYTBiNy1jNzE2MTdmMWYzNzcuMzY2MmYxZTItNjZhZS00NjRmLWI2OTAtZTdlM2RjNGZjNjYyLkF1dG9PcGVuIiwiOTZkZWZkNzktNDAxNS00YTMyLWJkMDktNzk0ZmY3MjE4M2VmLkF1dG9PcGVuIiwiOTZkZWZkNzktNDAxNS00YTMyLWJkMDktNzk0ZmY3MjE4M2VmLjEyOGMzOWM2LTZmNzAtNGNlNS05ZDAxLTc4OTc4ZTYwZDY2Ni5BdXRvT3BlbiIsIjk2ZGVmZDc5LTQwMTUtNGEzMi1iZDA5LTc5NGZmNzIxODNlZi4wYmRkZTNjMy03YmU4LTQ5ZjEtOTcxYi1lNmUyY2ZkNjI2NDMuQXV0b09wZW4iLCI5NmRlZmQ3OS00MDE1LTRhMzItYmQwOS03OTRmZjcyMTgzZWYuNWFjNjMzMDYtZTk2Mi00MmU2LTgzMTMtN2U1YTViNzA3ZDY1LkF1dG9PcGVuIiwiOGFjNzE5YzUtMTQwYi00YmYyLWEwYjctYzcxNjE3ZjFmMzc3LjkzZTViNWNkLTE1ZmMtNDI1My05NzI4LWQ4MDY4NWRhMzA0ZS5BdXRvT3BlbiIsImNkNDY4OGE5LWU4ODgtNDhlYS1hZDgxLTc2MTkzZDU2YjFiZS5BdXRvT3BlbiIsImNkNDY4OGE5LWU4ODgtNDhlYS1hZDgxLTc2MTkzZDU2YjFiZS44ZDNhOTI4ZC1lOTExLTQwZjAtOTg1Mi1mNjNmNjQzNGRjN2UuQXV0b09wZW4iLCJjZDQ2ODhhOS1lODg4LTQ4ZWEtYWQ4MS03NjE5M2Q1NmIxYmUuZTA2ZTc1YzEtYTU5YS00YWI2LTgzNjEtZThiMDM4ZTAwYThjLkF1dG9PcGVuIiwiY2Q0Njg4YTktZTg4OC00OGVhLWFkODEtNzYxOTNkNTZiMWJlLjViODUzMTc3LWEwYmUtNDIzNy1iZGEwLTRmY2U1Y2QxNjVjMi5BdXRvT3BlbiIsImI3YThlOWYyLTZiMGQtNGM1Yi1hZTdkLThhNmUxZjJjN2E2Zi5BdXRvT3BlbiIsImI3YThlOWYyLTZiMGQtNGM1Yi1hZTdkLThhNmUxZjJjN2E2Zi5jOGViYmY2NC1lM2I4LTQxZDktOTI1Zi00ZTM3NTQxNTFmZjcuQXV0b09wZW4iLCJiN2E4ZTlmMi02YjBkLTRjNWItYWU3ZC04YTZlMWYyYzdhNmYuNzVhNzc0YzItNjA3NS1hZTRmLTA5ZjktZTVmNWQ5YmVmNmUxLkF1dG9PcGVuIiwiYjdhOGU5ZjItNmIwZC00YzViLWFlN2QtOGE2ZTFmMmM3YTZmLmE1ZTlmNWUxLWZjZWUtYzA3Yi0yYzQ0LWI3MDdkZWQwMjBhMy5BdXRvT3BlbiIsIjJjYjJkYjk2LTNiZDAtNDAzZS1hYmUyLTkyNjliMzc2MTA0MS5CdWJibGUiLCI5Y2UzYzljMi00NjJmLTRjYzktYmJkNy01N2Q2NTY0NDViZTAuQnViYmxlIiwiOTZkZWZkNzktNDAxNS00YTMyLWJkMDktNzk0ZmY3MjE4M2VmLkJ1YmJsZSIsIjk2ZGVmZDc5LTQwMTUtNGEzMi1iZDA5LTc5NGZmNzIxODNlZi5JczFQR2FtZURvbWFpbi5CdWJibGUiLCI5NmRlZmQ3OS00MDE1LTRhMzItYmQwOS03OTRmZjcyMTgzZWYuSXMzUEdhbWVEb21haW4uQnViYmxlIiwiNjRiZTRmOWItM2I4MS00YjZlLWIzNTQtMGJhMDBkNmJhNDg1LkJ1YmJsZSIsIjg2ODJkMGZhLTUwYjMtNGVjZS1hYTViLWUwYjMzZjk5MTllMi5CdWJibGUiLCI1MjNiNWVmMy0wYjEwLTQxNTQtOGI2Mi0xMGIyZWJkMDA5MjEuQnViYmxlIiwiMjFmMzM4OGItYzJhNS00NzkxLThmNmUtYTRjYWQ2ZDE3ZjRmLkJ1YmJsZSIsIjQzOTY0MmZjLTk5OGQtNGE2NC04YmI2LTk0MGVjYWY2YjYwYi5CdWJibGUiLAoiOTJmMWI3NDMtZTI2Yi00MzNiLWExZWMtOTEyZDFmMGFkMWZhLkJ1YmJsZSIsImJjMjVmY2VmLTg5NjQtNGU3Mi04Mjg3LTIzZTJiNDk2YzEyOC5CdWJibGUiLCI3NmI5MjZkNi0zNzM4LTQ2YmYtODJkNy0yYWI4OTZkZGY3MGIuTU0yVXBTZWxsUG9wdXAuQnViYmxlIiwiZTY3MjM1MzctNjZmZi00ZjRlLWFiNTYtYTRjYmFkZGY0ZTBmLk1NMlVwU2VsbFBvcHVwLkJ1YmJsZSIsIjIzNTQ1NjVhLWY0MTItNDY1NC1iODljLWY5MmVhYTlkYmQyMC5UcmF2ZWwuQnViYmxlIiwiMjM1NDU2NWEtZjQxMi00NjU0LWI4OWMtZjkyZWFhOWRiZDIwLkpvYnMuQnViYmxlIiwiMjM1NDU2NWEtZjQxMi00NjU0LWI4OWMtZjkyZWFhOWRiZDIwLldlYXRoZXIuQnViYmxlIiwiMjM1NDU2NWEtZjQxMi00NjU0LWI4OWMtZjkyZWFhOWRiZDIwLktub3dsZWRnZUNhcmQuQnViYmxlIiwiMjM1NDU2NWEtZjQxMi00NjU0LWI4OWMtZjkyZWFhOWRiZDIwLlJlY2lwZS5CdWJibGUiLCIyMzU0NTY1YS1mNDEyLTQ2NTQtYjg5Yy1mOTJlYWE5ZGJkMjAuTG9jYWwuQnViYmxlIiwiMjM1NDU2NWEtZjQxMi00NjU0LWI4OWMtZjkyZWFhOWRiZDIwLlNlYXJjaFBhZ2UuQnViYmxlIiwiMjM1NDU2NWEtZjQxMi00NjU0LWI4OWMtZjkyZWFhOWRiZDIwLkJpbmdIb21lUGFnZS5CdWJibGUiLCIyMzU0NTY1YS1mNDEyLTQ2NTQtYjg5Yy1mOTJlYWE5ZGJkMjAuTlRQM1BDTElDSy5CdWJibGUiLCIyMzU0NTY1YS1mNDEyLTQ2NTQtYjg5Yy1mOTJlYWE5ZGJkMjAuRmluYW5jZS5CdWJibGUiLCIyMzU0NTY1YS1mNDEyLTQ2NTQtYjg5Yy1mOTJlYWE5ZGJkMjAuQ292aWQuQnViYmxlIiwiMjM1NDU2NWEtZjQxMi00NjU0LWI4OWMtZjkyZWFhOWRiZDIwLlNwb3J0cy5CdWJibGUiLCIyMzU0NTY1YS1mNDEyLTQ2NTQtYjg5Yy1mOTJlYWE5ZGJkMjAuTm90aWZ5U2VhcmNoUGFnZS5CdWJibGUiLCJjZDQ2ODhhOS1lODg4LTQ4ZWEtYWQ4MS03NjE5M2Q1NmIxYmUuQnViYmxlIiwiY2Q0Njg4YTktZTg4OC00OGVhLWFkODEtNzYxOTNkNTZiMWJlLklzS25vd2xlZGdlQ2FyZFF1ZXJ5LkJ1YmJsZSIsImNkNDY4OGE5LWU4ODgtNDhlYS1hZDgxLTc2MTkzZDU2YjFiZS5Jc1R3aXRjaE5vblN0cmVhbVBhZ2UuQnViYmxlIiwKImNkNDY4OGE5LWU4ODgtNDhlYS1hZDgxLTc2MTkzZDU2YjFiZS5Jc1R3aXRjaFN1YlBhZ2UuQnViYmxlIiwiY2Q0Njg4YTktZTg4OC00OGVhLWFkODEtNzYxOTNkNTZiMWJlLklzVGV4dFBhZ2UuQnViYmxlIiwiY2Q0Njg4YTktZTg4OC00OGVhLWFkODEtNzYxOTNkNTZiMWJlLklzVmlkZW9QYWdlLkJ1YmJsZSIsImNkNDY4OGE5LWU4ODgtNDhlYS1hZDgxLTc2MTkzZDU2YjFiZS5Jc01zbkFydGljbGVVcmxGcm9tTnRwUDFQMi5CdWJibGUiLCJjZDQ2ODhhOS1lODg4LTQ4ZWEtYWQ4MS03NjE5M2Q1NmIxYmUuSXNDb21wZXRlQUlTaXRlLkJ1YmJsZSIsImM4ZWJkODcxLTlmNDctNGEwZC1hYmQzLWMxYzAyYjRmOGY1My5BdXRvT3BlbiIsImM4ZWJkODcxLTlmNDctNGEwZC1hYmQzLWMxYzAyYjRmOGY1My4yY2ZhYjE0Yy1lYmQ2LTQ1NDgtOTQwMS0zMGFiNWFmZTUwNjEuQXV0b09wZW4iLCJjZDQ2ODhhOS1lODg4LTQ4ZWEtYWQ4MS03NjE5M2Q1NmIxYmUuQXV0b09wZW4uUGVyc2lzdGVudENoYXQiLCJjZDQ2ODhhOS1lODg4LTQ4ZWEtYWQ4MS03NjE5M2Q1NmIxYmUuQXV0b09wZW4uUERGIiwiU0FOLlBlcnNvbmFsaXphdGlvbi5Db25zZW50UHJvbXB0IiwiUGVyZm9ybWFuY2VEZXRlY3RvckZlYXR1cmVOb3RpZmljYXRpb24iLCJWUE5GZWF0dXJlTm90aWZpY2F0aW9uIiwiRWRnZURvd25sb2FkQ2hyb21lSW50ZXJjZXB0RGlhbG9nIiwiU2hvcmVsaW5lUHJpdmlsZWdlZEV4cGVyaWVuY2VJRCIsIjg2ODJkMGZhLTUwYjMtNGVjZS1hYTViLWUwYjMzZjk5MTllMi5mNWI4YzcyNS1jYjJlLTRjMTItYWNjZC03M2U1MDBkODhkNDcuQXV0b09wZW4iLCJiYzI1ZmNlZi04OTY0LTRlNzItODI4Ny0yM2UyYjQ5NmMxMjguNjhiOGE4ODQtNmUwOC00NmU2LThhM2ItN2UwNmZmZTQ4ZWNmLkF1dG9PcGVuIn07Cglmb3IgKGludCBpID0gMDsgaSA8IDcwOyBpKyspIAoJewoJCS8vIHByaW50ZigiJWRcbiIsIHN0cmxlbihpZHNbaV0pKTsKCQl1aW50MzJfdCBoYXNoID0gU3VwZXJGYXN0SGFzaChpZHNbaV0sIHN0cmxlbihpZHNbaV0pKTsKCQlwcmludGYoIiVkXG4iLCBoYXNoKTsKCX0KCXJldHVybiAwOwp9Cg==