Slide 1

Slide 1 text

%SPJE,BJHJ4FQBU*HVBOB IUUQTESPJELBJHJKQUJNFUBCMF %FCVHHJOH "MM:PV/FFEUP,OPX Jumpei Matsuda @red_fat_daruma

Slide 2

Slide 2 text

2 Jumpei Matsuda @red_fat_daruma Software Architect at DeployGate, Inc. Android App and SDK Development Gradle Plugin Development Development Productivity Engineering Rails App Development and more... .F https://deploygate.com

Slide 3

Slide 3 text

w ✅+7.%FCVHHFSXJUI"OESPJE4UVEJP w ✅0 ffi DJBMEFCVHPQUJPOT w ❌"OESPJE/%, ,PUMJO/BUJWF w ❌SEQBSUZEFCVHMJCSBSJFTUPPMT w ❌%ZOBNJDQSPHSBNBOBMZTJT BTQFDUPSJFOUFEQSPHSBNNJOH $PWFSBHFPGUIJTQSFTFOUBUJPO 3

Slide 4

Slide 4 text

Motivations for Debugging 4 1/10

Slide 5

Slide 5 text

w PGFOHJOFFSTTQFOEUIFNPTUUJNFPOXSJUJOHOFXDPEFEBJMZ<> w 4PNFFOHJOFFSTPO2VPSBTBJEPGUIFJSUJNFPOEFCVHHJOH<> 8FTQFOENVDIUJNFPODPEJOH 5 [1] GitHub https://github.blog/news-insights/research/survey-reveals-ais-impact-on-the-developer-experience/ [2] Quora - https://www.quora.com/How-much-time-does-a-programmer-spend-on-debugging

Slide 6

Slide 6 text

w *T%FCVHHJOHPOMZGPS fi YJOHCVHT w /P EFCVHHJOHJTNPSFHFOFSJD w 'PSFYBNQMF XFPGUFOEFCVHBOBQQFWFOXIJMFBEEJOHBOFXGFBUVSF w %FCVHHJOHJTSFRVJSFEJGBOFXDPEFEPFTOUXPSLBTFYQFDUFE w &OHJOFFSTCBTJDBMMZEFCVHUIFJSQSPEVDUDPEFFWFSZEBZ w 6OMFTTUIFZBSFGBVMUMFTTQFPQMFQ .BZ%FCVHHJOHCFXJUIZPV 6

Slide 7

Slide 7 text

w *OWFTUJHBUJPO w *EFOUJGZDBVTFTPGFSSPST w 7FSJGZIPXDPEFXPSLT w &WBMVBUFBTTVNQUJPOBOEIZQPUIFTJT w 'FBUVSF-PDBUJPO w *NQMFNFOUBUJPO 5IFDPNNPOEFCVHHJOHQSPDFTT 7

Slide 8

Slide 8 text

w *OWFTUJHBUJPO w *EFOUJGZDBVTFTPGFSSPST w 7FSJGZIPXDPEFXPSLT w &WBMVBUFBTTVNQUJPOBOEIZQPUIFTJT w 'FBUVSF-PDBUJPO w *NQMFNFOUBUJPO 5IFDPNNPOEFCVHHJOHQSPDFTT 8

Slide 9

Slide 9 text

The Great Debugging Method 9 2/10

Slide 10

Slide 10 text

w +VTUNPEJGZDPEFUPBEEQSJOUTUBUFNFOUTXJUISFDPSEJOHWBMVFT w &BTZUPVTFCVUJUTBMPDBMTPMVUJPO w 1SJOUJOHXPSLTXJUIPOMZZPVSPXODPEF w 5IFTUBUFNFOUTNVTUCFSFMJBCMFOPTJEFF ff FDU OPOUJNFBXBSFWBMVF 1SJOUJOH1SJOU%FCVHHJOH 10

Slide 11

Slide 11 text

1SJOUJOH1SJOU%FCVHHJOH 11

Slide 12

Slide 12 text

1SJOUJOH1SJOU%FCVHHJOH 12

Slide 13

Slide 13 text

1SJOUJOH1SJOU%FCVHHJOH 13

