--- layout: page title: ABNF (OData Version 3.0) date: 2014-02-20 08:09:31.000000000 +08:00 permalink: /documentation/odata-version-3-0/abnf/ ---
Current Revision: 4/27/2012
The following Augmented BackusNaur Form (ABNF) details the construction rules for OData Uris that target OData services that follow the Uri Conventions specified in this document.
WSP = ; core to ABNF, see [RFC5234]
DIGIT = ; core to ABNF, see [RFC5234]
HEXDIG = ; core to ABNF, see [RFC5234]
ALPHA = ; core to ABNF, see [RFC5234]
pchar = unreserved / pct-encoded / sub-delims / ":" / "@" ; see [RFC3986]
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" ; see [RFC3986]
pct-encoded = "%" HEXDIG HEXDIG ; see [RFC3986]
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" ; see [RFC3986]
SQUOTE = %x27 ; ' (single quote)
EQ = %x3D ; = (equal sign)
SEMI = %x3B ; ; (semicolon)
SP = %x20 ; (single-width horizontal space character)
COMMA = %x2C ; , (comma)
nan = "NaN"
negativeInfinity = "-INF"
positiveInfinity = "INF"
nanInfinity = nan / negativeInfinity / positiveInfinity
DIGIT = ; core to ABNF, see [RFC5234]
UTF8-char = ; see [RFC3629]
year = 4*DIGIT;
oneToNine = "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
zeroToTwelve = [ "0" ] oneToNine /
"1" ( "0" / "1" / "2" )
zeroToThirteen = zeroToTwelve / "13"
zeroToSixty = [ "0" ] oneToNine /
( "1" / "2" / "3" / "4" / "5" ) DIGIT /
"60"
zeroToThirtyOne = [ "0" ] oneToNine /
( "1" / "2" ) DIGIT /
"30" /
"31"
zeroToTwentyFour = [ "0" ] oneToNine /
"1" DIGIT /
"2" ( "1" / "2" / "3" / "4" )
month = zeroToTwelve
day = zeroToThirtyOne
hour = zeroToTwentyFour
minute = zeroToSixty
second = zeroToSixty
nanoSeconds = 1*7DIGIT
sign = "+" / "-"
begin-object = "{"
end-object = "}"
value-separator = COMMA
name-separator = ":"
star = "*"
odataIdentifier = 1*479pchar
namespacePart = odataIdentifier
namespace = namespacePart *("." namespacePart)
entitySetName = odataIdentifier
; identifies by name an entity set
entityTypeName = odataIdentifier
; identifies by name an entity type
complexTypeName = odataIdentifier
; identifies by name a complex type
operationQualifier = [ namespace "." ] entityContainerName "."
allOperationsInContainer = operationQualifier "*"
qualifiedTypeName = qualifiedEntityTypeName /
qualifiedComplexTypeName /
primitiveTypeName /
"collection(" (
qualifiedEntityTypeName /
qualifiedComplexTypeName /
primitiveTypeName
) ")"
qualifiedEntityTypeName = namespace "." entityTypeName
qualifiedComplexTypeName = namespace "." complexTypeName
primitiveTypeName = ["edm."] (
"binary" /
"boolean" /
"byte" /
"datetime" /
"decimal" /
"double" /
"single" /
"float" /
"guid" /
"int16" /
"int32" /
"int64" /
"sbyte" /
"string" /
"time" /
"datetimeoffset" /
"stream" /
concreteSpatialTypeName /
abstractSpatialTypeName
)
concreteSpatialTypeName = "point" /
"linestring" /
"polygon" /
"geographycollection" /
"multipoint" /
"multilinedtring" /
"multipolygon" /
"geometricpoint" /
"geometriclinestring" /
"geometricpolygon" /
"geometrycollection" /
"geometricmultipoint" /
"geometricmultilinestring" /
"geometricmultipolygon" /
abstractSpatialTypeName = "geography" /
"geometry"
primitiveKeyProperty = odataIdentifier
; that identifies a primitive property of an entity type that is part of the key of that entity type
primitiveNonKeyProperty = odataIdentifier
; that identifies a primitive Property on the current entity type or complex type.
primitiveColProperty = odataIdentifier
; that identifies a property that is a collection of primitive types.
complexProperty = odataIdentifier
; that identifies a complex type property on the current entity type or complex type
complexColProperty = odataIdentifier
; that identifies a property that is a collection of a complex type
streamProperty = odataIdentifier
; that identifies a stream Property on the current entity type
propertyName = primitiveKeyProperty /
primitiveNonKeyProperty /
primitiveColProperty /
complexProperty /
complexColProperty /
streamProperty
entityContainerName = odataIdentifier
serviceOperation = entityServiceOp /
entityColServiceOp /
complexServiceOp /
complexColServiceOp /
primitiveServiceOp /
primitiveColServiceOp
entityServiceOp = odataIdentifier
entityColServiceOp = odataIdentifier
complexServiceOp = odataIdentifier
complexColServiceOp = odataIdentifier
primitiveServiceOp = odataIdentifier
primitiveColServiceOp = odataIdentitier
entityNavigationProperty = odataIdentifier
entityColNavigationProperty = odataIdentifier
navigationProperty = entityNavigationProperty / entityColNavigationProperty
entityFunction = odataIdentifier
; identifies by name a function that returns an entity
entityColFunction = odataIdentifier
; identifies by name a function that returns a collection of entities
complexFunction = odataIdentifier
; identifies by name a function that returns a complex type instance
complexColFunction = odataIdentifier
; identifies by name a function that returns a collection of complex type instances
primitiveFunction = odataIdentifier
; identifies by name a function that returns a primitive value
primitiveColFunction = odataIdentitier
; identifies by name a function that returns a collection of primitive values
function = entityFunction /
entityColFunction /
complexFunction /
complexColFunction /
primitiveFunction /
primitiveColFunction
fullEntityFunction = [ operationQualifier ] entityFunction
; operationQualifier is only optional if the entityFunction alone is unambiguous
fullEntityColFunction = [ operationQualifier ] entityColFunction
; operationQualifier is only optional if the entityColFunction alone is unambiguous
fullComplexFunction = [ operationQualifier ] complexFunction
; operationQualifier is only optional if the complexFunction alone is unambiguous
fullComplexColFunction = [ operationQualifier ] complexColFunction
; operationQualifier is only optional if the complexColFunction alone is unambiguous
fullPrimitiveFunction = [ operationQualifier ] primitiveFunction
; operationQualifier is only optional if the primitiveFunction alone is unambiguous
fullPrimitiveColFunction = [ operationQualifier ] primitiveColFunction
; operationQualifier is only optional if the primitiveColFunction alone is unambiguous
fullFunction = fullEntityFunction /
fullEntityColFunction /
fullComplexFunction /
fullComplexColFunction /
fullPrimitiveFunction /
fullPrimitiveColFunction
entityAction = odataIdentifier
; identifies by name an action that returns an entity
entityColAction = odataIdentifier
; identifies by name an action that returns a collection of entities
complexAction = odataIdentifier
; identifies by name an action that returns a complex type instance
complexColAction = odataIdentifier
; identifies by name an action that returns a collection of complex type instances
primitiveAction = odataIdentifier
; identifies by name an action that returns a primitive value
primitiveColAction = odataIdentifier
; identifies by name an action that returns a collection of primitive values
voidAction = odataIdentifier
; identifies by name an action
action = entityAction /
entityColAction /
complexAction /
complexColAction /
primitiveAction /
primitiveColAction /
voidAction
fullAction = [ operationQualifier ] action
boundAction = fullAction
; just like 'action' but with the additional restriction that the action MUST support binding (i.e. IsBindable = true)
qualifiedActionName = fullActionName
; used in $select
qualifiedFunctionName = fullFunction [ "(" parameterTypeNames ")" ]
; the parameterTypeNames are required to uniquely identify the Function
; only if the Function in question has overloads.
parameterTypeNames = [ parameterTypeName *( "," parameterTypeName ) ]
; the types of all the parameters to the corresponding functionImport
; in the order they are declared in the function import
parameterTypeName = qualifiedTypeName
primitiveLiteral = null /
binary /
boolean /
byte /
dateTime /
dateTimeOffset /
decimal /
double /
geography /
geographyCollection /
geographyLineString /
geographyMultiLineString /
geographyMultiPoint /
geographyMultiPolygon /
geographyPoint /
geographyPolygon /
geometry /
geometryCollection /
geometryLineString /
geometryMultiLineString /
geometryMultiPoint /
geometryMultiPolygon /
geometryPoint /
geometryPolygon /
guid /
int16 /
int32 /
int64 /
sbyte /
single /
string /
time
null = "null" [ "'" qualifiedTypeName "'" ]
; The optional qualifiedTypeName is used to specify what type this null value should be considered.
; Knowing the type is useful for function overload resolution purposes.
binary = ( %d88 / "binary" )
SQUOTE
2*HEXDIG
SQUOTE
; note: "X" is case sensitive "binary" is not hence using the character code.
boolean = ( "true" / "1" ) /
( "false" / "0" )
byte = 3*DIGIT
; numbers in the range from 0 to 257
dateTime = "datetime" SQUOTE dateTimeBody SQUOTE
dateTimeOffset = "datetimeoffset" SQUOTE dateTimeOffsetBody SQUOTE
dateTimeBody = year "-" month "-" day "T" hour ":" minute [ ":" second [ "." nanoSeconds ] ]
dateTimeOffsetBody = dateTimeBody "Z" / ; TODO: is the Z optional?
dateTimeBody sign zeroToThirteen [ ":00" ] /
dateTimeBody sign zeroToTwelve [ ":" zeroToSixty ]
decimal = sign 1*29DIGIT ["." 1*29DIGIT] ("M"/"m")
double = (
sign 1*17DIGIT /
sign *DIGIT "." *DIGIT /
sign 1*DIGIT "." 16*DIGIT ( "e" / "E" ) sign 1*3DIGIT
) ("D" / "d") /
nanInfinity [ "D" / "d" ]
geography = ; Format specific
geographyCollection = ; Format specific
geographyLineString = ; Format specific
geographyMultiLineString = ; Format specific
geographyMultiPoint = ; Format specific
geographyMultiPolygon = ; Format specific
geographyPoint = ; Format specific
geographyPolygon = ; Format specific
geometry = ; Format specific
geometryCollection = ; Format specific
geometryLineString = ; Format specific
geometryMultiLineString = ; Format specific
geometryMultiPoint = ; Format specific
geometryMultiPolygon = ; Format specific
geometryPoint = ; Format specific
geometryPolygon = ; Format specific
guid = "guid" SQUOTE 8*HEXDIG "-" 4*HEXDIG "-" 4*HEXDIG "-" 12*HEXDIG SQUOTE
int16 = [ sign ] 5*DIGIT
; numbers in the range from -32768 to 32767
int32 = [ sign ] 10*DIGIT
; numbers in the range from -2147483648 to<PHONE_NUMBER>
int64 = [ sign ] 19*DIGIT ( "L" / "l" )
; numbers in the range from -9223372036854775808 to<PHONE_NUMBER>854775807
sbyte = [ sign ] 3*DIGIT
; numbers in the range from -128 to 127
single = (
sign 1*8DIGIT /
sign *DIGIT "." *DIGIT /
sign 1*DIGIT "." 8*DIGIT ( "e" / "E" ) sign 1*2DIGIT
) ("F" / "f") /
nanInfinity [ "F" / "f" ]
string = SQUOTE *UTF8-char SQUOTE
time = time SQUOTE sign "P" [ 1*DIGIT "Y" ] [ 1*DIGIT "M" ] [ 1*DIGIT "D" ] [ "T" [ 1*DIGIT "H" ] [ 1*DIGIT "M" ] [ 1*DIGIT "S" ] ] SQUOTE
; the above is an approximation of the rules for an xml duration.
; see the lexical representation for duration in http://www.w3.org/TR/xmlschema-2 for more information
odataUri = scheme ; see section 3.1 of [RFC3986]
host ; section 3.2.2 of [RFC3986]
[ ":" port ] ; section 3.2.3 of [RFC3986]
serviceRoot
[ "$metadata" / "$batch" / odataRelativeUri ]
serviceRoot = *( "/" segment-nz )
segment-nz = ; section 3.3 of [RFC3986]
; the non empty sequence of characters
; outside the set of URL reserved
; characters as specified in [RFC3986]
odataRelativeUri = resourcePath ["?" queryOptions ]
queryOptions = queryOption *("&" queryOption)
queryOption = systemQueryOption /
customQueryOption /
sopParameterNameAndValue /
aliasAndValue /
parameterNameAndValue
systemQueryOption = expand /
filter /
orderby /
skip /
top /
format /
inlinecount /
select /
skiptoken
expand = "$expand=" expandClause
expandClause = expandItem *("," expandItem)
expandItemPath = [ qualifiedEntityTypeName "/" ] navigationPropertyName
*([ "/" qualifiedEntityTypeName ] "/" navigationPropertyName)
count = "/$count"
filter = "$filter" [ WSP ] "=" [ WSP] boolCommonExpr
orderby = "$orderby" [ WSP ] "=" [ WSP]
commonExpr [WSP] [ "asc" / "desc" ] *( COMMA [ WSP ] commonExpr [ WSP ] [ "asc" / "desc" ])
skip = "$skip=" 1*DIGIT
top = "$top=" 1*DIGIT
format = "$format=" (
"json" /
"atom" /
"xml" /
<a data service specific value indicating a format specific to the specific data service> /
<An IANA-defined [IANA-MMT] content type>
)
inlinecount = "$inlinecount=" ( "allpages" / "none" )
select = "$select=" selectClause
selectClause = selectItem *( COMMA selectItem )
selectItem = star /
[ qualifiedEntityTypeName "/" ] (
propertyName /
qualifiedActionName /
qualifiedFunctionName /
allOperationsInContainer /
( navigationProperty [ "/" selectItem ] )
)
skiptoken = "$skiptoken=" 1*pchar
customQueryOption = customName [ WSP ] [ "=" [ WSP ] customValue ]
customName = ( unreserved / pct-encoded / ":" / "@" / "!" / "'" / "(" / ")" / "*" / "+" / "," / ";" )
*( unreserved / pct-encoded / ":" / "@" / "!" / "$" / "'" / "(" / ")" / "*" / "+" / "," / ";" )
; MUST not start with '$'
customValue = *( unreserved / pct-encoded / ":" / "@" / "!" / "$" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" )
resourcePath = "/"
[ entityContainerName "." ] entitySetName [collectionNavigation] /
( entityColServiceOpCall / entityColFunctionCall ) [ collectionNavigation ] /
( entityServiceOpCall / entityFunctionCall ) [ singleNavigation ] /
( complexColServiceOpCall / complexColFunctionCall ) [ boundOperation ] /
( complexServiceOpCall / complexFunctionCall ) [ boundOperation / complexPropertyPath ] /
( primitiveColServiceOpCall / primitiveColFunctionCall ) [ boundOperation ] /
( primitiveServiceOpCall / primitiveFunctionCall ) [ boundOperation / value ] /
actionCall
collectionNavigation = [ "/" qualifiedEntityTypeName ] "/"
(
( "(" keyPredicate ")" [ singleNavigation ] ) /
boundEntityFuncCall [ singleNavigation ] /
boundEntityColFuncCall [ collectionNavigation ] /
boundPrimitiveFuncCall [ boundOperation / value ] /
boundPrimitiveColFuncCall [ boundOperation ] /
boundComplexFuncCall [ complexPropertyPath / boundOperation ] /
boundComplexColFuncCall [ boundOperation ] /
boundActionCall
)
singleNavigation = [ "/" qualifiedEntityTypeName ] "/"
(
( "$links" / navigationPropertyName ) /
( entityColNavigationProperty [ collectionNavigation ] ) /
( entityNavigationProperty [ singleNavigation ] ) /
primitivePropertyPath /
complexPropertyPath /
collectionPropertyPath /
streamPropertyPath /
value /
boundOperation
)
boundOperation = [ "/" qualifiedEntityTypeName ]
"/"
(
boundActionCall /
boundEntityColFuncCall [ singleNavigation ] /
boundEntityFuncCall [ collectionNavigation ] /
boundPrimitiveFuncCall [ boundOperation / value ] /
boundPrimitiveColFuncCall [ boundOperation ] /
boundComplexFuncCall [ complexPropertyPath / boundOperation ] /
boundComplexColFuncCall [ boundOperation ]
)
; boundOperation segments can only be composed if the type of the previous segment matches
; the type of the first parameter of the action or function being called.
; NOTE: the qualifiedEntityTypeName is only permitted if the previous segment is an entity or collection of entities.
primitivePropertyPath = [ "/ qualifiedEntityTypeName" ] "/" ( primitiveKeyProperty / primitiveNonKeyProperty ) [ value ]
complexPropertyPath = [ "/ qualifiedEntityTypeName" ] "/" complexProperty
[
primitivePropertyPath /
complexPropertyPath /
collectionPropertyPath /
boundOperation
]
collectionPropertyPath = [ "/" qualifiedEntityType ] "/" ( primitiveColProperty / complexColProperty ) [ boundOperation ]
streamPropertyPath = [ "/" qualifiedEntityType ] "/" streamProperty
value = "/$value"
key = simpleKey / compoundKey
simpleKey = "(" primitiveLiteral ")"
compoundKey = "(" keyValuePair 1*("," keyValuePair) ")"
keyValuePair = primitiveKeyProperty "=" keyPropertyValue
keyPropertyValue = primitiveLiteral
actionCall = [ operationQualifier ] action [ "()" ]
boundActionCall = [ operationQualifier ] action [ "()" ]
; with the added restriction that the binding parameter MUST be either an entity or collection of entities
; and is specified by reference using the URL immediately preceding (to the left) of the boundActionCall
entityFunctionCall = fullEntityFunctionCall functionParameters
entityColFunctionCall = fullEntityColFunctionCall functionParameters
complexFunctionCall = fullComplexFunctionCall functionParameters
complexColFunctionCall = fullComplexColFunctionCall functionParameters
primitiveFunctionCall = fullPrimitiveFunctionCall functionParameters
primitiveColFunctionCall = fullPrimitiveFunctionCall functionParameters
functionCall = entityFunctionCall /
entityColFunctionCall /
complexFunctionCall /
complexColFunctionCall /
primitiveFunctionCall /
primitiveColFunctionCall
boundEntityFuncCall = fullEntityFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundEntityFuncCall
; and the functionParameters MUST NOT include the bindingParameter.
boundEntityColFuncCall = fullEntityColFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundEntityColFuncCall
; and the functionParameters MUST NOT include the bindingParameter.
boundComplexFuncCall = fullComplexFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundComplexFuncCall
; and the functionParameters MUST NOT include the bindingParameter.
boundComplexColFuncCall = fullComplexColFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundComplexColFuncCall
; and the functionParameters MUST NOT include the bindingParameter.
boundPrimitiveFuncCall = fullPrimitiveFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundPrimitiveFuncCall
; and the functionParameters MUST NOT include the bindingParameter.
boundPrimitiveColFuncCall = fullPrimitiveFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundPrimitiveColFuncCall
; and the functionParameters MUST NOT include the bindingParameter.
boundFunctionCall = boundEntityFuncCall /
boundEntityColFuncCall /
boundComplexFuncCall /
boundComplexColFuncCall /
boundPrimitiveFuncCall /
boundPrimitiveColFuncCall
functionParameters = "(" [ functionParameter *( "," functionParameter ) ] ")"
functionParameter = functionParameterName "=" ( primitiveParameterValue / parameterAlias )
primitiveParameterValue = primitiveLiteral
parameterAlias = "@" *pchar
aliasAndValue = parameterAlias "=" parameterValue
parameterAndValue = functionParameterName "=" parameterValue
primitivePropInJSONLight = TODO: arlo JSON Light format
; unreferenced until complexInJSONLight is defined.
primitivePropertyInVJSON = quotation-mark ( primitiveKeyProperty / primitiveNonKeyProperty ) quotation-mark name-separator primitiveLiteralInVJSON
complexPropertyInJSON = complexPropertyInVJSON / complexPropertyInJSONLight
complexPropertyInVJSON = quotation-mark complexProperty quotation-mark name-separator complexInVJSON
complexPropertyInJSONLight = TODO: arlo JSON Light format.
collectionPropertyInJSON = colPropertyInJSONLight / collectionPropertyInVJSON
collectionPropertyInVJSON = ( quotation-mark primitiveColProperty quotation-mark name-separator "[" [ primitiveVJSONLiteral *( COMMA primitiveLiteralInVJSON ) ] "]" /
( quotation-mark complexColProperty quotation-mark name-separator "[" [ complexInVJSON *( COMMA complexInVJSON ) ] "]" /
colPropertyInJSONLight = TODO: alro JSON Light format
primitiveLiteralInVJSON = TODO: arlo VJSON format.
primitiveLiteralInJSONLight = TODO: arlo JSON Light format.
complexTypeMetadataInVJSON = quotation-mark "__metadata" quotation-mark
name-separator
begin-object
[typeNVPInVJSON]
end-object
typeNVPInVJSON = quotation-mark "type" quotation-mark
name-separator
quotation-mark qualifiedTypeName quotation-mark
parameterValue = primitiveLiteral / ; note this is a Uri literal not a JSON literal
complexTypeInJSON /
primitiveColInJSON /
complexColInJSON
complexInJSON = complexInVJSON / complexInJSONLight
complexInJSONLight = TODO: arlo JSON light format
complexInVJSON = begin-object
[
(
complexTypeMetadataInVJSON /
primitivePropertyInVJSON /
complexPropertyInVJSON /
collectionPropertyInVJSON
)
*(
value-separator
(
primitivePropertyInVJSON /
complexPropertyInVJSON /
collectionPropertyInVJSON
)
)
]
end-object
entityServiceOpCall = [ operationQualifier ] entityServiceOp [ "()" ]
entityColServiceOpCall = [ operationQualifier ] entityColServiceOp [ "()" ]
complexServiceOpCall = [ operationQualifier ] complexServiceOp [ "()" ]
complexColServiceOpCall = [ operationQualifier ] complexColServiceOp [ "()" ]
primitiveServiceOpCall = [ operationQualifier ] primitiveServiceOp [ "()" ]
primitiveColServiceOpCall = [ operationQualifier ] primitiveServiceOp [ "()" ]
serviceOperationCall = entityServiceOpCall /
entityColServiceOpCall /
complexServiceOpCall /
complexColServiceOpCall /
primitiveServiceOpCall /
primitiveColServiceOpCall
serviceOpParameterName = odataIdentifier;
; identifies by name a parameter to a ServiceOperation
sopParameterNameAndValue = serviceOperationParameterName "=" primitiveParameterValue
; when a serviceOperation Parameter is omitted the parameter value MUST be assumed to be null
commonExpr = [ WSP ] (
boolCommonExpr /
methodCallExpr /
parenExpr /
literalExpr /
addExpr /
subExpr /
mulExpr /
divExpr /
modExpr /
negateExpr /
memberExpr /
firstMemberExpr /
castExpr /
functionCallExpr
) [ WSP ]
boolCommonExpr = [ WSP ] (
boolLiteralExpr /
andExpr /
orExpr /
boolPrimitiveMemberExpr /
eqExpr /
neExpr /
ltExpr /
leExpr /
gtExpr /
geExpr /
notExpr /
isofExpr /
boolCastExpr /
boolMethodCallExpr /
firstBoolPrimitiveMemExpr /
boolParenExpr /
boolFunctionCallExpr
) [ WSP ]
boolLiteralExpr = boolean
literalExpr = primitiveLiteral
parenExpr = "(" [ WSP ] commonExpr [ WSP ] ")"
boolParenExpr = "(" [ WSP ] boolCommonExpr [ WSP ] ")"
andExpr = boolCommonExpr WSP "and" WSP boolCommonExpr
orExpr = boolCommonExpr WSP "or" WSP boolCommonExpr
eqExpr = commonExpr WSP "eq" WSP commonExpr
neExpr = commonExpr WSP "ne" WSP commonExpr
ltExpr = commonExpr WSP "lt" WSP commonExpr
leExpr = commonExpr WSP "le" WSP commonExpr
gtExpr = commonExpr WSP "gt" WSP commonExpr
geExpr = commonExpr WSP "ge" WSP commonExpr
addExpr = commonExpr WSP "add" WSP commonExpr
subExpr = commonExpr WSP "sub" WSP commonExpr
mulExpr = commonExpr WSP "mul" WSP commonExpr
divExpr = commonExpr WSP "div" WSP commonExpr
modExpr = commonExpr WSP "mod" WSP commonExpr
negateExpr = "-" [ WSP ] commonExpr
notExpr = "not" WSP commonExpr
isofExpr = "isof" [ WSP ] "(" [ [ WSP ] commonExpr [ WSP ] "," ] [ WSP ] qualifiedTypeName [ WSP ] ")"
castExpr = "cast" [ WSP ] "(" [ [ WSP ] commonExpr [ WSP ] "," ] [ WSP ] qualifiedTypeName [ WSP ] ")"
boolCastExpr = "cast" [ WSP ] "(" [ [ WSP ] commonExpr [ WSP ] "," ] [ WSP ] "Edm.Boolean" [ WSP ] ")"
firstMemberExpr = [ WSP ] [ qualifiedEntityTypeName "/"]
[ lambdaPredicatePrefixExpr ]
; A lambdaPredicatePrefixExpr is only defined inside a
; lambdaPredicateExpr. A lambdaPredicateExpr is required
; inside a lambdaPredicateExpr.
entityColNavigationProperty [ collectionNavigationExpr ] ) /
entityNavigationProperty [ singleNavigationExpr ] ) /
primitivePropertyPath /
complexPropertyPath /
collectionPropertyPath [ anyExpr / allExpr ]
firstBoolPrimitiveMemExpr = [ qualifiedEntityTypeName "/"] entityProperty
boolPrimitiveMemberExpr = commonExpr [ WSP ] "/" [WSP]
[ qualifiedEntityTypeName "/" ] primitivePropertyPath
memberExpr = commonExpr [ WSP ] "/" [ WSP ] [ qualifiedEntityTypeName "/" ]
entityColNavigationProperty [ collectionNavigationExpr ] ) /
entityNavigationProperty [ singleNavigationExpr ] ) /
primitivePropertyPath /
complexPropertyPath /
collectionPropertyPath [ anyExpr / allExpr ]
collectionNavigationExpr = [ "/" qualifiedEntityTypeName ] "/"
(
boundFunctionExpr /
anyExpr /
allExpr
)
singleNavigationExpr = [ "/" qualifiedEntityTypeName ] "/"
(
( entityColNavigationProperty [ collectionNavigationExpr ] ) /
( entityNavigationProperty [ singleNavigationExpr ] ) /
primitivePropertyPath /
complexPropertyPath /
collectionPropertyPath [ anyExpr / allExpr ] /
streamPropertyPath /
boundFunctionExpr
)
functionExpr = (
entityColFuncCall [ singleNavigationExpr ] /
entityFuncCall [ collectionNavigationExpr ] /
primitiveFuncCall [ boundFunctionExpr ] /
primitiveColFuncCall [ boundFunctionExpr ] /
complexFuncCall [ complexPropertyPath / boundFunctionExpr ] /
complexColFuncCall [ boundFunctionExpr ]
)
boolFunctionExpr = functionExpr
; with the added restriction that the boolFunctionExpr MUST return a boolean value
boundFunctionExpr = [ "/" qualifiedEntityTypeName ]
"/"
(
boundEntityColFuncCall [ singleNavigationExpr ] /
boundEntityFuncCall [ collectionNavigationExpr ] /
boundPrimitiveFuncCall [ boundFunctionExpr ] /
boundPrimitiveColFuncCall [ boundFunctionExpr ] /
boundComplexFuncCall [ complexPropertyPath / boundFunctionExpr ] /
boundComplexColFuncCall [ boundFunctionExpr ]
)
; boundOperation segments can only be composed if the type of the previous segment matches
; the type of the first parameter of the action or function being called.
; NOTE: the qualifiedEntityTypeName is only permitted if the previous segment is an Entity or Collection of Entities.
boolBoundFunctionExpr = boundFunctionExpr
; with the added restriction that the boolBoundFunctionExpr MUST return a boolean value
anyExpr = "any(" [ lambdaVariableExpr ":" lambdaPredicateExpr ] ")"
allExpr = "all(" lambdaVariableExpr ":" lambdaPredicateExpr ")"
implicitVariableExpr = "$it"
; references the unnamed outer variable of the query
lambdaVariableExpr = odataIdentifier
inscopeVariableExpr = implicitVariableExpr | lambdaVariableExpr
; the lambdaVariableExpr must be the name of a variable introduced by either the
; current lambdaMethodCallExprâ€™s lambdaVariableExpr or via a wrapping
; lambdaMethodCallExprâ€™s lambdaVariableExpr.
lambdaPredicateExpr = boolCommonExpr
; this is a boolCommonExpr with the added restriction that any
; firstMemberExprs inside the methodPredicateExpr MUST have a prefix of
; lambdaPredicatePrefixExpr
methodCallExpr = boolMethodExpr /
indexOfMethodCallExpr /
replaceMethodCallExpr /
toLowerMethodCallExpr /
toUpperMethodCallExpr /
trimMethodCallExpr /
substringMethodCallExpr /
concatMethodCallExpr /
lengthMethodCallExpr /
yearMethodCallExpr /
monthMethodCallExpr /
dayMethodCallExpr /
hourMethodCallExpr /
minuteMethodCallExpr /
secondMethodCallExpr /
roundMethodCallExpr /
floorMethodCallExpr /
ceilingMethodCallExpr /
distanceMethodCallExpr /
geoLengthMethodCallExpr /
getTotalOffsetMinutesExpr
boolMethodExpr = endsWithMethodCallExpr /
startsWithMethodCallExpr /
substringOfMethodCallExpr /
intersectsMethodCallExpr /
anyMethodCallExpr /
allMethodCallExpr
endsWithMethodCallExpr = "endswith" [WSP]
"(" [WSP] commonExpr [WSP]
"," [WSP] commonExpr [WSP] ")"
indexOfMethodCallExpr = "indexof" [WSP]
"(" [WSP] commonExpr [WSP]
"," [WSP] commonExpr [WSP] ")"
replaceMethodCallExpr = "replace" [WSP]
"(" [WSP] commonExpr [WSP]
"," [WSP] commonExpr [WSP]
"," [WSP] commonExpr [WSP] ")"
startsWithMethodCallExpr = "startswith" [WSP]
"(" [WSP] commonExpr [WSP]
"," [WSP] commonExpr [WSP] ")"
toLowerMethodCallExpr = "tolower" [WSP]
"(" [WSP] commonExpr [WSP] ")"
toUpperMethodCallExpr = "toupper" [WSP]
"(" [WSP] commonExpr [WSP] ")"
trimMethodCallExpr = "trim" [WSP]
"(" [WSP] commonExpr [WSP] ")"
substringMethodCallExp = "substring" [WSP]
"(" [WSP] commonExpr [WSP]
"," [WSP] commonExpr [WSP]
[ "," [WSP] commonExpr [WSP] ] ")"
substringOfMethodCallExpr = "substringof" [WSP]
"(" [WSP] commonExpr [WSP]
[ "," [WSP] commonExpr [WSP] ] ")"
concatMethodCallExpr = "concat" [WSP]
"(" [WSP] commonExpr [WSP]
[ "," [WSP] commonExpr [WSP] ] ")"
lengthMethodCallExpr = "length" [WSP]
"(" [WSP] commonExpr [WSP] ")"
getTotalOffsetMinutesExpr = "gettotaloffsetminutes" [WSP]
"(" [WSP] commonExpr [WSP] ")"
yearMethodCallExpr = "year" [WSP]
"(" [WSP] commonExpr [WSP] ")"
monthMethodCallExpr = "month" [WSP]
"(" [WSP] commonExpr [WSP] ")"
dayMethodCallExpr = "day" [WSP]
"(" [WSP] commonExpr [WSP] ")"
hourMethodCallExpr = "hour" [WSP]
"(" [WSP] commonExpr [WSP] ")"
minuteMethodCallExpr = "minute" [WSP]
"(" [WSP] commonExpr [WSP] ")"
secondMethodCallExpr = "second" [WSP]
"(" [WSP] commonExpr [WSP] ")"
roundMethodCallExpr = "round" [WSP]
"(" [WSP] commonExpr [WSP] ")"
floorMethodCallExpr = "floor" [WSP]
"(" [WSP] commonExpr [WSP] ")"
ceilingMethodCallExpr = "ceiling" [WSP]
"(" [WSP] commonExpr [WSP] ")"
distanceMethodCallExpr = "geo.distance" [WSP]
"(" [WSP] commonExpr [WSP]
"," [WSP] commonExpr [WSP] ")"
geoLengthMethodCallExpr = "geo.length" [WSP]
"(" [WSP] commonExpr [WSP] ")"
intersectsMethodCallExpr = "geo.intersects" [WSP]
"(" [WSP] commonExpr [WSP]
"," [WSP] commonExpr [WSP] ")"
– TODO: Fill in with WKT, possibly taking a normative reference on OGC
geography = ; Format specific
geographyCollection = ; Format specific
geographyLineString = ; Format specific
geographyMultiLineString = ; Format specific
geographyMultiPoint = ; Format specific
geographyMultiPolygon = ; Format specific
geographyPoint = ; Format specific
geographyPolygon = ; Format specific
geometry = ; Format specific
geometryCollection = ; Format specific
geometryLineString = ; Format specific
geometryMultiLineString = ; Format specific
geometryMultiPoint = ; Format specific
geometryMultiPolygon = ; Format specific
geometryPoint = ; Format specific
geometryPolygon = ; Format specific
geography = ; Format specific
geographyCollection = ; Format specific
geographyLineString = ; Format specific
geographyMultiLineString = ; Format specific
geographyMultiPoint = ; Format specific
geographyMultiPolygon = ; Format specific
geographyPoint = ; Format specific
geographyPolygon = ; Format specific
geometry = ; Format specific
geometryCollection = ; Format specific
geometryLineString = ; Format specific
geometryMultiLineString = ; Format specific
geometryMultiPoint = ; Format specific
geometryMultiPolygon = ; Format specific
geometryPoint = ; Format specific
geometryPolygon = ; Format specific
geography = ; Format specific
geographyCollection = ; Format specific
geographyLineString = ; Format specific
geographyMultiLineString = ; Format specific
geographyMultiPoint = ; Format specific
geographyMultiPolygon = ; Format specific
geographyPoint = ; Format specific
geographyPolygon = ; Format specific
geometry = ; Format specific
geometryCollection = ; Format specific
geometryLineString = ; Format specific
geometryMultiLineString = ; Format specific
geometryMultiPoint = ; Format specific
geometryMultiPolygon = ; Format specific
geometryPoint = ; Format specific
geometryPolygon = ; Format specific


