Добавлен новый вариант работы с построением авторизационного Security-фильтра работающего целиком на SQL, без выгрузки Permission-ов и Guid-ов контекстных объектов из него.
По умолчанию включён в SampleSystem, для его работы требуется, чтобы все иерархические контекстные сущности (FBU, MBU, Location) были денормализованны в бд.
Включается перегрузкой метода в SampleSystemBllContextContainer :
public override ISecurityExpressionBuilderFactory<TPersistentDomainObjectBase, TIdent> GetSecurityExpressionBuilderFactory<TBLLContext, TPersistentDomainObjectBase, TIdent>(TBLLContext context)
{
// Используется для HasAccess-проверок на объекте
var materialized = new Framework.SecuritySystem.Rules.Builders.MaterializedPermissions.SecurityExpressionBuilderFactory<TPersistentDomainObjectBase, TIdent>(context.HierarchicalObjectExpanderFactory, context.Authorization);
// Используетяс для построения sql-фильтра
var queryable = new Framework.SecuritySystem.Rules.Builders.QueryablePermissions.SecurityExpressionBuilderFactory<TPersistentDomainObjectBase, TIdent>(context.HierarchicalObjectExpanderFactory, context.Authorization);
return new Framework.SecuritySystem.Rules.Builders.Mixed.SecurityExpressionBuilderFactory<TPersistentDomainObjectBase, TIdent>(materialized, queryable);
}
Пример работы с принципалом, у которого 81 пермиссия, по 4 контекста: тест CreateObjectsWithPermissions_HasAccessToAllObjects
Старый sql c инъекцией гуидов:
exec sp_executesql N'select testperfor0_.id as id1_97_, testperfor0_.Version as version2_97_, testperfor0_.active as active3_97_, testperfor0_.createDate as createdate4_97_, testperfor0_.createdBy as createdby5_97_, testperfor0_.modifiedBy as modifiedby6_97_, testperfor0_.modifyDate as modifydate7_97_, testperfor0_.name as name8_97_, testperfor0_.businessUnitId as businessunitid9_97_, testperfor0_.employeeId as employeeid10_97_, testperfor0_.locationId as locationid11_97_, testperfor0_.managementUnitId as managementunitid12_97_ from app.TestPerformanceObject testperfor0_ where (testperfor0_.locationId in (select locationan1_.childId from app.LocationAncestorLink locationan1_ where locationan1_.ancestorId in (@p0))) and (testperfor0_.employeeId in (@p1)) and (testperfor0_.businessUnitId in (select businessun2_.childId from app.BusinessUnitAncestorLink businessun2_ where businessun2_.ancestorId in (@p2))) and (testperfor0_.managementUnitId in (select management3_.childId from app.ManagementUnitAncestorLink management3_ where management3_.ancestorId in (@p3))) or (testperfor0_.locationId in (select locationan4_.childId from app.LocationAncestorLink locationan4_ where locationan4_.ancestorId in (@p4))) and (testperfor0_.employeeId in (@p5)) and (testperfor0_.businessUnitId in (select businessun5_.childId from app.BusinessUnitAncestorLink businessun5_ where businessun5_.ancestorId in (@p6))) and (testperfor0_.managementUnitId in (select management6_.childId from app.ManagementUnitAncestorLink management6_ where management6_.ancestorId in (@p7))) or (testperfor0_.locationId in (select locationan7_.childId from app.LocationAncestorLink locationan7_ where locationan7_.ancestorId in (@p8))) and (testperfor0_.employeeId in (@p9)) and (testperfor0_.businessUnitId in (select businessun8_.childId from app.BusinessUnitAncestorLink businessun8_ where businessun8_.ancestorId in (@p10))) and (testperfor0_.managementUnitId in (select management9_.childId from app.ManagementUnitAncestorLink management9_ where management9_.ancestorId in (@p11))) or (testperfor0_.locationId in (select locationan10_.childId from app.LocationAncestorLink locationan10_ where locationan10_.ancestorId in (@p12))) and (testperfor0_.employeeId in (@p13)) and (testperfor0_.businessUnitId in (select businessun11_.childId from app.BusinessUnitAncestorLink businessun11_ where businessun11_.ancestorId in (@p14))) and (testperfor0_.managementUnitId in (select management12_.childId from app.ManagementUnitAncestorLink management12_ where management12_.ancestorId in (@p15))) or (testperfor0_.locationId in (select locationan13_.childId from app.LocationAncestorLink locationan13_ where locationan13_.ancestorId in (@p16))) and (testperfor0_.employeeId in (@p17)) and (testperfor0_.businessUnitId in (select businessun14_.childId from app.BusinessUnitAncestorLink businessun14_ where businessun14_.ancestorId in (@p18))) and (testperfor0_.managementUnitId in (select management15_.childId from app.ManagementUnitAncestorLink management15_ where management15_.ancestorId in (@p19))) or (testperfor0_.locationId in (select locationan16_.childId from app.LocationAncestorLink locationan16_ where locationan16_.ancestorId in (@p20))) and (testperfor0_.employeeId in (@p21)) and (testperfor0_.businessUnitId in (select businessun17_.childId from app.BusinessUnitAncestorLink businessun17_ where businessun17_.ancestorId in (@p22))) and (testperfor0_.managementUnitId in (select management18_.childId from app.ManagementUnitAncestorLink management18_ where management18_.ancestorId in (@p23))) or (testperfor0_.locationId in (select locationan19_.childId from app.LocationAncestorLink locationan19_ where locationan19_.ancestorId in (@p24))) and (testperfor0_.employeeId in (@p25)) and (testperfor0_.businessUnitId in (select businessun20_.childId from app.BusinessUnitAncestorLink businessun20_ where businessun20_.ancestorId in (@p26))) and (testperfor0_.managementUnitId in (select management21_.childId from app.ManagementUnitAncestorLink management21_ where management21_.ancestorId in (@p27))) or (testperfor0_.locationId in (select locationan22_.childId from app.LocationAncestorLink locationan22_ where locationan22_.ancestorId in (@p28))) and (testperfor0_.employeeId in (@p29)) and (testperfor0_.businessUnitId in (select businessun23_.childId from app.BusinessUnitAncestorLink businessun23_ where businessun23_.ancestorId in (@p30))) and (testperfor0_.managementUnitId in (select management24_.childId from app.ManagementUnitAncestorLink management24_ where management24_.ancestorId in (@p31))) or (testperfor0_.locationId in (select locationan25_.childId from app.LocationAncestorLink locationan25_ where locationan25_.ancestorId in (@p32))) and (testperfor0_.employeeId in (@p33)) and (testperfor0_.businessUnitId in (select businessun26_.childId from app.BusinessUnitAncestorLink businessun26_ where businessun26_.ancestorId in (@p34))) and (testperfor0_.managementUnitId in (select management27_.childId from app.ManagementUnitAncestorLink management27_ where management27_.ancestorId in (@p35))) or (testperfor0_.locationId in (select locationan28_.childId from app.LocationAncestorLink locationan28_ where locationan28_.ancestorId in (@p36))) and (testperfor0_.employeeId in (@p37)) and (testperfor0_.businessUnitId in (select businessun29_.childId from app.BusinessUnitAncestorLink businessun29_ where businessun29_.ancestorId in (@p38))) and (testperfor0_.managementUnitId in (select management30_.childId from app.ManagementUnitAncestorLink management30_ where management30_.ancestorId in (@p39))) or (testperfor0_.locationId in (select locationan31_.childId from app.LocationAncestorLink locationan31_ where locationan31_.ancestorId in (@p40))) and (testperfor0_.employeeId in (@p41)) and (testperfor0_.businessUnitId in (select businessun32_.childId from app.BusinessUnitAncestorLink businessun32_ where businessun32_.ancestorId in (@p42))) and (testperfor0_.managementUnitId in (select management33_.childId from app.ManagementUnitAncestorLink management33_ where management33_.ancestorId in (@p43))) or (testperfor0_.locationId in (select locationan34_.childId from app.LocationAncestorLink locationan34_ where locationan34_.ancestorId in (@p44))) and (testperfor0_.employeeId in (@p45)) and (testperfor0_.businessUnitId in (select businessun35_.childId from app.BusinessUnitAncestorLink businessun35_ where businessun35_.ancestorId in (@p46))) and (testperfor0_.managementUnitId in (select management36_.childId from app.ManagementUnitAncestorLink management36_ where management36_.ancestorId in (@p47))) or (testperfor0_.locationId in (select locationan37_.childId from app.LocationAncestorLink locationan37_ where locationan37_.ancestorId in (@p48))) and (testperfor0_.employeeId in (@p49)) and (testperfor0_.businessUnitId in (select businessun38_.childId from app.BusinessUnitAncestorLink businessun38_ where businessun38_.ancestorId in (@p50))) and (testperfor0_.managementUnitId in (select management39_.childId from app.ManagementUnitAncestorLink management39_ where management39_.ancestorId in (@p51))) or (testperfor0_.locationId in (select locationan40_.childId from app.LocationAncestorLink locationan40_ where locationan40_.ancestorId in (@p52))) and (testperfor0_.employeeId in (@p53)) and (testperfor0_.businessUnitId in (select businessun41_.childId from app.BusinessUnitAncestorLink businessun41_ where businessun41_.ancestorId in (@p54))) and (testperfor0_.managementUnitId in (select management42_.childId from app.ManagementUnitAncestorLink management42_ where management42_.ancestorId in (@p55))) or (testperfor0_.locationId in (select locationan43_.childId from app.LocationAncestorLink locationan43_ where locationan43_.ancestorId in (@p56))) and (testperfor0_.employeeId in (@p57)) and (testperfor0_.businessUnitId in (select businessun44_.childId from app.BusinessUnitAncestorLink businessun44_ where businessun44_.ancestorId in (@p58))) and (testperfor0_.managementUnitId in (select management45_.childId from app.ManagementUnitAncestorLink management45_ where management45_.ancestorId in (@p59))) or (testperfor0_.locationId in (select locationan46_.childId from app.LocationAncestorLink locationan46_ where locationan46_.ancestorId in (@p60))) and (testperfor0_.employeeId in (@p61)) and (testperfor0_.businessUnitId in (select businessun47_.childId from app.BusinessUnitAncestorLink businessun47_ where businessun47_.ancestorId in (@p62))) and (testperfor0_.managementUnitId in (select management48_.childId from app.ManagementUnitAncestorLink management48_ where management48_.ancestorId in (@p63))) or (testperfor0_.locationId in (select locationan49_.childId from app.LocationAncestorLink locationan49_ where locationan49_.ancestorId in (@p64))) and (testperfor0_.employeeId in (@p65)) and (testperfor0_.businessUnitId in (select businessun50_.childId from app.BusinessUnitAncestorLink businessun50_ where businessun50_.ancestorId in (@p66))) and (testperfor0_.managementUnitId in (select management51_.childId from app.ManagementUnitAncestorLink management51_ where management51_.ancestorId in (@p67))) or (testperfor0_.locationId in (select locationan52_.childId from app.LocationAncestorLink locationan52_ where locationan52_.ancestorId in (@p68))) and (testperfor0_.employeeId in (@p69)) and (testperfor0_.businessUnitId in (select businessun53_.childId from app.BusinessUnitAncestorLink businessun53_ where businessun53_.ancestorId in (@p70))) and (testperfor0_.managementUnitId in (select management54_.childId from app.ManagementUnitAncestorLink management54_ where management54_.ancestorId in (@p71))) or (testperfor0_.locationId in (select locationan55_.childId from app.LocationAncestorLink locationan55_ where locationan55_.ancestorId in (@p72))) and (testperfor0_.employeeId in (@p73)) and (testperfor0_.businessUnitId in (select businessun56_.childId from app.BusinessUnitAncestorLink businessun56_ where businessun56_.ancestorId in (@p74))) and (testperfor0_.managementUnitId in (select management57_.childId from app.ManagementUnitAncestorLink management57_ where management57_.ancestorId in (@p75))) or (testperfor0_.locationId in (select locationan58_.childId from app.LocationAncestorLink locationan58_ where locationan58_.ancestorId in (@p76))) and (testperfor0_.employeeId in (@p77)) and (testperfor0_.businessUnitId in (select businessun59_.childId from app.BusinessUnitAncestorLink businessun59_ where businessun59_.ancestorId in (@p78))) and (testperfor0_.managementUnitId in (select management60_.childId from app.ManagementUnitAncestorLink management60_ where management60_.ancestorId in (@p79))) or (testperfor0_.locationId in (select locationan61_.childId from app.LocationAncestorLink locationan61_ where locationan61_.ancestorId in (@p80))) and (testperfor0_.employeeId in (@p81)) and (testperfor0_.businessUnitId in (select businessun62_.childId from app.BusinessUnitAncestorLink businessun62_ where businessun62_.ancestorId in (@p82))) and (testperfor0_.managementUnitId in (select management63_.childId from app.ManagementUnitAncestorLink management63_ where management63_.ancestorId in (@p83))) or (testperfor0_.locationId in (select locationan64_.childId from app.LocationAncestorLink locationan64_ where locationan64_.ancestorId in (@p84))) and (testperfor0_.employeeId in (@p85)) and (testperfor0_.businessUnitId in (select businessun65_.childId from app.BusinessUnitAncestorLink businessun65_ where businessun65_.ancestorId in (@p86))) and (testperfor0_.managementUnitId in (select management66_.childId from app.ManagementUnitAncestorLink management66_ where management66_.ancestorId in (@p87))) or (testperfor0_.locationId in (select locationan67_.childId from app.LocationAncestorLink locationan67_ where locationan67_.ancestorId in (@p88))) and (testperfor0_.employeeId in (@p89)) and (testperfor0_.businessUnitId in (select businessun68_.childId from app.BusinessUnitAncestorLink businessun68_ where businessun68_.ancestorId in (@p90))) and (testperfor0_.managementUnitId in (select management69_.childId from app.ManagementUnitAncestorLink management69_ where management69_.ancestorId in (@p91))) or (testperfor0_.locationId in (select locationan70_.childId from app.LocationAncestorLink locationan70_ where locationan70_.ancestorId in (@p92))) and (testperfor0_.employeeId in (@p93)) and (testperfor0_.businessUnitId in (select businessun71_.childId from app.BusinessUnitAncestorLink businessun71_ where businessun71_.ancestorId in (@p94))) and (testperfor0_.managementUnitId in (select management72_.childId from app.ManagementUnitAncestorLink management72_ where management72_.ancestorId in (@p95))) or (testperfor0_.locationId in (select locationan73_.childId from app.LocationAncestorLink locationan73_ where locationan73_.ancestorId in (@p96))) and (testperfor0_.employeeId in (@p97)) and (testperfor0_.businessUnitId in (select businessun74_.childId from app.BusinessUnitAncestorLink businessun74_ where businessun74_.ancestorId in (@p98))) and (testperfor0_.managementUnitId in (select management75_.childId from app.ManagementUnitAncestorLink management75_ where management75_.ancestorId in (@p99))) or (testperfor0_.locationId in (select locationan76_.childId from app.LocationAncestorLink locationan76_ where locationan76_.ancestorId in (@p100))) and (testperfor0_.employeeId in (@p101)) and (testperfor0_.businessUnitId in (select businessun77_.childId from app.BusinessUnitAncestorLink businessun77_ where businessun77_.ancestorId in (@p102))) and (testperfor0_.managementUnitId in (select management78_.childId from app.ManagementUnitAncestorLink management78_ where management78_.ancestorId in (@p103))) or (testperfor0_.locationId in (select locationan79_.childId from app.LocationAncestorLink locationan79_ where locationan79_.ancestorId in (@p104))) and (testperfor0_.employeeId in (@p105)) and (testperfor0_.businessUnitId in (select businessun80_.childId from app.BusinessUnitAncestorLink businessun80_ where businessun80_.ancestorId in (@p106))) and (testperfor0_.managementUnitId in (select management81_.childId from app.ManagementUnitAncestorLink management81_ where management81_.ancestorId in (@p107))) or (testperfor0_.locationId in (select locationan82_.childId from app.LocationAncestorLink locationan82_ where locationan82_.ancestorId in (@p108))) and (testperfor0_.employeeId in (@p109)) and (testperfor0_.businessUnitId in (select businessun83_.childId from app.BusinessUnitAncestorLink businessun83_ where businessun83_.ancestorId in (@p110))) and (testperfor0_.managementUnitId in (select management84_.childId from app.ManagementUnitAncestorLink management84_ where management84_.ancestorId in (@p111))) or (testperfor0_.locationId in (select locationan85_.childId from app.LocationAncestorLink locationan85_ where locationan85_.ancestorId in (@p112))) and (testperfor0_.employeeId in (@p113)) and (testperfor0_.businessUnitId in (select businessun86_.childId from app.BusinessUnitAncestorLink businessun86_ where businessun86_.ancestorId in (@p114))) and (testperfor0_.managementUnitId in (select management87_.childId from app.ManagementUnitAncestorLink management87_ where management87_.ancestorId in (@p115))) or (testperfor0_.locationId in (select locationan88_.childId from app.LocationAncestorLink locationan88_ where locationan88_.ancestorId in (@p116))) and (testperfor0_.employeeId in (@p117)) and (testperfor0_.businessUnitId in (select businessun89_.childId from app.BusinessUnitAncestorLink businessun89_ where businessun89_.ancestorId in (@p118))) and (testperfor0_.managementUnitId in (select management90_.childId from app.ManagementUnitAncestorLink management90_ where management90_.ancestorId in (@p119))) or (testperfor0_.locationId in (select locationan91_.childId from app.LocationAncestorLink locationan91_ where locationan91_.ancestorId in (@p120))) and (testperfor0_.employeeId in (@p121)) and (testperfor0_.businessUnitId in (select businessun92_.childId from app.BusinessUnitAncestorLink businessun92_ where businessun92_.ancestorId in (@p122))) and (testperfor0_.managementUnitId in (select management93_.childId from app.ManagementUnitAncestorLink management93_ where management93_.ancestorId in (@p123))) or (testperfor0_.locationId in (select locationan94_.childId from app.LocationAncestorLink locationan94_ where locationan94_.ancestorId in (@p124))) and (testperfor0_.employeeId in (@p125)) and (testperfor0_.businessUnitId in (select businessun95_.childId from app.BusinessUnitAncestorLink businessun95_ where businessun95_.ancestorId in (@p126))) and (testperfor0_.managementUnitId in (select management96_.childId from app.ManagementUnitAncestorLink management96_ where management96_.ancestorId in (@p127))) or (testperfor0_.locationId in (select locationan97_.childId from app.LocationAncestorLink locationan97_ where locationan97_.ancestorId in (@p128))) and (testperfor0_.employeeId in (@p129)) and (testperfor0_.businessUnitId in (select businessun98_.childId from app.BusinessUnitAncestorLink businessun98_ where businessun98_.ancestorId in (@p130))) and (testperfor0_.managementUnitId in (select management99_.childId from app.ManagementUnitAncestorLink management99_ where management99_.ancestorId in (@p131))) or (testperfor0_.locationId in (select locationan100_.childId from app.LocationAncestorLink locationan100_ where locationan100_.ancestorId in (@p132))) and (testperfor0_.employeeId in (@p133)) and (testperfor0_.businessUnitId in (select businessun101_.childId from app.BusinessUnitAncestorLink businessun101_ where businessun101_.ancestorId in (@p134))) and (testperfor0_.managementUnitId in (select management102_.childId from app.ManagementUnitAncestorLink management102_ where management102_.ancestorId in (@p135))) or (testperfor0_.locationId in (select locationan103_.childId from app.LocationAncestorLink locationan103_ where locationan103_.ancestorId in (@p136))) and (testperfor0_.employeeId in (@p137)) and (testperfor0_.businessUnitId in (select businessun104_.childId from app.BusinessUnitAncestorLink businessun104_ where businessun104_.ancestorId in (@p138))) and (testperfor0_.managementUnitId in (select management105_.childId from app.ManagementUnitAncestorLink management105_ where management105_.ancestorId in (@p139))) or (testperfor0_.locationId in (select locationan106_.childId from app.LocationAncestorLink locationan106_ where locationan106_.ancestorId in (@p140))) and (testperfor0_.employeeId in (@p141)) and (testperfor0_.businessUnitId in (select businessun107_.childId from app.BusinessUnitAncestorLink businessun107_ where businessun107_.ancestorId in (@p142))) and (testperfor0_.managementUnitId in (select management108_.childId from app.ManagementUnitAncestorLink management108_ where management108_.ancestorId in (@p143))) or (testperfor0_.locationId in (select locationan109_.childId from app.LocationAncestorLink locationan109_ where locationan109_.ancestorId in (@p144))) and (testperfor0_.employeeId in (@p145)) and (testperfor0_.businessUnitId in (select businessun110_.childId from app.BusinessUnitAncestorLink businessun110_ where businessun110_.ancestorId in (@p146))) and (testperfor0_.managementUnitId in (select management111_.childId from app.ManagementUnitAncestorLink management111_ where management111_.ancestorId in (@p147))) or (testperfor0_.locationId in (select locationan112_.childId from app.LocationAncestorLink locationan112_ where locationan112_.ancestorId in (@p148))) and (testperfor0_.employeeId in (@p149)) and (testperfor0_.businessUnitId in (select businessun113_.childId from app.BusinessUnitAncestorLink businessun113_ where businessun113_.ancestorId in (@p150))) and (testperfor0_.managementUnitId in (select management114_.childId from app.ManagementUnitAncestorLink management114_ where management114_.ancestorId in (@p151))) or (testperfor0_.locationId in (select locationan115_.childId from app.LocationAncestorLink locationan115_ where locationan115_.ancestorId in (@p152))) and (testperfor0_.employeeId in (@p153)) and (testperfor0_.businessUnitId in (select businessun116_.childId from app.BusinessUnitAncestorLink businessun116_ where businessun116_.ancestorId in (@p154))) and (testperfor0_.managementUnitId in (select management117_.childId from app.ManagementUnitAncestorLink management117_ where management117_.ancestorId in (@p155))) or (testperfor0_.locationId in (select locationan118_.childId from app.LocationAncestorLink locationan118_ where locationan118_.ancestorId in (@p156))) and (testperfor0_.employeeId in (@p157)) and (testperfor0_.businessUnitId in (select businessun119_.childId from app.BusinessUnitAncestorLink businessun119_ where businessun119_.ancestorId in (@p158))) and (testperfor0_.managementUnitId in (select management120_.childId from app.ManagementUnitAncestorLink management120_ where management120_.ancestorId in (@p159))) or (testperfor0_.locationId in (select locationan121_.childId from app.LocationAncestorLink locationan121_ where locationan121_.ancestorId in (@p160))) and (testperfor0_.employeeId in (@p161)) and (testperfor0_.businessUnitId in (select businessun122_.childId from app.BusinessUnitAncestorLink businessun122_ where businessun122_.ancestorId in (@p162))) and (testperfor0_.managementUnitId in (select management123_.childId from app.ManagementUnitAncestorLink management123_ where management123_.ancestorId in (@p163))) or (testperfor0_.locationId in (select locationan124_.childId from app.LocationAncestorLink locationan124_ where locationan124_.ancestorId in (@p164))) and (testperfor0_.employeeId in (@p165)) and (testperfor0_.businessUnitId in (select businessun125_.childId from app.BusinessUnitAncestorLink businessun125_ where businessun125_.ancestorId in (@p166))) and (testperfor0_.managementUnitId in (select management126_.childId from app.ManagementUnitAncestorLink management126_ where management126_.ancestorId in (@p167))) or (testperfor0_.locationId in (select locationan127_.childId from app.LocationAncestorLink locationan127_ where locationan127_.ancestorId in (@p168))) and (testperfor0_.employeeId in (@p169)) and (testperfor0_.businessUnitId in (select businessun128_.childId from app.BusinessUnitAncestorLink businessun128_ where businessun128_.ancestorId in (@p170))) and (testperfor0_.managementUnitId in (select management129_.childId from app.ManagementUnitAncestorLink management129_ where management129_.ancestorId in (@p171))) or (testperfor0_.locationId in (select locationan130_.childId from app.LocationAncestorLink locationan130_ where locationan130_.ancestorId in (@p172))) and (testperfor0_.employeeId in (@p173)) and (testperfor0_.businessUnitId in (select businessun131_.childId from app.BusinessUnitAncestorLink businessun131_ where businessun131_.ancestorId in (@p174))) and (testperfor0_.managementUnitId in (select management132_.childId from app.ManagementUnitAncestorLink management132_ where management132_.ancestorId in (@p175))) or (testperfor0_.locationId in (select locationan133_.childId from app.LocationAncestorLink locationan133_ where locationan133_.ancestorId in (@p176))) and (testperfor0_.employeeId in (@p177)) and (testperfor0_.businessUnitId in (select businessun134_.childId from app.BusinessUnitAncestorLink businessun134_ where businessun134_.ancestorId in (@p178))) and (testperfor0_.managementUnitId in (select management135_.childId from app.ManagementUnitAncestorLink management135_ where management135_.ancestorId in (@p179))) or (testperfor0_.locationId in (select locationan136_.childId from app.LocationAncestorLink locationan136_ where locationan136_.ancestorId in (@p180))) and (testperfor0_.employeeId in (@p181)) and (testperfor0_.businessUnitId in (select businessun137_.childId from app.BusinessUnitAncestorLink businessun137_ where businessun137_.ancestorId in (@p182))) and (testperfor0_.managementUnitId in (select management138_.childId from app.ManagementUnitAncestorLink management138_ where management138_.ancestorId in (@p183))) or (testperfor0_.locationId in (select locationan139_.childId from app.LocationAncestorLink locationan139_ where locationan139_.ancestorId in (@p184))) and (testperfor0_.employeeId in (@p185)) and (testperfor0_.businessUnitId in (select businessun140_.childId from app.BusinessUnitAncestorLink businessun140_ where businessun140_.ancestorId in (@p186))) and (testperfor0_.managementUnitId in (select management141_.childId from app.ManagementUnitAncestorLink management141_ where management141_.ancestorId in (@p187))) or (testperfor0_.locationId in (select locationan142_.childId from app.LocationAncestorLink locationan142_ where locationan142_.ancestorId in (@p188))) and (testperfor0_.employeeId in (@p189)) and (testperfor0_.businessUnitId in (select businessun143_.childId from app.BusinessUnitAncestorLink businessun143_ where businessun143_.ancestorId in (@p190))) and (testperfor0_.managementUnitId in (select management144_.childId from app.ManagementUnitAncestorLink management144_ where management144_.ancestorId in (@p191))) or (testperfor0_.locationId in (select locationan145_.childId from app.LocationAncestorLink locationan145_ where locationan145_.ancestorId in (@p192))) and (testperfor0_.employeeId in (@p193)) and (testperfor0_.businessUnitId in (select businessun146_.childId from app.BusinessUnitAncestorLink businessun146_ where businessun146_.ancestorId in (@p194))) and (testperfor0_.managementUnitId in (select management147_.childId from app.ManagementUnitAncestorLink management147_ where management147_.ancestorId in (@p195))) or (testperfor0_.locationId in (select locationan148_.childId from app.LocationAncestorLink locationan148_ where locationan148_.ancestorId in (@p196))) and (testperfor0_.employeeId in (@p197)) and (testperfor0_.businessUnitId in (select businessun149_.childId from app.BusinessUnitAncestorLink businessun149_ where businessun149_.ancestorId in (@p198))) and (testperfor0_.managementUnitId in (select management150_.childId from app.ManagementUnitAncestorLink management150_ where management150_.ancestorId in (@p199))) or (testperfor0_.locationId in (select locationan151_.childId from app.LocationAncestorLink locationan151_ where locationan151_.ancestorId in (@p200))) and (testperfor0_.employeeId in (@p201)) and (testperfor0_.businessUnitId in (select businessun152_.childId from app.BusinessUnitAncestorLink businessun152_ where businessun152_.ancestorId in (@p202))) and (testperfor0_.managementUnitId in (select management153_.childId from app.ManagementUnitAncestorLink management153_ where management153_.ancestorId in (@p203))) or (testperfor0_.locationId in (select locationan154_.childId from app.LocationAncestorLink locationan154_ where locationan154_.ancestorId in (@p204))) and (testperfor0_.employeeId in (@p205)) and (testperfor0_.businessUnitId in (select businessun155_.childId from app.BusinessUnitAncestorLink businessun155_ where businessun155_.ancestorId in (@p206))) and (testperfor0_.managementUnitId in (select management156_.childId from app.ManagementUnitAncestorLink management156_ where management156_.ancestorId in (@p207))) or (testperfor0_.locationId in (select locationan157_.childId from app.LocationAncestorLink locationan157_ where locationan157_.ancestorId in (@p208))) and (testperfor0_.employeeId in (@p209)) and (testperfor0_.businessUnitId in (select businessun158_.childId from app.BusinessUnitAncestorLink businessun158_ where businessun158_.ancestorId in (@p210))) and (testperfor0_.managementUnitId in (select management159_.childId from app.ManagementUnitAncestorLink management159_ where management159_.ancestorId in (@p211))) or (testperfor0_.locationId in (select locationan160_.childId from app.LocationAncestorLink locationan160_ where locationan160_.ancestorId in (@p212))) and (testperfor0_.employeeId in (@p213)) and (testperfor0_.businessUnitId in (select businessun161_.childId from app.BusinessUnitAncestorLink businessun161_ where businessun161_.ancestorId in (@p214))) and (testperfor0_.managementUnitId in (select management162_.childId from app.ManagementUnitAncestorLink management162_ where management162_.ancestorId in (@p215))) or (testperfor0_.locationId in (select locationan163_.childId from app.LocationAncestorLink locationan163_ where locationan163_.ancestorId in (@p216))) and (testperfor0_.employeeId in (@p217)) and (testperfor0_.businessUnitId in (select businessun164_.childId from app.BusinessUnitAncestorLink businessun164_ where businessun164_.ancestorId in (@p218))) and (testperfor0_.managementUnitId in (select management165_.childId from app.ManagementUnitAncestorLink management165_ where management165_.ancestorId in (@p219))) or (testperfor0_.locationId in (select locationan166_.childId from app.LocationAncestorLink locationan166_ where locationan166_.ancestorId in (@p220))) and (testperfor0_.employeeId in (@p221)) and (testperfor0_.businessUnitId in (select businessun167_.childId from app.BusinessUnitAncestorLink businessun167_ where businessun167_.ancestorId in (@p222))) and (testperfor0_.managementUnitId in (select management168_.childId from app.ManagementUnitAncestorLink management168_ where management168_.ancestorId in (@p223))) or (testperfor0_.locationId in (select locationan169_.childId from app.LocationAncestorLink locationan169_ where locationan169_.ancestorId in (@p224))) and (testperfor0_.employeeId in (@p225)) and (testperfor0_.businessUnitId in (select businessun170_.childId from app.BusinessUnitAncestorLink businessun170_ where businessun170_.ancestorId in (@p226))) and (testperfor0_.managementUnitId in (select management171_.childId from app.ManagementUnitAncestorLink management171_ where management171_.ancestorId in (@p227))) or (testperfor0_.locationId in (select locationan172_.childId from app.LocationAncestorLink locationan172_ where locationan172_.ancestorId in (@p228))) and (testperfor0_.employeeId in (@p229)) and (testperfor0_.businessUnitId in (select businessun173_.childId from app.BusinessUnitAncestorLink businessun173_ where businessun173_.ancestorId in (@p230))) and (testperfor0_.managementUnitId in (select management174_.childId from app.ManagementUnitAncestorLink management174_ where management174_.ancestorId in (@p231))) or (testperfor0_.locationId in (select locationan175_.childId from app.LocationAncestorLink locationan175_ where locationan175_.ancestorId in (@p232))) and (testperfor0_.employeeId in (@p233)) and (testperfor0_.businessUnitId in (select businessun176_.childId from app.BusinessUnitAncestorLink businessun176_ where businessun176_.ancestorId in (@p234))) and (testperfor0_.managementUnitId in (select management177_.childId from app.ManagementUnitAncestorLink management177_ where management177_.ancestorId in (@p235))) or (testperfor0_.locationId in (select locationan178_.childId from app.LocationAncestorLink locationan178_ where locationan178_.ancestorId in (@p236))) and (testperfor0_.employeeId in (@p237)) and (testperfor0_.businessUnitId in (select businessun179_.childId from app.BusinessUnitAncestorLink businessun179_ where businessun179_.ancestorId in (@p238))) and (testperfor0_.managementUnitId in (select management180_.childId from app.ManagementUnitAncestorLink management180_ where management180_.ancestorId in (@p239))) or (testperfor0_.locationId in (select locationan181_.childId from app.LocationAncestorLink locationan181_ where locationan181_.ancestorId in (@p240))) and (testperfor0_.employeeId in (@p241)) and (testperfor0_.businessUnitId in (select businessun182_.childId from app.BusinessUnitAncestorLink businessun182_ where businessun182_.ancestorId in (@p242))) and (testperfor0_.managementUnitId in (select management183_.childId from app.ManagementUnitAncestorLink management183_ where management183_.ancestorId in (@p243))) or (testperfor0_.locationId in (select locationan184_.childId from app.LocationAncestorLink locationan184_ where locationan184_.ancestorId in (@p244))) and (testperfor0_.employeeId in (@p245)) and (testperfor0_.businessUnitId in (select businessun185_.childId from app.BusinessUnitAncestorLink businessun185_ where businessun185_.ancestorId in (@p246))) and (testperfor0_.managementUnitId in (select management186_.childId from app.ManagementUnitAncestorLink management186_ where management186_.ancestorId in (@p247))) or (testperfor0_.locationId in (select locationan187_.childId from app.LocationAncestorLink locationan187_ where locationan187_.ancestorId in (@p248))) and (testperfor0_.employeeId in (@p249)) and (testperfor0_.businessUnitId in (select businessun188_.childId from app.BusinessUnitAncestorLink businessun188_ where businessun188_.ancestorId in (@p250))) and (testperfor0_.managementUnitId in (select management189_.childId from app.ManagementUnitAncestorLink management189_ where management189_.ancestorId in (@p251))) or (testperfor0_.locationId in (select locationan190_.childId from app.LocationAncestorLink locationan190_ where locationan190_.ancestorId in (@p252))) and (testperfor0_.employeeId in (@p253)) and (testperfor0_.businessUnitId in (select businessun191_.childId from app.BusinessUnitAncestorLink businessun191_ where businessun191_.ancestorId in (@p254))) and (testperfor0_.managementUnitId in (select management192_.childId from app.ManagementUnitAncestorLink management192_ where management192_.ancestorId in (@p255))) or (testperfor0_.locationId in (select locationan193_.childId from app.LocationAncestorLink locationan193_ where locationan193_.ancestorId in (@p256))) and (testperfor0_.employeeId in (@p257)) and (testperfor0_.businessUnitId in (select businessun194_.childId from app.BusinessUnitAncestorLink businessun194_ where businessun194_.ancestorId in (@p258))) and (testperfor0_.managementUnitId in (select management195_.childId from app.ManagementUnitAncestorLink management195_ where management195_.ancestorId in (@p259))) or (testperfor0_.locationId in (select locationan196_.childId from app.LocationAncestorLink locationan196_ where locationan196_.ancestorId in (@p260))) and (testperfor0_.employeeId in (@p261)) and (testperfor0_.businessUnitId in (select businessun197_.childId from app.BusinessUnitAncestorLink businessun197_ where businessun197_.ancestorId in (@p262))) and (testperfor0_.managementUnitId in (select management198_.childId from app.ManagementUnitAncestorLink management198_ where management198_.ancestorId in (@p263))) or (testperfor0_.locationId in (select locationan199_.childId from app.LocationAncestorLink locationan199_ where locationan199_.ancestorId in (@p264))) and (testperfor0_.employeeId in (@p265)) and (testperfor0_.businessUnitId in (select businessun200_.childId from app.BusinessUnitAncestorLink businessun200_ where businessun200_.ancestorId in (@p266))) and (testperfor0_.managementUnitId in (select management201_.childId from app.ManagementUnitAncestorLink management201_ where management201_.ancestorId in (@p267))) or (testperfor0_.locationId in (select locationan202_.childId from app.LocationAncestorLink locationan202_ where locationan202_.ancestorId in (@p268))) and (testperfor0_.employeeId in (@p269)) and (testperfor0_.businessUnitId in (select businessun203_.childId from app.BusinessUnitAncestorLink businessun203_ where businessun203_.ancestorId in (@p270))) and (testperfor0_.managementUnitId in (select management204_.childId from app.ManagementUnitAncestorLink management204_ where management204_.ancestorId in (@p271))) or (testperfor0_.locationId in (select locationan205_.childId from app.LocationAncestorLink locationan205_ where locationan205_.ancestorId in (@p272))) and (testperfor0_.employeeId in (@p273)) and (testperfor0_.businessUnitId in (select businessun206_.childId from app.BusinessUnitAncestorLink businessun206_ where businessun206_.ancestorId in (@p274))) and (testperfor0_.managementUnitId in (select management207_.childId from app.ManagementUnitAncestorLink management207_ where management207_.ancestorId in (@p275))) or (testperfor0_.locationId in (select locationan208_.childId from app.LocationAncestorLink locationan208_ where locationan208_.ancestorId in (@p276))) and (testperfor0_.employeeId in (@p277)) and (testperfor0_.businessUnitId in (select businessun209_.childId from app.BusinessUnitAncestorLink businessun209_ where businessun209_.ancestorId in (@p278))) and (testperfor0_.managementUnitId in (select management210_.childId from app.ManagementUnitAncestorLink management210_ where management210_.ancestorId in (@p279))) or (testperfor0_.locationId in (select locationan211_.childId from app.LocationAncestorLink locationan211_ where locationan211_.ancestorId in (@p280))) and (testperfor0_.employeeId in (@p281)) and (testperfor0_.businessUnitId in (select businessun212_.childId from app.BusinessUnitAncestorLink businessun212_ where businessun212_.ancestorId in (@p282))) and (testperfor0_.managementUnitId in (select management213_.childId from app.ManagementUnitAncestorLink management213_ where management213_.ancestorId in (@p283))) or (testperfor0_.locationId in (select locationan214_.childId from app.LocationAncestorLink locationan214_ where locationan214_.ancestorId in (@p284))) and (testperfor0_.employeeId in (@p285)) and (testperfor0_.businessUnitId in (select businessun215_.childId from app.BusinessUnitAncestorLink businessun215_ where businessun215_.ancestorId in (@p286))) and (testperfor0_.managementUnitId in (select management216_.childId from app.ManagementUnitAncestorLink management216_ where management216_.ancestorId in (@p287))) or (testperfor0_.locationId in (select locationan217_.childId from app.LocationAncestorLink locationan217_ where locationan217_.ancestorId in (@p288))) and (testperfor0_.employeeId in (@p289)) and (testperfor0_.businessUnitId in (select businessun218_.childId from app.BusinessUnitAncestorLink businessun218_ where businessun218_.ancestorId in (@p290))) and (testperfor0_.managementUnitId in (select management219_.childId from app.ManagementUnitAncestorLink management219_ where management219_.ancestorId in (@p291))) or (testperfor0_.locationId in (select locationan220_.childId from app.LocationAncestorLink locationan220_ where locationan220_.ancestorId in (@p292))) and (testperfor0_.employeeId in (@p293)) and (testperfor0_.businessUnitId in (select businessun221_.childId from app.BusinessUnitAncestorLink businessun221_ where businessun221_.ancestorId in (@p294))) and (testperfor0_.managementUnitId in (select management222_.childId from app.ManagementUnitAncestorLink management222_ where management222_.ancestorId in (@p295))) or (testperfor0_.locationId in (select locationan223_.childId from app.LocationAncestorLink locationan223_ where locationan223_.ancestorId in (@p296))) and (testperfor0_.employeeId in (@p297)) and (testperfor0_.businessUnitId in (select businessun224_.childId from app.BusinessUnitAncestorLink businessun224_ where businessun224_.ancestorId in (@p298))) and (testperfor0_.managementUnitId in (select management225_.childId from app.ManagementUnitAncestorLink management225_ where management225_.ancestorId in (@p299))) or (testperfor0_.locationId in (select locationan226_.childId from app.LocationAncestorLink locationan226_ where locationan226_.ancestorId in (@p300))) and (testperfor0_.employeeId in (@p301)) and (testperfor0_.businessUnitId in (select businessun227_.childId from app.BusinessUnitAncestorLink businessun227_ where businessun227_.ancestorId in (@p302))) and (testperfor0_.managementUnitId in (select management228_.childId from app.ManagementUnitAncestorLink management228_ where management228_.ancestorId in (@p303))) or (testperfor0_.locationId in (select locationan229_.childId from app.LocationAncestorLink locationan229_ where locationan229_.ancestorId in (@p304))) and (testperfor0_.employeeId in (@p305)) and (testperfor0_.businessUnitId in (select businessun230_.childId from app.BusinessUnitAncestorLink businessun230_ where businessun230_.ancestorId in (@p306))) and (testperfor0_.managementUnitId in (select management231_.childId from app.ManagementUnitAncestorLink management231_ where management231_.ancestorId in (@p307))) or (testperfor0_.locationId in (select locationan232_.childId from app.LocationAncestorLink locationan232_ where locationan232_.ancestorId in (@p308))) and (testperfor0_.employeeId in (@p309)) and (testperfor0_.businessUnitId in (select businessun233_.childId from app.BusinessUnitAncestorLink businessun233_ where businessun233_.ancestorId in (@p310))) and (testperfor0_.managementUnitId in (select management234_.childId from app.ManagementUnitAncestorLink management234_ where management234_.ancestorId in (@p311))) or (testperfor0_.locationId in (select locationan235_.childId from app.LocationAncestorLink locationan235_ where locationan235_.ancestorId in (@p312))) and (testperfor0_.employeeId in (@p313)) and (testperfor0_.businessUnitId in (select businessun236_.childId from app.BusinessUnitAncestorLink businessun236_ where businessun236_.ancestorId in (@p314))) and (testperfor0_.managementUnitId in (select management237_.childId from app.ManagementUnitAncestorLink management237_ where management237_.ancestorId in (@p315))) or (testperfor0_.locationId in (select locationan238_.childId from app.LocationAncestorLink locationan238_ where locationan238_.ancestorId in (@p316))) and (testperfor0_.employeeId in (@p317)) and (testperfor0_.businessUnitId in (select businessun239_.childId from app.BusinessUnitAncestorLink businessun239_ where businessun239_.ancestorId in (@p318))) and (testperfor0_.managementUnitId in (select management240_.childId from app.ManagementUnitAncestorLink management240_ where management240_.ancestorId in (@p319))) or (testperfor0_.locationId in (select locationan241_.childId from app.LocationAncestorLink locationan241_ where locationan241_.ancestorId in (@p320))) and (testperfor0_.employeeId in (@p321)) and (testperfor0_.businessUnitId in (select businessun242_.childId from app.BusinessUnitAncestorLink businessun242_ where businessun242_.ancestorId in (@p322))) and (testperfor0_.managementUnitId in (select management243_.childId from app.ManagementUnitAncestorLink management243_ where management243_.ancestorId in (@p323)))',N'@p0 uniqueidentifier,@p1 uniqueidentifier,@p2 uniqueidentifier,@p3 uniqueidentifier,@p4 uniqueidentifier,@p5 uniqueidentifier,@p6 uniqueidentifier,@p7 uniqueidentifier,@p8 uniqueidentifier,@p9 uniqueidentifier,@p10 uniqueidentifier,@p11 uniqueidentifier,@p12 uniqueidentifier,@p13 uniqueidentifier,@p14 uniqueidentifier,@p15 uniqueidentifier,@p16 uniqueidentifier,@p17 uniqueidentifier,@p18 uniqueidentifier,@p19 uniqueidentifier,@p20 uniqueidentifier,@p21 uniqueidentifier,@p22 uniqueidentifier,@p23 uniqueidentifier,@p24 uniqueidentifier,@p25 uniqueidentifier,@p26 uniqueidentifier,@p27 uniqueidentifier,@p28 uniqueidentifier,@p29 uniqueidentifier,@p30 uniqueidentifier,@p31 uniqueidentifier,@p32 uniqueidentifier,@p33 uniqueidentifier,@p34 uniqueidentifier,@p35 uniqueidentifier,@p36 uniqueidentifier,@p37 uniqueidentifier,@p38 uniqueidentifier,@p39 uniqueidentifier,@p40 uniqueidentifier,@p41 uniqueidentifier,@p42 uniqueidentifier,@p43 uniqueidentifier,@p44 uniqueidentifier,@p45 uniqueidentifier,@p46 uniqueidentifier,@p47 uniqueidentifier,@p48 uniqueidentifier,@p49 uniqueidentifier,@p50 uniqueidentifier,@p51 uniqueidentifier,@p52 uniqueidentifier,@p53 uniqueidentifier,@p54 uniqueidentifier,@p55 uniqueidentifier,@p56 uniqueidentifier,@p57 uniqueidentifier,@p58 uniqueidentifier,@p59 uniqueidentifier,@p60 uniqueidentifier,@p61 uniqueidentifier,@p62 uniqueidentifier,@p63 uniqueidentifier,@p64 uniqueidentifier,@p65 uniqueidentifier,@p66 uniqueidentifier,@p67 uniqueidentifier,@p68 uniqueidentifier,@p69 uniqueidentifier,@p70 uniqueidentifier,@p71 uniqueidentifier,@p72 uniqueidentifier,@p73 uniqueidentifier,@p74 uniqueidentifier,@p75 uniqueidentifier,@p76 uniqueidentifier,@p77 uniqueidentifier,@p78 uniqueidentifier,@p79 uniqueidentifier,@p80 uniqueidentifier,@p81 uniqueidentifier,@p82 uniqueidentifier,@p83 uniqueidentifier,@p84 uniqueidentifier,@p85 uniqueidentifier,@p86 uniqueidentifier,@p87 uniqueidentifier,@p88 uniqueidentifier,@p89 uniqueidentifier,@p90 uniqueidentifier,@p91 uniqueidentifier,@p92 uniqueidentifier,@p93 uniqueidentifier,@p94 uniqueidentifier,@p95 uniqueidentifier,@p96 uniqueidentifier,@p97 uniqueidentifier,@p98 uniqueidentifier,@p99 uniqueidentifier,@p100 uniqueidentifier,@p101 uniqueidentifier,@p102 uniqueidentifier,@p103 uniqueidentifier,@p104 uniqueidentifier,@p105 uniqueidentifier,@p106 uniqueidentifier,@p107 uniqueidentifier,@p108 uniqueidentifier,@p109 uniqueidentifier,@p110 uniqueidentifier,@p111 uniqueidentifier,@p112 uniqueidentifier,@p113 uniqueidentifier,@p114 uniqueidentifier,@p115 uniqueidentifier,@p116 uniqueidentifier,@p117 uniqueidentifier,@p118 uniqueidentifier,@p119 uniqueidentifier,@p120 uniqueidentifier,@p121 uniqueidentifier,@p122 uniqueidentifier,@p123 uniqueidentifier,@p124 uniqueidentifier,@p125 uniqueidentifier,@p126 uniqueidentifier,@p127 uniqueidentifier,@p128 uniqueidentifier,@p129 uniqueidentifier,@p130 uniqueidentifier,@p131 uniqueidentifier,@p132 uniqueidentifier,@p133 uniqueidentifier,@p134 uniqueidentifier,@p135 uniqueidentifier,@p136 uniqueidentifier,@p137 uniqueidentifier,@p138 uniqueidentifier,@p139 uniqueidentifier,@p140 uniqueidentifier,@p141 uniqueidentifier,@p142 uniqueidentifier,@p143 uniqueidentifier,@p144 uniqueidentifier,@p145 uniqueidentifier,@p146 uniqueidentifier,@p147 uniqueidentifier,@p148 uniqueidentifier,@p149 uniqueidentifier,@p150 uniqueidentifier,@p151 uniqueidentifier,@p152 uniqueidentifier,@p153 uniqueidentifier,@p154 uniqueidentifier,@p155 uniqueidentifier,@p156 uniqueidentifier,@p157 uniqueidentifier,@p158 uniqueidentifier,@p159 uniqueidentifier,@p160 uniqueidentifier,@p161 uniqueidentifier,@p162 uniqueidentifier,@p163 uniqueidentifier,@p164 uniqueidentifier,@p165 uniqueidentifier,@p166 uniqueidentifier,@p167 uniqueidentifier,@p168 uniqueidentifier,@p169 uniqueidentifier,@p170 uniqueidentifier,@p171 uniqueidentifier,@p172 uniqueidentifier,@p173 uniqueidentifier,@p174 uniqueidentifier,@p175 uniqueidentifier,@p176 uniqueidentifier,@p177 uniqueidentifier,@p178 uniqueidentifier,@p179 uniqueidentifier,@p180 uniqueidentifier,@p181 uniqueidentifier,@p182 uniqueidentifier,@p183 uniqueidentifier,@p184 uniqueidentifier,@p185 uniqueidentifier,@p186 uniqueidentifier,@p187 uniqueidentifier,@p188 uniqueidentifier,@p189 uniqueidentifier,@p190 uniqueidentifier,@p191 uniqueidentifier,@p192 uniqueidentifier,@p193 uniqueidentifier,@p194 uniqueidentifier,@p195 uniqueidentifier,@p196 uniqueidentifier,@p197 uniqueidentifier,@p198 uniqueidentifier,@p199 uniqueidentifier,@p200 uniqueidentifier,@p201 uniqueidentifier,@p202 uniqueidentifier,@p203 uniqueidentifier,@p204 uniqueidentifier,@p205 uniqueidentifier,@p206 uniqueidentifier,@p207 uniqueidentifier,@p208 uniqueidentifier,@p209 uniqueidentifier,@p210 uniqueidentifier,@p211 uniqueidentifier,@p212 uniqueidentifier,@p213 uniqueidentifier,@p214 uniqueidentifier,@p215 uniqueidentifier,@p216 uniqueidentifier,@p217 uniqueidentifier,@p218 uniqueidentifier,@p219 uniqueidentifier,@p220 uniqueidentifier,@p221 uniqueidentifier,@p222 uniqueidentifier,@p223 uniqueidentifier,@p224 uniqueidentifier,@p225 uniqueidentifier,@p226 uniqueidentifier,@p227 uniqueidentifier,@p228 uniqueidentifier,@p229 uniqueidentifier,@p230 uniqueidentifier,@p231 uniqueidentifier,@p232 uniqueidentifier,@p233 uniqueidentifier,@p234 uniqueidentifier,@p235 uniqueidentifier,@p236 uniqueidentifier,@p237 uniqueidentifier,@p238 uniqueidentifier,@p239 uniqueidentifier,@p240 uniqueidentifier,@p241 uniqueidentifier,@p242 uniqueidentifier,@p243 uniqueidentifier,@p244 uniqueidentifier,@p245 uniqueidentifier,@p246 uniqueidentifier,@p247 uniqueidentifier,@p248 uniqueidentifier,@p249 uniqueidentifier,@p250 uniqueidentifier,@p251 uniqueidentifier,@p252 uniqueidentifier,@p253 uniqueidentifier,@p254 uniqueidentifier,@p255 uniqueidentifier,@p256 uniqueidentifier,@p257 uniqueidentifier,@p258 uniqueidentifier,@p259 uniqueidentifier,@p260 uniqueidentifier,@p261 uniqueidentifier,@p262 uniqueidentifier,@p263 uniqueidentifier,@p264 uniqueidentifier,@p265 uniqueidentifier,@p266 uniqueidentifier,@p267 uniqueidentifier,@p268 uniqueidentifier,@p269 uniqueidentifier,@p270 uniqueidentifier,@p271 uniqueidentifier,@p272 uniqueidentifier,@p273 uniqueidentifier,@p274 uniqueidentifier,@p275 uniqueidentifier,@p276 uniqueidentifier,@p277 uniqueidentifier,@p278 uniqueidentifier,@p279 uniqueidentifier,@p280 uniqueidentifier,@p281 uniqueidentifier,@p282 uniqueidentifier,@p283 uniqueidentifier,@p284 uniqueidentifier,@p285 uniqueidentifier,@p286 uniqueidentifier,@p287 uniqueidentifier,@p288 uniqueidentifier,@p289 uniqueidentifier,@p290 uniqueidentifier,@p291 uniqueidentifier,@p292 uniqueidentifier,@p293 uniqueidentifier,@p294 uniqueidentifier,@p295 uniqueidentifier,@p296 uniqueidentifier,@p297 uniqueidentifier,@p298 uniqueidentifier,@p299 uniqueidentifier,@p300 uniqueidentifier,@p301 uniqueidentifier,@p302 uniqueidentifier,@p303 uniqueidentifier,@p304 uniqueidentifier,@p305 uniqueidentifier,@p306 uniqueidentifier,@p307 uniqueidentifier,@p308 uniqueidentifier,@p309 uniqueidentifier,@p310 uniqueidentifier,@p311 uniqueidentifier,@p312 uniqueidentifier,@p313 uniqueidentifier,@p314 uniqueidentifier,@p315 uniqueidentifier,@p316 uniqueidentifier,@p317 uniqueidentifier,@p318 uniqueidentifier,@p319 uniqueidentifier,@p320 uniqueidentifier,@p321 uniqueidentifier,@p322 uniqueidentifier,@p323 uniqueidentifier',@p0='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p1='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p2='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p3='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p4='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p5='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p6='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p7='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p8='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p9='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p10='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p11='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p12='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p13='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p14='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p15='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p16='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p17='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p18='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p19='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p20='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p21='9595FAE6-5977-4633-9F10-B64D5A29067F',@p22='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p23='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p24='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p25='9595FAE6-5977-4633-9F10-B64D5A29067F',@p26='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p27='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p28='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p29='9595FAE6-5977-4633-9F10-B64D5A29067F',@p30='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p31='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p32='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p33='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p34='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p35='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p36='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p37='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p38='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p39='283580A2-D400-4639-A8C8-23948E8D5C39',@p40='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p41='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p42='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p43='283580A2-D400-4639-A8C8-23948E8D5C39',@p44='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p45='9595FAE6-5977-4633-9F10-B64D5A29067F',@p46='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p47='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p48='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p49='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p50='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p51='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p52='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p53='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p54='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p55='283580A2-D400-4639-A8C8-23948E8D5C39',@p56='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p57='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p58='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p59='283580A2-D400-4639-A8C8-23948E8D5C39',@p60='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p61='9595FAE6-5977-4633-9F10-B64D5A29067F',@p62='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p63='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p64='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p65='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p66='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p67='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p68='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p69='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p70='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p71='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p72='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p73='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p74='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p75='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p76='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p77='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p78='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p79='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p80='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p81='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p82='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p83='283580A2-D400-4639-A8C8-23948E8D5C39',@p84='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p85='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p86='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p87='283580A2-D400-4639-A8C8-23948E8D5C39',@p88='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p89='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p90='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p91='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p92='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p93='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p94='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p95='283580A2-D400-4639-A8C8-23948E8D5C39',@p96='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p97='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p98='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p99='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p100='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p101='9595FAE6-5977-4633-9F10-B64D5A29067F',@p102='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p103='283580A2-D400-4639-A8C8-23948E8D5C39',@p104='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p105='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p106='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p107='283580A2-D400-4639-A8C8-23948E8D5C39',@p108='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p109='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p110='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p111='283580A2-D400-4639-A8C8-23948E8D5C39',@p112='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p113='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p114='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p115='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p116='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p117='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p118='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p119='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p120='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p121='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p122='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p123='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p124='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p125='9595FAE6-5977-4633-9F10-B64D5A29067F',@p126='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p127='283580A2-D400-4639-A8C8-23948E8D5C39',@p128='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p129='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p130='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p131='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p132='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p133='9595FAE6-5977-4633-9F10-B64D5A29067F',@p134='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p135='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p136='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p137='9B7AC2C8-2445-4598-A85A-ACDC081688C6',@p138='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p139='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p140='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p141='9595FAE6-5977-4633-9F10-B64D5A29067F',@p142='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p143='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p144='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p145='9595FAE6-5977-4633-9F10-B64D5A29067F',@p146='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p147='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p148='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p149='9595FAE6-5977-4633-9F10-B64D5A29067F',@p150='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p151='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p152='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p153='401E2788-7948-49A6-9691-29384EAAAB2F',@p154='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p155='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p156='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p157='401E2788-7948-49A6-9691-29384EAAAB2F',@p158='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p159='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p160='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p161='401E2788-7948-49A6-9691-29384EAAAB2F',@p162='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p163='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p164='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p165='401E2788-7948-49A6-9691-29384EAAAB2F',@p166='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p167='283580A2-D400-4639-A8C8-23948E8D5C39',@p168='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p169='9595FAE6-5977-4633-9F10-B64D5A29067F',@p170='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p171='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p172='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p173='401E2788-7948-49A6-9691-29384EAAAB2F',@p174='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p175='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p176='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p177='9595FAE6-5977-4633-9F10-B64D5A29067F',@p178='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p179='283580A2-D400-4639-A8C8-23948E8D5C39',@p180='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p181='401E2788-7948-49A6-9691-29384EAAAB2F',@p182='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p183='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p184='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p185='401E2788-7948-49A6-9691-29384EAAAB2F',@p186='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p187='283580A2-D400-4639-A8C8-23948E8D5C39',@p188='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p189='401E2788-7948-49A6-9691-29384EAAAB2F',@p190='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p191='283580A2-D400-4639-A8C8-23948E8D5C39',@p192='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p193='401E2788-7948-49A6-9691-29384EAAAB2F',@p194='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p195='283580A2-D400-4639-A8C8-23948E8D5C39',@p196='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p197='401E2788-7948-49A6-9691-29384EAAAB2F',@p198='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p199='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p200='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p201='9595FAE6-5977-4633-9F10-B64D5A29067F',@p202='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p203='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p204='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p205='401E2788-7948-49A6-9691-29384EAAAB2F',@p206='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p207='283580A2-D400-4639-A8C8-23948E8D5C39',@p208='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p209='401E2788-7948-49A6-9691-29384EAAAB2F',@p210='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p211='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p212='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p213='9595FAE6-5977-4633-9F10-B64D5A29067F',@p214='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p215='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p216='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p217='401E2788-7948-49A6-9691-29384EAAAB2F',@p218='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p219='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p220='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p221='9595FAE6-5977-4633-9F10-B64D5A29067F',@p222='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p223='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p224='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p225='401E2788-7948-49A6-9691-29384EAAAB2F',@p226='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p227='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p228='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p229='9595FAE6-5977-4633-9F10-B64D5A29067F',@p230='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p231='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p232='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p233='401E2788-7948-49A6-9691-29384EAAAB2F',@p234='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p235='283580A2-D400-4639-A8C8-23948E8D5C39',@p236='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p237='401E2788-7948-49A6-9691-29384EAAAB2F',@p238='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p239='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p240='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p241='401E2788-7948-49A6-9691-29384EAAAB2F',@p242='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p243='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p244='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p245='9595FAE6-5977-4633-9F10-B64D5A29067F',@p246='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p247='283580A2-D400-4639-A8C8-23948E8D5C39',@p248='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p249='401E2788-7948-49A6-9691-29384EAAAB2F',@p250='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p251='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p252='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p253='9595FAE6-5977-4633-9F10-B64D5A29067F',@p254='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p255='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p256='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p257='401E2788-7948-49A6-9691-29384EAAAB2F',@p258='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p259='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p260='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p261='9595FAE6-5977-4633-9F10-B64D5A29067F',@p262='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p263='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p264='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p265='401E2788-7948-49A6-9691-29384EAAAB2F',@p266='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p267='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p268='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p269='401E2788-7948-49A6-9691-29384EAAAB2F',@p270='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p271='283580A2-D400-4639-A8C8-23948E8D5C39',@p272='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p273='9595FAE6-5977-4633-9F10-B64D5A29067F',@p274='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p275='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p276='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p277='401E2788-7948-49A6-9691-29384EAAAB2F',@p278='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p279='283580A2-D400-4639-A8C8-23948E8D5C39',@p280='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p281='9595FAE6-5977-4633-9F10-B64D5A29067F',@p282='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p283='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p284='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p285='9595FAE6-5977-4633-9F10-B64D5A29067F',@p286='15CF050A-6F11-4BAD-A634-FF91072EE3FF',@p287='283580A2-D400-4639-A8C8-23948E8D5C39',@p288='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p289='9595FAE6-5977-4633-9F10-B64D5A29067F',@p290='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p291='283580A2-D400-4639-A8C8-23948E8D5C39',@p292='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p293='9595FAE6-5977-4633-9F10-B64D5A29067F',@p294='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p295='283580A2-D400-4639-A8C8-23948E8D5C39',@p296='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p297='401E2788-7948-49A6-9691-29384EAAAB2F',@p298='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p299='70249D8B-DB66-4380-A9AD-2A3C06D8B9F6',@p300='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p301='9595FAE6-5977-4633-9F10-B64D5A29067F',@p302='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p303='283580A2-D400-4639-A8C8-23948E8D5C39',@p304='3D4D5806-A62C-4590-9AC6-E590B0D894B5',@p305='401E2788-7948-49A6-9691-29384EAAAB2F',@p306='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p307='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p308='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p309='401E2788-7948-49A6-9691-29384EAAAB2F',@p310='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p311='4E35438D-D01A-4F85-860E-6C28086FE9D7',@p312='24B27091-57CB-4E63-8A76-2CDB6A9F4905',@p313='401E2788-7948-49A6-9691-29384EAAAB2F',@p314='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p315='283580A2-D400-4639-A8C8-23948E8D5C39',@p316='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p317='9595FAE6-5977-4633-9F10-B64D5A29067F',@p318='71B8FF61-07F9-4F27-95E4-3C7E38DE2A8B',@p319='283580A2-D400-4639-A8C8-23948E8D5C39',@p320='D2F50074-0B94-4EAD-825A-BC9A9E7A70B2',@p321='401E2788-7948-49A6-9691-29384EAAAB2F',@p322='27C47C22-8BBB-4AE3-9917-8862169BC0A9',@p323='4E35438D-D01A-4F85-860E-6C28086FE9D7'
Пример нового порождающегося sql:
exec sp_executesql N'select testperfor0_.id as id1_97_, testperfor0_.Version as version2_97_, testperfor0_.active as active3_97_, testperfor0_.createDate as createdate4_97_, testperfor0_.createdBy as createdby5_97_, testperfor0_.modifiedBy as modifiedby6_97_, testperfor0_.modifyDate as modifydate7_97_, testperfor0_.name as name8_97_, testperfor0_.businessUnitId as businessunitid9_97_, testperfor0_.employeeId as employeeid10_97_, testperfor0_.locationId as locationid11_97_, testperfor0_.managementUnitId as managementunitid12_97_ from app.TestPerformanceObject testperfor0_ where exists (select permission1_.id from auth.Permission
permission1_ inner join auth.Principal principal2_ on permission1_.principalId=principal2_.id left outer join auth.BusinessRole businessro3_ on permission1_.roleId=businessro3_.id where @p0=principal2_.name and permission1_.status=@p1 and permission1_.periodstartDate<=@p2 and (permission1_.periodendDate is null or
@p2<=permission1_.periodendDate) and (exists (select businessro4_.id from auth.BusinessRoleOperationLink businessro4_ where businessro3_.id=businessro4_.businessRoleId and businessro4_.operationId=@p4)) and (exists (select denormaliz5_.entityId from auth.DenormalizedPermissionItem denormaliz5_ where
permission1_.id=denormaliz5_.permissionId and denormaliz5_.entityTypeId=@p5 and denormaliz5_.entityId=@p6) or testperfor0_.locationId in (select locationan6_.childId from app.LocationAncestorLink locationan6_ where locationan6_.ancestorId in (select denormaliz7_.entityId from auth.DenormalizedPermissionItem denormaliz7_
where permission1_.id=denormaliz7_.permissionId and denormaliz7_.entityTypeId=@p5))) and (exists (select denormaliz8_.entityId from auth.DenormalizedPermissionItem denormaliz8_ where permission1_.id=denormaliz8_.permissionId and denormaliz8_.entityTypeId=@p8 and denormaliz8_.entityId=@p9) or testperfor0_.employeeId in
(select denormaliz9_.entityId from auth.DenormalizedPermissionItem denormaliz9_ where permission1_.id=denormaliz9_.permissionId and denormaliz9_.entityTypeId=@p8)) and (exists (select denormaliz10_.entityId from auth.DenormalizedPermissionItem denormaliz10_ where permission1_.id=denormaliz10_.permissionId and denormaliz10_.entityTypeId=@p11 and denormaliz10_.entityId=@p12) or testperfor0_.businessUnitId in (select businessun11_.childId from app.BusinessUnitAncestorLink businessun11_ where businessun11_.ancestorId in (select denormaliz12_.entityId from auth.DenormalizedPermissionItem denormaliz12_ where permission1_.id=denormaliz12_.permissionId and denormaliz12_.entityTypeId=@p11))) and (exists (select denormaliz13_.entityId from auth.DenormalizedPermissionItem denormaliz13_ where permission1_.id=denormaliz13_.permissionId and denormaliz13_.entityTypeId=@p14 and denormaliz13_.entityId=@p15) or testperfor0_.managementUnitId in (select management14_.childId from app.ManagementUnitAncestorLink management14_ where management14_.ancestorId in (select denormaliz15_.entityId from auth.DenormalizedPermissionItem denormaliz15_ where permission1_.id=denormaliz15_.permissionId and denormaliz15_.entityTypeId=@p14))))',N'@p0 nvarchar(4000),@p1 int,@p2 datetime2(7),@p4 uniqueidentifier,@p5 uniqueidentifier,@p6 uniqueidentifier,@p8 uniqueidentifier,@p9 uniqueidentifier,@p11 uniqueidentifier,@p12 uniqueidentifier,@p14 uniqueidentifier,@p15 uniqueidentifier',@p0=N'TestUser',@p1=2,@p2='2022-05-31 00:00:00',@p4='C73DD1F6-74D5-4445-A265-2E96832A7F89',@p5='4641395B-9079-448E-9CB8-A083015235A3',@p6='77777777-7777-7777-7777-777777777777',@p8='B3F2536E-27C4-4B91-AE0B-0EE2FFD4465F',@p9='77777777-7777-7777-7777-777777777777',@p11='263D2C60-7BCE-45D6-A0AF-A0830152353E',@p12='77777777-7777-7777-7777-777777777777',@p14='77E78AEF-9512-46E0-A33D-AAE58DC7E18C',@p15='77777777-7777-7777-7777-777777777777'
Проблема с ограничением в 2100 параметров должна исчезнуть.
Добавлен новый вариант работы с построением авторизационного Security-фильтра работающего целиком на SQL, без выгрузки Permission-ов и Guid-ов контекстных объектов из него.
По умолчанию включён в SampleSystem, для его работы требуется, чтобы все иерархические контекстные сущности (FBU, MBU, Location) были денормализованны в бд.
Включается перегрузкой метода в SampleSystemBllContextContainer :
Скрипт денормализации текущих permission: src.other\AuthScripts\denormalize-auth.sql
Пример работы с принципалом, у которого 81 пермиссия, по 4 контекста: тест CreateObjectsWithPermissions_HasAccessToAllObjects
Старый sql c инъекцией гуидов:
Пример нового порождающегося sql:
Проблема с ограничением в 2100 параметров должна исчезнуть.