Slide 14

Slide 14 text

1SJOUJOH1SJOU%FCVHHJOH 14

Slide 15

Slide 15 text

1SJOUJOH1SJOU%FCVHHJOH 15

Slide 16

Slide 16 text

w +VTUNPEJGZDPEFUPBEEQSJOUTUBUFNFOUTXJUISFDPSEJOHWBMVFT w &BTZUPVTFCVUJUTBMPDBMTPMVUJPO w 1SJOUJOHXPSLTXJUIPOMZZPVSPXODPEF w 5IFTUBUFNFOUTNVTUCFSFMJBCMFOPTJEFF ff FDU OPOUJNFBXBSFWBMVF w 4PNFUJNFT JUXPVMECFBUJNFDPOTVNJOHEFCVHHJOH w :PVNBZOFFEUPNPEJGZDPEFBOESVOUIFBQQTPNBOZUJNFT w %FUFSNJOJTUJDGPSNVMUJQMFFWBMVBUJPOT CBDLXBSEBQQSPBDI 1SJOUJOH1SJOU%FCVHHJOH 16

Slide 17

Slide 17 text

Getting Started with Debugger Don't become a print debugging expert 17 3/10

Slide 18

Slide 18 text

w .BSLMJOFTUPBMMPXJOUFSBDUJPOTGSPN%FCVHHFS w 5PHHMFMJOFCSFBLQPJOUTCZUBQQJOHBHVUUFSPGBOFEJUPS w "UUIFCPUIPGSVOUJNFBOECFGPSFMBVODIJOHUIFBQQ -JOF#SFBLQPJOUT 18

Slide 19

Slide 19 text

w 0QFOUIFQBOFCFMPXJGZPVSBQQQBTTFTCSFBLQPJOUT w :PVSBQQIBTCFFOTVTQFOEFEXIFOUIJTQBOFMBVODIFT %FCVHHFS1BOF 19

Slide 20

Slide 20 text

w 4FMFDUBUISFBEUPJOTQFDUEBUBJGOFFEFE w "UISFBEUIBUQBTTFTBCSFBLQPJOUJTDIPTFOCZEFGBVMU 5ISFBET 20

Slide 21

Slide 21 text

w "TFRVFODFPGNFUIPEDBMMTOPUMJNJUFEUPZPVSPXODPEF 'SBNFT 21

Slide 22

Slide 22 text

w $IFDLUIFDVSSFOUTUBUFOPUMJNJUFEUPZPVSPXODPEF %BUB*OTQFDUJPOGPSFBDI'SBNF 22

Slide 23

Slide 23 text

w &YFDVUFBOZTUBUFNFOUBOEHFUUIFSFTVMUPOUIFDPOUFYU w /PUFUIBUTJEFF ff FDUTJOUIFFWBMVBUJPONBZCSFBLBQQCFIBWJPVS &WBMVBUJPO 23

Slide 24

Slide 24 text