WIN
LOSE
DRAW
Dealer
Player
BET 5$
BET 10$
BET 25$
Dealer cards:
Player cards:
HIT
STAND
Double Down
Split
Surrender
Insurance
Restart
Bet:
0
USD
Balance:
0
USD


{% load static %}
Set have great you male grass yielding an yielding first their you're have called the abundantly fruit were man
View Student RecordsSet have great you male grass yielding an yielding first their you're have called the abundantly fruit were man
Check Student ScoresSet have great you male grass yielding an yielding first their you're have called the abundantly fruit were man
Add NowFifth saying upon divide divide rule for deep their female all hath brind Days and beast greater grass signs abundantly have greater also days years under brought moveth.


--- layout: post status: publish published: true title: Updated PS & BizTalk Posts author: display_name: Tomas Restrepo login: tomasr email<EMAIL_ADDRESS>url: http://winterdom.com/ author_login: tomasr author_email<EMAIL_ADDRESS>author_url: http://winterdom.com/ wordpress_id: 131 wordpress_url: http://winterdom.com/2008/06/updatedpsampbiztalkposts date: '2008-06-03 17:39:11 +0000' date_gmt: '2008-06-03 17:39:11 +0000' categories: - BizTalk - PowerShell tags: [] comments: [] ---
I just took a few moments to update some of my old posts on administering BizTalk Server using PowerShell:
Here are some of the changes:
If anyone notices any other problems with the samples, let me know!


