/**
We have a catalog of song titles (and their lengths) that we play at a local radio station. We have been asked to play two of those songs in a row, and they must add up to exactly seven minutes long.
Given a list of songs and their durations, write a function that returns the names of any two distinct songs that add up to exactly seven minutes. If there is no such pair, return an empty collection.
Example:
song_times_1 = [
("Stairway to Heaven", "8:05"), ("Immigrant Song", "2:27"),
("Rock and Roll", "3:41"), ("Communication Breakdown", "2:29"),
("Good Times Bad Times", "2:48"), ("Hot Dog", "3:19"),
("The Crunge", "3:18"), ("Achilles Last Stand", "10:26"),
("Black Dog", "4:55")
]
find_pair(song_times_1) => ["Rock and Roll", "Hot Dog"] (3:41 + 3:19 = 7:00)
Additional Input:
song_times_2 = [
("Stairway to Heaven", "8:05"), ("Immigrant Song", "2:27"),
("Rock and Roll", "3:41"), ("Communication Breakdown", "2:29"),
("Good Times Bad Times", "2:48"), ("Black Dog", "4:55"),
("The Crunge", "3:18"), ("Achilles Last Stand", "10:26"),
("The Ocean", "4:31"), ("Hot Dog", "3:19"),
]
song_times_3 = [
("Stairway to Heaven", "8:05"), ("Immigrant Song", "2:27"),
("Rock and Roll", "3:41"), ("Communication Breakdown", "2:29"),
("Hey Hey What Can I Do", "4:00"), ("Poor Tom", "3:00"),
("Black Dog", "4:55")
]
song_times_4 = [
("Hey Hey What Can I Do", "4:00"), ("Rock and Roll", "3:41"),
("Communication Breakdown", "2:29"), ("Going to California", "3:30"),
("On The Run", "3:50"), ("The Wrestler", "3:50"),
("Black Mountain Side", "2:11"), ("Brown Eagle", "2:20")
]
song_times_5 = [("Celebration Day", "3:30"), ("Going to California", "3:30")]
song_times_6 = [
("Rock and Roll", "3:41"), ("If I lived here", "3:59"),
("Day and night", "5:03"), ("Tempo song", "1:57")
]
Complexity Variable:
n = number of song/time pairs
All Test Cases - snake_case:
find_pair(song_times_1) => ["Rock and Roll", "Hot Dog"]
find_pair(song_times_2) => ["Rock and Roll", "Hot Dog"] or ["Communication Breakdown", "The Ocean"]
find_pair(song_times_3) => ["Hey Hey What Can I Do", "Poor Tom"]
find_pair(song_times_4) => []
find_pair(song_times_5) => ["Celebration Day", "Going to California"]
find_pair(song_times_6) => ["Day and night", "Tempo song"]
All Test Cases - camelCase:
findPair(songTimes1) => ["Rock and Roll", "Hot Dog"]
findPair(songTimes2) => ["Rock and Roll", "Hot Dog"] or ["Communication Breakdown", "The Ocean"]
findPair(songTimes3) => ["Hey Hey What Can I Do", "Poor Tom"]
findPair(songTimes4) => []
findPair(songTimes5) => ["Celebration Day", "Going to California"]
findPair(songTimes6) => ["Day and night", "Tempo song"]
**/
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector< pair< string, int >> convertMinuteToSecond( vector< pair< string, string>> songTimes) {
vector< pair< string, int >> res;
for ( int i= 0 ; i< songTimes.size ( ) ; i++ ) {
pair< string, string> currentSong = songTimes[ i] ;
string duration = currentSong.second ;
cout << duration<< endl;
cout << duration[ 0 ] << endl;
cout << duration[ 2 ] << endl;
cout << duration[ 3 ] << endl;
if ( duration.size ( ) <= 4 ) {
int second = 0 ;
second = ( duration[ 0 ] - '0' ) * 60 ;
second + = ( duration[ 2 ] - '0' ) * 10 ;
second + = duration[ 3 ] - '0' ;
// cout<<currentSong.first<<" "<<second<<endl;
res.push_back ( { currentSong.first , second} ) ;
}
}
return res;
}
vector< string> findSongs( vector< pair< string, string>> songTimes) {
vector< pair< string, int >> songTimesSecond = convertMinuteToSecond( songTimes) ;
cout << endl;
int sevenMinuteInseconds = 420 ;
for ( int i= 0 ; i< songTimesSecond.size ( ) ; i++ ) {
pair< string, int > currentSong = songTimesSecond[ i] ;
// cout<<currentSong.second<<endl;
if ( currentSong.second < sevenMinuteInseconds) {
// cout<<currentSong.first<< " "<<currentSong.second<<endl;
for ( int j= i+ 1 ; j< songTimesSecond.size ( ) ; j++ ) {
// cout<<currentSong.second + songTimesSecond[j].second<<endl;
if ( currentSong.second + songTimesSecond[ j] .second == sevenMinuteInseconds) {
cout << currentSong.first + songTimesSecond[ j] .first << endl;
return { currentSong.first , songTimesSecond[ j] .first } ;
}
}
}
}
return { } ;
}
int main( ) {
const vector< pair< string, string>> songTimes1 = {
{ "Stairway to Heaven" , "8:05" } , { "Immigrant Song" , "2:27" } ,
{ "Rock and Roll" , "3:41" } , { "Communication Breakdown" , "2:29" } ,
{ "Good Times Bad Times" , "2:48" } , { "Hot Dog" , "3:19" } ,
{ "The Crunge" , "3:18" } , { "Achilles Last Stand" , "10:26" } ,
{ "Black Dog" , "4:55" }
} ;
// vector<string> res = findSongs(songTimes1);
// for(int i=0; i<res.size(); i++) {
// cout<<res[i]<<"\t";
// }
cout << endl;
const vector< pair< string, string>> songTimes2 = {
{ "Stairway to Heaven" , "8:05" } , { "Immigrant Song" , "2:27" } ,
{ "Rock and Roll" , "3:41" } , { "Communication Breakdown" , "2:29" } ,
{ "Good Times Bad Times" , "2:48" } , { "Black Dog" , "4:55" } ,
{ "The Crunge" , "3:18" } , { "Achilles Last Stand" , "10:26" } ,
{ "The Ocean" , "4:31" } , { "Hot Dog" , "3:19" }
} ;
const vector< pair< string, string>> songTimes3 = {
{ "Stairway to Heaven" , "8:05" } , { "Immigrant Song" , "2:27" } ,
{ "Rock and Roll" , "3:41" } , { "Communication Breakdown" , "2:29" } ,
{ "Hey Hey What Can I Do" , "4:00" } , { "Poor Tom" , "3:00" } ,
{ "Black Dog" , "4:55" }
} ;
const vector< pair< string, string>> songTimes4 = {
{ "Hey Hey What Can I Do" , "4:00" } , { "Rock and Roll" , "3:41" } ,
{ "Communication Breakdown" , "2:29" } , { "Going to California" , "3:30" } ,
{ "On The Run" , "3:50" } , { "The Wrestler" , "3:50" } ,
{ "Black Mountain Side" , "2:11" } , { "Brown Eagle" , "2:20" }
} ;
const vector< pair< string, string>> songTimes5 = {
{ "Celebration Day" , "3:30" } , { "Going to California" , "3:30" }
} ;
const vector< pair< string, string>> songTimes6 = {
{ "Rock and Roll" , "3:41" } , { "If I lived here" , "3:59" } ,
{ "Day and night" , "5:03" } , { "Tempo song" , "1:57" }
} ;
vector< string> res1 = findSongs( songTimes1) ;
// vector<string> res2 = findSongs(songTimes2);
// vector<string> res3 = findSongs(songTimes3);
// vector<string> res4 = findSongs(songTimes4);
// vector<string> res5 = findSongs(songTimes5);
// vector<string> res6 = findSongs(songTimes6);
return 0 ;
}
LyoqCldlIGhhdmUgYSBjYXRhbG9nIG9mIHNvbmcgdGl0bGVzIChhbmQgdGhlaXIgbGVuZ3RocykgdGhhdCB3ZSBwbGF5IGF0IGEgbG9jYWwgcmFkaW8gc3RhdGlvbi4gIFdlIGhhdmUgYmVlbiBhc2tlZCB0byBwbGF5IHR3byBvZiB0aG9zZSBzb25ncyBpbiBhIHJvdywgYW5kIHRoZXkgbXVzdCBhZGQgdXAgdG8gZXhhY3RseSBzZXZlbiBtaW51dGVzIGxvbmcuICAKCkdpdmVuIGEgbGlzdCBvZiBzb25ncyBhbmQgdGhlaXIgZHVyYXRpb25zLCB3cml0ZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmFtZXMgb2YgYW55IHR3byBkaXN0aW5jdCBzb25ncyB0aGF0IGFkZCB1cCB0byBleGFjdGx5IHNldmVuIG1pbnV0ZXMuICBJZiB0aGVyZSBpcyBubyBzdWNoIHBhaXIsIHJldHVybiBhbiBlbXB0eSBjb2xsZWN0aW9uLiAKCkV4YW1wbGU6CnNvbmdfdGltZXNfMSA9IFsKICAgICgiU3RhaXJ3YXkgdG8gSGVhdmVuIiwgIjg6MDUiKSwgKCJJbW1pZ3JhbnQgU29uZyIsICIyOjI3IiksCiAgICAoIlJvY2sgYW5kIFJvbGwiLCAiMzo0MSIpLCAoIkNvbW11bmljYXRpb24gQnJlYWtkb3duIiwgIjI6MjkiKSwKICAgICgiR29vZCBUaW1lcyBCYWQgVGltZXMiLCAiMjo0OCIpLCAoIkhvdCBEb2ciLCAiMzoxOSIpLAogICAgKCJUaGUgQ3J1bmdlIiwgIjM6MTgiKSwgKCJBY2hpbGxlcyBMYXN0IFN0YW5kIiwgIjEwOjI2IiksCiAgICAoIkJsYWNrIERvZyIsICI0OjU1IikKXQpmaW5kX3BhaXIoc29uZ190aW1lc18xKSA9PiBbIlJvY2sgYW5kIFJvbGwiLCAiSG90IERvZyJdICgzOjQxICsgMzoxOSA9IDc6MDApCgpBZGRpdGlvbmFsIElucHV0Ogpzb25nX3RpbWVzXzIgPSBbCiAgICAoIlN0YWlyd2F5IHRvIEhlYXZlbiIsICI4OjA1IiksICgiSW1taWdyYW50IFNvbmciLCAiMjoyNyIpLAogICAgKCJSb2NrIGFuZCBSb2xsIiwgIjM6NDEiKSwgKCJDb21tdW5pY2F0aW9uIEJyZWFrZG93biIsICIyOjI5IiksCiAgICAoIkdvb2QgVGltZXMgQmFkIFRpbWVzIiwgIjI6NDgiKSwgKCJCbGFjayBEb2ciLCAiNDo1NSIpLAogICAgKCJUaGUgQ3J1bmdlIiwgIjM6MTgiKSwgKCJBY2hpbGxlcyBMYXN0IFN0YW5kIiwgIjEwOjI2IiksCiAgICAoIlRoZSBPY2VhbiIsICI0OjMxIiksICgiSG90IERvZyIsICIzOjE5IiksCl0Kc29uZ190aW1lc18zID0gWwogICAgKCJTdGFpcndheSB0byBIZWF2ZW4iLCAiODowNSIpLCAoIkltbWlncmFudCBTb25nIiwgIjI6MjciKSwKICAgICgiUm9jayBhbmQgUm9sbCIsICIzOjQxIiksICgiQ29tbXVuaWNhdGlvbiBCcmVha2Rvd24iLCAiMjoyOSIpLAogICAgKCJIZXkgSGV5IFdoYXQgQ2FuIEkgRG8iLCAiNDowMCIpLCAoIlBvb3IgVG9tIiwgIjM6MDAiKSwKICAgICgiQmxhY2sgRG9nIiwgIjQ6NTUiKQpdCnNvbmdfdGltZXNfNCA9IFsKICAgICgiSGV5IEhleSBXaGF0IENhbiBJIERvIiwgIjQ6MDAiKSwgKCJSb2NrIGFuZCBSb2xsIiwgIjM6NDEiKSwKICAgICgiQ29tbXVuaWNhdGlvbiBCcmVha2Rvd24iLCAiMjoyOSIpLCAoIkdvaW5nIHRvIENhbGlmb3JuaWEiLCAiMzozMCIpLAogICAgKCJPbiBUaGUgUnVuIiwgIjM6NTAiKSwgKCJUaGUgV3Jlc3RsZXIiLCAiMzo1MCIpLCAKICAgICgiQmxhY2sgTW91bnRhaW4gU2lkZSIsICIyOjExIiksICgiQnJvd24gRWFnbGUiLCAiMjoyMCIpCl0Kc29uZ190aW1lc181ID0gWygiQ2VsZWJyYXRpb24gRGF5IiwgIjM6MzAiKSwgKCJHb2luZyB0byBDYWxpZm9ybmlhIiwgIjM6MzAiKV0Kc29uZ190aW1lc182ID0gWwogICgiUm9jayBhbmQgUm9sbCIsICIzOjQxIiksICgiSWYgSSBsaXZlZCBoZXJlIiwgIjM6NTkiKSwKICAoIkRheSBhbmQgbmlnaHQiLCAiNTowMyIpLCAoIlRlbXBvIHNvbmciLCAiMTo1NyIpCl0KCgpDb21wbGV4aXR5IFZhcmlhYmxlOgpuID0gbnVtYmVyIG9mIHNvbmcvdGltZSBwYWlycwoKQWxsIFRlc3QgQ2FzZXMgLSBzbmFrZV9jYXNlOgpmaW5kX3BhaXIoc29uZ190aW1lc18xKSA9PiBbIlJvY2sgYW5kIFJvbGwiLCAiSG90IERvZyJdCmZpbmRfcGFpcihzb25nX3RpbWVzXzIpID0+IFsiUm9jayBhbmQgUm9sbCIsICJIb3QgRG9nIl0gb3IgWyJDb21tdW5pY2F0aW9uIEJyZWFrZG93biIsICJUaGUgT2NlYW4iXQpmaW5kX3BhaXIoc29uZ190aW1lc18zKSA9PiBbIkhleSBIZXkgV2hhdCBDYW4gSSBEbyIsICJQb29yIFRvbSJdCmZpbmRfcGFpcihzb25nX3RpbWVzXzQpID0+IFtdCmZpbmRfcGFpcihzb25nX3RpbWVzXzUpID0+IFsiQ2VsZWJyYXRpb24gRGF5IiwgIkdvaW5nIHRvIENhbGlmb3JuaWEiXQpmaW5kX3BhaXIoc29uZ190aW1lc182KSA9PiBbIkRheSBhbmQgbmlnaHQiLCAiVGVtcG8gc29uZyJdCgpBbGwgVGVzdCBDYXNlcyAtIGNhbWVsQ2FzZToKZmluZFBhaXIoc29uZ1RpbWVzMSkgPT4gWyJSb2NrIGFuZCBSb2xsIiwgIkhvdCBEb2ciXQpmaW5kUGFpcihzb25nVGltZXMyKSA9PiBbIlJvY2sgYW5kIFJvbGwiLCAiSG90IERvZyJdIG9yIFsiQ29tbXVuaWNhdGlvbiBCcmVha2Rvd24iLCAiVGhlIE9jZWFuIl0KZmluZFBhaXIoc29uZ1RpbWVzMykgPT4gWyJIZXkgSGV5IFdoYXQgQ2FuIEkgRG8iLCAiUG9vciBUb20iXQpmaW5kUGFpcihzb25nVGltZXM0KSA9PiBbXQpmaW5kUGFpcihzb25nVGltZXM1KSA9PiBbIkNlbGVicmF0aW9uIERheSIsICJHb2luZyB0byBDYWxpZm9ybmlhIl0KZmluZFBhaXIoc29uZ1RpbWVzNikgPT4gWyJEYXkgYW5kIG5pZ2h0IiwgIlRlbXBvIHNvbmciXQoqKi8KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZlY3RvcjxwYWlyPHN0cmluZywgaW50Pj4gY29udmVydE1pbnV0ZVRvU2Vjb25kKHZlY3RvcjxwYWlyPHN0cmluZywgc3RyaW5nPj4gc29uZ1RpbWVzKSB7CiAgdmVjdG9yPHBhaXI8c3RyaW5nLCBpbnQ+PiByZXM7CiAgICBmb3IoaW50IGk9MDsgaTxzb25nVGltZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgIHBhaXI8c3RyaW5nLCBzdHJpbmc+IGN1cnJlbnRTb25nID0gc29uZ1RpbWVzW2ldOwogICAgICAgICAgc3RyaW5nIGR1cmF0aW9uID0gY3VycmVudFNvbmcuc2Vjb25kOwogICAgICAgICAgY291dDw8ZHVyYXRpb248PGVuZGw7CiAgICAgICAgICBjb3V0PDxkdXJhdGlvblswXTw8ZW5kbDsKICAgICAgICAgIGNvdXQ8PGR1cmF0aW9uWzJdPDxlbmRsOwogICAgICAgICAgY291dDw8ZHVyYXRpb25bM108PGVuZGw7CiAgICAgICAgICBpZihkdXJhdGlvbi5zaXplKCkgPD0gNCkgewogICAgICAgICAgICBpbnQgc2Vjb25kID0gMDsKICAgICAgICAgICAgc2Vjb25kID0gKGR1cmF0aW9uWzBdLScwJykqNjA7CiAgICAgICAgICAgIHNlY29uZCArPSAoZHVyYXRpb25bMl0tJzAnKSoxMDsKICAgICAgICAgICAgc2Vjb25kICs9IGR1cmF0aW9uWzNdLScwJzsKCiAgICAgICAgICAgIC8vIGNvdXQ8PGN1cnJlbnRTb25nLmZpcnN0PDwiICI8PHNlY29uZDw8ZW5kbDsKICAgICAgICAgICAgcmVzLnB1c2hfYmFjayh7Y3VycmVudFNvbmcuZmlyc3QsIHNlY29uZH0pOwogICAgICAgICAgfQogICAgfQogIHJldHVybiByZXM7Cn0KdmVjdG9yPHN0cmluZz4gZmluZFNvbmdzKHZlY3RvcjxwYWlyPHN0cmluZywgc3RyaW5nPj4gc29uZ1RpbWVzKSB7CiAgdmVjdG9yPHBhaXI8c3RyaW5nLCBpbnQ+PiBzb25nVGltZXNTZWNvbmQgPSBjb252ZXJ0TWludXRlVG9TZWNvbmQoc29uZ1RpbWVzKTsKICBjb3V0PDxlbmRsOwogIGludCBzZXZlbk1pbnV0ZUluc2Vjb25kcyA9IDQyMDsKICBmb3IoaW50IGk9MDsgaTxzb25nVGltZXNTZWNvbmQuc2l6ZSgpOyBpKyspIHsKICAgIHBhaXI8c3RyaW5nLCBpbnQ+IGN1cnJlbnRTb25nID0gc29uZ1RpbWVzU2Vjb25kW2ldOwogICAgLy8gY291dDw8Y3VycmVudFNvbmcuc2Vjb25kPDxlbmRsOwogICAgaWYoY3VycmVudFNvbmcuc2Vjb25kIDwgc2V2ZW5NaW51dGVJbnNlY29uZHMpIHsKICAgICAgLy8gY291dDw8Y3VycmVudFNvbmcuZmlyc3Q8PCAiICI8PGN1cnJlbnRTb25nLnNlY29uZDw8ZW5kbDsKICAgICAgZm9yKGludCBqPWkrMTsgajxzb25nVGltZXNTZWNvbmQuc2l6ZSgpOyBqKyspIHsKICAgICAgICAvLyBjb3V0PDxjdXJyZW50U29uZy5zZWNvbmQgKyBzb25nVGltZXNTZWNvbmRbal0uc2Vjb25kPDxlbmRsOwogICAgICAgIGlmKGN1cnJlbnRTb25nLnNlY29uZCArIHNvbmdUaW1lc1NlY29uZFtqXS5zZWNvbmQgPT0gc2V2ZW5NaW51dGVJbnNlY29uZHMpIHsKICAgICAgICAgIGNvdXQ8PGN1cnJlbnRTb25nLmZpcnN0ICsgc29uZ1RpbWVzU2Vjb25kW2pdLmZpcnN0PDxlbmRsOwogICAgICAgICAgcmV0dXJuIHtjdXJyZW50U29uZy5maXJzdCwgc29uZ1RpbWVzU2Vjb25kW2pdLmZpcnN0fTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIHt9Owp9CgppbnQgbWFpbigpIHsKICAKICAgIGNvbnN0IHZlY3RvcjxwYWlyPHN0cmluZywgc3RyaW5nPj4gc29uZ1RpbWVzMSA9IHsKICAgICAgeyJTdGFpcndheSB0byBIZWF2ZW4iLCAiODowNSJ9LCB7IkltbWlncmFudCBTb25nIiwgIjI6MjcifSwKICAgICAgeyJSb2NrIGFuZCBSb2xsIiwgIjM6NDEifSwgeyJDb21tdW5pY2F0aW9uIEJyZWFrZG93biIsICIyOjI5In0sCiAgICAgIHsiR29vZCBUaW1lcyBCYWQgVGltZXMiLCAiMjo0OCJ9LCB7IkhvdCBEb2ciLCAiMzoxOSJ9LAogICAgICB7IlRoZSBDcnVuZ2UiLCAiMzoxOCJ9LCB7IkFjaGlsbGVzIExhc3QgU3RhbmQiLCAiMTA6MjYifSwKICAgICAgeyJCbGFjayBEb2ciLCAiNDo1NSJ9CiAgICB9OwogICAgLy8gdmVjdG9yPHN0cmluZz4gcmVzID0gZmluZFNvbmdzKHNvbmdUaW1lczEpOwogICAgLy8gZm9yKGludCBpPTA7IGk8cmVzLnNpemUoKTsgaSsrKSB7CiAgICAvLyAgIGNvdXQ8PHJlc1tpXTw8Ilx0IjsKICAgIC8vIH0KICAgIGNvdXQ8PGVuZGw7CiAgICBjb25zdCB2ZWN0b3I8cGFpcjxzdHJpbmcsIHN0cmluZz4+IHNvbmdUaW1lczIgPSB7CiAgICAgIHsiU3RhaXJ3YXkgdG8gSGVhdmVuIiwgIjg6MDUifSwgeyJJbW1pZ3JhbnQgU29uZyIsICIyOjI3In0sCiAgICAgIHsiUm9jayBhbmQgUm9sbCIsICIzOjQxIn0sIHsiQ29tbXVuaWNhdGlvbiBCcmVha2Rvd24iLCAiMjoyOSJ9LAogICAgICB7Ikdvb2QgVGltZXMgQmFkIFRpbWVzIiwgIjI6NDgifSwgeyJCbGFjayBEb2ciLCAiNDo1NSJ9LAogICAgICB7IlRoZSBDcnVuZ2UiLCAiMzoxOCJ9LCB7IkFjaGlsbGVzIExhc3QgU3RhbmQiLCAiMTA6MjYifSwKICAgICAgeyJUaGUgT2NlYW4iLCAiNDozMSJ9LCB7IkhvdCBEb2ciLCAiMzoxOSJ9CiAgICB9OwogICAgY29uc3QgdmVjdG9yPHBhaXI8c3RyaW5nLCBzdHJpbmc+PiBzb25nVGltZXMzID0gewogICAgICB7IlN0YWlyd2F5IHRvIEhlYXZlbiIsICI4OjA1In0sIHsiSW1taWdyYW50IFNvbmciLCAiMjoyNyJ9LAogICAgICB7IlJvY2sgYW5kIFJvbGwiLCAiMzo0MSJ9LCB7IkNvbW11bmljYXRpb24gQnJlYWtkb3duIiwgIjI6MjkifSwKICAgICAgeyJIZXkgSGV5IFdoYXQgQ2FuIEkgRG8iLCAiNDowMCJ9LCB7IlBvb3IgVG9tIiwgIjM6MDAifSwKICAgICAgeyJCbGFjayBEb2ciLCAiNDo1NSJ9CiAgICB9OwogICAgY29uc3QgdmVjdG9yPHBhaXI8c3RyaW5nLCBzdHJpbmc+PiBzb25nVGltZXM0ID0gewogICAgICB7IkhleSBIZXkgV2hhdCBDYW4gSSBEbyIsICI0OjAwIn0sIHsiUm9jayBhbmQgUm9sbCIsICIzOjQxIn0sCiAgICAgIHsiQ29tbXVuaWNhdGlvbiBCcmVha2Rvd24iLCAiMjoyOSJ9LCB7IkdvaW5nIHRvIENhbGlmb3JuaWEiLCAiMzozMCJ9LAogICAgICB7Ik9uIFRoZSBSdW4iLCAiMzo1MCJ9LCB7IlRoZSBXcmVzdGxlciIsICIzOjUwIn0sCiAgICAgIHsiQmxhY2sgTW91bnRhaW4gU2lkZSIsICIyOjExIn0sIHsiQnJvd24gRWFnbGUiLCAiMjoyMCJ9CiAgICB9OyAgCiAgICBjb25zdCB2ZWN0b3I8cGFpcjxzdHJpbmcsIHN0cmluZz4+IHNvbmdUaW1lczUgPSB7CiAgICAgIHsiQ2VsZWJyYXRpb24gRGF5IiwgIjM6MzAifSwgeyJHb2luZyB0byBDYWxpZm9ybmlhIiwgIjM6MzAifQogICAgfTsKICAgIGNvbnN0IHZlY3RvcjxwYWlyPHN0cmluZywgc3RyaW5nPj4gc29uZ1RpbWVzNiA9IHsKICAgICAgeyJSb2NrIGFuZCBSb2xsIiwgIjM6NDEifSwgeyJJZiBJIGxpdmVkIGhlcmUiLCAiMzo1OSJ9LAogICAgICB7IkRheSBhbmQgbmlnaHQiLCAiNTowMyJ9LCB7IlRlbXBvIHNvbmciLCAiMTo1NyJ9CiAgICB9OwoKdmVjdG9yPHN0cmluZz4gcmVzMSA9IGZpbmRTb25ncyhzb25nVGltZXMxKTsKLy8gdmVjdG9yPHN0cmluZz4gcmVzMiA9IGZpbmRTb25ncyhzb25nVGltZXMyKTsKLy8gdmVjdG9yPHN0cmluZz4gcmVzMyA9IGZpbmRTb25ncyhzb25nVGltZXMzKTsKLy8gdmVjdG9yPHN0cmluZz4gcmVzNCA9IGZpbmRTb25ncyhzb25nVGltZXM0KTsKLy8gdmVjdG9yPHN0cmluZz4gcmVzNSA9IGZpbmRTb25ncyhzb25nVGltZXM1KTsKLy8gdmVjdG9yPHN0cmluZz4gcmVzNiA9IGZpbmRTb25ncyhzb25nVGltZXM2KTsKICByZXR1cm4gMDsKfQo=