w &WBMVBUFUIFDVSSFOUMJOFTVTQFOEFECZ%FCVHHFS w (PUPBOETVTQFOEUIFOFYUMJOF 4UFQ0WFS 24

Slide 25

Slide 25 text

w 4UFQ*OUP%JWFJOUPUIFNFUIPEDBMMFWBMVBUJPO w 4UFQ0VU&WBMVBUFUIFSFNBJOJOHTUFQTBOESFUVSOUPUIFDBMMFS 4UFQ*OUP0VU 25 Step Into Step Out

Slide 26

Slide 26 text

w 3FTVNFUIFBQQPODFZPV fi OJTIWBMJEBUJOHUIFCSFBLQPJOU 3FTVNF 26

Slide 27

Slide 27 text

w .VMUJQMFCSFBLQPJOUTEFHSBEFTBQQQFSGPSNBODF w %POUUPVDIZPVSBQQXIJMFBEFCVHHFSTVTQFOETUIFBQQ w 5IFBQQEPFTOUSFTQPOECFDBVTFUIFNBJOUISFBEJTTVTQFOEFE w &WFOUTBSFFORVFVFEBOEXJMMCFQSPDFTTFESJHIUBGUFSSFTVNJOH /PUJDFT 27

Slide 28

Slide 28 text

28 How to use Debugger better Inspect and Interact with Apps 4/10

Slide 29

Slide 29 text

*OUFSBDUXJUIFYUFSOBMMJCSBSJFT 29 w :PVDBOQVUCSFBLQPJOUTPOSEQBSUZMJCSBSJFT w .BLFTVSFZPVIBWFPQFOFEUIFDPSSFDUTPVSDF w %POUJOGFSUIFCFIBWJPVS DIFDLJUCZZPVSTFMG

Slide 30

Slide 30 text

*OUFSBDUXJUI"OESPJE'SBNFXPSL 30 w "OESPJE'SBNFXPSLDBOBMTPCFTVTQFOEFE w .BLFTVSFZPVIBWFPQFOFEUIFDPSSFDUTPVSDF w $BOOPUTVTQFOEDPEFPOPUIFSQSPDFTTFT w FHTZTUFNTFSWJDFTDPEFCFIJOE"*%-

Slide 31

Slide 31 text

w "QQJTTVTQFOEFEXIFOFOUFSFYJUJOHGSPNUIFNFUIPE w .FUIPEPWFSSJEJOHJTBMTPDPWFSFE w :PVDBOEFCVHFWFOJGZPVEPOULOPXUIFJNQMFNFOUBUJPODMBTT .FUIPE#SFBLQPJOUT 31

Slide 32

Slide 32 text

w 4VTQFOEBQQXIFOUIFTQFDJ fi D fi FMEQSPQFSUZJTSFBEPSXSJUUFO w $BOOPUCFVTFEXJUIMPDBMEFMFHBUJPOQSPQFSUJFT w 6TFNFUIPECSFBLQPJOUTPOHFU7BMVFTFU7BMVFPQFSBUPSTJOTUFBE 'JFMEXBUDIQPJOUT 32

Slide 33

Slide 33 text

w ,FFQXBUDIJOHWBSJBCMFTBOEPSFYQSFTTJPOTSFHBSEMFTTPGGSBNFT w $IFDLTUBUFTBDSPTTBDPNQMJDBUFEQSPDFTT MBZFSTBOETPPO w FH8BUDIBTUBUFPGBSFQPTJUPSZGSPNBQSFTFOUBUJPOMBZFS 8BUDI7BSJBCMFT8BUDIFYQSFTTJPO 33

Slide 34

Slide 34 text

w :PVDBOJOKFDUWBMVFTPOMZXIFOJUTSFRVJSFE w $PNQMJDBUFETUVCCJOHXPVMEOPUCFZPVS fi STUPQUJPO 7BSJBCMF.PEJGJDBUJPO 34

Slide 35

Slide 35 text

w &YJUBNFUIPE 㲈BGSBNF BOENBLFJUSFUVSOBOBSCJUSBSZWBMVF w /POFFEUPTUVC OPOFFEUPSFQSPEVDFUIFTUBUFNBOVBMMZ w 4FMFDUBGSBNF03QVUBCSFBLQPJOUPOBNFUIPEDBMMBOEVTF4UFQ*OUP 'PSDF3FUVSO 35

Slide 36

Slide 36 text

w 3FWFSUUIFTUBUFTPGMPDBMWBSJBCMFTUPUIFTQFDJ fi DGSBNF w -JNJUBUJPO(MPCBMTUBUFTDBOOPUCFSFWFSUFE w %POUOFFEUPNPEJGZBOESVOBOBQQSFQFBUFEMZ 3FTFU'SBNF 36 w 3FQFBUUIFGPMMPXJOHTUFQT w .PEJGZUIFWBSJBCMF w 4UFQ0WFSBOEDIFDLUIFSFTVMU w 3FTFU'SBNF w 4UFQ*OUP UPHPCBDLUPUIFNFUIPE

Slide 37

Slide 37 text

37 How to use Debugger better Configure Breakpoints 5/10

Slide 38

Slide 38 text

w 'JOE7JFX#SFBLQPJOUTNFOV #SFBLQPJOU0QUJPOT 38

Slide 39

Slide 39 text

w %JTBCMFTVTQFOEJOHPSQVUCSFBLQPJOUTXJUIIPMEJOHEPXOUIFTIJGULFZ w 1BUUFSOT w #SFBLQPJOUIJUNFTTBHF w 4UBDL5SBDF w &WBMVBUFBOEMPH -PHHJOHCSFBLQPJOU 39

Slide 40

Slide 40 text

w 5PPNBOZTVTQFOTJPOTNBZBOOPZZPV w $POEJUJPOT w &YQSFTTJPO w 1BTT$PVOU w #SFBLQPJOUEFQFOEFODZ $POEJUJPOBM#SFBLQPJOUT 40

Slide 41

Slide 41 text

w &WBMVBUFUIFTUBUFNFOUUPDPOUSPMUIFBDUJWFOFTTPGUIFCSFBLQPJOU $POEJUJPO&YQSFTTJPO 41

Slide 42

Slide 42 text

w "CSFBLQPJOUJTEJTBCMFEVOUJMPGQBTTJOHJUSFBDIFTUPUIFDPVOU w *GBCSFBLQPJOUXPSLT UIFDPVOUFSXJMMCFSFTFU $POEJUJPO1BTT$PVOU 42

Slide 43

Slide 43 text

w "CSFBLQPJOUOFFETBOPUIFSCSFBLQPJOUUPCFBDUJWBUFE w %JTUJOHVJTIDPOUFYUTFWFOJGBO&YQSFTTJPOSFUVSOTUIFTBNFWBMVF $POEJUJPO#SFBLQPJOUEFQFOEFODZ 43

Slide 44

Slide 44 text

Debugging Context Concurrency 44 6/10

Slide 45

Slide 45 text

w 4VTQFOEPOMZUIFTQFDJ fi DUISFBEJOTUFBEPGTVTQFOEJOHBMMUISFBET w 3BDFDPOEJUJPOTNBZCFSFWFBMFEFBTJFS w 3FDPNNFOEUPBMXBZTXBUDI5ISFBEDVSSFOU5ISFBE HFU/BNF .VMUJQMF5ISFBET 45

Slide 46

Slide 46 text

w *OHFOFSBM UISFBEOBNFTBSFOPOEFUFSNJOJTUJDGPSDPSPVUJOFT w 6TF$PSPVUJOF/BNFBOEFOBCMFDPSPVUJOFEFCVHNPEF $PSPVUJOF%FCVHHJOH 46

Slide 47

Slide 47 text

$PSPVUJOFEFCVHNPEFJTPO 47 w $PSPVUJOF/BNFJTWJTJCMFBOEFBDIDPSPVUJOFIBTBVOJRVFOBNF w JF @#

Slide 48

Slide 48 text

w :PVDBOJOTQFDUUIFGSBNFTUBUFPOTVTQFOEGVODUJPOT 8PSLTXJUIDPSPVUJOFTQFSGFDUMZ 48

Slide 49

Slide 49 text

w 0QUJNJ[BUJPOSFMFBTFTWBSJBCMFTJOTVTQFOEGVODUJPOT w 5IJTJTTVFDBOCFTPMWFECZSFGFSSJOHUPWBSJBCMFT CVUIPXTIPVMEXF EPGPSFYUFSOBMMJCSBSJFT 0QUJNJ[BUJPONBLFTZPVDPOGVTFE 49

Slide 50

Slide 50 text

w "EE-XdebugUP,PUMJODPNQJMFSBSHVNFOUT w 5IJTPQUJPOTIPVMECFBDUJWFPOMZXIFOEFCVHHJOHBOBQQ w .FNPSZMFBLTNBZPDDVSVOMFTTPQUJNJ[BUJPOJTPO %JTBCMJOH0QUJNJ[BUJPO 50

Slide 51

Slide 51 text

Debugging Context Jetpack Compose 51 7/10

Slide 52

Slide 52 text

w %FCVHHFSDBOOPUFWBMVBUF$PNQPTBCMFGVODUJPOT w "TZPVLOPX $PNQPTBCMFTSFMZPOUIFDPNQJMFSQMVHJO w )PXFWFS %FCVHHFSJTTUJMMF ff FDUJWF /PUJDFT 52

Slide 53

Slide 53 text

w $PNQPTF"1*TIFBWJMZVTF,PUMJOTEFMFHBUJPOQSPQFSUJFT w %FMFHBUJPOQSPQFSUJFTBSFTIPXOBT$delegate *OTQFDUWBMVFTGSPN$PNQPTF"1* 53

Slide 54

Slide 54 text

w 6TF-BZPVU*OTQFDUPSUPDPVOUSFDPNQPTJUJPOT w 4FUUIF1BTT$PVOUUPTVTQFOE"QQPOUIFVOFYQFDUFESFDPNQPTJUJPO w #SFBLQPJOUTTIPVMECFTFUUPDPEFTUIBUSFBEVQEBUFTUBUFT 1FSGPSNBODF5VOJOH 54

Slide 55

Slide 55 text

Debugger Availability 55 8/10

Slide 56

Slide 56 text

w %FCVHHFSBOE+7.VTF4FSWFS$MJFOUDPNNVOJDBUJPO w +%81+BWB%FCVH8JSF1SPUPDPM w +7.JTSFBEZGPSBDPOOFDUJPOGSPNEFCVHHFSJG+%81QPSUJTPQFO w JF%FCVHHFSDBOOPUDPOOFDUUP+7.XP+%81QPSU 0WFSWJFXPG+7.%FCVHHFS 56 +7.PQFOTBQPSUGPS+%81 +7.EPFTOUPQFOBQPSU

Slide 57

Slide 57 text

w .BLFTVSFUIFNFSHFENBOJGFTU fi MFIBTandroid:debuggable=true w /PUFUIBUZPVDBOOPUDIBOHFUIFWBMVFPGJOTUBMMFEBQQT )PXUPPQFO+%81QPSUPG"QQ 57

Slide 58

Slide 58 text

w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w 8BJUBEFCVHHFSQSPHSBNBUJDBMMZ )PXUPDPOOFDU%FCVHHFSUP"QQ 58

Slide 59

Slide 59 text

w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w 8BJUGPSBEFCVHHFSQSPHSBNBUJDBMMZ )PXUPDPOOFDU%FCVHHFSUP"QQ 59

Slide 60

Slide 60 text

w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w (PUP%FWFMPQFSPQUJPOT w 4FMFDUEFCVHBQQBOEUVSOPO8BJUGPSEFCVHHFS w -BVODIBOBQQBOEBUUBDIBEFCVHHFS w 8BJUGPSBEFCVHHFSQSPHSBNBUJDBMMZ )PXUPDPOOFDU%FCVHHFSUP"QQ 60

Slide 61

Slide 61 text

w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w (PUP%FWFMPQFSPQUJPOT w 4FMFDUEFCVHBQQBOEUVSOPO8BJUGPSEFCVHHFS w -BVODIBOBQQBOEBUUBDIBEFCVHHFS w 8BJUGPSBEFCVHHFSQSPHSBNBUJDBMMZ )PXUPDPOOFDU%FCVHHFSUP"QQ 61

Slide 62

Slide 62 text

w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w 8BJUGPSBEFCVHHFSQSPHSBNBUJDBMMZ w 3FRVJSFEGPSNVMUJQSPDFTTFTBQQT )PXUPDPOOFDU%FCVHHFSUP"QQ 62