Dabhane Suyash
Pune, Maharashtra, India
<EMAIL_ADDRESS>To obtain a position that will enable me to use my skills,educational background, and ability to work well with people to benefit mutual growth and success.


DVD-RAM-CONTROL(1) User Commands DVD-RAM-CONTROL(1) NAME dev-ram-control - checks features of DVD-RAM discs SYNOPSIS dvd-ram-control [-arre] [-awre] [-rdonly|-rdwr] /dev/dvd DESCRIPTION The dvd-ram-control command allows the user to check/set features of DVD- RAM discs. One such information is the Persistent Write Protection, con‐ trolling if the disc can be in read-only mode or if both reads and writes are enabled. It also allows the user to check and or set if Automatic Write Relocation Enable (AWRE) as well as Automatic Read Relocation Enable (ARRE) are enabled or not for a given media. SEE ALSO Most up-to-date information on dvd+rw-tools is available at http://fy.chalmers.se/~appro/linux/DVD+RW/. The manpage for growisofs(1), dvd+rw-format(1), dvd+rw-booktype(1). AUTHOR dvd+rw-mediainfo was written by Andy Polyakov<EMAIL_ADDRESS>This manual page was written by Rogério Brito<EMAIL_ADDRESS>for the Debian project, but it may be used by others. dvd+rw-tools February 2010 DVD-RAM-CONTROL(1)


Dean’s List Wichita State University Barton School of Business, Wichita, Kansas, Recruiting Director for the Shocker Student Marketing Association. Volunteered for the Wichita IndoChinese Center and the Keep Girls Safe Foundation. Campus Ambassador for Haiti at Wichita State University
Content Coordinator at Skyword: a Content Marketing and software company with fortune 500 clients
Prepared weekly and monthly Web Analytic reports for three major clients.
Monitored and collected data on users behaviors with Google Analytics, Adobe Analytics, Excel, Google Sheet and my own custom social media listening tool.
Built a custom social media listening tool with 127 line of Google App Scipts Code
Set up Google Data Studio for Weekly Web analytics reporting.
Researched profitable topics ideas for content creation with Google Adwords, Google Trends, Google Correlate, SEM Rush, Answer The Public and Soovle.
Researched keywords related to technology, freelancing and energy for about 80 articles every month for three content hubs.
Designed web pages for Harvard University’s Evidence for Policy Design Center for International Development using HTML, CSS and Github. Created graphs and enhanced visuals/images with Adobe Creative Suite.
Designed interior designer,Lizanne Guthrie, website using Wordpress, CMS, and CSS. Currently building clubartizan.com, a side project build with RubyOnRails, Html/CSS, JS and Jquery.
Developed digital report for the IOP high traffic websit and the JFK Jr. Forum YouTube Channel. Carried out research with Google Analytic on the impact the IOP 2015 website redesign had on user experience and overall website performance.
Added about 500 users to the IOP website and reduced bounce rate by 4 points by identifying and fixing broken links with Google Analytics and Google Webmasters.
Executed Quality testing on the website and helped fixed bugs.
Provided Drupal/HTML/site-specific assistance to the IOP Website. Helped uploading and editing images, creating blog posts, editing existing pages, redefining page layouts.
Provided assistance with video production for the JFK Forum YouTube channel and gathered key insight with YouTube analytics.
Compiled and produced digital roundups for the IOP 6,000 email subscribers with Mailchimp.
SEO specialist and web developer for Ascential Digital Marketing: an advertising agency with clients in higher education and banking.
Built and managed websites using Wordpress, PHP, HTML, and CSS, for over 20 clients.
Optimized clients’ websites for onsite SEO using Raven Tools and Screaming Frog.
Prepared digital marketing reports for the agency clients. Monitor users behaviors with Google Analytics and managed Google Adwords.
Audited and optimized clients’ websites for onsite and offsite SEO using Raven Tools.
Built SEO reports and added about 50 backlinks or more per client.
Improved revenue by developing three websites with Wordpress for the magazine’s advertisers.
Designed a custom Wordpress theme for Urban Prevue, the online version of the front porch magazine with PHP, Bootstrap, Jquery, Html/CSS.
Campus Ambassador for Bloomberg Institute, a Bloomberg L.P. division
Designed marketing materials for Bloomberg Institute and communicated with over 1000 business students
Created and delivered presentations about the Bloomberg Aptitude Test to more than 200 students on campus.
Launched the first Facebook page for a supermarket based in Haiti, successfully gaining 800 fans in the first two months and helping increase the company’s visibility on the local market.
Designed social media content for the company. Created Facebook campaigns for company events and promotions.


TbBMod.js is an extension for the iUI framework. It was designed to offer some flexibility to some of the default behaviors of iUI, namely page context controlling of toolbar button behavior. In short it gives you the flexibility to control what the toolbar buttons do on a per page basis.
If your previewing this app, you're already seeing it in action. Just click the "?" button at the top of each page to see info about that page, (the extension is hiding it on this page now!). This button is a static link, but the url changes for each page. About and Instruction Page 1 are an internal (#link) page Demo, and Instruction Page 2 is external(AJAX) page Demo. Pages where the button is not modded will default back here.
For info on how to use this extension see Instructions. For info on how it works click the "How" button on instruction page 2. Thanks for using TbBMod. I hope it helps your web-app development needs.
Special Thanks to all in the iUI dev community. Without you this extension may not exist. It is my pleasure to share freely with everyone. Stay tuned to the iphonewebdev and iui-developers googlegroups for updates as I am currently working to add the ability to mod the back button on demand.
Vic Hudson
This is help for internal pages
TbBMod is easy to install on your iUI powered web app. It requires no changes to existing iUI components. Start by linking the TbBMod.js to your main index file just like the you would iui.js. Next make sure your right toolbar button has a unique id attribute, and links to some generic page for the pages you don't mod it on. Installation is now done!
The rest is done by setting some flags in the pages you want to mod buttons for. The flags are pretty simple to use and there are currently three different options to use on your button. You may hide the button, change the buttons text, and change the buttons link address all on a per page basis. The flags used are hidden form fields on your page. If the page you need to mod the button on is, or already has, a form just add the hidden inputs to it. If it is a list or static panel just add a form with the hidden inputs to the end of your page(just before your closing ul or div tag).
The key is in the naming of the form inputs and their value. The standard naming convention is TbBMod followed by the mod option you want then an underscore followed by the id of the button to mod. This example changes the link of a button with id = "help" to page2help.html
<form>
<input type = "hidden" name = "TbBModHREF_help" value = "help2.html" />
</form>
Since it is my "?" button above and would serve to deliver help info about the current page I don't really want to change it's text label most of the time, but on the current page for example it changes to a "How" button linking to explanation of how the extension works. It is done like this.
<input type = "hidden" name = "TbBModTEXT_help" value = "How" />
<input type = "hidden" name = "TbBModHREF_help" value = "how.html" />


Two suspects arrested for planning to attack French president – Report
Two men close to the ultra-right were indicted for “terrorist criminal conspiracy” and placed in pre-trial detention, as part of the investigation of a bombing project against French President Emmanuel Macron.
Franceinfo, a French domestic rolling news channel, reported this on Saturday.
The two suspects, aged 30 and 45 respectively, were believed to have planned an action against President Macron during the commemoration of the centenary of the end of the First World War, in Nov. 2018, said Franceinfo quoting a Parisian judicial source.
READ ALSO: I have memories of Fela Shrine, says French President
The two were arrested Monday in Moselle, northeastern France.
They had been presented to an examining magistrate for their indictment.
The national anti-terrorist prosecutor’s office had requested their detention on remand.
(NAN)


