1 write to _f
System.Private.Xml (1)
System\Xml\Xsl\Xslt\QilGenerator.cs (1)
100_f = new XsltQilFactory(new QilFactory(), debug);
534 references to _f
System.Private.Xml (534)
System\Xml\Xsl\Xslt\QilGenerator.cs (397)
105_refReplacer = new ReferenceReplacer(_f.BaseFactory); 106_invkGen = new InvokeGenerator(_f, debug); 107_matcherBuilder = new MatcherBuilder(_f, _refReplacer, _invkGen); 108_singlFocus = new SingletonFocus(_f); 110_curLoop = new LoopFocus(_f); 111_strConcat = new QilStrConcatenator(_f); 112_varHelper = new VariableHelper(_f); 117_nameCurrent = _f.QName("current", XmlReservedNs.NsXslDebug); 118_namePosition = _f.QName("position", XmlReservedNs.NsXslDebug); 119_nameLast = _f.QName("last", XmlReservedNs.NsXslDebug); 120_nameNamespaces = _f.QName("namespaces", XmlReservedNs.NsXslDebug); 121_nameInit = _f.QName("init", XmlReservedNs.NsXslDebug); 138_functions = _f.FunctionList(); 139_extPars = _f.GlobalParameterList(); 140_gloVars = _f.GlobalVariableList(); 141_nsVars = _f.GlobalVariableList(); 211QilExpression qil = _f.QilExpression(root, _f.BaseFactory); 230return _f.Loop(_f.Let(_f.InvokeOnCurrentNodeChanged(_curLoop.GetCurrent()!)), _f.Sequence()); 248QilNode init = _f.Int32(0); 256init = _f.Add(init, _f.InvokeRegisterDecimalFormat(format)); 261init = _f.Add(init, _f.InvokeRegisterDecimalFormat(DecimalFormatDecl.Default)); 269init = _f.Add(init, _f.InvokeCheckScriptNamespace(scriptNs)); 275QilFunction initFunction = _f.Function(_f.FormalParameterList(), init, /*sideEffects:*/_f.True()); 279QilNode initBinding = _f.Invoke(initFunction, _f.ActualParameterList()); 283initBinding = _f.TypeAssert(initBinding, T.ItemS); 285QilIterator initVar = _f.Let(initBinding); 299return _f.DocumentCtor(result); 323QilList nsDecls = _f.BaseFactory.Sequence(); 326nsDecls.Add(_f.NamespaceDecl(_f.String(rec.ncName!), _f.String(rec.nsUri!))); 466QilIterator newVar = _f.Let(nsList); 467newVar.DebugName = _f.QName($"ns{_nsVars.Count}", XmlReservedNs.NsXslDebug).ToString(); 484QilList args = _f.FormalParameterList(); 552QilList paramFormal = _f.FormalParameterList(); 553QilList paramActual = _f.ActualParameterList(); 556QilParameter formal = _f.Parameter(args[j].XmlType!); 568QilFunction paramFunc = _f.Function(paramFormal, 569_f.Boolean((xslPar.DefValueFlags & XslFlags.SideEffects) != 0), 574param.DefaultValue = _f.Invoke(paramFunc, paramActual); 601tmpl.Function = _f.Function(args, 602_f.Boolean((tmpl.Flags & XslFlags.SideEffects) != 0), 639QilParameter arg = _f.Parameter(xt); 684return _f.BaseFactory.Sequence(); 766QilIterator var = _f.Let(result); 770result = _f.Loop(var, CompileInstructions(instructions, i + 1)); 790return _f.Nop(_f.Sequence()); 800content.Add(_f.NamespaceDecl(_f.String(prefix), _f.String(nsUri))); 871return _f.ElementCtor(qname, content); 895qname = _f.QName(local, nsUri, prefix); 901qname = _f.StrParseQName(qilName, qilNs); 914return _f.ElementCtor(qname, content); 929return _f.AttributeCtor(qname, CompileTextAvt(node.Select!)); 961qname = _f.QName(local, nsUri, prefix); 968qname = _f.StrParseQName(qilName, qilNs); 980return _f.AttributeCtor(qname, CompileInstructions(node.Content)); 1018return _f.Error(_lastScope!.SourceLine, SR.Xslt_SingleRightBraceInAvt, source); 1027return i > start ? _f.String(source.Substring(start, i - start)) : null; 1032return _f.String(_unescapedText.ToString()); 1038QilList result = _f.BaseFactory.Sequence(); 1051result.Add(_f.ConvertToString(exp)); 1070return _f.String(avt); 1072return _f.StrConcat(CompileAvt(avt)); 1080return _f.TextCtor(_f.String(avt)); 1088result.Add(_f.TextCtor(node)); 1094return _f.TextCtor(avtParts); 1101return _f.TextCtor(_f.String(node.Select!)); 1103return _f.RawTextCtor(_f.String(node.Select!)); 1114return _f.PICtor(qilName, CompileInstructions(node.Content)); 1119return _f.CommentCtor(CompileInstructions(node.Content)); 1124return _f.Error(_f.String(node.Select!)); 1132return _f.Sequence( 1135SetLineInfo(_f.Nop(_f.Sequence()), after) 1148QilIterator it = _f.For(CompileNodeSetExpression(node.Select!)); 1173QilIterator select = _f.Let(CompileNodeSetExpression(node.Select!)); 1188QilIterator let = _f.Let(val!); 1189let.DebugName = _f.QName($"with-param {withParam.Name!.QualifiedName}", XmlReservedNs.NsXslDebug).ToString(); 1198QilIterator it = _f.For(select); 1238QilIterator let = _f.Let(val); 1239let.DebugName = _f.QName($"with-param {withParam.Name!.QualifiedName}", XmlReservedNs.NsXslDebug).ToString(); 1259result = _f.Sequence(); 1271return _f.Nop(result); 1294return _f.Sequence(); 1313content.Add(_f.XPathNamespace(node)); 1318return _f.ElementCtor(_f.NameOf(node), result); 1335return _f.XsltCopy(node, CompileInstructions(copy.Content)); 1358return _f.XsltCopyOf(selectExpr); 1363return _f.Loop(it = _f.For(selectExpr), _f.XsltCopyOf(it)); 1371return _f.TextCtor(_f.ConvertToString(selectExpr)); 1378return _f.Loop( 1379it = _f.For(selectExpr), 1380_f.Conditional(_f.IsType(it, T.Node), 1381_f.XsltCopyOf(_f.TypeAssert(it, T.Node)), 1382_f.TextCtor(_f.XsltConvert(it, T.StringX)) 1390return _f.TextCtor(_f.ConvertToString(CompileXPathExpression(/*select:*/valueOf.Select))); 1395return _f.RawTextCtor(_f.ConvertToString(CompileXPathExpression(/*select:*/valueOf.Select))); 1400return _f.Conditional( 1401_f.ConvertToBoolean(CompileXPathExpression(/*test:*/whenNode.Select)), 1438return _f.Sequence(); 1440return IsDebug ? _f.Sequence(result) : result; 1446QilNode content = _f.RtfCtor(CompileInstructions(node.Content), _f.String(baseUri)); 1449content = _f.InvokeOuterXml(content); 1454return _f.Warning(content); 1459return _f.Loop(i = _f.Let(content), _f.Sequence(_f.Warning(i), _f.Error(i))); 1494varValue = _f.RtfCtor(CompileInstructions(content), _f.String(baseUri)); 1499varValue = _f.String(string.Empty); 1504varValue = _f.TypeAssert(varValue, T.ItemS); 1525QilList keyList = _f.BaseFactory.SortKeyList(); 1570result = _f.Loop(i = _f.Let(result), 1571_f.Conditional(_f.Eq(_f.InvokeLangToLcid(i, fwdCompat), _f.Int32(XsltLibrary.InvariantCultureLcid)), 1572_f.String(string.Empty), 1589return _f.Double(XsltLibrary.InvariantCultureLcid); 1593return _f.String(XsltLibrary.LangToNameInternal((string)(QilLiteral)lang, fwdCompat, (IErrorHelper)this)); 1597return _f.XsltConvert(_f.InvokeLangToLcid(lang, fwdCompat), T.DoubleX); 1613select = _f.ConvertToNumber(select); 1648result = _f.Loop(dt = _f.Let(result), 1649_f.Conditional(_f.Eq(dt, _f.String(DtNumber)), _f.False(), 1650_f.Conditional(_f.Eq(dt, _f.String(DtText)), _f.True(), 1651fwdCompat ? _f.True() : 1652_f.Loop(_f.Let(ResolveQNameDynamic(/*ignoreDefaultNs:*/true, dt)), 1653_f.Error(_lastScope!.SourceLine, 1659QilIterator text = _f.Let(result); 1663select2 = select.DeepClone(_f.BaseFactory); 1664select = _f.Conditional(text, _f.ConvertToString(select), _f.String(string.Empty)); 1665select2 = _f.Conditional(text, _f.Double(0), _f.ConvertToNumber(select2)); 1671select = _f.ConvertToString(select); 1699result = _f.String("1"); 1707result = _f.String("0"); 1713result = _f.Loop(i = _f.Let(result), 1714_f.Conditional(_f.Eq(i, _f.String(value1)), _f.String("1"), 1715fwdCompat ? _f.String("0") : 1716_f.Conditional(_f.Eq(i, _f.String(value0)), _f.String("0"), 1717_f.Error(_lastScope!.SourceLine, 1771select = _f.ConvertToString(select); 1797QilSortKey result = _f.SortKey(select, collation); 1803result = _f.SortKey(select2, collation.DeepClone(_f.BaseFactory)); 1826list = _f.BaseFactory.Sequence(); 1830QilNode result = _f.False(); 1835result = _f.Or( 1863return _f.InvokeIsSameNodeSort(testNode, current); 1869case XmlNodeKindFlags.Document: return _f.IsType(testNode, T.Document); 1870case XmlNodeKindFlags.Element: result = _f.IsType(testNode, T.Element); break; 1871case XmlNodeKindFlags.Attribute: result = _f.IsType(testNode, T.Attribute); break; 1872case XmlNodeKindFlags.Text: return _f.IsType(testNode, T.Text); 1873case XmlNodeKindFlags.Comment: return _f.IsType(testNode, T.Comment); 1874case XmlNodeKindFlags.PI: return _f.And(_f.IsType(testNode, T.PI), _f.Eq(_f.LocalNameOf(testNode), _f.LocalNameOf(current))); 1875case XmlNodeKindFlags.Namespace: return _f.And(_f.IsType(testNode, T.Namespace), _f.Eq(_f.LocalNameOf(testNode), _f.LocalNameOf(current))); 1878return _f.False(); 1882return _f.And(result, _f.And( 1883_f.Eq(_f.LocalNameOf(testNode), _f.LocalNameOf(current)), 1884_f.Eq(_f.NamespaceUriOf(testNode), _f.NamespaceUriOf(GetCurrentNode())) 1915countPattern2 = countPattern?.DeepClone(_f.BaseFactory); 1916countMatches = _f.Filter(i = _f.For(_f.AncestorOrSelf(GetCurrentNode())), MatchCountPattern(countPattern, i)); 1919A = _f.DocOrderDistinct(countMatches); 1923A = _f.Filter(i = _f.For(countMatches), _f.Eq(_f.PositionOf(i), _f.Int32(1))); 1932fromMatches = _f.Filter(i = _f.For(_f.AncestorOrSelf(GetCurrentNode())), MatchPattern(fromPattern, i)); 1933F = _f.Filter(i = _f.For(fromMatches), _f.Eq(_f.PositionOf(i), _f.Int32(1))); 1934AF = _f.Loop(i = _f.For(F), _f.Filter(j = _f.For(A), _f.Before(i, j))); 1937return _f.Loop(j = _f.For(AF), 1938_f.Add(_f.Int32(1), _f.Length(_f.Filter(i = _f.For(_f.PrecedingSibling(j)), MatchCountPattern(countPattern2, i)))) 1970range = _f.NodeRange(_f.Root(GetCurrentNode()), GetCurrentNode()); 1971AF = _f.Filter(i = _f.For(range), MatchCountPattern(countPattern, i)); 1975fromMatches = _f.Filter(i = _f.For(_f.Preceding(GetCurrentNode())), MatchPattern(fromPattern, i)); 1976F = _f.Filter(i = _f.For(fromMatches), _f.Eq(_f.PositionOf(i), _f.Int32(1))); 1977AF = _f.Loop(i = _f.For(F), 1978_f.Filter(j = _f.For(_f.Filter(k = _f.For(_f.NodeRange(i, GetCurrentNode())), MatchCountPattern(countPattern, k))), 1979_f.Not(_f.Is(i, j)) 1984return _f.Loop(k = _f.Let(_f.Length(AF)), 1985_f.Conditional(_f.Eq(k, _f.Int32(0)), _f.Sequence(), 2014return _f.String(Default); 2021QilIterator i = _f.Let(result); 2022return _f.Loop(i, 2023_f.Conditional( 2024_f.Or(_f.Eq(i, _f.String(Alphabetic)), _f.Eq(i, _f.String(Traditional))), 2026fwdCompat ? _f.String(Default) : 2027_f.Error(_lastScope!.SourceLine, SR.Xslt_BistateAttribute, "letter-value", Alphabetic, Traditional) 2031return _f.String(Default); 2041result = _f.String(string.Empty); 2053result = _f.String(string.Empty); 2058QilIterator i = _f.Let(result); 2059result = _f.Loop(i, 2060_f.Conditional(_f.Eq(_f.StrLength(i), _f.Int32(1)), i, 2061fwdCompat ? _f.String(string.Empty) : 2062_f.Error(_lastScope!.SourceLine, SR.Xslt_CharAttribute, "grouping-separator") 2074return _f.Double(0); 2085return _f.Double(dblGroupingSize); 2088return _f.Double(0); 2093QilIterator i = _f.Let(_f.ConvertToNumber(result)); 2094return _f.Loop(i, 2095_f.Conditional(_f.And(_f.Lt(_f.Double(0), i), _f.Lt(i, _f.Double(int.MaxValue))), 2097_f.Double(0) 2111value = _f.ConvertToNumber(CompileXPathExpression(num.Value)); 2130return _f.TextCtor(_f.InvokeNumberFormat( 2185QilParameter context = _f.Parameter(T.NodeNotRtf); 2187QilIterator values = _f.For(_f.OptimizeBarrier(CompileKeyMatch(key.Match))); 2189QilIterator keys = _f.For(CompileKeyUse(key)); 2190keys = _f.For(_f.OptimizeBarrier(_f.Loop(keys, _f.ConvertToString(keys)))); 2192QilParameter value = _f.Parameter(T.StringX); 2194QilFunction func = _f.Function(_f.FormalParameterList(context, value), 2195_f.Filter(values, 2196_f.Not(_f.IsEmpty(_f.Filter(keys, _f.Eq(keys, value)))) 2198_f.False() 2232it = _f.Let(_f.Unknown(xt)); 2236it = _f.Parameter(null, varPar.Name, xt); 2288return _f.TypeAssert(_f.Sequence(), T.ItemS); 2293return _f.TypeAssert(_f.Sequence(), T.NodeNotRtfS); 2322result = _f.Error(_f.String(e.Message)); 2327result = _f.Nop(result); 2334QilNode? result = _f.TryEnsureNodeSet(CompileXPathExpression(expr)); 2343result = _f.Error(_f.String(e.Message)); 2367result = _f.Error(_f.String(e.Message)); 2372result = _f.Nop(result); 2395result = _f.Loop(_f.For(_ptrnBuilder.FixupNode), 2396_f.Error(_f.String(e.Message)) 2421result = _f.Error(_f.String(e.Message)); 2450result = _f.Error(_f.String(e.Message)); 2465result = _f.Error(_f.String(XslLoadException.CreateMessage(key.SourceLine, SR.Xslt_MissingAttribute, "use"))); 2480result = _f.Error(_f.String(e.Message)); 2485result = _f.Nop(result); 2493QilList nsDecls = _f.BaseFactory.Sequence(); 2496nsDecls.Add(_f.NamespaceDecl(_f.String(string.Empty), _f.String(string.Empty))); 2509nsDecls.Add(_f.NamespaceDecl(_f.String(recPrefix), _f.String(recNsUri!))); 2512return _f.StrParseQName(qilName, nsDecls); 2526return _f.Sequence(); 2638QilList invokeArgs = _f.ActualParameterList(); 2663QilList formalArgs = _f.FormalParameterList(); 2674QilParameter formalArg = _f.Parameter(i == 0 ? T.NodeNotRtf : withParam.Value!.XmlType!); 2683applyFunction = _f.Function(formalArgs, 2684_f.Boolean((flags & XslFlags.SideEffects) != 0), 2700QilIterator iChild = _f.For(_f.Content(current)); 2701QilNode filter = _f.Filter(iChild, _f.IsType(iChild, T.Content)); 2705_curLoop.SetFocus(_f.For(filter)); 2718body = _f.Sequence(InvokeOnCurrentNodeChanged(), body); 2725QilTernary builtinTemplates = _f.BaseFactory.Conditional(_f.IsType(current, _elementOrDocumentType), 2727_f.Conditional(_f.IsType(current, _textOrAttributeType), 2728_f.TextCtor(_f.XPathNodeValue(current)), 2729_f.Sequence() 2737return _f.Invoke(applyFunction, invokeArgs); 2818QilIterator var = _f.Let(value); 2820return _f.Loop(var, content); 2832nsVar = _f.TypeAssert(nsVar, T.NamespaceS); 2852return (QilName)name.ShallowClone(_f.BaseFactory);
System\Xml\Xsl\Xslt\QilGeneratorEnv.cs (137)
57XPathQilFactory IXPathEnvironment.Factory { get { return _f; } } 91var = _f.TypeAssert(var, XmlQueryTypeFactory.NodeSDod); 109func.CastArguments(args, name, _f); 157return _f.InvokeMsStringCompare( 158/*x: */_f.ConvertToString(args[0]), 159/*y: */_f.ConvertToString(args[1]), 160/*lang: */2 < args.Count ? _f.ConvertToString(args[2]) : _f.String(string.Empty), 161/*options:*/3 < args.Count ? _f.ConvertToString(args[3]) : _f.String(string.Empty) 167return _f.InvokeMsUtc(/*datetime:*/_f.ConvertToString(args[0])); 172return _f.InvokeMsFormatDateTime( 173/*datetime:*/_f.ConvertToString(args[0]), 174/*format: */1 < args.Count ? _f.ConvertToString(args[1]) : _f.String(string.Empty), 175/*lang: */2 < args.Count ? _f.ConvertToString(args[2]) : _f.String(string.Empty), 176/*isDate: */_f.Boolean(name == "format-date") 182return _f.InvokeMsLocalName(_f.ConvertToString(args[0])); 187return _f.InvokeMsNamespaceUri(_f.ConvertToString(args[0]), env.GetCurrent()!); 192return _f.InvokeMsNumber(args[0]); 214args[i] = _f.SafeDocOrderDistinct(args[i]); 222return GenerateScriptCall(_f.QName(name, ns, prefix), scrFunc, args); 230return _f.Error(_lastScope!.SourceLine, SR.Xslt_ScriptsProhibited); 235return _f.XsltInvokeLateBound(_f.QName(name, ns, prefix), args); 248case XmlTypeCode.Boolean: args[i] = _f.ConvertToBoolean(args[i]); break; 249case XmlTypeCode.Double: args[i] = _f.ConvertToNumber(args[i]); break; 250case XmlTypeCode.String: args[i] = _f.ConvertToString(args[i]); break; 251case XmlTypeCode.Node: args[i] = xmlTypeFormalArg.IsSingleton ? _f.ConvertToNode(args[i]) : _f.ConvertToNodeSet(args[i]); break; 257return _f.XsltInvokeEarlyBound(name, scrFunc.Method!, scrFunc.XmlReturnType!, args); 386result = CompileSingleKey(name, _f.ConvertToString(keys), env); 390result = _f.Loop(i = _f.For(keys), CompileSingleKey(name, _f.ConvertToString(i), env)); 395result = CompileSingleKey(name, _f.ConvertToString(keys), env); 399result = _f.Loop(n = _f.Let(name), _f.Loop(k = _f.Let(keys), 400_f.Conditional(_f.Not(_f.IsType(k, T.AnyAtomicType)), 401_f.Loop(i = _f.For(_f.TypeAssert(k, T.NodeS)), CompileSingleKey(n, _f.ConvertToString(i), env)), 402CompileSingleKey(n, _f.XsltConvert(k, T.StringX), env) 406return _f.DocOrderDistinct(result); 420QilName qname = _f.QName(local, nsUri, prefix); 431QilIterator i = _f.Let(name); 433result = _f.Invoke(_generalKey, _f.ActualParameterList(i, resolvedName, key, env.GetCurrent()!)); 434result = _f.Loop(i, result); 444return _f.Invoke(defList[0].Function!, _f.ActualParameterList(env.GetCurrent()!, key)); 447QilIterator i = _f.Let(key); 448QilNode result = _f.Sequence(); 451result.Add(_f.Invoke(keyDef.Function!, _f.ActualParameterList(env.GetCurrent()!, i))); 453return _f.Loop(i, result); 459QilList result = _f.BaseFactory.Sequence(); 464keyRef = _f.Invoke(keyDef.Function!, _f.ActualParameterList(context, key)); 472QilIterator name = _f.Parameter(T.StringX); 473QilIterator resolvedName = _f.Parameter(T.QNameX); 474QilIterator key = _f.Parameter(T.StringX); 475QilIterator context = _f.Parameter(T.NodeNotRtf); 477QilNode fdef = _f.Error(SR.Xslt_UndefinedKey, name); 480fdef = _f.Conditional(_f.Eq(resolvedName, _compiler.Keys[idx][0].Name!.DeepClone(_f.BaseFactory)), 486QilFunction result = _f.Function(_f.FormalParameterList(name, resolvedName, key, context), fdef, _f.False()); 501return _f.Error(_lastScope!.SourceLine, SR.Xslt_DocumentFuncProhibited); 505result = _f.DocOrderDistinct(_f.Loop(i = _f.For(uris), 506CompileSingleDocument(_f.ConvertToString(i), baseNode ?? i) 511result = CompileSingleDocument(_f.ConvertToString(uris), baseNode); 515u = _f.Let(uris); 516j = (baseNode != null) ? _f.Let(baseNode) : null; 517result = _f.Conditional(_f.Not(_f.IsType(u, T.AnyAtomicType)), 518_f.DocOrderDistinct(_f.Loop(i = _f.For(_f.TypeAssert(u, T.NodeS)), 519CompileSingleDocument(_f.ConvertToString(i), j ?? i) 521CompileSingleDocument(_f.XsltConvert(u, T.StringX), j) 523result = (baseNode != null) ? _f.Loop(j!, result) : result; 524result = _f.Loop(u, result); 536baseUri = _f.String(_lastScope!.SourceLine!.Uri); 543baseUri = _f.InvokeBaseUri(baseNode); 551baseUri = _f.StrConcat(_f.Loop(i = _f.FirstNode(baseNode), _f.InvokeBaseUri(i))); 556return _f.DataSource(uri, baseUri); 569formatName = _f.String(string.Empty); 606QilIterator fmtIdx = _f.Let(_f.InvokeRegisterDecimalFormatter(formatPicture, format)); 607fmtIdx.DebugName = _f.QName($"formatter{_formatterCnt++}", XmlReservedNs.NsXslDebug).ToString(); 609return _f.InvokeFormatNumberStatic(value, fmtIdx); 613QilNode name = _f.QName(resolvedName.Name, resolvedName.Namespace); 614return _f.InvokeFormatNumberDynamic(value, formatPicture, name, formatName); 619QilIterator i = _f.Let(formatName); 621return _f.Loop(i, _f.InvokeFormatNumberDynamic(value, formatPicture, name, i)); 628return _f.Error(_lastScope!.SourceLine, SR.Xslt_UnsupportedXsltFunction, "unparsed-entity-uri"); 636return _f.XsltGenerateId(n); 641return _f.StrConcat(_f.Loop(i = _f.FirstNode(n), _f.XsltGenerateId(i))); 665return _f.String(propValue.Value); 670return _f.Double((double)propValue.ValueAsDouble); 673name = _f.QName(qname.Name, qname.Namespace); 679return _f.InvokeSystemProperty(name); 690return _f.Boolean(IsElementAvailable(qname)); 692name = _f.QName(qname.Name, qname.Namespace); 698return _f.InvokeElementAvailable(name); 712return _f.Boolean(QilGenerator.IsFunctionAvailable(qname.Name, qname.Namespace)); 716name = _f.QName(qname.Name, qname.Namespace); 722return _f.InvokeFunctionAvailable(name); 732return _f.XsltConvert(n, T.NodeSDod); 745case XmlTypeCode.Boolean: return _f.String("boolean"); 746case XmlTypeCode.Double: return _f.String("number"); 747case XmlTypeCode.String: return _f.String("string"); 751return _f.String("node-set"); 756return _f.InvokeEXslObjectType(n);