Advertisement
Guest User

Untitled

a guest
May 11th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.07 KB | None | 0 0
  1. program WillowDestroyer;
  2. {.include SRL/SRL.Scar}
  3. //////////////////////////////////////////////////////////////////////////////
  4. //WILLOW DESTROYER BY JUNKJWILLOW DESTROYER BY JUNKJWILLOW DESTROYER BY JUNKJ/
  5. //////////////////////////////////////////////////////////////////////////////
  6. // READ BEFORE RUNNING READ BEFORE RUNNING READ BEFORE RUNNING /
  7. //////////////////////////////////////////////////////////////////////////////
  8. // The form is only for player one. if you plan on using multiple players,
  9. // Fill in declare players (Line 32) with how many players you want to use
  10. //////////////////////////////////////////////////////////////////////////////
  11. // The script gets and uses your average time provided by the time you entered
  12. // in the parameters of the form. (More info in the form) Or use
  13. //////////////////////////////////////////////////////////////////////////////
  14.  
  15. //Globals
  16. var
  17. Chopped, Loads, ll, LOL, Tot : integer;
  18. Exp : extended;
  19. frmDesign : TForm;
  20. AvgLbl : TLabel;
  21. Blbl : TLabel;
  22. PlUser : TEdit;
  23. PlPass : TEdit;
  24. StBut : TButton;
  25. AvgHelp : TMemo;
  26. AAvg0 : TEdit;
  27. AAvg1 : TEdit;
  28. AAvg2 : TEdit;
  29. AAvg3 : TEdit;
  30. AAvg4 : TEdit;
  31. DfRB : TRadioButton;
  32. PlNick : TEdit;
  33. LoadsTD : TEdit;
  34.  
  35. procedure DeclarePlayers;
  36. begin
  37. HowManyPlayers:= 1; // Make the inactive players[#] green
  38. NumberOfPlayers(HowManyPlayers); //So you dont get a runtime error :D
  39. CurrentPlayer := 0;
  40.  
  41. ///// fill all of below in correctly
  42. Players[0].Name := PlUser.Text; //Username
  43. Players[0].Pass := PlPass.Text; //Password
  44. Players[0].Nick := PlNick.Text; //Nickname 3-4 letters no first or cap
  45. Players[0].Active := true;
  46. Players[0].Integers[0]:= StrToInt(LoadsTD.Text); //How many loads do you want to do?
  47.  
  48. {
  49. Players[1].Name := '123'; //Username
  50. Players[1].Pass := '123'; //Password
  51. Players[1].Nick := '123'; //Nickname 3-4 letters no first or cap
  52. Players[1].Active := true;
  53. Players[1].Integers[0]:= StrToInt(LoadsTD.Text); //How many loads do you want to do?
  54. {
  55. Players[2].Name := PlUser.Text; //Username
  56. Players[2].Pass := PlPass.Text; //Password
  57. Players[2].Nick := PlNick.Text; //Nickname 3-4 letters no first or cap
  58. Players[2].Active := true;
  59. Players[2].Integers[0]:= StrToInt(LoadsTD.Text); //How many loads do you want to do?}
  60. end;
  61.  
  62.  
  63. procedure startitup(sender: TObject);
  64. begin
  65. frmDesign.ModalResult:= mrOk
  66. Disguise('Working...');
  67. end;
  68.  
  69. procedure SetRandomObj;
  70. var RanObj, NoO, x, y, i, T :integer;
  71. begin
  72. NoO := BitmapFromString(23, 12, 'beNqNUQEOwiAQ40Fs2RJdnA4j0' +
  73. '/3/SbO7jnpiNJLLpZT2KCH116G5nZrpEPO5BZ7RjzvDPhc+DYUZjR' +
  74. 'lb08TdNbxcxI6JmAmNpuXSMTMbjz5bresKF8vjb5XNwsUhmMwtbwQ' +
  75. 'IIfgX6V3EyAANerClS2nklhiW6nZm9vrqFRqiLl6aXCbQ+OcQnirh' +
  76. 'jyT4qSX13ugxwP3SiYESXQwm0Eve6z+9BFDC9UhdxQBDLD1IYfHU8' +
  77. 'NSXvpgu5qQxW0JiJuc/MnnVQ1mQLdM2GTk3bLcwhq8qxls9AVo+Ey' +
  78. 'o=');
  79. RanObj := BitmapFromString(14, 14, 'beNp1kj0Lg2AMhN8fJ52ko6' +
  80. 'M4ttS1YJdSKE5O/cX6wMH1CPhyQ3K5fJi4DK/5ui7D7zuB571/TJf' +
  81. 'b2AEM3ASMo8lTwQIlpmD/NCH1YujoLmJ4FitkPhP1GFuuBnBoe49U' +
  82. 'zsRSJ5XALgVdM5WghLBL4lmRoszu2vlZYn6sD+Rhcg+p9HWssayQ2' +
  83. 'GL0A7T2l4mnnfcsV4sFyvI1xawH8tTePw==');
  84. GameTab(tab_Objectives);
  85. if(FindBitmapToleranceIn(NoO,x,y,mix1,miy1,mix2,miy2,20)) then
  86. begin
  87. Writeln('Setting Objective')
  88. If(FindBitmapToleranceIn(RanObj,x,y,mix1,miy1,mix2,miy2,20)) then
  89. begin
  90. Wait(200+Random(500));
  91. Mouse(x,y,3,3,true);
  92. MarkTime(T);
  93. repeat
  94. Wait(500+Random(250))
  95. Inc(i)
  96. until (GetColor(111, 35) = 3342540) or (TimeFromMark(T) = 5000);
  97. if not(GetColor(111, 35) = 3342540) then Exit;
  98. case Random(6) of
  99. 0..1: Mouse(94, 104, 60, 40, true);
  100. 2: Mouse(257, 104, 60, 40, true);
  101. 3: Mouse(422, 104, 60, 40, true);
  102. 4: Mouse(94, 238, 60, 40, true);
  103. 5: Mouse(257, 238, 60, 40, true);
  104. 6: Mouse(422, 238, 60, 40, true);
  105. end;
  106. FreeBitmap(NoO);
  107. FreeBitmap(RanObj);
  108. end else
  109. if(not(FindBitmapToleranceIn(NoO,x,y,mix1,miy1,mix2,miy2,20))) then
  110. begin
  111. srl_Warn( 'SetRandomObjective', 'Objective already set' ,1);
  112. Exit;
  113. FreeBitmap(NoO);
  114. FreeBitmap(RanObj);
  115. end;
  116. end;
  117. end;
  118.  
  119. procedure RandomTabs;
  120. var I :integer;
  121. begin
  122. begin
  123. for I:= 0 to RandomRange(1,3) do
  124. begin
  125. case Random(16) of
  126. 0: GameTab(tab_Combat);
  127. 1: GameTab(tab_Stats);
  128. 2: GameTab(tab_Quest);
  129. 3: GameTab(tab_Diary);
  130. 4: GameTab(tab_Inv);
  131. 5: GameTab(tab_Equip);
  132. 6: GameTab(tab_Prayer);
  133. 7: GameTab(tab_Magic);
  134. 8: GameTab(tab_Friends);
  135. 9: GameTab(tab_Ignore);
  136. 10: GameTab(tab_Clan);
  137. 11: GameTab(tab_Options);
  138. 12: GameTab(tab_Emotes);
  139. 13: GameTab(tab_Music);
  140. 14: GameTab(tab_Notes);
  141. end;
  142. Wait(RandomRange(100,300));
  143. MMouse(RandomRange(MIX1, MIX2), RandomRange(MIY1, MIY2), 0, 0);
  144. Wait(RandomRange(100,300));
  145. end;
  146. Wait(RandomRange(200,400));
  147. end;
  148. end;
  149.  
  150. procedure LogProg;
  151. begin
  152. Writeln('Terminating script because of no available players');
  153. TerminateScript;
  154. end;
  155.  
  156. procedure LogCheck;
  157. begin
  158. if(not(Loggedin))then
  159. begin
  160. Writeln('Logged out somehow');
  161. if(AllPlayersInactive)then LogProg;
  162. Writeln('Going on to next player');
  163. NextPlayer(False);
  164. end;
  165. end;
  166.  
  167. procedure AntiBan; forward;
  168.  
  169. procedure LvlProof;
  170. begin
  171. SaveScreenshot('LvlProof' + IntToSTR(ll) + '.bmp');
  172. ll := ll +1;
  173. ClickToContinue;
  174. AntiBan;
  175. end;
  176.  
  177. procedure DProg;
  178. begin
  179. Writeln('No other players to continue with, terminating');
  180. TerminateScript;
  181. end;
  182.  
  183. procedure DeathCheck;
  184. begin
  185. if(FindDead)then
  186. begin
  187. Writeln('Died somehow');
  188. if(AllPlayersInactive)then DProg;
  189. NextPlayer(False);
  190. end;
  191. end;
  192.  
  193.  
  194. procedure AntiBan;
  195. begin
  196. LogCheck;
  197. DeathCheck;
  198. if(ClickContinue(false, true)) then LvlProof;
  199. case random(70) of
  200. 0:HoverSkill('mining',false);
  201.  
  202. 1:SleepAndMoveMouse(1000+random(500));
  203.  
  204. 2:randomrclick;
  205.  
  206. 3:pickupmouse;
  207.  
  208. 4:RandomMovement;
  209.  
  210. 5:SetRandomObj;
  211.  
  212. 6:RandomTabs;
  213. end;
  214. if(ClickContinue(false, true)) then LvlProof;
  215. wait(223+random(277))
  216. end;
  217.  
  218. procedure DepoBox; forward;
  219.  
  220. procedure WTB;
  221. var
  222. x, y, BTM, R : integer;
  223. SymbolAccuracy, E : extended;
  224. begin
  225. BTM := DTMFromString('78DA637CCAC4C0F0930105181B1B32FC87B2F' +
  226. 'F0301E377A09A2F103E3354FCEB5708CD08E583D5FC2042CD7FFC' +
  227. '6A003E5E1317');
  228. if (PointInBox(Point(X, Y), IntToBox(MMCX, MMCY, MMCX + 3, MMCY + 3))) then Exit;
  229. if(FindDTMRotated(BTM, x, y, MMX1, MMY1, MMX2, MMY2, -1, 2, 0.5, E )) then
  230. begin
  231. Mouse(x, y, 2, 2, true);
  232. Case Random(2) of
  233. 0: R := 180 - RandomRange(1,5);
  234. 1: R := 180 + RandomRange(1,5);
  235. end;
  236. MakeCompass(R);
  237. Flag;
  238. FreeDTM(BTM);
  239. DepoBox;
  240. end else
  241. if(not(FindDTMRotated(BTM, x, y, MMX1, MMY1, MMX2, MMY2, -1, 2, 0.5, E ))) then
  242. begin
  243. SymbolAccuracy := 0.6;
  244. if(FindSymbol( x, y, 'bank'))then
  245. begin
  246. SymbolAccuracy := 0.8;
  247. Mouse( x, y, 2, 2, true);
  248. Case Random(2) of
  249. 0: R := 180 - RandomRange(1,5);
  250. 1: R := 180 + RandomRange(1,5);
  251. end;
  252. MakeCompass(R);
  253. Flag;
  254. FreeDTM(BTM);
  255. DepoBox;
  256. end;
  257. end;
  258. end;
  259.  
  260. procedure DestroyWill; forward;
  261.  
  262. procedure WTF; //Walk To Fish, yea i know...
  263. var
  264. x, y, R : integer;
  265. SymbolAccuracy : extended;
  266. begin
  267. SymbolAccuracy := 0.6;
  268. if(FindSymbol( x, y, 'fish'))then
  269. begin
  270. SymbolAccuracy := 0.8;
  271. Mouse( x, y, 2, 2, true);
  272. case Random(2) of
  273. 0: R := 90 - RandomRange(1,5);
  274. 1: R := 90 + RandomRange(1,5);
  275. end;
  276. MakeCompass(R);
  277. Flag;
  278. DestroyWill;
  279. end;
  280. end;
  281.  
  282. procedure DepoBox;
  283. var
  284. WIL, x, y : integer;
  285. begin
  286. WIL := DTMFromString('78DA637CC6C4C0D0CDC8800C4CF50518F8813' +
  287. '448F43F103082D434A3AA61606002933051C6F7407E270135EF80' +
  288. 'FC4904D4DC07F2A71350730DC8EFC1AF06007D2E0D52');
  289. ColorToleranceSpeed(2);
  290. SetColorSpeed2Modifiers(0.00, 0.06);
  291. if(FindColorSpiralTolerance(x, y, 6316132, MSX1, MSY1, MSX2, MSY2, 5))then
  292. SetColorSpeed2Modifiers(0.2, 0.2);
  293. ColorToleranceSpeed(1);
  294. begin
  295. MMouse(x, y, 1, 1);
  296. if(WaitUpText('ox', 100+ Random(50)))then
  297. begin
  298. Mouse(x, y, 1, 1, true);
  299. Wait(2357+Random(243));
  300. if(FindDTM(Wil, x, y, MSX1, MSY1, MSX2, MSY2))then
  301. begin
  302. Mouse(x, y, 2, 2, false)
  303. WaitOption('ll', 100+Random(50))
  304. CloseWindow;
  305. FreeDTM(WIL);
  306. Loads := Loads +1;
  307. WTF;
  308. end;
  309. end;
  310. end;
  311. end;
  312.  
  313. function Experience( Amount : integer; Exp : extended): extended;
  314. begin
  315. Result := Amount*Exp;
  316. end;
  317.  
  318. function AvgArray( Time : TIntegerArray): Integer;
  319. var
  320. Res, Tot, I : integer;
  321. begin
  322. for I := 0 to High(Time) do IncEx( Tot , Time[I]);
  323. Res := Tot div Length(Time);
  324. Result := Res;
  325. end;
  326.  
  327. function IncArray(Arr : array of variant; TArr :TVariantArray): TVariantArray;
  328. begin
  329. Arr := Tarr;
  330. Result := Arr;
  331. end;
  332.  
  333. procedure SetArrayAut;
  334. begin
  335. case random(2) of
  336. 0: LOL := 15000 + RandomRange(1,1000);
  337. 1: LOL := 15000 - RandomRange(1,1000);
  338. end;
  339. end;
  340.  
  341. procedure SetArrayMan;
  342. var
  343. A, B, C, D, E : integer;
  344. AArray: array of integer;
  345. begin
  346. A := StrToInt(AAvg0.Text)*1000;
  347. B := StrToInt(AAvg1.Text)*1000;
  348. C := StrToInt(AAvg2.Text)*1000;
  349. D := StrToInt(AAvg3.Text)*1000;
  350. E := StrToInt(AAvg4.Text)*1000;
  351. SetArrayLength(AArray, 4);
  352. AArray := [A, B, C, D, E];
  353. Lol := AvgArray(AArray);
  354. end;
  355.  
  356. procedure ChooseArraying;
  357. begin
  358. case DfRB.checked of
  359. True : SetArrayAut;
  360. False : SetArrayMan;
  361. end;
  362. end;
  363.  
  364. procedure IsChopper;
  365. var
  366. OT : integer;
  367. begin
  368. while (not(InvFull)) and (TimeFromMark(Tot) > LOL) do
  369. begin
  370. MarkTime(OT);
  371. while (not(InvFull)) and (TimeFromMark(OT) > LOL) do
  372. begin
  373. AntiBan;
  374. Wait(RandomRange(1,350))
  375. end;
  376. MarkTime(Tot);
  377. ChooseArraying;
  378. end;
  379. end;
  380.  
  381. procedure DestroyWill;
  382. var
  383. tpa : tpointarray;
  384. X, Y, I, J, K : integer;
  385. EExp : extended;
  386. begin
  387. X := MSCX;
  388. Y := MSCY;
  389. if(not(loggedin)) then exit;
  390. if(InvFull)then WTB;
  391. ColorToleranceSpeed(2);
  392. SetColorSpeed2Modifiers(0.27, 0.98);
  393. FindColorsSpiralTolerance(X, Y, TPA, 4024921, msx1, msy1, msx2, msy2, 7);
  394. SetColorSpeed2Modifiers(0.2, 0.2);
  395. ColorToleranceSpeed(1);
  396. MakeCompass('E');
  397. if(GetArrayLength(TPA) > 0)then
  398. begin
  399. mmouse(tpa[0].x, tpa[0].y, 3, 3);
  400. if(waituptext('illow',300+random(200)))then
  401. begin
  402. I := InvCount;
  403. Getmousepos(X,Y);
  404. mouse(tpa[0].x, tpa[0].y, 3, 3, true);
  405. wait(100+random(25))
  406. Flag;
  407. Wait(923+Random(87))
  408. MarkTime(Tot);
  409. ChooseArraying;
  410. IsChopper;
  411. if(TimeFromMark(Tot) > LOL) then exit;
  412. J := InvCount;
  413. K := J-I;
  414. Chopped := Chopped +K;
  415. EExp := Experience( K, 67.5);
  416. Exp := Exp + EExp;
  417. if(InvFull)then WTB;
  418. end;
  419. end;
  420. end;
  421.  
  422. procedure InItForm;
  423. begin
  424. frmDesign := CreateForm;
  425. frmDesign.Left := 263;
  426. frmDesign.Top := 137;
  427. frmDesign.Width := 348;
  428. frmDesign.Height := 252;
  429. frmDesign.Caption := 'Willow Destroyer by : Junkj';
  430. frmDesign.Color := clAqua;
  431. frmDesign.Font.Color := clWindowText;
  432. frmDesign.Font.Height := -11;
  433. frmDesign.Font.Name := 'MS Sans Serif';
  434. frmDesign.Font.Style := [];
  435. frmDesign.Visible := False;
  436. frmDesign.PixelsPerInch := 96;
  437. AvgLbl := TLabel.Create(frmDesign);
  438. AvgLbl.Parent := frmDesign;
  439. AvgLbl.Left := 176;
  440. AvgLbl.Top := 96;
  441. AvgLbl.Width := 153;
  442. AvgLbl.Height := 13;
  443. AvgLbl.Caption := 'Gets the avg time from each log.';
  444. Blbl := TLabel.Create(frmDesign);
  445. Blbl.Parent := frmDesign;
  446. Blbl.Left := 32;
  447. Blbl.Top := 144;
  448. Blbl.Width := 81;
  449. Blbl.Height := 13;
  450. Blbl.Caption := 'Current Build: 1.0';
  451. PlUser := TEdit.Create(frmDesign);
  452. PlUser.Parent := frmDesign;
  453. PlUser.Left := 24;
  454. PlUser.Top := 16;
  455. PlUser.Width := 129;
  456. PlUser.Height := 21;
  457. PlUser.TabOrder := 8;
  458. PlUser.Text := 'Username';
  459. PlPass := TEdit.Create(frmDesign);
  460. PlPass.Parent := frmDesign;
  461. PlPass.Left := 24;
  462. PlPass.Top := 48;
  463. PlPass.Width := 129;
  464. PlPass.Height := 21;
  465. PlPass.TabOrder := 9;
  466. PlPass.Text := 'Password';
  467. StBut := TButton.Create(frmDesign);
  468. StBut.Parent := frmDesign;
  469. StBut.Left := 24;
  470. StBut.Top := 168;
  471. StBut.Width := 129;
  472. StBut.Height := 40;
  473. StBut.Caption := 'Start';
  474. StBut.TabOrder := 10;
  475. StBut.OnClick := @Startitup;
  476. AvgHelp := TMemo.Create(frmDesign);
  477. AvgHelp.Parent := frmDesign;
  478. AvgHelp.Left := 160;
  479. AvgHelp.Top := 16;
  480. AvgHelp.Width := 177;
  481. AvgHelp.Height := 72;
  482. AvgHelp.Lines.Add('To fill this in, get the time it ');
  483. AvgHelp.Lines.Add('takes you to get a log five times. ');
  484. AvgHelp.Lines.Add('This helps the script adapt to');
  485. AvgHelp.Lines.Add('your chopping specs.');
  486. AvgHelp.TabOrder := 11;
  487. AAvg0 := TEdit.Create(frmDesign);
  488. AAvg0.Parent := frmDesign;
  489. AAvg0.Left := 176;
  490. AAvg0.Top := 120;
  491. AAvg0.Width := 41;
  492. AAvg0.Height := 21;
  493. AAvg0.TabOrder := 12;
  494. AAvg0.Text := '0';
  495. AAvg1 := TEdit.Create(frmDesign);
  496. AAvg1.Parent := frmDesign;
  497. AAvg1.Left := 232;
  498. AAvg1.Top := 120;
  499. AAvg1.Width := 40;
  500. AAvg1.Height := 21;
  501. AAvg1.TabOrder := 13;
  502. AAvg1.Text := '1';
  503. AAvg2 := TEdit.Create(frmDesign);
  504. AAvg2.Parent := frmDesign;
  505. AAvg2.Left := 288;
  506. AAvg2.Top := 120;
  507. AAvg2.Width := 40;
  508. AAvg2.Height := 21;
  509. AAvg2.TabOrder := 14;
  510. AAvg2.Text := '2';
  511. AAvg3 := TEdit.Create(frmDesign);
  512. AAvg3.Parent := frmDesign;
  513. AAvg3.Left := 200;
  514. AAvg3.Top := 152;
  515. AAvg3.Width := 41;
  516. AAvg3.Height := 21;
  517. AAvg3.TabOrder := 15;
  518. AAvg3.Text := '3';
  519. AAvg4 := TEdit.Create(frmDesign);
  520. AAvg4.Parent := frmDesign;
  521. AAvg4.Left := 264;
  522. AAvg4.Top := 152;
  523. AAvg4.Width := 41;
  524. AAvg4.Height := 21;
  525. AAvg4.TabOrder := 16;
  526. AAvg4.Text := '4';
  527. DfRB := TRadioButton.Create(frmDesign);
  528. DfRB.Parent := frmDesign;
  529. DfRB.Left := 176;
  530. DfRB.Top := 184;
  531. DfRB.Width := 153;
  532. DfRB.Height := 24;
  533. DfRB.Caption := 'Use default time? (~15 sec)';
  534. DfRB.TabOrder := 17;
  535. PlNick := TEdit.Create(frmDesign);
  536. PlNick.Parent := frmDesign;
  537. PlNick.Left := 24;
  538. PlNick.Top := 80;
  539. PlNick.Width := 128;
  540. PlNick.Height := 21;
  541. PlNick.TabOrder := 18;
  542. PlNick.Text := 'Nick (3-4 letters of name)';
  543. LoadsTD := TEdit.Create(frmDesign);
  544. LoadsTD.Parent := frmDesign;
  545. LoadsTD.Left := 24;
  546. LoadsTD.Top := 112;
  547. LoadsTD.Width := 41;
  548. LoadsTD.Height := 21;
  549. LoadsTD.TabOrder := 19;
  550. LoadsTD.Text := 'Loads';
  551. end;
  552.  
  553. procedure SafeInitForm;
  554. var
  555. v: TVariantArray;
  556. begin
  557. setarraylength(V, 0);
  558. ThreadSafeCall('InitForm', v);
  559. end;
  560.  
  561. procedure ShowFormModal;
  562. begin
  563. frmDesign.ShowModal;
  564. end;
  565.  
  566. procedure SafeShowFormModal;
  567. var
  568. v: TVariantArray;
  569. begin
  570. setarraylength(V, 0);
  571. ThreadSafeCall('ShowFormModal', v);
  572. end;
  573.  
  574. procedure GProgg;
  575. begin
  576. Writeln('Succesfully finished player['+ IntToStr(CurrentPlayer) + '] run.');
  577. if(AllPlayersInactive)then exit;
  578. Writeln('Moving on to next player');
  579. end;
  580.  
  581. procedure ScriptTerminate;
  582. begin
  583. Writeln('==================Willow-Destroyer================');
  584. Writeln('|Chopped a total of ' + IntToStr(Chopped) + ' logs');
  585. Writeln('|Did ' + IntToStr(Loads) + ' loads');
  586. Writeln('|Ran for ' + (TimeRunning));
  587. Writeln('|Total amount for all players');
  588. Writeln('========================JUNKJ=====================');
  589. end;
  590.  
  591. begin
  592. SetUpSRL;
  593. ClearDebug;
  594. SafeInitForm;
  595. SafeShowFormModal;
  596. Wait(1000+Random(500))
  597. DeclarePlayers;
  598. ActivateClient;
  599. GraphicsSet := True;
  600. repeat
  601. SetAngle(True);
  602. MakeCompass('E');
  603. repeat
  604. DestroyWill;
  605. LogCheck;
  606. DeathCheck;
  607. if(ClickContinue(false, true)) then LvlProof;
  608. until(Loads >= Players[CurrentPlayer].Integers[0])
  609. LogOut;
  610. GProgg;
  611. NextPlayer(false);
  612. until(AllPlayersInactive);
  613. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement