package Ġtasks Ċ Ċ import Ġcontributors .* Ċ import Ġkotlinx . coroutines . channels . Channel Ċ import Ġkotlinx . coroutines . channels . produce Ċ import Ġkotlinx . coroutines . coroutine Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . yield Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ Ċ suspend Ġfun Ġload Contribut ors Channels ( ĊĠĠĠ Ġservice : ĠGitHub Service , ĊĠĠĠ Ġreq : ĠRequest Data , ĊĠĠĠ Ġupdate Results : Ġsuspend Ġ( List < User >, Ġcompleted : ĠBoolean ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĊĠĠĠ Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrepos Ġ= Ġservice . get Org Repos ( req . org ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġproduce Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( repo Ġin Ġrepos ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusers Ġ= Ġservice . get Repo Contribut ors ( req . org , Ġrepo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend ( users ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġall Users Ġ= Ġempty List < User >() ĊĠĠĠĠĠĠĠ Ġrepeat ( repos . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusers Ġ= Ġchannel . receive () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Users Ġ= Ġ( all Users Ġ+ Ġusers ). aggregate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Results ( all Users , Ġit Ġ== Ġrepos . last Index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