Open Generic Constructor Injection
Tip
Before reading this you should read through the section on constructor injection
Also, generic types - especially in IOC-world - are an advanced concept that's easy to get very confused over, so if this is entirely new to you and you find you don't understand it fully, then don't worry: this isn't easy!
It's probably a good idea to read the MSDN documentation about the IsGenericType property on Type for more about 'open' generics.
In Rezolver, binding open generic types, such as IFoo<T>
or IBar<T, U, V>
, to constructors of generics, e.g. Foo<T>
or Bar<T, U, V>
is done via the GenericConstructorTarget type.
This class knows how to map to a closed generic - i.e.
Foo<IMyService>
or IBar<MyService1, MyService2, MyService3>
- from an open generic and then subsequently bind
to the constructor of the closed version of that generic when requested from the container.
'Best-match' vs 'specific'
Most of the time when you register an open generic type, you will simply rely on Rezolver to find the best-matched constructor when it created an instance of a closed generic from that registration.
The documentation presented here deals exclusively with this type of open generic registration, but - starting with v1.3.2 - it is now possible to instruct Rezolver to bind to a particular constructor on the generic type. Before you read that topic, however, you should read through this one first.
However, please note that you cannot provide named arguments to help either with the best-match search, or when specifying which constructor to invoke. To do so would be incredibly difficult, since if the type of a constructor argument is dependant upon a type argument, then there's no easy way you could supply a binding for it up-front to satisfy all possible types that might be passed to it.
Creating/registering GenericConstructorTargets
You can, of course, simply use the constructors to build a new instance of this target - e.g: new GenericConstructorTarget(typeof(Foo<>))
.
However, the non-generic versions of the RegisterType method that we've been using elsewhere to register 'simple' types in our target containers are also generic type-aware. So, if you specify an open generic type as the implementing type, then those functions automatically create a GenericConstructorTarget for you and register it.
So, container.RegisterType(typeof(MyGeneric<>))
will register MyGeneric<>
for all variants of itself, and
container.RegisterType(typeof(MyGeneric<>), typeof(IMyGeneric<>))
will register MyGeneric<>
for all variants of IMyGeneric<>
.
Lets get on with some examples, the first few of which use these types:
public interface IDataFormatter<TData>
{
string FormatData(TData data);
}
public class DataFormatter<TData> : IDataFormatter<TData>
{
public string FormatData(TData data)
{
return data.ToString();
}
}
Basic examples
Direct (no base/interface)
Similar to the examples for 'normal' constructor injection, we'll start by looking at registering without worrying about bases or interfaces,
registering DataFormatter<>
and fetching a few different closed variants of that generic:
var container = new Container();
container.RegisterType(typeof(DataFormatter<>));
Assert.NotNull(container.Resolve<DataFormatter<int>>());
Assert.NotNull(container.Resolve<DataFormatter<string>>());
Assert.NotNull(container.Resolve<DataFormatter<IMyService>>());
By Interface
And again, except this time we'll register and resolve against the IDataFormatter<>
interface:
// Same as above, just requesting via interface
var container = new Container();
container.RegisterType(typeof(DataFormatter<>), typeof(IDataFormatter<>));
Assert.NotNull(container.Resolve<IDataFormatter<int>>());
Assert.NotNull(container.Resolve<IDataFormatter<string>>());
Assert.NotNull(container.Resolve<IDataFormatter<IMyService>>());
Generic Dependency
This time, we have a generic type that has a dependency on another generic type whose generic argument is derived from the dependant's generic argument:
public class RequiresIDataFormatter<T>
{
public IDataFormatter<T> Formatter { get; }
public RequiresIDataFormatter(IDataFormatter<T> formatter)
{
Formatter = formatter;
}
}
var container = new Container();
container.RegisterType(typeof(RequiresIDataFormatter<>));
container.RegisterType(typeof(DataFormatter<>), typeof(IDataFormatter<>));
Assert.NotNull(container.Resolve<RequiresIDataFormatter<int>>().Formatter);
Assert.NotNull(container.Resolve<RequiresIDataFormatter<string>>().Formatter);
Assert.NotNull(container.Resolve<RequiresIDataFormatter<IMyService>>().Formatter);
Advanced - Complex Hierarchies
The previous examples showed how we can resolve an instance when the type requested is simply a closed version of the open generic against which we registered a target; or when it's a direct base or interface of it.
Naturally, real-world type hierarchies do not always work like that - and sometimes you'll want to implement a type where the implementation is perhaps more 'distant', in inheritance terms, from the base or interface. With generics, this can get particularly complicated as the type parameters do not always remain consistent - consider the following hierarchy:
//these types are just used as easy-to-read type arguments
public class T1 { }
public class T2 { }
public class T3 { }
public class BaseGeneric<T, U, V> { }
public class MidGeneric<T, U, V> : BaseGeneric<V, U, T> { }
public class FinalGeneric<T, U, V> : MidGeneric<U, T, V> { }
// This type 'closes' over one type parameter
public class ClosingGeneric<T, U> : FinalGeneric<T, U, string> { }
Notice how on the three first generic types, the order of the type arguments is changing as we move through BaseGeneric<,,>
, MidGeneric<,,>
and
FinalGeneric<,,>
.
The last generic actually fixes one of the type parameters passed to FinalGeneric<,,>
- which introduces a different problem for our container, which
we'll get to after looking at the others.
We apologise in advance for the complexity of this argument jumbling - but we accept no liability for any headaches you suffer!
Base of a Base with Jumbled Args
So, yes - this is a deeply contrived example, but it's worth seeing:
var container = new Container();
container.RegisterType(typeof(FinalGeneric<,,>), typeof(BaseGeneric<,,>));
// Type arguments should be transformed as follows:
// - BaseGeneric<T1, T2, T3> is a base of
// - MidGeneric<T3, T2, T1>, which is a base of
// - FinalGeneric<T2, T3, T1>
// Which is what the container should give us
var result = Assert.IsType<FinalGeneric<T2, T3, T1>>(
container.Resolve<BaseGeneric<T1, T2, T3>>()
);
In order to do this, the container must walk the inheritance chain of the DeclaredType of the GenericConstructorTarget
to create a map of the type arguments which must be fed to FinalGeneric<,,>
in order to create an instance of BaseGeneric<,,>
.
Partially Closed Generic
Note
The term 'Partially Closed' is a term only used here - it merely describes a generic type where some of the type arguments supplied to a generic type's parameters are concrete types.
Now we take a look at the ClosingGeneric<T, U>
type - it's here we start getting into one of the murkier areas of generic types in
Rezolver and, indeed, in general.
In this case, we now have a type which can only ever be used
to implement a subset of all the possible variants of BaseGeneric<T, U, V>
, because, whatever its own T
and U
arguments are, its base will
always be BaseGeneric<string, T, U>
.
Rezolver is happy to work with this, as the next test shows:
var container = new Container();
container.RegisterType(typeof(ClosingGeneric<,>), typeof(BaseGeneric<,,>));
var result = Assert.IsType<ClosingGeneric<T2, T3>>(
container.Resolve<BaseGeneric<string, T2, T3>>()
);
Note
If we were to try to resolve BaseGeneric<T1, T2, T3>
as we did before, then the container will correctly tell us that it cannot - and
that the registered target is not compatible with that type. Which leads us on to our problem...
The problem with partially closed generics
With our container configured as above, it is now impossible to resolve BaseGeneric<T1, T2, T3>
because the only implementation we have for
BaseGeneric<,,>
is one where the first type argument must be string
. If we were to register another, more general, type for
BaseGeneric<,,>
it would overwrite our specialised version, wiping it out.
It's also impossible for us to specify the type BaseGeneric<string,,>
either in a typeof
, or via the MakeGenericType API, so we're
stuck.
We're working on it!
This is a limitation of Rezolver right now, but there are plans to implement partially specialised registrations, so that the container would, when
ClosingGeneric<T, U>
is registered, realise that it should only be used if the first type parameter on BaseGeneric<,,>
is string
.
This would then allow the container to accept a more general registration against BaseGeneric<,,>
to be registered side-by-side and used for
all other variants of BaseGeneric<,,>
.
Implementation of this feature would also simplify the scenarios covered in the next section.
Advanced - Nested Generics
Rezolver also supports generics where type arguments are passed to an interface or base nested within other generics - take these types:
public interface IGenericService<T>
{
}
public class GenericEnumerableService<T>
: IGenericService<IEnumerable<T>>
{
}
public class GenericEnumerableNullableService<T>
: IGenericService<IEnumerable<Nullable<T>>>
where T : struct
{
}
Singly Nested Generic Argument
var container = new Container();
container.RegisterType(
typeof(GenericEnumerableService<>),
typeof(IGenericService<>).MakeGenericType(typeof(IEnumerable<>))
);
var result = Assert.IsType<GenericEnumerableService<string>>(
container.Resolve<IGenericService<IEnumerable<string>>>()
);
Note
As with our ClosingGeneric<,>
from before, we could perform
this registration against IGenericService<>
, but if we do, then we wipe out
the possibility of being able to register other services - so, we
register against IGenericService<IEnumerable<>>
, which requires some
MakeGenericType jiggery pokery. When we've got partially closed generics
working, you will be able to register against IGenericService<>
.
Doubly Nested Generic Argument
Rezolver doesn't care how far it has to go to work out how a type argument on a base is nested from the implementing type:
var container = new Container();
// Even more .MakeGenericType jiggery pokery required here
container.RegisterType(
typeof(GenericEnumerableNullableService<>),
typeof(IGenericService<>).MakeGenericType(
typeof(IEnumerable<>).MakeGenericType(
typeof(Nullable<>)
)
)
);
var result = Assert.IsType<GenericEnumerableNullableService<int>>(
container.Resolve<IGenericService<IEnumerable<Nullable<int>>>>()
);
Member Injection with Generics
The same techniques that are shown in our member injection documentation also work for generic types - if you supply an IMemberBindingBehaviour to the GenericConstructorTarget when it is created (either by the constructors or the aforementioned factory methods), then that behaviour will be used when the constructor is bound.
Equally, container-specific IMemberBindingBehaviours that are set through the options API will also be used automatically.
That said, there is no way, at this time, to generate a custom member binding behaviour using the APIs built into the library. So, you can't explicitly target a member declared on the open generic type and then have that member bound automatically when instance of a closed generic version of that type is constructed.
Refer to the topic for detailed examples on how to use member binding.
Next Steps
- The member injection documentation might be of interest if you've not already read it.
Note
A separate topic will be added in the future regarding Generic Specialisation in the container, but that covers all target types, not just the GenericConstructorTarget - so that will go elsewhere.
Feel free to explore the table of contents or head back to the main service registration overview to explore more features of Rezolver.


Instructions
×- Welcome to Escape Mars!
- You are about to embark on an adventure, of luck and danger!
- This is a Text based adventure. You will receive 3 prompts per round, choose the response that seems best to you, and find out your fate!
- Though you have many decisions, you must choose quickly, time is of the essence! Your high score will be decided by how quickly you play.
- Have fun. Good luck!


I'm a San Francisco based web developer with experience in Ruby, Javascript, React/Flux, HTML/CSS, jQuery, RESTful APIs and MVC architecture. I enjoy the problem solving and creativity that are inherent to programming, and I’m eager to further hone my skills.
When I’m not found coding, I enjoy hiking, skiing, traveling to new places, finding new music, and discussing where we are going and what we are with friends.


Connector Configuration
| Config Option
| Value
|
{% for option in options.keys() %}
| {{option}} |
{{options[option]}} |
{% endfor %}
Feed Information
| Feed Param Name
| Feed Param Value
|
{% for feedparamname in feed['feedinfo'].keys() %}
| {{feedparamname}} |
{{feed['feedinfo'][feedparamname]}} |
{% endfor %}
| last_sync |
{{last_sync}} |
Feed Contents
| Format
| Description
|
| JSON |
Designed for programmatic consumption; used by VMware Carbon Black EDR Server |
| HTML |
Designed for human consumption; used to explore feed contents and for troubleshooting |
|


Mercenary Captain Pierce:
What's the hold up?
We lost contact with the scout inside the Swamp of Screams. Follow the path and you can't miss it. I marked it on the map so you shouldn't get lost. Remember, countless lives are at stake here! We need to find that scout!


These introductory scenarios show an individual user adding various basic items to a spreadsheet. Adding items is an essential operation for setting up a spreadsheet for a class. In these scenarios, we assume that the user has just been registered in the grading system and so has a brand new spreadsheet with no entries. The scenarios will cover the user creating a new class spreadsheet, adding a single student to the class without importing a roster, adding new categories of grades, and finally adding individual assignments within those categories.
The scenarios in this section show a user adding a variety of items to the Grader Tool spreadsheet, including


Your GO TO 1st source
for the most recent News,
but from the Hood prospective
Latest Stream
Most Viewed
Meet the Channel!
The Host
With Just under 7k Subscribers and counting on Youtube, "The Hood
Conservative" is the most upfront and honest Media Outlet speaking
from the heart of every Hood in America. Explore my Channel and
see why I'm one of the fastest growing Young Stars on Youtube.
Co-Host
Slide 2
Our Mission
Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum impedit nam animi inventore atque quisquam optio, neque voluptatibus culpa sequi minima recusandae laborum eos deleniti, possimus totam, quo voluptas beatae.


See how users experience your designs with FullStory.
Become a demo sponsor
If you enjoyed this demo you might also like:


