Optimized torrent search to flex search

This commit is contained in:
Sai Raj 2019-08-08 01:11:59 +05:30 committed by GitHub
parent 3eaf89115b
commit fd338e91c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,353 +4,362 @@
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Titillium+Web" rel="stylesheet">
<style>
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}audio,canvas,video{display:inline-block;}audio:not([controls]){display:none;height:0;}[hidden]{display:none;}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}a:focus{outline:thin dotted;}a:active,a:hover{outline:0;}h1{font-size:2em;margin:0.67em 0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;}mark{background:#ff0;color:#000;}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em;}pre{white-space:pre-wrap;}q{quotes:"\201C" "\201D" "\2018" "\2019";}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:0;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;}button,input{line-height:normal;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}textarea{overflow:auto;vertical-align:top;}table{border-collapse:collapse;border-spacing:0;}
@import url('https://fonts.googleapis.com/css?family=Titillium+Web');
/*These settings will go to all divs */
#rootDiv {
box-sizing: border-box;
position:relative;
top:0px;
font-family: 'Titillium Web', Arial, sans-serif;
font-weight: 300;
font-size: 1.05em;
margin: 0;
text-align:justify;
}
.baseDiv {
border-color: #e3e3e3;
border-style: solid;
border-width: 1px;
margin-left: -1px;
margin-top: -1px;
}
i {
font-size: 1em;
font-weight: 400;
padding: 0 0 15px;
line-height: 36px;
}
h1 {
font-size: 28px;
font-weight: 400;
padding: 0 0 15px;
}
.flexcontainer {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
align-items: center;
align-content: space-around;
}
</style>
<style>
svg {
fill: currentColor;
}
.btn {
border: none;
padding: 10px 10px;
color:inherit;
background-color: inherit;
cursor: pointer;
font-size: 20px;
-webkit-transition-duration: 0.4s; /* Safari */
transition-duration: 0.4s;
}
/* Darker background on mouse-over */
.btn:hover {
box-shadow: 0px 0px 5px rgb(0,0,0,0.5);
}
/*Torrent content grid */
.front-torrent-name{
font-size: 32px;
padding: 5px;
}
.torrent-name{
font-size: 22px;
padding: 5px;
}
.torrent-uploader{
font-size: 24px;
padding: 5px;
}
.torrent-type{
font-size: 20px;
padding: 5px;
}
.torrent-description{
font-size: 14px;
padding: 5px;
}
.torrent-tags{
font-size: 14px;
padding: 5px;
}
.flip-card {
background-color: transparent;
perspective: 1000px; /* Remove this if you don't want the 3D effect */
overflow-wrap: break-word;
}
/* This container is needed to position the front and back side */
.flip-card-inner {
position: relative;
width: 100%;
height: 100%;
text-align: center;
transition: transform 0.8s;
transform-style: preserve-3d;
}
/* Do an horizontal flip when you move the mouse over the flip box container */
.flip-card:hover .flip-card-inner {
transform: rotateY(180deg);
box-shadow: 0px 0px 20px rgb(0,0,0,0.5);
}
/* Position the front and back side */
.flip-card-front, .flip-card-back {
position: absolute;
width: 100%;
height: 100%;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
backface-visibility: hidden;
transform: rotateY(0deg);
}
/* Style the front side (fallback if image is missing) */
.flip-card-front {
color: white;
text-align: center;
}
/* Style the back side */
.flip-card-back {
color: white;
text-align: center;
transform: rotateY(180deg);
}
</style>
<style>
/*For download progress */
#downloadBar{
position: fixed;
top:30%;
left:45%;
background-color: rgba(0, 0, 0, 0.5);
}
.progress-circle {
font-size: 20px;
margin: 20px;
position: relative; /* so that children can be absolutely positioned */
padding: 0;
width: 5em;
height: 5em;
background-color: #F2E9E1;
border-radius: 50%;
line-height: 5em;
}
.progress-circle:after{
border: none;
position: absolute;
top: 0.35em;
left: 0.35em;
text-align: center;
display: block;
border-radius: 50%;
width: 4.3em;
height: 4.3em;
background-color: black;
content: " ";
}
/* Text inside the control */
.progress-circle span {
position: absolute;
line-height: 5em;
width: 5em;
text-align: center;
display: block;
color: white;
z-index: 2;
}
.left-half-clipper {
/* a round circle */
border-radius: 50%;
width: 5em;
height: 5em;
position: absolute; /* needed for clipping */
clip: rect(0, 5em, 5em, 2.5em); /* clips the whole left half*/
}
/* when p>50, don't clip left half*/
.progress-circle.over50 .left-half-clipper {
clip: rect(auto,auto,auto,auto);
}
.value-bar {
/*This is an overlayed square, that is made round with the border radius,
then it is cut to display only the left half, then rotated clockwise
to escape the outer clipping path.*/
position: absolute; /*needed for clipping*/
clip: rect(0, 2.5em, 5em, 0);
width: 5em;
height: 5em;
border-radius: 50%;
border: 0.45em solid #53777A; /*The border is 0.35 but making it larger removes visual artifacts */
/*background-color: #4D642D;*/ /* for debug */
box-sizing: border-box;
}
/* Progress bar filling the whole right half for values above 50% */
.progress-circle.over50 .first50-bar {
/*Progress bar for the first 50%, filling the whole right half*/
position: absolute; /*needed for clipping*/
clip: rect(0, 5em, 5em, 2.5em);
background-color: #53777A;
border-radius: 50%;
width: 5em;
height: 5em;
}
.progress-circle:not(.over50) .first50-bar{ display: none; }
/* Progress bar rotation position */
.progress-circle.p0 .value-bar { display: none; }
.progress-circle.p1 .value-bar { transform: rotate(4deg); }
.progress-circle.p2 .value-bar { transform: rotate(7deg); }
.progress-circle.p3 .value-bar { transform: rotate(11deg); }
.progress-circle.p4 .value-bar { transform: rotate(14deg); }
.progress-circle.p5 .value-bar { transform: rotate(18deg); }
.progress-circle.p6 .value-bar { transform: rotate(22deg); }
.progress-circle.p7 .value-bar { transform: rotate(25deg); }
.progress-circle.p8 .value-bar { transform: rotate(29deg); }
.progress-circle.p9 .value-bar { transform: rotate(32deg); }
.progress-circle.p10 .value-bar { transform: rotate(36deg); }
.progress-circle.p11 .value-bar { transform: rotate(40deg); }
.progress-circle.p12 .value-bar { transform: rotate(43deg); }
.progress-circle.p13 .value-bar { transform: rotate(47deg); }
.progress-circle.p14 .value-bar { transform: rotate(50deg); }
.progress-circle.p15 .value-bar { transform: rotate(54deg); }
.progress-circle.p16 .value-bar { transform: rotate(58deg); }
.progress-circle.p17 .value-bar { transform: rotate(61deg); }
.progress-circle.p18 .value-bar { transform: rotate(65deg); }
.progress-circle.p19 .value-bar { transform: rotate(68deg); }
.progress-circle.p20 .value-bar { transform: rotate(72deg); }
.progress-circle.p21 .value-bar { transform: rotate(76deg); }
.progress-circle.p22 .value-bar { transform: rotate(79deg); }
.progress-circle.p23 .value-bar { transform: rotate(83deg); }
.progress-circle.p24 .value-bar { transform: rotate(86deg); }
.progress-circle.p25 .value-bar { transform: rotate(90deg); }
.progress-circle.p26 .value-bar { transform: rotate(94deg); }
.progress-circle.p27 .value-bar { transform: rotate(97deg); }
.progress-circle.p28 .value-bar { transform: rotate(101deg); }
.progress-circle.p29 .value-bar { transform: rotate(104deg); }
.progress-circle.p30 .value-bar { transform: rotate(108deg); }
.progress-circle.p31 .value-bar { transform: rotate(112deg); }
.progress-circle.p32 .value-bar { transform: rotate(115deg); }
.progress-circle.p33 .value-bar { transform: rotate(119deg); }
.progress-circle.p34 .value-bar { transform: rotate(122deg); }
.progress-circle.p35 .value-bar { transform: rotate(126deg); }
.progress-circle.p36 .value-bar { transform: rotate(130deg); }
.progress-circle.p37 .value-bar { transform: rotate(133deg); }
.progress-circle.p38 .value-bar { transform: rotate(137deg); }
.progress-circle.p39 .value-bar { transform: rotate(140deg); }
.progress-circle.p40 .value-bar { transform: rotate(144deg); }
.progress-circle.p41 .value-bar { transform: rotate(148deg); }
.progress-circle.p42 .value-bar { transform: rotate(151deg); }
.progress-circle.p43 .value-bar { transform: rotate(155deg); }
.progress-circle.p44 .value-bar { transform: rotate(158deg); }
.progress-circle.p45 .value-bar { transform: rotate(162deg); }
.progress-circle.p46 .value-bar { transform: rotate(166deg); }
.progress-circle.p47 .value-bar { transform: rotate(169deg); }
.progress-circle.p48 .value-bar { transform: rotate(173deg); }
.progress-circle.p49 .value-bar { transform: rotate(176deg); }
.progress-circle.p50 .value-bar { transform: rotate(180deg); }
.progress-circle.p51 .value-bar { transform: rotate(184deg); }
.progress-circle.p52 .value-bar { transform: rotate(187deg); }
.progress-circle.p53 .value-bar { transform: rotate(191deg); }
.progress-circle.p54 .value-bar { transform: rotate(194deg); }
.progress-circle.p55 .value-bar { transform: rotate(198deg); }
.progress-circle.p56 .value-bar { transform: rotate(202deg); }
.progress-circle.p57 .value-bar { transform: rotate(205deg); }
.progress-circle.p58 .value-bar { transform: rotate(209deg); }
.progress-circle.p59 .value-bar { transform: rotate(212deg); }
.progress-circle.p60 .value-bar { transform: rotate(216deg); }
.progress-circle.p61 .value-bar { transform: rotate(220deg); }
.progress-circle.p62 .value-bar { transform: rotate(223deg); }
.progress-circle.p63 .value-bar { transform: rotate(227deg); }
.progress-circle.p64 .value-bar { transform: rotate(230deg); }
.progress-circle.p65 .value-bar { transform: rotate(234deg); }
.progress-circle.p66 .value-bar { transform: rotate(238deg); }
.progress-circle.p67 .value-bar { transform: rotate(241deg); }
.progress-circle.p68 .value-bar { transform: rotate(245deg); }
.progress-circle.p69 .value-bar { transform: rotate(248deg); }
.progress-circle.p70 .value-bar { transform: rotate(252deg); }
.progress-circle.p71 .value-bar { transform: rotate(256deg); }
.progress-circle.p72 .value-bar { transform: rotate(259deg); }
.progress-circle.p73 .value-bar { transform: rotate(263deg); }
.progress-circle.p74 .value-bar { transform: rotate(266deg); }
.progress-circle.p75 .value-bar { transform: rotate(270deg); }
.progress-circle.p76 .value-bar { transform: rotate(274deg); }
.progress-circle.p77 .value-bar { transform: rotate(277deg); }
.progress-circle.p78 .value-bar { transform: rotate(281deg); }
.progress-circle.p79 .value-bar { transform: rotate(284deg); }
.progress-circle.p80 .value-bar { transform: rotate(288deg); }
.progress-circle.p81 .value-bar { transform: rotate(292deg); }
.progress-circle.p82 .value-bar { transform: rotate(295deg); }
.progress-circle.p83 .value-bar { transform: rotate(299deg); }
.progress-circle.p84 .value-bar { transform: rotate(302deg); }
.progress-circle.p85 .value-bar { transform: rotate(306deg); }
.progress-circle.p86 .value-bar { transform: rotate(310deg); }
.progress-circle.p87 .value-bar { transform: rotate(313deg); }
.progress-circle.p88 .value-bar { transform: rotate(317deg); }
.progress-circle.p89 .value-bar { transform: rotate(320deg); }
.progress-circle.p90 .value-bar { transform: rotate(324deg); }
.progress-circle.p91 .value-bar { transform: rotate(328deg); }
.progress-circle.p92 .value-bar { transform: rotate(331deg); }
.progress-circle.p93 .value-bar { transform: rotate(335deg); }
.progress-circle.p94 .value-bar { transform: rotate(338deg); }
.progress-circle.p95 .value-bar { transform: rotate(342deg); }
.progress-circle.p96 .value-bar { transform: rotate(346deg); }
.progress-circle.p97 .value-bar { transform: rotate(349deg); }
.progress-circle.p98 .value-bar { transform: rotate(353deg); }
.progress-circle.p99 .value-bar { transform: rotate(356deg); }
.progress-circle.p100 .value-bar { transform: rotate(360deg); }
</style>
</head>
<body onload="rePaint()" onresize="rePaint()">
<body onload="oneTimeTasks()" onresize="rePaint()">
<style>
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}audio,canvas,video{display:inline-block;}audio:not([controls]){display:none;height:0;}[hidden]{display:none;}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}a:focus{outline:thin dotted;}a:active,a:hover{outline:0;}h1{font-size:2em;margin:0.67em 0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;}mark{background:#ff0;color:#000;}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em;}pre{white-space:pre-wrap;}q{quotes:"\201C" "\201D" "\2018" "\2019";}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:0;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;}button,input{line-height:normal;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}textarea{overflow:auto;vertical-align:top;}table{border-collapse:collapse;border-spacing:0;}
@import url('https://fonts.googleapis.com/css?family=Titillium+Web');
/*These settings will go to all divs */
#rootDiv {
box-sizing: border-box;
position:relative;
top:0px;
font-family: 'Titillium Web', Arial, sans-serif;
font-weight: 300;
font-size: 1.05em;
margin: 0;
text-align:justify;
}
.baseDiv {
border-color: #e3e3e3;
border-style: solid;
border-width: 1px;
margin-left: -1px;
margin-top: -1px;
}
i {
font-size: 1em;
font-weight: 400;
padding: 0 0 15px;
line-height: 36px;
}
h1 {
font-size: 28px;
font-weight: 400;
padding: 0 0 15px;
}
.flexcontainer {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
align-items: center;
align-content: space-around;
}
</style>
<style>
svg {
fill: currentColor;
}
.btn {
border: none;
padding: 10px 10px;
color:inherit;
background-color: inherit;
cursor: pointer;
font-size: 20px;
-webkit-transition-duration: 0.4s; /* Safari */
transition-duration: 0.4s;
}
/* Darker background on mouse-over */
.btn:hover {
box-shadow: 0px 0px 5px rgb(0,0,0,0.5);
}
/*Torrent content grid */
.front-torrent-name{
font-size: 32px;
padding: 5px;
}
.torrent-name{
font-size: 22px;
padding: 5px;
}
.torrent-uploader{
font-size: 24px;
padding: 5px;
}
.torrent-type{
font-size: 20px;
padding: 5px;
}
.torrent-description{
font-size: 14px;
padding: 5px;
}
.torrent-tags{
font-size: 14px;
padding: 5px;
}
.flip-card {
background-color: transparent;
perspective: 1000px; /* Remove this if you don't want the 3D effect */
overflow-wrap: break-word;
}
/* This container is needed to position the front and back side */
.flip-card-inner {
position: relative;
width: 100%;
height: 100%;
text-align: center;
transition: transform 0.8s;
transform-style: preserve-3d;
}
/* Do an horizontal flip when you move the mouse over the flip box container */
.flip-card:hover .flip-card-inner {
transform: rotateY(180deg);
box-shadow: 0px 0px 20px rgb(0,0,0,0.5);
}
/* Position the front and back side */
.flip-card-front, .flip-card-back {
position: absolute;
width: 100%;
height: 100%;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
backface-visibility: hidden;
transform: rotateY(0deg);
}
/* Style the front side (fallback if image is missing) */
.flip-card-front {
color: white;
text-align: center;
}
/* Style the back side */
.flip-card-back {
color: white;
text-align: center;
transform: rotateY(180deg);
}
</style>
<style>
/*For download progress */
#downloadBar{
position: fixed;
top:30%;
left:45%;
background-color: rgba(0, 0, 0, 0.5);
}
.progress-circle {
font-size: 20px;
margin: 20px;
position: relative; /* so that children can be absolutely positioned */
padding: 0;
width: 5em;
height: 5em;
background-color: #F2E9E1;
border-radius: 50%;
line-height: 5em;
}
.progress-circle:after{
border: none;
position: absolute;
top: 0.35em;
left: 0.35em;
text-align: center;
display: block;
border-radius: 50%;
width: 4.3em;
height: 4.3em;
background-color: black;
content: " ";
}
/* Text inside the control */
.progress-circle span {
position: absolute;
line-height: 5em;
width: 5em;
text-align: center;
display: block;
color: white;
z-index: 2;
}
.left-half-clipper {
/* a round circle */
border-radius: 50%;
width: 5em;
height: 5em;
position: absolute; /* needed for clipping */
clip: rect(0, 5em, 5em, 2.5em); /* clips the whole left half*/
}
/* when p>50, don't clip left half*/
.progress-circle.over50 .left-half-clipper {
clip: rect(auto,auto,auto,auto);
}
.value-bar {
/*This is an overlayed square, that is made round with the border radius,
then it is cut to display only the left half, then rotated clockwise
to escape the outer clipping path.*/
position: absolute; /*needed for clipping*/
clip: rect(0, 2.5em, 5em, 0);
width: 5em;
height: 5em;
border-radius: 50%;
border: 0.45em solid #53777A; /*The border is 0.35 but making it larger removes visual artifacts */
/*background-color: #4D642D;*/ /* for debug */
box-sizing: border-box;
}
/* Progress bar filling the whole right half for values above 50% */
.progress-circle.over50 .first50-bar {
/*Progress bar for the first 50%, filling the whole right half*/
position: absolute; /*needed for clipping*/
clip: rect(0, 5em, 5em, 2.5em);
background-color: #53777A;
border-radius: 50%;
width: 5em;
height: 5em;
}
.progress-circle:not(.over50) .first50-bar{ display: none; }
/* Progress bar rotation position */
.progress-circle.p0 .value-bar { display: none; }
.progress-circle.p1 .value-bar { transform: rotate(4deg); }
.progress-circle.p2 .value-bar { transform: rotate(7deg); }
.progress-circle.p3 .value-bar { transform: rotate(11deg); }
.progress-circle.p4 .value-bar { transform: rotate(14deg); }
.progress-circle.p5 .value-bar { transform: rotate(18deg); }
.progress-circle.p6 .value-bar { transform: rotate(22deg); }
.progress-circle.p7 .value-bar { transform: rotate(25deg); }
.progress-circle.p8 .value-bar { transform: rotate(29deg); }
.progress-circle.p9 .value-bar { transform: rotate(32deg); }
.progress-circle.p10 .value-bar { transform: rotate(36deg); }
.progress-circle.p11 .value-bar { transform: rotate(40deg); }
.progress-circle.p12 .value-bar { transform: rotate(43deg); }
.progress-circle.p13 .value-bar { transform: rotate(47deg); }
.progress-circle.p14 .value-bar { transform: rotate(50deg); }
.progress-circle.p15 .value-bar { transform: rotate(54deg); }
.progress-circle.p16 .value-bar { transform: rotate(58deg); }
.progress-circle.p17 .value-bar { transform: rotate(61deg); }
.progress-circle.p18 .value-bar { transform: rotate(65deg); }
.progress-circle.p19 .value-bar { transform: rotate(68deg); }
.progress-circle.p20 .value-bar { transform: rotate(72deg); }
.progress-circle.p21 .value-bar { transform: rotate(76deg); }
.progress-circle.p22 .value-bar { transform: rotate(79deg); }
.progress-circle.p23 .value-bar { transform: rotate(83deg); }
.progress-circle.p24 .value-bar { transform: rotate(86deg); }
.progress-circle.p25 .value-bar { transform: rotate(90deg); }
.progress-circle.p26 .value-bar { transform: rotate(94deg); }
.progress-circle.p27 .value-bar { transform: rotate(97deg); }
.progress-circle.p28 .value-bar { transform: rotate(101deg); }
.progress-circle.p29 .value-bar { transform: rotate(104deg); }
.progress-circle.p30 .value-bar { transform: rotate(108deg); }
.progress-circle.p31 .value-bar { transform: rotate(112deg); }
.progress-circle.p32 .value-bar { transform: rotate(115deg); }
.progress-circle.p33 .value-bar { transform: rotate(119deg); }
.progress-circle.p34 .value-bar { transform: rotate(122deg); }
.progress-circle.p35 .value-bar { transform: rotate(126deg); }
.progress-circle.p36 .value-bar { transform: rotate(130deg); }
.progress-circle.p37 .value-bar { transform: rotate(133deg); }
.progress-circle.p38 .value-bar { transform: rotate(137deg); }
.progress-circle.p39 .value-bar { transform: rotate(140deg); }
.progress-circle.p40 .value-bar { transform: rotate(144deg); }
.progress-circle.p41 .value-bar { transform: rotate(148deg); }
.progress-circle.p42 .value-bar { transform: rotate(151deg); }
.progress-circle.p43 .value-bar { transform: rotate(155deg); }
.progress-circle.p44 .value-bar { transform: rotate(158deg); }
.progress-circle.p45 .value-bar { transform: rotate(162deg); }
.progress-circle.p46 .value-bar { transform: rotate(166deg); }
.progress-circle.p47 .value-bar { transform: rotate(169deg); }
.progress-circle.p48 .value-bar { transform: rotate(173deg); }
.progress-circle.p49 .value-bar { transform: rotate(176deg); }
.progress-circle.p50 .value-bar { transform: rotate(180deg); }
.progress-circle.p51 .value-bar { transform: rotate(184deg); }
.progress-circle.p52 .value-bar { transform: rotate(187deg); }
.progress-circle.p53 .value-bar { transform: rotate(191deg); }
.progress-circle.p54 .value-bar { transform: rotate(194deg); }
.progress-circle.p55 .value-bar { transform: rotate(198deg); }
.progress-circle.p56 .value-bar { transform: rotate(202deg); }
.progress-circle.p57 .value-bar { transform: rotate(205deg); }
.progress-circle.p58 .value-bar { transform: rotate(209deg); }
.progress-circle.p59 .value-bar { transform: rotate(212deg); }
.progress-circle.p60 .value-bar { transform: rotate(216deg); }
.progress-circle.p61 .value-bar { transform: rotate(220deg); }
.progress-circle.p62 .value-bar { transform: rotate(223deg); }
.progress-circle.p63 .value-bar { transform: rotate(227deg); }
.progress-circle.p64 .value-bar { transform: rotate(230deg); }
.progress-circle.p65 .value-bar { transform: rotate(234deg); }
.progress-circle.p66 .value-bar { transform: rotate(238deg); }
.progress-circle.p67 .value-bar { transform: rotate(241deg); }
.progress-circle.p68 .value-bar { transform: rotate(245deg); }
.progress-circle.p69 .value-bar { transform: rotate(248deg); }
.progress-circle.p70 .value-bar { transform: rotate(252deg); }
.progress-circle.p71 .value-bar { transform: rotate(256deg); }
.progress-circle.p72 .value-bar { transform: rotate(259deg); }
.progress-circle.p73 .value-bar { transform: rotate(263deg); }
.progress-circle.p74 .value-bar { transform: rotate(266deg); }
.progress-circle.p75 .value-bar { transform: rotate(270deg); }
.progress-circle.p76 .value-bar { transform: rotate(274deg); }
.progress-circle.p77 .value-bar { transform: rotate(277deg); }
.progress-circle.p78 .value-bar { transform: rotate(281deg); }
.progress-circle.p79 .value-bar { transform: rotate(284deg); }
.progress-circle.p80 .value-bar { transform: rotate(288deg); }
.progress-circle.p81 .value-bar { transform: rotate(292deg); }
.progress-circle.p82 .value-bar { transform: rotate(295deg); }
.progress-circle.p83 .value-bar { transform: rotate(299deg); }
.progress-circle.p84 .value-bar { transform: rotate(302deg); }
.progress-circle.p85 .value-bar { transform: rotate(306deg); }
.progress-circle.p86 .value-bar { transform: rotate(310deg); }
.progress-circle.p87 .value-bar { transform: rotate(313deg); }
.progress-circle.p88 .value-bar { transform: rotate(317deg); }
.progress-circle.p89 .value-bar { transform: rotate(320deg); }
.progress-circle.p90 .value-bar { transform: rotate(324deg); }
.progress-circle.p91 .value-bar { transform: rotate(328deg); }
.progress-circle.p92 .value-bar { transform: rotate(331deg); }
.progress-circle.p93 .value-bar { transform: rotate(335deg); }
.progress-circle.p94 .value-bar { transform: rotate(338deg); }
.progress-circle.p95 .value-bar { transform: rotate(342deg); }
.progress-circle.p96 .value-bar { transform: rotate(346deg); }
.progress-circle.p97 .value-bar { transform: rotate(349deg); }
.progress-circle.p98 .value-bar { transform: rotate(353deg); }
.progress-circle.p99 .value-bar { transform: rotate(356deg); }
.progress-circle.p100 .value-bar { transform: rotate(360deg); }
</style>
<!--Entire Document is mounted here -->
<div id="rootDiv"><div id="downloadBar"></div></div>
<div id="rootDiv">
<div id="downloadBar">
<div id="progressBar" class="progress-circle">
<div class="left-half-clipper">
<div class="first50-bar"></div>
<div class="value-bar"></div>
</div>
<span id="progressValue">Loading..</span>
</div>
</div>
</div>
<script>
const cryptocoin = "FLO"
const cryptocoin = "FLO";
const mainnet = `https://flosight.duckdns.org`;
const testnet = `https://testnet-flosight.duckdns.org`;
const adminID = "FDG64XNjdsA4rAgfm4ABEs2RcTgqn8Jecv";
@ -358,10 +367,54 @@ if(cryptocoin == "FLO")
var server = mainnet;
else if(cryptocoin == "FLO_TEST")
var server = testnet;
var torrents = [];
var searchResults = [];
var torrents = [], searchResults = [], torrentSearchIndex;
var searchKey = "";
</script>
<script>
/*
FlexSearch v0.6.22
Copyright 2019 Nextapps GmbH
Author: Thomas Wilkerling
Released under the Apache 2.0 Licence
https://github.com/nextapps-de/flexsearch
*/
//FlexSearch min mode
DEBUG = true;
'use strict';(function(I,R,v){let K;(K=v.define)&&K.amd?K([],function(){return R}):(K=v.modules)?K[I.toLowerCase()]=R:"object"===typeof exports?module.exports=R:v[I]=R})("FlexSearch",function ma(I){function v(a,b){const c=b?b.id:a&&a.id;this.id=c||0===c?c:na++;this.init(a,b);fa(this,"index",function(){return this.a?Object.keys(this.a.index[this.a.keys[0]].c):Object.keys(this.c)});fa(this,"length",function(){return this.index.length})}function K(a,b,c,d){this.u!==this.g&&(this.o=this.o.concat(c),this.u++,
d&&this.o.length>=d&&(this.u=this.g),this.u===this.g&&(this.cache&&this.l.set(b,this.o),this.F&&this.F(this.o)));return this}function S(a){const b=B();for(const c in a)if(a.hasOwnProperty(c)){const d=a[c];b[c]=E(d)?d.slice(0):J(d)?S(d):d}return b}function W(a,b){const c=a.length,d=O(b),e=[];for(let f=0,g=0;f<c;f++){const h=a[f];if(d&&b(h)||!d&&!b[h])e[g++]=h}return e}function P(a,b,c,d,e,f,g,h,l,m){c=ha(c,g?0:e,h,f,b,l,m);let n;h&&(h=c.page,n=c.next,c=c.result);if(g)b=this.where(g,null,e,c);else{b=
c;c=this.h;e=b.length;f=Array(e);for(g=0;g<e;g++)f[g]=c[b[g]];b=f}c=b;d&&(O(d)||(L=d.split(":"),1<L.length?d=oa:(L=L[0],d=pa)),c.sort(d));c=T(h,n,c);this.cache&&this.l.set(a,c);return c}function fa(a,b,c){Object.defineProperty(a,b,{get:c})}function q(a){return new RegExp(a,"g")}function Q(a,b){for(let c=0;c<b.length;c+=2)a=a.replace(b[c],b[c+1]);return a}function V(a,b,c,d,e,f,g,h){if(b[c])return b[c];e=e?(h-(g||h/1.5))*f+(g||h/1.5)*e:f;b[c]=e;e>=g&&(a=a[h-(e+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=
d);return e}function ba(a,b){if(a){const c=Object.keys(a);for(let d=0,e=c.length;d<e;d++){const f=c[d],g=a[f];if(g)for(let h=0,l=g.length;h<l;h++)if(g[h]===b){1===l?delete a[f]:g.splice(h,1);break}else J(g[h])&&ba(g[h],b)}}}function ca(a){let b="",c="";var d="";for(let e=0;e<a.length;e++){const f=a[e];if(f!==c)if(e&&"h"===f){if(d="a"===d||"e"===d||"i"===d||"o"===d||"u"===d||"y"===d,("a"===c||"e"===c||"i"===c||"o"===c||"u"===c||"y"===c)&&d||" "===c)b+=f}else b+=f;d=e===a.length-1?"":a[e+1];c=f}return b}
function qa(a,b){a=a.length-b.length;return 0>a?1:a?-1:0}function pa(a,b){a=a[L];b=b[L];return a<b?-1:a>b?1:0}function oa(a,b){const c=L.length;for(let d=0;d<c;d++)a=a[L[d]],b=b[L[d]];return a<b?-1:a>b?1:0}function T(a,b,c){return a?{page:a,next:b?""+b:null,result:c}:c}function ha(a,b,c,d,e,f,g){let h,l=[];if(!0===c){c="0";var m=""}else m=c&&c.split(":");const n=a.length;if(1<n){const y=B(),r=[];let w,x;var p=0,k;let G;var u=!0;let C,D=0,N,da,X,ea;m&&(2===m.length?(X=m,m=!1):m=ea=parseInt(m[0],10));
if(g){for(w=B();p<n;p++)if("not"===e[p])for(x=a[p],G=x.length,k=0;k<G;k++)w["@"+x[k]]=1;else da=p+1;if(H(da))return T(c,h,l);p=0}else N=M(e)&&e;let Y;for(;p<n;p++){const ra=p===(da||n)-1;if(!N||!p)if((k=N||e&&e[p])&&"and"!==k)if("or"===k)Y=!1;else continue;else Y=f=!0;x=a[p];if(G=x.length){if(u)if(C){var t=C.length;for(k=0;k<t;k++){u=C[k];var A="@"+u;g&&w[A]||(y[A]=1,f||(l[D++]=u))}C=null;u=!1}else{C=x;continue}A=!1;for(k=0;k<G;k++){t=x[k];var z="@"+t;const Z=f?y[z]||0:p;if(!(!Z&&!d||g&&w[z]||!f&&
y[z]))if(Z===p){if(ra){if(!ea||--ea<D)if(l[D++]=t,b&&D===b)return T(c,D+(m||0),l)}else y[z]=p+1;A=!0}else d&&(z=r[Z]||(r[Z]=[]),z[z.length]=t)}if(Y&&!A&&!d)break}else if(Y&&!d)return T(c,h,x)}if(C)if(p=C.length,g)for(k=m?parseInt(m,10):0;k<p;k++)a=C[k],w["@"+a]||(l[D++]=a);else l=C;if(d)for(D=l.length,X?(p=parseInt(X[0],10)+1,k=parseInt(X[1],10)+1):(p=r.length,k=0);p--;)if(t=r[p]){for(G=t.length;k<G;k++)if(d=t[k],!g||!w["@"+d])if(l[D++]=d,b&&D===b)return T(c,p+":"+k,l);k=0}}else!n||e&&"not"===e[0]||
(l=a[0],m&&(m=parseInt(m[0],10)));b&&(g=l.length,m&&m>g&&(m=0),m=m||0,h=m+b,h<g?l=l.slice(m,h):(h=0,m&&(l=l.slice(m))));return T(c,h,l)}function M(a){return"string"===typeof a}function E(a){return a.constructor===Array}function O(a){return"function"===typeof a}function J(a){return"object"===typeof a}function H(a){return"undefined"===typeof a}function ia(a){const b=Array(a);for(let c=0;c<a;c++)b[c]=B();return b}function B(){return Object.create(null)}function sa(){let a,b;self.onmessage=function(c){if(c=
c.data)if(c.search){const d=b.search(c.content,c.threshold?{limit:c.limit,threshold:c.threshold,where:c.where}:c.limit);self.postMessage({id:a,content:c.content,limit:c.limit,result:d})}else c.add?b.add(c.id,c.content):c.update?b.update(c.id,c.content):c.remove?b.remove(c.id):c.clear?b.clear():c.info?(c=b.info(),c.worker=a,console.log(c)):c.register&&(a=c.id,c.options.cache=!1,c.options.async=!1,c.options.worker=!1,b=(new Function(c.register.substring(c.register.indexOf("{")+1,c.register.lastIndexOf("}"))))(),
b=new b(c.options))}}function ta(a,b,c,d){a=I("flexsearch","id"+a,sa,function(f){(f=f.data)&&f.result&&d(f.id,f.content,f.result,f.limit,f.where,f.cursor,f.suggest)},b);const e=ma.toString();c.id=b;a.postMessage({register:e,options:c,id:b});return a}const F={encode:"icase",f:"forward",split:/\W+/,cache:!1,async:!1,g:!1,D:!1,a:!1,b:9,threshold:0,depth:0},ja={memory:{encode:"extra",f:"strict",threshold:0,b:1},speed:{encode:"icase",f:"strict",threshold:1,b:3,depth:2},match:{encode:"extra",f:"full",threshold:1,
b:3},score:{encode:"extra",f:"strict",threshold:1,b:9,depth:4},balance:{encode:"balance",f:"strict",threshold:0,b:3,depth:3},fast:{encode:"icase",f:"strict",threshold:8,b:9,depth:1}},aa=[];let na=0;const ka={},la={};v.create=function(a,b){return new v(a,b)};v.registerMatcher=function(a){for(const b in a)a.hasOwnProperty(b)&&aa.push(q(b),a[b]);return this};v.registerEncoder=function(a,b){U[a]=b.bind(U);return this};v.registerLanguage=function(a,b){ka[a]=b.filter;la[a]=b.stemmer;return this};v.encode=
function(a,b){return U[a](b)};v.prototype.init=function(a,b){this.v=[];if(b){var c=b.preset;a=b}else a||(a=F),c=a.preset;b={};M(a)?(b=ja[a],a={}):c&&(b=ja[c]);if(c=a.worker)if("undefined"===typeof Worker)a.worker=!1,this.m=null;else{var d=parseInt(c,10)||4;this.C=-1;this.u=0;this.o=[];this.F=null;this.m=Array(d);for(var e=0;e<d;e++)this.m[e]=ta(this.id,e,a,K.bind(this))}this.f=a.tokenize||b.f||this.f||F.f;this.split=a.split||this.split||F.split;this.D=a.rtl||this.D||F.D;this.async="undefined"===typeof Promise||
H(c=a.async)?this.async||F.async:c;this.g=H(c=a.worker)?this.g||F.g:c;this.threshold=H(c=a.threshold)?b.threshold||this.threshold||F.threshold:c;this.b=H(c=a.resolution)?c=b.b||this.b||F.b:c;c<=this.threshold&&(this.b=this.threshold+1);this.depth="strict"!==this.f||H(c=a.depth)?b.depth||this.depth||F.depth:c;this.w=(c=H(c=a.encode)?b.encode||F.encode:c)&&U[c]&&U[c].bind(U)||(O(c)?c:this.w||!1);(c=a.matcher)&&this.addMatcher(c);if(c=(b=a.lang)||a.filter){M(c)&&(c=ka[c]);if(E(c)){d=this.w;e=B();for(var f=
0;f<c.length;f++){var g=d?d(c[f]):c[f];e[g]=1}c=e}this.filter=c}if(c=b||a.stemmer){var h;b=M(c)?la[c]:c;d=this.w;e=[];for(h in b)b.hasOwnProperty(h)&&(f=d?d(h):h,e.push(q(f+"($|\\W)"),d?d(b[h]):b[h]));this.stemmer=h=e}this.a=e=(c=a.doc)?S(c):this.a||F.a;this.j=ia(this.b-(this.threshold||0));this.i=B();this.c=B();if(e){this.h=B();a.doc=null;h=e.index={};b=e.keys=[];d=e.field;f=e.tag;E(e.id)||(e.id=e.id.split(":"));if(f){this.G=B();g=B();if(d)if(M(d))g[d]=a;else if(E(d))for(let l=0;l<d.length;l++)g[d[l]]=
a;else J(d)&&(g=d);E(f)||(e.tag=f=[f]);for(d=0;d<f.length;d++)this.G[f[d]]=B();this.I=f;d=g}if(d){let l;E(d)||(J(d)?(l=d,e.field=d=Object.keys(d)):e.field=d=[d]);for(e=0;e<d.length;e++)f=d[e],E(f)||(l&&(a=l[f]),b[e]=f,d[e]=f.split(":")),h[f]=new v(a),h[f].h=this.h}}this.B=!0;this.l=(this.cache=c=H(c=a.cache)?this.cache||F.cache:c)?new ua(c):!1;return this};v.prototype.encode=function(a){a&&aa.length&&(a=Q(a,aa));a&&this.v.length&&(a=Q(a,this.v));a&&this.w&&(a=this.w(a));a&&this.stemmer&&(a=Q(a,this.stemmer));
return a};v.prototype.addMatcher=function(a){const b=this.v;for(const c in a)a.hasOwnProperty(c)&&b.push(q(c),a[c]);return this};v.prototype.add=function(a,b,c,d,e){if(this.a&&J(a))return this.A("add",a,b);if(b&&M(b)&&(a||0===a)){var f="@"+a;if(this.c[f]&&!d)return this.update(a,b);if(this.g)return++this.C>=this.m.length&&(this.C=0),this.m[this.C].postMessage({add:!0,id:a,content:b}),this.c[f]=""+this.C,c&&c(),this;if(!e){if(this.async&&"function"!==typeof importScripts){let r=this;f=new Promise(function(w){setTimeout(function(){r.add(a,
b,null,d,!0);r=null;w()})});if(c)f.then(c);else return f;return this}if(c)return this.add(a,b,null,d,!0),c(),this}b=this.encode(b);if(!b.length)return this;c=this.f;e=O(c)?c(b):b.split(this.split);this.filter&&(e=W(e,this.filter));const p=B();p._ctx=B();const k=e.length,u=this.threshold,t=this.depth,A=this.b,z=this.j,y=this.D;for(let r=0;r<k;r++){var g=e[r];if(g){var h=g.length,l=(y?r+1:k-r)/k,m="";switch(c){case "reverse":case "both":for(var n=h;--n;)m=g[n]+m,V(z,p,m,a,y?1:(h-n)/h,l,u,A-1);m="";
case "forward":for(n=0;n<h;n++)m+=g[n],V(z,p,m,a,y?(n+1)/h:1,l,u,A-1);break;case "full":for(n=0;n<h;n++){const w=(y?n+1:h-n)/h;for(let x=h;x>n;x--)m=g.substring(n,x),V(z,p,m,a,w,l,u,A-1)}break;default:if(h=V(z,p,g,a,1,l,u,A-1),t&&1<k&&h>=u)for(h=p._ctx[g]||(p._ctx[g]=B()),g=this.i[g]||(this.i[g]=ia(A-(u||0))),l=r-t,m=r+t+1,0>l&&(l=0),m>k&&(m=k);l<m;l++)l!==r&&V(g,h,e[l],a,0,A-(l<r?r-l:l-r),u,A-1)}}}this.c[f]=1;this.B=!1}return this};v.prototype.A=function(a,b,c){if(E(b))for(let l=0,m=b.length;l<m;l++){if(l===
m-1)return this.A(a,b[l],c);this.A(a,b[l])}else{const l=this.a.index,m=this.a.keys;var d=this.a.tag,e=this.a.id;let n;let p;for(var f=0;f<e.length;f++)n=(n||b)[e[f]];if(d){for(e=0;e<d.length;e++){var g=d[e];var h=g.split(":");for(f=0;f<h.length;f++)p=(p||b)[h[f]];p="@"+p}h=this.G[g];h=h[p]||(h[p]=[])}if("remove"===a){delete this.h[n];for(let k=0,u=m.length;k<u;k++){if(k===u-1)return l[m[k]].remove(n,c),this;l[m[k]].remove(n)}}e=this.a.field;h&&(h[h.length]=b);this.h[n]=b;for(let k=0,u=e.length;k<
u;k++){d=e[k];let t;for(g=0;g<d.length;g++)t=(t||b)[d[g]];d=l[m[k]];g="add"===a?d.add:d.update;k===u-1?g.call(d,n,t,c):g.call(d,n,t)}}return this};v.prototype.update=function(a,b,c){if(this.a&&J(a))return this.A("update",a,b);this.c["@"+a]&&M(b)&&(this.remove(a),this.add(a,b,c,!0));return this};v.prototype.remove=function(a,b,c){if(this.a&&J(a))return this.A("remove",a,b);var d="@"+a;if(this.c[d]){if(this.g)return this.m[this.c[d]].postMessage({remove:!0,id:a}),delete this.c[d],b&&b(),this;if(!c){if(this.async&&
"function"!==typeof importScripts){let e=this;d=new Promise(function(f){setTimeout(function(){e.remove(a,null,!0);e=null;f()})});if(b)d.then(b);else return d;return this}if(b)return this.remove(a,null,!0),b(),this}for(b=0;b<this.b-(this.threshold||0);b++)ba(this.j[b],a);this.depth&&ba(this.i,a);delete this.c[d];this.B=!1}return this};let L;v.prototype.search=function(a,b,c,d){if(J(b)){if(E(b))for(var e=0;e<b.length;e++)b[e].query=a;else b.query=a;a=b;b=1E3}else b&&O(b)?(c=b,b=1E3):b||0===b||(b=1E3);
let f=[],g=a;let h,l,m;if(J(a)&&!E(a)){c||(c=a.callback)&&(g.callback=null);l=a.sort;h=a.page;b=a.limit;var n=a.threshold;m=a.suggest;a=a.query}if(this.a){n=this.a.index;const y=g.where;var p=g.bool||"or",k=g.field;let r=p;let w,x;if(k)E(k)||(k=[k]);else if(E(g)){var u=g;k=[];r=[];for(var t=0;t<g.length;t++)d=g[t],e=d.bool||p,k[t]=d.field,r[t]=e,"not"===e?w=!0:"and"===e&&(x=!0)}else k=this.a.keys;p=k.length;for(t=0;t<p;t++)u&&(g=u[t]),h&&!M(g)&&(g.page=null,g.limit=0),f[t]=n[k[t]].search(g,0);if(this.g){this.F=
c;this.u=0;this.o=[];for(n=0;n<this.g;n++)this.m[n].postMessage({search:!0,limit:b,content:g});return}if(c)return c(P.call(this,a,r,f,l,b,m,y,h,x,w));if(this.async){const G=this;return new Promise(function(C){Promise.all(f).then(function(D){C(P.call(G,a,r,D,l,b,m,y,h,x,w))})})}return P.call(this,a,r,f,l,b,m,y,h,x,w)}n||(n=this.threshold||0);if(!d){if(this.async&&"function"!==typeof importScripts){let y=this;n=new Promise(function(r){setTimeout(function(){r(y.search(g,b,null,!0));y=null})});if(c)n.then(c);
else return n;return this}if(c)return c(this.search(g,b,null,!0)),this}if(!a||!M(a))return f;g=a;if(this.cache)if(this.B){if(c=this.l.get(a))return c}else this.l.clear(),this.B=!0;g=this.encode(g);if(!g.length)return f;c=this.f;c=O(c)?c(g):g.split(this.split);this.filter&&(c=W(c,this.filter));u=c.length;d=!0;e=[];const A=B();let z=0;1<u&&(this.depth&&"strict"===this.f?p=!0:c.sort(qa));if(!p||(t=this.i)){const y=this.b;for(;z<u;z++){let r=c[z];if(r){if(p){if(!k)if(t[r])k=r,A[r]=1;else if(!m)return f;
if(m&&z===u-1&&!e.length)p=!1,r=k||r,A[r]=0;else if(!k)continue}if(!A[r]){const w=[];let x=!1,G=0;const C=p?t[k]:this.j;if(C){let D;for(let N=0;N<y-n;N++)if(D=C[N]&&C[N][r])w[G++]=D,x=!0}if(x)k=r,e[e.length]=1<G?w.concat.apply([],w):w[0];else if(!m){d=!1;break}A[r]=1}}}}else d=!1;d&&(f=ha(e,b,h,m));this.cache&&this.l.set(a,f);return f};v.prototype.find=function(a,b){return this.where(a,b,1)[0]||null};v.prototype.where=function(a,b,c,d){const e=this.h,f=[];let g=0;let h;var l;let m;if(J(a)){c||(c=
b);var n=Object.keys(a);var p=n.length;h=!1;if(1===p&&"id"===n[0])return[e[a.id]];if((l=this.I)&&!d)for(var k=0;k<l.length;k++){var u=l[k],t=a[u];if(!H(t)){m=this.G[u]["@"+t];if(0===--p)return m;n.splice(n.indexOf(u),1);delete a[u];break}}l=Array(p);for(k=0;k<p;k++)l[k]=n[k].split(":")}else{if(O(a)){b=d||Object.keys(e);c=b.length;for(n=0;n<c;n++)p=e[b[n]],a(p)&&(f[g++]=p);return f}if(H(b))return[e[a]];if("id"===a)return[e[b]];n=[a];p=1;l=[a.split(":")];h=!0}d=m||d||Object.keys(e);k=d.length;for(u=
0;u<k;u++){t=m?d[u]:e[d[u]];let A=!0;for(let z=0;z<p;z++){h||(b=a[n[z]]);const y=l[z],r=y.length;let w=t;if(1<r)for(let x=0;x<r;x++)w=w[y[x]];else w=w[y[0]];if(w!==b){A=!1;break}}if(A&&(f[g++]=t,c&&g===c))break}return f};v.prototype.info=function(){if(this.g)for(let a=0;a<this.g;a++)this.m[a].postMessage({info:!0,id:this.id});else return{id:this.id,items:this.length,cache:this.cache&&this.cache.s?this.cache.s.length:!1,matcher:aa.length+(this.v?this.v.length:0),worker:this.g,threshold:this.threshold,
depth:this.depth,resolution:this.b,contextual:this.depth&&"strict"===this.f}};v.prototype.clear=function(){return this.destroy().init()};v.prototype.destroy=function(){this.cache&&(this.l.clear(),this.l=null);this.j=this.i=this.c=null;if(this.a){const a=this.a.keys;for(let b=0;b<a.length;b++)this.a.index[a[b]].destroy();this.a=this.h=null}return this};v.prototype.export=function(){let a;if(this.a){const b=this.a.keys;a=Array(b.length+1);let c=0;for(;c<b.length;c++){const d=this.a.index[b[c]];a[c]=
[d.j,d.i,Object.keys(d.c)]}a[c]=this.h}else a=[this.j,this.i,Object.keys(this.c)];return JSON.stringify(a)};v.prototype.import=function(a){a=JSON.parse(a);const b=B();if(this.a){var c=this.a.keys,d=c.length,e=a[0][2];for(var f=0;f<e.length;f++)b[e[f]]=1;for(e=0;e<d;e++)f=this.a.index[c[e]],f.j=a[e][0],f.i=a[e][1],f.c=b,f.h=a[d];this.h=a[d]}else{c=a[2];for(d=0;d<c.length;d++)b[c[d]]=1;this.j=a[0];this.i=a[1];this.c=b}};const U={icase:function(a){return a.toLowerCase()},simple:function(){const a=[q("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),
"a",q("[\u00e8\u00e9\u00ea\u00eb]"),"e",q("[\u00ec\u00ed\u00ee\u00ef]"),"i",q("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"),"o",q("[\u00f9\u00fa\u00fb\u00fc\u0171]"),"u",q("[\u00fd\u0177\u00ff]"),"y",q("\u00f1"),"n",q("[\u00e7c]"),"k",q("\u00df"),"s",q(" & ")," and ",q("[-/]")," ",q("[^a-z0-9 ]"),"",q("\\s+")," "];return function(b){b=Q(b.toLowerCase(),a);return" "===b?"":b}}(),advanced:function(){const a=[q("ae"),"a",q("ai"),"ei",q("ay"),"ei",q("ey"),"ei",q("oe"),"o",q("ue"),"u",q("ie"),"i",q("sz"),
"s",q("zs"),"s",q("sh"),"s",q("ck"),"k",q("cc"),"k",q("th"),"t",q("dt"),"t",q("ph"),"f",q("pf"),"f",q("ou"),"o",q("uo"),"u"];return function(b,c){if(!b)return b;b=this.simple(b);2<b.length&&(b=Q(b,a));c||1<b.length&&(b=ca(b));return b}}(),extra:function(){const a=[q("p"),"b",q("z"),"s",q("[cgq]"),"k",q("n"),"m",q("d"),"t",q("[vw]"),"f",q("[aeiouy]"),""];return function(b){if(!b)return b;b=this.advanced(b,!0);if(1<b.length){b=b.split(" ");for(let c=0;c<b.length;c++){const d=b[c];1<d.length&&(b[c]=
d[0]+Q(d.substring(1),a))}b=b.join(" ");b=ca(b)}return b}}(),balance:function(){const a=[q("[-/]")," ",q("[^a-z0-9 ]"),"",q("\\s+")," "];return function(b){return ca(Q(b.toLowerCase(),a))}}()},ua=function(){function a(b){this.clear();this.H=!0!==b&&b}a.prototype.clear=function(){this.cache=B();this.count=B();this.index=B();this.s=[]};a.prototype.set=function(b,c){if(this.H&&H(this.cache[b])){let d=this.s.length;if(d===this.H){d--;const e=this.s[d];delete this.cache[e];delete this.count[e];delete this.index[e]}this.index[b]=
d;this.s[d]=b;this.count[b]=-1;this.cache[b]=c;this.get(b)}else this.cache[b]=c};a.prototype.get=function(b){const c=this.cache[b];if(this.H&&c){var d=++this.count[b];const f=this.index;let g=f[b];if(0<g){const h=this.s;for(var e=g;this.count[h[--g]]<=d&&-1!==g;);g++;if(g!==e){for(d=e;d>g;d--)e=h[d-1],h[d]=e,f[e]=d;h[g]=b;f[b]=g}}}return c};return a}();return v}(function(){const I={},R="undefined"!==typeof Blob&&"undefined"!==typeof URL&&URL.createObjectURL;return function(v,K,S,W,P){S=R?URL.createObjectURL(new Blob(["("+
S.toString()+")()"],{type:"text/javascript"})):v+".min.js";v+="-"+K;I[v]||(I[v]=[]);I[v][P]=new Worker(S);I[v][P].onmessage=W;return I[v][P]}}()),this);
</script>
<script id="userNonPresentationData">
@ -537,41 +590,36 @@ function getNewestDatafromAPI(){
}
async function downloadTorrent(filename,txid,totalChunks){
var downloadBar = document.getElementById('downloadBar');
var progressBar = document.createElement("div");
document.getElementById('downloadBar').style.display = "block";
var progressBar = document.getElementById('progressBar');
progressBar.setAttribute("class","progress-circle p0");
progressBar.innerHTML = `<div class="left-half-clipper">
<div class="first50-bar"></div>
<div class="value-bar"></div>
</div>`
var progressValue = document.createElement("span");
var progressValue = document.getElementById('progressValue');
progressValue.innerHTML = `0%`;
progressBar.appendChild(progressValue);
downloadBar.appendChild(progressBar);
console.log(txid);
chunks = [];
var percent = 0;
try{
while(txid){
var response = ajax("GET",`/api/tx/${txid}`);
var floData = JSON.parse(JSON.parse(response).floData)
chunks.push(floData.data);
txid = floData.next;
percent = Math.round((chunks.length/totalChunks)*100)
progressValue.innerHTML = `${percent}%`;
if(percent < 50)
progressBar.setAttribute("class",`progress-circle p${percent}`);
else
progressBar.setAttribute("class",`progress-circle over50 p${percent}`);
try {
while (txid) {
var response = ajax("GET", `/api/tx/${txid}`);
var floData = JSON.parse(JSON.parse(response).floData)
chunks.push(floData.data);
txid = floData.next;
percent = Math.round((chunks.length / totalChunks) * 100)
progressValue.innerHTML = `${percent}%`;
if (percent < 50)
progressBar.setAttribute("class", `progress-circle p${percent}`);
else
progressBar.setAttribute("class", `progress-circle over50 p${percent}`);
}
var filedata = chunks.join("");
console.log(filedata);
download(filename,filedata);
}catch(e){
download(filename, filedata);
} catch (e) {
console.log(e);
}
downloadBar.removeChild(progressBar);
document.getElementById('downloadBar').style.display = "none";
}
function download(filename, data) {
var element = document.createElement('a');
element.setAttribute('href', 'data:application/octet-stream;charset=utf-8;base64,' + data);
@ -582,58 +630,53 @@ function getNewestDatafromAPI(){
document.body.removeChild(element);
}
function searchTorrents(){
try{
searchKey = document.getElementById("search").value;
console.log(searchKey);
searchResults = [];
for(var i = 0; i <torrents.length; i++){
if(torrents[i].name.includes(searchKey))
searchResults.push(i);
rePaint();
}
}catch(e){
function searchTorrents() {
try {
searchKey = this.value;
console.log(searchKey);
if (!searchKey)
searchResults = Array.from(Array(20).keys())
else
searchResults = torrentSearchIndex.search(searchKey);
rePaintUserData();
} catch (e) {
console.log(e);
}
}
}
function clearSearch(){
searchKey = "";
searchResults = torrents;
try{
rePaint();
}catch(e){
console.log(e);
}
}
//This function will be called by framework for you
function userDataNeedingNoRePaint(){
function userDataNeedingNoRePaint() {
console.log("StartUp");
getNewestDatafromAPI().then(function(result){
getNewestDatafromAPI().then(function (result) {
torrents = result;
console.log(torrents);
searchResults = [];
for(var i=0 ; i<torrents.length;i++)
torrentSearchIndex = new FlexSearch();
for (var i = 0; i < torrents.length; i++){
searchResults.push(i);
rePaint();
}).catch(function(error){
console.log(error.message);
torrentSearchIndex.add(i, torrents[i].name);
}
rePaintUserData();
document.getElementById("downloadBar").style.display = "none";
}).catch(function (error) {
console.log(error.message);
});
getDatafromAPI().then(function (res) {
getDataFromIDB().then(function (response) {
torrents = response.reverse();
console.log(torrents);
searchResults = [];
for(var i=0 ; i<torrents.length;i++)
torrentSearchIndex = new FlexSearch();
for (var i = 0; i < torrents.length; i++){
searchResults.push(i);
rePaint();
torrentSearchIndex.add(i, torrents[i].name);
}
rePaintUserData();
}).catch(function (error) {
console.log(error.message);
console.log(error.message);
});
}).catch(function (error) {
console.log(error.message);
console.log(error.message);
});
}
@ -673,7 +716,7 @@ function clearSearch(){
4. All user presentation code should strictly be inside the function rePaintUserData()
*/
function rePaintUserData(){
function rePaintUserData(){
//createUserDiv(baseDivNumber,howManyAdjacentDivs,heightMultiplier)
/*
//Creates a user div which spans the entire line with id div_overlay_2 which be used to style and put content inside the div. Positioning has been taken care of
@ -704,39 +747,12 @@ function clearSearch(){
<div>
<h1>FLO Torrents </h1>
<h3>Created by Ranchi Mall FLO Blockchain contract</h3>
<input type="search" id="search" value="${searchKey}" placeholder="Search torrent"/>
<button class="btn" onclick="searchTorrents()">
<svg width="20px" height="20px" viewBox="0 0 500 500">
<g>
<g>
<path d="M471.882,407.567L360.567,296.243c-16.586,25.795-38.536,47.734-64.331,64.321l111.324,111.324
c17.772,17.768,46.587,17.768,64.321,0C489.654,454.149,489.654,425.334,471.882,407.567z"/>
<path d="M363.909,181.955C363.909,81.473,282.44,0,181.956,0C81.474,0,0.001,81.473,0.001,181.955s81.473,181.951,181.955,181.951
C282.44,363.906,363.909,282.437,363.909,181.955z M181.956,318.416c-75.252,0-136.465-61.208-136.465-136.46
c0-75.252,61.213-136.465,136.465-136.465c75.25,0,136.468,61.213,136.468,136.465
C318.424,257.208,257.206,318.416,181.956,318.416z"/>
<path d="M75.817,181.955h30.322c0-41.803,34.014-75.814,75.816-75.814V75.816C123.438,75.816,75.817,123.437,75.817,181.955z"/>
</g>
</g>
</svg>
</button>
<button class="btn" onclick="clearSearch()">
<svg width="20px" height="20px" viewBox="0 0 500 500">
<g>
<g>
<path d="M405.6,69.6C360.7,24.7,301.1,0,237.6,0s-123.1,24.7-168,69.6S0,174.1,0,237.6s24.7,123.1,69.6,168s104.5,69.6,168,69.6
s123.1-24.7,168-69.6s69.6-104.5,69.6-168S450.5,114.5,405.6,69.6z M386.5,386.5c-39.8,39.8-92.7,61.7-148.9,61.7
s-109.1-21.9-148.9-61.7c-82.1-82.1-82.1-215.7,0-297.8C128.5,48.9,181.4,27,237.6,27s109.1,21.9,148.9,61.7
C468.6,170.8,468.6,304.4,386.5,386.5z"/>
<path d="M342.3,132.9c-5.3-5.3-13.8-5.3-19.1,0l-85.6,85.6L152,132.9c-5.3-5.3-13.8-5.3-19.1,0c-5.3,5.3-5.3,13.8,0,19.1
l85.6,85.6l-85.6,85.6c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4l85.6-85.6l85.6,85.6c2.6,2.6,6.1,4,9.5,4
c3.5,0,6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1l-85.4-85.6l85.6-85.6C347.6,146.7,347.6,138.2,342.3,132.9z"/>
</g>
</g>
</svg>
</button>
<input type="text" id="searchInput" placeholder="Search torrent"/>
</div>`;
var searchInput = document.getElementById("searchInput");
searchInput.addEventListener("input", searchTorrents, true);
searchInput.focus();
searchInput.value = searchKey;
for(var i=0;i<searchResults.length;i++){
var j = searchResults[i];
var grid = createFlexUserDiv(i+1);
@ -782,11 +798,10 @@ anotherDivCleanUp();
//One time tasks not needing repainting
oneTimeTasks();
function oneTimeTasks(){
function oneTimeTasks(){
createAllBaseDivs(screenAlpha.totalBoxes);
userDataNeedingNoRePaint();
rePaint();
}
function createAllBaseDivs(totalBoxes){