package Ġcom . sol ana . models . buffer Ċ Ċ import Ġcom . sol ana . core . PublicKey Ċ import Ġcom . sol ana . core . PublicKey Rule Ċ import Ġcom . sol ana . models . RPC Ċ import Ġcom . sol ana . models . Token Account Info Ċ import Ġcom . sol ana . vendor . bor sh j . Bor sh Cod able Ċ import Ġcom . sol ana . vendor . bor sh j . Bor sh Input Ċ import Ġcom . sol ana . vendor . bor sh j . Bor sh Output Ċ import Ġcom . sol ana . vendor . bor sh j . Bor sh Rule Ċ import Ġcom . squareup . mos hi . Json Class Ċ import Ġjava . lang . Exception Ċ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠAccount Info ( ĊĠĠĠ Ġval Ġmint : ĠPublicKey , ĊĠĠĠ Ġval Ġowner : ĠPublicKey , ĊĠĠĠ Ġval Ġl amp ort s : ĠLong , ĊĠĠĠ Ġval Ġdelegate Option : ĠInt , ĊĠĠĠ Ġvar Ġdelegate : ĠPublicKey ?, ĊĠĠĠ Ġval Ġis Initialized : ĠBoolean , ĊĠĠĠ Ġval Ġis Frozen : ĠBoolean , ĊĠĠĠ Ġval Ġstate : ĠInt , ĊĠĠĠ Ġval Ġis Native Option : ĠInt , ĊĠĠĠ Ġval Ġrent Ex empt Reserve : ĠLong ?, ĊĠĠĠ Ġval Ġis Native Raw : ĠLong , ĊĠĠĠ Ġval Ġis Native : ĠBoolean , ĊĠĠĠ Ġvar Ġdeleg ated Amount : ĠLong , ĊĠĠĠ Ġval Ġclose Authority Option : ĠInt , ĊĠĠĠ Ġvar Ġclose Authority : ĠPublicKey ? Ċ ) Ġ: ĠBor sh Cod able Ċ Ċ class ĠAccount Info Rule ( ĊĠĠĠ Ġoverride Ġval Ġclazz : ĠClass < Account Info > Ġ= ĠAccount Info :: class . java Ċ ) Ġ: ĠBor sh Rule < Account Info > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġread ( input : ĠBor sh Input ): ĠAccount Info Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmint : ĠPublicKey Ġ= ĠPublicKey Rule (). read ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġowner : ĠPublicKey Ġ= ĠPublicKey Rule (). read ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġl amp ort s : ĠLong Ġ= Ġinput . read U 6 4 () ĊĠĠĠĠĠĠĠ Ġval Ġdelegate Option : ĠInt Ġ= Ġinput . read U 3 2 () ĊĠĠĠĠĠĠĠ Ġval Ġtemp delegate : ĠPublicKey ? Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublicKey Rule (). read ( input ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstate : ĠInt Ġ= Ġinput . read (). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġis Native Option : ĠInt Ġ= Ġinput . read U 3 2 () ĊĠĠĠĠĠĠĠ Ġval Ġis Native Raw : ĠLong Ġ= Ġinput . read U 6 4 () ĊĠĠĠĠĠĠĠ Ġvar Ġdeleg ated Amount : ĠLong Ġ= Ġinput . read U 6 4 () ĊĠĠĠĠĠĠĠ Ġval Ġclose Authority Option : ĠInt Ġ= Ġinput . read U 3 2 () ĊĠĠĠĠĠĠĠ Ġvar Ġclose Authority : ĠPublicKey ? Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublicKey Rule (). read ( input ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdelegate : ĠPublicKey ? ĊĠĠĠĠĠĠĠ Ġif Ġ( delegate Option Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeleg ated Amount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Ġ= Ġtemp delegate ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġis Initialized Ġ= Ġstate Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġis Frozen Ġ= Ġstate Ġ== Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġis Native : ĠBoolean ? ĊĠĠĠĠĠĠĠ Ġval Ġrent Ex empt Reserve : ĠLong ? ĊĠĠĠĠĠĠĠ Ġif Ġ( is Native Option Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrent Ex empt Reserve Ġ= Ġis Native Raw ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Native Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrent Ex empt Reserve Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Native Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( close Authority Option Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Authority Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAccount Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmint , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġowner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl amp ort s , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Option , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Initialized , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Frozen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Native Option , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrent Ex empt Reserve , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Native Raw , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Native , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeleg ated Amount , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Authority Option , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Authority ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġ< Self > Ġwrite ( obj : ĠAny , Ġoutput : ĠBor sh Output < Self >): ĠSelf Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccount Info Ġ= Ġobj Ġas ĠAccount Info ĊĠĠĠĠĠĠĠ ĠPublicKey Rule (). write ( account Info . mint , Ġoutput ) ĊĠĠĠĠĠĠĠ ĠPublicKey Rule (). write ( account Info . owner , Ġoutput ) ĊĠĠĠĠĠĠĠ Ġoutput . write U 6 4 ( account Info . lamp ort s ) ĊĠĠĠĠĠĠĠ Ġoutput . write U 3 2 ( account Info . delegate Option ) ĊĠĠĠĠĠĠĠ Ġaccount Info . delegate ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublicKey Rule (). write ( it , Ġoutput ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublicKey Rule (). write Z eros ( output ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġoutput . write ( account Info . state . to Byte ()) ĊĠĠĠĠĠĠĠ Ġoutput . write U 3 2 ( account Info . is Native Option ) ĊĠĠĠĠĠĠĠ Ġoutput . write U 6 4 ( account Info . is Native Raw ) ĊĠĠĠĠĠĠĠ Ġoutput . write U 6 4 ( account Info . deleg ated Amount ) ĊĠĠĠĠĠĠĠ Ġoutput . write U 3 2 ( account Info . close Authority Option ) ĊĠĠĠĠĠĠĠ Ġreturn Ġaccount Info . close Authority ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublicKey Rule (). write ( it , Ġoutput ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublicKey Rule (). write Z eros ( output ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