Slide 63

Slide 63 text

Other platforms 63 9/10

Slide 64

Slide 64 text

w +BWB,PUMJODPEFEFCVHHJOHXPSLTSFHBSEMFTTPGUIFGSBNFXPSL w "UMFBTU#SFBLQPJOUTGFBUVSFJTBWBJMBCMFPOPUIFS%FCVHHFST w /05&'MVUUFSIBTPOFLOPXOJTTVF<> w "QQTXJUIandroid:debuggable=truePOUIFSFMFBTF fl BWPSGBJMT )PXBCPVU9QMBUGPSN'SBNFXPSL 64 [1] https://github.com/ fl utter/ fl utter/issues/54126

Slide 65

Slide 65 text

w +7.%FCVHHFSDBOCFVTFEGPSHFOFSBM+7.BQQMJDBUJPOT w .BOZMBOHVBHFTBOEPSGSBNFXPSLTIBWFEFCVHUPPMT w +BWB4DSJQU$ISPNF%FW5PPMFUD w %BSU'MVUUFS%FCVHHFSFUD w /%,HEC --%#FUD w .PTUPGEFCVHHFSTIBWFTBNFPSTJNJMBSGFBUVSFTFYQMBJOFETPGBS )PXBCPVUPUIFSQMBUGPSNMBOHVBHFT 65

