package Ġorg . ver ib lock . min ers . pop . service Ċ Ċ import Ġorg . ver ib lock . core . utilities . get Diagnostic Info Ċ import Ġorg . ver ib lock . min ers . pop . V pm Config Ċ import Ġorg . ver ib lock . min ers . pop . common . format BT CF riend ly String Ċ import Ġorg . ver ib lock . sdk . models . Diagnostic Information Ċ import Ġorg . ver ib lock . sdk . models . getS ynchron ized Message Ċ Ċ class ĠDiagnostic Service ( ĊĠĠĠ Ġprivate Ġval Ġconfig : ĠV pm Config , ĊĠĠĠ Ġprivate Ġval Ġbitcoin Service : ĠBitcoin Service , ĊĠĠĠ Ġprivate Ġval Ġnode Core Service : ĠNode Core Service Ċ ) Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġcollect Diagnostic Information (): ĠDiagnostic Information Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinformation Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe ĠNode Core Ġstatus ĊĠĠĠĠĠĠĠ Ġif Ġ( node Core Service . is Accessible ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" SUCCESS Ġ- ĠNode Core Ġconnection : ĠConnected Ġto Ġ${ config . node Core Rpc . host }:${ config . node Core Rpc . port }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠConfig ured Ġnetwork ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node Core Service . is On Same Network ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" SUCCESS Ġ- ĠNode Core Ġconfigured Ġnetwork : ĠNode Core Ġ& ĠV PM Ġare Ġrunning Ġon Ġthe Ġsame Ġconfigured Ġnetwork Ġ(${ config . bitcoin . network . name }) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" FAIL Ġ- ĠNode Core Ġconfigured Ġnetwork : ĠNode Core Ġ(${ node Core Service . latest Node Core State Info . network Version }) Ġ& ĠV PM Ġ(${ config . bitcoin . network . name }) Ġare Ġnot Ġrunning Ġon Ġthe Ġsame Ġconfigured Ġnetwork ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSynchron ization ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node Core Service . is Synchron ized ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" SUCCESS Ġ- ĠNode Core Ġsynchronization Ġstatus : ĠSynchron ized Ġ${ node Core Service . latest Node Core State Info . getS ynchron ized Message () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" FAIL Ġ- ĠNode Core Ġsynchronization Ġstatus : ĠNot Ġsynchronized . Ġ${ node Core Service . latest Node Core State Info . getS ynchron ized Message () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" FAIL Ġ- ĠNode Core Ġconnection : ĠNot Ġconnected Ġto Ġ${ config . node Core Rpc . host }:${ config . node Core Rpc . port }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" FAIL Ġ- ĠNode Core Ġunable Ġto Ġdetermine Ġthe Ġsynchronization Ġstatus ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" FAIL Ġ- ĠNode Core Ġunable Ġto Ġdetermine Ġthe Ġconfigured Ġnetwork ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe ĠBitcoin Ġstatus ĊĠĠĠĠĠĠĠ Ġif Ġ( bitcoin Service . is Service Ready ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" SUCCESS Ġ- ĠBitcoin Ġservice Ġis Ġready ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" FAIL Ġ- ĠBitcoin Ġservice Ġis Ġnot Ġready ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( bitcoin Service . is Blockchain Downloaded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" SUCCESS Ġ- ĠBlock chain Ġdownload Ġstatus : ĠDown loaded Ġ${ bitcoin Service . blockchain Download Percent } %, Ġ${ bitcoin Service . blockchain Download Blocks To Go } Ġblocks Ġto Ġgo ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" FAIL Ġ- ĠBlock chain Ġdownload Ġstatus : ĠDownloading Ġ${ bitcoin Service . blockchain Download Percent } %, Ġ${ bitcoin Service . blockchain Download Blocks To Go } Ġblocks Ġto Ġgo ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġthe Ġbalance ĊĠĠĠĠĠĠĠ Ġval Ġbalance Ġ= Ġbitcoin Service . get Balance () ĊĠĠĠĠĠĠĠ Ġif Ġ( bitcoin Service . is S ufficient ly F unded ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" SUCCESS Ġ- ĠThe ĠBTC ĠPo P Ġwallet Ġcontains Ġsufficient Ġfunds , Ġcurrent Ġbalance : Ġ${ balance . format BT CF riend ly String () }") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaximum Transaction Fee Ġ= Ġbitcoin Service . get Maximum Transaction Fee () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinformation . add (" FAIL Ġ- ĠThe ĠBTC ĠPo P Ġwallet Ġdoes Ġnot Ġcontain Ġsufficient Ġfunds : Ġcurrent Ġbalance : Ġ${ balance . format BT CF riend ly String ()}, Ġminimum Ġrequired : Ġ${ maximum Transaction Fee . format BT CF riend ly String ()}, Ġneed Ġ${ maximum Transaction Fee . subtract ( balance ). format BT CF riend ly String ()} Ġmore .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġdiagnostic Ġinformation ĊĠĠĠĠĠĠĠ Ġreturn ĠDiagnostic Information ( information , Ġget Diagnostic Info ()) ĊĠĠĠ Ġ} Ċ } Ċ