| Field | Type | Label | Description |
| balance | int64 |
|
| Field | Type | Label | Description |
| outpoints | TxOutpoint | repeated |
|
| Field | Type | Label | Description |
| market | Market |
|
|
| outpoints | TxOutpoint | repeated |
|
| Field | Type | Label | Description |
| market | Market | Market to be made NOT tradable |
| Field | Type | Label | Description |
| address_with_blinding_key | AddressWithBlindingKey | repeated | AddressInfo contains address and blinding key |
| Field | Type | Label | Description |
| num_of_addresses | int64 | Number of addresses to be derived for Fee Account. |
| Field | Type | Label | Description |
| addresses | string | repeated |
|
| Field | Type | Label | Description |
| market | Market | Market to get an address from. Could be empty. |
|
| num_of_addresses | int64 | Number of addresses to be derived for market. |
| Field | Type | Label | Description |
| account_index | uint64 |
|
| Field | Type | Label | Description |
| trade_id | string |
|
|
| basis_point | int64 |
|
|
| asset | string |
|
|
| amount | uint64 |
|
|
| market_price | float |
|
| Field | Type | Label | Description |
| address | string | repeated |
|
| Field | Type | Label | Description |
| market | Market | Market to get an address from. Could be empty. |
| Field | Type | Label | Description |
| markets | MarketInfo | repeated |
|
| Field | Type | Label | Description |
| trades | TradeInfo | repeated |
|
| Field | Type | Label | Description |
| info_per_account | ListUtxosReply.InfoPerAccountEntry | repeated |
|
| Field | Type | Label | Description |
| key | uint64 |
|
|
| value | UtxoInfoList |
|
| Field | Type | Label | Description |
| market | Market |
|
|
| fee | Fee |
|
|
| tradable | bool |
|
|
| strategy_type | StrategyType |
|
|
| account_index | uint64 |
|
|
| price | Price |
|
| Field | Type | Label | Description |
| market | Market | Market to be made tradable |
| Field | Type | Label | Description |
| collected_fees | FeeInfo | repeated | List of the all unique fee being collected on each swap. |
| total_collected_fees_per_asset | ReportMarketFeeReply.TotalCollectedFeesPerAssetEntry | repeated | Map of aggreagated fee count grouped by asset. There should be one unique entry for each asset and the amount should be the aggregated total. |
| Field | Type | Label | Description |
| key | string |
|
|
| value | int64 |
|
| Field | Type | Label | Description |
| market | Market | Market to be updated |
| Field | Type | Label | Description |
| failure_code | uint32 |
|
|
| failure_message | string |
|
| Field | Type | Label | Description |
| amount_p | uint64 | The proposer's quantity |
|
| asset_p | string | The proposer's asset hash |
|
| amount_r | uint64 | The responder's quantity |
|
| asset_r | string | The responder's asset hash |
| Field | Type | Label | Description |
| trade_id | string | The id of the trade |
|
| status | TradeStatusInfo | The info about the status of the trade |
|
| swap_info | SwapInfo | The info about the swap |
|
| fail_info | SwapFailInfo | The info of an eventually failed swap |
|
| market_with_fee | MarketWithFee | The collected fee on the current swap |
|
| price | TradePrice | The prices of the trade at request time |
|
| tx_url | string | The eventual tx url with blinders in case the trade is settled |
|
| request_time_unix | uint64 | SwapRequest unix timestamp |
|
| accept_time_unix | uint64 | SwapAccpet unix timestamp |
|
| complete_time_unix | uint64 | SwapComplete unix timestamp |
|
| settle_time_unix | uint64 | Settlement unix timestamp |
|
| expiry_time_unix | uint64 | Expiration unix timestamp |
|
| request_time_utc | string | SwapRequest UTC timestamp |
|
| accept_time_utc | string | SwapAccept UTC timestamp |
|
| complete_time_utc | string | SwapComplete UTC timestamp |
|
| settle_time_utc | string | Settlement UTC timestamp |
|
| expiry_time_utc | string | Expiration UTC timestamp |
| Field | Type | Label | Description |
| base_price | double |
|
|
| quote_price | double |
|
| Field | Type | Label | Description |
| status | TradeStatus |
|
|
| failed | bool |
|
| Field | Type | Label | Description |
| hash | string |
|
|
| index | int32 |
|
| Field | Type | Label | Description |
| market_with_fee | MarketWithFee |
|
| Field | Type | Label | Description |
| market_with_fee | MarketWithFee |
|
| Field | Type | Label | Description |
| market | Market | Market to update the price of |
|
| price | Price | Price to be updated |
| Field | Type | Label | Description |
| market | Market | Market to change the strategy of |
|
| strategy_type | StrategyType | Market making strategy to use |
|
| metadata | string | JSON string representing additional metadata relative to the chosen strategy. |
| Field | Type | Label | Description |
| outpoint | TxOutpoint |
|
|
| value | uint64 |
|
|
| asset | string |
|
| Field | Type | Label | Description |
| unspents | UtxoInfo | repeated |
|
| spents | UtxoInfo | repeated |
|
| locks | UtxoInfo | repeated |
|
| Field | Type | Label | Description |
| raw_tx | bytes | The serialized transaction |
| Field | Type | Label | Description |
| market | Market | Market from which funds need to be withdrawn |
|
| balance_to_withdraw | Balance | Amount for base and quote asset to be withdrawn |
|
| millisat_per_byte | int64 | The number of millisatoshis per byte that should be used when crafting this transaction. |
|
| address | string | The address to send to the funds |
|
| push | bool | Optional: if true the transaction will be pushed to the network |
Custom types
| Name | Number | Description |
| PLUGGABLE | 0 | |
| BALANCED | 1 | |
| UNBALANCED | 2 |
| Name | Number | Description |
| UNDEFINED | 0 | |
| REQUEST | 1 | |
| ACCEPT | 2 | |
| COMPLETE | 3 | |
| SETTLED | 4 | |
| EXPIRED | 5 |
Service for operators to configure and manage a TDEX daemon
| Method Name | Request Type | Response Type | Description |
| DepositMarket | .DepositMarketRequest | .DepositMarketReply | Returns a new derived address for the given market. If market field is empty, a new Market is created and MUST be initialized. |
| ListDepositMarket | .ListDepositMarketRequest | .ListDepositMarketReply | Returns the list of previously generated addresses for the given market. |
| DepositFeeAccount | .DepositFeeAccountRequest | .DepositFeeAccountReply | Returns a new derived address from the fee account. This is only used to deposit some LBTC to subsidize blockchain fees. |
| BalanceFeeAccount | .BalanceFeeAccountRequest | .BalanceFeeAccountReply | Returns the aggregated balance of LBTC held in the fee account. |
| ClaimMarketDeposit | .ClaimMarketDepositRequest | .ClaimMarketDepositReply | Operator can provide transaction(s) outpoints of deposits made to fund a new market. The transaction must be visible and confirmed, otherwise an error will be returned, inviting the operator to retry again |
| ClaimFeeDeposit | .ClaimFeeDepositRequest | .ClaimFeeDepositReply | Operator can provide transaction(s) outpoints of deposits made to fund the fee account. The transaction must be visible and confirmed, otherwise an error will be returned, inviting the operator to retry again |
| OpenMarket | .OpenMarketRequest | .OpenMarketReply | Makes the given market tradable |
| CloseMarket | .CloseMarketRequest | .CloseMarketReply | Makes the given market NOT tradabale |
| ListMarket | .ListMarketRequest | .ListMarketReply | Get extended details for each markets either open, closed or to be funded. |
| UpdateMarketFee | .UpdateMarketFeeRequest | .UpdateMarketFeeReply | Changes the Liquidity Provider fee for the given market. I thsould be express in basis point. To change the fee on each swap from (current) 0.25% to 1% you need to pass down 100 The Market MUST be closed before doing this change. |
| UpdateMarketPrice | .UpdateMarketPriceRequest | .UpdateMarketPriceReply | Manually updates the price for the given market |
| UpdateMarketStrategy | .UpdateMarketStrategyRequest | .UpdateMarketStrategyReply | Updates the current market making strategy, either using an automated market making formula or a pluggable price feed |
| WithdrawMarket | .WithdrawMarketRequest | .WithdrawMarketReply | WithdrawMarket allows the operator to withdraw to external wallet funds from a specific market. The Market MUST be closed before doing this change. |
| ListTrades | .ListTradesRequest | .ListTradesReply | Returs all the trades processed by the daemon (during process, compelted and rejected) |
| ReportMarketFee | .ReportMarketFeeRequest | .ReportMarketFeeReply | Displays a report on how much the given market is collecting in Liquidity Provider fees |
| ReloadUtxos | .ReloadUtxosRequest | .ReloadUtxosReply | Triggers reloading of unspents for stored addresses from blockchain |
| ListUtxos | .ListUtxosRequest | .ListUtxosReply | Returns all the unspents and locks |
| DropMarket | .DropMarketRequest | .DropMarketReply | Deletes Market based on account_index |
| Field | Type | Label | Description |
| id | string | Random unique identifier for the current message |
|
| request_id | string | indetifier of the SwapRequest message |
|
| transaction | string | The partial signed transaction base64 encoded containing the Responder's signed inputs in a PSBT format |
|
| input_blinding_key | SwapAccept.InputBlindingKeyEntry | repeated | In case of a confidential transaction the blinding key of each confidential input is included. Each blinding key is identified by the prevout script hex encoded. |
| output_blinding_key | SwapAccept.OutputBlindingKeyEntry | repeated | In case of a confidential transaction the blinding key of each confidential output is included. Each blinding key is identified by the output script hex encoded. |
| Field | Type | Label | Description |
| key | string |
|
|
| value | bytes |
|
| Field | Type | Label | Description |
| key | string |
|
|
| value | bytes |
|
| Field | Type | Label | Description |
| id | string | Random unique identifier for the current message |
|
| accept_id | string | indetifier of the SwapAccept message |
|
| transaction | string | The signed transaction base64 encoded containing the Proposers's signed inputs in a PSBT format |
| Field | Type | Label | Description |
| id | string | Random unique identifier for the current message |
|
| message_id | string | indetifier of either SwapRequest or SwapAccept message. It can be empty |
|
| failure_code | uint32 | The failure code. It can be empty |
|
| failure_message | string | The failure reason messaged |
| Field | Type | Label | Description |
| id | string | Random unique identifier for the current message |
|
| amount_p | uint64 | The proposer's quantity |
|
| asset_p | string | The proposer's asset hash |
|
| amount_r | uint64 | The responder's quantity |
|
| asset_r | string | The responder's asset hash |
|
| transaction | string | The proposer's unsigned transaction in PSBT format (base64 string) |
|
| input_blinding_key | SwapRequest.InputBlindingKeyEntry | repeated | In case of a confidential transaction the blinding key of each confidential input is included. Each blinding key is identified by the prevout script hex encoded. |
| output_blinding_key | SwapRequest.OutputBlindingKeyEntry | repeated | In case of a confidential transaction the blinding key of each confidential output is included. Each blinding key is identified by the output script hex encoded. |
| Field | Type | Label | Description |
| key | string |
|
|
| value | bytes |
|
| Field | Type | Label | Description |
| key | string |
|
|
| value | bytes |
|
| Field | Type | Label | Description |
| balances | BalanceWithFee | repeated |
|
| Field | Type | Label | Description |
| market | Market |
|
| Field | Type | Label | Description |
| prices | PriceWithFee | repeated |
|
| Field | Type | Label | Description |
| market | Market |
|
|
| type | TradeType |
|
|
| amount | uint64 |
|
|
| asset | string |
|
| Field | Type | Label | Description |
| markets | MarketWithFee | repeated |
|
BOTD#4 Service's messages
| Field | Type | Label | Description |
| txid | string |
|
|
| swap_fail | SwapFail |
|
| Field | Type | Label | Description |
| swap_complete | SwapComplete |
|
|
| swap_fail | SwapFail |
|
| Field | Type | Label | Description |
| swap_accept | SwapAccept |
|
|
| swap_fail | SwapFail |
|
|
| expiry_time_unix | uint64 |
|
| Field | Type | Label | Description |
| market | Market |
|
|
| type | TradeType |
|
|
| swap_request | SwapRequest |
|
| Name | Number | Description |
| BUY | 0 | |
| SELL | 1 |
| Method Name | Request Type | Response Type | Description |
| Markets | .MarketsRequest | .MarketsReply | Markets: List all the markets open for trading. |
| Balances | .BalancesRequest | .BalancesReply | Balances: Gets the balances of the two current reserves in the given market. |
| MarketPrice | .MarketPriceRequest | .MarketPriceReply | MarketPrice: Gets the current market price. In case of AMM startegy, the trade type and the amount of asset to be either sent or received. BUY = quote asset as input SELL = base asset as input If the type of the trade is BUY it means the base asset will be received by the trader. If the type of the trade is SELL it means the base asset will be sent by the trader. |
| TradePropose | .TradeProposeRequest | .TradeProposeReply stream | TradePropose: Sends a swap request message containing a partial signed transaction. BUY = quote asset as input SELL = base asset as input If the type of the trade is BUY it means the base asset will be received by the trader. If the type of the trade is SELL it means the base asset will be sent by the trader. |
| TradeComplete | .TradeCompleteRequest | .TradeCompleteReply stream | TradeComplete: Sends the trader's counter-signed transaction to the provider. If something wrong, a swap fail message is sent. It returns the transaction hash of the broadcasted transaction. |
| Field | Type | Label | Description |
| transport | TransportType | repeated |
|
| Field | Type | Label | Description |
| type | TransportType |
|
|
| name | string |
|
|
| data | bytes |
|
| Name | Number | Description |
| INSECURE | 0 | |
| ONION | 1 | |
| TLS | 2 | |
| MTLS | 3 | |
| NOISE | 4 |
| Field | Type | Label | Description |
| address | string | The confidential address encoded using a blech32 format. |
|
| blinding | string | The blinding private key for the given address encoded in hex format |
| Field | Type | Label | Description |
| base_amount | int64 |
|
|
| quote_amount | int64 |
|
| Field | Type | Label | Description |
| balance | Balance |
|
|
| fee | Fee |
|
Custom Types
| Field | Type | Label | Description |
| basis_point | int64 |
|
| Field | Type | Label | Description |
| base_asset | string |
|
|
| quote_asset | string |
|
| Field | Type | Label | Description |
| market | Market |
|
|
| fee | Fee |
|
| Field | Type | Label | Description |
| base_price | float |
|
|
| quote_price | float |
|
| Field | Type | Label | Description |
| price | Price |
|
|
| fee | Fee |
|
|
| amount | uint64 |
|
|
| asset | string |
|
| Field | Type | Label | Description |
| total_balance | uint64 | The balance of the wallet |
|
| confirmed_balance | uint64 | The confirmed balance of a wallet(with >= 1 confirmations) |
|
| unconfirmed_balance | uint64 | The unconfirmed balance of a wallet(with 0 confirmations) |
| Field | Type | Label | Description |
| current_password | bytes | current_password should be the current valid passphrase used to unlock the daemon. |
|
| new_password | bytes | new_password should be the new passphrase that will be needed to unlock the daemon. |
| Field | Type | Label | Description |
| seed_mnemonic | string | repeated |
|
| Field | Type | Label | Description |
| account | uint64 |
|
|
| index | uint64 |
|
|
| status | InitWalletReply.Status |
|
|
| data | string |
|
| Field | Type | Label | Description |
| wallet_password | bytes | wallet_password is the passphrase that should be used to encrypt the wallet. This MUST be at least 8 chars in length. After creation, this password is required to unlock the daemon. |
|
| seed_mnemonic | string | repeated | seed_mnemonic is a 24-word mnemonic that encodes a prior seed obtained by the user. This MUST be a generated by the GenSeed method |
| restore | bool | the flag to let the daemon restore existing funds for the wallet. |
| Field | Type | Label | Description |
| raw_tx | bytes | The serialized transaction sent out on the network. |
| Field | Type | Label | Description |
| outputs | TxOut | repeated | A slice of the outputs that should be created in the transaction produced. |
| millisat_per_byte | int64 | The number of millisatoshis per byte that should be used when crafting this transaction. |
|
| push | bool | Optional: if true the transaction will be pushed to the network |
| Field | Type | Label | Description |
| asset | string | The asset being spent |
|
| value | int64 | The value of the output being spent. |
|
| address | string | The confidential address of the output being spent. |
| Field | Type | Label | Description |
| wallet_password | bytes | wallet_password should be the current valid passphrase for the daemon. This will be required to decrypt on-disk material that the daemon requires to function properly. |
| Field | Type | Label | Description |
| address | string | The confidential address encoded using a blech32 format. |
|
| blinding | string | The blinding private key for the given address encoded in hex format |
| Field | Type | Label | Description |
| balance | WalletBalanceReply.BalanceEntry | repeated | The balance info (total, confirmed, unconfirmed) of the wallet grouped by asset |
| Field | Type | Label | Description |
| key | string |
|
|
| value | BalanceInfo |
|
| Name | Number | Description |
| PROCESSING | 0 | |
| DONE | 1 |
Service for Liquidity Providers to manage funds via wallet RPC
| Method Name | Request Type | Response Type | Description |
| GenSeed | .GenSeedRequest | .GenSeedReply | GenSeed is the first method that should be used to instantiate a new tdexd instance. This method allows a caller to generate a new HD Wallet. Once the seed is obtained and verified by the user, the InitWallet method should be used to commit the newly generated seed, and create the wallet. |
| InitWallet | .InitWalletRequest | .InitWalletReply stream | InitWallet is used when tdexd is starting up for the first time to fully initialize the daemon and its internal wallet. At the very least a mnemonic and a wallet password must be provided. This will be used to encrypt sensitive material on disk. Alternatively, this can be used along with the GenSeed RPC to obtain a seed, then present it to the user. Once it has been verified by the user, the seed can be fed into this RPC in order to commit the new wallet. |
| UnlockWallet | .UnlockWalletRequest | .UnlockWalletReply | UnlockWallet is used at startup of tdexd to provide a password to unlock the wallet database. |
| ChangePassword | .ChangePasswordRequest | .ChangePasswordReply | ChangePassword changes the password of the encrypted wallet. This will automatically unlock the wallet database if successful. |
| WalletAddress | .WalletAddressRequest | .WalletAddressReply | WalletAddress returns a Liquid confidential p2wpkh address (BLECH32) |
| WalletBalance | .WalletBalanceRequest | .WalletBalanceReply | WalletBalance returns total unspent outputs (confirmed and unconfirmed), all confirmed unspent outputs and all unconfirmed unspent outputs under control of the wallet. |
| SendToMany | .SendToManyRequest | .SendToManyReply | SendToMany sends funds to many outputs |
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
| double | double | double | float | float64 | double | float | Float | |
| float | float | float | float | float32 | float | float | Float | |
| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) |
| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) |
| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) |
| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum |
| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| bool | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | |
| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) |
| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) |