Slide 66

Slide 66 text

Wrap up 66 10/10

Slide 67

Slide 67 text

w ✅/PDPEFNPEJ fi DBUJPOJTSFRVJSFE w ✅1SPHSBNFOUJUZWJFXFSXJUIPVUSFFWBMVBUJPO w ✅1FSTUFQCFIBWJPVSDIFDLJOH w ✅*OTQFDUSEQBSUZMJCSBSJFTBOE"OESPJE'SBNFXPSL w ✅"MPUPGGFBUVSFTBSFBWBJMBCMFJOBEEJUJPOUPUIFGFBUVSFTJOUSPEVDFE w ❌/FHBUJWFJNQBDUTPOBQQQFSGPSNBODF %FCVHHFSJTQPXFSGVM 67

Slide 68

Slide 68 text

4VNNBSZ w $PSPVUJOFEFCVHNPEFTIPVMECFBDUJWBUFEUPWJFXUIFJOGPSNBUJPO w %FCVHHFSDBOEFCVH+FUQBDL$PNQPTF w %FCVHHFSOFFETandroid:debuggable=trueGPS"OESPJE"QQT w )PXUPDPOOFDU%FCVHHFSUP"QQJTOPUPOMZTJOHMFXBZ w .BTUFSJOH%FCVHHFSTLJMMTIFMQTZPVSFOHJOFFSMJGF 68

