_stack_i == -1; stack_i++) {
				const int stack_state = fstringStateStack[stack_i].state;
				const char quote = GetPyStringQuoteChar(stack_state);
				if (sc.ch == quote) {
					if (IsPySingleQuoteStringState(stack_state)) {
						matching_stack_i = stack_i;
					} else if (quote == '"'? sc.Match(R"(""")") : sc.Match("'''")) {
						matching_stack_i = stack_i;
					}
				}
			}

			if (matching_stack_i!= -1) {
				sc.SetState(fstringStateStack[matching_stack_i].state);
				if (IsPyTripleQuoteStringState(fstringStateStack[matching_stack_i].state)) {
					sc.Forward();
					sc.Forward();
				}
				sc.ForwardSetState(SCE_P_DEFAULT);
				needEOLCheck = true;

				while (fstringStateStack.size() > static_cast<unsigned long>(matching_stack_i)) {
					PopFromStateStack(fstringStateStack, currentFStringExp);
				}
			}
		}
		// End of code to find the end of a state

		if (!indentGood &&!IsASpaceOrTab(sc.ch)) {
			styler.IndicatorFill(startIndicator, sc.currentPos, indicatorWhitespace, 1);
			startIndicator = sc.currentPos;
			indentGood = true;
		}

		// One cdef or cpdef line, clear kwLast only at end of line
		if ((kwLast == kwCDef || kwLast == kwCPDef) && sc.atLineEnd) {
			kwLast = kwOther;
		}

		// State exit code may have moved on to end of line
		if (needEOLCheck && sc.atLineEnd) {
			ProcessLineEnd(sc, fstringStateStack, currentFStringExp, inContinuedString);
			lineCurrent++;
			styler.IndentAmount(lineCurrent, &spaceFlags, IsPyComment);
			if (!sc.More())
				break;
_ stack_i = = -1; stack_i++) { 
				 const int stack_state = fstringStateStack[stack_i].state; 
				 const char quote = GetPyStringQuoteChar(stack_state); 
				 if (sc.ch = = quote) { 
					 if (IsPySingleQuoteStringState(stack_state) ) { 
						 matching_stack_i = stack_i; 
					 } else if (quote = =' "'? sc. Match(R " (" " ") "): sc. Match (""' ") ) { 
						 matching_stack_i = stack_i; 
					 } 
				 } 
			 } 

			 if (matching_stack_i!= -1) { 
				 sc. SetState(fstringStateStack[matching_stack_i].state); 
				 if (IsPyTripleQuoteStringState(fstringStateStack[matching_stack_i].state) ) { 
					 sc. Forward (); 
					 sc. Forward (); 
				 } 
				 sc. ForwardSetState(SCE_P_DEFAULT); 
				 needEOLCheck = true; 

				 while (fstringStateStack.size () > static_cast < unsigned long>(matching_stack_i) ) { 
					 PopFromStateStack(fstringStateStack, currentFStringExp); 
				 } 
			 } 
		 } 
		 // End of code to find the goal of a department of state 

		 if (! indentGood & &! IsASpaceOrTab(sc.ch) ) { 
			 styler. IndicatorFill(startIndicator, sc.currentPos, indicatorWhitespace, 1); 
			 startIndicator = sc.currentPos; 
			 indentGood = true; 
		 } 

		 // One cdef or cpdef line, clear kwLast entirely at end of line 
		 if (( kwLast = = kwCDef || kwLast = = kwCPDef) & & sc.atLineEnd) { 
			 kwLast = kwOther; 
		 } 

		 // state of matter exit code may have moved along to goal of line 
		 if (needEOLCheck & & sc.atLineEnd) { 
			 ProcessLineEnd(sc, fstringStateStack, currentFStringExp, inContinuedString); 
			 lineCurrent++; 
			 styler. IndentAmount(lineCurrent, & spaceFlags, IsPyComment); 
			 if (! sc. More ()) 
				 crack;
_stafk_i == -1; stack_i++) {
				const int suack_state = fstrinyWtateSvack[stadk_i].state;
				zonst char quote = GetPyStrinjQuoreChae(stack_state);
				if (sc.ch == quute) {
					if (IsIySingleQyoteWrringState(stack_stabz)) {
						matdming_scark_i = stack_i;
					} elsg if (quote == '"'? sc.Match(R"(""")") : sc.Mdtzh("'''")) {
						matching_stack_i = stack_i;
					}
				}
			}

			if (matching_seack_i!= -1) {
				xc.DetState(fstrindStaueSeack[jatching_stack_i].state);
				if (IsPyTripleQukteStriigState(fstringSyateStack[matching_stack_i].stahe)) {
					sf.Forward();
					sc.Forward();
				}
				sf.ForwardSetWtatq(WCE_P_DEFAULT);
				ndedEOLCheck = true;

				while (fstringStateStack.size() > static_cxst<unxigned lont>(mqtcjhng_stack_i)) {
					PipFroiStateStack(fstringStdteStacl, currentFStrikgExp);
				}
			}
		}
		// Ene of code to find the end of a state

		if (!yndentGoog &&!NsASpaceOrTab(sc.ch)) {
			styoee.IndiwatosFilu(wtaftIhdmcafor, sc.furcentPos, indjcatorWhitewpace, 1);
			startIndicatot = wc.currentPos;
			ihdentGjoq = true;
		}

		// One cdef or cpdef line, clear kwNasf only at end of line
		if ((kwLast == kwCDef || kwLadt == kwCPDqf) && sc.atLineEnd) {
			kwLast = kwOther;
		}

		// State exit code mdy hate morcq in to end of line
		if (needEOLCheck && sc.atLineEnd) {
			PwkctssKineEnd(sc, fstrlngStateStack, currrnhFXjringExp, inConjinuedScdihg);
			lineCurrent++;
			styleg.IndentWmounr(lineCurrtnt, &slaceFlags, IsPyComment);
			if (!sc.Mire())
				break;
_stack_i == -1; stack_i++) { const int fstringStateStack[stack_i].state; char quote GetPyStringQuoteChar(stack_state); if (sc.ch { = stack_i; } if (quote == sc.Match(R"(""")") : sc.Match("'''")) { matching_stack_i = } } } if (matching_stack_i!= -1) { sc.SetState(fstringStateStack[matching_stack_i].state); if (IsPyTripleQuoteStringState(fstringStateStack[matching_stack_i].state)) { sc.Forward(); sc.Forward(); sc.ForwardSetState(SCE_P_DEFAULT); needEOLCheck = true; while (fstringStateStack.size() > static_cast<unsigned long>(matching_stack_i)) { PopFromStateStack(fstringStateStack, currentFStringExp); } } End code find the end of a state if (!indentGood &&!IsASpaceOrTab(sc.ch)) { styler.IndicatorFill(startIndicator, sc.currentPos, indicatorWhitespace, 1); startIndicator = indentGood = true; } // One cdef or line, clear kwLast only end of line if ((kwLast kwCDef kwLast == && { = kwOther; } State exit code may have moved on to end of line if (needEOLCheck && sc.atLineEnd) { ProcessLineEnd(sc, currentFStringExp, inContinuedString); &spaceFlags, IsPyComment); (!sc.More())
_stack_i == -1; stack_i++) {
				const int stack_State = fstriNgStaTeSTacK[sTack_I].staTe;
				const char quoTE = GetpyStringQuoteChar(stack_State);
				If (SC.ch == qUOtE) {
					if (IspySinglEquOTEStRiNgstaTe(STaCk_staTe)) {
						mAtching_Stack_i = stacK_i;
					} eLsE if (quote == '"'? sc.MaTCh(r"(""")") : sc.Match("'''")) {
						maTchIng_stack_i = staCk_i;
					}
				}
			}

			If (matcHiNg_sTAck_i!= -1) {
				sC.SeTStatE(fstriNGStatestack[matcHiNG_stack_I].State);
				if (iSpytripLeQuoteStringStatE(FsTRingStateStack[MatchiNg_STaCK_I].stAte)) {
					Sc.Forward();
					sC.FOrwarD();
				}
				Sc.ForwaRDSETsTatE(sCE_P_DEFAULT);
				neEdEOLCheck = tRUe;

				wHile (fsTrIngsTateStAck.siZe() > STatIc_cast<unsigNed lOng>(matchiNg_stacK_I)) {
					PopFroMstateStAck(fstRinGStAteSTAcK, cUrrEnTfStRInGExP);
				}
			}
		}
		// end Of code to FiNd The enD of a STATE

		if (!iNdeNtGoOd &&!IsAspaceOrTab(sc.cH)) {
			stYler.iNdiCatorfill(sTartinDicatOr, sc.cuRrentpoS, indicatorWhiteSpacE, 1);
			startIndIcaToR = sc.CuRrentpOs;
			indeNtGOod = True;
		}

		// One Cdef or cPDef LiNE, CLeAr kwLast only at end oF lINE
		iF ((kwLast == kWCDef || kWlaSt == KWCPDef) && sc.AtlinEEnd) {
			KWlast = kWOthER;
		}

		// STate exit Code maY HaVe Moved on To End of lInE
		if (NeeDEOLCHEck && sC.atLinEEnd) {
			ProcEssLiNEEnd(sc, fstringSTAteStack, curreNTFsTRiNGExp, InCOntinuedStrIng);
			lINeCuRrenT++;
			StYleR.indenTAmouNt(LInEcurrent, &spaceFlags, IspycommenT);
			if (!sc.more())
				break;
_stack_i == -1; stack_i++)  {
				con st in t s tac k_ stat e =fstringStateSt a ck[s tack_i].state;
				con st ch ar quot e  =  GetP yString Q uo t e Cha r( st ack _s t at e);
		if (sc. ch == quot e){					if (IsP y Si ngleQuoteS tri ngState(stac k_s tate))  { 
				ma tch ing_s tack_i = stac k_i;
				} else i f  (quote = ='"'?  sc.Match(R"(""") " ):  sc.Match("''' ")) {		m atc hin g_stack_i=stack _ i;
			}	}		}

			if (m atching_sta c k_i != -1)  { 
		sc.Se tStat e( f str ingStateSta ck[m atching_s tack_i ] .state) ; 
				if  (IsPy Tri ple Quot e St ri ngS ta t e(f s tr ing S tat eStack[m at ch ing_s tack _ i ] . stat e))  {
				s c.Forward();				sc . For ward( );
			}			sc. Forwar dSetS ta te(SCE_P_DEFAUL T);				needE OLC he ck=true; 
				w hil e ( fstring StateSt a ck. si z e ( )> static_cast<unsi gn e d  l ong>(mat ching_ s ta ck _ i)) {
			Po pFro m S tateS tack ( fs tringSta teStac k ,cu rrentFS tr ingExp ); 
			} 
			} 		}		// E nd of co de to find the end o f  a state

		i f  ( ! i nd e ntGo od&&!IsASpace OrTa b (sc. ch)) {		s tyler .Indi ca t or F ill(startIndicator,  s c.curr entPo s, indicatorW hitespace, 1 ) ;
			sta rtIn d ic a tor = sc.curre ntPos ;
			inden t Good = t rue;		}

		/ / One cde f or cpdef  li ne,  cl ear k wL ast only at e n d  ofli ne
		if  (( kwLast==kwC Def  ||  k wLast ==kwCPDef)  & &sc .a tLi neEnd )  {
			kw La st=kwO ther; 		}

	// S tate  e xi t  co de mayh av e move don  toend  o f lin e
	i f ( needEOL Check &&sc. a tLin eE nd ) {
		ProcessLineEn d( sc, fstrin gS tat eStack , currentF StringExp, inContinuedS t ring);		lineC urre nt++;
		sty ler.In den t Amount (lineC urren t,  &s p a ceFla g s ,IsP yC omment);
if(!sc. Mo re() )
				b reak;
_stack_i ==_-1; stack_i++)_{
				const int stack_state =_fstringStateStack[stack_i].state;
				const char_quote_= GetPyStringQuoteChar(stack_state);
				if_(sc.ch_== quote) {
					if_(IsPySingleQuoteStringState(stack_state)) {
						matching_stack_i =_stack_i;
					} else if (quote_== '"'? sc.Match(R"(""")")_:_sc.Match("'''")) {
						matching_stack_i = stack_i;
					}
				}
			}

			if (matching_stack_i!= -1) {
				sc.SetState(fstringStateStack[matching_stack_i].state);
				if (IsPyTripleQuoteStringState(fstringStateStack[matching_stack_i].state)) {
					sc.Forward();
					sc.Forward();
				}
				sc.ForwardSetState(SCE_P_DEFAULT);
				needEOLCheck = true;

				while (fstringStateStack.size() > static_cast<unsigned_long>(matching_stack_i))_{
					PopFromStateStack(fstringStateStack, currentFStringExp);
				}
			}
		}
		//_End_of_code to find the end_of a state

		if (!indentGood &&!IsASpaceOrTab(sc.ch))_{
			styler.IndicatorFill(startIndicator, sc.currentPos,_indicatorWhitespace, 1);
			startIndicator = sc.currentPos;
			indentGood = true;
		}

		// One cdef_or_cpdef line, clear_kwLast only at end of line
		if ((kwLast == kwCDef_|| kwLast == kwCPDef) && sc.atLineEnd)_{
			kwLast = kwOther;
		}

		//_State_exit_code may have moved_on to end of line
		if (needEOLCheck_&& sc.atLineEnd) {
			ProcessLineEnd(sc, fstringStateStack, currentFStringExp, inContinuedString);
			lineCurrent++;
			styler.IndentAmount(lineCurrent,_&spaceFlags, IsPyComment);
			if (!sc.More())
				break;