Welcome to the Liso 1.0 web server. If you see this page then congratulations! Your Liso web server is up and running now!
This Liso web server was implemented by: xxxxxxx<EMAIL_ADDRESS>>


|
MLIB
|
3D Rotation Calculator
#include <rotmat.h>
Public Member Functions | |
| RotMat () | |
| Build an identity rotation matrix. | |
| RotMat (double rx, double ry, double rz) | |
| Build rotation matrix in order Z, Y, X (yaw, pitch, roll) | |
| void | x_rotation (double angle) |
| Rotation by X (roll) axis. | |
| void | y_rotation (double angle) |
| Rotation by Y (pitch) axis. | |
| void | z_rotation (double angle) |
| Rotation by Z (yaw) axis. | |
| void | rotate (double &x, double &y, double &z) const |
| Rotate a 3D point. | |
| void | rotate (double *vec) const |
| Rotate a vector containing the x, y, z coordinates. | |


|
Harry "Pittsburg Phil" StraussStrauss is said to have killed around 500 people during his stint as a Murder Inc. employee.Strauss was a consumate professional as is evidenced by a hit he described that took place in Florida. He tailed his target for days until the victim entered a movie theater. On the way in, Strauss found a fire axe on a wall in the lobby. He grabbed the axe, walked calmly into the theater, and slammed it into the man's skull. As the theater erupted into a screaming mass of terrified patrons, Strauss screamed and ran out with the crowd acting like just another frightened movie goer. Fried in the electric chair. |


Path-defined entitys: Oval, Rectangle, Line, Quadratic, Bezier, Tetragon, Polygon, Star, Spiral, Cog
Test purpose
- Create a set of defined Shape entitys
- Clone and amend them
- Position them on the canvas
- Animate entitys along their paths
Touch test: not required
Annotated code