Slide 69

Slide 69 text

%FCVHHJOH "MM:PV/FFEUP,OPX Jumpei Matsuda @red_fat_daruma 5IBOLZPVGPSMJTUFOJOH 4FFZPVBU"TLUIF4QFBLFSBSFB&OHMJTIRVFTUJPOTBSFBMTPXFMDPNF 23DPEFGPS4MJEFT 4MJEFTBUIUUQTCJUMZ.#B"E

Slide 70

Slide 70 text

(PPEUPSFBE w %FCVHHJOH w IUUQTXXXKFUCSBJOTDPNIFMQJEFBEFCVHHJOHDPEFIUNM w IUUQTEFWFMPQFSBOESPJEDPNDPEFMBCTCBTJDBOESPJELPUMJODPNQPTFJOUSPEFCVHHFS w IUUQTEFWFMPQFSBOESPJEDPNSFGFSFODFBOESPJEPT%FCVH w IUUQTEFWFMPQFSBOESPJEDPNQSJWBDZBOETFDVSJUZSJTLTBOESPJEEFCVHHBCMF w $PNQPTF%FCVHHJOH w IUUQTEFWFMPQFSBOESPJEDPNEFWFMPQVJDPNQPTFUPPMJOHMBZPVUJOTQFDUPS w IUUQTNFEJVNDPNBOESPJEEFWFMPQFSTKFUQBDLDPNQPTFEFCVHHJOHSFDPNQPTJUJPOCGDGBGE w IUUQTJPHPPHMFQSPHSBNBFEECEEDBG w $PSPVUJOF%FCVHHJOH w IUUQTHJUIVCDPN,PUMJOLPUMJOYDPSPVUJOFTCMPCEBDDEGEBBCGBGBEEBLPUMJOYDPSPVUJOFTEFCVH3&"%.&NE w IUUQTLPUMJODPOGDPNUBMLT w IUUQTLPUMJOMBOHPSHEPDTEFCVHDPSPVUJOFTXJUIJEFBIUNM 70