PageSourceSearch

https://parasited.com/amember/signup

html parasited.com collected 2026-09-29 18:19:54 UTC 64,713 bytes, 1,254 lines download raw bytes

1<!doctype html>
2<html>
3    <head>
4        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5        <meta name="viewport" content="width=device-width, initial-scale=1" />
6        <title>Subscribe: Parasited</title>
7        <!-- userLayoutHead() start -->
8
9
10<meta name="generator" content="aMember Pro" >
11<link href="https://use.fontawesome.com/releases/v6.5.1/css/all.css" media="screen" rel="stylesheet" crossorigin="anonymous" >
12
13<style type="text/css">@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/greek-ext/400/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/cyrillic-ext/400/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/symbols/400/normal.woff2);unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/vietnamese/400/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/math/400/normal.woff2);unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/latin-ext/400/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/cyrillic/400/normal.woff2);
13unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/latin/400/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/greek/400/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/math/700/normal.woff2);unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/cyrillic/700/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/vietnamese/700/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/greek-ext/700/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/symbols/700/normal.woff2);unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/latin/700/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/latin-ext/700/normal.woff2);
13unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/greek/700/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/cyrillic-ext/700/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}</style>
14<link href="/amember/application/default/views/public/css/reset.css?721751063" rel="stylesheet" >
15<link href="/amember/application/default/views/public/css/amember.css?721751063" rel="stylesheet" >
16<link href="/amember/data/public/thc--black-275172cb8dd5251b376321cc4cc384de-theme.css" rel="stylesheet" >
17<link href="/amember/application/default/views/public/css/site.css?1909497295" rel="stylesheet" >
18<link href="/amember/application/default/views/public/js/jquery/jquery.ui.css?721751063" rel="stylesheet" >
19
20<script type="text/am-vars">{"public-path":"\/amember\/","api-url":"\/amember\/","datepickerDefaults":{"closeText":"Done","prevText":"Prev","nextText":"Proceed to Checkout","currentText":"Today","monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},"langCount":0,"msg_select_state":"[Select state]"}</script>
20
21
22<script type="text/javascript">
23    //<!--
24    window.uiDateFormat = "mm\/dd\/y";
25window.uiWeekFirstDay = 0;
26window.momentDateFormat = "MM\/DD\/YY";
27window.uiDefaultDate = new Date(2026,8,29);
28    //-->
29</script>
vendor: 1 bytes, line 29
29
30<script type="text/javascript" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
vendor: 1 bytes, line 30
30
31<script type="text/javascript" src="/amember/application/default/views/public/js/vendors-admin-user.js?721751063"></script>
vendor: 1 bytes, line 31
31
32<script type="text/javascript" src="/amember/application/default/views/public/js/vendors-user.js?721751063"></script>
vendor: 1 bytes, line 32
32
33<script type="text/javascript" src="/amember/application/default/views/public/js/user.js?721751063"></script>
vendor: 1 bytes, line 33
33
34<script type="text/javascript">
35    //<!--
36    am_i18n = {"toggle_password_visibility":"Toggle Password Visibility","toggle_password_visibility_hide":"Hide Password","toggle_password_visibility_show":"Show Password","password_strength":"Password Strength","upload_browse":"browse","upload_upload":"upload","upload_files":"Uploaded Files","upload_uploading":"Uploading...","upload_remove_file":"remove file","ms_please_select":"-- Please Select --","ms_select_all":"Select All","please_wait":"Please Wait...","popup_close":"Close","file_style_browse":"Browse\u2026"};    //-->
37</script>
vendor: 1 bytes, line 37
37
38<script type="text/javascript">
39    //<!--
40    window.rootUrl = "\/amember"; //kept for compatibility only! use amUrl() instead
41function amUrl(u, return_path) {
42    var ret = "\/amember" + u;
43    return (return_path || 0) ? [ret, []] : ret;
44};    //-->
45</script>
45
46
47
48<!-- userLayoutHead() finish -->
49    </head>
50    <body class="am-logged-out am-page-signup am-page-signup-wefuckvr am-page-signup-65PolRxUI">
51    <style>
52* { box-sizing: border-box; }
53body {
54  margin: 0;
55  background: #000;
56  color: #fff;
57  font-family: Arial, sans-serif;
58}
59.page {
60  display: grid;
61  grid-template-columns: 1fr 1fr;
62  gap:15px;
63  min-height: 100vh;
64  background: #000;
65  max-width: 1100px;
66  margin: 0 auto;
67  padding: 0.5rem  0px;
68}
69.left img {
70  width: 100%;
71
72  object-fit: cover;
73}
74/* Banner variants: SFW shown by default; NSFW only when <html> has .rpbp-nsfw */
75.rpbp-banner { width: 100%; display: block; }
76.rpbp-banner-nsfw { display: none; }
77.rpbp-nsfw .rpbp-banner-sfw { display: none; }
78.rpbp-nsfw .rpbp-banner-nsfw { display: block; }
79/* Mobile banner block lives in .right and only shows on small screens */
80.left-mobile { display: none; }
81.left-mobile img { width: 100%; object-fit: cover; }
82.right {
83  padding: 0px 5px;
84  position: relative;
85}
86#rpbp-submit-overlay {
87  display: none;
88  position: absolute;
89  inset: 0;
90  z-index: 100;
91  background: rgba(0,0,0,0.72);
92  align-items: center;
93  justify-content: center;
94}
95.rpbp-spinner {
96  width: 44px;
97  height: 44px;
98  border: 4px solid rgba(255,255,255,0.15);
99  border-top-color: #614385;
100  border-radius: 50%;
101  animation: rpbp-spin 0.75s linear infinite;
102}
103@keyframes rpbp-spin { to { transform: rotate(360deg); } }
104.logo {
105  text-align: center;
106  font-size: 46px;
107  font-family: Georgia, serif;
108  margin-bottom: 0px;
109  letter-spacing: 2px;
110}
111.subtitle {
112  text-align: center;
113  font-size: 12px;
114  color: #aaa;
115  margin-bottom: 12px;
116}
117.login {
118  display: grid;
119  grid-template-columns: 1fr 1fr;
120  gap: 7px;
121  margin-bottom: 11px;
122}
123.login input {
124  height: 34px;
125  border: 1px solid #444;
126  background: #fff;
127  color: #000;
128  padding: 0 10px;
129  font-size: 12px;
130}
131h3 {
132  text-align: center;
133  font-size: 16px;
134  margin: 10px 0 6px;
135  font-weight: bold;
136}
137.tabs {
138  display: grid;
139  grid-template-columns: 1fr 1fr;
140  gap: 7px;
141  margin-bottom: 8px;
142}
143.option {
144  background: #1c1c1c;
145  border: 1px solid #444;
146  padding: 9px 8px;
147  cursor: pointer;
148  font-weight: bold;
149  text-align: center;
150  font-size: 12px;
151  position: relative;
152}
153.option.active,
154.plan.active {
155  background: #e95c7d;
156  color: #000;
157  border-color: #e95c7d;
158}
159.all-sites-wrap {
160  position: relative;
161}
162.discount-tag {
163  position: absolute;
164  top: -8px;
165  right: -6px;
166  background: #e00000;
167  color: #fff;
168  font-size: 9px;
169  font-weight: bold;
170  padding: 2px 5px;
171  border-radius: 2px;
172  z-index: 2;
173}
174.plans {
175  display: grid;
176  gap: 6px;
177  margin-bottom: 14px;
178}
179.plan {
180  display: flex;
181  justify-content: space-between;
182  align-items: center;
183  background: #222;
184  border: 1px solid #3a3a3a;
185  padding: 9px 12px;
186  cursor: pointer;
187  min-height: 54px;
188}
189.plan-title {
190  font-size: 13px;
191  font-weight: bold;
192}
193.billed {
194  font-size: 10px;
195  color: #aaa;
196  margin-top: 3px;
197}
198.plan.active .billed {
199  color: #222;
200}
201.hot-tag {
202  background: #e00000;
203  color: #fff;
204  font-size: 9px;
205  font-weight: bold;
206  padding: 2px 5px;
207  margin-left: 6px;
208  border-radius: 2px;
209}
210.plan-price {
211  text-align: right;
212}
213.day-price {
214  font-size: 18px;
215  font-weight: bold;
216}
217.per-day {
218  font-size: 10px;
219  opacity: 0.75;
220}
221.rpbp-opt-row {
222  text-align:center;
223  /*display: flex;*/
224  align-items: center;
225  justify-content: space-between;
226  gap: 10px;
227  margin-bottom: 7px;
228}
229/*
230.rpbp-opt-label {
231  font-size: 13px;
232  font-weight: bold;
233}*/
234.rpbp-opt-select {
235  flex: 1;
236  height: 38px;
237  background: #1c1c1c;
238  color: #fff;
239  border: 1px solid #614385;
240  padding: 0 8px;
241  border-radius:0;
242  font-size: 12px;
243  cursor: pointer;
244  width:100%;
245}
246.rpbp-opt-select:focus,
247.rpbp-opt-select:focus-visible,
248.rpbp-opt-select:focus-within {
249    border-radius: 0 !important;
250    border-color: #614385;
251}
252.rpbp-opt-select,
253.rpbp-opt-select:focus {
254    border-radius: 0 !important;
255    border-color: #614385 !important;
256    outline: none;
257}
258#rpbp-coupon-input:focus {
259  border-color: #614385 !important;
260  outline: none;
261}
262.payments {
263  display: grid;
264  grid-template-columns: repeat(4, 1fr);
265  gap: 7px;
266}
267.continue {
268  width: 100%;
269  margin-top: 14px;
270  background: #614385;
271  color: #000;
272  border: none;
273  padding: 14px;
274  font-size: 17px;
275  font-weight: bold;
276  cursor: pointer;
277}
278.billing-line{font-size:13px;}
279.micro-trust {
280  text-align: center;
281  margin-top: 10px;
282  font-size: 10px;
283  color: #aaa;
284  line-height: 1.4;
285}
286.billing-line strong {
287  color: #e95c7d;
288}
289.awards-logos {
290  display: flex;
291  justify-content: center;
292  gap: 10px;
293  margin: 5px 0;
294}
295.awards-logos img {
296  height: 22px;
297  opacity: 0.8;
298  filter: grayscale(100%);
299}
300.trust-note {
301  font-size: 10px;
302  opacity: 0.8;
303  margin-top:7px;
304  text-align:center;
305}
306.trust-note img{
307    max-width:55px;
308}
309.byclicking{
310    text-align:center;
311    margin-top:15px;
312    font-size:12px;
313}
314.byclicking a{
315    color:#e95c7d;
316}
317.rpbp-recurring-compliance{
318    text-align:center;
319    margin:12px 0;
320    font-size:12px;
321    opacity:0.85;
322}
323.rpbp-recurring-compliance a{
324    color:#e95c7d;
325}
326#rpbp-tabs .hot-tag{
327    position:absolute;
328    top:-10px;
329    right:5px;
330}
331@media(max-width:800px) {
332  .page { grid-template-columns: 1fr; }
333  .left{display:none;}
334  .left img { max-height: 520px; }
335  .left-mobile { display: block; margin-bottom: 10px; }
336  .left-mobile img { max-height: 520px; }
337  .payments { grid-template-columns: 1fr 1fr; }
338  .login { grid-template-columns: 1fr; }
339}
340/* aMember form integration: 2-column grid + dark theme */
341/* Strip white card + make form a 2-column flex row */
342.am-signup-inner .am-form { background: transparent !important; border: none !important; margin: 0 !important; }
343form#page-0 { border: none !important; box-shadow: none !important; background: transparent !important; }
344.am-signup-inner .am-form form {
345    display: flex !important;
346    flex-direction: row !important;
347    flex-wrap: wrap !important;
348    gap: 7px !important;
349    background: transparent !important;
350    border: none !important;
351    box-shadow: none !important;
352    padding: 0 !important;
353    margin: 0 0 0px 0 !important;
354}
355/* Strip any fieldset that may exist */
356.am-signup-inner fieldset,
357.am-signup-inner .fieldset {
358    display: contents !important;
359    border: none !important;
360    padding: 0 !important;
361    margin: 0 !important;
362    min-inline-size: auto !important;
363}
364.am-signup-inner legend { display: none !important; }
365/* Equal-width email + password side by side */
366.am-signup-inner #row-email-0,
367.am-signup-inner #row-pass-0 {
368    display: block !important;
369    flex: 1 1 0 !important;
370    min-width: 0 !important;
371    margin: 0 !important;
372}
373.am-signup-inner #row-grp-turnstile { flex: 0 0 100% !important; width: 100% !important; }
374.am-signup-inner .am-row            { background: transparent !important; margin: 0 !important; padding: 0 !important; }
375/* Kill aMember's 35% label-offset margin that was causing the massive left gap */
376.am-signup-inner .am-element        { margin-left: 0 !important; padding: 0 !important; width: 100% !important; }
377.am-signup-inner .am-element input[type=email],
378.am-signup-inner .am-element input[type=text],
379.am-signup-inner .am-element input[type=password] {
380    height: 44px;
381    border: 1px solid #444;
382    background: #fff;
383    color: #000;
384    padding: 0 10px;
385    font-size: 12px;
386    width: 100%;
387    box-sizing: border-box;
388}
389.am-signup-inner .am-element input[type=email]:focus,
390.am-signup-inner .am-element input[type=text]:focus,
391.am-signup-inner .am-element input[type=password]:focus {
392    border-color: #614385;
393    outline: none;
394    border-width:2px;
395}
396.am-signup-inner .am-element-title { display: none !important; }
397/* Password field: hide strength indicator bar (renders as line above input); fix wrapper width */
398.am-signup-inner .am-pass-indicator-bar  { display: none !important; }
399.am-signup-inner .am-pass-indicator-wrap { display: block !important; width: 100% !important; }
400.am-signup-inner #row-product_id_page-0-0,
401.am-signup-inner #row-paysys_id { display: none !important; }
402.am-signup-inner #row-buttons    { display: none !important; }
403.am-signup-inner .am-cta-signup  { display: none !important; }
404#rpbp-paysys .option, #rpbp-tabs .option, .plan, #rpbp-coupon-apply { background: #1c1c1c; color: #ffffff; border-color: #444444; }
405#rpbp-paysys .option.active, #rpbp-tabs .option.active, .plan.active { background: #614385; color: #000000; border-color: #614385; }
406.continue { background: #614385; color: #000000; border-color: #614385; }
407.billing-line strong, .byclicking a, .rpbp-recurring-compliance a { color: #614385; }
408.hot-tag { background: #e00000 !important; color: #ffffff !important; }
409</style>
410
411<div class="page rpbp-nsfw">
412  <div class="left">
413    <img class="rpbp-banner rpbp-banner-sfw"  src="/wp-content/uploads/2025/06/SignupImage_SFW_Parasited.png" alt="">    <img class="rpbp-banner rpbp-banner-nsfw" src="/wp-content/uploads/2025/06/SignupImage_SFW_Parasited.png" alt="">  </div>
414  <div class="right">
415    <div id="rpbp-submit-overlay"><div class="rpbp-spinner"></div></div>
416        <div class="logo"><img src="https://parasited.com/amember/data/public/632d0ec1edc58.png" alt="Logo" style="max-width:100%;height:auto;display:block;margin:0 auto;"></div>
417            
418
419        <h3>Create Account</h3>
420    <div class="am-signup-inner">
421      <div class="am-form ">        <form action="/amember/signup" id="page-0" method="post" data-bricks="{&quot;email&quot;:{&quot;class&quot;:&quot;email&quot;,&quot;do_not_allow_copy_paste&quot;:false},&quot;password&quot;:{&quot;class&quot;:&quot;password&quot;,&quot;do_not_allow_copy_paste&quot;:false},&quot;recaptcha&quot;:{&quot;class&quot;:&quot;recaptcha&quot;},&quot;paysystem&quot;:{&quot;class&quot;:&quot;paysystem&quot;,&quot;psHide&quot;:{&quot;netvalve&quot;:[],&quot;centrobill-crypto&quot;:[]}},&quot;java-script-4&quot;:{&quot;class&quot;:&quot;java-script&quot;},&quot;java-script-2&quot;:{&quot;class&quot;:&quot;java-script&quot;},&quot;java-script-3&quot;:{&quot;class&quot;:&quot;java-script&quot;},&quot;java-script-1&quot;:{&quot;class&quot;:&quot;java-script&quot;}}" data-saved_form_id="16" class="am-signup-form">
422<div class="am-row" id="row-email-0">                <div class="am-element-title">            <label for="email-0">
422            <span class="required">* </span>            Enter your email...            </label>                    </div>        <div class="am-element">        <input type="text" size="30" placeholder="E-Mail Address" name="email" id="email-0" />            </div></div>
423<div class="am-row" id="row-pass-0">                <div class="am-element-title">            <label for="pass-0">            <span class="required">* </span>            Create a Password            </label>                    </div>        <div class="am-element">        <input type="password" autocomplete="new-password" spellcheck="false" class="am-pass-reveal am-with-action am-pass-indicator" placeholder="Password" name="pass" id="pass-0" />            </div></div>
424<div class="am-row" id="row-grp-captcha">                <div class="am-element-title">            <label for="grp-captcha">                                     </label>                    </div>        <div class="am-element group">        
424<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?compat=recaptcha" async defer></script>
424
425<div class="g-recaptcha" 
426    data-sitekey="0x4AAAAAADYlp68nqdeZMrbD" 
427    data-theme="light" 
428    data-size="normal"
429    data-language="en"></div>            </div></div>
430<div class="am-row" id="row-paysys_id">                <div class="am-element-title">            <label for="paysys_id">            <span class="required">* </span>            Payment System            </label>                    </div>        <div class="am-element">        <label for="paysys_id---0" class="radio"><input type="radio" name="paysys_id" data-recurring="true" checked="checked" value="netvalve"  id="paysys_id---0">&nbsp;<span class="am-paysystem-title" id="am-paysystem-netvalve-title">NetValve</span> <span class="am-paysystem-desc" id="am-paysystem-netvalve-desc">Credit Card Payment</span></label><label for="paysys_id---1" class="radio"><input type="radio" name="paysys_id" data-recurring="true" value="centrobill-crypto"  id="paysys_id---1">&nbsp;<span class="am-paysystem-title" id="am-paysystem-centrobill-crypto-title">Cryptocurrency</span> <span class="am-paysystem-desc" id="am-paysystem-centrobill-crypto-desc">Pay with Bitcoin, Ethereum and other cryptocurrencies</span></label>            </div></div>
431<div class="am-row" id="row-buttons">            <div class="am-element group">        <input type="submit" value="Proceed to Checkout" class="am-cta-signup" name="_qf_page-0_next" id="_qf_page-0_next-0" />            </div></div><input type="hidden" id="_qf_default" src="data:image/gif;base64,R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs=" name="_qf_page-0_next" style="display: none;" /><input type="hidden" name="_save_" id="_save_-0" value="page-0" />    
431<script name="" id="qfauto-0">
432       document.addEventListener('DOMContentLoaded', function() {
433  if (window.location.hash === '#hentaiedpro') {
434    const interval = setInterval(function() {
435      const el = document.querySelector('#rpbp-tabs .option:nth-child(2)');
436      if (el) {
437        el.click();
438        clearInterval(interval);
439      }
440    }, 100);
441    // Give up after 5 seconds
442    setTimeout(function() { clearInterval(interval); }, 5000);
443  }
444}); 
445    </script>
445    
445<script name="" id="qfauto-1">
446        
447    </script>
447    
447<script name="" id="qfauto-2">
448       const observer = new MutationObserver(() => {
449  document.querySelectorAll('.plan-title').forEach(el => {
450    el.childNodes.forEach(node => {
451      if (node.nodeType === Node.TEXT_NODE && /\s*-\s*USD\s*/.test(node.textContent)) {
452        node.textContent = node.textContent.replace(/\s*-\s*USD\s*/, '');
453      }
454    });
455  });
456});
457
458observer.observe(document.body, { childList: true, subtree: true }); 
459    </script>
459    
459<script name="" id="qfauto-3">
460       // Store the original title and custom title
461        const originalTitle = "Subscribe: Hentaied.com";
462        const customTitle = "Come Back!";
463        
464        let interval;  // To store the interval ID
465        
466        document.addEventListener("visibilitychange", function() {
467            if (document.hidden) {
468                // Start alternating the title every second when the tab is hidden
469                let toggle = false; // To track which title to display
470                interval = setInterval(() => {
471                    document.title = toggle ? originalTitle : customTitle;
472                    toggle = !toggle; // Switch the toggle flag for alternating
473                }, 1000); // Interval of 1 second
474            } else {
475                // Clear the interval and restore the original title when the tab is active
476                clearInterval(interval);
477                document.title = originalTitle;
478            }
479        }); 
480    </script>
480</form>    </div>
481<script>
482jQuery(document).ready(function($) {
483    if (jQuery && jQuery.validator)
484    {
485        jQuery.validator.addMethod("regex", function(value, element, params) {
486            return this.optional(element) || new RegExp(params[0],params[1]).test(value);
487        }, "Invalid Value");
488
489        jQuery.validator.addMethod("requiredms", function(value, element, params) {
490            return this.optional(element) || jQuery(element).closest('div').find('input[type=hidden]').length() > 0
491        }, "This field is required.");
492
493        jQuery("form#page-0").validate({
494            ignore: ':hidden'
495            ,errorClass: "am-error"
496            ,rules: {"email":{"required":true,"remote":{"url":"\/amember\/ajax\/check-uniq-email?_url=%2Famember%2Fsignup"}},"pass":{"required":true,"rangelength":["6","32"]}}
497            ,messages: {"email":{"required":"Please enter valid Email","remote":"--wrong email--"},"pass":{"required":"Please enter Password","rangelength":"Password must be between 6 and 32 characters length"}}
498            //,debug : true
499            ,errorPlacement: function(error, element) {
500                error.appendTo( element.parent());
501            }
502                            ,submitHandler: function(form, event) {
503                    event.stopPropagation();
504                    var ev = jQuery.Event( "amFormSubmit", {
505                        originalEvent : event,
506                        callback: function(){
507                            form.submit();
508                        }
509                    });
510                    // function shall replace callback to your own code
511                    jQuery(form).trigger(ev);
512                    if (ev.callback)
513                        ev.callback();
514                }
515            // custom validate js code start
516            
517,errorElement: "span"
518            // custom validate js code end
519        });
520    }
521    // custom js code start
522    
523    // custom js code end
524});
525</script>
525    </div>
526    
527    <h3>Select Deal</h3>
528    <div class="tabs" id="rpbp-tabs">
529      <!-- Rendered by JS from RPBP_CATEGORIES -->
530    </div>
531
532    <h3>Choose An Option</h3>
533    <div class="plans" id="rpbp-plans">
534      <!-- Rendered by JS from RPBP_PRODUCTS -->
535    </div>
536
537    <div id="rpbp-options-wrap" style="display:none">
538      <!---<h3>Customize Your Plan</h3>--->
539      <div id="rpbp-options"></div>
540    </div>
541
542    <div id="rpbp-coupon-wrap" style="display:none">
543      <div id="rpbp-coupon-toggle" style="cursor:pointer;text-align:center;font-size:12px;color:#aaa;margin:10px 0 6px">Have a coupon code? <span id="rpbp-coupon-arrow">&#9654;</span></div>
544      <div id="rpbp-coupon-body" style="display:none">
545        <div style="display:flex;gap:7px;margin-bottom:6px">
546          <input type="text" id="rpbp-coupon-input" placeholder="Enter coupon code" style="flex:1;height:44px;border:1px solid #444;background:#1c1c1c;color:#fff;padding:0 10px;font-size:13px;box-sizing:border-box">
547          <button type="button" id="rpbp-coupon-apply" class="option" style="height:44px;padding:0 16px;font-size:13px">Apply</button>
548        </div>
549        <div id="rpbp-coupon-msg" style="font-size:11px;color:#aaa;min-height:16px"></div>
550      </div>
551    </div>
552
553    <h3>Choose Payment Method</h3>
554    <div class="payments" id="rpbp-paysys">
555      <!-- Rendered by JS from RPBP_PAYSYSTEMS -->
556    </div>
557
558    <button class="continue" id="continueBtn">CONTINUE &#8250;</button>
559
560    <div class="micro-trust">
561      <div class="billing-line">
562        Secure &amp; discreet billing &#8212; appears as <strong>RomeroBill</strong>
563      </div>
564      
565            <div class="trust-note"><img src="https://parasited.com/wp-content/uploads/2026/06/award-avn.svg" alt=""><img src="https://parasited.com/wp-content/uploads/2026/06/award-xbiz.svg" alt=""></div>
566          </div>
567    <div class="trust-note">Multi award-winning network (AVN &amp; XBIZ)</div>
568    <div class="byclicking">By clicking 'Continue' you confirm you are aged 18+ and have understood our <a href="/terms-and-conditions/">Terms</a> &amp; <a href="/privacy-policy/">Privacy Policy.</a> Payments are facilitated through the secure payment gateway of Netvalve and Curopayments.</div>
569    <div id="rpbp-recurring-compliance" class="rpbp-recurring-compliance" style="display:none"></div>
570  </div>
571</div>
572
573<script>
574var RPBP_PRODUCTS       = {"1":[{"id":"132","planId":"132","title":"2 Day Trial - USD","price":6.9900000000000002131628207280300557613372802734375,"period":"2d","label":"2d","currency":"USD","rebillPrice":29.989999999999998436805981327779591083526611328125,"rebillPeriod":"30d","rebillTimes":99999,"cssClass":"","hotTag":"","hidePerDay":true},{"id":"33","planId":"33","title":"30 Day Full Access - USD","price":29.989999999999998436805981327779591083526611328125,"period":"30d","label":"30d","currency":"USD","rebillPrice":29.989999999999998436805981327779591083526611328125,"rebillPeriod":"30d","rebillTimes":99999,"cssClass":"","hotTag":"Most Popular","hidePerDay":false},{"id":"100","planId":"100","title":"180 Day Full Access - USD","price":118.7999999999999971578290569595992565155029296875,"period":"6m","label":"6m","currency":"USD","rebillPrice":118.7999999999999971578290569595992565155029296875,"rebillPeriod":"6m","rebillTimes":99999,"cssClass":"","hotTag":"","hidePerDay":false},{"id":"134","planId":"134","title":"365 Day Full Access - USD","price":199.990000000000009094947017729282379150390625,"period":"1y","label":"1y","currency":"USD","rebillPrice":199.990000000000009094947017729282379150390625,"rebillPeriod":"1y","rebillTimes":99999,"cssClass":"","hotTag":"","hidePerDay":false}],"8":[{"id":"73","planId":"73","title":"Hentaied.pro Access - USD","price":69.9500000000000028421709430404007434844970703125,"period":"30d","label":"30d","currency":"USD","rebillPrice":69.9500000000000028421709430404007434844970703125,"rebillPeriod":"30d","rebillTimes":99999,"cssClass":"","hotTag":"","hidePerDay":false}]};
575var RPBP_CATEGORIES     = [{"id":"1","label":"Single Serie only","cssClass":"","hotTag":""},{"id":"8","label":"All Series Membership","cssClass":"","hotTag":"65% OFF"}];
576var RPBP_PAYSYSTEMS     = [{"id":"netvalve","title":"Credit card","recurring":true,"cssClass":""},{"id":"centrobill-crypto","title":"Crypto","recurring":true,"cssClass":""}];
577var RPBP_MATRIX         = {"2":["netvalve"],"33":["netvalve"],"72":["netvalve"],"73":["netvalve"],"99":["netvalve","centrobill-crypto"],"100":["netvalve","centrobill-crypto"],"128":["netvalve"],"129":["netvalve"],"130":["netvalve"],"131":["netvalve","centrobill-crypto"],"132":["netvalve"],"134":["netvalve","centrobill-crypto"]};
578var RPBP_DEFAULT_PAYSYS = {"2":"netvalve","33":"netvalve","72":"netvalve","73":"netvalve","99":"netvalve","100":"netvalve","128":"netvalve","129":"netvalve","130":"netvalve","131":"netvalve","132":"netvalve","134":"netvalve"};
579var RPBP_OPTIONS        = [];
580var RPBP_COUPON_MAP     = {"2":["netvalve"],"33":["netvalve"],"72":["netvalve"],"73":["netvalve"],"99":["netvalve"],"100":["netvalve"],"128":["netvalve"],"129":["netvalve"],"130":["netvalve"],"131":["netvalve"],"132":["netvalve"],"134":["netvalve"]};
581var RPBP_DEFAULT_PRODUCTS = ["2","33"];
582var RPBP_RECURRING_TEXT = "";
583
584// Left-panel banner mode. SFW by default; call rpbpSetBannerMode('nsfw') to switch
585// (the NSFW-condition logic will drive this later).
586window.rpbpSetBannerMode = function (mode) {
587    document.documentElement.classList.toggle('rpbp-nsfw', mode === 'nsfw');
588};
589
590(function () {
591    var selectedCatId  = null;
592    var selectedProdId = null;
593    var selectedPay    = null;
594
595    function enforceMatrix() {
596        if (selectedProdId === null) return;
597        // Auto-select paysys: prefer configured default for this product, fall back to first visible
598        if (!selectedPay) {
599            var payBtns = document.querySelectorAll('[data-pay]');
600            var preferred = RPBP_DEFAULT_PAYSYS[String(selectedProdId)] || null;
601            var target = null;
602            payBtns.forEach(function (btn) {
603                if (!target) target = btn;
604                if (preferred && btn.getAttribute('data-pay') === preferred) target = btn;
605            });
606            if (target) {
607                payBtns.forEach(function (btn) { btn.classList.remove('active'); });
608                target.classList.add('active');
609                selectedPay = target.getAttribute('data-pay');
610            }
611        }
612    }
613
614    function enforcePaysysByCategory() {
615        if (selectedCatId === null) return;
616        var prods = RPBP_PRODUCTS[selectedCatId] || RPBP_PRODUCTS[String(selectedCatId)] || [];
617        var available = {};
618        prods.forEach(function (prod) {
619            var allowed = RPBP_MATRIX[String(prod.id)] || [];
620            allowed.forEach(function (psId) { available[psId] = true; });
621        });
622        document.querySelectorAll('[data-pay]').forEach(function (btn) {
623            var psId = btn.getAttribute('data-pay');
624            var ok = available[psId] === true;
625            btn.style.display = ok ? '' : 'none';
626            if (!ok && btn.classList.contains('active')) {
627                btn.classList.remove('active');
628                if (selectedPay === psId) selectedPay = null;
629            }
630        });
631    }
632
633    function enforceProductsByPaysys() {
634        if (selectedPay === null) return;
635        var prodBtns = document.querySelectorAll('[data-prod]');
636        prodBtns.forEach(function (btn) {
637            var pid = String(btn.getAttribute('data-prod'));
638            var allowed = RPBP_MATRIX[pid];
639            var ok = (allowed !== undefined) && (allowed.indexOf(selectedPay) !== -1);
640            btn.style.display = ok ? '' : 'none';
641            if (!ok && btn.classList.contains('active')) {
642                btn.classList.remove('active');
643                if (String(selectedProdId) === pid) selectedProdId = null;
644            }
645        });
646        // If selected product was hidden, switch to first visible one
647        if (selectedProdId === null) {
648            prodBtns.forEach(function (btn) {
649                if (btn.style.display !== 'none' && selectedProdId === null) {
650                    btn.classList.add('active');
651                    selectedProdId = btn.getAttribute('data-prod');
652                }
653            });
654        }
655        // The active product may have changed above (e.g. a paysys 
655switch hid it),
656        // so re-render options — otherwise a previous product's options dropdown
657        // lingers when switching to a product that has none.
658        renderProductOptions();
659    }
660
661    function getSelectedOptionDeltas() {
662        var total = 0;
663        document.querySelectorAll('#rpbp-options select[data-opt-name]').forEach(function (sel) {
664            var pid  = sel.getAttribute('data-opt-pid');
665            var name = sel.getAttribute('data-opt-name');
666            if (String(pid) !== String(selectedProdId)) return;
667            var opts = RPBP_OPTIONS[String(pid)] || [];
668            opts.forEach(function (opt) {
669                if (opt.name !== name) return;
670                opt.choices.forEach(function (c) { if (c.key === sel.value) total += c.delta; });
671            });
672        });
673        return total;
674    }
675
676    function updatePlanPrice() {
677        if (!selectedProdId) return;
678        var prod = getProdData();
679        if (!prod) return;
680        var delta      = getSelectedOptionDeltas();
681        var adjPrice   = prod.price + delta;
682        var days       = parseDays(prod.period);
683        var perDay     = (Math.floor(adjPrice / days * 100) / 100).toFixed(2);
684        var currency   = prod.currency || 'USD';
685        var symbol     = currency === 'USD' ? '$' : currency === 'EUR' ? '€' : currency + ' ';
686        var planEl     = document.querySelector('[data-prod="' + selectedProdId + '"]');
687        if (!planEl) return;
688        var billedEl   = planEl.querySelector('.billed');
689        var dayPriceEl = planEl.querySelector('.day-price');
690        if (billedEl)   billedEl.textContent   = 'Billed as ' + symbol + adjPrice.toFixed(2);
691        if (dayPriceEl) dayPriceEl.textContent = symbol + perDay;
692    }
693
694    function formatPeriodHuman(period) {
695        var m = String(period).match(/^(\d+)(d|m|y)$/i);
696        if (!m) return String(period);
697        var n = parseInt(m[1], 10);
698        var u = m[2].toLowerCase();
699        var name = u === 'd' ? 'day' : u === 'm' ? 'month' : 'year';
700        return n + ' ' + name + (n === 1 ? '' : 's');
701    }
702
703    // Recurring compliance text (admin setting) shown near CONTINUE, with
704    // {amount} / {period} placeholders filled from the selected product's rebill.
705    function isSelectedPaysysRecurring() {
706        if (!selectedPay) return false;
707        for (var i = 0; i < RPBP_PAYSYSTEMS.length; i++) {
708            if (String(RPBP_PAYSYSTEMS[i].id) === String(selectedPay)) {
709                return !!RPBP_PAYSYSTEMS[i].recurring;
710            }
711        }
712        return false;
713    }
714
715    function renderRecurringCompliance() {
716        var el = document.getElementById('rpbp-recurring-compliance');
717        if (!el) return;
718        var tpl = RPBP_RECURRING_TEXT || '';
719        var prod = getProdData();
720        var _by = document.querySelector('.byclicking');
721        if (!tpl || !prod) {
722            el.style.display = 'none';
723            el.innerHTML = '';
724            if (_by) _by.style.display = '';
725            return;
726        }
727        // Recurs only when BOTH the product and the selected gateway recur.
728        // Otherwise the recurrence period is shown as "0 days".
729        var productRecurring = (prod.rebillTimes > 0) && (parseFloat(prod.rebillPrice) > 0);
730        var recurs = productRecurring && isSelectedPaysysRecurring();
731        var currency = prod.currency || 'USD';
732        var symbol = currency === 'USD' ? '$' : currency === 'EUR' ? '€' : currency + ' ';
733        var amount = symbol + parseFloat(prod.rebillPrice || 0).toFixed(2);
734        var period = recurs ? formatPeriodHuman(prod.rebillPeriod) : '0 days';
735        el.innerHTML = tpl
736            .replace(/\{amount\}/gi, amount)
737            .replace(/\{recurring_amount\}/gi, amount)
738            .replace(/\{period\}/gi, period)
739            .replace(/\{recurring_period\}/gi, period);
740        el.style.display = '';
741        if (_by) _by.style.display = 'none';
742    }
743
744    // Hide the "Choose Payment Method" heading + methods row when the whole visible
745    // category offers only one payment method — i.e. the union of methods across all
746    // products currently shown for this audience (US/non-US currency filter already
747    // applied server-side) is a single method. Nothing to choose in that case.
748    function updatePaysysSectionVisibility() {
749        var container = document.getElementById('rpbp-paysys');
750        if (!container) return;
751        var heading = container.previousElementSibling;
752        var methods = {};
753        if (selectedCatId !== null) {
754            var prods = RPBP_PRODUCTS[selectedCatId] || RPBP_PRODUCTS[String(selectedCatId)] || [];
755            prods.forEach(function(p) {
756                (RPBP_MATRIX[String(p.id)] || []).forEach(function(m) { methods[m] = true; });
757            });
758        }
759        var hide = Object.keys(methods).length <= 1;
760        container.style.display = hide ? 'none' : '';
761        if (heading && heading.tagName === 'H3') {
762            heading.style.display = hide ? 'none' : '';
763        }
764    }
765
766    function renderProductOptions() {
767        renderRecurringCompliance();
768        updatePaysysSectionVisibility();
769        var wrap = document.getElementById('rpbp-options-wrap');
770        var container = document.getElementById('rpbp-options');
771        if (!wrap || !container) return;
772        container.innerHTML = '';
773        var opts = selectedProdId ? (RPBP_OPTIONS[String(selectedProdId)] || []) : [];
774        if (opts.length === 0) {
775            wrap.style.display = 'none';
776            return;
777        }
778        wrap.style.display = '';
779        opts.forEach(function (opt) {
780            var row = document.createElement('div');
781            row.className = 'rpbp-opt-row';
782            var lbl = document.createElement('h3');
783            lbl.className = 'rpbp-opt-label';
784            lbl.textContent = opt.title;
785            var sel = document.createElement('select');
786            sel.className = 'rpbp-opt-select';
787            sel.setAttribute('data-opt-name', opt.name);
788            sel.setAttribute('data-opt-pid', String(selectedProdId));
789            opt.choices.forEach(function (c) {
790                var o = document.createElement('option');
791                o.value = c.key;
792                o.textContent = c.label;
793                if (c.key === opt.default) o.selected = true;
794                sel.appendChild(o);
795            });
796            // sel.onchange = updatePlanPrice;
797            row.appendChild(lbl);
798            row.appendChild(sel);
799            container.appendChild(row);
800
801        });
802        // updatePlanPrice();
803    }
804
805    function updateCouponVisibility() {
806        var wrap = document.getElementById('rpbp-coupon-wrap');
807        if (!wrap) return;
808        var pidCoupons = selectedProdId ? (RPBP_COUPON_MAP[String(selectedProdId)] || []) : [];
809        var show = selectedProdId && selectedPay && pidCoupons.indexOf(String(selectedPay)) !== -1;
810        if (!show) {
811            wrap.style.display = 'none';
812            document.getElementById('rpbp-coupon-body').style.display = 'none';
813            document.getElementById('rpbp-coupon-arrow').innerHTML = '&#9654;';
814        } else {
815            wrap.style.display = '';
816        }
817    }
818
819    function renderTabs() {
820        var container = document.getElementById('rpbp-tabs');
821        if (!container) return;
822        container.innerHTML = '';
823        RPBP_CATEGORIES.forEach(function (cat, idx) {
824            var div = document.createElement('div');
825            div.className = 'option' + (idx === 0 ? ' active' : '');
826            if (cat.cssClass) { div.classList.add(cat.cssClass); }
827            div.setAttribute('data-cat', cat.id);
828            if (cat.hotTag) {
829                div.innerHTML = escapeHtml(cat.label) + ' <span class="hot-tag">' + escapeHtml(cat.hotTag) + '</span>';
830            } else {
831                div.textContent = cat.label;
832            }
833            div.onclick = function () {
834                document.querySelectorAll('[data-cat]').forEach(function (x) { x.classList.remove('active'); });
835                div.classList.add('active');
836                selectedCatId = cat.id;
837                renderPlans();
838                enforcePaysysByCategory();
839                enforceMatrix();
840                enforceProductsByPaysys();
841                renderProductOptions();
842                updateCouponVisibility();
843            };
844            container.appendChild(div);
845        });
846        var show = RPBP_CATEGORIES.length >= 2;
847        container.style.display = show ? '' : 'none';
848        var heading = container.previousElementSibling;
849        if (heading) heading.style.display = show ? '' : 'none';
850        if (RPBP_CATEGORIES.length > 0) {
851            selectedCatId = RPBP_CATEGORIES[0].id;
852        }
853    }
854
855    function parseDays(period) {
856        // "2d" -> 2, "30d" -> 30, "180d" -> 180, "365d" -> 365
857        // "1m" -> 30, "6m" -> 180, "1y" -> 365 (approximate fallbacks)
858        var m = String(period).match(/^(\d+)(d|m|y)$/i);
859        if (!m) return 1;
860        var n = parseInt(m[1], 10);
861        if (m[2].toLowerCase() === 'd') return n;
862        if (m[2].toLowerCase() === 'm') return n * 30;
863        if (m[2].toLowerCase() === 'y') return n * 365;
864        return 1;
865    }
866
867    function renderPlans() {
868        var container = document.getElementById('rpbp-plans');
869        if (!container) return;
870        container.innerHTML = '';
871        var catKey = selectedCatId !== null ? selectedCatId : null;
872        // Find matching category in RPBP_PRODUCTS (keys are string category IDs)
873        var prods = null;
874        if (catKey !== null) {
875            // RPBP_PRODUCTS keys may be numeric or string
876            prods = RPBP_PRODUCTS[catKey] || RPBP_PRODUCTS[String(catKey)] || null;
877        }
878        if (!prods || prods.length === 0) return;
879
880        // Among the products actually shown, pick the default-marked one with the
881        // smallest numeric id. (Multiple products may be flagged default — e.g. a USD
882        // and a EUR variant — but only one currency is rendered per visitor.)
883        var defaultProdId = null;
884        if (RPBP_DEFAULT_PRODUCTS && RPBP_DEFAULT_PRODUCTS.length) {
885            var _defs = prods.filter(function(p) { return RPBP_DEFAULT_PRODUCTS.indexOf(String(p.id)) !== -1; });
886            if (_defs.length) {
887                _defs.sort(function(a, b) { return parseInt(a.id, 10) - parseInt(b.id, 10); });
888                defaultProdId = String(_defs[0].id);
889            }
890        }
891
892        prods.forEach(function (prod, idx) {
893            var el = document.createElement('div');
894            var isActive = defaultProdId ? (String(prod.id) === defaultProdId) : (idx === 0);
895            el.className = 'plan' + (isActive ? ' active' : '');
896            if (prod.cssClass) { el.classList.add(prod.cssClass); }
897            el.setAttribute('data-prod', prod.id);
898
899            var currency = prod.currency || 'USD';
900            var symbol = currency === 'USD' ? '$' : currency === 'EUR' ? '€' : currency + ' ';
901            var days = parseDays(prod.period);
902            var perDay = (Math.floor(prod.price / days * 100) / 100).toFixed(2);
903            var hotTag = prod.hotTag ? ' <span class="hot-tag">' + escapeHtml(prod.hotTag) + '</span>' : '';
904
905            el.innerHTML =
906                '<div class="plan-left">' +
907                  '<div class="plan-title">' + escapeHtml(prod.title) + hotTag + '</div>' +
908                  '<div class="billed">Billed as ' + symbol + prod.price.toFixed(2) + '</div>' +
909                '</div>' +
910                (prod.hidePerDay ? '' :
911                '<div class="plan-price">' +
912                  '<div class="day-price">' + symbol + perDay + '</div>' +
913                  '<div class="per-day">per day</div>' +
914                '</div>');
915
916            el.onclick = function () {
917                document.querySelectorAll('[data-prod]').forEach(function (x) { x.classList.remove('active'); });
918                el.classList.add('active');
919                selectedProdId = prod.id;
920                enforceMatrix();
921                renderProductOptions();
922                updateCouponVisibility();
923            };
924
925            container.appendChild(el);
926        });
927
928        if (prods.length > 0) {
929            selectedProdId = defaultProdId || prods[0].id;
930        }
931    }
932
933    function renderPaysystems() {
934        var container = document.getElementById('rpbp-paysys');
935        if (!container) return;
936        container.innerHTML = '';
937        RPBP_PAYSYSTEMS.forEach(function (ps, idx) {
938            var div = document.createElement('div');
939            div.className = 'option' + (idx === 0 ? ' active' : '');
940            if (ps.cssClass) { div.classList.add(ps.cssClass); }
941            div.setAttribute('data-pay', ps.id);
942            div.textContent = ps.title;
943            div.onclick = function () {
944                if (div.classList.contains('disabled')) return;
945                document.querySelectorAll('[data-pay]').forEach(function (x) { x.classList.remove('active'); });
946                div.classList.add('active');
947                selectedPay = ps.id;
948                enforceProductsByPaysys();
949                updateCouponVisibility();
950            };
951            container.appendChild(div);
952        });
953        if (RPBP_PAYSYSTEMS.length > 0) {
954            selectedPay = RPBP_PAYSYSTEMS[0].id;
955        }
956    }
957
958    function escapeHtml(str) {
959        return String(str)
960            .replace(/&/g, '&amp;')
961            .replace(/</g, '&lt;')
962            .replace(/>/g, '&gt;')
963            .replace(/"/g, '&quot;');
964    }
965
966    function getProdData() {
967        for (var catId in RPBP_PRODUCTS) {
968            var prods = RPBP_PRODUCTS[catId];
969            for (var i = 0; i < prods.length; i++) {
970                if (String(prods[i].id) === String(selectedProdId)) {
971                    return prods[i];
972                }
973            }
974        }
975        return null;
976    }
977
978    function initContinueBtn() {
979        var btn = document.getElementById('continueBtn');
980        if (!btn) return;
981
982        // Intercept Enter-key form submission: if our injected fields are absent, treat as btn click
983        var _nativeForm = document.getElementById('page-0');
984        if (_nativeForm) {
985            _nativeForm.addEventListener('submit', function(e) {
986                if (_nativeForm.querySelector('._rpbp_inject')) return; // already injected — allow through
987                e.preventDefault();
988                btn.click();
989            });
990        }
991
992        btn.addEventListener('click', function (e) {
993            e.preventDefault();
994            if (!selectedProdId) {
995                alert('Please select a plan.');
996                return;
997            }
998            if (!selectedPay) {
999                alert('Please select a payment method.');
1000                return;
1001            }
1002            var form = document.getElementById('page-0');
1003            if (!form) return;
1004
1005            var prod = getProdData();
1006            if (!prod || !prod.planId) {
1007                alert('Plan data not found. Please refresh the page.');
1008                return;
1009            }
1010
1011            // Validate account fields (email/password for logged-out users) 
1011UP FRONT.
1012            // jQuery Validate reuses existing .am-error nodes on repeated failures, so the
1013            // MutationObserver below only catches the FIRST failure. Checking validity here
1014            // means a second click on an invalid form bails before showing the overlay.
1015            if (window.jQuery) {
1016                var $form = window.jQuery(form);
1017                var _validator = $form.data('validator');
1018                if (_validator && !$form.valid()) {
1019                    return; // Validate shows/updates the messages; do not show the spinner
1020                }
1021            }
1022
1023            // Clean up from any previous click
1024            form.querySelectorAll('._rpbp_inject').forEach(function(el) { el.parentNode.removeChild(el); });
1025            form.querySelectorAll('._rpbp_inject_disabled').forEach(function(r) { r.disabled = false; r.classList.remove('_rpbp_inject_disabled'); });
1026
1027            // Disable native paysys_id radios — our injected hidden takes precedence
1028            form.querySelectorAll('input[name="paysys_id"]').forEach(function(r) { r.disabled = true; r.classList.add('_rpbp_inject_disabled'); });
1029
1030            // For virtual sub-method IDs (e.g. "curopayments.creditcard"), split into real paysys_id + sub-method
1031            var dotIdx = selectedPay.indexOf('.');
1032            var realPaysysId = dotIdx !== -1 ? selectedPay.slice(0, dotIdx) : selectedPay;
1033            var curoMethod   = dotIdx !== -1 ? selectedPay.slice(dotIdx + 1) : null;
1034
1035            // Inject coupon code only when coupon section is visible for this product+paysys combo
1036            var couponWrap = document.getElementById('rpbp-coupon-wrap');
1037            var couponVal = (couponWrap && couponWrap.style.display !== 'none')
1038                ? ((document.getElementById('rpbp-coupon-input') || {}).value || '').trim()
1039                : '';
1040            if (couponVal) {
1041                var couponInput = document.createElement('input');
1042                couponInput.type = 'hidden';
1043                couponInput.name = 'coupon';
1044                couponInput.value = couponVal.trim();
1045                couponInput.className = '_rpbp_inject';
1046                form.appendChild(couponInput);
1047            }
1048
1049            // Inject selected product option values
1050            document.querySelectorAll('#rpbp-options select[data-opt-name]').forEach(function (sel) {
1051                var optInput = document.createElement('input');
1052                optInput.type = 'hidden';
1053                optInput.name = 'rpbp_options[' + sel.getAttribute('data-opt-name') + ']';
1054                optInput.value = sel.value;
1055                optInput.className = '_rpbp_inject';
1056                form.appendChild(optInput);
1057            });
1058
1059            // rpbp_product is NOT a QF2 form element — plugin reads it directly from $_POST
1060            var prodInput = document.createElement('input');
1061            prodInput.type = 'hidden';
1062            prodInput.name = 'rpbp_product';
1063            prodInput.value = prod.id + '-' + prod.planId;
1064            prodInput.className = '_rpbp_inject';
1065            form.appendChild(prodInput);
1066
1067            var psInput = document.createElement('input');
1068            psInput.type = 'hidden';
1069            psInput.name = 'paysys_id';
1070            psInput.value = realPaysysId;
1071            psInput.className = '_rpbp_inject';
1072            form.appendChild(psInput);
1073
1074            if (curoMethod) {
1075                var curoInput = document.createElement('input');
1076                curoInput.type = 'hidden';
1077                curoInput.name = 'rpbp_payment_type_id';
1078                curoInput.value = curoMethod;
1079                curoInput.className = '_rpbp_inject';
1080                form.appendChild(curoInput);
1081            }
1082
1083            // Show overlay + lock button before handing off to aMember
1084            var overlay = document.getElementById('rpbp-submit-overlay');
1085
1086            // Hand off to aMember (validates account fields + submits). Wrapped so the
1087            // Turnstile gate below can defer it until a fresh anti-spam token exists.
1088            function _finishSubmit() {
1089                if (overlay) overlay.style.display = 'flex';
1090                btn.disabled = true;
1091
1092                // If jQuery Validate rejects the form it adds .am-error nodes — page stays.
1093                // Watch for that and clear the overlay so the user can correct and retry.
1094                var _observer = new MutationObserver(function(mutations) {
1095                    for (var mi = 0; mi < mutations.length; mi++) {
1096                        for (var ni = 0; ni < mutations[mi].addedNodes.length; ni++) {
1097                            var node = mutations[mi].addedNodes[ni];
1098                            if (node.nodeType === 1 && (node.classList.contains('am-error') || node.querySelector && node.querySelector('.am-error'))) {
1099                                if (overlay) overlay.style.display = 'none';
1100                                btn.disabled = false;
1101                                _observer.disconnect();
1102                                return;
1103                            }
1104                        }
1105                    }
1106                });
1107                _observer.observe(form, { childList: true, subtree: true });
1108
1109                // Click aMember's submit button to trigger jQuery validation on account fields.
1110                // When user is already logged in the native submit button is absent — fall back to direct submit.
1111                var submitBtn = form.querySelector('input[type="submit"]');
1112                if (submitBtn) { submitBtn.disabled = false; submitBtn.click(); } else { form.submit(); }
1113            }
1114
1115            // --- Cloudflare Turnstile gate ---
1116            // The anti-spam brick fails server-side ("Anti Spam check failed") if the
1117            // g-recaptcha-response token is missing/stale at submit — which happens with
1118            // an invisible/managed widget that hasn't produced a token yet. Read the
1119            // current token; if absent, trigger execute() and poll briefly before
1120            // handing off. If it never arrives, tell the user instead of failing.
1121            function _tsToken() {
1122                // Search the whole document — some Turnstile modes append the response
1123                // field outside the form.
1124                var v = '';
1125                document.querySelectorAll('[name="g-recaptcha-response"], [name="cf-turnstile-response"]').forEach(function(el) {
1126                    if (!v && el.value) v = el.value;
1127                });
1128                if (!v && window.grecaptcha && grecaptcha.getResponse) { try { v = grecaptcha.getResponse() || ''; } catch (_e) {} }
1129                if (!v && window.turnstile && turnstile.getResponse)   { try { v = turnstile.getResponse() || ''; } catch (_e) {} }
1130                return v;
1131            }
1132
1133            var turnstileEl = form.querySelector('.g-recaptcha, .cf-turnstile');
1134            if (!turnstileEl || _tsToken()) {
1135                _finishSubmit();
1136                return;
1137            }
1138
1139            // Token not ready — show the spinner and poll. Only invisible widgets need
1140            // an explicit execute(); normal/managed widgets auto-run, and calling
1141            // execute() on them throws "already executing".
1142            if (overlay) overlay.style.display = 'flex';
1143            btn.disabled = true;
1144            if (turnstileEl.getAttribute('data-size') === 'invisible') {
1145                try { if (window.grecaptcha && grecaptcha.execute) gre
1145captcha.execute(); } catch (_e) {}
1146                try { if (window.turnstile && turnstile.execute)   turnstile.execute();   } catch (_e) {}
1147            }
1148
1149            var _tsWaited = 0;
1150            var _tsPoll = setInterval(function() {
1151                if (_tsToken()) {
1152                    clearInterval(_tsPoll);
1153                    _finishSubmit();
1154                    return;
1155                }
1156                _tsWaited += 250;
1157                if (_tsWaited >= 10000) {
1158                    clearInterval(_tsPoll);
1159                    if (overlay) overlay.style.display = 'none';
1160                    btn.disabled = false;
1161                    alert('Please complete the anti-spam check and try again.');
1162                }
1163            }, 250);
1164        });
1165    }
1166
1167    function init() {
1168        renderTabs();
1169        renderPaysystems();
1170        renderPlans();
1171        enforcePaysysByCategory();
1172        enforceMatrix();
1173        enforceProductsByPaysys();
1174        renderProductOptions();
1175        updateCouponVisibility();
1176        initContinueBtn();
1177
1178        // Coupon toggle
1179        var couponToggle = document.getElementById('rpbp-coupon-toggle');
1180        var couponBody   = document.getElementById('rpbp-coupon-body');
1181        var couponArrow  = document.getElementById('rpbp-coupon-arrow');
1182        if (couponToggle && couponBody) {
1183            couponToggle.addEventListener('click', function () {
1184                var open = couponBody.style.display !== 'none';
1185                couponBody.style.display = open ? 'none' : '';
1186                couponArrow.innerHTML = open ? '&#9654;' : '&#9660;';
1187            });
1188        }
1189        var couponApply = document.getElementById('rpbp-coupon-apply');
1190        if (couponApply) {
1191            couponApply.addEventListener('click', function () {
1192                var code = (document.getElementById('rpbp-coupon-input').value || '').trim();
1193                var msg  = document.getElementById('rpbp-coupon-msg');
1194                if (code) {
1195                    msg.textContent = '✓ Code “' + code + '” will be applied on checkout';
1196                    msg.style.color = '#7ecf7e';
1197                } else {
1198                    msg.textContent = 'Please enter a coupon code.';
1199                    msg.style.color = '#f08080';
1200                }
1201            });
1202        }
1203    }
1204
1205    if (document.readyState === 'loading') {
1206        document.addEventListener('DOMContentLoaded', init);
1207    } else {
1208        init();
1209    }
1210
1211    window.addEventListener('pageshow', function(e) {
1212        if (!e.persisted) return;
1213        // bfcache restore — clean submit state
1214        var overlay = document.getElementById('rpbp-submit-overlay');
1215        var btn     = document.getElementById('continueBtn');
1216        var form    = document.getElementById('page-0');
1217        if (overlay) overlay.style.display = 'none';
1218        if (btn)     btn.disabled = false;
1219        if (form) {
1220            var nativeSubmit = form.querySelector('input[type="submit"]');
1221            if (nativeSubmit) nativeSubmit.disabled = false;
1222            form.querySelectorAll('._rpbp_inject').forEach(function(el) { el.parentNode.removeChild(el); });
1223            form.querySelectorAll('._rpbp_inject_disabled').forEach(function(r) { r.disabled = false; r.classList.remove('_rpbp_inject_disabled'); });
1224        }
1225        // Clear coupon
1226        var couponInput = document.getElementById('rpbp-coupon-input');
1227        var couponMsg   = document.getElementById('rpbp-coupon-msg');
1228        var couponBody  = document.getElementById('rpbp-coupon-body');
1229        var couponArrow = document.getElementById('rpbp-coupon-arrow');
1230        if (couponInput) couponInput.value = '';
1231        if (couponMsg)   couponMsg.textContent = '';
1232        if (couponBody)  couponBody.style.display = 'none';
1233        if (couponArrow) couponArrow.innerHTML = '&#9654;';
1234        // Reset product/paysys selection
1235        renderPaysystems();
1236        renderPlans();
1237        enforcePaysysByCategory();
1238        enforceMatrix();
1239        enforceProductsByPaysys();
1240        renderProductOptions();
1241        updateCouponVisibility();
1242    });
1243}());
1244</script>
1244    <!-- Google Tag Manager -->
1245<script>
vendor: 327 bytes, lines 1245-1249
1245(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1246new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1247j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
1248'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1249})(window,document,'script','dataLayer','
1249GTM-KJNCXKR
vendor: 3 bytes, line 1249
1249');
1249</script>
1249
1250<!-- End Google Tag Manager --><!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 1250-1251
1250
1251<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1251GTM-KJNCXKR
vendor: 83 bytes, lines 1251-1252
1251"
1252height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1253<!-- End Google Tag Manager (noscript) --><img src='/amember/cron/tasks' width='1' height='1' style='display:none'></body>
1254</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.