A Completely Useless Command in Stata
While I was running a bit more than 5000 regressions in Stata, a friend of mine asked me what I usually do after running and exporting my regressions; well, I had the brilliant and useless idea of creating a command in Stata that mimics the face I make every time my code fails to run. By typing pikachu
you will get the following:
This uses only the display
command to make pikachu’s face. In order to install it: you can run the following command:
"https://raw.githubusercontent.com/rrmaximiliano/pikachu/main") replace net install pikachu, from(
And that’s it. Now, you have pikachu reacting to your failures. Finally, in case you don’t know, the original meme is this one:


Directory D3D12¶
↰ Parent directory (Source\Azura\RenderSystem\Src
)
Directory path: Source\Azura\RenderSystem\Src\D3D12
Files¶
- File D3D12ComputePool.cpp
- File D3D12Core.cpp
- File D3D12Debug.cpp
- File D3D12Drawable.cpp
- File D3D12DrawablePool.cpp
- File D3D12Renderer.cpp
- File D3D12RenderSystem.cpp
- File D3D12ScopedBuffer.cpp
- File D3D12ScopedCommandBuffer.cpp
- File D3D12ScopedComputePass.cpp
- File D3D12ScopedImage.cpp
- File D3D12ScopedPipeline.cpp
- File D3D12ScopedRenderPass.cpp
- File D3D12ScopedSampler.cpp
- File D3D12ScopedShader.cpp
- File D3D12ScopedSwapChain.cpp
- File D3D12TextureManager.cpp
- File D3D12TypeMapping.cpp


--- layout: post permalink: omnistaretools.html Tags: Array NameOfCoupon: Omnistar etools Cash Back Summary: See our Omnistar etools Coupon Code, Omnistar etools Rebate, Omnistar etools Promo Code, Omnistar etools Discount, Omnistar etools Coupon Cash Back Rebate here. MetaKeywords: Omnistar etools Coupon Code, Omnistar etools Rebate, Omnistar etools Promo Code, Omnistar etools Cash Back Rebate, Omnistar etools Discount, Omnistar etools Coupon Image: images/11385.jpg LinkURL: http://www.shareasale.com/r.cfm?b=69487&u=412002&m=11385 affiliate_url_link: http://www.icouponblog.com/jane.php?id=266 thesis_readmore: See the Omnistar etools Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=omnistaretools.com Title: Save 10% - Omnistar etools Coupon Code for omnistaretools.com. Omnistar etools Rebate & Discount thesis_description: Our Omnistar etools Discount Coupon Code for omnistaretools.com. We have the best Omnistar etools Rebate anywhere. thesis_keywords: Omnistar etools, Omnistar etools Coupon Code, Omnistar etools Discount, Omnistar etools Rebate product_name: Omnistar etools hop_url: http://www.icouponblog.com/hop.php?id=266 ---
Are you looking to optimize your business? Omnistar etools will help you find your strengths and weaknesses to better manage your company. They’ll provide you with tools to sell your products online and improve your conversions. Omnistar Interactive’s clientele consists of 11,000 companies, several of which are Fortune 500 companies, universities and government agencies. Omnistar etools provide quality services and superior software solutions that are easy to use and highly effective.
Omnistar etools can help you boost your sales with their Omnistar Mailer email marketing program. Good customer service is a necessity in keeping and maintaining your list of customers intact and happy. Omnistar etools’ Omnistar Live and Omnistar Drive will also allow you to improve your email management and customer support while keeping your email files secure. With many helpful and essential programs to choose from, Omnistar etools will quickly become your go-to place for all business optimization tools.
So don’t hesitate. Allow your business to grow and reach its full potential. Take advantage of Omnistar etools and the Omnistar etools Coupon above.  Give your business the kick it needs to thrive. So access your Omnistar etools Rebate. You’ll be glad you did.


{{- define "main" -}}
{{- $page := $.Page -}}
{{- $meeting := $page.Params -}}
{{- $title := print "DataONE Community Meeting " $meeting.year -}}
{{- $breadcrumbsBlock := dict "back_text" "Back to community page" "back_link" "/community/" -}}
{{- partial "blocks/breadcrumbs/breadcrumbs" (dict "Block" $breadcrumbsBlock "Page" $page ) -}}
{{- $buttonBlock := dict -}}
{{- $buttonBlock2 := dict -}}
{{- $intro := $meeting.overview -}}
{{- if eq $meeting.status "upcoming" -}}
{{- $buttonText := $meeting.registration_text | default "Register now" -}}
{{- with $meeting.registration_link -}}
{{- $buttonBlock = dict "template" "button" "text" $buttonText "type" "external website" "external_link" . "color" "primary" -}}
{{- end -}}
{{- with $meeting.agenda -}}
{{- $buttonBlock2 = dict "template" "button" "text" "View the schedule" "type" "internal page" "external_link" "#agenda" "color" "secondary" -}}
{{- end -}}
{{- else -}}
{{- $message := "" -}}
{{- if eq $meeting.status "registration closed" -}}
{{- $message = $meeting.registration_closed_message | default "Registration is now closed" -}}
{{- else if eq $meeting.status "meeting over" -}}
{{- $message = $meeting.meeting_over_message | default "This meeting has already happened. Browse notes and videos from the meeting below." -}}
{{- end -}}
{{- $messageFormatted := partial "blocks/markdown/markdown" (dict "Block" ( dict "content" (printf "**%s**" $message) "style" "info" ) "Page" $page ) -}}
{{- $intro = print $intro "
" $messageFormatted -}}
{{- end -}}
{{- $image := dict -}}
{{- $headerType := "text-only" -}}
{{- with $meeting.image -}}
{{- $image = dict "template" "image" "src" . -}}
{{- $headerType = "center image" -}}
{{- end -}}
{{- $pillBlock := "" -}}
{{- if and (eq $meeting.status "upcoming") ($meeting.registration_link) -}}
{{- $pillBlock = dict "template" "pill" "text" "Registration open" "style" "quaternary" -}}
{{- end -}}
{{- $headerBlock := dict "template" "header" "background_color" "half-light-half-transparent" "type" $headerType "title" $title "intro" $intro "buttons" (slice $buttonBlock $buttonBlock2) "image" $image "pill" $pillBlock -}}
{{- partial "blocks/header/header" (dict "Block" $headerBlock "Page" $page) -}}
{{- $eventSummaryBlock := dict "template" "event-details" "date_start" $meeting.date_start "date_end" $meeting.date_end "location" $meeting.location -}}
{{- $eventDetailsBlock := dict "template" "markdown" "content" $meeting.location.details -}}
{{- $colsBlock := dict "template" "columns" "num_cols" "2" "columns" (slice $eventSummaryBlock $eventDetailsBlock) -}}
{{- $logBlock := (dict "template" "markdown" "content" $meeting.logistics) -}}
{{- $sectionBlock := dict "template" "section" "type" "card" "title" "Logistics" "background" "subtle-emphasis" "blocks" (slice $colsBlock $logBlock) -}}
{{- partial "blocks/section/section" (dict "Block" $sectionBlock "Page" $page) -}}
{{- with $meeting.agenda -}}
{{- $agendaBlock := merge (dict "template" "agenda" "timezone" $meeting.timezone) (dict "agenda" . ) -}}
{{- $sectionBlock := dict "template" "section" "background" "data-wave-subtle" "id" "agenda" "type" "card" "small_title" "Agenda" "icon" "calendar" "blocks" (slice $agendaBlock) -}}
{{- partial "blocks/section/section" (dict "Block" $sectionBlock "Page" $page) -}}
{{- end -}}
{{- end -}}


Are you an anime fan? Or perhaps you're just getting into the world of anime and would like to know what all the hype is about. This bot was designed for you to get your anime question's answered without going through the hassle of Google searching. Why don't you give it a try? Look below to see the kinds of questions it can answer!
Hey there!
Hello~
Great job!
Thanks!
Search Attack on Titan
Search Tokyo Ghoul
Search Search Art Online
What is anime?
What is manga?
What does seinen mean?
What does shonen mean?
How is manga different than graphic novels?
What are the top anime?
Show me the top anime!


Also known as ordinary life insurance, Whole Life is a permanent life insurance policy that covers an individual until his or her death while accumulating a cash value within the policy.
Term Life insurance is a temporary life insurance policy that covers an individual for a specific number of years (generally 10, 20 or 30 years) and then coverage ends.
Also known as adjustable life insurance, Universal Life is a life insurance policy that offers the low cost features of Term Life insurance with the cash value concept of Whole Life insurance. Universal Life insurance may also offer more flexible premium options than Ordinary or Whole Life insurance.
__________
__________
__________
Will your children elect to apply at an accredited public school, private or technical institute? What will it cost when they get there? Learn how you can start planning for the rising cost of tuition and compare the options of saving now, waiting to pay out of pocket and/or taking out loans.
You have worked hard your whole life towards the moment you get to retire. Learn about ways to make sure you are ready to retire at the lifestyle you want without outliving your money.
How will you continue making decisions after you pass or become incapacitated? Who will manage your hard earned assets? What family legacy will you continue or create for future generations to build upon?


pandoc-zotxt.lua
pandoc-zotxt.lua looks up the bibliographic data of citations in
Zotero and adds them either to the references
metadata field or to a bibliography file, where Pandoc can pick it up.
See the manual for details.
Requirements
pandoc-zotxt.lua requires
- Pandoc ≥ v2.0.4,
- Zotero ≥ v4,
- zotxt ≥ v4, and
- Better BibTeX for Zotero ≥ v4.
It should work under every operating system supported by Pandoc; but it has not been tested under Windows.
Your version of Pandoc must also support Lua ≥ v5.3. Pandoc ≥ v2 does so by default. However, the Pandoc package provided by your operating system vendor may use an older version. Notably, the version of Pandoc available in the package repository of Debian v10 (“Buster”) only supports Lua v5.1.
Installation
You use pandoc-zotxt.lua at your own risk.
- Download the latest release.
- Unpack it.
- Move the
pandoc-zotxt.lua-1.2.0
directory into thefilters
sub-directory of your Pandoc data directory (pandoc --version
tells you where that is). - Symlink or move the file
pandoc-zotxt.lua
from thepandoc-zotxt.lua-1.2.0
directory up to thefilters
directory.
If you are running a POSIX-compliant operating system (e.g., *BSD, Linux, or macOS) and have curl or wget, then you can install pandoc-zotxt.lua by copy-pasting the following commands into a Bourne-compatible shell:
( set -eu : "${HOME:?}" "${XDG_DATA_HOME:="$HOME/.local/share"}" name=pandoc-zotxt.lua vers=1.2.0 url="https://github.com/odkr/$name/releases/download/v$vers/$name-$vers.tgz" for data_dir in "$HOME/.pandoc" "$XDG_DATA_HOME/pandoc"; do [ -d "$data_dir" ] && break done filters_dir="$data_dir/filters" mkdir -p "$filters_dir" && cd -P "$filters_dir" || exit 69 { curl --silent --show-error --location "$url" || err=$? [ "${err-0}" -eq 127 ] && wget --output-document=- "$url" } | tar -xz && ln -fs "$name" "$name-$vers/$name" .; )
If you want to use the manual page that ships with this release, add
<Pandoc data directory>/filters/pandoc-zotxt.lua-1.2.0/man
to your MANPATH
.
Documentation
See the manual, the source code documentation, and the source code itself for details.
Contact
If there’s something wrong with pandoc-zotxt.lua, please open an issue.
Testing
Requirements
The test suite has been tested with Pandoc v2.9 to v<IP_ADDRESS>.
Running the tests
Simply say:
make
Note, some tests report errors even if they succeed. Not every error message
indicates that pandoc-zotxt.lua failed a test. If it does fail a test,
make
will exit with a non-zero status.
The real-world test suite
By default, the test suite neither connects to the Zotero desktop client nor to the Zotero Web API, but but uses canned responses. You can force the test suite to connect to the Zotero desktop client and the Web API respectively by:
make test -e FILTER=./pandoc-zotxt.lua
Note, you will have to adapt the test suite to your database (or vice versa;
you can import the references used in the test suite from tests/items.rdf
).
You will also need to adapt the Zotero item IDs used in test cases to your
Zotero library.
License
Copyright 2018–2022 Odin Kroeger
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


--- layout: post title: last summer romp date: 2011-09-02 23:41:48.000000000 -04:00 type: post published: true status: publish categories: - college - style tags: - romper - school meta: _edit_last: '1' _oembed_3c43f84e1da5a19e3ec6a6861f9a096b: author: login: sophie email<EMAIL_ADDRESS>display_name: Pika first_name: '' last_name: '' ---
Today is officially the last day of summer.
Well, not officially by the calendar, but seeing that I will be hauling myself and three tote bags stuffed with shoes and boxes of other essentials back to the City tomorrow, yep, it's the last day of summer. Wanting but not wanting to go back to school (unlike last year, where everything was new and fresh and exciting, this year, there's more expectations, both good and bad), I decided to give a little tribute to summer with the brightest, summery-est outfit I could think of.
See you in the Big Apple!


Submit your Name here!
We'll get more information on the following pages..
First name >
Last name: >
Click "Submit" to continue..
A nested List:
Google
Coffee & Tea
Tea
Black tea
Green tea
China
Africa
Milk


---
layout: ion
title: Founding Committee 2014-2015
permalink: /about/committee1415/
---
Founding Committee
| President |
Tommy Lai (MBChB 2017) |
| Vice President (External) |
Leone Chan (MBChB 2017) |
| Vice President (Internal) |
Wesley Ho (MBBS 2017) |
| External Directors |
Katherine Leung (MBBS 2019) |
|
Anna Wong (MBChB 2018) |
| Internal Directors |
Timothy To (MBBS 2018) |
|
Grace Howe (MBChB 2019) |
| General Secretaries |
Max Lee (MBBS 2019) |
|
Ada Cheung (MBChB 2019) |
| Finance and Sponsorship Directors |
Jessica Yu (MBBS 2019) |
|
Matthew Ho (MBChB 2017) |
| Marketing Directors |
Stephanie Chau (MBBS 2019) |
|
Jacob Cheng (MBChB 2019) |
| Public Relations Director |
Paul Lee (MBChB 2019) |
| Communication Officer |
Chloe Lau (MBChB 2019) |
| Events Directors |
Joyce Leung (MBBS 2019) |
|
Winnie Lee (MBChB 2019) |
| Operation Directors |
Daniel Kwok (MBBS 2018) |
|
Prilla Tsang (MBChB 2018) |
| Design Directors |
Alex Lun (MBBS 2019) |
|
Amelia Chao (MBChB 2017) |
| IT Director |
Matthew Kwan (MBChB 2019) |
| Student Consultant |
Nora Lai (MBChB 2017) |